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.6.50.20130731 (pre-7.6 snapshot). Date: Thu, 23 Jul 2026 18:31:03 GMT Message-ID: <178483146341.1.3827834076760452052.rpms-gdb-872aab074e11@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: 872aab074e11aed36687613518976ae0d243f832 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGZpeC1kdXAtcGF0Y2gKQ29tbWl0IDogODcyYWFiMDc0ZTExYWVkMzY2ODc2MTM1MTg5NzZhZTBk MjQzZjgzMgpBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4KRGF0ZSAgIDogMjAxMy0wOC0wMlQyMjoyNjowMyswMjowMApTdGF0cyAgOiArMTU1Mi8tMTM1 NDYgaW4gNDYgZmlsZShzKQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9y cG1zL2dkYi9jLzg3MmFhYjA3NGUxMWFlZDM2Njg3NjEzNTE4OTc2YWUwZDI0M2Y4MzI/YnJhbmNo PWZpeC1kdXAtcGF0Y2gKCkxvZzoKUmViYXNlIHRvIEZTRiBHREIgNy42LjUwLjIwMTMwNzMxIChw cmUtNy42IHNuYXBzaG90KS4KCi0tLQpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25v cmUKaW5kZXggNzU2NDk2NS4uNTJiMDQyYiAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysgYi8u Z2l0aWdub3JlCkBAIC0xLDIgKzEsMyBAQAogL2dkYi1saWJzdGRjKystdjMtcHl0aG9uLXIxNTU5 NzgudGFyLmJ6MgotL2dkYi03LjYudGFyLmJ6MgorL2dkYi03LjYuNTAuMjAxMzA2MjQudGFyLmJ6 MgorL2dkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLnRhci5iejIKCmRpZmYgLS1naXQgYS9nZGItNi4z LW1hcHBpbmctemVyby1pbm9kZS10ZXN0LnBhdGNoIGIvZ2RiLTYuMy1tYXBwaW5nLXplcm8taW5v ZGUtdGVzdC5wYXRjaAppbmRleCA3M2QyNDQ2Li4yYzNmMDVhIDEwMDY0NAotLS0gYS9nZGItNi4z LW1hcHBpbmctemVyby1pbm9kZS10ZXN0LnBhdGNoCisrKyBiL2dkYi02LjMtbWFwcGluZy16ZXJv LWlub2RlLXRlc3QucGF0Y2gKQEAgLTEsOCArMSw4IEBACi1JbmRleDogZ2RiLTYuOC41MC4yMDA5 MDMwMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2djb3JlLXNobWlkMC5leHAKK0luZGV4OiBnZGIt Ny42LjUwLjIwMTMwNzMxLWN2cy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2djb3JlLXNobWlkMC5l eHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAw MDAgKzAwMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwMzAyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv Z2NvcmUtc2htaWQwLmV4cAkyMDA5LTA2LTI5IDE2OjI0OjM2LjAwMDAwMDAwMCArMDIwMAotQEAg LTAsMCArMSw5NiBAQAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvZ2NvcmUtc2htaWQwLmV4cAkyMDEzLTA4LTAyIDIyOjI0OjA0Ljc0Nzc0NTEzMyAr MDIwMAorQEAgLTAsMCArMSwxMDEgQEAKICsjIENvcHlyaWdodCAyMDA3LCAyMDA5IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwogKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKQEAgLTQ2LDE2ICs0Niwy MSBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDMwMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dj b3JlLXNobWlkMC5leHAKICtnZGJfYnJlYWtwb2ludCAiaW5pdGlhbGl6ZWQiCiArZ2RiX2JyZWFr cG9pbnQgInVucmVzb2x2ZWQiCiArCisrc2V0IG9sZHRpbWVvdXQgJHRpbWVvdXQKKytzZXQgdGlt ZW91dCBbZXhwciAkb2xkdGltZW91dCArIDEyMF0KKysKICtzZXQgdGVzdCAiQ29udGludWUgdG8g aW5pdGlhbGl6ZWQuIgogK2dkYl90ZXN0X211bHRpcGxlICJjb250aW51ZSIgJHRlc3QgewogKyAg ICAtcmUgIkJyZWFrcG9pbnQgLiosIGluaXRpYWxpemVkIC4qIGF0IC4qXHJcbiRnZGJfcHJvbXB0 ICQiIHsKICsJcGFzcyAkdGVzdAogKyAgICB9CiArICAgIC1yZSAiQnJlYWtwb2ludCAuKiwgdW5y ZXNvbHZlZCAuKiBhdCAuKlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCXNldCB0aW1lb3V0ICRvbGR0 aW1lb3V0CiArCXVuc3VwcG9ydGVkICR0ZXN0CiArCXJldHVybiAtMQogKyAgICB9CiArfQorK3Nl dCB0aW1lb3V0ICRvbGR0aW1lb3V0CiArCiArc2V0IGVzY2FwZWRmaWxlbmFtZSBbc3RyaW5nX3Rv X3JlZ2V4cCAke29iamRpcn0vJHtzdWJkaXJ9L2djb3JlLXNobWlkMC50ZXN0XQogKwpAQCAtOTks MTEgKzEwNCwxMSBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDMwMi9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2djb3JlLXNobWlkMC5leHAKICsJZmFpbCAkdGVzdAogKyAgICB9CiArfQotSW5kZXg6 IGdkYi02LjguNTAuMjAwOTAzMDIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nY29yZS1zaG1pZDAu YworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv Z2NvcmUtc2htaWQwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDow MDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwMzAyL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvZ2NvcmUtc2htaWQwLmMJMjAwOS0wNi0yOSAxNjoyMjo0OS4wMDAwMDAwMDAg KzAyMDAKLUBAIC0wLDAgKzEsMTIzIEBACisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9nY29yZS1zaG1pZDAuYwkyMDEzLTA4LTAyIDIyOjIyOjE3LjU3 MzU5OTQ5NiArMDIwMAorQEAgLTAsMCArMSwxMjcgQEAKICsvKiBDb3B5cmlnaHQgMjAwNywgMjAw OSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsgICBUaGlzIGZpbGUgaXMgcGFy dCBvZiBHREIuCkBAIC0xNDAsMTQgKzE0NSwxOCBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDMw Mi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2djb3JlLXNobWlkMC5jCiArCiArI2RlZmluZSBUSU1F T1VUX1NFQyAxMAogKworK3N0YXRpYyB2b2xhdGlsZSBpbnQgdjsKKysKICtzdGF0aWMgdm9pZAog K2luaXRpYWxpemVkICh2b2lkKQogK3sKKysgIHYrKzsKICt9CiArCiArc3RhdGljIHZvaWQKICt1 bnJlc29sdmVkICh2b2lkKQogK3sKKysgIHYrKzsKICt9CiArCiAraW50CkBAIC0xODksNyArMTk4 LDcgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTAzMDIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9n Y29yZS1zaG1pZDAuYwogKwkgICAgfQogKwogKwkgIHByaW50ZiAoIlByb2JsZW0gaXMgbm90IHJl cHJvZHVjaWJsZSBvbiB0aGlzIGtlcm5lbCAoYXR0ZW1wdCAlZCwgIgotKwkJICAicm91bmQgJWQp KVxuIiwgYXR0ZW1wdCwgcm91bmQpOworKwkJICAicm91bmQgJWQpXG4iLCBhdHRlbXB0LCByb3Vu ZCk7CiArCSAgdW5yZXNvbHZlZCAoKTsKICsJICBleGl0ICgxKTsKICsJfQoKZGlmZiAtLWdpdCBh L2dkYi02LjMtcmVhZG5ldmVyLTIwMDUwOTA3LnBhdGNoIGIvZ2RiLTYuMy1yZWFkbmV2ZXItMjAw NTA5MDcucGF0Y2gKaW5kZXggNWZiNTFiMi4uOTQ0ZTEwNCAxMDA2NDQKLS0tIGEvZ2RiLTYuMy1y ZWFkbmV2ZXItMjAwNTA5MDcucGF0Y2gKKysrIGIvZ2RiLTYuMy1yZWFkbmV2ZXItMjAwNTA5MDcu cGF0Y2gKQEAgLTExLDExICsxMSwxMSBAQAogCiAgICAgICAgICogZ2RiLnRleGluZm8gKEZpbGUg T3B0aW9ucyk6IERvY3VtZW50IC0tcmVhZG5ldmVyLgogCi1JbmRleDogZ2RiLTcuNS41MC4yMDEz MDIxNS9nZGIvZG9jL2dkYi50ZXhpbmZvCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMv Z2RiL2RvYy9nZGIudGV4aW5mbwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUu b3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTMtMDItMTUgMjI6MzE6MzcuMDAwMDAwMDAwICsw MTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTMtMDIt MTUgMjI6MzQ6MjIuMzgxMTY1NDQzICswMTAwCi1AQCAtMTAyNiw2ICsxMDI2LDEyIEBAIFJlYWQg ZWFjaCBzeW1ib2wgZmlsZSdzIGVudGlyZSBzeW1ib2wgdGEKKy0tLSBnZGItNy42LjUwLjIwMTMw NzMxLWN2cy5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMy0wOC0wMiAxNjoxMjo1NC45NzAw ODU5NDIgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvZG9jL2dkYi50ZXhp bmZvCTIwMTMtMDgtMDIgMTY6MjA6MjEuMTY0Njg3ODg2ICswMjAwCitAQCAtMTAzMCw2ICsxMDMw LDEyIEBAIFJlYWQgZWFjaCBzeW1ib2wgZmlsZSdzIGVudGlyZSBzeW1ib2wgdGEKICB0aGUgZGVm YXVsdCwgd2hpY2ggaXMgdG8gcmVhZCBpdCBpbmNyZW1lbnRhbGx5IGFzIGl0IGlzIG5lZWRlZC4K ICBUaGlzIG1ha2VzIHN0YXJ0dXAgc2xvd2VyLCBidXQgbWFrZXMgZnV0dXJlIG9wZXJhdGlvbnMg ZmFzdGVyLgogIApAQCAtMjgsMTEgKzI4LDExIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1 L2dkYi9kb2MvZ2RiLnRleGluZm8KICBAZW5kIHRhYmxlCiAgCiAgQG5vZGUgTW9kZSBPcHRpb25z Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvbWFpbi5jCitJbmRleDogZ2RiLTcuNi41 MC4yMDEzMDczMS1jdnMvZ2RiL21haW4uYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAx MzAyMTUub3JpZy9nZGIvbWFpbi5jCTIwMTMtMDItMTUgMjI6MzE6MzcuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvbWFpbi5jCTIwMTMtMDItMTUgMjI6MzQ6MjIu MzgyMTY1NDQ1ICswMTAwCi1AQCAtNDQ3LDYgKzQ0Nyw3IEBAIGNhcHR1cmVkX21haW4gKHZvaWQg KmRhdGEpCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvbWFpbi5jCTIwMTMt MDgtMDIgMTY6MTI6NTQuOTc0MDg1OTQ4ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1j dnMvZ2RiL21haW4uYwkyMDEzLTA4LTAyIDE2OjIwOjUzLjcwNDczMTQ0OSArMDIwMAorQEAgLTQ1 OSw2ICs0NTksNyBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQogICAgICAgIHsieGRiIiwg bm9fYXJndW1lbnQsICZ4ZGJfY29tbWFuZHMsIDF9LAogICAgICAgIHsiZGJ4Iiwgbm9fYXJndW1l bnQsICZkYnhfY29tbWFuZHMsIDF9LAogICAgICAgIHsicmVhZG5vdyIsIG5vX2FyZ3VtZW50LCAm cmVhZG5vd19zeW1ib2xfZmlsZXMsIDF9LApAQCAtNDAsMTkgKzQwLDE5IEBAIEluZGV4OiBnZGIt Ny41LjUwLjIwMTMwMjE1L2dkYi9tYWluLmMKICAgICAgICB7InIiLCBub19hcmd1bWVudCwgJnJl YWRub3dfc3ltYm9sX2ZpbGVzLCAxfSwKICAgICAgICB7InF1aWV0Iiwgbm9fYXJndW1lbnQsICZx dWlldCwgMX0sCiAgICAgICAgeyJxIiwgbm9fYXJndW1lbnQsICZxdWlldCwgMX0sCi1AQCAtMTE2 NSw2ICsxMTY2LDcgQEAgT3B0aW9uczpcblxuXAotICAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXAot ICAgLS1xdWlldCAgICAgICAgICAgIERvIG5vdCBwcmludCB2ZXJzaW9uIG51bWJlciBvbiBzdGFy dHVwLlxuXAorQEAgLTExNTQsNiArMTE1NSw3IEBAIFNlbGVjdGlvbiBvZiBkZWJ1Z2dlZSBhbmQg aXRzIGZpbGVzOlxuXG4KKyAgIC0tc2U9RklMRSAgICAgICAgICBVc2UgRklMRSBhcyBzeW1ib2wg ZmlsZSBhbmQgZXhlY3V0YWJsZSBmaWxlLlxuXAorICAgLS1zeW1ib2xzPVNZTUZJTEUgIFJlYWQg c3ltYm9scyBmcm9tIFNZTUZJTEUuXG5cCiAgICAtLXJlYWRub3cgICAgICAgICAgRnVsbHkgcmVh ZCBzeW1ib2wgZmlsZXMgb24gZmlyc3QgYWNjZXNzLlxuXAogKyAgLS1yZWFkbmV2ZXIgICAgICAg IERvIG5vdCByZWFkIHN5bWJvbCBmaWxlcy5cblwKKyAgIC0td3JpdGUgICAgICAgICAgICBTZXQg d3JpdGluZyBpbnRvIGV4ZWN1dGFibGUgYW5kIGNvcmUgZmlsZXMuXG5cblwKICAiKSwgc3RyZWFt KTsKICAgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwKLSAgIC0tc2U9RklMRSAgICAgICAgICBVc2Ug RklMRSBhcyBzeW1ib2wgZmlsZSBhbmQgZXhlY3V0YWJsZSBmaWxlLlxuXAotSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAyMTUvZ2RiL3N5bWZpbGUuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEt Y3ZzL2dkYi9zeW1maWxlLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMjE1Lm9y aWcvZ2RiL3N5bWZpbGUuYwkyMDEzLTAyLTAxIDIwOjM5OjAzLjAwMDAwMDAwMCArMDEwMAotKysr IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3N5bWZpbGUuYwkyMDEzLTAyLTE1IDIyOjM0OjIyLjM4 MzE2NTQ0NyArMDEwMAotQEAgLTgxLDYgKzgxLDcgQEAgc3RhdGljIHZvaWQgY2xlYXJfc3ltdGFi X3VzZXJzX2NsZWFudXAgKAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL3N5 bWZpbGUuYwkyMDEzLTA4LTAyIDE2OjEyOjU0Ljk3NTA4NTk0OSArMDIwMAorKysrIGdkYi03LjYu NTAuMjAxMzA3MzEtY3ZzL2dkYi9zeW1maWxlLmMJMjAxMy0wOC0wMiAxNjoyMDoyMS4xNjU2ODc4 ODggKzAyMDAKK0BAIC04Miw2ICs4Miw3IEBAIHN0YXRpYyB2b2lkIGNsZWFyX3N5bXRhYl91c2Vy c19jbGVhbnVwICgKICAKICAvKiBHbG9iYWwgdmFyaWFibGVzIG93bmVkIGJ5IHRoaXMgZmlsZS4g ICovCiAgaW50IHJlYWRub3dfc3ltYm9sX2ZpbGVzOwkvKiBSZWFkIGZ1bGwgc3ltYm9scyBpbW1l ZGlhdGVseS4gICovCkBAIC02MCwxOSArNjAsMTkgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAy MTUvZ2RiL3N5bWZpbGUuYwogIAogIC8qIEZ1bmN0aW9ucyB0aGlzIGZpbGUgZGVmaW5lcy4gICov CiAgCi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvZHdhcmYycmVhZC5jCitJbmRleDog Z2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2R3YXJmMnJlYWQuYwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTMtMDItMTUgMjI6 MzE6MzcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvZHdhcmYy cmVhZC5jCTIwMTMtMDItMTUgMjI6MzQ6MzQuNDc5MTgxNTg0ICswMTAwCi1AQCAtNjgsNiArNjgs NyBAQAotICNpbmNsdWRlICJnZGJfYmZkLmgiCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMu b3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTMtMDgtMDIgMTY6MTI6NTQuOTc5MDg1OTU0ICswMjAw CisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2R3YXJmMnJlYWQuYwkyMDEzLTA4LTAy IDE2OjIwOjM3LjE5MDcwOTY4OSArMDIwMAorQEAgLTY5LDYgKzY5LDcgQEAKICAjaW5jbHVkZSAi Zi1sYW5nLmgiCiAgI2luY2x1ZGUgInNvdXJjZS5oIgorICNpbmNsdWRlICJmaWxlc3R1ZmYuaCIK ICsjaW5jbHVkZSAidG9wLmgiCiAgCiAgI2luY2x1ZGUgPGZjbnRsLmg+CiAgI2luY2x1ZGUgImdk Yl9zdHJpbmcuaCIKLUBAIC0xNzkzLDggKzE3OTQsOSBAQCBkd2FyZjJfaGFzX2luZm8gKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlCitAQCAtMTgzNCw4ICsxODM1LDkgQEAgZHdhcmYyX2hhc19pbmZv IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHZvaWQgKikgbmFtZXMpOwogICAgICAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmlsZSA9IG9i amZpbGU7CiAgICAgIH0KQEAgLTg0LDExICs4NCwxMSBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEz MDIxNS9nZGIvZHdhcmYycmVhZC5jCiAgfQogIAogIC8qIFdoZW4gbG9hZGluZyBzZWN0aW9ucywg d2UgbG9vayBlaXRoZXIgZm9yIHVuY29tcHJlc3NlZCBzZWN0aW9uIG9yIGZvcgotSW5kZXg6IGdk Yi03LjUuNTAuMjAxMzAyMTUvZ2RiL3RvcC5oCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1j dnMvZ2RiL3RvcC5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dk Yi90b3AuaAkyMDEzLTAxLTA3IDE3OjQwOjM2LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUu NTAuMjAxMzAyMTUvZ2RiL3RvcC5oCTIwMTMtMDItMTUgMjI6MzQ6MjIuMzg5MTY1NDU5ICswMTAw Ci1AQCAtNTgsNiArNTgsNyBAQCBleHRlcm4gdm9pZCBzZXRfcHJvbXB0IChjb25zdCBjaGFyICpz KTsKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi90b3AuaAkyMDEzLTA4LTAy IDE2OjEyOjU0Ljk4MDA4NTk1NiArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dk Yi90b3AuaAkyMDEzLTA4LTAyIDE2OjIwOjIxLjE2OTY4Nzg5MyArMDIwMAorQEAgLTU5LDYgKzU5 LDcgQEAgZXh0ZXJuIHZvaWQgc2V0X3Byb21wdCAoY29uc3QgY2hhciAqcyk7CiAgCiAgLyogRnJv bSByYW5kb20gcGxhY2VzLiAgKi8KICBleHRlcm4gaW50IHJlYWRub3dfc3ltYm9sX2ZpbGVzOwoK ZGlmZiAtLWdpdCBhL2dkYi02LjMtdGVzdC1zZWxmLTIwMDUwMTEwLnBhdGNoIGIvZ2RiLTYuMy10 ZXN0LXNlbGYtMjAwNTAxMTAucGF0Y2gKaW5kZXggYTNhZGEwOC4uM2E1NzQ1YiAxMDA2NDQKLS0t IGEvZ2RiLTYuMy10ZXN0LXNlbGYtMjAwNTAxMTAucGF0Y2gKKysrIGIvZ2RiLTYuMy10ZXN0LXNl bGYtMjAwNTAxMTAucGF0Y2gKQEAgLTYsOTYgKzYsMzAgQEAKICAgICAgICAgKiBnZGIuZ2RiL3hm dWxscGF0aC5leHA6IERpdHRvLgogICAgICAgICAqIGdkYi5nZGIvb2JzZXJ2ZXIuZXhwOiBEaXR0 by4KIAotSW5kZXg6IGdkYi02LjguNTAuMjAwOTAyMjYvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL2Nv bXBsYWludHMuZXhwCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3Rlc3RzdWl0 ZS9saWIvc2VsZnRlc3Qtc3VwcG9ydC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjUwLjIw MDkwMjI2Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL2NvbXBsYWludHMuZXhwCTIwMDktMDEt MDMgMDY6NTg6MDQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDIyNi9nZGIv dGVzdHN1aXRlL2dkYi5nZGIvY29tcGxhaW50cy5leHAJMjAwOS0wMi0yNiAyMjoxMDo0OC4wMDAw MDAwMDAgKzAxMDAKLUBAIC0zMDIsMTMgKzMwMiwxMyBAQCBwcm9jIGZpbmRfZ2RiIHsgYXJnIH0g ewotIHNldCBHREJfRlVMTFBBVEggW2ZpbmRfZ2RiICRHREJdCi0gCi0gIyBSZW1vdmUgYW55IG9s ZCBjb3B5IGx5aW5nIGFyb3VuZC4KLS1yZW1vdGVfZmlsZSBob3N0IGRlbGV0ZSB4JHRvb2wKLSsj cmVtb3RlX2ZpbGUgaG9zdCBkZWxldGUgeCR0b29sCi0gCi0gZ2RiX3N0YXJ0Ci0gCi0tc2V0IGZp bGUgW3JlbW90ZV9kb3dubG9hZCBob3N0ICRHREJfRlVMTFBBVEggeCR0b29sXQotKyNzZXQgZmls ZSBbcmVtb3RlX2Rvd25sb2FkIGhvc3QgJEdEQl9GVUxMUEFUSCB4JHRvb2xdCi0gCi0tc2V0IHNl dHVwX3Jlc3VsdCBbc2V0dXBfdGVzdCAkZmlsZSBdCi0rc2V0IHNldHVwX3Jlc3VsdCBbc2V0dXBf dGVzdCAkR0RCX0ZVTExQQVRIIF0KLSBpZiB7JHNldHVwX3Jlc3VsdCA8MH0gdGhlbiB7Ci0gICAg IHJldHVybiAtMQotIH0KLUBAIC0zMTksNCArMzE5LDQgQEAgdGVzdF9zaG9ydF9jb21wbGFpbnRz Ci0gdGVzdF9lbXB0eV9jb21wbGFpbnRzCi0gCi0gZ2RiX2V4aXQ7Ci0tY2F0Y2ggInJlbW90ZV9m aWxlIGhvc3QgZGVsZXRlICRmaWxlIjsKLSsjY2F0Y2ggInJlbW90ZV9maWxlIGhvc3QgZGVsZXRl ICRmaWxlIjsKLUluZGV4OiBnZGItNi44LjUwLjIwMDkwMjI2L2dkYi90ZXN0c3VpdGUvZ2RiLmdk Yi9vYnNlcnZlci5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwMjI2Lm9yaWcv Z2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL29ic2VydmVyLmV4cAkyMDA5LTAyLTE3IDIwOjUyOjI3LjAw MDAwMDAwMCArMDEwMAotKysrIGdkYi02LjguNTAuMjAwOTAyMjYvZ2RiL3Rlc3RzdWl0ZS9nZGIu Z2RiL29ic2VydmVyLmV4cAkyMDA5LTAyLTI2IDIyOjExOjQwLjAwMDAwMDAwMCArMDEwMAotQEAg LTI1OCwxMyArMjU4LDEzIEBAIHByb2MgZmluZF9nZGIgeyBhcmcgfSB7Ci0gc2V0IEdEQl9GVUxM UEFUSCBbZmluZF9nZGIgJEdEQl0KLSAKLSAjIFJlbW92ZSBhbnkgb2xkIGNvcHkgbHlpbmcgYXJv dW5kLgotLXJlbW90ZV9maWxlIGhvc3QgZGVsZXRlIHgkdG9vbAotKyNyZW1vdGVfZmlsZSBob3N0 IGRlbGV0ZSB4JHRvb2wKLSAKLSBnZGJfc3RhcnQKLS1zZXQgZmlsZSBbcmVtb3RlX2Rvd25sb2Fk IGhvc3QgJEdEQl9GVUxMUEFUSCB4JHRvb2xdCi0tc2V0IHJlc3VsdCBbdGVzdF9vYnNlcnZlciAk ZmlsZV07Ci0rI3NldCBmaWxlIFtyZW1vdGVfZG93bmxvYWQgaG9zdCAkR0RCX0ZVTExQQVRIIHgk dG9vbF0KLStzZXQgcmVzdWx0IFt0ZXN0X29ic2VydmVyICRHREJfRlVMTFBBVEhdOwotIGdkYl9l eGl0OwotLWNhdGNoICJyZW1vdGVfZmlsZSBob3N0IGRlbGV0ZSAkZmlsZSI7Ci0rI2NhdGNoICJy ZW1vdGVfZmlsZSBob3N0IGRlbGV0ZSAkZmlsZSI7Ci0gCi0gaWYgeyRyZXN1bHQgPDB9IHRoZW4g ewotICAgICB3YXJuaW5nICJDb3VsZG4ndCB0ZXN0IHNlbGYiCi1JbmRleDogZ2RiLTYuOC41MC4y MDA5MDIyNi9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTYuOC41MC4yMDA5MDIyNi5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVz dC5leHAJMjAwOS0wMi0yNiAyMjowOTo1OS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNi44LjUw LjIwMDkwMjI2L2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAJMjAwOS0wMi0yNiAy MjoxMDo0OC4wMDAwMDAwMDAgKzAxMDAKLUBAIC01NTEsMTMgKzU1MSwxMyBAQCBwcm9jIGZpbmRf Z2RiIHsgYXJnIH0gewotIHNldCBHREJfRlVMTFBBVEggW2ZpbmRfZ2RiICRHREJdCi0gCi0gIyBS ZW1vdmUgYW55IG9sZCBjb3B5IGx5aW5nIGFyb3VuZC4KLS1yZW1vdGVfZmlsZSBob3N0IGRlbGV0 ZSB4JHRvb2wKLSsjcmVtb3RlX2ZpbGUgaG9zdCBkZWxldGUgeCR0b29sCi0gCi0gZ2RiX3N0YXJ0 Ci0tc2V0IGZpbGUgW3JlbW90ZV9kb3dubG9hZCBob3N0ICRHREJfRlVMTFBBVEggeCR0b29sXQot LXNldCByZXN1bHQgW3Rlc3Rfd2l0aF9zZWxmICRmaWxlXTsKLSsjc2V0IGZpbGUgW3JlbW90ZV9k b3dubG9hZCBob3N0ICRHREJfRlVMTFBBVEggeCR0b29sXQotK3NldCByZXN1bHQgW3Rlc3Rfd2l0 aF9zZWxmICRHREJfRlVMTFBBVEhdOwotIGdkYl9leGl0OwotLWNhdGNoICJyZW1vdGVfZmlsZSBo b3N0IGRlbGV0ZSAkZmlsZSI7Ci0rI2NhdGNoICJyZW1vdGVfZmlsZSBob3N0IGRlbGV0ZSAkZmls ZSI7Ci0gCi0gaWYgeyRyZXN1bHQgPDB9IHRoZW4gewotICAgICB3YXJuaW5nICJDb3VsZG4ndCB0 ZXN0IHNlbGYiCi1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDIyNi9nZGIvdGVzdHN1aXRlL2dkYi5n ZGIveGZ1bGxwYXRoLmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguNTAuMjAwOTAyMjYub3Jp Zy9nZGIvdGVzdHN1aXRlL2dkYi5nZGIveGZ1bGxwYXRoLmV4cAkyMDA5LTAxLTAzIDA2OjU4OjA0 LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi02LjguNTAuMjAwOTAyMjYvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZ2RiL3hmdWxscGF0aC5leHAJMjAwOS0wMi0yNiAyMjoxMDo0OC4wMDAwMDAwMDAgKzAxMDAK LUBAIC0xNzksMTMgKzE3OSwxMyBAQCBwcm9jIGZpbmRfZ2RiIHsgYXJnIH0gewotIHNldCBHREJf RlVMTFBBVEggW2ZpbmRfZ2RiICRHREJdCi0gCi0gIyBSZW1vdmUgYW55IG9sZCBjb3B5IGx5aW5n IGFyb3VuZC4KLS1yZW1vdGVfZmlsZSBob3N0IGRlbGV0ZSB4JHRvb2wKLSsjcmVtb3RlX2ZpbGUg aG9zdCBkZWxldGUgeCR0b29sCi0gCi0gZ2RiX3N0YXJ0Ci0tc2V0IGZpbGUgW3JlbW90ZV9kb3du bG9hZCBob3N0ICRHREJfRlVMTFBBVEggeCR0b29sXQotLXNldCByZXN1bHQgW3Rlc3Rfd2l0aF9z ZWxmICRmaWxlXTsKLSsjc2V0IGZpbGUgW3JlbW90ZV9kb3dubG9hZCBob3N0ICRHREJfRlVMTFBB VEggeCR0b29sXQotK3NldCByZXN1bHQgW3Rlc3Rfd2l0aF9zZWxmICRHREJfRlVMTFBBVEhdOwot IGdkYl9leGl0OwotLWNhdGNoICJyZW1vdGVfZmlsZSBob3N0IGRlbGV0ZSAkZmlsZSI7Ci0rI2Nh dGNoICJyZW1vdGVfZmlsZSBob3N0IGRlbGV0ZSAkZmlsZSI7Ci0gCi0gaWYgeyRyZXN1bHQgPDB9 IHRoZW4gewotICAgICB3YXJuaW5nICJDb3VsZG4ndCB0ZXN0IHNlbGYiCistLS0gZ2RiLTcuNi41 MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9zZWxmdGVzdC1zdXBwb3J0LmV4 cAkyMDEzLTA4LTAyIDE2OjExOjI5LjE5NTk3MTkyMiArMDIwMAorKysrIGdkYi03LjYuNTAuMjAx MzA3MzEtY3ZzL2dkYi90ZXN0c3VpdGUvbGliL3NlbGZ0ZXN0LXN1cHBvcnQuZXhwCTIwMTMtMDgt MDIgMTY6MTI6MjAuNDA0MDQwMzc4ICswMjAwCitAQCAtMTMwLDE4ICsxMzAsMTggQEAgcHJvYyBk b19zZWxmX3Rlc3RzIHtmdW5jdGlvbiBib2R5fSB7CisgICAgIHNldCBHREJfRlVMTFBBVEggW2Zp bmRfZ2RiICRHREJdCisgCisgICAgICMgUmVtb3ZlIGFueSBvbGQgY29weSBseWluZyBhcm91bmQu CistICAgIHJlbW90ZV9maWxlIGhvc3QgZGVsZXRlIHgkdG9vbAorKyAgICAjcmVtb3RlX2ZpbGUg aG9zdCBkZWxldGUgeCR0b29sCisgCisgICAgIGdkYl9zdGFydAorLSAgICBzZXQgZmlsZSBbcmVt b3RlX2Rvd25sb2FkIGhvc3QgJEdEQl9GVUxMUEFUSCB4JHRvb2xdCisrICAgICNzZXQgZmlsZSBb cmVtb3RlX2Rvd25sb2FkIGhvc3QgJEdEQl9GVUxMUEFUSCB4JHRvb2xdCisgCistICAgIHNldCBy ZXN1bHQgW3NlbGZ0ZXN0X3NldHVwICRmaWxlICRmdW5jdGlvbl0KKysgICAgc2V0IHJlc3VsdCBb c2VsZnRlc3Rfc2V0dXAgJEdEQl9GVUxMUEFUSCAkZnVuY3Rpb25dCisgICAgIGlmIHskcmVzdWx0 ID09IDB9IHRoZW4geworIAlzZXQgcmVzdWx0IFt1cGxldmVsICRib2R5XQorICAgICB9CisgCisg ICAgIGdkYl9leGl0CistICAgIGNhdGNoICJyZW1vdGVfZmlsZSBob3N0IGRlbGV0ZSAkZmlsZSIK KysgICAgI2NhdGNoICJyZW1vdGVfZmlsZSBob3N0IGRlbGV0ZSAkZmlsZSIKKyAKKyAgICAgaWYg eyRyZXN1bHQgPCAwfSB0aGVuIHsKKyAJd2FybmluZyAiQ291bGRuJ3QgdGVzdCBzZWxmIgoKZGlm ZiAtLWdpdCBhL2dkYi02LjUtYnoxODUzMzctcmVzb2x2ZS10bHMtd2l0aG91dC1kZWJ1Z2luZm8t djIucGF0Y2ggYi9nZGItNi41LWJ6MTg1MzM3LXJlc29sdmUtdGxzLXdpdGhvdXQtZGVidWdpbmZv LXYyLnBhdGNoCmluZGV4IGZhMmY0ZWQuLjFjOGY5OWIgMTAwNjQ0Ci0tLSBhL2dkYi02LjUtYnox ODUzMzctcmVzb2x2ZS10bHMtd2l0aG91dC1kZWJ1Z2luZm8tdjIucGF0Y2gKKysrIGIvZ2RiLTYu NS1iejE4NTMzNy1yZXNvbHZlLXRscy13aXRob3V0LWRlYnVnaW5mby12Mi5wYXRjaApAQCAtMzIs MjEgKzMyLDIzIEBAIGdsaWJjLWRlYnVnaW5mby0yLjctMi54ODZfNjQ6IC91c3IvbGliL2RlYnVn L2xpYjY0L2xpYmMuc28uNi5kZWJ1ZzoKICAgPDgxYTI+ICAgICBEV19BVF9uYW1lICAgICAgICA6 IChpbmRpcmVjdCBzdHJpbmcsIG9mZnNldDogMHgyODBlKTogX19lcnJub19sb2NhdGlvbgogICA8 ODFhOD4gICAgIERXX0FUX01JUFNfbGlua2FnZV9uYW1lOiAoaW5kaXJlY3Qgc3RyaW5nLCBvZmZz ZXQ6IDB4MjgwOCk6ICpfX0dJX19fZXJybm9fbG9jYXRpb24KIAotLS0tIGEvZ2RiL3ByaW50Y21k LmMKLSsrKyBiL2dkYi9wcmludGNtZC5jCi1AQCAtOTY3LDYgKzk2Nyw4IEBAIHByaW50X2NvbW1h bmRfMSAoY2hhciAqZXhwLCBpbnQgaW5zcGVjdCwgaW50IHZvaWRwcmludCkKK0luZGV4OiBnZGIt Ny42LjUwLjIwMTMwNzMxLWN2cy9nZGIvcHJpbnRjbWQuYworPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03 LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL3ByaW50Y21kLmMJMjAxMy0wOC0wMiAxNjoyMTox My42NjU3NTgzMjQgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvcHJpbnRj bWQuYwkyMDEzLTA4LTAyIDE2OjIyOjI0LjM2Nzg1MzMyMiArMDIwMAorQEAgLTk4Miw2ICs5ODIs OCBAQCBwcmludF9jb21tYW5kXzEgKGNvbnN0IGNoYXIgKmV4cCwgaW50IHZvCiAgCiAgICBpZiAo ZXhwICYmICpleHApCiAgICAgIHsKICsgICAgICBpZiAoc3RyY21wIChleHAsICJlcnJubyIpID09 IDApCiArCWV4cCA9ICIqKChpbnQgKigqKSAodm9pZCkpIF9fZXJybm9fbG9jYXRpb24pICgpIjsK ICAgICAgICBleHByID0gcGFyc2VfZXhwcmVzc2lvbiAoZXhwKTsKLSAgICAgICBvbGRfY2hhaW4g PSBtYWtlX2NsZWFudXAgKGZyZWVfY3VycmVudF9jb250ZW50cywgJmV4cHIpOwotICAgICAgIGNs ZWFudXAgPSAxOwotSW5kZXg6IGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1l cnJuby5jCisgICAgICAgbWFrZV9jbGVhbnVwIChmcmVlX2N1cnJlbnRfY29udGVudHMsICZleHBy KTsKKyAgICAgICB2YWwgPSBldmFsdWF0ZV9leHByZXNzaW9uIChleHByKTsKK0luZGV4OiBnZGIt Ny42LjUwLjIwMTMwNzMxLWN2cy9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWVycm5vLmMK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAg KzAwMDAKLSsrKyBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZXJybm8uYwky MDExLTAzLTI5IDEwOjU1OjM1LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3 MzEtY3ZzL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZXJybm8uYwkyMDEzLTA4LTAyIDE2 OjIxOjEzLjY2NTc1ODMyNCArMDIwMAogQEAgLTAsMCArMSwyOCBAQAogKy8qIFRoaXMgdGVzdGNh c2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCiArCkBAIC03NiwxMCArNzgsMTAg QEAgSW5kZXg6IGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1lcnJuby5jCiAr CiArICByZXR1cm4gMDsJLyogYnJlYWtwb2ludCAqLwogK30KLUluZGV4OiBnZGItNy4yL2dkYi90 ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZXJybm8uZXhwCitJbmRleDogZ2RiLTcuNi41MC4yMDEz MDczMS1jdnMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1lcnJuby5leHAKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsr KyBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZXJybm8uZXhwCTIwMTEtMDMt MjkgMTA6NTU6MzUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMv Z2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1lcnJuby5leHAJMjAxMy0wOC0wMiAxNjoyMTox My42NjU3NTgzMjQgKzAyMDAKIEBAIC0wLDAgKzEsNjAgQEAKICsjIENvcHlyaWdodCAyMDA3IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwoKZGlmZiAtLWdpdCBhL2dkYi02LjUtYnoy MTgzNzktc29saWItdHJhbXBvbGluZS1sb29rdXAtbG9jay1maXgucGF0Y2ggYi9nZGItNi41LWJ6 MjE4Mzc5LXNvbGliLXRyYW1wb2xpbmUtbG9va3VwLWxvY2stZml4LnBhdGNoCmluZGV4IDY4Mzk2 NzguLjBiMzkzMWYgMTAwNjQ0Ci0tLSBhL2dkYi02LjUtYnoyMTgzNzktc29saWItdHJhbXBvbGlu ZS1sb29rdXAtbG9jay1maXgucGF0Y2gKKysrIGIvZ2RiLTYuNS1iejIxODM3OS1zb2xpYi10cmFt cG9saW5lLWxvb2t1cC1sb2NrLWZpeC5wYXRjaApAQCAtMSwxMSArMSwxMSBAQAogaHR0cHM6Ly9i dWd6aWxsYS5yZWRoYXQuY29tL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yMTgzNzkKIAogCi1J bmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvc3ltdGFiLmMKK0luZGV4OiBnZGItNy42LjUw LjIwMTMwNzMxLWN2cy9nZGIvc3ltdGFiLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIw MTMwMTE4Lm9yaWcvZ2RiL3N5bXRhYi5jCTIwMTMtMDEtMTggMjM6NTM6MjIuMDA5Nzk3Nzg4ICsw MTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvc3ltdGFiLmMJMjAxMy0wMS0xOCAyMzo1 Mzo1MS4wNDQ4NDY3NzcgKzAxMDAKLUBAIC0yMzU2LDYgKzIzNTYsMTMgQEAgZmluZF9wY19zZWN0 X2xpbmUgKENPUkVfQUREUiBwYywgc3RydWN0CistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMu b3JpZy9nZGIvc3ltdGFiLmMJMjAxMy0wOC0wMiAxNzowNjoxOS44NTQ2NjM4MDEgKzAyMDAKKysr KyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvc3ltdGFiLmMJMjAxMy0wOC0wMiAxNzowNzow NC4zMTc3MjE0NzEgKzAyMDAKK0BAIC0yMzI3LDYgKzIzMjcsMTMgQEAgZmluZF9wY19zZWN0X2xp bmUgKENPUkVfQUREUiBwYywgc3RydWN0CiAgCSAgICAgU1lNQk9MX0xJTktBR0VfTkFNRSAobXN5 bWJvbCkpOyAqLwogIAkgIDsKICAJLyogZmFsbCB0aHJvdWdoICovCkBAIC0xNCw3ICsxNCw3IEBA IEluZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9zeW10YWIuYwogKwkgICBBdm9pZCBgZmlu ZF9wY19zZWN0X2xpbmUnPC0+YGZpbmRfcGNfbGluZScgaW5maW5pdGUgbG9vcC4KICsJICAgUmVk IEhhdCBCdWcgMjE4Mzc5LiAgKi8KICsJZWxzZSBpZiAoU1lNQk9MX1ZBTFVFIChtZnVuc3ltKSA9 PSBwYykKLSsJICB3YXJuaW5nICgiSW4gc3R1YiBmb3IgJXMgKDB4JXMpOyBpbnRlcmxvY2tlZCwg cGxlYXNlIHN1Ym1pdCB0aGUgYmluYXJ5IHRvIGh0dHA6Ly9idWd6aWxsYS5yZWRoYXQuY29tIiwg U1lNQk9MX0xJTktBR0VfTkFNRSAobXN5bWJvbCksIHBhZGRyZXNzICh0YXJnZXRfZ2RiYXJjaCAo KSwgcGMpKTsKKysJICB3YXJuaW5nICgiSW4gc3R1YiBmb3IgJXMgKDB4JXMpOyBpbnRlcmxvY2tl ZCwgcGxlYXNlIHN1Ym1pdCB0aGUgYmluYXJ5IHRvIGh0dHA6Ly9idWd6aWxsYS5yZWRoYXQuY29t IiwgU1lNQk9MX0xJTktBR0VfTkFNRSAobXN5bWJvbC5taW5zeW0pLCBwYWRkcmVzcyAodGFyZ2V0 X2dkYmFyY2ggKCksIHBjKSk7CiArCS8qIGZhbGwgdGhyb3VnaCAqLwogIAllbHNlCiAgCSAgcmV0 dXJuIGZpbmRfcGNfbGluZSAoU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1mdW5zeW0pLCAwKTsKCmRp ZmYgLS1naXQgYS9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLWNvcmUtYXMtYXJnLnBhdGNoIGIvZ2Ri LTYuNi1idWlsZGlkLWxvY2F0ZS1jb3JlLWFzLWFyZy5wYXRjaAppbmRleCBlZmFjYWI1Li5kZmQ1 YTFlIDEwMDY0NAotLS0gYS9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLWNvcmUtYXMtYXJnLnBhdGNo CisrKyBiL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtY29yZS1hcy1hcmcucGF0Y2gKQEAgLTU4LDEw ICs1OCwxMCBAQCBIdHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wMS9t c2cwMDUxNy5odG1sCiAJKiBleGVjLmMgKGV4ZWNfZmlsZV9hdHRhY2gpOiBQcmludCBhIG1vcmUg dXNlZnVsIGVycm9yIG1lc3NhZ2UgaWYgdGhlCiAJdXNlciBkaWQgImdkYiBjb3JlIi4KIAotSW5k ZXg6IGdkYi03LjUuOTEuMjAxMzAzMjMvZ2RiL2V4Y2VwdGlvbnMuaAorSW5kZXg6IGdkYi03LjYu NTAuMjAxMzA3MzEtY3ZzL2dkYi9leGNlcHRpb25zLmgKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41 LjkxLjIwMTMwMzIzLm9yaWcvZ2RiL2V4Y2VwdGlvbnMuaAkyMDEzLTAzLTIyIDIxOjQxOjQ1LjAw MDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuOTEuMjAxMzAzMjMvZ2RiL2V4Y2VwdGlvbnMuaAky MDEzLTAzLTIzIDE5OjQ5OjA1LjczODQ1OTE4NSArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3 MzEtY3ZzLm9yaWcvZ2RiL2V4Y2VwdGlvbnMuaAkyMDEzLTA4LTAyIDE2OjI5OjQ0Ljc3MDQ0MDI2 MiArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9leGNlcHRpb25zLmgJMjAx My0wOC0wMiAxNjozMDowNi4xOTc0Njg3MjcgKzAyMDAKIEBAIC05MCw2ICs5MCw5IEBAIGVudW0g ZXJyb3JzIHsKICAgICAgIGFib3J0ZWQgYXMgdGhlIGluZmVyaW9yIHN0YXRlIGlzIG5vIGxvbmdl ciB2YWxpZC4gICovCiAgICBUQVJHRVRfQ0xPU0VfRVJST1IsCkBAIC03MiwxMCArNzIsMTAgQEAg SW5kZXg6IGdkYi03LjUuOTEuMjAxMzAzMjMvZ2RiL2V4Y2VwdGlvbnMuaAogICAgLyogQWRkIG1v cmUgZXJyb3JzIGhlcmUuICAqLwogICAgTlJfRVJST1JTCiAgfTsKLUluZGV4OiBnZGItNy41Ljkx LjIwMTMwMzIzL2dkYi9leGVjLmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIv ZXhlYy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS45MS4yMDEzMDMyMy5vcmlnL2dkYi9leGVj LmMJMjAxMy0wMS0zMSAxOTozNzozNy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjkxLjIw MTMwMzIzL2dkYi9leGVjLmMJMjAxMy0wMy0yMyAxOTo0ODo1My4yODQ1NzU5MTIgKzAxMDAKKy0t LSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9leGVjLmMJMjAxMy0wOC0wMiAxNjoy OTo0NC43NzE0NDAyNjQgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvZXhl Yy5jCTIwMTMtMDgtMDIgMTY6MzE6MzAuMTAwNjE4NjU3ICswMjAwCiBAQCAtMzQsNiArMzQsNyBA QAogICNpbmNsdWRlICJnZGJ0aHJlYWQuaCIKICAjaW5jbHVkZSAicHJvZ3NwYWNlLmgiCkBAIC04 NCw3ICs4NCw3IEBAIEluZGV4OiBnZGItNy41LjkxLjIwMTMwMzIzL2dkYi9leGVjLmMKICAKICAj aW5jbHVkZSA8ZmNudGwuaD4KICAjaW5jbHVkZSAicmVhZGxpbmUvcmVhZGxpbmUuaCIKLUBAIC0y NDAsMTIgKzI0MSwyNyBAQCBleGVjX2ZpbGVfYXR0YWNoIChjaGFyICpmaWxlbmFtZSwgaW50IGZy CitAQCAtMjE3LDEyICsyMTgsMjcgQEAgZXhlY19maWxlX2F0dGFjaCAoY2hhciAqZmlsZW5hbWUs IGludCBmcgogIAogICAgICAgIGlmICghYmZkX2NoZWNrX2Zvcm1hdF9tYXRjaGVzIChleGVjX2Jm ZCwgYmZkX29iamVjdCwgJm1hdGNoaW5nKSkKICAJewpAQCAtMTE0LDEyICsxMTQsMTIgQEAgSW5k ZXg6IGdkYi03LjUuOTEuMjAxMzAzMjMvZ2RiL2V4ZWMuYwogKwkJICAgZ2RiX2JmZF9lcnJtc2cg KGJmZF9nZXRfZXJyb3IgKCksIG1hdGNoaW5nKSk7CiAgCX0KICAKLSAgICAgICAvKiBGSVhNRSAt IFRoaXMgc2hvdWxkIG9ubHkgYmUgcnVuIGZvciBSUzYwMDAsIGJ1dCB0aGUgaWZkZWYgaXMgYSBw b29yCi1JbmRleDogZ2RiLTcuNS45MS4yMDEzMDMyMy9nZGIvbWFpbi5jCisgICAgICAgaWYgKGJ1 aWxkX3NlY3Rpb25fdGFibGUgKGV4ZWNfYmZkLCAmc2VjdGlvbnMsICZzZWN0aW9uc19lbmQpKQor SW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9tYWluLmMKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy41LjkxLjIwMTMwMzIzLm9yaWcvZ2RiL21haW4uYwkyMDEzLTAzLTIzIDE5OjQ4OjE4 LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuOTEuMjAxMzAzMjMvZ2RiL21haW4uYwkyMDEz LTAzLTIzIDE5OjQ4OjUzLjI4NTU3NTkwMSArMDEwMAotQEAgLTI5Niw2ICsyOTYsMzYgQEAgdHlw ZWRlZiBzdHJ1Y3QgY21kYXJnIHsKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dk Yi9tYWluLmMJMjAxMy0wOC0wMiAxNjoyOTo0NC43NzI0NDAyNjUgKzAyMDAKKysrKyBnZGItNy42 LjUwLjIwMTMwNzMxLWN2cy9nZGIvbWFpbi5jCTIwMTMtMDgtMDIgMTY6MzA6MDYuMTk5NDY4NzMw ICswMjAwCitAQCAtMzAwLDYgKzMwMCwzNiBAQCB0eXBlZGVmIHN0cnVjdCBjbWRhcmcgewogIC8q IERlZmluZSB0eXBlIFZFQyAoY21kYXJnX3MpLiAgKi8KICBERUZfVkVDX08gKGNtZGFyZ19zKTsK ICAKQEAgLTE1Niw3ICsxNTYsNyBAQCBJbmRleDogZ2RiLTcuNS45MS4yMDEzMDMyMy9nZGIvbWFp bi5jCiAgc3RhdGljIGludAogIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCiAgewotQEAgLTc5 Niw2ICs4MjYsOCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQorQEAgLTgxMCw2ICs4NDAs OCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQogIAl7CiAgCSAgc3ltYXJnID0gYXJndltv cHRpbmRdOwogIAkgIGV4ZWNhcmcgPSBhcmd2W29wdGluZF07CkBAIC0xNjUsNyArMTY1LDcgQEAg SW5kZXg6IGdkYi03LjUuOTEuMjAxMzAzMjMvZ2RiL21haW4uYwogIAkgIG9wdGluZCsrOwogIAl9 CiAgCi1AQCAtOTUxLDExICs5ODMsMjUgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKK0BA IC05NzUsMTEgKzEwMDcsMjUgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKICAgICAgICAm JiBzeW1hcmcgIT0gTlVMTAogICAgICAgICYmIHN0cmNtcCAoZXhlY2FyZywgc3ltYXJnKSA9PSAw KQogICAgICB7CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0ucGF0Y2gg Yi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS5wYXRjaAppbmRleCA4Mjg5YmFlLi4wMWU1NjBk IDEwMDY0NAotLS0gYS9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS5wYXRjaAorKysgYi9nZGIt Ni42LWJ1aWxkaWQtbG9jYXRlLXJwbS5wYXRjaApAQCAtMSwxNiArMSwxNiBAQAotSW5kZXg6IGdk Yi03LjYvZ2RiL2V2ZW50LXRvcC5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2Ri L2V2ZW50LXRvcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dkYi9ldmVudC10b3Au YwkyMDEzLTAxLTMxIDE5OjM3OjM3LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjYvZ2RiL2V2 ZW50LXRvcC5jCTIwMTMtMDctMTcgMTk6NTE6MDIuNjc5MzU3NjU2ICswMjAwCi1AQCAtMzYsNiAr MzYsNyBAQAotICNpbmNsdWRlICJjb250aW51YXRpb25zLmgiCistLS0gZ2RiLTcuNi41MC4yMDEz MDczMS1jdnMub3JpZy9nZGIvZXZlbnQtdG9wLmMJMjAxMy0wOC0wMiAxNjoyNToyNC45NjgwOTQz OTggKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvZXZlbnQtdG9wLmMJMjAx My0wOC0wMiAxNjoyNTozOC42MzgxMTI4NzQgKzAyMDAKK0BAIC0zNyw2ICszNyw3IEBACiAgI2lu Y2x1ZGUgImdkYmNtZC5oIgkJLyogZm9yIGRvbnRfcmVwZWF0KCkgKi8KICAjaW5jbHVkZSAiYW5u b3RhdGUuaCIKKyAjaW5jbHVkZSAibWFpbnQuaCIKICsjaW5jbHVkZSAic3ltZmlsZS5oIgogIAog IC8qIHJlYWRsaW5lIGluY2x1ZGUgZmlsZXMuICAqLwogICNpbmNsdWRlICJyZWFkbGluZS9yZWFk bGluZS5oIgotQEAgLTE3MCw2ICsxNzEsOCBAQCBybF9jYWxsYmFja19yZWFkX2NoYXJfd3JhcHBl ciAoZ2RiX2NsaWVuCitAQCAtMTcxLDYgKzE3Miw4IEBAIHJsX2NhbGxiYWNrX3JlYWRfY2hhcl93 cmFwcGVyIChnZGJfY2xpZW4KICB2b2lkCiAgY2xpX2NvbW1hbmRfbG9vcCAodm9pZCkKICB7CkBA IC0xOSw3ICsxOSw3IEBAIEluZGV4OiBnZGItNy42L2dkYi9ldmVudC10b3AuYwogICAgZGlzcGxh eV9nZGJfcHJvbXB0ICgwKTsKICAKICAgIC8qIE5vdyBpdCdzIHRpbWUgdG8gc3RhcnQgdGhlIGV2 ZW50IGxvb3AuICAqLwotQEAgLTIzNyw2ICsyNDAsOCBAQCBkaXNwbGF5X2dkYl9wcm9tcHQgKGNo YXIgKm5ld19wcm9tcHQpCitAQCAtMjM4LDYgKzI0MSw4IEBAIGRpc3BsYXlfZ2RiX3Byb21wdCAo Y2hhciAqbmV3X3Byb21wdCkKICAgIC8qIFJlc2V0IHRoZSBuZXN0aW5nIGRlcHRoIHVzZWQgd2hl biB0cmFjZS1jb21tYW5kcyBpcyBzZXQuICAqLwogICAgcmVzZXRfY29tbWFuZF9uZXN0X2RlcHRo ICgpOwogIApAQCAtMjgsMTAgKzI4LDEwIEBAIEluZGV4OiBnZGItNy42L2dkYi9ldmVudC10b3Au YwogICAgLyogRWFjaCBpbnRlcnByZXRlciBoYXMgaXRzIG93biBydWxlcyBvbiBkaXNwbGF5aW5n IHRoZSBjb21tYW5kCiAgICAgICBwcm9tcHQuICAqLwogICAgaWYgKCFjdXJyZW50X2ludGVycF9k aXNwbGF5X3Byb21wdF9wICgpKQotSW5kZXg6IGdkYi03LjYvZ2RiL2VsZnJlYWQuYworSW5kZXg6 IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9lbGZyZWFkLmMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy42Lm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDEzLTA3LTE3IDE5OjUxOjAyLjYzOTM1NzYyOSAr MDIwMAotKysrIGdkYi03LjYvZ2RiL2VsZnJlYWQuYwkyMDEzLTA3LTE3IDE5OjUxOjUwLjczODM5 MDA2OCArMDIwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2VsZnJlYWQu YwkyMDEzLTA4LTAyIDE2OjI1OjI0Ljk3MDA5NDQwMSArMDIwMAorKysrIGdkYi03LjYuNTAuMjAx MzA3MzEtY3ZzL2dkYi9lbGZyZWFkLmMJMjAxMy0wOC0wMiAxNjoyNToyNy4zMzYwOTc1NTcgKzAy MDAKIEBAIC00OSw2ICs0OSw3IEBACiAgI2luY2x1ZGUgImdkYmNvcmUuaCIKICAjaW5jbHVkZSAi Z2RiY21kLmgiCkBAIC00MCw3ICs0MCw3IEBAIEluZGV4OiBnZGItNy42L2dkYi9lbGZyZWFkLmMK ICAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICAKICBleHRlcm4gdm9pZCBfaW5pdGlhbGl6ZV9lbGZy ZWFkICh2b2lkKTsKLUBAIC0xNjgyLDggKzE2ODMsMzYwIEBAIGJ1aWxkX2lkX3RvX2ZpbGVuYW1l IChjb25zdCBzdHJ1Y3QgZWxmX2IKK0BAIC0xNzAxLDggKzE3MDIsMzYwIEBAIGJ1aWxkX2lkX3Rv X2ZpbGVuYW1lIChjb25zdCBzdHJ1Y3QgZWxmX2IKICAgIHJldHVybiByZXR2YWw7CiAgfQogIApA QCAtNDAyLDcgKzQwMiw3IEBAIEluZGV4OiBnZGItNy42L2dkYi9lbGZyZWFkLmMKICAgICBhdm9p ZGFuY2UuICAqLwogIAogIHN0cnVjdCBtaXNzaW5nX2ZpbGVwYWlyCi1AQCAtMTczNywxMSArMjA5 MCwxNyBAQCBtaXNzaW5nX2ZpbGVwYWlyX2NoYW5nZSAodm9pZCkKK0BAIC0xNzU2LDExICsyMTA5 LDE3IEBAIG1pc3NpbmdfZmlsZXBhaXJfY2hhbmdlICh2b2lkKQogICAgICAgIC8qIEFsbCB0aGVp ciBtZW1vcnkgY2FtZSBqdXN0IGZyb20gbWlzc2luZ19maWxlcGFpcl9PQlNUQUNLLiAgKi8KICAg ICAgICBtaXNzaW5nX2ZpbGVwYWlyX2hhc2ggPSBOVUxMOwogICAgICB9CkBAIC00MjAsNyArNDIw LDcgQEAgSW5kZXg6IGdkYi03LjYvZ2RiL2VsZnJlYWQuYwogICAgbWlzc2luZ19maWxlcGFpcl9j aGFuZ2UgKCk7CiAgfQogIAotQEAgLTE4MDgsMTQgKzIxNjcsMzQgQEAgZGVidWdfcHJpbnRfbWlz c2luZyAoY29uc3QgY2hhciAqYmluYXJ5LAorQEAgLTE4MjcsMTQgKzIxODYsMzQgQEAgZGVidWdf cHJpbnRfbWlzc2luZyAoY29uc3QgY2hhciAqYmluYXJ5LAogIAogICAgKnNsb3QgPSBtaXNzaW5n X2ZpbGVwYWlyOwogIApAQCAtNDYyLDExICs0NjIsMTEgQEAgSW5kZXg6IGdkYi03LjYvZ2RiL2Vs ZnJlYWQuYwogIH0KICAKICBzdGF0aWMgY2hhciAqCi1JbmRleDogZ2RiLTcuNi9nZGIvc3ltZmls ZS5oCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3N5bWZpbGUuaAogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvc3ltZmlsZS5oCTIwMTMtMDctMTcgMTk6NTE6MDIu NjM5MzU3NjI5ICswMjAwCi0rKysgZ2RiLTcuNi9nZGIvc3ltZmlsZS5oCTIwMTMtMDctMTcgMTk6 NTE6MDIuNjg3MzU3NjYxICswMjAwCi1AQCAtNTk4LDYgKzU5OCw4IEBAIGV4dGVybiBzdHJ1Y3Qg ZWxmX2J1aWxkX2lkICpidWlsZF9pZF9hZGQKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5v cmlnL2dkYi9zeW1maWxlLmgJMjAxMy0wOC0wMiAxNjoyNToyNC45NzEwOTQ0MDIgKzAyMDAKKysr KyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvc3ltZmlsZS5oCTIwMTMtMDgtMDIgMTY6MjU6 MjcuMzM2MDk3NTU3ICswMjAwCitAQCAtNjAyLDYgKzYwMiw4IEBAIGV4dGVybiBzdHJ1Y3QgZWxm X2J1aWxkX2lkICpidWlsZF9pZF9hZGQKICBleHRlcm4gY2hhciAqYnVpbGRfaWRfdG9fZmlsZW5h bWUgKGNvbnN0IHN0cnVjdCBlbGZfYnVpbGRfaWQgKmJ1aWxkX2lkLAogIAkJCQkgICBjaGFyICoq bGlua19yZXR1cm4sIGludCBhZGRfZGVidWdfc3VmZml4KTsKICBleHRlcm4gdm9pZCBkZWJ1Z19w cmludF9taXNzaW5nIChjb25zdCBjaGFyICpiaW5hcnksIGNvbnN0IGNoYXIgKmRlYnVnKTsKQEAg LTQ3NSwxMCArNDc1LDEwIEBAIEluZGV4OiBnZGItNy42L2dkYi9zeW1maWxlLmgKICAKICAvKiBG cm9tIGR3YXJmMnJlYWQuYyAqLwogIAotSW5kZXg6IGdkYi03LjYvZ2RiL3Rlc3RzdWl0ZS9saWIv Z2RiLmV4cAorSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90ZXN0c3VpdGUvbGli L2dkYi5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIv Z2RiLmV4cAkyMDEzLTA3LTE3IDE5OjUxOjAyLjY0MDM1NzYyOSArMDIwMAotKysrIGdkYi03LjYv Z2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDEzLTA3LTE3IDE5OjUxOjAyLjY4ODM1NzY2MiAr MDIwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIv Z2RiLmV4cAkyMDEzLTA4LTAyIDE2OjI1OjI0Ljk3MjA5NDQwNCArMDIwMAorKysrIGdkYi03LjYu NTAuMjAxMzA3MzEtY3ZzL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAxMy0wOC0wMiAxNjoy NToyNy4zMzcwOTc1NTkgKzAyMDAKIEBAIC0xNDgyLDcgKzE0ODIsNyBAQCBwcm9jIGRlZmF1bHRf Z2RiX3N0YXJ0IHsgfSB7CiAgCSAgICB3YXJuaW5nICJDb3VsZG4ndCBzZXQgdGhlIHdpZHRoIHRv IDAuIgogIAl9CkBAIC00ODgsMTAgKzQ4OCwxMCBAQCBJbmRleDogZ2RiLTcuNi9nZGIvdGVzdHN1 aXRlL2xpYi9nZGIuZXhwCiAgICAgIHNlbmRfZ2RiICJzZXQgYnVpbGQtaWQtdmVyYm9zZSAwXG4i CiAgICAgIGdkYl9leHBlY3QgMTAgewogIAktcmUgIiRnZGJfcHJvbXB0ICQiIHsKLUluZGV4OiBn ZGItNy42L2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCitJbmRleDogZ2RiLTcuNi41 MC4yMDEzMDczMS1jdnMvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAx My0wNy0xNyAxOTo1MTowMi42NTYzNTc2NDAgKzAyMDAKLSsrKyBnZGItNy42L2dkYi90ZXN0c3Vp dGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTMtMDctMTcgMTk6NTE6MDIuNjg5MzU3NjYzICswMjAw CistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9taS1z dXBwb3J0LmV4cAkyMDEzLTA4LTAyIDE2OjI1OjI0Ljk3MzA5NDQwNSArMDIwMAorKysrIGdkYi03 LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTMt MDgtMDIgMTY6MjU6MjcuMzM4MDk3NTYwICswMjAwCiBAQCAtMjEyLDcgKzIxMiw3IEBAIHByb2Mg ZGVmYXVsdF9taV9nZGJfc3RhcnQgeyBhcmdzIH0gewogIAkgICAgd2FybmluZyAiQ291bGRuJ3Qg c2V0IHRoZSB3aWR0aCB0byAwLiIKICAJfQpAQCAtNTAxLDEwICs1MDEsMTAgQEAgSW5kZXg6IGdk Yi03LjYvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAKICAgICAgc2VuZF9nZGIgIjE5 MC1nZGItc2V0IGJ1aWxkLWlkLXZlcmJvc2UgMFxuIgogICAgICBnZGJfZXhwZWN0IDEwIHsKICAJ LXJlICIuKjE5MC1nZGItc2V0IGJ1aWxkLWlkLXZlcmJvc2UgMFxyXG4xOTBcXFxeZG9uZVxyXG4k bWlfZ2RiX3Byb21wdCQiIHsKLUluZGV4OiBnZGItNy42L2dkYi90dWkvdHVpLWludGVycC5jCitJ bmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3R1aS90dWktaW50ZXJwLmMKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL3R1aS90dWktaW50ZXJwLmMJMjAxMy0wMS0wMSAw Nzo0MTozMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy42L2dkYi90dWkvdHVpLWludGVycC5j CTIwMTMtMDctMTcgMTk6NTE6MDIuNjg5MzU3NjYzICswMjAwCistLS0gZ2RiLTcuNi41MC4yMDEz MDczMS1jdnMub3JpZy9nZGIvdHVpL3R1aS1pbnRlcnAuYwkyMDEzLTA4LTAyIDE2OjI1OjI0Ljk3 NDA5NDQwNiArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90dWkvdHVpLWlu dGVycC5jCTIwMTMtMDgtMDIgMTY6MjU6MjcuMzM4MDk3NTYwICswMjAwCiBAQCAtMzAsNiArMzAs NyBAQAogICNpbmNsdWRlICJ0dWkvdHVpLmgiCiAgI2luY2x1ZGUgInR1aS90dWktaW8uaCIKQEAg LTUxMywxMCArNTEzLDEwIEBAIEluZGV4OiBnZGItNy42L2dkYi90dWkvdHVpLWludGVycC5jCiAg CiAgLyogU2V0IHRvIDEgd2hlbiB0aGUgVFVJIG1vZGUgbXVzdCBiZSBhY3RpdmF0ZWQgd2hlbiB3 ZSBmaXJzdCBzdGFydAogICAgIGdkYi4gICovCi1JbmRleDogZ2RiLTcuNi9nZGIvYWNsb2NhbC5t NAorSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9hY2xvY2FsLm00CiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dkYi9hY2xvY2FsLm00CTIwMTMtMDEtMTcgMTI6MDY6MjYu MDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNi9nZGIvYWNsb2NhbC5tNAkyMDEzLTA3LTE3IDE5 OjUxOjAyLjY4OTM1NzY2MyArMDIwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcv Z2RiL2FjbG9jYWwubTQJMjAxMy0wOC0wMiAxNjoyNToyNC45NzQwOTQ0MDYgKzAyMDAKKysrKyBn ZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvYWNsb2NhbC5tNAkyMDEzLTA4LTAyIDE2OjI1OjI3 LjMzOTA5NzU2MSArMDIwMAogQEAgLTExLDYgKzExLDE2NCBAQAogICMgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQQogICMgUEFSVElD VUxBUiBQVVJQT1NFLgpAQCAtNjgyLDEwICs2ODIsMTAgQEAgSW5kZXg6IGdkYi03LjYvZ2RiL2Fj bG9jYWwubTQKICAjIEFNX0NPTkRJVElPTkFMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCiAgCiAgIyBDb3B5cmlnaHQgKEMpIDE5OTcs IDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgKLUluZGV4OiBnZGItNy42 L2dkYi9jb25maWcuaW4KK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvY29uZmln LmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dkYi9jb25maWcuaW4JMjAxMi0xMi0w OSAxOTozOTo1OC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy42L2dkYi9jb25maWcuaW4JMjAx My0wNy0xNyAxOTo1MTowMi42ODkzNTc2NjMgKzAyMDAKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMx LWN2cy5vcmlnL2dkYi9jb25maWcuaW4JMjAxMy0wOC0wMiAxNjoyNToyNC45NzUwOTQ0MDcgKzAy MDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvY29uZmlnLmluCTIwMTMtMDgtMDIg MTY6MjU6MjcuMzM5MDk3NTYxICswMjAwCiBAQCAtMzMsNiArMzMsOSBAQAogIC8qIERlZmluZSB0 byBCRkQncyBkZWZhdWx0IHRhcmdldCB2ZWN0b3IuICovCiAgI3VuZGVmIERFRkFVTFRfQkZEX1ZF QwpAQCAtNjk2LDcgKzY5Niw3IEBAIEluZGV4OiBnZGItNy42L2dkYi9jb25maWcuaW4KICAvKiBE ZWZpbmUgdG8gMSBpZiB0cmFuc2xhdGlvbiBvZiBwcm9ncmFtIG1lc3NhZ2VzIHRvIHRoZSB1c2Vy J3MgbmF0aXZlCiAgICAgbGFuZ3VhZ2UgaXMgcmVxdWVzdGVkLiAqLwogICN1bmRlZiBFTkFCTEVf TkxTCi1AQCAtMjEwLDYgKzIxMyw5IEBACitAQCAtMjE5LDYgKzIyMiw5IEBACiAgLyogRGVmaW5l IGlmIFB5dGhvbiAyLjcgaXMgYmVpbmcgdXNlZC4gKi8KICAjdW5kZWYgSEFWRV9MSUJQWVRIT04y XzcKICAKQEAgLTcwNiwxMSArNzA2LDExIEBAIEluZGV4OiBnZGItNy42L2dkYi9jb25maWcuaW4K ICAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGxpYnVud2luZC1pYTY0Lmg+IGhlYWRl ciBmaWxlLiAqLwogICN1bmRlZiBIQVZFX0xJQlVOV0lORF9JQTY0X0gKICAKLUluZGV4OiBnZGIt Ny42L2dkYi9jb25maWd1cmUKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvY29u ZmlndXJlCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dkYi9jb25maWd1cmUJMjAxMy0w Ny0xNyAxOTo1MTowMS42NjUzNTY5NjMgKzAyMDAKLSsrKyBnZGItNy42L2dkYi9jb25maWd1cmUJ MjAxMy0wNy0xNyAxOTo1MTowMi42OTEzNTc2NjQgKzAyMDAKLUBAIC02ODYsNiArNjg2LDExIEBA IFBLR1ZFUlNJT04KKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9jb25maWd1 cmUJMjAxMy0wOC0wMiAxNjoyNToyNC45ODEwOTQ0MTUgKzAyMDAKKysrKyBnZGItNy42LjUwLjIw MTMwNzMxLWN2cy9nZGIvY29uZmlndXJlCTIwMTMtMDgtMDIgMTY6MjU6MjcuMzQzMDk3NTY3ICsw MjAwCitAQCAtNjg5LDYgKzY4OSwxMSBAQCBQS0dWRVJTSU9OCiAgSEFWRV9OQVRJVkVfR0NPUkVf VEFSR0VUCiAgVEFSR0VUX09CUwogIHN1YmRpcnMKQEAgLTcyMiw3ICs3MjIsNyBAQCBJbmRleDog Z2RiLTcuNi9nZGIvY29uZmlndXJlCiAgR0RCX0RBVEFESVIKICBERUJVR0RJUgogIE1BS0VJTkZP X0VYVFJBX0ZMQUdTCi1AQCAtNzg2LDYgKzc5MSw3IEBAIHdpdGhfZ2RiX2RhdGFkaXIKK0BAIC03 ODksNiArNzk0LDcgQEAgd2l0aF9nZGJfZGF0YWRpcgogIHdpdGhfcmVsb2NhdGVkX3NvdXJjZXMK ICB3aXRoX2F1dG9fbG9hZF9kaXIKICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgKQEAgLTczMCw3 ICs3MzAsNyBAQCBJbmRleDogZ2RiLTcuNi9nZGIvY29uZmlndXJlCiAgZW5hYmxlX3RhcmdldHMK ICBlbmFibGVfNjRfYml0X2JmZAogIGVuYWJsZV9nZGJjbGkKLUBAIC04MzQsNiArODQwLDExIEBA IENQUEZMQUdTCitAQCAtODM5LDYgKzg0NSwxMSBAQCBDUFBGTEFHUwogIENQUAogIE1BS0VJTkZP CiAgTUFLRUlORk9GTEFHUwpAQCAtNzQyLDcgKzc0Miw3IEBAIEluZGV4OiBnZGItNy42L2dkYi9j b25maWd1cmUKICBZQUNDCiAgWUZMQUdTCiAgWE1LTUYnCi1AQCAtMTUwNCw2ICsxNTE1LDggQEAg T3B0aW9uYWwgUGFja2FnZXM6CitAQCAtMTUwOSw2ICsxNTIwLDggQEAgT3B0aW9uYWwgUGFja2Fn ZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbLS13aXRoLWF1dG8tbG9hZC1kaXJdCiAg ICAtLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgZG8gbm90IHJlc3RyaWN0IGF1dG8tbG9hZGVkIGZpbGVzIGxvY2F0aW9ucwpAQCAtNzUxLDcg Kzc1MSw3IEBAIEluZGV4OiBnZGItNy42L2dkYi9jb25maWd1cmUKICAgIC0td2l0aC1saWJ1bndp bmQtaWE2NCAgIHVzZSBsaWJ1bndpbmQgZnJhbWUgdW53aW5kaW5nIGZvciBpYTY0IHRhcmdldHMK ICAgIC0td2l0aC1jdXJzZXMgICAgICAgICAgIHVzZSB0aGUgY3Vyc2VzIGxpYnJhcnkgaW5zdGVh ZCBvZiB0aGUgdGVybWNhcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeQotQEAg LTE1NDgsNiArMTU2MSwxMyBAQCBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxl czoKK0BAIC0xNTU2LDYgKzE1NjksMTMgQEAgU29tZSBpbmZsdWVudGlhbCBlbnZpcm9ubWVudCB2 YXJpYWJsZXM6CiAgICBNQUtFSU5GTyAgICBQYXJlbnQgY29uZmlndXJlIGRldGVjdHMgaWYgaXQg aXMgb2Ygc3VmZmljaWVudCB2ZXJzaW9uLgogICAgTUFLRUlORk9GTEFHUwogICAgICAgICAgICAg ICAgUGFyYW1ldGVycyBmb3IgTUFLRUlORk8uCkBAIC03NjUsNyArNzY1LDcgQEAgSW5kZXg6IGdk Yi03LjYvZ2RiL2NvbmZpZ3VyZQogICAgWUFDQyAgICAgICAgVGhlIGBZZXQgQW5vdGhlciBDIENv bXBpbGVyJyBpbXBsZW1lbnRhdGlvbiB0byB1c2UuIERlZmF1bHRzIHRvCiAgICAgICAgICAgICAg ICB0aGUgZmlyc3QgcHJvZ3JhbSBmb3VuZCBvdXQgb2Y6IGBiaXNvbiAteScsIGBieWFjYycsIGB5 YWNjJy4KICAgIFlGTEFHUyAgICAgIFRoZSBsaXN0IG9mIGFyZ3VtZW50cyB0aGF0IHdpbGwgYmUg cGFzc2VkIGJ5IGRlZmF1bHQgdG8gJFlBQ0MuCi1AQCAtNTAzMyw2ICs1MDUzLDQ5MSBAQCBfQUNF T0YKK0BAIC01MDM5LDYgKzUwNTksNDkxIEBAIF9BQ0VPRgogIHsgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIiA+ JjUKICAkYXNfZWNobyAiJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCIgPiY2OyB9CiAgCkBAIC0x MjU3LDExICsxMjU3LDExIEBAIEluZGV4OiBnZGItNy42L2dkYi9jb25maWd1cmUKICAKICAKICBz dWJkaXJzPSIkc3ViZGlycyB0ZXN0c3VpdGUiCi1JbmRleDogZ2RiLTcuNi9nZGIvY29uZmlndXJl LmFjCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2NvbmZpZ3VyZS5hYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvY29uZmlndXJlLmFjCTIwMTMtMDctMTcgMTk6 NTE6MDEuNjY2MzU2OTY0ICswMjAwCi0rKysgZ2RiLTcuNi9nZGIvY29uZmlndXJlLmFjCTIwMTMt MDctMTcgMTk6NTE6MDIuNjkyMzU3NjY1ICswMjAwCi1AQCAtMTY2LDYgKzE2NiwxOTkgQEAgQUNf REVGSU5FX0RJUihBVVRPX0xPQURfU0FGRV9QQVRILCBlc2NhcAorLS0tIGdkYi03LjYuNTAuMjAx MzA3MzEtY3ZzLm9yaWcvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEzLTA4LTAyIDE2OjI1OjI0Ljk4MzA5 NDQxOCArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9jb25maWd1cmUuYWMJ MjAxMy0wOC0wMiAxNjoyNToyNy4zNDQwOTc1NjggKzAyMDAKK0BAIC0xNjQsNiArMTY0LDE5OSBA QCBBQ19ERUZJTkVfRElSKEFVVE9fTE9BRF9TQUZFX1BBVEgsIGVzY2FwCiAgCSAgICAgIFtEaXJl Y3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMuXSkKICBBQ19NU0dfUkVTVUxU KFskd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoXSkKICAKQEAgLTE0NjEsMTEgKzE0NjEsMTEgQEAg SW5kZXg6IGdkYi03LjYvZ2RiL2NvbmZpZ3VyZS5hYwogIEFDX0NPTkZJR19TVUJESVJTKHRlc3Rz dWl0ZSkKICAKICAjIENoZWNrIHdoZXRoZXIgdG8gc3VwcG9ydCBhbHRlcm5hdGl2ZSB0YXJnZXQg Y29uZmlndXJhdGlvbnMKLUluZGV4OiBnZGItNy42L2dkYi9jb3JlbG93LmMKK0luZGV4OiBnZGIt Ny42LjUwLjIwMTMwNzMxLWN2cy9nZGIvY29yZWxvdy5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu Ni5vcmlnL2dkYi9jb3JlbG93LmMJMjAxMy0wNy0xNyAxOTo1MTowMi42MDgzNTc2MDcgKzAyMDAK LSsrKyBnZGItNy42L2dkYi9jb3JlbG93LmMJMjAxMy0wNy0xNyAxOTo1MTowMi42OTIzNTc2NjUg KzAyMDAKLUBAIC0zMTQsNyArMzE0LDcgQEAgYnVpbGRfaWRfbG9jYXRlX2V4ZWMgKGludCBmcm9t X3R0eSkKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9jb3JlbG93LmMJMjAx My0wOC0wMiAxNjoyNToyNC45ODQwOTQ0MTkgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMx LWN2cy9nZGIvY29yZWxvdy5jCTIwMTMtMDgtMDIgMTY6MjU6MjcuMzQ0MDk3NTY4ICswMjAwCitA QCAtMzE2LDcgKzMxNiw3IEBAIGJ1aWxkX2lkX2xvY2F0ZV9leGVjIChpbnQgZnJvbV90dHkpCiAg ICAgICAgICBzeW1maWxlX29iamZpbGUtPmZsYWdzIHw9IE9CSkZfQlVJTERfSURfQ09SRV9MT0FE RUQ7CiAgICAgIH0KICAgIGVsc2UKCmRpZmYgLS1naXQgYS9nZGItNi42LWJ1aWxkaWQtbG9jYXRl LnBhdGNoIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5wYXRjaAppbmRleCAzMGI0Mzc1Li4yYTU1 MTdmIDEwMDY0NAotLS0gYS9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLnBhdGNoCisrKyBiL2dkYi02 LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2gKQEAgLTEsMTggKzEsMTggQEAKLUluZGV4OiBnZGItNy42 L2dkYi9jb3JlbG93LmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvY29yZWxv dy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dkYi9jb3JlbG93LmMJMjAxMy0wMS0z MSAxOTozNzozNy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy42L2dkYi9jb3JlbG93LmMJMjAx My0wNy0xNyAwNToyODo0OS4yNzcyMDM1MzYgKzAyMDAKLUBAIC00Niw2ICs0Niw5IEBACi0gI2lu Y2x1ZGUgInByb2dzcGFjZS5oIgotICNpbmNsdWRlICJvYmpmaWxlcy5oIgorLS0tIGdkYi03LjYu NTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2NvcmVsb3cuYwkyMDEzLTA4LTAyIDE3OjA3OjE3Ljg4 NjczOTUxMyArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9jb3JlbG93LmMJ MjAxMy0wOC0wMiAxNzowNzoyOC40MzQ3NTMyOTMgKzAyMDAKK0BAIC00OCw2ICs0OCw5IEBACiAg I2luY2x1ZGUgImdkYl9iZmQuaCIKKyAjaW5jbHVkZSAiY29tcGxldGVyLmgiCisgI2luY2x1ZGUg ImZpbGVzdHVmZi5oIgogKyNpbmNsdWRlICJhdXh2LmgiCiArI2luY2x1ZGUgImVsZi9jb21tb24u aCIKICsjaW5jbHVkZSAiZ2RiY21kLmgiCiAgCiAgI2lmbmRlZiBPX0xBUkdFRklMRQogICNkZWZp bmUgT19MQVJHRUZJTEUgMAotQEAgLTI3MSw2ICsyNzQsNTMgQEAgYWRkX3RvX3RocmVhZF9saXN0 IChiZmQgKmFiZmQsIGFzZWN0aW9uCitAQCAtMjczLDYgKzI3Niw1MyBAQCBhZGRfdG9fdGhyZWFk X2xpc3QgKGJmZCAqYWJmZCwgYXNlY3Rpb24KICAgICAgaW5mZXJpb3JfcHRpZCA9IHB0aWQ7CQkJ LyogWWVzLCBtYWtlIGl0IGN1cnJlbnQuICAqLwogIH0KICAKQEAgLTY2LDcgKzY2LDcgQEAgSW5k ZXg6IGdkYi03LjYvZ2RiL2NvcmVsb3cuYwogIC8qIFRoaXMgcm91dGluZSBvcGVucyBhbmQgc2V0 cyB1cCB0aGUgY29yZSBmaWxlIGJmZC4gICovCiAgCiAgc3RhdGljIHZvaWQKLUBAIC00MDksNiAr NDU5LDE0IEBAIGNvcmVfb3BlbiAoY2hhciAqZmlsZW5hbWUsIGludCBmcm9tX3R0eSkKK0BAIC00 MTEsNiArNDYxLDE0IEBAIGNvcmVfb3BlbiAoY2hhciAqZmlsZW5hbWUsIGludCBmcm9tX3R0eSkK ICAJc3dpdGNoX3RvX3RocmVhZCAodGhyZWFkLT5wdGlkKTsKICAgICAgfQogIApAQCAtODEsMTAg KzgxLDEwIEBAIEluZGV4OiBnZGItNy42L2dkYi9jb3JlbG93LmMKICAgIHBvc3RfY3JlYXRlX2lu ZmVyaW9yICgmY29yZV9vcHMsIGZyb21fdHR5KTsKICAKICAgIC8qIE5vdyBnbyB0aHJvdWdoIHRo ZSB0YXJnZXQgc3RhY2sgbG9va2luZyBmb3IgdGhyZWFkcyBzaW5jZSB0aGVyZQotQEAgLTk3OCw0 ICsxMDM2LDExIEBAIF9pbml0aWFsaXplX2NvcmVsb3cgKHZvaWQpCitAQCAtOTc0LDQgKzEwMzIs MTEgQEAgX2luaXRpYWxpemVfY29yZWxvdyAodm9pZCkKICAgIGluaXRfY29yZV9vcHMgKCk7CiAg Ci0gICBhZGRfdGFyZ2V0ICgmY29yZV9vcHMpOworICAgYWRkX3RhcmdldF93aXRoX2NvbXBsZXRl ciAoJmNvcmVfb3BzLCBmaWxlbmFtZV9jb21wbGV0ZXIpOwogKwogKyAgYWRkX3NldHNob3dfYm9v bGVhbl9jbWQgKCJidWlsZC1pZC1jb3JlLWxvYWRzIiwgY2xhc3NfZmlsZXMsCiArCQkJICAgJmJ1 aWxkX2lkX2NvcmVfbG9hZHMsIF8oIlwKQEAgLTkzLDExICs5MywxMSBAQCBJbmRleDogZ2RiLTcu Ni9nZGIvY29yZWxvdy5jCiArCQkJICAgTlVMTCwgTlVMTCwgTlVMTCwKICsJCQkgICAmc2V0bGlz dCwgJnNob3dsaXN0KTsKICB9Ci1JbmRleDogZ2RiLTcuNi9nZGIvZG9jL2dkYi50ZXhpbmZvCitJ bmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2RvYy9nZGIudGV4aW5mbwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTMtMDctMTcgMDU6 Mjg6NDguODgyMjAzMzg0ICswMjAwCi0rKysgZ2RiLTcuNi9nZGIvZG9jL2dkYi50ZXhpbmZvCTIw MTMtMDctMTcgMDU6Mjg6NDkuMjg2MjAzNTM5ICswMjAwCi1AQCAtMTY4MzEsNiArMTY4MzEsMjcg QEAgaW5mb3JtYXRpb24gZmlsZXMuCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9n ZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTMtMDgtMDIgMTc6MDc6MTcuODg2NzM5NTEzICswMjAwCisr KysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEzLTA4LTAy IDE3OjA3OjI4LjQ0Mzc1MzMwNCArMDIwMAorQEAgLTE3MTE5LDYgKzE3MTE5LDI3IEBAIGluZm9y bWF0aW9uIGZpbGVzLgogIAogIEBlbmQgdGFibGUKICAKQEAgLTEyNSwxMSArMTI1LDExIEBAIElu ZGV4OiBnZGItNy42L2dkYi9kb2MvZ2RiLnRleGluZm8KICBAY2luZGV4IEBjb2Rley5nbnVfZGVi dWdsaW5rfSBzZWN0aW9ucwogIEBjaW5kZXggZGVidWcgbGluayBzZWN0aW9ucwogIEEgZGVidWcg bGluayBpcyBhIHNwZWNpYWwgc2VjdGlvbiBvZiB0aGUgZXhlY3V0YWJsZSBmaWxlIG5hbWVkCi1J bmRleDogZ2RiLTcuNi9nZGIvc29saWItc3ZyNC5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDcz MS1jdnMvZ2RiL3NvbGliLXN2cjQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIv c29saWItc3ZyNC5jCTIwMTMtMDEtMzEgMTQ6NTI6NTIuMDAwMDAwMDAwICswMTAwCi0rKysgZ2Ri LTcuNi9nZGIvc29saWItc3ZyNC5jCTIwMTMtMDctMTcgMDU6Mjg6NDkuMjg3MjAzNTM5ICswMjAw Ci1AQCAtMTIyNCw5ICsxMjI0LDUyIEBAIHN2cjRfcmVhZF9zb19saXN0IChDT1JFX0FERFIgbG0s IHN0cnVjdAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL3NvbGliLXN2cjQu YwkyMDEzLTA4LTAyIDE3OjA3OjE3Ljg4NjczOTUxMyArMDIwMAorKysrIGdkYi03LjYuNTAuMjAx MzA3MzEtY3ZzL2dkYi9zb2xpYi1zdnI0LmMJMjAxMy0wOC0wMiAxNzowNzoyOC40NDQ3NTMzMDUg KzAyMDAKK0BAIC0xMzY1LDkgKzEzNjUsNTIgQEAgc3ZyNF9yZWFkX3NvX2xpc3QgKENPUkVfQURE UiBsbSwgQ09SRV9BRAogIAkgIGNvbnRpbnVlOwogIAl9CiAgCkBAIC0xODUsMTAgKzE4NSwxMCBA QCBJbmRleDogZ2RiLTcuNi9nZGIvc29saWItc3ZyNC5jCiAgICAgICAgeGZyZWUgKGJ1ZmZlcik7 CiAgCiAgICAgICAgLyogSWYgdGhpcyBlbnRyeSBoYXMgbm8gbmFtZSwgb3IgaXRzIG5hbWUgbWF0 Y2hlcyB0aGUgbmFtZQotSW5kZXg6IGdkYi03LjYvZ2RiL2VsZnJlYWQuYworSW5kZXg6IGdkYi03 LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9lbGZyZWFkLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42 Lm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDEzLTAzLTE4IDEwOjIwOjAyLjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjYvZ2RiL2VsZnJlYWQuYwkyMDEzLTA3LTE3IDA1OjMxOjIxLjI0MjI1NjE0MSAr MDIwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDEz LTA4LTAyIDE3OjA3OjE3Ljg4NjczOTUxMyArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEt Y3ZzL2dkYi9lbGZyZWFkLmMJMjAxMy0wOC0wMiAxNzowOTowNi40NjA4ODE1MDMgKzAyMDAKIEBA IC00NSw2ICs0NSwxMSBAQAogICNpbmNsdWRlICJyZWdjYWNoZS5oIgogICNpbmNsdWRlICJiY2Fj aGUuaCIKQEAgLTIwMSw3ICsyMDEsNyBAQCBJbmRleDogZ2RiLTcuNi9nZGIvZWxmcmVhZC5jCiAg CiAgZXh0ZXJuIHZvaWQgX2luaXRpYWxpemVfZWxmcmVhZCAodm9pZCk7CiAgCi1AQCAtMTA2OCwx MCArMTA3Myw1OSBAQCBlbGZfZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybl9zdG9wIChzdHJ1CitA QCAtMTA4NywxMCArMTA5Miw1OSBAQCBlbGZfZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybl9zdG9w IChzdHJ1CiAgICB1cGRhdGVfYnJlYWtwb2ludF9sb2NhdGlvbnMgKGIsIHNhbHMsIHNhbHNfZW5k KTsKICB9CiAgCkBAIC0yMzMsNyArMjMzLDcgQEAgSW5kZXg6IGdkYi03LjYvZ2RiL2VsZnJlYWQu YwogKyAgICAgIEVsZl9FeHRlcm5hbF9Ob3RlICp4bnAgPSAoRWxmX0V4dGVybmFsX05vdGUgKikg cDsKICsgICAgICBzaXplX3QgbmFtZXN6ID0gSF9HRVRfMzIgKHRlbXBsLCB4bnAtPm5hbWVzeik7 CiArICAgICAgc2l6ZV90IGRlc2NzeiA9IEhfR0VUXzMyICh0ZW1wbCwgeG5wLT5kZXNjc3opOwot KyAgICAgIGJmZF9ieXRlICpkZXNjZGF0YSA9IHhucC0+bmFtZSArIEJGRF9BTElHTiAobmFtZXN6 LCA0KTsKKysgICAgICBiZmRfYnl0ZSAqZGVzY2RhdGEgPSAoZ2RiX2J5dGUgKikgeG5wLT5uYW1l ICsgQkZEX0FMSUdOIChuYW1lc3osIDQpOwogKwogKyAgICAgIGlmIChIX0dFVF8zMiAodGVtcGws IHhucC0+dHlwZSkgPT0gTlRfR05VX0JVSUxEX0lECiArCSAgJiYgbmFtZXN6ID09IHNpemVvZiAi R05VIgpAQCAtMjYzLDcgKzI2Myw3IEBAIEluZGV4OiBnZGItNy42L2dkYi9lbGZyZWFkLmMKICB7 CiAgICBpZiAoIWJmZF9jaGVja19mb3JtYXQgKGFiZmQsIGJmZF9vYmplY3QpCiAgICAgICAgfHwg YmZkX2dldF9mbGF2b3VyIChhYmZkKSAhPSBiZmRfdGFyZ2V0X2VsZl9mbGF2b3VyCi1AQCAtMTA4 MSw2ICsxMTM1LDM0OCBAQCBidWlsZF9pZF9iZmRfZ2V0IChiZmQgKmFiZmQpCitAQCAtMTEwMCw2 ICsxMTU0LDM0OCBAQCBidWlsZF9pZF9iZmRfZ2V0IChiZmQgKmFiZmQpCiAgICByZXR1cm4gZWxm X3RkYXRhIChhYmZkKS0+YnVpbGRfaWQ7CiAgfQogIApAQCAtNjEyLDcgKzYxMiw3IEBAIEluZGV4 OiBnZGItNy42L2dkYi9lbGZyZWFkLmMKICAvKiBSZXR1cm4gaWYgRklMRU5BTUUgaGFzIE5UX0dO VV9CVUlMRF9JRCBtYXRjaGluZyB0aGUgQ0hFQ0sgdmFsdWUuICAqLwogIAogIHN0YXRpYyBpbnQK LUBAIC0xMDk1LDcgKzE0OTEsNyBAQCBidWlsZF9pZF92ZXJpZnkgKGNvbnN0IGNoYXIgKmZpbGVu YW1lLCBjCitAQCAtMTExNCw3ICsxNTEwLDcgQEAgYnVpbGRfaWRfdmVyaWZ5IChjb25zdCBjaGFy ICpmaWxlbmFtZSwgYwogICAgaWYgKGFiZmQgPT0gTlVMTCkKICAgICAgcmV0dXJuIDA7CiAgCkBA IC02MjEsNyArNjIxLDcgQEAgSW5kZXg6IGdkYi03LjYvZ2RiL2VsZnJlYWQuYwogIAogICAgaWYg KGZvdW5kID09IE5VTEwpCiAgICAgIHdhcm5pbmcgKF8oIkZpbGUgXCIlc1wiIGhhcyBubyBidWls ZC1pZCwgZmlsZSBza2lwcGVkIiksIGZpbGVuYW1lKTsKLUBAIC0xMTEyLDE2ICsxNTA4LDUzIEBA IGJ1aWxkX2lkX3ZlcmlmeSAoY29uc3QgY2hhciAqZmlsZW5hbWUsIGMKK0BAIC0xMTMxLDE2ICsx NTI3LDUzIEBAIGJ1aWxkX2lkX3ZlcmlmeSAoY29uc3QgY2hhciAqZmlsZW5hbWUsIGMKICB9CiAg CiAgc3RhdGljIGNoYXIgKgpAQCAtNjc4LDcgKzY3OCw3IEBAIEluZGV4OiBnZGItNy42L2dkYi9l bGZyZWFkLmMKICAKICAgIC8qIEtlZXAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBzbyB0aGF0IERF QlVHX0ZJTEVfRElSRUNUT1JZIGJlaW5nICIiIHdpbGwKICAgICAgIGNhdXNlICIvLmJ1aWxkLWlk Ly4uLiIgbG9va3Vwcy4gICovCi1AQCAtMTEzNCw3ICsxNTY3LDEwIEBAIGJ1aWxkX2lkX3RvX2Rl YnVnX2ZpbGVuYW1lIChjb25zdCBzdHJ1Y3QKK0BAIC0xMTUzLDcgKzE1ODYsMTAgQEAgYnVpbGRf aWRfdG9fZGVidWdfZmlsZW5hbWUgKGNvbnN0IHN0cnVjdAogICAgICAgIHNpemVfdCBkZWJ1Z2Rp cl9sZW4gPSBzdHJsZW4gKGRlYnVnZGlyKTsKICAgICAgICBjb25zdCBnZGJfYnl0ZSAqZGF0YSA9 IGJ1aWxkX2lkLT5kYXRhOwogICAgICAgIHNpemVfdCBzaXplID0gYnVpbGRfaWQtPnNpemU7CkBA IC02OTAsNyArNjkwLDcgQEAgSW5kZXg6IGdkYi03LjYvZ2RiL2VsZnJlYWQuYwogIAogICAgICAg IG1lbWNweSAobGluaywgZGVidWdkaXIsIGRlYnVnZGlyX2xlbik7CiAgICAgICAgcyA9ICZsaW5r W2RlYnVnZGlyX2xlbl07Ci1AQCAtMTE0OCwzNyArMTU4NCwyNTYgQEAgYnVpbGRfaWRfdG9fZGVi dWdfZmlsZW5hbWUgKGNvbnN0IHN0cnVjdAorQEAgLTExNjcsMzcgKzE2MDMsMjU2IEBAIGJ1aWxk X2lkX3RvX2RlYnVnX2ZpbGVuYW1lIChjb25zdCBzdHJ1Y3QKICAJKnMrKyA9ICcvJzsKICAgICAg ICB3aGlsZSAoc2l6ZS0tID4gMCkKICAJcyArPSBzcHJpbnRmIChzLCAiJTAyeCIsICh1bnNpZ25l ZCkgKmRhdGErKyk7CkBAIC05NTgsNyArOTU4LDcgQEAgSW5kZXg6IGdkYi03LjYvZ2RiL2VsZnJl YWQuYwogICAgICAgIC8qIFByZXZlbnQgbG9vcGluZyBvbiBhIHN0cmlwcGVkIC5kZWJ1ZyBmaWxl LiAgKi8KICAgICAgICBpZiAoYnVpbGRfaWRfbmFtZSAhPSBOVUxMCiAgCSAgJiYgZmlsZW5hbWVf Y21wIChidWlsZF9pZF9uYW1lLCBvYmpmaWxlLT5uYW1lKSA9PSAwKQotQEAgLTExODgsNyArMTg0 Myw3IEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9ieV9idWlsZGlkIChzdHIKK0BAIC0xMjA3 LDcgKzE4NjIsNyBAQCBmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGVfYnlfYnVpbGRpZCAoc3RyCiAg CSAgeGZyZWUgKGJ1aWxkX2lkX25hbWUpOwogIAl9CiAgICAgICAgZWxzZSBpZiAoYnVpbGRfaWRf bmFtZSAhPSBOVUxMKQpAQCAtOTY3LDcgKzk2Nyw3IEBAIEluZGV4OiBnZGItNy42L2dkYi9lbGZy ZWFkLmMKICAgICAgfQogICAgcmV0dXJuIE5VTEw7CiAgfQotQEAgLTE0MjYsOSArMjA4MSwxMCBA QCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsCitAQCAtMTQ0NSw5ICsy MTAwLDEwIEBAIGVsZl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWwKICAJICAg JiYgb2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZSA9PSBOVUxMCiAgCSAgICYmIG9iamZp bGUtPnNlcGFyYXRlX2RlYnVnX29iamZpbGVfYmFja2xpbmsgPT0gTlVMTCkKICAgICAgewpAQCAt OTgwLDcgKzk4MCw3IEBAIEluZGV4OiBnZGItNy42L2dkYi9lbGZyZWFkLmMKICAKICAgICAgICBp ZiAoZGVidWdmaWxlID09IE5VTEwpCiAgCWRlYnVnZmlsZSA9IGZpbmRfc2VwYXJhdGVfZGVidWdf ZmlsZV9ieV9kZWJ1Z2xpbmsgKG9iamZpbGUpOwotQEAgLTE0NDIsNiArMjA5OCwxMiBAQCBlbGZf c3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsCitAQCAtMTQ2MSw2ICsyMTE3LDEy IEBAIGVsZl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWwKICAJICBzeW1ib2xf ZmlsZV9hZGRfc2VwYXJhdGUgKGFiZmQsIHN5bWZpbGVfZmxhZ3MsIG9iamZpbGUpOwogIAkgIGRv X2NsZWFudXBzIChjbGVhbnVwKTsKICAJfQpAQCAtOTkzLDcgKzk5Myw3IEBAIEluZGV4OiBnZGIt Ny42L2dkYi9lbGZyZWFkLmMKICAgICAgfQogIH0KICAKLUBAIC0xNzYxLDQgKzI0MjMsMTYgQEAg X2luaXRpYWxpemVfZWxmcmVhZCAodm9pZCkKK0BAIC0xNzkwLDQgKzI0NTIsMTYgQEAgX2luaXRp YWxpemVfZWxmcmVhZCAodm9pZCkKICAKICAgIGVsZl9vYmpmaWxlX2dudV9pZnVuY19jYWNoZV9k YXRhID0gcmVnaXN0ZXJfb2JqZmlsZV9kYXRhICgpOwogICAgZ251X2lmdW5jX2Zuc19wID0gJmVs Zl9nbnVfaWZ1bmNfZm5zOwpAQCAtMTAxMCwxMSArMTAxMCwxMSBAQCBJbmRleDogZ2RiLTcuNi9n ZGIvZWxmcmVhZC5jCiArCiArICBvYnNlcnZlcl9hdHRhY2hfZXhlY3V0YWJsZV9jaGFuZ2VkIChk ZWJ1Z19wcmludF9leGVjdXRhYmxlX2NoYW5nZWQpOwogIH0KLUluZGV4OiBnZGItNy42L2dkYi9z eW1maWxlLmgKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvc3ltZmlsZS5oCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dkYi9zeW1maWxlLmgJMjAxMy0wMi0wMyAxNzoy MDoxOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy42L2dkYi9zeW1maWxlLmgJMjAxMy0wNy0x NyAwNToyODo0OS4yOTEyMDM1NDEgKzAyMDAKLUBAIC01OTMsNiArNTkzLDEyIEBAIHZvaWQgZnJl ZV9zeW1maWxlX3NlZ21lbnRfZGF0YSAoc3RydWN0IHMKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMx LWN2cy5vcmlnL2dkYi9zeW1maWxlLmgJMjAxMy0wOC0wMiAxNzowNzoxNy44ODY3Mzk1MTMgKzAy MDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvc3ltZmlsZS5oCTIwMTMtMDgtMDIg MTc6MDc6MjguNDQ2NzUzMzA4ICswMjAwCitAQCAtNTk3LDYgKzU5NywxMiBAQCB2b2lkIGZyZWVf c3ltZmlsZV9zZWdtZW50X2RhdGEgKHN0cnVjdCBzCiAgCiAgZXh0ZXJuIHN0cnVjdCBjbGVhbnVw ICppbmNyZW1lbnRfcmVhZGluZ19zeW10YWIgKHZvaWQpOwogIApAQCAtMTAyNywxMCArMTAyNywx MCBAQCBJbmRleDogZ2RiLTcuNi9nZGIvc3ltZmlsZS5oCiAgLyogRnJvbSBkd2FyZjJyZWFkLmMg Ki8KICAKICAvKiBOYW1lcyBmb3IgYSBkd2FyZjIgZGVidWdnaW5nIHNlY3Rpb24uICBUaGUgZmll bGQgTk9STUFMIGlzIHRoZSBub3JtYWwKLUluZGV4OiBnZGItNy42L2dkYi90ZXN0c3VpdGUvbGli L2dkYi5leHAKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvdGVzdHN1aXRlL2xp Yi9nZGIuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dkYi90ZXN0c3VpdGUvbGli L2dkYi5leHAJMjAxMy0wNy0xNyAwNToyODo0OC4zMzQyMDMxNzIgKzAyMDAKLSsrKyBnZGItNy42 L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAxMy0wNy0xNyAwNToyODo0OS4yOTIyMDM1NDEg KzAyMDAKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi90ZXN0c3VpdGUvbGli L2dkYi5leHAJMjAxMy0wOC0wMiAxNzowNzoxNy44ODY3Mzk1MTMgKzAyMDAKKysrKyBnZGItNy42 LjUwLjIwMTMwNzMxLWN2cy9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTMtMDgtMDIgMTc6 MDc6MjguNDQ2NzUzMzA4ICswMjAwCiBAQCAtMTQ4Miw2ICsxNDgyLDE2IEBAIHByb2MgZGVmYXVs dF9nZGJfc3RhcnQgeyB9IHsKICAJICAgIHdhcm5pbmcgIkNvdWxkbid0IHNldCB0aGUgd2lkdGgg dG8gMC4iCiAgCX0KQEAgLTEwNDUsMTMgKzEwNDUsMTMgQEAgSW5kZXg6IGdkYi03LjYvZ2RiL3Rl c3RzdWl0ZS9saWIvZ2RiLmV4cAogKwkgICAgd2FybmluZyAiQ291bGQgbm90IGRpc2FibGUgdGhl IG1pc3NpbmcgZGVidWcgaW5mb3Mgd2FybmluZ3MuLiIKICsJfQogKyAgICB9Ci0gICAgIHJldHVy biAwOworICAgICByZXR1cm4gMAogIH0KICAKLUluZGV4OiBnZGItNy42L2dkYi90ZXN0c3VpdGUv bGliL21pLXN1cHBvcnQuZXhwCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3Rl c3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcv Z2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAxMy0wMS0yMiAwMDo1Nzo1OS4wMDAw MDAwMDAgKzAxMDAKLSsrKyBnZGItNy42L2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhw CTIwMTMtMDctMTcgMDU6Mjg6NDkuMjkyMjAzNTQxICswMjAwCistLS0gZ2RiLTcuNi41MC4yMDEz MDczMS1jdnMub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAkyMDEzLTA4LTAy IDE3OjA3OjE3Ljg4NjczOTUxMyArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dk Yi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTMtMDgtMDIgMTc6MDc6MjguNDQ3NzUz MzEwICswMjAwCiBAQCAtMjEyLDYgKzIxMiwxNiBAQCBwcm9jIGRlZmF1bHRfbWlfZ2RiX3N0YXJ0 IHsgYXJncyB9IHsKICAJICAgIHdhcm5pbmcgIkNvdWxkbid0IHNldCB0aGUgd2lkdGggdG8gMC4i CiAgCX0KQEAgLTEwNjksMTEgKzEwNjksMTEgQEAgSW5kZXg6IGdkYi03LjYvZ2RiL3Rlc3RzdWl0 ZS9saWIvbWktc3VwcG9ydC5leHAKICAgICAgIyBJZiBhbGxvd2luZyB0aGUgaW5mZXJpb3IgdG8g aGF2ZSBpdHMgb3duIFBUWSB0aGVuIGFzc2lnbiB0aGUgaW5mZXJpb3IKICAgICAgIyBpdHMgb3du IHRlcm1pbmFsIGRldmljZSBoZXJlLgogICAgICBpZiB7ICRzZXBhcmF0ZV9pbmZlcmlvcl9wdHkg fSB7Ci1JbmRleDogZ2RiLTcuNi9nZGIvb2JqZmlsZXMuaAorSW5kZXg6IGdkYi03LjYuNTAuMjAx MzA3MzEtY3ZzL2dkYi9vYmpmaWxlcy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dk Yi9vYmpmaWxlcy5oCTIwMTMtMDItMjggMjA6MDA6MzEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2Ri LTcuNi9nZGIvb2JqZmlsZXMuaAkyMDEzLTA3LTE3IDA1OjI4OjQ5LjI5MzIwMzU0MiArMDIwMAot QEAgLTQzMiw2ICs0MzIsMTAgQEAgc3RydWN0IG9iamZpbGUKKy0tLSBnZGItNy42LjUwLjIwMTMw NzMxLWN2cy5vcmlnL2dkYi9vYmpmaWxlcy5oCTIwMTMtMDgtMDIgMTc6MDc6MTcuODg2NzM5NTEz ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL29iamZpbGVzLmgJMjAxMy0w OC0wMiAxNzowNzoyOC40NDc3NTMzMTAgKzAyMDAKK0BAIC00MjksNiArNDI5LDEwIEBAIHN0cnVj dCBvYmpmaWxlCiAgCiAgI2RlZmluZSBPQkpGX01BSU5MSU5FICgxIDw8IDUpCiAgCkBAIC0xMDg0 LDExICsxMDg0LDExIEBAIEluZGV4OiBnZGItNy42L2dkYi9vYmpmaWxlcy5oCiAgLyogVGhlIG9i amVjdCBmaWxlIHRoYXQgY29udGFpbnMgdGhlIHJ1bnRpbWUgY29tbW9uIG1pbmltYWwgc3ltYm9s cwogICAgIGZvciBTdW5PUzQuICBOb3RlIHRoYXQgdGhpcyBvYmpmaWxlIGhhcyBubyBhc3NvY2lh dGVkIEJGRC4gICovCiAgCi1JbmRleDogZ2RiLTcuNi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Nv cmVmaWxlLmV4cAorSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvY29yZWZpbGUuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvY29yZWZpbGUuZXhwCTIwMTMtMDEtMDEgMDc6MzM6MjUuMDAwMDAw MDAwICswMTAwCi0rKysgZ2RiLTcuNi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2NvcmVmaWxlLmV4 cAkyMDEzLTA3LTE3IDA1OjI4OjQ5LjI5MzIwMzU0MiArMDIwMAotQEAgLTI1NiwzICsyNTYsMzMg QEAgaWYgIVtpc19yZW1vdGUgdGFyZ2V0XSB7CistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMu b3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2NvcmVmaWxlLmV4cAkyMDEzLTA4LTAyIDE3OjA3 OjE3Ljg4NjczOTUxMyArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvY29yZWZpbGUuZXhwCTIwMTMtMDgtMDIgMTc6MDc6MjguNDQ3NzUzMzEw ICswMjAwCitAQCAtMjU1LDMgKzI1NSwzMyBAQCBpZiAhW2lzX3JlbW90ZSB0YXJnZXRdIHsKICAK ICAgICAgZ2RiX2V4aXQKICB9CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNi10ZXN0c3VpdGUtdGltZW91 dHMucGF0Y2ggYi9nZGItNi42LXRlc3RzdWl0ZS10aW1lb3V0cy5wYXRjaAppbmRleCAwMGY1ZDg1 Li5iN2I2MmVhIDEwMDY0NAotLS0gYS9nZGItNi42LXRlc3RzdWl0ZS10aW1lb3V0cy5wYXRjaAor KysgYi9nZGItNi42LXRlc3RzdWl0ZS10aW1lb3V0cy5wYXRjaApAQCAtMSwyMyArMSwyMyBAQAot SW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGEx LmV4cAorSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvYW5ub3RhMS5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGExLmV4cAkyMDEyLTAzLTE2IDE3OjQ3OjMzLjAw MDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9hbm5vdGExLmV4cAkyMDEyLTA2LTAyIDE4OjI3OjQ2LjYyMzIxMDcxMSArMDIwMAotQEAg LTQ1LDYgKzQ1LDggQEAgZ2RiX3N0YXJ0Ci0gZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8k c3ViZGlyCi0gZ2RiX2xvYWQgJHtiaW5maWxlfQorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3Zz Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGExLmV4cAkyMDEzLTA4LTAyIDE2OjIz OjI2LjU1OTkzNjI1OCArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMS5leHAJMjAxMy0wOC0wMiAxNjoyMzo1Ni41OTA5NzY0MTgg KzAyMDAKK0BAIC00MSw2ICs0MSw4IEBAIGlmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7 c3ViZGlyfS8KKyAKKyBjbGVhbl9yZXN0YXJ0ICR7YmluZmlsZX0KICAKICtnZGJfdGVzdCAic2V0 IGJyZWFrcG9pbnQgcGVuZGluZyBvZmYiICIiICJBdm9pZCBsb2NrdXAgb24gbm9uZXhpc3Rpbmcg ZnVuY3Rpb25zIgogKwogICMgVGhlIGNvbW1hbmRzIHdlIHRlc3QgaGVyZSBwcm9kdWNlIG1hbnkg bGluZXMgb2Ygb3V0cHV0OyBkaXNhYmxlICJwcmVzcyAKICAjIDxyZXR1cm4+IHRvIGNvbnRpbnVl IiBwcm9tcHRzLgogIGdkYl90ZXN0X25vX291dHB1dCAic2V0IGhlaWdodCAwIgotSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGEzLmV4cAorSW5k ZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3Rh My5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9hbm5vdGEzLmV4cAkyMDEyLTAyLTI4IDIzOjQwOjQ4LjAwMDAwMDAwMCAr MDEwMAotKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5v dGEzLmV4cAkyMDEyLTA2LTAyIDE4OjI4OjAwLjM3NTIwNjQ1NyArMDIwMAotQEAgLTQ1LDYgKzQ1 LDggQEAgZ2RiX3N0YXJ0Ci0gZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0g Z2RiX2xvYWQgJHtiaW5maWxlfQorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGEzLmV4cAkyMDEzLTA4LTAyIDE2OjIzOjI2LjU2MDkz NjI1OSArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvYW5ub3RhMy5leHAJMjAxMy0wOC0wMiAxNjoyNDoxMS42NTQ5OTYyNjcgKzAyMDAKK0BA IC00MCw2ICs0MCw4IEBAIGlmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8K KyAKKyBjbGVhbl9yZXN0YXJ0ICR7YmluZmlsZX0KICAKICtnZGJfdGVzdCAic2V0IGJyZWFrcG9p bnQgcGVuZGluZyBvZmYiICIiICJBdm9pZCBsb2NrdXAgb24gbm9uZXhpc3RpbmcgZnVuY3Rpb25z IgogKwoKZGlmZiAtLWdpdCBhL2dkYi02LjctdGVzdHN1aXRlLXN0YWJsZS1yZXN1bHRzLnBhdGNo IGIvZ2RiLTYuNy10ZXN0c3VpdGUtc3RhYmxlLXJlc3VsdHMucGF0Y2gKaW5kZXggN2UyZmIzOS4u Mzk3YzA2MSAxMDA2NDQKLS0tIGEvZ2RiLTYuNy10ZXN0c3VpdGUtc3RhYmxlLXJlc3VsdHMucGF0 Y2gKKysrIGIvZ2RiLTYuNy10ZXN0c3VpdGUtc3RhYmxlLXJlc3VsdHMucGF0Y2gKQEAgLTIwLDEw ICsyMCwxMCBAQCByYW5kb20gRkFJTDogZ2RiLmJhc2UvYXV4di5leHA6IG1hdGNoaW5nIGF1eHYg ZGF0YSBmcm9tIGxpdmUgYW5kIGdjb3JlCiBnZGItNi44LjUwLjIwMDkwMjA5L2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvYW5ub3RhMS5leHA6CiBmcmFtZXMtaW52YWxpZCBjYW4gaGFwcGVuIGFzeW5j aHJvbm91c2x5LgogCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEwMy9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2ZpbGVpby5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9maWxlaW8uYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAx MDMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZpbGVpby5jCTIwMDktMTAtMDEgMTc6Mzk6 MTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEwMy9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2ZpbGVpby5jCTIwMTItMDEtMDMgMTU6MjE6MjguMTIyNzI5MjQ5ICswMTAwCist LS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Zp bGVpby5jCTIwMTMtMDgtMDIgMTY6MjU6NDkuNDY2MTI3MDc0ICswMjAwCisrKysgZ2RiLTcuNi41 MC4yMDEzMDczMS1jdnMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9maWxlaW8uYwkyMDEzLTA4LTAy IDE2OjI2OjExLjcyNDE1Njc1MCArMDIwMAogQEAgLTU4LDYgKzU4LDggQEAgc3lzdGVtIChjb25z dCBjaGFyICogc3RyaW5nKTsKICAxKSBJbnZhbGlkIHN0cmluZy9jb21tYW5kLiAtICByZXR1cm5z IDEyNy4gICovCiAgc3RhdGljIGNvbnN0IGNoYXIgKnN0cmVycm5vIChpbnQgZXJyKTsKQEAgLTcx LDEyICs3MSwxMiBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEwMy9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2ZpbGVpby5jCiAgICAvKiBEb24ndCBjaGFuZ2UgdGhlIG9yZGVyIG9mIHRoZSBjYWxs cy4gIFRoZXkgcGFydGx5IGRlcGVuZCBvbiBlYWNoIG90aGVyICovCiAgICB0ZXN0X29wZW4gKCk7 CiAgICB0ZXN0X3dyaXRlICgpOwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMDMvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9maWxlaW8uZXhwCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9maWxlaW8uZXhwCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu NC41MC4yMDEyMDEwMy5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZmlsZWlvLmV4cAkyMDEx LTEyLTI2IDEyOjI0OjU1LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMDMv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9maWxlaW8uZXhwCTIwMTItMDEtMDMgMTU6MjI6MDIuNzE2 NjAxOTU2ICswMTAwCi1AQCAtNDIsOCArNDIsOCBAQCBpZiBbZ2V0X2NvbXBpbGVyX2luZm8gJHti aW5maWxlfV0gewotICAgICByZXR1cm4gLTE7CistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMu b3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZpbGVpby5leHAJMjAxMy0wOC0wMiAxNjoyNTo0 OS40NjcxMjcwNzUgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2ZpbGVpby5leHAJMjAxMy0wOC0wMiAxNjoyNzoxMC4xNDIyMzQ2MTggKzAy MDAKK0BAIC0zNSw4ICszNSw4IEBAIGlmIFtnZXRfY29tcGlsZXJfaW5mb10geworICAgICByZXR1 cm4gLTEKICB9CiAgCiAtcmVtb3RlX2V4ZWMgYnVpbGQge3NoIC14YyB0ZXN0XCAtclwgZGlyMi5m aWxlaW8udGVzdFwgJiZcIGNobW9kXCAtZlwgK3dcIGRpcjIuZmlsZWlvLnRlc3R9CkBAIC04Niw3 ICs4Niw3IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvZmlsZWlvLmV4cAogIAogIHNldCBvbGR0aW1lb3V0ICR0aW1lb3V0CiAgc2V0IHRpbWVvdXQg W2V4cHIgIiR0aW1lb3V0ICsgNjAiXQotQEAgLTg1LDcgKzg1LDcgQEAgZ2RiX3Rlc3QgY29udGlu dWUgXAorQEAgLTc4LDcgKzc4LDcgQEAgZ2RiX3Rlc3QgY29udGludWUgXAogIAogIGdkYl90ZXN0 ICJjb250aW51ZSIgIi4qIiAiIgogIApAQCAtOTUsNyArOTUsNyBAQCBJbmRleDogZ2RiLTcuNC41 MC4yMDEyMDEwMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZpbGVpby5leHAKICAKICBnZGJfdGVz dCBjb250aW51ZSBcCiAgIkNvbnRpbnVpbmdcXC4uKm9wZW4gNTouKkVBQ0NFUyRzdG9wX21zZyIg XAotQEAgLTI1MSw4ICsyNTEsOCBAQCBnZGJfZXhpdAorQEAgLTI0NCw4ICsyNDQsOCBAQCBnZGJf ZXhpdAogICMgV2FpdCB0aWxsIEdEQiByZWFsbHkgZXhpdHMuCiAgc2xlZXAgMQogIAoKZGlmZiAt LWdpdCBhL2dkYi02LjgtcXVpdC1uZXZlci1hYm9ydHMucGF0Y2ggYi9nZGItNi44LXF1aXQtbmV2 ZXItYWJvcnRzLnBhdGNoCmluZGV4IDc0NTM1YmUuLmY0NWM3MDcgMTAwNjQ0Ci0tLSBhL2dkYi02 LjgtcXVpdC1uZXZlci1hYm9ydHMucGF0Y2gKKysrIGIvZ2RiLTYuOC1xdWl0LW5ldmVyLWFib3J0 cy5wYXRjaApAQCAtNSwxMSArNSwxMSBAQCBTb21lIG9mIHRoZSB0aHJlYWRzIG1heSBub3QgYmUg cHJvcGVybHkgUFRSQUNFX0RFVEFDSGVkIHdoaWNoIGh1cnRzIGlmIHRoZXkKIHNob3VsZCBoYXZl IGJlZW4gZGV0YWNoZWQgd2l0aCBTSUdTVE9QIChhcyB0aGV5IGFyZSBhY2NpZGVudGFsbHkgbGVm dCBydW5uaW5nCiBvbiB0aGUgZGVidWdnZXIgdGVybWluYXRpb24pLgogCi1JbmRleDogZ2RiLTcu NS41MC4yMDEzMDExOC9nZGIvZGVmcy5oCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMv Z2RiL2RlZnMuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIv ZGVmcy5oCTIwMTMtMDEtMDEgMDc6MzI6NDEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41 MC4yMDEzMDExOC9nZGIvZGVmcy5oCTIwMTMtMDEtMjEgMTY6NDA6MjkuODg5MjU2NjMzICswMTAw Ci1AQCAtMTc2LDYgKzE3Niw3IEBAIGV4dGVybiBpbnQgY2hlY2tfcXVpdF9mbGFnICh2b2lkKTsK Ky0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9kZWZzLmgJMjAxMy0wOC0wMiAx Njo1ODozMS40NTMwMTY1NzMgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIv ZGVmcy5oCTIwMTMtMDgtMDIgMTY6NTg6NDEuMjIxMDMwNDEyICswMjAwCitAQCAtMTc3LDYgKzE3 Nyw3IEBAIGV4dGVybiBpbnQgY2hlY2tfcXVpdF9mbGFnICh2b2lkKTsKICAvKiBTZXQgdGhlIHF1 aXQgZmxhZy4gICovCiAgZXh0ZXJuIHZvaWQgc2V0X3F1aXRfZmxhZyAodm9pZCk7CiAgCkBAIC0x NywyNiArMTcsMjYgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2RlZnMuaAogIGV4 dGVybiBpbnQgaW1tZWRpYXRlX3F1aXQ7CiAgCiAgZXh0ZXJuIHZvaWQgcXVpdCAodm9pZCk7Ci1J bmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdG9wLmMKK0luZGV4OiBnZGItNy42LjUwLjIw MTMwNzMxLWN2cy9nZGIvdG9wLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMTE4 Lm9yaWcvZ2RiL3RvcC5jCTIwMTMtMDEtMjEgMTQ6NTY6MTIuMDAwMDAwMDAwICswMTAwCi0rKysg Z2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdG9wLmMJMjAxMy0wMS0yMSAxNDo1NjoxNi4zODU3MTAw NTYgKzAxMDAKLUBAIC0xMzI5LDcgKzEzMjksOSBAQCBxdWl0X2ZvcmNlIChjaGFyICphcmdzLCBp bnQgZnJvbV90dHkpCi0gICBxdC5hcmdzID0gYXJnczsKLSAgIHF0LmZyb21fdHR5ID0gZnJvbV90 dHk7CistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvdG9wLmMJMjAxMy0wOC0w MiAxNjo1ODo0MS4yMjIwMzA0MTQgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9n ZGIvdG9wLmMJMjAxMy0wOC0wMiAxNjo1OTowNi4zMjEwNjYyMjggKzAyMDAKK0BAIC0xNDE1LDcg KzE0MTUsOSBAQCBxdWl0X2ZvcmNlIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCisgICBpZiAo ZXgucmVhc29uIDwgMCkgXAorICAgICBleGNlcHRpb25fcHJpbnQgKGdkYl9zdGRlcnIsIGV4KQog IAogLSAgLyogV2Ugd2FudCB0byBoYW5kbGUgYW55IHF1aXQgZXJyb3JzIGFuZCBleGl0IHJlZ2Fy ZGxlc3MuICAqLwogKyAgLyogV2Ugd2FudCB0byBoYW5kbGUgYW55IHF1aXQgZXJyb3JzIGFuZCBl eGl0IHJlZ2FyZGxlc3MgYnV0IHdlIHNob3VsZCBuZXZlcgogKyAgICAgZ2V0IHVzZXItaW50ZXJy dXB0ZWQgdG8gcHJvcGVybHkgZGV0YWNoIHRoZSBpbmZlcmlvci4gICovCiArICBxdWl0X2ZsYWdf Y2xlYW51cCA9IDE7Ci0gICBjYXRjaF9lcnJvcnMgKHF1aXRfdGFyZ2V0LCAmcXQsCi0gCSAgICAg ICAgIlF1aXR0aW5nOiAiLCBSRVRVUk5fTUFTS19BTEwpOwogIAotSW5kZXg6IGdkYi03LjUuNTAu MjAxMzAxMTgvZ2RiL3V0aWxzLmMKKyAgIC8qIEdldCBvdXQgb2YgdGZpbmQgbW9kZSwgYW5kIGtp bGwgb3IgZGV0YWNoIGFsbCBpbmZlcmlvcnMuICAqLworICAgRE9fVFJZCitJbmRleDogZ2RiLTcu Ni41MC4yMDEzMDczMS1jdnMvZ2RiL3V0aWxzLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUw LjIwMTMwMTE4Lm9yaWcvZ2RiL3V0aWxzLmMJMjAxMy0wMS0yMSAxNDo1NjoxMi4wMDAwMDAwMDAg KzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi91dGlscy5jCTIwMTMtMDEtMjEgMTY6 NDE6MDIuMjI1MjMzNDkzICswMTAwCi1AQCAtMTQxLDYgKzE0MSwxMSBAQCBpbnQgcXVpdF9mbGFn OworLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL3V0aWxzLmMJMjAxMy0wOC0w MiAxNjo1ODozMS40NTUwMTY1NzUgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9n ZGIvdXRpbHMuYwkyMDEzLTA4LTAyIDE2OjU4OjQxLjIyMzAzMDQxNSArMDIwMAorQEAgLTEzNiw2 ICsxMzYsMTEgQEAgaW50IHF1aXRfZmxhZzsKICAKICBpbnQgaW1tZWRpYXRlX3F1aXQ7CiAgCkBA IC00OCw3ICs0OCw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi91dGlscy5jCiAg I2lmbmRlZiBIQVZFX1BZVEhPTgogIAogIC8qIENsZWFyIHRoZSBxdWl0IGZsYWcuICAqLwotQEAg LTE2NCw2ICsxNjksOSBAQCBzZXRfcXVpdF9mbGFnICh2b2lkKQorQEAgLTE1OSw2ICsxNjQsOSBA QCBzZXRfcXVpdF9mbGFnICh2b2lkKQogIGludAogIGNoZWNrX3F1aXRfZmxhZyAodm9pZCkKICB7 CkBAIC01OCwxMSArNTgsMTEgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3V0aWxz LmMKICAgIC8qIFRoaXMgaXMgd3JpdHRlbiBpbiBhIHBhcnRpY3VsYXIgd2F5IHRvIGF2b2lkIHJh Y2VzLiAgKi8KICAgIGlmIChxdWl0X2ZsYWcpCiAgICAgIHsKLUluZGV4OiBnZGItNy41LjUwLjIw MTMwMTE4L2dkYi9weXRob24vcHl0aG9uLmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2 cy9nZGIvcHl0aG9uL3B5dGhvbi5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDEx OC5vcmlnL2dkYi9weXRob24vcHl0aG9uLmMJMjAxMy0wMS0yMSAxNjozOTowMy4wMDAwMDAwMDAg KzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9weXRob24vcHl0aG9uLmMJMjAxMy0w MS0yMSAxNjozOTozMC42OTgyOTkxNDIgKzAxMDAKLUBAIC0xODEsNiArMTgxLDkgQEAgc2V0X3F1 aXRfZmxhZyAodm9pZCkKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9weXRo b24vcHl0aG9uLmMJMjAxMy0wOC0wMiAxNjo1ODozMS40NTYwMTY1NzcgKzAyMDAKKysrKyBnZGIt Ny42LjUwLjIwMTMwNzMxLWN2cy9nZGIvcHl0aG9uL3B5dGhvbi5jCTIwMTMtMDgtMDIgMTY6NTg6 NDEuMjI0MDMwNDE2ICswMjAwCitAQCAtMTkxLDYgKzE5MSw5IEBAIHNldF9xdWl0X2ZsYWcgKHZv aWQpCiAgaW50CiAgY2hlY2tfcXVpdF9mbGFnICh2b2lkKQogIHsKCmRpZmYgLS1naXQgYS9nZGIt YXJjaGVyLXBpZS1hZGRvbnMta2VlcC1kaXNhYmxlZC5wYXRjaCBiL2dkYi1hcmNoZXItcGllLWFk ZG9ucy1rZWVwLWRpc2FibGVkLnBhdGNoCmluZGV4IGU2N2MzMzYuLjY4YTZhMWEgMTAwNjQ0Ci0t LSBhL2dkYi1hcmNoZXItcGllLWFkZG9ucy1rZWVwLWRpc2FibGVkLnBhdGNoCisrKyBiL2dkYi1h cmNoZXItcGllLWFkZG9ucy1rZWVwLWRpc2FibGVkLnBhdGNoCkBAIC0xLDggKzEsOCBAQAotSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2JyZWFrcG9pbnQuYworSW5kZXg6IGdkYi03LjYu NTAuMjAxMzA3MzEtY3ZzL2dkYi9icmVha3BvaW50LmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41 LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL2JyZWFrcG9pbnQuYwkyMDEzLTAyLTE1IDIyOjMxOjM3LjAw MDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2JyZWFrcG9pbnQuYwky MDEzLTAyLTE1IDIyOjM3OjA4LjIxNjM4MTk4OCArMDEwMAotQEAgLTE2MDIwLDYgKzE2MDIwLDUw IEBAIGluaXRpYWxpemVfYnJlYWtwb2ludF9vcHMgKHZvaWQpCistLS0gZ2RiLTcuNi41MC4yMDEz MDczMS1jdnMub3JpZy9nZGIvYnJlYWtwb2ludC5jCTIwMTMtMDgtMDIgMTY6Mjk6MTYuMDY1NDAy MTE2ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2JyZWFrcG9pbnQuYwky MDEzLTA4LTAyIDE2OjI5OjE3LjA3MzQwMzQ1NiArMDIwMAorQEAgLTE1OTYzLDYgKzE1OTYzLDUw IEBAIGluaXRpYWxpemVfYnJlYWtwb2ludF9vcHMgKHZvaWQpCiAgc3RhdGljIHN0cnVjdCBjbWRf bGlzdF9lbGVtZW50ICplbmFibGVicmVha2xpc3QgPSBOVUxMOwogIAogIHZvaWQKQEAgLTUzLDIz ICs1MywyMyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvYnJlYWtwb2ludC5jCiAg X2luaXRpYWxpemVfYnJlYWtwb2ludCAodm9pZCkKICB7CiAgICBzdHJ1Y3QgY21kX2xpc3RfZWxl bWVudCAqYzsKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9icmVha3BvaW50LmgKK0lu ZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvYnJlYWtwb2ludC5oCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9icmVha3BvaW50LmgJMjAxMy0wMi0w MyAxNjo1NzowNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9i cmVha3BvaW50LmgJMjAxMy0wMi0xNSAyMjozNzoxOS4wMjUzOTU2OTMgKzAxMDAKLUBAIC0xNTU2 LDQgKzE1NTYsNyBAQCBleHRlcm4gdm9pZCBoYW5kbGVfc29saWJfZXZlbnQgKHZvaWQpOworLS0t IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2JyZWFrcG9pbnQuaAkyMDEzLTA4LTAy IDE2OjI5OjE3LjA3NDQwMzQ1NyArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dk Yi9icmVha3BvaW50LmgJMjAxMy0wOC0wMiAxNjoyOTozMC4yMjE0MjA4OTYgKzAyMDAKK0BAIC0x NTU1LDQgKzE1NTUsNyBAQCBleHRlcm4gdm9pZCBicmVha3BvaW50X2ZyZWVfb2JqZmlsZSAoc3Ry CiAgCi0gZXh0ZXJuIHZvaWQgYnJlYWtwb2ludF9mcmVlX29iamZpbGUgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlKTsKKyBleHRlcm4gY2hhciAqZXBfcGFyc2Vfb3B0aW9uYWxfaWZfY2xhdXNlIChj aGFyICoqYXJnKTsKICAKICtleHRlcm4gdm9pZCBicmVha3BvaW50c19yZWxvY2F0ZSAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUsCiArCQkJCSAgc3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAqZGVsdGEp OwogKwogICNlbmRpZiAvKiAhZGVmaW5lZCAoQlJFQUtQT0lOVF9IKSAqLwotSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAyMTUvZ2RiL29iamZpbGVzLmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMx LWN2cy9nZGIvb2JqZmlsZXMuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUu b3JpZy9nZGIvb2JqZmlsZXMuYwkyMDEzLTAyLTAzIDE2OjU3OjA3LjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL29iamZpbGVzLmMJMjAxMy0wMi0xNSAyMjozNzow OC4yMTczODE5OTAgKzAxMDAKLUBAIC04MzEsNiArODMxLDExIEBAIG9iamZpbGVfcmVsb2NhdGUx IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmkKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmln L2dkYi9vYmpmaWxlcy5jCTIwMTMtMDgtMDIgMTY6Mjk6MTYuMDY4NDAyMTIwICswMjAwCisrKysg Z2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL29iamZpbGVzLmMJMjAxMy0wOC0wMiAxNjoyOTox Ny4wNzU0MDM0NTggKzAyMDAKK0BAIC04NTEsNiArODUxLDExIEBAIG9iamZpbGVfcmVsb2NhdGUx IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmkKICAgICAgb2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnMt PnN5bV9yZWxvY2F0ZV9wcm9iZSAob2JqZmlsZSwKICAJCQkJCQkgICAgbmV3X29mZnNldHMsIGRl bHRhKTsKICAKCmRpZmYgLS1naXQgYS9nZGItYXJjaGVyLnBhdGNoIGIvZ2RiLWFyY2hlci5wYXRj aAppbmRleCBhYjA2NTdmLi45OGZmMGY2IDEwMDY0NAotLS0gYS9nZGItYXJjaGVyLnBhdGNoCisr KyBiL2dkYi1hcmNoZXIucGF0Y2gKQEAgLTIsMjAgKzIsMjAgQEAgaHR0cDovL3NvdXJjZXdhcmUu b3JnL2dkYi93aWtpL1Byb2plY3RBcmNoZXIKIGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9nZGIvd2lr aS9BcmNoZXJCcmFuY2hNYW5hZ2VtZW50CiAKIEdJVCBzbmFwc2hvdDoKLWNvbW1pdCBiMWY4YzY4 MjEzMDNmNmViMDg3ZmI3ZjU3NDA1NDgzYWM4ODEyMjI3Citjb21taXQgYTk4MGJlM2I5Y2M2Njc3 NGFkZmI5YTI1ZGE4MDVmNjVjZmVkNDI0NQogCi1icmFuY2ggamFua3JhdG9jaHZpbC9mZWRvcmEx OSAtIHRoZSBtZXJnZSBvZiBicmFuY2hlczoKK2JyYW5jaCBqYW5rcmF0b2NodmlsL2ZlZG9yYTIw IC0gdGhlIG1lcmdlIG9mIGJyYW5jaGVzOgogamFua3JhdG9jaHZpbC92bGEKIHRyb21leS9weXRo b24KIAogCiBkaWZmIC0tZ2l0IGEvUkVBRE1FLmFyY2hlciBiL1JFQURNRS5hcmNoZXIKIG5ldyBm aWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4xZjdhYjQ4CitpbmRleCAwMDAwMDAwLi4y MTM1N2U0CiAtLS0gL2Rldi9udWxsCiArKysgYi9SRUFETUUuYXJjaGVyCiBAQCAtMCwwICsxLDEz IEBACi0rTWVyZ2UgZm9yIEZlZG9yYSAxOTogaHR0cDovL3BrZ3MuZmVkb3JhcHJvamVjdC5vcmcv Y2dpdC9nZGIuZ2l0LworK01lcmdlIGZvciBGZWRvcmEgMjA6IGh0dHA6Ly9wa2dzLmZlZG9yYXBy b2plY3Qub3JnL2NnaXQvZ2RiLmdpdC8KICsKICtqYW5rcmF0b2NodmlsL3ZsYQogK3Ryb21leS9w eXRob24KQEAgLTI5LDEwICsyOSwxMCBAQCBpbmRleCAwMDAwMDAwLi4xZjdhYjQ4CiAraW1wbGVt ZW50YXRpb24gcGxhbjogICAgICAgICAgICAgaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi8y MDEyLTExL21zZzAwMDk0Lmh0bWwKICtleHBsYW5hdGlvbiBvZiBpdHMgbWVyZ2Ugc3RhdHVzOiBo dHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLzIwMTEtMDMvbXNnMDAwMjEuaHRtbAogZGlmZiAt LWdpdCBhL2dkYi9NYWtlZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5pbgotaW5kZXggZWQzMGRiNS4u NDM1NmJlNyAxMDA2NDQKK2luZGV4IDhmNGVlOWUuLmU5MTRkZmIgMTAwNjQ0CiAtLS0gYS9nZGIv TWFrZWZpbGUuaW4KICsrKyBiL2dkYi9NYWtlZmlsZS5pbgotQEAgLTEzMTMsNiArMTMxMywxMiBA QCBzdGFtcC1oOiAkKHNyY2RpcikvY29uZmlnLmluIGNvbmZpZy5zdGF0dXMKK0BAIC0xMzUxLDYg KzEzNTEsMTIgQEAgc3RhbXAtaDogJChzcmNkaXIpL2NvbmZpZy5pbiBjb25maWcuc3RhdHVzCiAg CSAgQ09ORklHX0xJTktTPSBcCiAgCSAgJChTSEVMTCkgY29uZmlnLnN0YXR1cwogIApAQCAtNDIs MTQgKzQyLDE0IEBAIGluZGV4IGVkMzBkYjUuLjQzNTZiZTcgMTAwNjQ0CiArCSAgQ09ORklHX0hF QURFUlM9IFwKICsJICAkKFNIRUxMKSBjb25maWcuc3RhdHVzCiArCi0gY29uZmlnLnN0YXR1czog JChzcmNkaXIpL2NvbmZpZ3VyZSBjb25maWd1cmUudGd0IGNvbmZpZ3VyZS5ob3N0CisgY29uZmln LnN0YXR1czogJChzcmNkaXIpL2NvbmZpZ3VyZSBjb25maWd1cmUudGd0IGNvbmZpZ3VyZS5ob3N0 IGRldmVsb3BtZW50LnNoCiAgCSQoU0hFTEwpIGNvbmZpZy5zdGF0dXMgLS1yZWNoZWNrCiAgCiBk aWZmIC0tZ2l0IGEvZ2RiL2FkYS1sYW5nLmMgYi9nZGIvYWRhLWxhbmcuYwotaW5kZXggNzVmMWMz ZC4uNjI0MzgxOCAxMDA2NDQKK2luZGV4IGRjNWYyYjYuLjVmZWFjNDkgMTAwNjQ0CiAtLS0gYS9n ZGIvYWRhLWxhbmcuYwogKysrIGIvZ2RiL2FkYS1sYW5nLmMKLUBAIC0xMjI4Nyw2ICsxMjI4Nyw3 IEBAIGFkYV9vcGVyYXRvcl9sZW5ndGggKGNvbnN0IHN0cnVjdCBleHByZXNzaW9uICpleHAsIGlu dCBwYywgaW50ICpvcGxlbnAsCitAQCAtMTIzMDksNiArMTIzMDksNyBAQCBhZGFfb3BlcmF0b3Jf bGVuZ3RoIChjb25zdCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcGMsIGludCAqb3BsZW5w LAogIAogIHN0YXRpYyBpbnQKICBhZGFfb3BlcmF0b3JfY2hlY2sgKHN0cnVjdCBleHByZXNzaW9u ICpleHAsIGludCBwb3MsCkBAIC01Nyw3ICs1Nyw3IEBAIGluZGV4IDc1ZjFjM2QuLjYyNDM4MTgg MTAwNjQ0CiAgCQkgICAgaW50ICgqb2JqZmlsZV9mdW5jKSAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUsIHZvaWQgKmRhdGEpLAogIAkJICAgIHZvaWQgKmRhdGEpCiAgewotQEAgLTEyMzAxLDEyICsx MjMwMiwxNSBAQCBhZGFfb3BlcmF0b3JfY2hlY2sgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGlu dCBwb3MsCitAQCAtMTIzMjMsMTIgKzEyMzI0LDE1IEBAIGFkYV9vcGVyYXRvcl9jaGVjayAoc3Ry dWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKICAJYnJlYWs7CiAgCiAgICAgICAgZGVmYXVs dDoKQEAgLTc2LDEwICs3NiwxMCBAQCBpbmRleCA3NWYxYzNkLi42MjQzODE4IDEwMDY0NAogICAg ICByZXR1cm4gMTsKICAKIGRpZmYgLS1naXQgYS9nZGIvYmxvY2suYyBiL2dkYi9ibG9jay5jCi1p bmRleCAyNjM4ZGU4Li5iMjk2YWUwIDEwMDY0NAoraW5kZXggNjQzZTE0NC4uNzRjNTE2YiAxMDA2 NDQKIC0tLSBhL2dkYi9ibG9jay5jCiArKysgYi9nZGIvYmxvY2suYwotQEAgLTY5MiwzICs2OTIs MjEgQEAgYmxvY2tfaXRlcl9tYXRjaF9uZXh0IChjb25zdCBjaGFyICpuYW1lLAorQEAgLTY5Mywz ICs2OTMsMjEgQEAgYmxvY2tfaXRlcl9tYXRjaF9uZXh0IChjb25zdCBjaGFyICpuYW1lLAogIAog ICAgcmV0dXJuIGJsb2NrX2l0ZXJfbWF0Y2hfc3RlcCAoaXRlcmF0b3IsIG5hbWUsIGNvbXBhcmUs IDApOwogIH0KQEAgLTExMywxMCArMTEzLDEwIEBAIGluZGV4IDAyZTdlOGIuLjI5MzE0MDEgMTAw NjQ0CiArCiAgI2VuZGlmIC8qIEJMT0NLX0ggKi8KIGRpZmYgLS1naXQgYS9nZGIvYnJlYWtwb2lu dC5jIGIvZ2RiL2JyZWFrcG9pbnQuYwotaW5kZXggZDZmOGJjNS4uOGExNDIyNCAxMDA2NDQKK2lu ZGV4IDFlODk0MDcuLjFmNGRlMzMgMTAwNjQ0CiAtLS0gYS9nZGIvYnJlYWtwb2ludC5jCiArKysg Yi9nZGIvYnJlYWtwb2ludC5jCi1AQCAtMTU2NTMsNiArMTU2NTMsMjQgQEAgYWxsX3RyYWNlcG9p bnRzICh2b2lkKQorQEAgLTE1NjA1LDYgKzE1NjA1LDI0IEBAIGFsbF90cmFjZXBvaW50cyAodm9p ZCkKICAgIHJldHVybiB0cF92ZWM7CiAgfQogIApAQCAtMTQxLDcgKzE0MSw3IEBAIGluZGV4IGQ2 ZjhiYzUuLjhhMTQyMjQgMTAwNjQ0CiAgDAogIC8qIFRoaXMgaGVscCBzdHJpbmcgaXMgdXNlZCBm b3IgdGhlIGJyZWFrLCBoYnJlYWssIHRicmVhayBhbmQgdGhicmVhawogICAgIGNvbW1hbmRzLiAg SXQgaXMgZGVmaW5lZCBhcyBhIG1hY3JvIHRvIHByZXZlbnQgZHVwbGljYXRpb24uCi1AQCAtMTY2 MzYsNCArMTY2NTQsNyBAQCBhZ2VudC1wcmludGYgXCJwcmludGYgZm9ybWF0IHN0cmluZ1wiLCBh cmcxLCBhcmcyLCBhcmczLCAuLi4sIGFyZ25cblwKK0BAIC0xNjU2OCw0ICsxNjU4Niw3IEBAIGFn ZW50LXByaW50ZiBcInByaW50ZiBmb3JtYXQgc3RyaW5nXCIsIGFyZzEsIGFyZzIsIGFyZzMsIC4u LiwgYXJnblxuXAogICAgYXV0b21hdGljX2hhcmR3YXJlX2JyZWFrcG9pbnRzID0gMTsKICAKICAg IG9ic2VydmVyX2F0dGFjaF9hYm91dF90b19wcm9jZWVkIChicmVha3BvaW50X2Fib3V0X3RvX3By b2NlZWQpOwpAQCAtMTUwLDcgKzE1MCw3IEBAIGluZGV4IGQ2ZjhiYzUuLjhhMTQyMjQgMTAwNjQ0 CiArI2VuZGlmCiAgfQogZGlmZiAtLWdpdCBhL2dkYi9jLXR5cGVwcmludC5jIGIvZ2RiL2MtdHlw ZXByaW50LmMKLWluZGV4IGNhOGQ4OWIuLjgxMWFkNzIgMTAwNjQ0CitpbmRleCBiZjQ1NjRmLi5l OGQwMjgxIDEwMDY0NAogLS0tIGEvZ2RiL2MtdHlwZXByaW50LmMKICsrKyBiL2dkYi9jLXR5cGVw cmludC5jCiBAQCAtNjg5LDcgKzY4OSwxMyBAQCBjX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXgg KHN0cnVjdCB0eXBlICp0eXBlLApAQCAtMTY4LDIwICsxNjgsMzMgQEAgaW5kZXggY2E4ZDg5Yi4u ODExYWQ3MiAxMDA2NDQKICAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIlcyIsIAogIAkJ CSAgICBwbG9uZ2VzdCAoaGlnaF9ib3VuZCAtIGxvd19ib3VuZCArIDEpKTsKICAJZnByaW50Zl9m aWx0ZXJlZCAoc3RyZWFtLCAoaXNfdmVjdG9yID8gIikpKSIgOiAiXSIpKTsKK2RpZmYgLS1naXQg YS9nZGIvY2xlYW51cHMuYyBiL2dkYi9jbGVhbnVwcy5jCitpbmRleCA4OThlNTI2Li4xOGViYWVl IDEwMDY0NAorLS0tIGEvZ2RiL2NsZWFudXBzLmMKKysrKyBiL2dkYi9jbGVhbnVwcy5jCitAQCAt MjYxLDkgKzI2MSwxMSBAQCBzYXZlX2ZpbmFsX2NsZWFudXBzICh2b2lkKQorIHN0YXRpYyB2b2lk CisgcmVzdG9yZV9teV9jbGVhbnVwcyAoc3RydWN0IGNsZWFudXAgKipwbXlfY2hhaW4sIHN0cnVj dCBjbGVhbnVwICpjaGFpbikKKyB7CisrI2lmIDAgLyogYXJjaGVyLWphbmtyYXRvY2h2aWwtdmxh ICovCisgICBpZiAoKnBteV9jaGFpbiAhPSBTRU5USU5FTF9DTEVBTlVQKQorICAgICBpbnRlcm5h bF93YXJuaW5nIChfX0ZJTEVfXywgX19MSU5FX18sCisgCQkgICAgICBfKCJyZXN0b3JlX215X2Ns ZWFudXBzIGhhcyBmb3VuZCBhIHN0YWxlIGNsZWFudXAiKSk7CisrI2VuZGlmCisgCisgICAqcG15 X2NoYWluID0gY2hhaW47CisgfQogZGlmZiAtLWdpdCBhL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtl ZmlsZS5pbiBiL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbgotaW5kZXggZDk4YWM3Ny4u ZjZhNGI5OSAxMDA2NDQKK2luZGV4IGRlYzYyMDcuLmZiYjRkYzAgMTAwNjQ0CiAtLS0gYS9nZGIv ZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUuaW4KICsrKyBiL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtl ZmlsZS5pbgotQEAgLTUzLDE2ICs1MywyMSBAQCBQWVRIT05fRElSID0gcHl0aG9uCi0gUFlUSE9O X0lOU1RBTExfRElSID0gJChERVNURElSKSQoR0RCX0RBVEFESVIpLyQoUFlUSE9OX0RJUikKLSBQ WVRIT05fRklMRVMgPSBcCi0gCWdkYi9fX2luaXRfXy5weSBcCi0tCWdkYi90eXBlcy5weSBcCi0t CWdkYi9wcmludGluZy5weSBcCi0tCWdkYi9wcm9tcHQucHkgXAorQEAgLTYxLDEzICs2MSwyMSBA QCBQWVRIT05fRklMRVMgPSBcCisgCWdkYi9wcmludGluZy5weSBcCisgCWdkYi9wcm9tcHQucHkg XAogIAlnZGIvY29tbWFuZC9fX2luaXRfXy5weSBcCiArCWdkYi9jb21tYW5kL2lnbm9yZV9lcnJv cnMucHkgXAogKwlnZGIvY29tbWFuZC9wYWhvbGUucHkgXAorIAlnZGIvY29tbWFuZC9mcmFtZV9m aWx0ZXJzLnB5IFwKICAJZ2RiL2NvbW1hbmQvdHlwZV9wcmludGVycy5weSBcCiAgCWdkYi9jb21t YW5kL3ByZXR0eV9wcmludGVycy5weSBcCiAgCWdkYi9jb21tYW5kL3Byb21wdC5weSBcCkBAIC0x OTYsMTMgKzIwOSwxMyBAQCBpbmRleCBkOThhYzc3Li5mNmE0Yjk5IDEwMDY0NAogKwlnZGIvcHJv bXB0LnB5IFwKICsJZ2RiL3R5cGVzLnB5CiAgCi0gRkxBR1NfVE9fUEFTUyA9IFwKLSAJInByZWZp eD0kKHByZWZpeCkiIFwKKyBTWVNURU1fR0RCSU5JVF9ESVIgPSBzeXN0ZW0tZ2RiaW5pdAorIFNZ U1RFTV9HREJJTklUX0lOU1RBTExfRElSID0gJChERVNURElSKSQoR0RCX0RBVEFESVIpLyQoU1lT VEVNX0dEQklOSVRfRElSKQogZGlmZiAtLWdpdCBhL2dkYi9kb2MvZ2RiLnRleGluZm8gYi9nZGIv ZG9jL2dkYi50ZXhpbmZvCi1pbmRleCBhNjA3MTY2Li42OTEzNjI4IDEwMDY0NAoraW5kZXggY2Iz OTNlOC4uMWRmY2EyMiAxMDA2NDQKIC0tLSBhL2dkYi9kb2MvZ2RiLnRleGluZm8KICsrKyBiL2dk Yi9kb2MvZ2RiLnRleGluZm8KLUBAIC0xMjE2LDYgKzEyMTYsMTYgQEAgZm9yIHJlbW90ZSBkZWJ1 Z2dpbmcuCitAQCAtMTIyMSw2ICsxMjIxLDE2IEBAIGZvciByZW1vdGUgZGVidWdnaW5nLgogIFJ1 biB1c2luZyBAdmFye2RldmljZX0gZm9yIHlvdXIgcHJvZ3JhbSdzIHN0YW5kYXJkIGlucHV0IGFu ZCBvdXRwdXQuCiAgQGMgRklYTUU6IGtpbmdkb24gdGhpbmtzIHRoZXJlIGlzIG1vcmUgdG8gLXR0 eS4gIEludmVzdGlnYXRlLgogIApAQCAtMjE5LDcgKzIzMiw3IEBAIGluZGV4IGE2MDcxNjYuLjY5 MTM2MjggMTAwNjQ0CiAgQGMgcmVzb2x2ZSB0aGUgc2l0dWF0aW9uIG9mIHRoZXNlIGV2ZW50dWFs bHkKICBAaXRlbSAtdHVpCiAgQGNpbmRleCBAY29kZXstLXR1aX0KLUBAIC0yMjgwNCw4ICsyMjgx NCw2IEBAIGNvbnRhaW5pbmcgQGNvZGV7ZW5kfS4gIEZvciBleGFtcGxlOgorQEAgLTIzMTg5LDgg KzIzMTk5LDYgQEAgY29udGFpbmluZyBAY29kZXtlbmR9LiAgRm9yIGV4YW1wbGU6CiAgCiAgQHNt YWxsZXhhbXBsZQogIChAdmFsdWV7R0RCUH0pIHB5dGhvbgpAQCAtMjI4LDcgKzI0MSw3IEBAIGlu ZGV4IGE2MDcxNjYuLjY5MTM2MjggMTAwNjQ0CiAgPnByaW50IDIzCiAgPmVuZAogIDIzCi1AQCAt MjI4MTksNiArMjI4MjcsMTQgQEAgY29udHJvbGxlZCB1c2luZyBAY29kZXtzZXQgcHl0aG9uIHBy aW50LXN0YWNrfTogaWYgQGNvZGV7ZnVsbH0sIHRoZW4KK0BAIC0yMzIwNCw2ICsyMzIxMiwxNCBA QCBjb250cm9sbGVkIHVzaW5nIEBjb2Rle3NldCBweXRob24gcHJpbnQtc3RhY2t9OiBpZiBAY29k ZXtmdWxsfSwgdGhlbgogIGZ1bGwgUHl0aG9uIHN0YWNrIHByaW50aW5nIGlzIGVuYWJsZWQ7IGlm IEBjb2Rle25vbmV9LCB0aGVuIFB5dGhvbiBzdGFjawogIGFuZCBtZXNzYWdlIHByaW50aW5nIGlz IGRpc2FibGVkOyBpZiBAY29kZXttZXNzYWdlfSwgdGhlIGRlZmF1bHQsIG9ubHkKICB0aGUgbWVz c2FnZSBjb21wb25lbnQgb2YgdGhlIGVycm9yIGlzIHByaW50ZWQuCkBAIC0yNDMsMjYgKzI1Niwx MSBAQCBpbmRleCBhNjA3MTY2Li42OTEzNjI4IDEwMDY0NAogIEBlbmQgdGFibGUKICAKICBJdCBp cyBhbHNvIHBvc3NpYmxlIHRvIGV4ZWN1dGUgYSBQeXRob24gc2NyaXB0IGZyb20gdGhlIEB2YWx1 ZXtHREJOfQotQEAgLTIyODQwLDYgKzIyODU2LDE0IEBAIGFuZCB0aHVzIGlzIGFsd2F5cyBhdmFp bGFibGUuCi0gQGNpbmRleCBweXRob24gYXBpCi0gQGNpbmRleCBwcm9ncmFtbWluZyBpbiBweXRo b24KLSAKLStZb3UgY2FuIGdldCBxdWljayBvbmxpbmUgaGVscCBmb3IgQHZhbHVle0dEQk59J3Mg UHl0aG9uIEFQSSBieSBpc3N1aW5nCi0rdGhlIGNvbW1hbmQgQHd7QGtiZHtweXRob24gaGVscCAo Z2RiKX19LgotKwotK0Z1bmN0aW9ucyBhbmQgbWV0aG9kcyB3aGljaCBoYXZlIHR3byBvciBtb3Jl IG9wdGlvbmFsIGFyZ3VtZW50cyBhbGxvdwotK3RoZW0gdG8gYmUgc3BlY2lmaWVkIHVzaW5nIGtl eXdvcmQgc3ludGF4LiAgVGhpcyBhbGxvd3MgcGFzc2luZyBzb21lCi0rb3B0aW9uYWwgYXJndW1l bnRzIHdoaWxlIHNraXBwaW5nIG90aGVycy4gIEV4YW1wbGU6Ci0rQHd7QGNvZGV7Z2RiLnNvbWVf ZnVuY3Rpb24gKCdmb28nLCBiYXIgPSAxLCBiYXogPSAyKX19LgotKwotIEBjaW5kZXggcHl0aG9u IHN0ZG91dAotIEBjaW5kZXggcHl0aG9uIHBhZ2luYXRpb24KLSBBdCBzdGFydHVwLCBAdmFsdWV7 R0RCTn0gb3ZlcnJpZGVzIFB5dGhvbidzIEBjb2Rle3N5cy5zdGRvdXR9IGFuZAogZGlmZiAtLWdp dCBhL2dkYi9kb2MvZ2RiaW50LnRleGluZm8gYi9nZGIvZG9jL2dkYmludC50ZXhpbmZvCi1pbmRl eCA0YTc1YzI2Li45MTQ0NmZlIDEwMDY0NAoraW5kZXggNjA4MDVhZC4uNTQxMTAxMiAxMDA2NDQK IC0tLSBhL2dkYi9kb2MvZ2RiaW50LnRleGluZm8KICsrKyBiL2dkYi9kb2MvZ2RiaW50LnRleGlu Zm8KLUBAIC0yMTAxLDYgKzIxMDEsMTggQEAgdGltZSwgYW5kIHNvIHdlIGF0dGVtcHQgdG8gaGFu ZGxlIHN5bWJvbHMgaW5jcmVtZW50YWxseS4gIEZvciBpbnN0YW5jZSwKK0BAIC0yMTQ2LDYgKzIx NDYsMTggQEAgdGltZSwgYW5kIHNvIHdlIGF0dGVtcHQgdG8gaGFuZGxlIHN5bWJvbHMgaW5jcmVt ZW50YWxseS4gIEZvciBpbnN0YW5jZSwKICB3ZSBjcmVhdGUgQGRmbntwYXJ0aWFsIHN5bWJvbCB0 YWJsZXN9IGNvbnNpc3Rpbmcgb2Ygb25seSBzZWxlY3RlZAogIHN5bWJvbHMsIGFuZCBvbmx5IGV4 cGFuZCB0aGVtIHRvIGZ1bGwgc3ltYm9sIHRhYmxlcyB3aGVuIG5lY2Vzc2FyeS4KICAKQEAgLTI4 MSw3ICsyNzksNyBAQCBpbmRleCA0YTc1YzI2Li45MTQ0NmZlIDEwMDY0NAogIEBzZWN0aW9uIFN5 bWJvbCBSZWFkaW5nCiAgCiAgQGNpbmRleCBzeW1ib2wgcmVhZGluZwotQEAgLTIxOTMsNiArMjIw NSw3IEBAIHN5bXRhYi4gIFVwb24gcmV0dXJuLCBAY29kZXtwc3QtPnJlYWRpbn0gc2hvdWxkIGhh dmUgYmVlbiBzZXQgdG8gMSwgYW5kCitAQCAtMjIzOCw2ICsyMjUwLDcgQEAgc3ltdGFiLiAgVXBv biByZXR1cm4sIEBjb2Rle3BzdC0+cmVhZGlufSBzaG91bGQgaGF2ZSBiZWVuIHNldCB0byAxLCBh bmQKICB6ZXJvIGlmIHRoZXJlIHdlcmUgbm8gc3ltYm9scyBpbiB0aGF0IHBhcnQgb2YgdGhlIHN5 bWJvbCBmaWxlLgogIEBlbmQgdGFibGUKICAKQEAgLTI4OSw3ICsyODcsNyBAQCBpbmRleCA0YTc1 YzI2Li45MTQ0NmZlIDEwMDY0NAogIEBzZWN0aW9uIFBhcnRpYWwgU3ltYm9sIFRhYmxlcwogIAog IEB2YWx1ZXtHREJOfSBoYXMgdGhyZWUgdHlwZXMgb2Ygc3ltYm9sIHRhYmxlczoKLUBAIC0yMjk0 LDYgKzIzMDcsNyBAQCBhbmQgcGFydGlhbCBzeW1ib2wgdGFibGVzIGJlaGluZCBhIHNldCBvZiBm dW5jdGlvbiBwb2ludGVycyBrbm93biBhcworQEAgLTIzMzksNiArMjM1Miw3IEBAIGFuZCBwYXJ0 aWFsIHN5bWJvbCB0YWJsZXMgYmVoaW5kIGEgc2V0IG9mIGZ1bmN0aW9uIHBvaW50ZXJzIGtub3du IGFzCiAgdGhlIEBkZm57cXVpY2sgc3ltYm9sIGZ1bmN0aW9uc30uICBUaGVzZSBhcmUgZG9jdW1l bnRlZCBpbgogIEBmaWxle3N5bWZpbGUuaH0uCiAgCkBAIC0yOTcsNyArMjk1LDcgQEAgaW5kZXgg NGE3NWMyNi4uOTE0NDZmZSAxMDA2NDQKICBAc2VjdGlvbiBUeXBlcwogIAogIEB1bm51bWJlcmVk c3Vic2VjIEZ1bmRhbWVudGFsIFR5cGVzIChlLmcuLCBAY29kZXtGVF9WT0lEfSwgQGNvZGV7RlRf Qk9PTEVBTn0pLgotQEAgLTIzMTYsNiArMjMzMCw3IEBAIHR5cGVzIG1hcCB0byBvbmUgQGNvZGV7 VFlQRV9DT0RFXyp9IHR5cGUsIGFuZCBhcmUgZGlzdGluZ3Vpc2hlZCBieQorQEAgLTIzNjEsNiAr MjM3NSw3IEBAIHR5cGVzIG1hcCB0byBvbmUgQGNvZGV7VFlQRV9DT0RFXyp9IHR5cGUsIGFuZCBh cmUgZGlzdGluZ3Vpc2hlZCBieQogIG90aGVyIG1lbWJlcnMgb2YgdGhlIHR5cGUgc3RydWN0LCBz dWNoIGFzIHdoZXRoZXIgdGhlIHR5cGUgaXMgc2lnbmVkCiAgb3IgdW5zaWduZWQsIGFuZCBob3cg bWFueSBiaXRzIGl0IHVzZXMuCiAgCkBAIC0zMDUsNyArMzAzLDcgQEAgaW5kZXggNGE3NWMyNi4u OTE0NDZmZSAxMDA2NDQKICBAdW5udW1iZXJlZHN1YnNlYyBCdWlsdGluIFR5cGVzIChlLmcuLCBA Y29kZXtidWlsdGluX3R5cGVfdm9pZH0sIEBjb2Rle2J1aWx0aW5fdHlwZV9jaGFyfSkuCiAgCiAg VGhlc2UgYXJlIGluc3RhbmNlcyBvZiB0eXBlIHN0cnVjdHMgdGhhdCByb3VnaGx5IGNvcnJlc3Bv bmQgdG8KLUBAIC0yMzMwLDYgKzIzNDUsNyBAQCBvbmx5IG9uZSBpbnN0YW5jZSBleGlzdHMsIHdo aWxlIEBmaWxle2MtbGFuZy5jfSBidWlsZHMgYXMgbWFueQorQEAgLTIzNzUsNiArMjM5MCw3IEBA IG9ubHkgb25lIGluc3RhbmNlIGV4aXN0cywgd2hpbGUgQGZpbGV7Yy1sYW5nLmN9IGJ1aWxkcyBh cyBtYW55CiAgQGNvZGV7VFlQRV9DT0RFX0lOVH0gdHlwZXMgYXMgbmVlZGVkLCB3aXRoIGVhY2gg b25lIGFzc29jaWF0ZWQgd2l0aAogIHNvbWUgcGFydGljdWxhciBvYmpmaWxlLgogIApAQCAtMzEz LDcgKzMxMSw3IEBAIGluZGV4IDRhNzVjMjYuLjkxNDQ2ZmUgMTAwNjQ0CiAgQHNlY3Rpb24gT2Jq ZWN0IEZpbGUgRm9ybWF0cwogIEBjaW5kZXggb2JqZWN0IGZpbGUgZm9ybWF0cwogIAotQEAgLTI0 MTUsNiArMjQzMSw3IEBAIFNPTSwgd2hpY2ggaXMgYSBjcm9zcy1sYW5ndWFnZSBBQkkpLgorQEAg LTI0NjAsNiArMjQ3Niw3IEBAIFNPTSwgd2hpY2ggaXMgYSBjcm9zcy1sYW5ndWFnZSBBQkkpLgog IAogIFRoZSBTT00gcmVhZGVyIGlzIGluIEBmaWxle3NvbXJlYWQuY30uCiAgCkBAIC0zMjEsNyAr MzE5LDcgQEAgaW5kZXggNGE3NWMyNi4uOTE0NDZmZSAxMDA2NDQKICBAc2VjdGlvbiBEZWJ1Z2dp bmcgRmlsZSBGb3JtYXRzCiAgCiAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBjaGFyYWN0ZXJpc3Rp Y3Mgb2YgZGVidWdnaW5nIGluZm9ybWF0aW9uIHRoYXQKLUBAIC0yNDg2LDYgKzI1MDMsNyBAQCBE V0FSRiAzIGlzIGFuIGltcHJvdmVkIHZlcnNpb24gb2YgRFdBUkYgMi4KK0BAIC0yNTMxLDYgKzI1 NDgsNyBAQCBEV0FSRiAzIGlzIGFuIGltcHJvdmVkIHZlcnNpb24gb2YgRFdBUkYgMi4KICBAY2lu ZGV4IFNPTSBkZWJ1Z2dpbmcgaW5mbwogIExpa2UgQ09GRiwgdGhlIFNPTSBkZWZpbml0aW9uIGlu Y2x1ZGVzIGRlYnVnZ2luZyBpbmZvcm1hdGlvbi4KICAKQEAgLTMyOSw3ICszMjcsNyBAQCBpbmRl eCA0YTc1YzI2Li45MTQ0NmZlIDEwMDY0NAogIEBzZWN0aW9uIEFkZGluZyBhIE5ldyBTeW1ib2wg UmVhZGVyIHRvIEB2YWx1ZXtHREJOfQogIAogIEBjaW5kZXggYWRkaW5nIGRlYnVnZ2luZyBpbmZv IHJlYWRlcgotQEAgLTI1MDgsNiArMjUyNiw3IEBAIHdpbGwgb25seSBldmVyIGJlIGltcGxlbWVu dGVkIGJ5IG9uZSBvYmplY3QgZmlsZSBmb3JtYXQgbWF5IGJlIGNhbGxlZAorQEAgLTI1NTMsNiAr MjU3MSw3IEBAIHdpbGwgb25seSBldmVyIGJlIGltcGxlbWVudGVkIGJ5IG9uZSBvYmplY3QgZmls ZSBmb3JtYXQgbWF5IGJlIGNhbGxlZAogIGRpcmVjdGx5LiAgVGhpcyBpbnRlcmZhY2Ugc2hvdWxk IGJlIGRlc2NyaWJlZCBpbiBhIGZpbGUKICBAZmlsZXtiZmQvbGliQHZhcnt4eXp9Lmh9LCB3aGlj aCBpcyBpbmNsdWRlZCBieSBAdmFsdWV7R0RCTn0uCiAgCkBAIC0zMzcsNyArMzM1LDcgQEAgaW5k ZXggNGE3NWMyNi4uOTE0NDZmZSAxMDA2NDQKICBAc2VjdGlvbiBNZW1vcnkgTWFuYWdlbWVudCBm b3IgU3ltYm9sIEZpbGVzCiAgCiAgTW9zdCBtZW1vcnkgYXNzb2NpYXRlZCB3aXRoIGEgbG9hZGVk IHN5bWJvbCBmaWxlIGlzIHN0b3JlZCBvbgotQEAgLTI1MTksMTAgKzI1MzgsNDUgQEAgcmVsZWFz ZWQgd2hlbiB0aGUgb2JqZmlsZSBpcyB1bmxvYWRlZCBvciByZWxvYWRlZC4gIFRoZXJlZm9yZSBv bmUKK0BAIC0yNTY0LDEwICsyNTgzLDQ1IEBAIHJlbGVhc2VkIHdoZW4gdGhlIG9iamZpbGUgaXMg dW5sb2FkZWQgb3IgcmVsb2FkZWQuICBUaGVyZWZvcmUgb25lCiAgb2JqZmlsZSBtdXN0IG5vdCBy ZWZlcmVuY2Ugc3ltYm9sIG9yIHR5cGUgZGF0YSBmcm9tIGFub3RoZXIgb2JqZmlsZTsKICB0aGV5 IGNvdWxkIGJlIHVubG9hZGVkIGF0IGRpZmZlcmVudCB0aW1lcy4KICAKQEAgLTQ0MCwxMCArNDM4 LDEwIEBAIGluZGV4IGU4NTQ4NmEuLmU3YWM3OTkgMTAwNjQ0CiAgCiAgLyogVGhlIGxvY2F0aW9u IG9mIGEgdmFsdWUuICAqLwogZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJsb2MuYyBiL2dkYi9kd2Fy ZjJsb2MuYwotaW5kZXggOGE2MWFlNi4uNDUxYTc1OSAxMDA2NDQKK2luZGV4IDAyYWZjZGYuLjVh MjE2MjkgMTAwNjQ0CiAtLS0gYS9nZGIvZHdhcmYybG9jLmMKICsrKyBiL2dkYi9kd2FyZjJsb2Mu YwotQEAgLTI5OCw2ICsyOTgsOSBAQCBzdHJ1Y3QgZHdhcmZfZXhwcl9iYXRvbgorQEAgLTMwNiw2 ICszMDYsOSBAQCBzdHJ1Y3QgZHdhcmZfZXhwcl9iYXRvbgogIHsKICAgIHN0cnVjdCBmcmFtZV9p bmZvICpmcmFtZTsKICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdTsKQEAgLTQ1 Myw0MiArNDUxLDcgQEAgaW5kZXggOGE2MWFlNi4uNDUxYTc1OSAxMDA2NDQKICB9OwogIAogIC8q IEhlbHBlciBmdW5jdGlvbnMgZm9yIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYy4gICovCi1AQCAt MzYxLDE2ICszNjQsMTQgQEAgc3RhdGljIHZvaWQKLSBkd2FyZl9leHByX2ZyYW1lX2Jhc2VfMSAo c3RydWN0IHN5bWJvbCAqZnJhbWVmdW5jLCBDT1JFX0FERFIgcGMsCi0gCQkJIGNvbnN0IGdkYl9i eXRlICoqc3RhcnQsIHNpemVfdCAqbGVuZ3RoKQotIHsKLS0gIGlmIChTWU1CT0xfTE9DQVRJT05f QkFUT04gKGZyYW1lZnVuYykgPT0gTlVMTCkKLS0gICAgKmxlbmd0aCA9IDA7Ci0tICBlbHNlIGlm IChTWU1CT0xfQ09NUFVURURfT1BTIChmcmFtZWZ1bmMpID09ICZkd2FyZjJfbG9jbGlzdF9mdW5j cykKLSsgIGlmIChTWU1CT0xfQ09NUFVURURfT1BTIChmcmFtZWZ1bmMpID09ICZkd2FyZjJfbG9j bGlzdF9mdW5jcykKLSAgICAgewotICAgICAgIHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbiAq c3ltYmF0b247Ci0gCi0gICAgICAgc3ltYmF0b24gPSBTWU1CT0xfTE9DQVRJT05fQkFUT04gKGZy YW1lZnVuYyk7Ci0gICAgICAgKnN0YXJ0ID0gZHdhcmYyX2ZpbmRfbG9jYXRpb25fZXhwcmVzc2lv biAoc3ltYmF0b24sIGxlbmd0aCwgcGMpOwotICAgICB9Ci0tICBlbHNlCi0rICBlbHNlIGlmIChT WU1CT0xfQ09NUFVURURfT1BTIChmcmFtZWZ1bmMpID09ICZkd2FyZjJfbG9jZXhwcl9mdW5jcykK LSAgICAgewotICAgICAgIHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqc3ltYmF0b247Ci0g Ci1AQCAtMzgzLDEwICszODQsMjMgQEAgZHdhcmZfZXhwcl9mcmFtZV9iYXNlXzEgKHN0cnVjdCBz eW1ib2wgKmZyYW1lZnVuYywgQ09SRV9BRERSIHBjLAotICAgICAgIGVsc2UKLSAJKmxlbmd0aCA9 IDA7Ci0gICAgIH0KLSsgIGVsc2UgaWYgKFNZTUJPTF9DT01QVVRFRF9PUFMgKGZyYW1lZnVuYykg PT0gJmR3YXJmMl9taXNzaW5nX2Z1bmNzKQotKyAgICB7Ci0rICAgICAgc3RydWN0IGR3YXJmMl9s b2NleHByX2JhdG9uICpzeW1iYXRvbjsKLSsKLSsgICAgICBzeW1iYXRvbiA9IFNZTUJPTF9MT0NB VElPTl9CQVRPTiAoZnJhbWVmdW5jKTsKLSsgICAgICBnZGJfYXNzZXJ0IChzeW1iYXRvbiA9PSBO VUxMKTsKLSsgICAgICAqbGVuZ3RoID0gMDsKLSsgICAgfQotKyAgZWxzZQotKyAgICBpbnRlcm5h bF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLAotKwkJICAgIF8oIlVuc3VwcG9ydGVkIFNZTUJP TF9DT01QVVRFRF9PUFMgJXAgZm9yIFwiJXNcIiIpLAotKwkJICAgIFNZTUJPTF9DT01QVVRFRF9P UFMgKGZyYW1lZnVuYyksCi0rCQkgICAgU1lNQk9MX1BSSU5UX05BTUUgKGZyYW1lZnVuYykpOwor QEAgLTQyMSw3ICs0MjQsNyBAQCBkd2FyZl9leHByX2ZyYW1lX2Jhc2VfMSAoc3RydWN0IHN5bWJv bCAqZnJhbWVmdW5jLCBDT1JFX0FERFIgcGMsCiAgCiAgICBpZiAoKmxlbmd0aCA9PSAwKQogICAg ICBlcnJvciAoXygiQ291bGQgbm90IGZpbmQgdGhlIGZyYW1lIGJhc2UgZm9yIFwiJXNcIi4iKSwK QEAgLTQ5Nyw3ICs0NjAsNyBAQCBpbmRleCA4YTYxYWU2Li40NTFhNzU5IDEwMDY0NAogIH0KICAK ICAvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYy4gIENvbXB1 dGVzIHRoZSBDRkEgZm9yCi1AQCAtNDUzLDYgKzQ2Nyw4NSBAQCBkd2FyZl9leHByX2R3YXJmX2Nh bGwgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwgY3Vfb2Zmc2V0IGRpZV9vZmZzZXQp CitAQCAtNDg4LDYgKzQ5MSw4NSBAQCBkd2FyZl9leHByX2R3YXJmX2NhbGwgKHN0cnVjdCBkd2Fy Zl9leHByX2NvbnRleHQgKmN0eCwgY3Vfb2Zmc2V0IGRpZV9vZmZzZXQpCiAgCQkgICAgIGN0eC0+ ZnVuY3MtPmdldF9mcmFtZV9wYywgY3R4LT5iYXRvbik7CiAgfQogIApAQCAtNTgzLDcgKzU0Niw3 IEBAIGluZGV4IDhhNjFhZTYuLjQ1MWE3NTkgMTAwNjQ0CiAgLyogQ2FsbGJhY2sgZnVuY3Rpb24g Zm9yIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYy4gICovCiAgCiAgc3RhdGljIHN0cnVjdCB0eXBl ICoKLUBAIC0xMTU2LDEwICsxMjQ5LDEyIEBAIGR3YXJmX2V4cHJfcHVzaF9kd2FyZl9yZWdfZW50 cnlfdmFsdWUgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwKK0BAIC0xMjAyLDEwICsx Mjg0LDEyIEBAIGR3YXJmX2V4cHJfcHVzaF9kd2FyZl9yZWdfZW50cnlfdmFsdWUgKHN0cnVjdCBk d2FyZl9leHByX2NvbnRleHQgKmN0eCwKICAKICAgIHNhdmVkX2N0eC5nZGJhcmNoID0gY3R4LT5n ZGJhcmNoOwogICAgc2F2ZWRfY3R4LmFkZHJfc2l6ZSA9IGN0eC0+YWRkcl9zaXplOwpAQCAtNTk2 LDcgKzU1OSw3IEBAIGluZGV4IDhhNjFhZTYuLjQ1MWE3NTkgMTAwNjQ0CiAgICBjdHgtPm9mZnNl dCA9IGR3YXJmMl9wZXJfY3VfdGV4dF9vZmZzZXQgKGJhdG9uX2xvY2FsLnBlcl9jdSk7CiAgICBj dHgtPmJhdG9uID0gJmJhdG9uX2xvY2FsOwogIAotQEAgLTExNjcsMTAgKzEyNjIsOTUgQEAgZHdh cmZfZXhwcl9wdXNoX2R3YXJmX3JlZ19lbnRyeV92YWx1ZSAoc3RydWN0IGR3YXJmX2V4cHJfY29u dGV4dCAqY3R4LAorQEAgLTEyMTMsMTAgKzEyOTcsOTUgQEAgZHdhcmZfZXhwcl9wdXNoX2R3YXJm X3JlZ19lbnRyeV92YWx1ZSAoc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4LAogIAogICAg Y3R4LT5nZGJhcmNoID0gc2F2ZWRfY3R4LmdkYmFyY2g7CiAgICBjdHgtPmFkZHJfc2l6ZSA9IHNh dmVkX2N0eC5hZGRyX3NpemU7CkBAIC02OTIsOSArNjU1LDkgQEAgaW5kZXggOGE2MWFlNi4uNDUx YTc1OSAxMDA2NDQKICAvKiBDYWxsYmFjayBmdW5jdGlvbiBmb3IgZHdhcmYyX2V2YWx1YXRlX2xv Y19kZXNjLgogICAgIEZldGNoIHRoZSBhZGRyZXNzIGluZGV4ZWQgYnkgRFdfT1BfR05VX2FkZHJf aW5kZXguICAqLwogIAotQEAgLTIxMDYsMjIgKzIyODYsNiBAQCBpbnZhbGlkX3N5bnRoZXRpY19w b2ludGVyICh2b2lkKQotIAkgICAicmVmZXJlbmNlZCB2aWEgc3ludGhldGljIHBvaW50ZXIiKSk7 Ci0gfQorQEAgLTIxNzcsMjIgKzIzNDYsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGx2YWxfZnVu Y3MgcGllY2VkX3ZhbHVlX2Z1bmNzID0geworICAgZnJlZV9waWVjZWRfdmFsdWVfY2xvc3VyZQor IH07CiAgCiAtLyogVmlydHVhbCBtZXRob2QgdGFibGUgZm9yIGR3YXJmMl9ldmFsdWF0ZV9sb2Nf ZGVzY19mdWxsIGJlbG93LiAgKi8KIC0KQEAgLTcxNSw3ICs2NzgsNyBAQCBpbmRleCA4YTYxYWU2 Li40NTFhNzU5IDEwMDY0NAogIC8qIEV2YWx1YXRlIGEgbG9jYXRpb24gZGVzY3JpcHRpb24sIHN0 YXJ0aW5nIGF0IERBVEEgYW5kIHdpdGggbGVuZ3RoCiAgICAgU0laRSwgdG8gZmluZCB0aGUgY3Vy cmVudCBsb2NhdGlvbiBvZiB2YXJpYWJsZSBvZiBUWVBFIGluIHRoZQogICAgIGNvbnRleHQgb2Yg RlJBTUUuICBCWVRFX09GRlNFVCBpcyBhcHBsaWVkIGFmdGVyIHRoZSBjb250ZW50cyBhcmUKLUBA IC0yMTM0LDcgKzIyOTgsNiBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2NfZnVsbCAoc3RydWN0 IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKK0BAIC0yMjA1LDcgKzIzNTgs NiBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2NfZnVsbCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0 cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKICAJCQkgICAgICAgTE9OR0VTVCBieXRlX29mZnNldCkK ICB7CiAgICBzdHJ1Y3QgdmFsdWUgKnJldHZhbDsKQEAgLTcyMyw3ICs2ODYsNyBAQCBpbmRleCA4 YTYxYWU2Li40NTFhNzU5IDEwMDY0NAogICAgc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4 OwogICAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbiwgKnZhbHVlX2NoYWluOwogICAgc3RydWN0 IG9iamZpbGUgKm9iamZpbGUgPSBkd2FyZjJfcGVyX2N1X29iamZpbGUgKHBlcl9jdSk7Ci1AQCAt MjE0NiwyOSArMjMwOSwxOCBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2NfZnVsbCAoc3RydWN0 IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKK0BAIC0yMjE3LDI5ICsyMzY5 LDE4IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzY19mdWxsIChzdHJ1Y3QgdHlwZSAqdHlwZSwg c3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAogICAgaWYgKHNpemUgPT0gMCkKICAgICAgcmV0dXJu IGFsbG9jYXRlX29wdGltaXplZF9vdXRfdmFsdWUgKHR5cGUpOwogIApAQCAtNzU0LDcgKzcxNyw3 IEBAIGluZGV4IDhhNjFhZTYuLjQ1MWE3NTkgMTAwNjQ0CiAgCSAgcmV0dmFsID0gYWxsb2NhdGVf dmFsdWUgKHR5cGUpOwogIAkgIG1hcmtfdmFsdWVfYnl0ZXNfdW5hdmFpbGFibGUgKHJldHZhbCwg MCwgVFlQRV9MRU5HVEggKHR5cGUpKTsKICAJICByZXR1cm4gcmV0dmFsOwotQEAgLTIyMzIsNiAr MjM4NCwxNiBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2NfZnVsbCAoc3RydWN0IHR5cGUgKnR5 cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKK0BAIC0yMzAzLDYgKzI0NDQsMTYgQEAgZHdh cmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1bGwgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZnJh bWVfaW5mbyAqZnJhbWUsCiAgCSAgICBpbnQgaW5fc3RhY2tfbWVtb3J5ID0gZHdhcmZfZXhwcl9m ZXRjaF9pbl9zdGFja19tZW1vcnkgKGN0eCwgMCk7CiAgCiAgCSAgICBkb19jbGVhbnVwcyAodmFs dWVfY2hhaW4pOwpAQCAtNzcxLDcgKzczNCw3IEBAIGluZGV4IDhhNjFhZTYuLjQ1MWE3NTkgMTAw NjQ0CiAgCSAgICByZXR2YWwgPSBhbGxvY2F0ZV92YWx1ZV9sYXp5ICh0eXBlKTsKICAJICAgIFZB TFVFX0xWQUwgKHJldHZhbCkgPSBsdmFsX21lbW9yeTsKICAJICAgIGlmIChpbl9zdGFja19tZW1v cnkpCi1AQCAtNDE0OCw4ICs0MzEwLDcgQEAgbG9jbGlzdF90cmFjZXBvaW50X3Zhcl9yZWYgKHN0 cnVjdCBzeW1ib2wgKnN5bWJvbCwgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCitAQCAtNDIwNCw4 ICs0MzU1LDcgQEAgbG9jbGlzdF90cmFjZXBvaW50X3Zhcl9yZWYgKHN0cnVjdCBzeW1ib2wgKnN5 bWJvbCwgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCiAgCQkJICAgICAgIGRsYmF0b24tPnBlcl9j dSk7CiAgfQogIApAQCAtNzgxLDYwICs3NDQsMTEgQEAgaW5kZXggOGE2MWFlNi4uNDUxYTc1OSAx MDA2NDQKICBjb25zdCBzdHJ1Y3Qgc3ltYm9sX2NvbXB1dGVkX29wcyBkd2FyZjJfbG9jbGlzdF9m dW5jcyA9IHsKICAgIGxvY2xpc3RfcmVhZF92YXJpYWJsZSwKICAgIGxvY2xpc3RfcmVhZF92YXJp YWJsZV9hdF9lbnRyeSwKLUBAIC00MTU4LDYgKzQzMTksNDggQEAgY29uc3Qgc3RydWN0IHN5bWJv bF9jb21wdXRlZF9vcHMgZHdhcmYyX2xvY2xpc3RfZnVuY3MgPSB7Ci0gICBsb2NsaXN0X3RyYWNl cG9pbnRfdmFyX3JlZgotIH07Ci0gCi0rc3RhdGljIHN0cnVjdCB2YWx1ZSAqCi0rbWlzc2luZ19y ZWFkX3ZhcmlhYmxlIChzdHJ1Y3Qgc3ltYm9sICpzeW1ib2wsIHN0cnVjdCBmcmFtZV9pbmZvICpm cmFtZSkKLSt7Ci0rICBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKmRsYmF0b24gPSBTWU1C T0xfTE9DQVRJT05fQkFUT04gKHN5bWJvbCk7Ci0rCi0rICBnZGJfYXNzZXJ0IChkbGJhdG9uID09 IE5VTEwpOwotKyAgZXJyb3IgKF8oIlVuYWJsZSB0byByZXNvbHZlIHZhcmlhYmxlIFwiJXNcIiIp LCBTWU1CT0xfUFJJTlRfTkFNRSAoc3ltYm9sKSk7Ci0rfQotKwotK3N0YXRpYyBpbnQKLSttaXNz aW5nX3JlYWRfbmVlZHNfZnJhbWUgKHN0cnVjdCBzeW1ib2wgKnN5bWJvbCkKLSt7Ci0rICByZXR1 cm4gMDsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLSttaXNzaW5nX2Rlc2NyaWJlX2xvY2F0aW9uIChz dHJ1Y3Qgc3ltYm9sICpzeW1ib2wsIENPUkVfQUREUiBhZGRyLAotKwkJCSAgIHN0cnVjdCB1aV9m aWxlICpzdHJlYW0pCi0rewotKyAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCBfKCJhIHZhcmlh YmxlIHdlIGFyZSB1bmFibGUgdG8gcmVzb2x2ZSIpKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStt aXNzaW5nX3RyYWNlcG9pbnRfdmFyX3JlZiAoc3RydWN0IHN5bWJvbCAqc3ltYm9sLCBzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCwKLSsJCQkgICAgc3RydWN0IGFnZW50X2V4cHIgKmF4LCBzdHJ1Y3Qg YXhzX3ZhbHVlICp2YWx1ZSkKLSt7Ci0rICBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKmRs YmF0b24gPSBTWU1CT0xfTE9DQVRJT05fQkFUT04gKHN5bWJvbCk7Ci0rCi0rICBnZGJfYXNzZXJ0 IChkbGJhdG9uID09IE5VTEwpOwotKyAgZXJyb3IgKF8oIlVuYWJsZSB0byByZXNvbHZlIHZhcmlh YmxlIFwiJXNcIiIpLCBTWU1CT0xfUFJJTlRfTkFNRSAoc3ltYm9sKSk7Ci0rfQotKwotKy8qIFRo ZSBzZXQgb2YgbG9jYXRpb24gZnVuY3Rpb25zIHVzZWQgd2l0aCB0aGUgRFdBUkYtMiBldmFsdWF0 b3Igd2hlbiB3ZSBhcmUKLSsgICB1bmFibGUgdG8gcmVzb2x2ZSB0aGUgc3ltYm9scy4gICovCi0r Y29uc3Qgc3RydWN0IHN5bWJvbF9jb21wdXRlZF9vcHMgZHdhcmYyX21pc3NpbmdfZnVuY3MgPSB7 Ci0rICBtaXNzaW5nX3JlYWRfdmFyaWFibGUsCi0rICBtaXNzaW5nX3JlYWRfdmFyaWFibGUsCS8q IHJlYWRfdmFyaWFibGVfYXRfZW50cnkgKi8KLSsgIG1pc3NpbmdfcmVhZF9uZWVkc19mcmFtZSwK LSsgIG1pc3NpbmdfZGVzY3JpYmVfbG9jYXRpb24sCi0rICBtaXNzaW5nX3RyYWNlcG9pbnRfdmFy X3JlZgotK307Ci0rCi0gLyogUHJvdmlkZSBhIHByb3RvdHlwZSB0byBzaWxlbmNlIC1XbWlzc2lu Zy1wcm90b3R5cGVzLiAgKi8KLSBleHRlcm4gaW5pdGlhbGl6ZV9maWxlX2Z0eXBlIF9pbml0aWFs aXplX2R3YXJmMmxvYzsKLSAKIGRpZmYgLS1naXQgYS9nZGIvZHdhcmYybG9jLmggYi9nZGIvZHdh cmYybG9jLmgKLWluZGV4IDM2NjQxYjMuLjEzOTQ1NzggMTAwNjQ0CitpbmRleCA5YmM4Y2E1Li4y ODQ2N2RjIDEwMDY0NAogLS0tIGEvZ2RiL2R3YXJmMmxvYy5oCiArKysgYi9nZGIvZHdhcmYybG9j LmgKLUBAIC0xMzIsNiArMTMyLDE1IEBAIHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbgorQEAg LTEzNyw2ICsxMzcsMTUgQEAgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uCiAgCiAgZXh0ZXJu IGNvbnN0IHN0cnVjdCBzeW1ib2xfY29tcHV0ZWRfb3BzIGR3YXJmMl9sb2NleHByX2Z1bmNzOwog IGV4dGVybiBjb25zdCBzdHJ1Y3Qgc3ltYm9sX2NvbXB1dGVkX29wcyBkd2FyZjJfbG9jbGlzdF9m dW5jczsKQEAgLTg0OCwyMyArNzYyLDIzIEBAIGluZGV4IDM2NjQxYjMuLjEzOTQ1NzggMTAwNjQ0 CiArZXh0ZXJuIGludCBkd2FyZl9sb2NsaXN0X2JhdG9uX2V2YWwgKHN0cnVjdCBkd2FyZjJfbG9j bGlzdF9iYXRvbiAqZGxsYmF0b24sCiArCQkJCSAgICAgc3RydWN0IHR5cGUgKnR5cGUsIENPUkVf QUREUiAqYWRkcnApOwogIAotIC8qIENvbXBpbGUgYSBEV0FSRiBsb2NhdGlvbiBleHByZXNzaW9u IHRvIGFuIGFnZW50IGV4cHJlc3Npb24uCi0gICAgCisgZXh0ZXJuIGNvbnN0IHN0cnVjdCBzeW1i b2xfYmxvY2tfb3BzIGR3YXJmMl9ibG9ja19mcmFtZV9iYXNlX2xvY2V4cHJfZnVuY3M7CisgZXh0 ZXJuIGNvbnN0IHN0cnVjdCBzeW1ib2xfYmxvY2tfb3BzIGR3YXJmMl9ibG9ja19mcmFtZV9iYXNl X2xvY2xpc3RfZnVuY3M7CiBkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMnJlYWQuYyBiL2dkYi9kd2Fy ZjJyZWFkLmMKLWluZGV4IGRmNjI5OGIuLmIxMWFiZjAgMTAwNjQ0CitpbmRleCBkMThlYWVkLi45 MWM0NzZjIDEwMDY0NAogLS0tIGEvZ2RiL2R3YXJmMnJlYWQuYwogKysrIGIvZ2RiL2R3YXJmMnJl YWQuYwotQEAgLTE2MjQsNiArMTYyNCw5IEBAIHN0YXRpYyB2b2lkIGZpbGxfaW5fbG9jbGlzdF9i YXRvbiAoc3RydWN0IGR3YXJmMl9jdSAqY3UsCitAQCAtMTY2MSw2ICsxNjYxLDkgQEAgc3RhdGlj IHZvaWQgZmlsbF9pbl9sb2NsaXN0X2JhdG9uIChzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwKICAJCQkJ ICAgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uICpiYXRvbiwKLSAJCQkJICAgc3RydWN0IGF0 dHJpYnV0ZSAqYXR0cik7CisgCQkJCSAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIpOwog IAogK3N0YXRpYyBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKmR3YXJmMl9hdHRyX3RvX2xv Y2xpc3RfYmF0b24KLSsgIChzdHJ1Y3QgYXR0cmlidXRlICphdHRyLCBzdHJ1Y3QgZHdhcmYyX2N1 ICpjdSk7CisrICAoY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IGR3YXJmMl9j dSAqY3UpOwogKwotIHN0YXRpYyB2b2lkIGR3YXJmMl9zeW1ib2xfbWFya19jb21wdXRlZCAoc3Ry dWN0IGF0dHJpYnV0ZSAqYXR0ciwKKyBzdGF0aWMgdm9pZCBkd2FyZjJfc3ltYm9sX21hcmtfY29t cHV0ZWQgKGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsCiAgCQkJCQkgc3RydWN0IHN5bWJv bCAqc3ltLAotIAkJCQkJIHN0cnVjdCBkd2FyZjJfY3UgKmN1KTsKLUBAIC0xNjU2LDYgKzE2NTks OSBAQCBzdGF0aWMgdm9pZCBhZ2VfY2FjaGVkX2NvbXBfdW5pdHMgKHZvaWQpOworIAkJCQkJIHN0 cnVjdCBkd2FyZjJfY3UgKmN1LAorQEAgLTE2OTQsNiArMTY5Nyw5IEBAIHN0YXRpYyB2b2lkIGFn ZV9jYWNoZWRfY29tcF91bml0cyAodm9pZCk7CiAgCiAgc3RhdGljIHZvaWQgZnJlZV9vbmVfY2Fj aGVkX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqKTsKICAKQEAgLTg3NCwx NyArNzg4LDE3IEBAIGluZGV4IGRmNjI5OGIuLmIxMWFiZjAgMTAwNjQ0CiAgc3RhdGljIHN0cnVj dCB0eXBlICpzZXRfZGllX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqLCBzdHJ1Y3QgdHlwZSAqLAog IAkJCQkgIHN0cnVjdCBkd2FyZjJfY3UgKik7CiAgCi1AQCAtMTY4NCw2ICsxNjkwLDkgQEAgc3Rh dGljIHN0cnVjdCB0eXBlICpnZXRfZGllX3R5cGVfYXRfb2Zmc2V0IChzZWN0X29mZnNldCwKK0BA IC0xNzIyLDYgKzE3MjgsOSBAQCBzdGF0aWMgc3RydWN0IHR5cGUgKmdldF9kaWVfdHlwZV9hdF9v ZmZzZXQgKHNlY3Rfb2Zmc2V0LAogIAogIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqZ2V0X2RpZV90eXBl IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpOwogIAogK3N0YXRp YyBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0 b24KLSsgIChzdHJ1Y3QgYXR0cmlidXRlICphdHRyLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSk7Cisr ICAoY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IGR3YXJmMl9jdSAqY3UpOwog KwogIHN0YXRpYyB2b2lkIGR3YXJmMl9yZWxlYXNlX3F1ZXVlICh2b2lkICpkdW1teSk7CiAgCiAg c3RhdGljIHZvaWQgcXVldWVfY29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpw ZXJfY3UsCi1AQCAtMTE3MDIsNiArMTE3MTEsMjkgQEAgcHJvY2Vzc19lbnVtZXJhdGlvbl9zY29w ZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTEyMjYz LDYgKzEyMjcyLDI5IEBAIHByb2Nlc3NfZW51bWVyYXRpb25fc2NvcGUgKHN0cnVjdCBkaWVfaW5m byAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgIG5ld19zeW1ib2wgKGRpZSwgdGhpc190 eXBlLCBjdSk7CiAgfQogIApAQCAtOTE0LDcgKzgyOCw3IEBAIGluZGV4IGRmNjI5OGIuLmIxMWFi ZjAgMTAwNjQ0CiAgLyogRXh0cmFjdCBhbGwgaW5mb3JtYXRpb24gZnJvbSBhIERXX1RBR19hcnJh eV90eXBlIERJRSBhbmQgcHV0IGl0IGluCiAgICAgdGhlIERJRSdzIHR5cGUgZmllbGQuICBGb3Ig bm93LCB0aGlzIG9ubHkgaGFuZGxlcyBvbmUgZGltZW5zaW9uYWwKICAgICBhcnJheXMuICAqLwot QEAgLTExNzE1LDcgKzExNzQ3LDcgQEAgcmVhZF9hcnJheV90eXBlIChzdHJ1Y3QgZGllX2luZm8g KmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtMTIyNzYsNyArMTIzMDgsNyBAQCByZWFk X2FycmF5X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkK ICAgIHN0cnVjdCB0eXBlICplbGVtZW50X3R5cGUsICpyYW5nZV90eXBlLCAqaW5kZXhfdHlwZTsK ICAgIHN0cnVjdCB0eXBlICoqcmFuZ2VfdHlwZXMgPSBOVUxMOwogICAgc3RydWN0IGF0dHJpYnV0 ZSAqYXR0cjsKQEAgLTkyMyw3ICs4MzcsNyBAQCBpbmRleCBkZjYyOThiLi5iMTFhYmYwIDEwMDY0 NAogICAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87CiAgICBjb25zdCBjaGFyICpuYW1lOwogIAot QEAgLTExNzY4LDE3ICsxMTgwMCwxOSBAQCByZWFkX2FycmF5X3R5cGUgKHN0cnVjdCBkaWVfaW5m byAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC0xMjMyOSwxNyArMTIzNjEsMTkgQEAg cmVhZF9hcnJheV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAq Y3UpCiAgICB0eXBlID0gZWxlbWVudF90eXBlOwogIAogICAgaWYgKHJlYWRfYXJyYXlfb3JkZXIg KGRpZSwgY3UpID09IERXX09SRF9jb2xfbWFqb3IpCkBAIC05NTQsNyArODY4LDcgQEAgaW5kZXgg ZGY2Mjk4Yi4uYjExYWJmMCAxMDA2NDQKICAKICAgIC8qIFVuZGVyc3RhbmQgRHdhcmYyIHN1cHBv cnQgZm9yIHZlY3RvciB0eXBlcyAobGlrZSB0aGV5IG9jY3VyIG9uCiAgICAgICB0aGUgUG93ZXJQ QyB3LyBBbHRpVmVjKS4gIEdjYyBqdXN0IGFkZHMgYW5vdGhlciBhdHRyaWJ1dGUgdG8gdGhlCi1A QCAtMTI0MTMsMjkgKzEyNDQ3LDExNCBAQCByZWFkX3RhZ19zdHJpbmdfdHlwZSAoc3RydWN0IGRp ZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTEyOTczLDI5ICsxMzAwNywx MTQgQEAgcmVhZF90YWdfc3RyaW5nX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3Qg ZHdhcmYyX2N1ICpjdSkKICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X29iamZpbGVf YXJjaCAob2JqZmlsZSk7CiAgICBzdHJ1Y3QgdHlwZSAqdHlwZSwgKnJhbmdlX3R5cGUsICppbmRl eF90eXBlLCAqY2hhcl90eXBlOwogICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKQEAgLTEwODIs NyArOTk2LDcgQEAgaW5kZXggZGY2Mjk4Yi4uYjExYWJmMCAxMDA2NDQKICAgIGNoYXJfdHlwZSA9 IGxhbmd1YWdlX3N0cmluZ19jaGFyX3R5cGUgKGN1LT5sYW5ndWFnZV9kZWZuLCBnZGJhcmNoKTsK ICAgIHR5cGUgPSBjcmVhdGVfc3RyaW5nX3R5cGUgKE5VTEwsIGNoYXJfdHlwZSwgcmFuZ2VfdHlw ZSk7CiAgCi1AQCAtMTI3MzksNyArMTI4NTgsNyBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVj dCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC0xMzMyMCw3ICsxMzQz OSw3IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KQogICAgc3RydWN0IHR5cGUgKmJhc2VfdHlwZSwgKm9yaWdfYmFzZV90eXBl OwogICAgc3RydWN0IHR5cGUgKnJhbmdlX3R5cGU7CiAgICBzdHJ1Y3QgYXR0cmlidXRlICphdHRy OwpAQCAtMTA5MSwxNCArMTAwNSwxNCBAQCBpbmRleCBkZjYyOThiLi5iMTFhYmYwIDEwMDY0NAog ICAgaW50IGxvd19kZWZhdWx0X2lzX3ZhbGlkOwogICAgY29uc3QgY2hhciAqbmFtZTsKICAgIExP TkdFU1QgbmVnYXRpdmVfbWFzazsKLUBAIC0xMjc5OCw0MiArMTI5MTcsNiBAQCByZWFkX3N1YnJh bmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BA IC0xMzM3OSw0MiArMTM0OTgsNiBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5m byAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAJCQkJICAgICAgIi0gRElFIGF0IDB4JXgg W2luIG1vZHVsZSAlc10iKSwKICAJICAgICAgIGRpZS0+b2Zmc2V0LnNlY3Rfb2ZmLCBjdS0+b2Jq ZmlsZS0+bmFtZSk7CiAgCiAtICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfdXBwZXJf Ym91bmQsIGN1KTsKIC0gIGlmIChhdHRyKQogLSAgICB7Ci0tICAgICAgaWYgKGF0dHJfZm9ybV9p c19ibG9jayAoYXR0cikgfHwgaXNfcmVmX2F0dHIgKGF0dHIpKQorLSAgICAgIGlmIChhdHRyX2Zv cm1faXNfYmxvY2sgKGF0dHIpIHx8IGF0dHJfZm9ybV9pc19yZWYgKGF0dHIpKQogLSAgICAgICAg ewogLSAgICAgICAgICAvKiBHQ0MgZW5jb2RlcyBhcnJheXMgd2l0aCB1bnNwZWNpZmllZCBvciBk eW5hbWljIGxlbmd0aAogLSAgICAgICAgICAgICB3aXRoIGEgRFdfRk9STV9ibG9jazEgYXR0cmli dXRlIG9yIGEgcmVmZXJlbmNlIGF0dHJpYnV0ZS4KQEAgLTExMzQsNyArMTA0OCw3IEBAIGluZGV4 IGRmNjI5OGIuLmIxMWFiZjAgMTAwNjQ0CiAgICAvKiBEd2FyZi0yIHNwZWNpZmljYXRpb25zIGV4 cGxpY2l0bHkgYWxsb3dzIHRvIGNyZWF0ZSBzdWJyYW5nZSB0eXBlcwogICAgICAgd2l0aG91dCBz cGVjaWZ5aW5nIGEgYmFzZSB0eXBlLgogICAgICAgSW4gdGhhdCBjYXNlLCB0aGUgYmFzZSB0eXBl IG11c3QgYmUgc2V0IHRvIHRoZSB0eXBlIG9mCi1AQCAtMTI4NzIsMjQgKzEyOTU1LDE2MyBAQCBy ZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1 ICpjdSkKK0BAIC0xMzQ1MywyNCArMTM1MzYsMTYzIEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3Ry dWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogIAl9CiAgICAgIH0KICAK QEAgLTExNzEsNyArMTA4NSw3IEBAIGluZGV4IGRmNjI5OGIuLmIxMWFiZjAgMTAwNjQ0CiArICAg ICAgLyogRm9yIHNldHRpbmcgYSBkZWZhdWx0IGlmIERXX0FUX1VQUEVSX0JPVU5EIHdvdWxkIGJl IG1pc3NpbmcuICAqLwogKyAgICAgIGxvdyA9IDA7CiArICAgIH0KLSsgIGVsc2UgaWYgKGF0dHIg JiYgaXNfcmVmX2F0dHIgKGF0dHIpICYmIGN1LT5sYW5ndWFnZSAhPSBsYW5ndWFnZV9hZGEpCisr ICBlbHNlIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19yZWYgKGF0dHIpICYmIGN1LT5sYW5ndWFn ZSAhPSBsYW5ndWFnZV9hZGEpCiArICAgIHsKICsgICAgICBzdHJ1Y3QgZGllX2luZm8gKnRhcmdl dF9kaWU7CiArICAgICAgc3RydWN0IGR3YXJmMl9jdSAqdGFyZ2V0X2N1ID0gY3U7CkBAIC0xMjIw LDcgKzExMzQsNyBAQCBpbmRleCBkZjYyOThiLi5iMTFhYmYwIDEwMDY0NAogLSAgICBUWVBFX0hJ R0hfQk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKSA9IDE7CiArICBhdHRyID0gZHdhcmYyX2F0 dHIgKGRpZSwgRFdfQVRfdXBwZXJfYm91bmQsIGN1KTsKICsgIGlmICghYXR0ciB8fCAoIWF0dHJf Zm9ybV9pc19ibG9jayAoYXR0cikgJiYgIWF0dHJfZm9ybV9pc19jb25zdGFudCAoYXR0cikKLSsJ CSYmICFpc19yZWZfYXR0ciAoYXR0cikpKQorKwkJJiYgIWF0dHJfZm9ybV9pc19yZWYgKGF0dHIp KSkKICsgICAgewogKyAgICAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9jb3VudCwg Y3UpOwogKyAgICAgIC8qIEl0IGRvZXMgbm90IGh1cnQgYnV0IGl0IGlzIG5lZWRsZXNzbHkgaW5l ZmZlY3RpdmUgaW4gY2hlY2tfdHlwZWRlZi4gICovCkBAIC0xMjM5LDcgKzExNTMsNyBAQCBpbmRl eCBkZjYyOThiLi5iMTFhYmYwIDEwMDY0NAogKwkJCQkJZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9i YXRvbiAoYXR0ciwgY3UpOwogKyAgICAgIFRZUEVfRFlOQU1JQyAocmFuZ2VfdHlwZSkgPSAxOwog KyAgICB9Ci0rICBlbHNlIGlmIChhdHRyICYmIGlzX3JlZl9hdHRyIChhdHRyKSAmJiBjdS0+bGFu Z3VhZ2UgIT0gbGFuZ3VhZ2VfYWRhKQorKyAgZWxzZSBpZiAoYXR0ciAmJiBhdHRyX2Zvcm1faXNf cmVmIChhdHRyKSAmJiBjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfYWRhKQogKyAgICB7CiArICAg ICAgc3RydWN0IGRpZV9pbmZvICp0YXJnZXRfZGllOwogKyAgICAgIHN0cnVjdCBkd2FyZjJfY3Ug KnRhcmdldF9jdSA9IGN1OwpAQCAtMTI4NCw3ICsxMTk4LDcgQEAgaW5kZXggZGY2Mjk4Yi4uYjEx YWJmMCAxMDA2NDQKICsJCQkJCWR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1 KTsKICsgICAgICBUWVBFX0RZTkFNSUMgKHJhbmdlX3R5cGUpID0gMTsKICsgICAgfQotKyAgZWxz ZSBpZiAoYXR0ciAmJiBpc19yZWZfYXR0ciAoYXR0cikgJiYgY3UtPmxhbmd1YWdlICE9IGxhbmd1 YWdlX2FkYSkKKysgIGVsc2UgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX3JlZiAoYXR0cikgJiYg Y3UtPmxhbmd1YWdlICE9IGxhbmd1YWdlX2FkYSkKICsgICAgewogKyAgICAgIHN0cnVjdCBkaWVf aW5mbyAqdGFyZ2V0X2RpZTsKICsgICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICp0YXJnZXRfY3UgPSBj dTsKQEAgLTEzMTIsNyArMTIyNiw3IEBAIGluZGV4IGRmNjI5OGIuLmIxMWFiZjAgMTAwNjQ0CiAg CiAgICBuYW1lID0gZHdhcmYyX25hbWUgKGRpZSwgY3UpOwogICAgaWYgKG5hbWUpCi1AQCAtMTU3 NDksMTAgKzE1OTcxLDEyIEBAIHZhcl9kZWNvZGVfbG9jYXRpb24gKHN0cnVjdCBhdHRyaWJ1dGUg KmF0dHIsIHN0cnVjdCBzeW1ib2wgKnN5bSwKK0BAIC0xNjM4MCwxMSArMTY2MDIsMTQgQEAgdmFy X2RlY29kZV9sb2NhdGlvbiAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAq c3ltLAogICAgICAgKGkuZS4gd2hlbiB0aGUgdmFsdWUgb2YgYSByZWdpc3RlciBvciBtZW1vcnkg bG9jYXRpb24gaXMKICAgICAgIHJlZmVyZW5jZWQsIG9yIGEgdGhyZWFkLWxvY2FsIGJsb2NrLCBl dGMuKS4gIFRoZW4gYWdhaW4sIGl0IG1pZ2h0CiAgICAgICBub3QgYmUgd29ydGh3aGlsZS4gIEkn bSBhc3N1bWluZyB0aGF0IGl0IGlzbid0IHVubGVzcyBwZXJmb3JtYW5jZQpAQCAtMTMyMSwyMiAr MTIzNSwxNSBAQCBpbmRleCBkZjYyOThiLi5iMTFhYmYwIDEwMDY0NAogKyAgICAgCiArICAgICBT WU1CT0xfQ0xBU1MgbWF5IGdldCBvdmVycmlkZW4gYnkgZHdhcmYyX3N5bWJvbF9tYXJrX2NvbXB1 dGVkLiAgKi8KICAKLS0gIGR3YXJmMl9zeW1ib2xfbWFya19jb21wdXRlZCAoYXR0ciwgc3ltLCBj dSk7Ci0gICBTWU1CT0xfQ0xBU1MgKHN5bSkgPSBMT0NfQ09NUFVURUQ7Ci0rICBkd2FyZjJfc3lt Ym9sX21hcmtfY29tcHV0ZWQgKGF0dHIsIHN5bSwgY3UpOworICAgZHdhcmYyX3N5bWJvbF9tYXJr X2NvbXB1dGVkIChhdHRyLCBzeW0sIGN1LCAwKTsKICAKLSAgIGlmIChTWU1CT0xfQ09NUFVURURf T1BTIChzeW0pID09ICZkd2FyZjJfbG9jbGlzdF9mdW5jcykKKy0gIGlmIChTWU1CT0xfQ09NUFVU RURfT1BTIChzeW0pLT5sb2NhdGlvbl9oYXNfbG9jbGlzdCkKKysgIGlmIChTWU1CT0xfQ09NUFVU RURfT1BTIChzeW0pICE9IE5VTEwKKysgICAgICAmJiBTWU1CT0xfQ09NUFVURURfT1BTIChzeW0p LT5sb2NhdGlvbl9oYXNfbG9jbGlzdCkKICAgICAgY3UtPmhhc19sb2NsaXN0ID0gMTsKLUBAIC0x NTc5Myw2ICsxNjAxNyw4IEBAIG5ld19zeW1ib2xfZnVsbCAoc3RydWN0IGRpZV9pbmZvICpkaWUs IHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwKLSAgICAgICBlbHNlCi0g CXN5bSA9IE9CU1RBQ0tfWkFMTE9DICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBzdHJ1Y3Qg c3ltYm9sKTsKLSAgICAgICBPQkpTVEFUIChvYmpmaWxlLCBuX3N5bXMrKyk7Ci0rICAgICAgLyog U29tZSBtZXRob2RzIGFyZSBjYWxsZWQgdy9vIGNoZWNraW5nIFNZTUJPTF9DT01QVVRFRF9PUFMg dmFsaWRpdHkuICAqLwotKyAgICAgIFNZTUJPTF9DT01QVVRFRF9PUFMgKHN5bSkgPSAmZHdhcmYy X21pc3NpbmdfZnVuY3M7Ci0gCi0gICAgICAgLyogQ2FjaGUgdGhpcyBzeW1ib2wncyBuYW1lIGFu ZCB0aGUgbmFtZSdzIGRlbWFuZ2xlZCBmb3JtIChpZiBhbnkpLiAgKi8KLSAgICAgICBTWU1CT0xf U0VUX0xBTkdVQUdFIChzeW0sIGN1LT5sYW5ndWFnZSk7Ci1AQCAtMTY2MDIsNiArMTY4MjgsOSBA QCByZWFkX3R5cGVfZGllXzEgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1 ICpjdSkKKyB9CisgCitAQCAtMTcyMjUsNiArMTc0NTAsOSBAQCByZWFkX3R5cGVfZGllXzEgKHN0 cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgICAgICBicmVhazsK ICAgICAgfQogIApAQCAtMTM0NiwyMyArMTI1MywyNCBAQCBpbmRleCBkZjYyOThiLi5iMTFhYmYw IDEwMDY0NAogICAgcmV0dXJuIHRoaXNfdHlwZTsKICB9CiAgCi1AQCAtMTkwNDYsNjIgKzE5Mjc1 LDEwMCBAQCBmaWxsX2luX2xvY2xpc3RfYmF0b24gKHN0cnVjdCBkd2FyZjJfY3UgKmN1LAorQEAg LTE5OTEwLDY2ICsyMDEzOCwxMDkgQEAgZmlsbF9pbl9sb2NsaXN0X2JhdG9uIChzdHJ1Y3QgZHdh cmYyX2N1ICpjdSwKICAgIGJhdG9uLT5mcm9tX2R3byA9IGN1LT5kd29fdW5pdCAhPSBOVUxMOwog IH0KICAKIC1zdGF0aWMgdm9pZAotLWR3YXJmMl9zeW1ib2xfbWFya19jb21wdXRlZCAoc3RydWN0 IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3ltLAotLQkJCSAgICAgc3RydWN0IGR3 YXJmMl9jdSAqY3UpCistZHdhcmYyX3N5bWJvbF9tYXJrX2NvbXB1dGVkIChjb25zdCBzdHJ1Y3Qg YXR0cmlidXRlICphdHRyLCBzdHJ1Y3Qgc3ltYm9sICpzeW0sCistCQkJICAgICBzdHJ1Y3QgZHdh cmYyX2N1ICpjdSwgaW50IGlzX2Jsb2NrKQogKy8qIENvbnZlcnQgRFdfQkxPQ0sgaW50byBzdHJ1 Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24uICBBVFRSIG11c3QgYmUgYSBEV19CTE9DSwogKyAgIGF0 dHJpYnV0ZSB0eXBlLiAgKi8KICsKICtzdGF0aWMgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9u ICoKLStkd2FyZjJfYXR0cl90b19sb2NleHByX2JhdG9uIChzdHJ1Y3QgYXR0cmlidXRlICphdHRy LCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKytkd2FyZjJfYXR0cl90b19sb2NleHByX2JhdG9uIChj b25zdCBzdHJ1Y3QgYXR0cmlidXRlICphdHRyLAorKwkJCSAgICAgIHN0cnVjdCBkd2FyZjJfY3Ug KmN1KQogK3sKICsgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gZHdhcmYyX3Blcl9vYmpmaWxl LT5vYmpmaWxlOwogKyAgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICpiYXRvbjsKICsKLSsg IGdkYl9hc3NlcnQgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpOworKyAgZ2RiX2Fzc2VydCAo YXR0ciA9PSBOVUxMIHx8IGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpOwogKwogKyAgYmF0b24g PSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBzaXplb2YgKCpiYXRv bikpOwogKyAgYmF0b24tPnBlcl9jdSA9IGN1LT5wZXJfY3U7CkBAIC0xMzczLDE1ICsxMjgxLDI0 IEBAIGluZGV4IGRmNjI5OGIuLmIxMWFiZjAgMTAwNjQ0CiArICAgICBpbmZvX2J1ZmZlciBmb3Ig U1lNJ3Mgb2JqZmlsZTsgcmlnaHQgbm93IHdlIG5ldmVyIHJlbGVhc2UKICsgICAgIHRoYXQgYnVm ZmVyLCBidXQgd2hlbiB3ZSBkbyBjbGVhbiB1cCBwcm9wZXJseSB0aGlzIG1heQogKyAgICAgbmVl ZCB0byBjaGFuZ2UuICAqLwotKyAgYmF0b24tPnNpemUgPSBEV19CTE9DSyAoYXR0ciktPnNpemU7 Ci0rICBiYXRvbi0+ZGF0YSA9IERXX0JMT0NLIChhdHRyKS0+ZGF0YTsKKysgIGlmIChhdHRyICE9 IE5VTEwpCisrICAgIHsKKysgICAgICBiYXRvbi0+c2l6ZSA9IERXX0JMT0NLIChhdHRyKS0+c2l6 ZTsKKysgICAgICBiYXRvbi0+ZGF0YSA9IERXX0JMT0NLIChhdHRyKS0+ZGF0YTsKKysgICAgfQor KyAgZWxzZQorKyAgICB7CisrICAgICAgYmF0b24tPnNpemUgPSAwOworKyAgICAgIGJhdG9uLT5k YXRhID0gTlVMTDsKKysgICAgfQogKyAgZ2RiX2Fzc2VydCAoYmF0b24tPnNpemUgPT0gMCB8fCBi YXRvbi0+ZGF0YSAhPSBOVUxMKTsKICsKICsgIHJldHVybiBiYXRvbjsKICt9CiArCiArc3RhdGlj IHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbiAqCi0rZHdhcmYyX2F0dHJfdG9fbG9jbGlzdF9i YXRvbiAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisrZHdh cmYyX2F0dHJfdG9fbG9jbGlzdF9iYXRvbiAoY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwK KysJCQkgICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICB7CiAgICBzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmlsZTsKICAgIHN0cnVjdCBkd2FyZjJf c2VjdGlvbl9pbmZvICpzZWN0aW9uID0gY3VfZGVidWdfbG9jX3NlY3Rpb24gKGN1KTsKQEAgLTE0 MjgsMzUgKzEzNDUsMzYgQEAgaW5kZXggZGY2Mjk4Yi4uYjExYWJmMCAxMDA2NDQKICsvKiBTWU0g bWF5IGdldCBpdHMgU1lNQk9MX0NMQVNTIG92ZXJyaWRlbiBvbiBpbnZhbGlkIEFUVFIgY29udGVu dC4gICovCiArCiArc3RhdGljIHZvaWQKLStkd2FyZjJfc3ltYm9sX21hcmtfY29tcHV0ZWQgKHN0 cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBzeW1ib2wgKnN5bSwKLSsJCQkgICAgIHN0cnVj dCBkd2FyZjJfY3UgKmN1KQorK2R3YXJmMl9zeW1ib2xfbWFya19jb21wdXRlZCAoY29uc3Qgc3Ry dWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3ltLAorKwkJCSAgICAgc3RydWN0 IGR3YXJmMl9jdSAqY3UsIGludCBpc19ibG9jaykKICt7CiArICBzdHJ1Y3QgZHdhcmYyX2xvY2xp c3RfYmF0b24gKmxvY2xpc3RfYmF0b247CiAgCiArICBsb2NsaXN0X2JhdG9uID0gZHdhcmYyX2F0 dHJfdG9fbG9jbGlzdF9iYXRvbiAoYXR0ciwgY3UpOwogKyAgaWYgKGxvY2xpc3RfYmF0b24pCiAr ICAgIHsKLSAgICAgICBTWU1CT0xfQ09NUFVURURfT1BTIChzeW0pID0gJmR3YXJmMl9sb2NsaXN0 X2Z1bmNzOworICAgICAgIFNZTUJPTF9BQ0xBU1NfSU5ERVggKHN5bSkgPSAoaXNfYmxvY2sKKyAJ CQkJICAgPyBkd2FyZjJfbG9jbGlzdF9ibG9ja19pbmRleAorIAkJCQkgICA6IGR3YXJmMl9sb2Ns aXN0X2luZGV4KTsKIC0gICAgICBTWU1CT0xfTE9DQVRJT05fQkFUT04gKHN5bSkgPSBiYXRvbjsK ICsgICAgICBTWU1CT0xfTE9DQVRJT05fQkFUT04gKHN5bSkgPSBsb2NsaXN0X2JhdG9uOwogKyAg ICB9CiArICBlbHNlIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQogKyAgICB7Ci0rICAg ICAgU1lNQk9MX0NPTVBVVEVEX09QUyAoc3ltKSA9ICZkd2FyZjJfbG9jZXhwcl9mdW5jczsKKysg ICAgICBTWU1CT0xfQUNMQVNTX0lOREVYIChzeW0pID0gKGlzX2Jsb2NrCisrCQkJCSAgID8gZHdh cmYyX2xvY2V4cHJfYmxvY2tfaW5kZXgKKysJCQkJICAgOiBkd2FyZjJfbG9jZXhwcl9pbmRleCk7 CiArICAgICAgU1lNQk9MX0xPQ0FUSU9OX0JBVE9OIChzeW0pID0gZHdhcmYyX2F0dHJfdG9fbG9j ZXhwcl9iYXRvbiAoYXR0ciwgY3UpOwogICAgICB9CiAgICBlbHNlCiAgICAgIHsKIC0gICAgICBz dHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmJhdG9uOwotKyAgICAgIGR3YXJmMl9pbnZhbGlk X2F0dHJpYl9jbGFzc19jb21wbGFpbnQgKCJsb2NhdGlvbiBkZXNjcmlwdGlvbiIsCi0rCQkJCQkg ICAgIFNZTUJPTF9OQVRVUkFMX05BTUUgKHN5bSkpOwotIAorLQogLSAgICAgIGJhdG9uID0gb2Jz dGFja19hbGxvYyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKIC0JCQkgICAgIHNpemVvZiAo c3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uKSk7CiAtICAgICAgYmF0b24tPnBlcl9jdSA9IGN1 LT5wZXJfY3U7CiAtICAgICAgZ2RiX2Fzc2VydCAoYmF0b24tPnBlcl9jdSk7Ci0rICAgICAgLyog U29tZSBtZXRob2RzIGFyZSBjYWxsZWQgdy9vIGNoZWNraW5nIFNZTUJPTF9DT01QVVRFRF9PUFMg dmFsaWRpdHkuICAqLwotIAorLQogLSAgICAgIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIp KQogLQl7CiAtCSAgLyogTm90ZSB0aGF0IHdlJ3JlIGp1c3QgY29weWluZyB0aGUgYmxvY2sncyBk YXRhIHBvaW50ZXIKQEAgLTE0NzMsMTkgKzEzOTEsMTggQEAgaW5kZXggZGY2Mjk4Yi4uYjExYWJm MCAxMDA2NDQKIC0JCQkJCQkgU1lNQk9MX05BVFVSQUxfTkFNRSAoc3ltKSk7CiAtCSAgYmF0b24t PnNpemUgPSAwOwogLQl9Ci0rICAgICAgU1lNQk9MX0NPTVBVVEVEX09QUyAoc3ltKSA9ICZkd2Fy ZjJfbWlzc2luZ19mdW5jczsKLSsgICAgICBTWU1CT0xfTE9DQVRJT05fQkFUT04gKHN5bSkgPSBO VUxMOworKyAgICAgIGR3YXJmMl9pbnZhbGlkX2F0dHJpYl9jbGFzc19jb21wbGFpbnQgKCJsb2Nh dGlvbiBkZXNjcmlwdGlvbiIsCisrCQkJCQkgICAgIFNZTUJPTF9OQVRVUkFMX05BTUUgKHN5bSkp OwogIAotLSAgICAgIFNZTUJPTF9DT01QVVRFRF9PUFMgKHN5bSkgPSAmZHdhcmYyX2xvY2V4cHJf ZnVuY3M7CisgICAgICAgU1lNQk9MX0FDTEFTU19JTkRFWCAoc3ltKSA9IChpc19ibG9jaworIAkJ CQkgICA/IGR3YXJmMl9sb2NleHByX2Jsb2NrX2luZGV4CisgCQkJCSAgIDogZHdhcmYyX2xvY2V4 cHJfaW5kZXgpOwogLSAgICAgIFNZTUJPTF9MT0NBVElPTl9CQVRPTiAoc3ltKSA9IGJhdG9uOwot KyAgICAgIC8qIEZvciBmdW5jdGlvbnMgYSBtaXNzaW5nIERXX0FUX2ZyYW1lX2Jhc2UgZG9lcyBu b3Qgb3B0aW1pemUgb3V0IHRoZQotKwkgd2hvbGUgZnVuY3Rpb24gZGVmaW5pdGlvbiwgb25seSBp dHMgZnJhbWUgYmFzZSByZXNvbHZpbmcuICAqLwotKyAgICAgIGlmIChhdHRyLT5uYW1lID09IERX X0FUX2xvY2F0aW9uKQotKwlTWU1CT0xfQ0xBU1MgKHN5bSkgPSBMT0NfT1BUSU1JWkVEX09VVDsK KysgICAgICBTWU1CT0xfTE9DQVRJT05fQkFUT04gKHN5bSkgPSBkd2FyZjJfYXR0cl90b19sb2Nl eHByX2JhdG9uIChOVUxMLCBjdSk7CiAgICAgIH0KICB9CiAgCi1AQCAtMTk0NzIsNiArMTk3Mzks MjUgQEAgcGVyX2N1X29mZnNldF9hbmRfdHlwZV9lcSAoY29uc3Qgdm9pZCAqaXRlbV9saHMsIGNv bnN0IHZvaWQgKml0ZW1fcmhzKQorQEAgLTIwMzQyLDYgKzIwNjEzLDI1IEBAIHBlcl9jdV9vZmZz ZXRfYW5kX3R5cGVfZXEgKGNvbnN0IHZvaWQgKml0ZW1fbGhzLCBjb25zdCB2b2lkICppdGVtX3Jo cykKICAJICAmJiBvZnNfbGhzLT5vZmZzZXQuc2VjdF9vZmYgPT0gb2ZzX3Jocy0+b2Zmc2V0LnNl Y3Rfb2ZmKTsKICB9CiAgCkBAIC0xNTExLDcgKzE0MjgsNyBAQCBpbmRleCBkZjYyOThiLi5iMTFh YmYwIDEwMDY0NAogIC8qIFNldCB0aGUgdHlwZSBhc3NvY2lhdGVkIHdpdGggRElFIHRvIFRZUEUu ICBTYXZlIGl0IGluIENVJ3MgaGFzaAogICAgIHRhYmxlIGlmIG5lY2Vzc2FyeS4gIEZvciBjb252 ZW5pZW5jZSwgcmV0dXJuIFRZUEUuCiAgCi1AQCAtMTk0OTYsNiArMTk3ODIsOCBAQCBzZXRfZGll X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3 YXJmMl9jdSAqY3UpCitAQCAtMjAzNjYsNiArMjA2NTYsOCBAQCBzZXRfZGllX3R5cGUgKHN0cnVj dCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3Up CiAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9vZmZzZXRfYW5kX3R5cGUgKipzbG90LCBvZnM7CiAg ICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IGN1LT5vYmpmaWxlOwogIApAQCAtMTUyMSw3ICsx NDM4LDcgQEAgaW5kZXggZGY2Mjk4Yi4uYjExYWJmMCAxMDA2NDQKICAgICAgIGluaXRpYWxpemVk IChpZiBub3QgYWxyZWFkeSBzZXQpLiAgVGhlcmUgYXJlIGEgZmV3IHR5cGVzIHdoZXJlCiAgICAg ICB3ZSBzaG91bGQgbm90IGJlIGRvaW5nIHNvLCBiZWNhdXNlIHRoZSB0eXBlLXNwZWNpZmljIGFy ZWEgaXMKIGRpZmYgLS1naXQgYS9nZGIvZXZhbC5jIGIvZ2RiL2V2YWwuYwotaW5kZXggZDdmODBl Mi4uOGVjYTRjOCAxMDA2NDQKK2luZGV4IDUzOTQ4OWYuLjEzYmExYTkgMTAwNjQ0CiAtLS0gYS9n ZGIvZXZhbC5jCiArKysgYi9nZGIvZXZhbC5jCiBAQCAtNDEsNiArNDEsNyBAQApAQCAtMTUzMiw3 ICsxNDQ5LDcgQEAgaW5kZXggZDdmODBlMi4uOGVjYTRjOCAxMDA2NDQKICAKICAjaW5jbHVkZSAi Z2RiX2Fzc2VydC5oIgogIAotQEAgLTM5MywyNyArMzk0LDIxNyBAQCBpbml0X2FycmF5X2VsZW1l bnQgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIHN0cnVjdCB2YWx1ZSAqZWxlbWVudCwKK0BAIC0zOTMs MjcgKzM5NCwyMjEgQEAgaW5pdF9hcnJheV9lbGVtZW50IChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBz dHJ1Y3QgdmFsdWUgKmVsZW1lbnQsCiAgfQogIAogIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgpAQCAt MTY1MiwxMSArMTU2OSwxMSBAQCBpbmRleCBkN2Y4MGUyLi44ZWNhNGM4IDEwMDY0NAogKyAgICAg IGVsc2UKICsJewogKwkgIHN0cnVjdCB2YWx1ZSAqdmFsOwotKwotKwkgIGluZGV4LT5raW5kID0g U1VCU0NSSVBUX05VTUJFUjsKICAKIC0gIGlmIChyYW5nZV90eXBlID09IEhJR0hfQk9VTkRfREVG QVVMVCB8fCByYW5nZV90eXBlID09IEJPVEhfQk9VTkRfREVGQVVMVCkKIC0gICAgaGlnaF9ib3Vu ZCA9IFRZUEVfSElHSF9CT1VORCAocmFuZ2UpOworKwkgIGluZGV4LT5raW5kID0gU1VCU0NSSVBU X05VTUJFUjsKKysKICsJICAvKiBFdmFsdWF0ZSBlYWNoIHN1YnNjcmlwdDsgaXQgbXVzdCBiZSBh IGxlZ2FsIGludGVnZXIgaW4gRjc3LiAgKi8KICsJICB2YWwgPSBldmFsdWF0ZV9zdWJleHBfd2l0 aF9jb2VyY2lvbiAoZXhwLCBwb3MsIG5vc2lkZSk7CiArCSAgaW5kZXgtPm51bWJlciA9IHZhbHVl X2FzX2xvbmcgKHZhbCk7CkBAIC0xNzUwLDIzICsxNjY3LDI3IEBAIGluZGV4IGQ3ZjgwZTIuLjhl Y2E0YzggMTAwNjQ0CiArICBpZiAoVkFMVUVfTFZBTCAoYXJyYXkpICE9IGx2YWxfaW50ZXJuYWx2 YXIpCiArICAgIHNldF92YWx1ZV9hZGRyZXNzIChhcnJheSwgdmFsdWVfYnl0ZV9hZGRyZXNzICsg dmFsdWVfYnl0ZV9vZmZzZXQpOwogKwotKyAgaWYgKCF2YWx1ZV9sYXp5IChzYXZlZF9hcnJheSkp CisrICBpZiAoIXZhbHVlX2xhenkgKHNhdmVkX2FycmF5KQorKyAgICAgICYmIFRZUEVfTEVOR1RI ICh2YWx1ZV90eXBlIChzYXZlZF9hcnJheSkpID4gMAorKyAgICAgICYmIFRZUEVfTEVOR1RIIChu ZXdfYXJyYXlfdHlwZSkgPiAwKQogKyAgICB7CisrICAgICAgZ2RiX2Fzc2VydCAoVFlQRV9MRU5H VEggKG5ld19hcnJheV90eXBlKQorKwkJICA8PSBUWVBFX0xFTkdUSCAodmFsdWVfdHlwZSAoc2F2 ZWRfYXJyYXkpKSk7CiArICAgICAgYWxsb2NhdGVfdmFsdWVfY29udGVudHMgKGFycmF5KTsKICsg ICAgICBzZXRfdmFsdWVfbGF6eSAoYXJyYXksIDApOwotIAotLSAgcmV0dXJuIHZhbHVlX3NsaWNl IChhcnJheSwgbG93X2JvdW5kLCBoaWdoX2JvdW5kIC0gbG93X2JvdW5kICsgMSk7CisrCiArICAg ICAgbWVtY3B5ICh2YWx1ZV9jb250ZW50c193cml0ZWFibGUgKGFycmF5KSwKICsJICAgICAgdmFs dWVfY29udGVudHMgKHNhdmVkX2FycmF5KSArIHZhbHVlX2J5dGVfb2Zmc2V0LAogKwkgICAgICBU WVBFX0xFTkdUSCAobmV3X2FycmF5X3R5cGUpKTsKICsgICAgfQotKworIAorLSAgcmV0dXJuIHZh bHVlX3NsaWNlIChhcnJheSwgbG93X2JvdW5kLCBoaWdoX2JvdW5kIC0gbG93X2JvdW5kICsgMSk7 CiArICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKICsgIHJldHVybiBhcnJheTsKICB9CiAgCiAg Ci1AQCAtNzEwLDYgKzkwMSw3IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5 cGUgKmV4cGVjdF90eXBlLAorQEAgLTcxMCw2ICs5MDUsNyBAQCBldmFsdWF0ZV9zdWJleHBfc3Rh bmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKICAgIGludCBzYXZlX3BvczE7CiAgICBz dHJ1Y3Qgc3ltYm9sICpmdW5jdGlvbiA9IE5VTEw7CiAgICBjaGFyICpmdW5jdGlvbl9uYW1lID0g TlVMTDsKQEAgLTE3NzQsNyArMTY5NSw3IEBAIGluZGV4IGQ3ZjgwZTIuLjhlY2E0YzggMTAwNjQ0 CiAgCiAgICBwYyA9ICgqcG9zKSsrOwogICAgb3AgPSBleHAtPmVsdHNbcGNdLm9wY29kZTsKLUBA IC0xNzc2LDYgKzE5NjgsOCBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBl ICpleHBlY3RfdHlwZSwKK0BAIC0xNzc2LDYgKzE5NzIsOCBAQCBldmFsdWF0ZV9zdWJleHBfc3Rh bmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKICAKICAgICAgICAvKiBGaXJzdCBkZXRl cm1pbmUgdGhlIHR5cGUgY29kZSB3ZSBhcmUgZGVhbGluZyB3aXRoLiAgKi8KICAgICAgICBhcmcx ID0gZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4cCwgcG9zLCBub3NpZGUpOwpAQCAtMTc4 Myw3ICsxNzA0LDcgQEAgaW5kZXggZDdmODBlMi4uOGVjYTRjOCAxMDA2NDQKICAgICAgICB0eXBl ID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOwogICAgICAgIGNvZGUgPSBUWVBF X0NPREUgKHR5cGUpOwogIAotQEAgLTE3OTYsMjMgKzE5OTAsMTMgQEAgZXZhbHVhdGVfc3ViZXhw X3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCitAQCAtMTc5NiwyMyArMTk5NCwx MyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwK ICAJICAgICAgY29kZSA9IFRZUEVfQ09ERSAodHlwZSk7CiAgCSAgICB9CiAgCX0gCkBAIC0xODA5 LDcgKzE3MzAsNyBAQCBpbmRleCBkN2Y4MGUyLi44ZWNhNGM4IDEwMDY0NAogIAogIAljYXNlIFRZ UEVfQ09ERV9QVFI6CiAgCWNhc2UgVFlQRV9DT0RFX0ZVTkM6Ci1AQCAtMjIzOSw0OSArMjQyMyw2 IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAor QEAgLTIyMjUsNDkgKzI0MTMsNiBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0 eXBlICpleHBlY3RfdHlwZSwKICAJfQogICAgICAgIHJldHVybiAoYXJnMSk7CiAgCkBAIC0xODU5 LDcgKzE3ODAsNyBAQCBpbmRleCBkN2Y4MGUyLi44ZWNhNGM4IDEwMDY0NAogICAgICBjYXNlIEJJ Tk9QX0xPR0lDQUxfQU5EOgogICAgICAgIGFyZzEgPSBldmFsdWF0ZV9zdWJleHAgKE5VTExfVFlQ RSwgZXhwLCBwb3MsIG5vc2lkZSk7CiAgICAgICAgaWYgKG5vc2lkZSA9PSBFVkFMX1NLSVApCi1A QCAtMjUxMywxNSArMjY1NCwyMyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0 eXBlICpleHBlY3RfdHlwZSwKK0BAIC0yNDk5LDE1ICsyNjQ0LDIzIEBAIGV2YWx1YXRlX3N1YmV4 cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAogICAgICAgIGlmIChleHBlY3Rf dHlwZSAmJiBUWVBFX0NPREUgKGV4cGVjdF90eXBlKSA9PSBUWVBFX0NPREVfUFRSKQogIAlleHBl Y3RfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGNoZWNrX3R5cGVkZWYgKGV4cGVjdF90eXBlKSk7 CiAgICAgICAgYXJnMSA9IGV2YWx1YXRlX3N1YmV4cCAoZXhwZWN0X3R5cGUsIGV4cCwgcG9zLCBu b3NpZGUpOwpAQCAtMTg4NSw3ICsxODA2LDcgQEAgaW5kZXggZDdmODBlMi4uOGVjYTRjOCAxMDA2 NDQKICAgICAgICBlbHNlIGlmIChub3NpZGUgPT0gRVZBTF9BVk9JRF9TSURFX0VGRkVDVFMpCiAg CXsKICAJICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOwotQEAgLTI1 MzAsMTIgKzI2NzksMTggQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAq ZXhwZWN0X3R5cGUsCitAQCAtMjUxNiwxMiArMjY2OSwxOCBAQCBldmFsdWF0ZV9zdWJleHBfc3Rh bmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKICAJICAvKiBJbiBDIHlvdSBjYW4gZGVy ZWZlcmVuY2UgYW4gYXJyYXkgdG8gZ2V0IHRoZSAxc3QgZWx0LiAgKi8KICAJICAgICAgfHwgVFlQ RV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkKICAJICAgICkKQEAgLTE5MDksNyArMTgz MCw3IEBAIGluZGV4IGQ3ZjgwZTIuLjhlY2E0YzggMTAwNjQ0CiAgCSAgZWxzZQogIAkgICAgZXJy b3IgKF8oIkF0dGVtcHQgdG8gdGFrZSBjb250ZW50cyBvZiBhIG5vbi1wb2ludGVyIHZhbHVlLiIp KTsKICAJfQotQEAgLTI1NDUsOSArMjcwMCwxNCBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQg KHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKK0BAIC0yNTMxLDkgKzI2OTAsMTQgQEAgZXZhbHVh dGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCiAgCSBkby4gICJs b25nIGxvbmciIHZhcmlhYmxlcyBhcmUgcmFyZSBlbm91Z2ggdGhhdAogIAkgQlVJTFRJTl9UWVBF X0xPTkdFU1Qgd291bGQgc2VlbSB0byBiZSBhIG1pc3Rha2UuICAqLwogICAgICAgIGlmIChUWVBF X0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9JTlQpCkBAIC0xOTI3LDcgKzE4NDgsNyBAQCBpbmRl eCBkN2Y4MGUyLi44ZWNhNGM4IDEwMDY0NAogIAogICAgICBjYXNlIFVOT1BfQUREUjoKICAgICAg ICAvKiBDKys6IGNoZWNrIGZvciBhbmQgaGFuZGxlIHBvaW50ZXIgdG8gbWVtYmVycy4gICovCi1A QCAtMjk2MCw3ICszMTIwLDcgQEAgZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24gKHN0cnVj dCBleHByZXNzaW9uICpleHAsCitAQCAtMjk2Myw3ICszMTI3LDcgQEAgZXZhbHVhdGVfc3ViZXhw X3dpdGhfY29lcmNpb24gKHN0cnVjdCBleHByZXNzaW9uICpleHAsCiAgewogICAgZW51bSBleHBf b3Bjb2RlIG9wOwogICAgaW50IHBjOwpAQCAtMTkzNiw3ICsxODU3LDcgQEAgaW5kZXggZDdmODBl Mi4uOGVjYTRjOCAxMDA2NDQKICAgIHN0cnVjdCBzeW1ib2wgKnZhcjsKICAgIHN0cnVjdCB0eXBl ICp0eXBlOwogIAotQEAgLTI5NzEsMTMgKzMxMzEsMTggQEAgZXZhbHVhdGVfc3ViZXhwX3dpdGhf Y29lcmNpb24gKHN0cnVjdCBleHByZXNzaW9uICpleHAsCitAQCAtMjk3NCwxMyArMzEzOCwxOCBA QCBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwK ICAgICAgewogICAgICBjYXNlIE9QX1ZBUl9WQUxVRToKICAgICAgICB2YXIgPSBleHAtPmVsdHNb cGMgKyAyXS5zeW1ib2w7CkBAIC0xOTU2LDcgKzE4NzcsNyBAQCBpbmRleCBkN2Y4MGUyLi44ZWNh NGM4IDEwMDY0NAogIAkgIHJldHVybiB2YWx1ZV9jYXN0IChsb29rdXBfcG9pbnRlcl90eXBlIChU WVBFX1RBUkdFVF9UWVBFICh0eXBlKSksCiAgCQkJICAgICB2YWwpOwogIAl9Ci1AQCAtMzAzNSw5 ICszMjAwLDEzIEBAIGV2YWx1YXRlX3N1YmV4cF9mb3Jfc2l6ZW9mIChzdHJ1Y3QgZXhwcmVzc2lv biAqZXhwLCBpbnQgKnBvcykKK0BAIC0zMDM4LDkgKzMyMDcsMTMgQEAgZXZhbHVhdGVfc3ViZXhw X2Zvcl9zaXplb2YgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCAqcG9zKQogIAogICAgICBj YXNlIE9QX1ZBUl9WQUxVRToKICAgICAgICAoKnBvcykgKz0gNDsKQEAgLTE5NzMsNyArMTg5NCw3 IEBAIGluZGV4IGQ3ZjgwZTIuLjhlY2E0YzggMTAwNjQ0CiAgCiAgICAgIGRlZmF1bHQ6CiAgICAg ICAgdmFsID0gZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4cCwgcG9zLCBFVkFMX0FWT0lE X1NJREVfRUZGRUNUUyk7Ci1AQCAtMzA2OCwxOCArMzIzNywyNSBAQCBwYXJzZV9hbmRfZXZhbF90 eXBlIChjaGFyICpwLCBpbnQgbGVuZ3RoKQorQEAgLTMwNzEsMTggKzMyNDQsMjUgQEAgcGFyc2Vf YW5kX2V2YWxfdHlwZSAoY2hhciAqcCwgaW50IGxlbmd0aCkKICBpbnQKICBjYWxjX2Y3N19hcnJh eV9kaW1zIChzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlwZSkKICB7CkBAIC0yMjQ3LDcgKzIxNjgsNyBA QCBpbmRleCBkMDFkNmVjLi44YTIxMTQ5IDEwMDY0NAogICAgc3dpdGNoIChUWVBFX0NPREUgKHR5 cGUpKQogICAgICB7CiBkaWZmIC0tZ2l0IGEvZ2RiL2ZpbmR2YXIuYyBiL2dkYi9maW5kdmFyLmMK LWluZGV4IGZiNjZlMGYuLjQ1Njg0ZjAgMTAwNjQ0CitpbmRleCBmNTg2Y2UyLi44ZmQ1YTA4IDEw MDY0NAogLS0tIGEvZ2RiL2ZpbmR2YXIuYwogKysrIGIvZ2RiL2ZpbmR2YXIuYwogQEAgLTM0LDYg KzM0LDcgQEAKQEAgLTIyNTgsNyArMjE3OSw3IEBAIGluZGV4IGZiNjZlMGYuLjQ1Njg0ZjAgMTAw NjQ0CiAgCiAgLyogQmFzaWMgYnl0ZS1zd2FwcGluZyByb3V0aW5lcy4gIEFsbCAnZXh0cmFjdCcg ZnVuY3Rpb25zIHJldHVybiBhCiAgICAgaG9zdC1mb3JtYXQgaW50ZWdlciBmcm9tIGEgdGFyZ2V0 LWZvcm1hdCBpbnRlZ2VyIGF0IEFERFIgd2hpY2ggaXMKLUBAIC00MzcsNyArNDM4LDEwIEBAIG1p bnN5bV9sb29rdXBfaXRlcmF0b3JfY2IgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpj Yl9kYXRhKQorQEAgLTQ0Myw3ICs0NDQsMTAgQEAgbWluc3ltX2xvb2t1cF9pdGVyYXRvcl9jYiAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmNiX2RhdGEpCiAgfQogIAogIC8qIEEgZGVm YXVsdCBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlICJsYV9yZWFkX3Zhcl92YWx1ZSIgaG9vayBpbgpA QCAtMjI3MCw3ICsyMTkxLDcgQEAgaW5kZXggZmI2NmUwZi4uNDU2ODRmMCAxMDA2NDQKICAKICBz dHJ1Y3QgdmFsdWUgKgogIGRlZmF1bHRfcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZh ciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQotQEAgLTQ0NiwxMyArNDUwLDYgQEAgZGVmYXVs dF9yZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAq ZnJhbWUpCitAQCAtNDUyLDEzICs0NTYsNiBAQCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1 Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKICAgIHN0cnVjdCB0eXBl ICp0eXBlID0gU1lNQk9MX1RZUEUgKHZhcik7CiAgICBDT1JFX0FERFIgYWRkcjsKICAKQEAgLTIy ODQsMTUgKzIyMDUsMTUgQEAgaW5kZXggZmI2NmUwZi4uNDU2ODRmMCAxMDA2NDQKICAgIGlmIChz eW1ib2xfcmVhZF9uZWVkc19mcmFtZSAodmFyKSkKICAgICAgZ2RiX2Fzc2VydCAoZnJhbWUpOwog IAotQEAgLTQ5Miw3ICs0ODksNiBAQCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3lt Ym9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKK0BAIC01MDIsNyArNDk5LDYgQEAg ZGVmYXVsdF9yZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVf aW5mbyAqZnJhbWUpCiAgICAgICAgcmV0dXJuIHY7CiAgCiAgICAgIGNhc2UgTE9DX1NUQVRJQzoK IC0gICAgICB2ID0gYWxsb2NhdGVfdmFsdWVfbGF6eSAodHlwZSk7CiAgICAgICAgaWYgKG92ZXJs YXlfZGVidWdnaW5nKQogIAlhZGRyID0gc3ltYm9sX292ZXJsYXllZF9hZGRyZXNzIChTWU1CT0xf VkFMVUVfQUREUkVTUyAodmFyKSwKLSAJCQkJCSBTWU1CT0xfT0JKX1NFQ1RJT04gKHZhcikpOwot QEAgLTUwNiw3ICs1MDIsNiBAQCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9s ICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKKyAJCQkJCSBTWU1CT0xfT0JKX1NFQ1RJ T04gKFNZTUJPTF9PQkpGSUxFICh2YXIpLAorQEAgLTUxNyw3ICs1MTMsNiBAQCBkZWZhdWx0X3Jl YWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFt ZSkKICAJZXJyb3IgKF8oIlVua25vd24gYXJndW1lbnQgbGlzdCBhZGRyZXNzIGZvciBgJXMnLiIp LAogIAkgICAgICAgU1lNQk9MX1BSSU5UX05BTUUgKHZhcikpOwogICAgICAgIGFkZHIgKz0gU1lN Qk9MX1ZBTFVFICh2YXIpOwpAQCAtMjMwMCw3ICsyMjIxLDcgQEAgaW5kZXggZmI2NmUwZi4uNDU2 ODRmMCAxMDA2NDQKICAgICAgICBicmVhazsKICAKICAgICAgY2FzZSBMT0NfUkVGX0FSRzoKLUBA IC01MjEsMTQgKzUxNiwxMiBAQCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9s ICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKK0BAIC01MzIsMTQgKzUyNywxMiBAQCBk ZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9p bmZvICpmcmFtZSkKICAJYXJncmVmICs9IFNZTUJPTF9WQUxVRSAodmFyKTsKICAJcmVmID0gdmFs dWVfYXQgKGxvb2t1cF9wb2ludGVyX3R5cGUgKHR5cGUpLCBhcmdyZWYpOwogIAlhZGRyID0gdmFs dWVfYXNfYWRkcmVzcyAocmVmKTsKQEAgLTIzMTUsMTUgKzIyMzYsMTUgQEAgaW5kZXggZmI2NmUw Zi4uNDU2ODRmMCAxMDA2NDQKICAgICAgICBicmVhazsKICAKICAgICAgY2FzZSBMT0NfVFlQRURF RjoKLUBAIC01MzcsNyArNTMwLDYgQEAgZGVmYXVsdF9yZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5 bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCitAQCAtNTQ4LDcgKzU0MSw2IEBA IGRlZmF1bHRfcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1l X2luZm8gKmZyYW1lKQogICAgICAgIGJyZWFrOwogIAogICAgICBjYXNlIExPQ19CTE9DSzoKIC0g ICAgICB2ID0gYWxsb2NhdGVfdmFsdWVfbGF6eSAodHlwZSk7CiAgICAgICAgaWYgKG92ZXJsYXlf ZGVidWdnaW5nKQogIAlhZGRyID0gc3ltYm9sX292ZXJsYXllZF9hZGRyZXNzCi0gCSAgKEJMT0NL X1NUQVJUIChTWU1CT0xfQkxPQ0tfVkFMVUUgKHZhcikpLCBTWU1CT0xfT0JKX1NFQ1RJT04gKHZh cikpOwotQEAgLTU2Myw3ICs1NTUsNiBAQCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qg c3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKKyAJICAoQkxPQ0tfU1RBUlQg KFNZTUJPTF9CTE9DS19WQUxVRSAodmFyKSksIFNZTUJPTF9PQkpfU0VDVElPTiAoU1lNQk9MX09C SkZJTEUgKHZhciksCitAQCAtNTc1LDcgKzU2Nyw2IEBAIGRlZmF1bHRfcmVhZF92YXJfdmFsdWUg KHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQogIAkgICAgICAg ICAgICAgU1lNQk9MX1BSSU5UX05BTUUgKHZhcikpOwogIAogIAkgICAgYWRkciA9IHZhbHVlX2Fz X2FkZHJlc3MgKHJlZ3ZhbCk7CkBAIC0yMzMxLDcgKzIyNTIsNyBAQCBpbmRleCBmYjY2ZTBmLi40 NTY4NGYwIDEwMDY0NAogIAkgIH0KICAJZWxzZQogIAkgIHsKLUBAIC02MTIsNyArNjAzLDYgQEAg ZGVmYXVsdF9yZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVf aW5mbyAqZnJhbWUpCitAQCAtNjIwLDcgKzYxMSw2IEBAIGRlZmF1bHRfcmVhZF92YXJfdmFsdWUg KHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQogIAlpZiAob2Jq X3NlY3Rpb24KICAJICAgICYmIChvYmpfc2VjdGlvbi0+dGhlX2JmZF9zZWN0aW9uLT5mbGFncyAm IFNFQ19USFJFQURfTE9DQUwpICE9IDApCiAgCSAgYWRkciA9IHRhcmdldF90cmFuc2xhdGVfdGxz X2FkZHJlc3MgKG9ial9zZWN0aW9uLT5vYmpmaWxlLCBhZGRyKTsKQEAgLTIzMzksNyArMjI2MCw3 IEBAIGluZGV4IGZiNjZlMGYuLjQ1Njg0ZjAgMTAwNjQ0CiAgICAgICAgfQogICAgICAgIGJyZWFr OwogIAotQEAgLTYyNSw2ICs2MTUsMTAgQEAgZGVmYXVsdF9yZWFkX3Zhcl92YWx1ZSAoc3RydWN0 IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCitAQCAtNjMzLDYgKzYyMywx MCBAQCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBm cmFtZV9pbmZvICpmcmFtZSkKICAgICAgICBicmVhazsKICAgICAgfQogIApAQCAtMjM1MCw3ICsy MjcxLDcgQEAgaW5kZXggZmI2NmUwZi4uNDU2ODRmMCAxMDA2NDQKICAgIFZBTFVFX0xWQUwgKHYp ID0gbHZhbF9tZW1vcnk7CiAgICBzZXRfdmFsdWVfYWRkcmVzcyAodiwgYWRkcik7CiAgICByZXR1 cm4gdjsKLUBAIC03MjksMTAgKzcyMywxMSBAQCBzdHJ1Y3QgdmFsdWUgKgorQEAgLTczNywxMCAr NzMxLDExIEBAIHN0cnVjdCB2YWx1ZSAqCiAgdmFsdWVfZnJvbV9yZWdpc3RlciAoc3RydWN0IHR5 cGUgKnR5cGUsIGludCByZWdudW0sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKICB7CiAgICBz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoIChmcmFtZSk7CkBAIC0yMzY0 LDcgKzIyODUsNyBAQCBpbmRleCBmYjY2ZTBmLi40NTY4NGYwIDEwMDY0NAogICAgICB7CiAgICAg ICAgaW50IG9wdGltLCB1bmF2YWlsLCBvazsKICAKLUBAIC03NDcsNyArNzQyLDcgQEAgdmFsdWVf ZnJvbV9yZWdpc3RlciAoc3RydWN0IHR5cGUgKnR5cGUsIGludCByZWdudW0sIHN0cnVjdCBmcmFt ZV9pbmZvICpmcmFtZSkKK0BAIC03NTUsNyArNzUwLDcgQEAgdmFsdWVfZnJvbV9yZWdpc3RlciAo c3RydWN0IHR5cGUgKnR5cGUsIGludCByZWdudW0sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkK ICAgICAgICBWQUxVRV9MVkFMICh2KSA9IGx2YWxfcmVnaXN0ZXI7CiAgICAgICAgVkFMVUVfRlJB TUVfSUQgKHYpID0gZ2V0X2ZyYW1lX2lkIChmcmFtZSk7CiAgICAgICAgVkFMVUVfUkVHTlVNICh2 KSA9IHJlZ251bTsKQEAgLTIzOTQsMjAgKzIzMTUsMjAgQEAgaW5kZXggMDVhMzhiMi4uOTgwMWZk ZiAxMDA2NDQKICAgIHNldCB2YXJpYWJsZSAkZ2RiX2luaXRfZG9uZSA9IDEKICAKIGRpZmYgLS1n aXQgYS9nZGIvZ2RidHlwZXMuYyBiL2dkYi9nZGJ0eXBlcy5jCi1pbmRleCAxMjczMGQ3Li41YTYx NGUwIDEwMDY0NAoraW5kZXggZDE5YzU5My4uMzk5NTkxMyAxMDA2NDQKIC0tLSBhL2dkYi9nZGJ0 eXBlcy5jCiArKysgYi9nZGIvZ2RidHlwZXMuYwotQEAgLTM3LDYgKzM3LDkgQEAKLSAjaW5jbHVk ZSAiZ2RiX2Fzc2VydC5oIgorQEAgLTM4LDYgKzM4LDkgQEAKICAjaW5jbHVkZSAiaGFzaHRhYi5o IgogICNpbmNsdWRlICJleGNlcHRpb25zLmgiCisgI2luY2x1ZGUgImNwLXN1cHBvcnQuaCIKICsj aW5jbHVkZSAib2JzZXJ2ZXIuaCIKICsjaW5jbHVkZSAiZHdhcmYyZXhwci5oIgogKyNpbmNsdWRl ICJkd2FyZjJsb2MuaCIKICAKICAvKiBJbml0aWFsaXplIEJBRE5FU1MgY29uc3RhbnRzLiAgKi8K ICAKLUBAIC0xODUsNiArMTg4LDQzIEBAIGFsbG9jX3R5cGUgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlKQorQEAgLTE4Niw2ICsxODksNDMgQEAgYWxsb2NfdHlwZSAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUpCiAgICByZXR1cm4gdHlwZTsKICB9CiAgCkBAIC0yNDUxLDcgKzIzNzIsNyBAQCBpbmRl eCAxMjczMGQ3Li41YTYxNGUwIDEwMDY0NAogIC8qIEFsbG9jYXRlIGEgbmV3IEdEQkFSQ0gtYXNz b2NpYXRlZCB0eXBlIHN0cnVjdHVyZSBhbmQgZmlsbCBpdAogICAgIHdpdGggc29tZSBkZWZhdWx0 cy4gIFNwYWNlIGZvciB0aGUgdHlwZSBzdHJ1Y3R1cmUgaXMgYWxsb2NhdGVkCiAgICAgb24gdGhl IGhlYXAuICAqLwotQEAgLTMxMCw3ICszNTAsNyBAQCBtYWtlX3BvaW50ZXJfdHlwZSAoc3RydWN0 IHR5cGUgKnR5cGUsIHN0cnVjdCB0eXBlICoqdHlwZXB0cikKK0BAIC0zMTEsNyArMzUxLDcgQEAg bWFrZV9wb2ludGVyX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlwZSAqKnR5cGVw dHIpCiAgCiAgICBpZiAodHlwZXB0ciA9PSAwIHx8ICp0eXBlcHRyID09IDApCS8qIFdlJ2xsIG5l ZWQgdG8gYWxsb2NhdGUgb25lLiAgKi8KICAgICAgewpAQCAtMjQ2MCw3ICsyMzgxLDcgQEAgaW5k ZXggMTI3MzBkNy4uNWE2MTRlMCAxMDA2NDQKICAgICAgICBpZiAodHlwZXB0cikKICAJKnR5cGVw dHIgPSBudHlwZTsKICAgICAgfQotQEAgLTM4Myw3ICs0MjMsNyBAQCBtYWtlX3JlZmVyZW5jZV90 eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHR5cGUgKip0eXBlcHRyKQorQEAgLTM4NCw3 ICs0MjQsNyBAQCBtYWtlX3JlZmVyZW5jZV90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0 IHR5cGUgKip0eXBlcHRyKQogIAogICAgaWYgKHR5cGVwdHIgPT0gMCB8fCAqdHlwZXB0ciA9PSAw KQkvKiBXZSdsbCBuZWVkIHRvIGFsbG9jYXRlIG9uZS4gICovCiAgICAgIHsKQEAgLTI0NjksNyAr MjM5MCw3IEBAIGluZGV4IDEyNzMwZDcuLjVhNjE0ZTAgMTAwNjQ0CiAgICAgICAgaWYgKHR5cGVw dHIpCiAgCSp0eXBlcHRyID0gbnR5cGU7CiAgICAgIH0KLUBAIC04MDYsNiArODQ2LDcgQEAgY3Jl YXRlX3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICpyZXN1bHRfdHlwZSwgc3RydWN0IHR5cGUgKmlu ZGV4X3R5cGUsCitAQCAtODA3LDYgKzg0Nyw3IEBAIGNyZWF0ZV9yYW5nZV90eXBlIChzdHJ1Y3Qg dHlwZSAqcmVzdWx0X3R5cGUsIHN0cnVjdCB0eXBlICppbmRleF90eXBlLAogICAgICBUWVBFX1pB TExPQyAocmVzdWx0X3R5cGUsIHNpemVvZiAoc3RydWN0IHJhbmdlX2JvdW5kcykpOwogICAgVFlQ RV9MT1dfQk9VTkQgKHJlc3VsdF90eXBlKSA9IGxvd19ib3VuZDsKICAgIFRZUEVfSElHSF9CT1VO RCAocmVzdWx0X3R5cGUpID0gaGlnaF9ib3VuZDsKQEAgLTI0NzcsNyArMjM5OCw3IEBAIGluZGV4 IDEyNzMwZDcuLjVhNjE0ZTAgMTAwNjQ0CiAgCiAgICBpZiAobG93X2JvdW5kID49IDApCiAgICAg IFRZUEVfVU5TSUdORUQgKHJlc3VsdF90eXBlKSA9IDE7Ci1AQCAtOTI2LDYgKzk2NywxMCBAQCBn ZXRfYXJyYXlfYm91bmRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgTE9OR0VTVCAqbG93X2JvdW5kLCBM T05HRVNUICpoaWdoX2JvdW5kKQorQEAgLTkyNyw2ICs5NjgsMTAgQEAgZ2V0X2FycmF5X2JvdW5k cyAoc3RydWN0IHR5cGUgKnR5cGUsIExPTkdFU1QgKmxvd19ib3VuZCwgTE9OR0VTVCAqaGlnaF9i b3VuZCkKICAgIHJldHVybiAxOwogIH0KICAKQEAgLTI0ODgsNyArMjQwOSw3IEBAIGluZGV4IDEy NzMwZDcuLjVhNjE0ZTAgMTAwNjQ0CiAgLyogQ3JlYXRlIGFuIGFycmF5IHR5cGUgdXNpbmcgZWl0 aGVyIGEgYmxhbmsgdHlwZSBzdXBwbGllZCBpbgogICAgIFJFU1VMVF9UWVBFLCBvciBjcmVhdGlu ZyBhIG5ldyB0eXBlLCBpbmhlcml0aW5nIHRoZSBvYmpmaWxlIGZyb20KICAgICBSQU5HRV9UWVBF LgotQEAgLTk0OSwyNiArOTk0LDMxIEBAIGNyZWF0ZV9hcnJheV90eXBlIChzdHJ1Y3QgdHlwZSAq cmVzdWx0X3R5cGUsCitAQCAtOTUwLDI2ICs5OTUsMzEgQEAgY3JlYXRlX2FycmF5X3R5cGUgKHN0 cnVjdCB0eXBlICpyZXN1bHRfdHlwZSwKICAKICAgIFRZUEVfQ09ERSAocmVzdWx0X3R5cGUpID0g VFlQRV9DT0RFX0FSUkFZOwogICAgVFlQRV9UQVJHRVRfVFlQRSAocmVzdWx0X3R5cGUpID0gZWxl bWVudF90eXBlOwpAQCAtMjUzMyw3ICsyNDU0LDcgQEAgaW5kZXggMTI3MzBkNy4uNWE2MTRlMCAx MDA2NDQKICAKICAgIHJldHVybiByZXN1bHRfdHlwZTsKICB9Ci1AQCAtMTQ4OSw2ICsxNTM5LDEw NSBAQCBzdHViX25vbmFtZV9jb21wbGFpbnQgKHZvaWQpCitAQCAtMTQ5MCw2ICsxNTQwLDEwNSBA QCBzdHViX25vbmFtZV9jb21wbGFpbnQgKHZvaWQpCiAgICBjb21wbGFpbnQgKCZzeW1maWxlX2Nv bXBsYWludHMsIF8oInN0dWIgdHlwZSBoYXMgTlVMTCBuYW1lIikpOwogIH0KICAKQEAgLTI2Mzks NyArMjU2MCw3IEBAIGluZGV4IDEyNzMwZDcuLjVhNjE0ZTAgMTAwNjQ0CiAgLyogRmluZCB0aGUg cmVhbCB0eXBlIG9mIFRZUEUuICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHJlYWwgdHlwZSwK ICAgICBhZnRlciByZW1vdmluZyBhbGwgbGF5ZXJzIG9mIHR5cGVkZWZzLCBhbmQgY29tcGxldGlu ZyBvcGFxdWUgb3Igc3R1YgogICAgIHR5cGVzLiAgQ29tcGxldGlvbiBjaGFuZ2VzIHRoZSBUWVBF IGFyZ3VtZW50LCBidXQgc3RyaXBwaW5nIG9mCi1AQCAtMTY1NSw1MiArMTgwNCwzNyBAQCBjaGVj a190eXBlZGVmIChzdHJ1Y3QgdHlwZSAqdHlwZSkKK0BAIC0xNjU2LDUyICsxODA1LDM3IEBAIGNo ZWNrX3R5cGVkZWYgKHN0cnVjdCB0eXBlICp0eXBlKQogICAgICAgICAgfQogICAgICB9CiAgCkBA IC0yNzEzLDcgKzI2MzQsNyBAQCBpbmRleCAxMjczMGQ3Li41YTYxNGUwIDEwMDY0NAogIAkgIFRZ UEVfVEFSR0VUX1NUVUIgKHR5cGUpID0gMDsKICAJfQogICAgICAgIGVsc2UgaWYgKFRZUEVfQ09E RSAodHlwZSkgPT0gVFlQRV9DT0RFX1JBTkdFKQotQEAgLTE3MDgsNiArMTg0Miw3IEBAIGNoZWNr X3R5cGVkZWYgKHN0cnVjdCB0eXBlICp0eXBlKQorQEAgLTE3MDksNiArMTg0Myw3IEBAIGNoZWNr X3R5cGVkZWYgKHN0cnVjdCB0eXBlICp0eXBlKQogIAkgIFRZUEVfTEVOR1RIICh0eXBlKSA9IFRZ UEVfTEVOR1RIICh0YXJnZXRfdHlwZSk7CiAgCSAgVFlQRV9UQVJHRVRfU1RVQiAodHlwZSkgPSAw OwogIAl9CkBAIC0yNzIxLDcgKzI2NDIsNyBAQCBpbmRleCAxMjczMGQ3Li41YTYxNGUwIDEwMDY0 NAogICAgICB9CiAgCiAgICB0eXBlID0gbWFrZV9xdWFsaWZpZWRfdHlwZSAodHlwZSwgaW5zdGFu Y2VfZmxhZ3MsIE5VTEwpOwotQEAgLTMzODQsMzMgKzM1MTksNDIgQEAgdHlwZV9wYWlyX2VxIChj b25zdCB2b2lkICppdGVtX2xocywgY29uc3Qgdm9pZCAqaXRlbV9yaHMpCitAQCAtMzQwNCwzMyAr MzUzOSw0MiBAQCB0eXBlX3BhaXJfZXEgKGNvbnN0IHZvaWQgKml0ZW1fbGhzLCBjb25zdCB2b2lk ICppdGVtX3JocykKICB9CiAgCiAgLyogQWxsb2NhdGUgdGhlIGhhc2ggdGFibGUgdXNlZCBieSBj b3B5X3R5cGVfcmVjdXJzaXZlIHRvIHdhbGsKQEAgLTI3NzksNyArMjcwMCw3IEBAIGluZGV4IDEy NzMwZDcuLjVhNjE0ZTAgMTAwNjQ0CiAgICAgIHJldHVybiB0eXBlOwogIAogICAgLyogVGhpcyB0 eXBlIHNob3VsZG4ndCBiZSBwb2ludGluZyB0byBhbnkgdHlwZXMgaW4gb3RoZXIgb2JqZmlsZXM7 Ci1AQCAtMzQyNSw5ICszNTY5LDEwIEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLAorQEAgLTM0NDUsOSArMzU4OSwxMCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZl IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAgIG5ld190eXBlID0gYWxsb2NfdHlwZV9hcmNo IChnZXRfdHlwZV9hcmNoICh0eXBlKSk7CiAgCiAgICAvKiBXZSBtdXN0IGFkZCB0aGUgbmV3IHR5 cGUgdG8gdGhlIGhhc2ggdGFibGUgaW1tZWRpYXRlbHksIGluIGNhc2UKQEAgLTI3OTMsNyArMjcx NCw3IEBAIGluZGV4IDEyNzMwZDcuLjVhNjE0ZTAgMTAwNjQ0CiAgICBzdG9yZWQtPm9sZCA9IHR5 cGU7CiAgICBzdG9yZWQtPm5ldyA9IG5ld190eXBlOwogICAgKnNsb3QgPSBzdG9yZWQ7Ci1AQCAt MzQzOCw2ICszNTgzLDIxIEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLAorQEAgLTM0NTgsNiArMzYwMywyMSBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAgIFRZUEVfT0JKRklMRV9PV05FRCAobmV3X3R5cGUpID0g MDsKICAgIFRZUEVfT1dORVIgKG5ld190eXBlKS5nZGJhcmNoID0gZ2V0X3R5cGVfYXJjaCAodHlw ZSk7CiAgCkBAIC0yODE1LDcgKzI3MzYsNyBAQCBpbmRleCAxMjczMGQ3Li41YTYxNGUwIDEwMDY0 NAogICAgaWYgKFRZUEVfTkFNRSAodHlwZSkpCiAgICAgIFRZUEVfTkFNRSAobmV3X3R5cGUpID0g eHN0cmR1cCAoVFlQRV9OQU1FICh0eXBlKSk7CiAgICBpZiAoVFlQRV9UQUdfTkFNRSAodHlwZSkp Ci1AQCAtMzQ0NiwxMiArMzYwNiw0OCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwKK0BAIC0zNDY2LDEyICszNjI2LDQ4IEBAIGNvcHlfdHlwZV9yZWN1cnNp dmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogICAgVFlQRV9JTlNUQU5DRV9GTEFHUyAobmV3 X3R5cGUpID0gVFlQRV9JTlNUQU5DRV9GTEFHUyAodHlwZSk7CiAgICBUWVBFX0xFTkdUSCAobmV3 X3R5cGUpID0gVFlQRV9MRU5HVEggKHR5cGUpOwogIApAQCAtMjg2NCw3ICsyNzg1LDcgQEAgaW5k ZXggMTI3MzBkNy4uNWE2MTRlMCAxMDA2NDQKICAgICAgICBUWVBFX0ZJRUxEUyAobmV3X3R5cGUp ID0gWENBTExPQyAobmZpZWxkcywgc3RydWN0IGZpZWxkKTsKICAgICAgICBmb3IgKGkgPSAwOyBp IDwgbmZpZWxkczsgaSsrKQogIAl7Ci1AQCAtMzQ2MCw4ICszNjU2LDggQEAgY29weV90eXBlX3Jl Y3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCitAQCAtMzQ4MCw4ICszNjc2LDggQEAg Y29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiAgCSAgVFlQRV9G SUVMRF9CSVRTSVpFIChuZXdfdHlwZSwgaSkgPSBUWVBFX0ZJRUxEX0JJVFNJWkUgKHR5cGUsIGkp OwogIAkgIGlmIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpKQogIAkgICAgVFlQRV9GSUVMRF9U WVBFIChuZXdfdHlwZSwgaSkKQEAgLTI4NzUsNyArMjc5Niw3IEBAIGluZGV4IDEyNzMwZDcuLjVh NjE0ZTAgMTAwNjQ0CiAgCSAgaWYgKFRZUEVfRklFTERfTkFNRSAodHlwZSwgaSkpCiAgCSAgICBU WVBFX0ZJRUxEX05BTUUgKG5ld190eXBlLCBpKSA9IAogIAkgICAgICB4c3RyZHVwIChUWVBFX0ZJ RUxEX05BTUUgKHR5cGUsIGkpKTsKLUBAIC0zNDkyLDI0ICszNjg4LDE4NCBAQCBjb3B5X3R5cGVf cmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKK0BAIC0zNTEyLDI0ICszNzA4LDE4 NCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAJfQog ICAgICB9CiAgCkBAIC0zMDY3LDcgKzI5ODgsNyBAQCBpbmRleCAxMjczMGQ3Li41YTYxNGUwIDEw MDY0NAogICAgLyogTWF5YmUgY29weSB0aGUgdHlwZV9zcGVjaWZpYyBiaXRzLgogIAogICAgICAg Tk9URSBkcm93LzIwMDUtMTItMDk6IFdlIGRvIG5vdCBjb3B5IHRoZSBDKystc3BlY2lmaWMgYml0 cyBsaWtlCi1AQCAtMzUyNiw2ICszODgyLDE3IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLAorQEAgLTM1NDYsNiArMzkwMiwxNyBAQCBjb3B5X3R5cGVfcmVj dXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAgIHJldHVybiBuZXdfdHlwZTsKICB9 CiAgCkBAIC0zMDg1LDcgKzMwMDYsNyBAQCBpbmRleCAxMjczMGQ3Li41YTYxNGUwIDEwMDY0NAog IC8qIE1ha2UgYSBjb3B5IG9mIHRoZSBnaXZlbiBUWVBFLCBleGNlcHQgdGhhdCB0aGUgcG9pbnRl ciAmIHJlZmVyZW5jZQogICAgIHR5cGVzIGFyZSBub3QgcHJlc2VydmVkLgogICAgIAotQEAgLTQw OTAsNiArNDQ1NywxMyBAQCB2b2lkCitAQCAtNDExMCw2ICs0NDc3LDEzIEBAIHZvaWQKICBfaW5p dGlhbGl6ZV9nZGJ0eXBlcyAodm9pZCkKICB7CiAgICBnZGJ0eXBlc19kYXRhID0gZ2RiYXJjaF9k YXRhX3JlZ2lzdGVyX3Bvc3RfaW5pdCAoZ2RidHlwZXNfcG9zdF9pbml0KTsKQEAgLTMzMzIsNyAr MzI1Myw3IEBAIGluZGV4IDBjYTdhODcuLmM2MDI5ZGMgMTAwNjQ0CiAgCiAgZXh0ZXJuIHN0cnVj dCB0eXBlICpjb3B5X3R5cGUgKGNvbnN0IHN0cnVjdCB0eXBlICp0eXBlKTsKIGRpZmYgLS1naXQg YS9nZGIvbWFpbi5jIGIvZ2RiL21haW4uYwotaW5kZXggMDZmM2ZlYi4uMTQxYTAxYiAxMDA2NDQK K2luZGV4IDY3N2Y1ODcuLjMwYjg0OWUgMTAwNjQ0CiAtLS0gYS9nZGIvbWFpbi5jCiArKysgYi9n ZGIvbWFpbi5jCiBAQCAtMzcsNiArMzcsNyBAQApAQCAtMzM0Myw3ICszMjY0LDcgQEAgaW5kZXgg MDZmM2ZlYi4uMTQxYTAxYiAxMDA2NDQKICAjaW5jbHVkZSAic291cmNlLmgiCiAgI2luY2x1ZGUg ImNsaS9jbGktY21kcy5oIgogICNpbmNsdWRlICJweXRob24vcHl0aG9uLmgiCi1AQCAtMzE0LDYg KzMxNSw4IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCitAQCAtMzE4LDYgKzMxOSw4IEBA IGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCiAgICBjaGFyICpjZGFyZyA9IE5VTEw7CiAgICBj aGFyICp0dHlhcmcgPSBOVUxMOwogIApAQCAtMzM1Miw3ICszMjczLDcgQEAgaW5kZXggMDZmM2Zl Yi4uMTQxYTAxYiAxMDA2NDQKICAgIC8qIFRoZXNlIGFyZSBzdGF0aWMgc28gdGhhdCB3ZSBjYW4g dGFrZSB0aGVpciBhZGRyZXNzIGluIGFuCiAgICAgICBpbml0aWFsaXplci4gICovCiAgICBzdGF0 aWMgaW50IHByaW50X2hlbHA7Ci1AQCAtNTA0LDEwICs1MDcsMTQgQEAgY2FwdHVyZWRfbWFpbiAo dm9pZCAqZGF0YSkKK0BAIC01MTcsMTAgKzUyMCwxNCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpk YXRhKQogICAgICAgIHsiYXJncyIsIG5vX2FyZ3VtZW50LCAmc2V0X2FyZ3MsIDF9LAogICAgICAg IHsibCIsIHJlcXVpcmVkX2FyZ3VtZW50LCAwLCAnbCd9LAogICAgICAgIHsicmV0dXJuLWNoaWxk LXJlc3VsdCIsIG5vX2FyZ3VtZW50LCAmcmV0dXJuX2NoaWxkX3Jlc3VsdCwgMX0sCkBAIC0zMzY4 LDcgKzMyODksNyBAQCBpbmRleCAwNmYzZmViLi4xNDFhMDFiIDEwMDY0NAogICAgICAgIHsKICAJ aW50IG9wdGlvbl9pbmRleDsKICAKLUBAIC01MjUsNiArNTMyLDkgQEAgY2FwdHVyZWRfbWFpbiAo dm9pZCAqZGF0YSkKK0BAIC01MzgsNiArNTQ1LDkgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0 YSkKICAJICBjYXNlIDA6CiAgCSAgICAvKiBMb25nIG9wdGlvbiB0aGF0IGp1c3Qgc2V0cyBhIGZs YWcuICAqLwogIAkgICAgYnJlYWs7CkBAIC0zMzc4LDcgKzMyOTksNyBAQCBpbmRleCAwNmYzZmVi Li4xNDFhMDFiIDEwMDY0NAogIAkgIGNhc2UgT1BUX1NFOgogIAkgICAgc3ltYXJnID0gb3B0YXJn OwogIAkgICAgZXhlY2FyZyA9IG9wdGFyZzsKLUBAIC03MzMsNyArNzQzLDMxIEBAIGNhcHR1cmVk X21haW4gKHZvaWQgKmRhdGEpCitAQCAtNzQ3LDcgKzc1NywzMSBAQCBjYXB0dXJlZF9tYWluICh2 b2lkICpkYXRhKQogIAogICAgLyogTm93IHRoYXQgZ2RiX2luaXQgaGFzIGNyZWF0ZWQgdGhlIGlu aXRpYWwgaW5mZXJpb3IsIHdlJ3JlIGluCiAgICAgICBwb3NpdGlvbiB0byBzZXQgYXJncyBmb3Ig dGhhdCBpbmZlcmlvci4gICovCkBAIC0zNDExLDcgKzMzMzIsNyBAQCBpbmRleCAwNmYzZmViLi4x NDFhMDFiIDEwMDY0NAogICAgICB7CiAgICAgICAgLyogVGhlIHJlbWFpbmluZyBvcHRpb25zIGFy ZSB0aGUgY29tbWFuZC1saW5lIG9wdGlvbnMgZm9yIHRoZQogIAkgaW5mZXJpb3IuICBUaGUgZmly c3Qgb25lIGlzIHRoZSBzeW0vZXhlYyBmaWxlLCBhbmQgdGhlIHJlc3QKLUBAIC0xMDEzLDcgKzEw NDcsOCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQorQEAgLTEwMzcsNyArMTA3MSw4IEBA IGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCiAgCiAgICAvKiBSZWFkIGluIHRoZSBvbGQgaGlz dG9yeSBhZnRlciBhbGwgdGhlIGNvbW1hbmQgZmlsZXMgaGF2ZSBiZWVuCiAgICAgICByZWFkLiAg Ki8KQEAgLTM0MjEsNyArMzM0Miw3IEBAIGluZGV4IDA2ZjNmZWIuLjE0MWEwMWIgMTAwNjQ0CiAg CiAgICBpZiAoYmF0Y2hfZmxhZykKICAgICAgewotQEAgLTEwMjQsMTMgKzEwNTksMjUgQEAgY2Fw dHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKK0BAIC0xMDQ4LDEzICsxMDgzLDI1IEBAIGNhcHR1cmVk X21haW4gKHZvaWQgKmRhdGEpCiAgICAvKiBTaG93IHRpbWUgYW5kL29yIHNwYWNlIHVzYWdlLiAg Ki8KICAgIGRvX2NsZWFudXBzIChwcmVfc3RhdF9jaGFpbik7CiAgCkBAIC0zNDUzLDM3ICszMzc0 LDM1IEBAIGluZGV4IDA2ZjNmZWIuLjE0MWEwMWIgMTAwNjQ0CiAgICAgIH0KICAgIC8qIE5vIGV4 aXQgLS0gZXhpdCBpcyB0aHJvdWdoIHF1aXRfY29tbWFuZC4gICovCiAgfQotQEAgLTEwNjIsNyAr MTEwOSwxMiBAQCBwcmludF9nZGJfaGVscCAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKK0BAIC0x MDg5LDYgKzExMzYsMTIgQEAgcHJpbnRfZ2RiX2hlbHAgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0p CiAgICBmcHV0c191bmZpbHRlcmVkIChfKCJcCiAgVGhpcyBpcyB0aGUgR05VIGRlYnVnZ2VyLiAg VXNhZ2U6XG5cblwKICAgICAgZ2RiIFtvcHRpb25zXSBbZXhlY3V0YWJsZS1maWxlIFtjb3JlLWZp bGUgb3IgcHJvY2Vzcy1pZF1dXG5cCi0tICAgIGdkYiBbb3B0aW9uc10gLS1hcmdzIGV4ZWN1dGFi bGUtZmlsZSBbaW5mZXJpb3ItYXJndW1lbnRzIC4uLl1cblxuXAogKyAgICBnZGIgW29wdGlvbnNd IC0tYXJncyBleGVjdXRhYmxlLWZpbGUgW2luZmVyaW9yLWFyZ3VtZW50cyAuLi5dXG4iKSwgc3Ry ZWFtKTsKICsjaWYgSEFWRV9QWVRIT04KICsgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwKICsgICAg Z2RiIFtvcHRpb25zXSBbLS1weXRob258LVBdIHNjcmlwdC1maWxlIFtzY3JpcHQtYXJndW1lbnRz IC4uLl1cbiIpLCBzdHJlYW0pOwogKyNlbmRpZgogKyAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXG5c Ci0gT3B0aW9uczpcblxuXAorICAgICBnZGIgW29wdGlvbnNdIC0tYXJncyBleGVjdXRhYmxlLWZp bGUgW2luZmVyaW9yLWFyZ3VtZW50cyAuLi5dXG5cblwKICAiKSwgc3RyZWFtKTsKICAgIGZwdXRz X3VuZmlsdGVyZWQgKF8oIlwKLUBAIC0xMTA0LDcgKzExNTYsMTMgQEAgT3B0aW9uczpcblxuXAot ICAgZnB1dHNfdW5maWx0ZXJlZCAoXygiIGZpbGVzLlxuXAotICAgLS1uaCAgICAgICAgICAgICAg IERvIG5vdCByZWFkICIpLCBzdHJlYW0pOwotICAgZnB1dHNfdW5maWx0ZXJlZCAoZ2RiaW5pdCwg c3RyZWFtKTsKLS0gIGZwdXRzX3VuZmlsdGVyZWQgKF8oIiBmaWxlIGZyb20gaG9tZSBkaXJlY3Rv cnkuXG5cCi0rICBmcHV0c191bmZpbHRlcmVkIChfKCIgZmlsZSBmcm9tIGhvbWUgZGlyZWN0b3J5 LlxuIiksIHN0cmVhbSk7CitAQCAtMTEzNCw2ICsxMTg3LDEzIEBAIE91dHB1dCBhbmQgdXNlciBp bnRlcmZhY2UgY29udHJvbDpcblxuXAorICAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXAorICAgLS1k YnggICAgICAgICAgICAgIERCWCBjb21wYXRpYmlsaXR5IG1vZGUuXG5cCisgICAtLXhkYiAgICAg ICAgICAgICAgWERCIGNvbXBhdGliaWxpdHkgbW9kZS5cblwKKysiKSwgc3RyZWFtKTsKICsjaWYg SEFWRV9QWVRIT04KICsgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwKICsgIC0tcHl0aG9uLCAtUCAg ICAgICBGb2xsb3dpbmcgYXJndW1lbnQgaXMgUHl0aG9uIHNjcmlwdCBmaWxlOyByZW1haW5pbmdc blwKICsgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byBzY3JpcHQu XG4iKSwgc3RyZWFtKTsKICsjZW5kaWYKICsgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwKLSAgIC0t cXVpZXQgICAgICAgICAgICBEbyBub3QgcHJpbnQgdmVyc2lvbiBudW1iZXIgb24gc3RhcnR1cC5c blwKLSAgIC0tcmVhZG5vdyAgICAgICAgICBGdWxseSByZWFkIHN5bWJvbCBmaWxlcyBvbiBmaXJz dCBhY2Nlc3MuXG5cCisgICAtLXF1aWV0ICAgICAgICAgICAgRG8gbm90IHByaW50IHZlcnNpb24g bnVtYmVyIG9uIHN0YXJ0dXAuXG5cblwKICAiKSwgc3RyZWFtKTsKKyAgIGZwdXRzX3VuZmlsdGVy ZWQgKF8oIlwKIGRpZmYgLS1naXQgYS9nZGIvcC12YWxwcmludC5jIGIvZ2RiL3AtdmFscHJpbnQu YwotaW5kZXggYmNjMDU1ZS4uOGE5ZDY0NSAxMDA2NDQKK2luZGV4IDA1ZDRjNmYuLmFjZWMyYTIg MTAwNjQ0CiAtLS0gYS9nZGIvcC12YWxwcmludC5jCiArKysgYi9nZGIvcC12YWxwcmludC5jCiBA QCAtMzgsNiArMzgsNyBAQApAQCAtMzU0Niw3ICszNDY1LDcgQEAgaW5kZXggYmNjMDU1ZS4uOGE5 ZDY0NSAxMDA2NDQKICAJICByZXR1cm47CiAgCX0KICAKLUBAIC0yNzAsNiArMjk1LDcgQEAgcGFz Y2FsX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRy LAorQEAgLTI3MSw2ICsyOTYsNyBAQCBwYXNjYWxfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlw ZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAgCSAgICB9CiAgCX0KICAKQEAgLTM1NTQsNyAr MzQ3Myw3IEBAIGluZGV4IGJjYzA1NWUuLjhhOWQ2NDUgMTAwNjQ0CiAgICAgICAgcmV0dXJuOwog IAogICAgICBjYXNlIFRZUEVfQ09ERV9SRUY6Ci1AQCAtNDEwLDYgKzQzNiw3IEBAIHBhc2NhbF92 YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKK0BA IC00MTEsNiArNDM3LDcgQEAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNv bnN0IGdkYl9ieXRlICp2YWxhZGRyLAogIAkgICAgIFRZUEVfQ09ERSAodHlwZSkpOwogICAgICB9 CiAgICBnZGJfZmx1c2ggKHN0cmVhbSk7CkBAIC0zNTYzLDEwICszNDgyLDEwIEBAIGluZGV4IGJj YzA1NWUuLjhhOWQ2NDUgMTAwNjQ0CiAgDAogIHZvaWQKIGRpZmYgLS1naXQgYS9nZGIvcGFyc2Uu YyBiL2dkYi9wYXJzZS5jCi1pbmRleCAwOWMzNzhiLi45M2M0MzRmIDEwMDY0NAoraW5kZXggMTM2 OTlhOC4uN2I5MzBjMSAxMDA2NDQKIC0tLSBhL2dkYi9wYXJzZS5jCiArKysgYi9nZGIvcGFyc2Uu YwotQEAgLTE3NTcsNiArMTc1Nyw3IEBAIHBhcnNlcl9mcHJpbnRmIChGSUxFICp4LCBjb25zdCBj aGFyICp5LCAuLi4pCitAQCAtMTc4MCw2ICsxNzgwLDcgQEAgcGFyc2VyX2ZwcmludGYgKEZJTEUg KngsIGNvbnN0IGNoYXIgKnksIC4uLikKICAKICBpbnQKICBvcGVyYXRvcl9jaGVja19zdGFuZGFy ZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKQEAgLTM1NzQsNyArMzQ5Myw3IEBA IGluZGV4IDA5YzM3OGIuLjkzYzQzNGYgMTAwNjQ0CiAgCQkJIGludCAoKm9iamZpbGVfZnVuYykg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogIAkJCQkJICAgICAgdm9pZCAqZGF0YSksCiAgCQkJ IHZvaWQgKmRhdGEpCi1AQCAtMTc5Niw3ICsxNzk3LDcgQEAgb3BlcmF0b3JfY2hlY2tfc3RhbmRh cmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCitAQCAtMTgxOSw3ICsxODIwLDcg QEAgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBw b3MsCiAgCSAgICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IGVsdHNbcG9zICsgMiArIGFyZ10udHlwZTsK ICAJICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gVFlQRV9PQkpGSUxFICh0eXBlKTsKICAK QEAgLTM1ODMsNyArMzUwMiw3IEBAIGluZGV4IDA5YzM3OGIuLjkzYzQzNGYgMTAwNjQ0CiAgCSAg ICAgIHJldHVybiAxOwogIAkgIH0KICAgICAgICB9Ci1AQCAtMTgxNCw3ICsxODE1LDggQEAgb3Bl cmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCitA QCAtMTgzNyw3ICsxODM4LDggQEAgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHBy ZXNzaW9uICpleHAsIGludCBwb3MsCiAgCiAgCS8qIENoZWNrIG9iamZpbGUgd2hlcmUgdGhlIHZh cmlhYmxlIGl0c2VsZiBpcyBwbGFjZWQuCiAgCSAgIFNZTUJPTF9PQkpfU0VDVElPTiAoc3ltYm9s KSBtYXkgYmUgTlVMTC4gICovCkBAIC0zNTkzLDcgKzM1MTIsNyBAQCBpbmRleCAwOWMzNzhiLi45 M2M0MzRmIDEwMDY0NAogIAkgIHJldHVybiAxOwogIAogIAkvKiBDaGVjayBvYmpmaWxlIHdoZXJl IGlzIHBsYWNlZCB0aGUgY29kZSB0b3VjaGluZyB0aGUgdmFyaWFibGUuICAqLwotQEAgLTE4Mjcs MjQgKzE4MjksMjcgQEAgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9u ICpleHAsIGludCBwb3MsCitAQCAtMTg1MCwyNCArMTg1MiwyNyBAQCBvcGVyYXRvcl9jaGVja19z dGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKICAKICAgIC8qIEludm9r ZSBjYWxsYmFja3MgZm9yIFRZUEUgYW5kIE9CSkZJTEUgaWYgdGhleSB3ZXJlIHNldCBhcyBub24t TlVMTC4gICovCiAgCkBAIC0zNjI5LDcgKzM1NDgsNyBAQCBpbmRleCAwOWMzNzhiLi45M2M0MzRm IDEwMDY0NAogIAkgICAgIGludCAoKm9iamZpbGVfZnVuYykgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLCB2b2lkICpkYXRhKSwKICAJICAgICB2b2lkICpkYXRhKQogIHsKLUBAIC0xODU5LDcgKzE4 NjQsOSBAQCBleHBfaXRlcmF0ZSAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwKK0BAIC0xODgyLDcg KzE4ODcsOSBAQCBleHBfaXRlcmF0ZSAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwKICAKICAgICAg ICBwb3MgPSBlbmRwb3MgLSBvcGxlbjsKICAgICAgICBpZiAoZXhwLT5sYW5ndWFnZV9kZWZuLT5s YV9leHBfZGVzYy0+b3BlcmF0b3JfY2hlY2sgKGV4cCwgcG9zLApAQCAtMzY0MCw3ICszNTU5LDcg QEAgaW5kZXggMDljMzc4Yi4uOTNjNDM0ZiAxMDA2NDQKICAJcmV0dXJuIDE7CiAgCiAgICAgICAg ZW5kcG9zID0gcG9zOwotQEAgLTE4OTAsOCArMTg5NywyOSBAQCBleHBfdXNlc19vYmpmaWxlIChz dHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKK0BAIC0xOTEz LDggKzE5MjAsMjkgQEAgZXhwX3VzZXNfb2JqZmlsZSAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwg c3RydWN0IG9iamZpbGUgKm9iamZpbGUpCiAgewogICAgZ2RiX2Fzc2VydCAob2JqZmlsZS0+c2Vw YXJhdGVfZGVidWdfb2JqZmlsZV9iYWNrbGluayA9PSBOVUxMKTsKICAKQEAgLTM2NzIsMTAgKzM1 OTEsMTAgQEAgaW5kZXggMDljMzc4Yi4uOTNjNDM0ZiAxMDA2NDQKICB2b2lkCiAgX2luaXRpYWxp emVfcGFyc2UgKHZvaWQpCiBkaWZmIC0tZ2l0IGEvZ2RiL3BhcnNlci1kZWZzLmggYi9nZGIvcGFy c2VyLWRlZnMuaAotaW5kZXggOGQyNTMxMS4uMjMzZWQ0NiAxMDA2NDQKK2luZGV4IDVmYmFlMGQu LjFmZGFkNDYgMTAwNjQ0CiAtLS0gYS9nZGIvcGFyc2VyLWRlZnMuaAogKysrIGIvZ2RiL3BhcnNl ci1kZWZzLmgKLUBAIC0yNDQsNiArMjQ0LDggQEAgZXh0ZXJuIHZvaWQgb3BlcmF0b3JfbGVuZ3Ro X3N0YW5kYXJkIChjb25zdCBzdHJ1Y3QgZXhwcmVzc2lvbiAqLCBpbnQsIGludCAqLAorQEAgLTI0 NSw2ICsyNDUsOCBAQCBleHRlcm4gdm9pZCBvcGVyYXRvcl9sZW5ndGhfc3RhbmRhcmQgKGNvbnN0 IHN0cnVjdCBleHByZXNzaW9uICosIGludCwgaW50ICosCiAgCQkJCSAgICAgIGludCAqKTsKICAK ICBleHRlcm4gaW50IG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAq ZXhwLCBpbnQgcG9zLApAQCAtMzY4NCw3ICszNjAzLDcgQEAgaW5kZXggOGQyNTMxMS4uMjMzZWQ0 NiAxMDA2NDQKICAJCQkJICAgIGludCAoKm9iamZpbGVfZnVuYykKICAJCQkJICAgICAgKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXRhKSwKICAJCQkJICAgIHZvaWQgKmRhdGEpOwot QEAgLTMzMCw2ICszMzIsNyBAQCBzdHJ1Y3QgZXhwX2Rlc2NyaXB0b3IKK0BAIC0zMzEsNiArMzMz LDcgQEAgc3RydWN0IGV4cF9kZXNjcmlwdG9yCiAgICAgICAgIHZhbHVlIHNob3VsZCBiZSBpbW1l ZGlhdGVseSByZXR1cm5lZCB0byB0aGUgY2FsbGVyLiAgT3RoZXJ3aXNlIHplcm8KICAgICAgICAg c2hvdWxkIGJlIHJldHVybmVkLiAgKi8KICAgICAgaW50ICgqb3BlcmF0b3JfY2hlY2spIChzdHJ1 Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLApAQCAtMzY5Myw3ICszNjEyLDcgQEAgaW5kZXgg OGQyNTMxMS4uMjMzZWQ0NiAxMDA2NDQKICAJCQkJCQl2b2lkICpkYXRhKSwKICAJCQkgICB2b2lk ICpkYXRhKTsKIGRpZmYgLS1naXQgYS9nZGIvcHJpbnRjbWQuYyBiL2dkYi9wcmludGNtZC5jCi1p bmRleCAxNTU3MDNkLi41NDVhNjE1IDEwMDY0NAoraW5kZXggMWNjMjQ4ZC4uZWVmMGM2NiAxMDA2 NDQKIC0tLSBhL2dkYi9wcmludGNtZC5jCiArKysgYi9nZGIvcHJpbnRjbWQuYwogQEAgLTUxLDYg KzUxLDcgQEAKQEAgLTM3MDQsNyArMzYyMyw3IEBAIGluZGV4IDE1NTcwM2QuLjU0NWE2MTUgMTAw NjQ0CiAgCiAgI2lmZGVmIFRVSQogICNpbmNsdWRlICJ0dWkvdHVpLmgiCQkvKiBGb3IgdHVpX2Fj dGl2ZSBldCBhbC4gICAqLwotQEAgLTk2Nyw2ICs5NjgsMTEgQEAgcHJpbnRfY29tbWFuZF8xIChj aGFyICpleHAsIGludCB2b2lkcHJpbnQpCitAQCAtOTgwLDYgKzk4MSwxMSBAQCBwcmludF9jb21t YW5kXzEgKGNvbnN0IGNoYXIgKmV4cCwgaW50IHZvaWRwcmludCkKICAgIGVsc2UKICAgICAgdmFs ID0gYWNjZXNzX3ZhbHVlX2hpc3RvcnkgKDApOwogIApAQCAtMzcxNiw3ICszNjM1LDcgQEAgaW5k ZXggMTU1NzAzZC4uNTQ1YTYxNSAxMDA2NDQKICAgIGlmICh2b2lkcHJpbnQgfHwgKHZhbCAmJiB2 YWx1ZV90eXBlICh2YWwpICYmCiAgCQkgICAgVFlQRV9DT0RFICh2YWx1ZV90eXBlICh2YWwpKSAh PSBUWVBFX0NPREVfVk9JRCkpCiAgICAgIHsKLUBAIC0xMDM5LDYgKzEwNDUsOSBAQCBvdXRwdXRf Y29tbWFuZCAoY2hhciAqZXhwLCBpbnQgZnJvbV90dHkpCitAQCAtMTA2MSw2ICsxMDY3LDkgQEAg b3V0cHV0X2NvbW1hbmRfY29uc3QgKGNvbnN0IGNoYXIgKmV4cCwgaW50IGZyb21fdHR5KQogIAog ICAgdmFsID0gZXZhbHVhdGVfZXhwcmVzc2lvbiAoZXhwcik7CiAgCkBAIC0zNzI2LDcgKzM2NDUs NyBAQCBpbmRleCAxNTU3MDNkLi41NDVhNjE1IDEwMDY0NAogICAgYW5ub3RhdGVfdmFsdWVfYmVn aW4gKHZhbHVlX3R5cGUgKHZhbCkpOwogIAogICAgZ2V0X2Zvcm1hdHRlZF9wcmludF9vcHRpb25z ICgmb3B0cywgZm9ybWF0KTsKLUBAIC0xNDY3LDYgKzE0NzYsMjQgQEAgeF9jb21tYW5kIChjaGFy ICpleHAsIGludCBmcm9tX3R0eSkKK0BAIC0xNDk1LDYgKzE1MDQsMjQgQEAgeF9jb21tYW5kIChj aGFyICpleHAsIGludCBmcm9tX3R0eSkKICAJc2V0X2ludGVybmFsdmFyIChsb29rdXBfaW50ZXJu YWx2YXIgKCJfXyIpLCBsYXN0X2V4YW1pbmVfdmFsdWUpOwogICAgICB9CiAgfQpAQCAtMzc1MSw3 ICszNjcwLDcgQEAgaW5kZXggMTU1NzAzZC4uNTQ1YTYxNSAxMDA2NDQKICAMCiAgCiAgLyogQWRk IGFuIGV4cHJlc3Npb24gdG8gdGhlIGF1dG8tZGlzcGxheSBjaGFpbi4KLUBAIC0xOTY0LDYgKzE5 OTEsMTAgQEAgcHJpbnRfdmFyaWFibGVfYW5kX3ZhbHVlIChjb25zdCBjaGFyICpuYW1lLCBzdHJ1 Y3Qgc3ltYm9sICp2YXIsCitAQCAtMTk5Myw2ICsyMDIwLDEwIEBAIHByaW50X3ZhcmlhYmxlX2Fu ZF92YWx1ZSAoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHN5bWJvbCAqdmFyLAogICAgICAgIHN0 cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zIG9wdHM7CiAgCiAgICAgICAgdmFsID0gcmVhZF92YXJf dmFsdWUgKHZhciwgZnJhbWUpOwpAQCAtMzc2Miw3ICszNjgxLDcgQEAgaW5kZXggMTU1NzAzZC4u NTQ1YTYxNSAxMDA2NDQKICAgICAgICBnZXRfdXNlcl9wcmludF9vcHRpb25zICgmb3B0cyk7CiAg ICAgICAgb3B0cy5kZXJlZl9yZWYgPSAxOwogICAgICAgIGNvbW1vbl92YWxfcHJpbnQgKHZhbCwg c3RyZWFtLCBpbmRlbnQsICZvcHRzLCBjdXJyZW50X2xhbmd1YWdlKTsKLUBAIC0yNjEzLDQgKzI2 NDQsOCBAQCBTaG93IHByaW50aW5nIG9mIHNvdXJjZSBmaWxlbmFtZSBhbmQgbGluZSBudW1iZXIg d2l0aCA8c3ltYm9sPi4iKSwgTlVMTCwKK0BAIC0yNjQ4LDQgKzI2NzksOCBAQCBTaG93IHByaW50 aW5nIG9mIHNvdXJjZSBmaWxlbmFtZSBhbmQgbGluZSBudW1iZXIgd2l0aCA8c3ltYm9sPi4iKSwg TlVMTCwKICAgIGFkZF9jb20gKCJldmFsIiwgbm9fY2xhc3MsIGV2YWxfY29tbWFuZCwgXygiXAog IENvbnZlcnQgXCJwcmludGYgZm9ybWF0IHN0cmluZ1wiLCBhcmcxLCBhcmcyLCBhcmczLCAuLi4s IGFyZ24gdG9cblwKICBhIGNvbW1hbmQgbGluZSwgYW5kIGNhbGwgaXQuIikpOwpAQCAtNDAxOSw3 ICszOTM4LDcgQEAgaW5kZXggMDAwMDAwMC4uZGViYjNiYgogKwogK0luU2NvcGUgKCkKIGRpZmYg LS1naXQgYS9nZGIvcHl0aG9uL3B5LXR5cGUuYyBiL2dkYi9weXRob24vcHktdHlwZS5jCi1pbmRl eCAwNTFjZmYwLi5lMmYyZWJlIDEwMDY0NAoraW5kZXggMzM3ZTMwNy4uYmU5MWM1YSAxMDA2NDQK IC0tLSBhL2dkYi9weXRob24vcHktdHlwZS5jCiArKysgYi9nZGIvcHl0aG9uL3B5LXR5cGUuYwog QEAgLTMxLDYgKzMxLDggQEAKQEAgLTQwNDksMTAgKzM5NjgsMTAgQEAgaW5kZXggMDUxY2ZmMC4u ZTJmMmViZSAxMDA2NDQKICtzdGF0aWMgdHlwZV9vYmplY3QgKnB5dHlfb2JqZWN0c19kaXNjYXJk YWJsZTsKICsjZW5kaWYKICsKLSBzdGF0aWMgUHlUeXBlT2JqZWN0IHR5cGVfb2JqZWN0X3R5cGU7 Cisgc3RhdGljIFB5VHlwZU9iamVjdCB0eXBlX29iamVjdF90eXBlCisgICAgIENQWUNIRUNLRVJf VFlQRV9PQkpFQ1RfRk9SX1RZUEVERUYgKCJ0eXBlX29iamVjdCIpOwogIAotIC8qIEEgRmllbGQg b2JqZWN0LiAgKi8KLUBAIC0xMTkyLDggKzEyMDIsNjMgQEAgdHlweV9yaWNoY29tcGFyZSAoUHlP YmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvdGhlciwgaW50IG9wKQorQEAgLTExODAsOCArMTE5MCw2 MyBAQCB0eXB5X3JpY2hjb21wYXJlIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm90aGVyLCBp bnQgb3ApCiAgCiAgDAogIApAQCAtNDExNiw3ICs0MDM1LDcgQEAgaW5kZXggMDUxY2ZmMC4uZTJm MmViZSAxMDA2NDQKICBzdGF0aWMgdm9pZAogIHNhdmVfb2JqZmlsZV90eXBlcyAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUsIHZvaWQgKmRhdHVtKQogIHsKLUBAIC0xMjExLDEyICsxMjc2LDEzIEBA IHNhdmVfb2JqZmlsZV90eXBlcyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmRhdHVt KQorQEAgLTEyMDIsMTIgKzEyNjcsMTMgQEAgc2F2ZV9vYmpmaWxlX3R5cGVzIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwgdm9pZCAqZGF0dW0pCiAgICAgIHsKICAgICAgICB0eXBlX29iamVjdCAq bmV4dCA9IG9iai0+bmV4dDsKICAKQEAgLTQxMzQsNyArNDA1Myw3IEBAIGluZGV4IDA1MWNmZjAu LmUyZjJlYmUgMTAwNjQ0CiAgCiAgICAgICAgb2JqID0gbmV4dDsKICAgICAgfQotQEAgLTEyMjcs NDMgKzEyOTMsMjggQEAgc2F2ZV9vYmpmaWxlX3R5cGVzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwgdm9pZCAqZGF0dW0pCitAQCAtMTIxOCw0MyArMTI4NCwyOCBAQCBzYXZlX29iamZpbGVfdHlw ZXMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXR1bSkKICB9CiAgCiAgc3RhdGlj IHZvaWQKQEAgLTQxOTIsNyArNDExMSw3IEBAIGluZGV4IDA1MWNmZjAuLmUyZjJlYmUgMTAwNjQ0 CiAgCiAgLyogUmV0dXJuIG51bWJlciBvZiBmaWVsZHMgKCJsZW5ndGgiIG9mIHRoZSBmaWVsZCBk aWN0aW9uYXJ5KS4gICovCiAgCi1AQCAtMTQ4Myw3ICsxNTM0LDEwIEBAIHR5cGVfdG9fdHlwZV9v YmplY3QgKHN0cnVjdCB0eXBlICp0eXBlKQorQEAgLTE0NzQsNyArMTUyNSwxMCBAQCB0eXBlX3Rv X3R5cGVfb2JqZWN0IChzdHJ1Y3QgdHlwZSAqdHlwZSkKICAKICAgIHR5cGVfb2JqID0gUHlPYmpl Y3RfTmV3ICh0eXBlX29iamVjdCwgJnR5cGVfb2JqZWN0X3R5cGUpOwogICAgaWYgKHR5cGVfb2Jq KQpAQCAtNDIwNCwxOSArNDEyMyw4IEBAIGluZGV4IDA1MWNmZjAuLmUyZjJlYmUgMTAwNjQ0CiAg CiAgICByZXR1cm4gKFB5T2JqZWN0ICopIHR5cGVfb2JqOwogIH0KLUBAIC0xNTYzLDYgKzE2MTcs MTAgQEAgZ2RicHlfaW5pdGlhbGl6ZV90eXBlcyAodm9pZCkKLSAKLSAgIFB5X0lOQ1JFRiAoJmZp ZWxkX29iamVjdF90eXBlKTsKLSAgIFB5TW9kdWxlX0FkZE9iamVjdCAoZ2RiX21vZHVsZSwgIkZp ZWxkIiwgKFB5T2JqZWN0ICopICZmaWVsZF9vYmplY3RfdHlwZSk7Ci0rCi0rI2lmIDAKLSsgIG9i c2VydmVyX2F0dGFjaF9tYXJrX3VzZWQgKHR5cHlfdHlwZXNfbWFya191c2VkKTsKLSsjZW5kaWYK LSB9Ci0gCi0gDAogZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHktdmFsdWUuYyBiL2dkYi9weXRo b24vcHktdmFsdWUuYwotaW5kZXggMTFjYzAzOC4uZWYyMzhmNiAxMDA2NDQKK2luZGV4IDBkODcy MTkuLmMwMTkxODQgMTAwNjQ0CiAtLS0gYS9nZGIvcHl0aG9uL3B5LXZhbHVlLmMKICsrKyBiL2dk Yi9weXRob24vcHktdmFsdWUuYwogQEAgLTI5LDYgKzI5LDcgQEAKQEAgLTQyMjcsNyArNDEzNSw3 IEBAIGluZGV4IDExY2MwMzguLmVmMjM4ZjYgMTAwNjQ0CiAgCiAgI2lmZGVmIEhBVkVfUFlUSE9O CiAgCi1AQCAtMTM4NSw2ICsxMzg2LDE5IEBAIGdkYnB5X2lzX3ZhbHVlX29iamVjdCAoUHlPYmpl Y3QgKm9iaikKK0BAIC0xMzg1LDEyICsxMzg2LDI4IEBAIGdkYnB5X2lzX3ZhbHVlX29iamVjdCAo UHlPYmplY3QgKm9iaikKICAgIHJldHVybiBQeU9iamVjdF9UeXBlQ2hlY2sgKG9iaiwgJnZhbHVl X29iamVjdF90eXBlKTsKICB9CiAgCkBAIC00MjQ0LDIyICs0MTUyLDIwIEBAIGluZGV4IDExY2Mw MzguLmVmMjM4ZjYgMTAwNjQ0CiArfQogKyNlbmRpZgogKwotIHZvaWQKKyBpbnQKICBnZGJweV9p bml0aWFsaXplX3ZhbHVlcyAodm9pZCkKICB7Ci1AQCAtMTM5NSw2ICsxNDA5LDEwIEBAIGdkYnB5 X2luaXRpYWxpemVfdmFsdWVzICh2b2lkKQotICAgUHlNb2R1bGVfQWRkT2JqZWN0IChnZGJfbW9k dWxlLCAiVmFsdWUiLCAoUHlPYmplY3QgKikgJnZhbHVlX29iamVjdF90eXBlKTsKKyAgIGlmIChQ eVR5cGVfUmVhZHkgKCZ2YWx1ZV9vYmplY3RfdHlwZSkgPCAwKQorICAgICByZXR1cm4gLTE7CiAg Ci0gICB2YWx1ZXNfaW5fcHl0aG9uID0gTlVMTDsKLSsKICsjaWYgMAogKyAgb2JzZXJ2ZXJfYXR0 YWNoX21hcmtfdXNlZCAocHl0aG9uX3R5cGVzX21hcmtfdXNlZCk7CiArI2VuZGlmCisgICByZXR1 cm4gZ2RiX3B5bW9kdWxlX2FkZG9iamVjdCAoZ2RiX21vZHVsZSwgIlZhbHVlIiwKKyAJCQkJIChQ eU9iamVjdCAqKSAmdmFsdWVfb2JqZWN0X3R5cGUpOwogIH0KLSAKLSAMCiBkaWZmIC0tZ2l0IGEv Z2RiL3B5dGhvbi9weXRob24uYyBiL2dkYi9weXRob24vcHl0aG9uLmMKLWluZGV4IGNkOGRkZmIu LmU5MDZjNGYgMTAwNjQ0CitpbmRleCAwMDA5MmM3Li5lYzQ5ZmM5IDEwMDY0NAogLS0tIGEvZ2Ri L3B5dGhvbi9weXRob24uYwogKysrIGIvZ2RiL3B5dGhvbi9weXRob24uYwogQEAgLTY3LDYgKzY3 LDggQEAgc3RhdGljIGNvbnN0IGNoYXIgKmdkYnB5X3Nob3VsZF9wcmludF9zdGFjayA9IHB5dGhv bl9leGNwX21lc3NhZ2U7CkBAIC00MjcxLDcgKzQxNzcsNyBAQCBpbmRleCBjZDhkZGZiLi5lOTA2 YzRmIDEwMDY0NAogICNpbmNsdWRlICJ0YXJnZXQuaCIKICAjaW5jbHVkZSAiZ2RidGhyZWFkLmgi CiAgI2luY2x1ZGUgIm9ic2VydmVyLmgiCi1AQCAtMTA5OSw2ICsxMTAxLDUzIEBAIGdkYnB5X3By aW50X3N0YWNrICh2b2lkKQorQEAgLTExMTYsNiArMTExOCw1MyBAQCBnZGJweV9wcmludF9zdGFj ayAodm9pZCkKICAKICAvKiBSZXR1cm4gdGhlIGN1cnJlbnQgUHJvZ3NwYWNlLgogICAgIFRoZXJl IGFsd2F5cyBpcyBvbmUuICAqLwpAQCAtNDMyNSw3ICs0MjMxLDcgQEAgaW5kZXggY2Q4ZGRmYi4u ZTkwNmM0ZiAxMDA2NDQKICAKICBzdGF0aWMgUHlPYmplY3QgKgogIGdkYnB5X2dldF9jdXJyZW50 X3Byb2dzcGFjZSAoUHlPYmplY3QgKnVudXNlZDEsIFB5T2JqZWN0ICp1bnVzZWQyKQotQEAgLTE3 NDksNiArMTc5OCw4IEBAIHN0YXRpYyBQeU1ldGhvZERlZiBHZGJNZXRob2RzW10gPQorQEAgLTE4 MjYsNiArMTg3NSw4IEBAIHN0YXRpYyBQeU1ldGhvZERlZiBHZGJNZXRob2RzW10gPQogICAgICAi R2V0IGEgdmFsdWUgZnJvbSBoaXN0b3J5IiB9LAogICAgeyAiZXhlY3V0ZSIsIChQeUNGdW5jdGlv bikgZXhlY3V0ZV9nZGJfY29tbWFuZCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKICAg ICAgIkV4ZWN1dGUgYSBnZGIgY29tbWFuZCIgfSwKQEAgLTQzMzUsMTAgKzQyNDEsMTAgQEAgaW5k ZXggY2Q4ZGRmYi4uZTkwNmM0ZiAxMDA2NDQKICAgICAgIlJldHVybiBhIGdkYiBwYXJhbWV0ZXIn cyB2YWx1ZSIgfSwKICAKIGRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5dGhvbi5oIGIvZ2RiL3B5 dGhvbi9weXRob24uaAotaW5kZXggMjRlMzA3Ny4uMDQ0MzA4NyAxMDA2NDQKK2luZGV4IDFhMWU1 YzIuLjMxMmJlOTQgMTAwNjQ0CiAtLS0gYS9nZGIvcHl0aG9uL3B5dGhvbi5oCiArKysgYi9nZGIv cHl0aG9uL3B5dGhvbi5oCi1AQCAtMzQsNiArMzQsOCBAQCB2b2lkIGV2YWxfcHl0aG9uX2Zyb21f Y29udHJvbF9jb21tYW5kIChzdHJ1Y3QgY29tbWFuZF9saW5lICopOworQEAgLTk1LDYgKzk1LDgg QEAgdm9pZCBldmFsX3B5dGhvbl9mcm9tX2NvbnRyb2xfY29tbWFuZCAoc3RydWN0IGNvbW1hbmRf bGluZSAqKTsKICAKICB2b2lkIHNvdXJjZV9weXRob25fc2NyaXB0IChGSUxFICpmaWxlLCBjb25z dCBjaGFyICpmaWxlbmFtZSk7CiAgCkBAIC00MzQ4LDEwICs0MjU0LDEwIEBAIGluZGV4IDI0ZTMw NzcuLjA0NDMwODcgMTAwNjQ0CiAgCQkJICAgICAgaW50IGVtYmVkZGVkX29mZnNldCwgQ09SRV9B RERSIGFkZHJlc3MsCiAgCQkJICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vy c2UsCiBkaWZmIC0tZ2l0IGEvZ2RiL3N0YWNrLmMgYi9nZGIvc3RhY2suYwotaW5kZXggZjJhZWIx MC4uZDIwYjJmMSAxMDA2NDQKK2luZGV4IGQ4OWZmODkuLjMwMWQ1NjkgMTAwNjQ0CiAtLS0gYS9n ZGIvc3RhY2suYwogKysrIGIvZ2RiL3N0YWNrLmMKLUBAIC01MDksNiArNTA5LDEwIEBAIHByaW50 X2ZyYW1lX2FyZ3MgKHN0cnVjdCBzeW1ib2wgKmZ1bmMsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFt ZSwKK0BAIC01MTEsNiArNTExLDEwIEBAIHByaW50X2ZyYW1lX2FyZ3MgKHN0cnVjdCBzeW1ib2wg KmZ1bmMsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKICAgIHN0YiA9IG1lbV9maWxlb3BlbiAo KTsKICAgIG9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cF91aV9maWxlX2RlbGV0ZSAoc3RiKTsKICAK QEAgLTU1NjEsMTAgKzU0NjcsMTAgQEAgaW5kZXggMmNjOTM1Yi4uMzBjN2Y4NSAxMDA2NDQKICBt YWluICh2b2lkKQogIHsKIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5 aWR4LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhwCi1pbmRleCAzODdi MzRmLi5kNTk1NmNlIDEwMDY0NAoraW5kZXggMzdlZDRjMy4uODJmMzBjYiAxMDA2NDQKIC0tLSBh L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhwCiArKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2FycmF5aWR4LmV4cAotQEAgLTUzLDQgKzUzLDEyIEBAIGdkYl90ZXN0ICJwcmlu dCBhcnJheSIgXAorQEAgLTQ5LDQgKzQ5LDEyIEBAIGdkYl90ZXN0ICJwcmludCBhcnJheSIgXAog ICAgICAgICAgICJcXHtcXFxbMFxcXF0gPSAxLCBcXFxbMVxcXF0gPSAyLCBcXFxbMlxcXF0gPSAz LCBcXFxbM1xcXF0gPSA0XFx9IiBcCiAgICAgICAgICAgIlByaW50IGFycmF5IHdpdGggYXJyYXkt aW5kZXhlcyBvbiIKICAKQEAgLTc0MjYsMTAgKzczMzIsMTAgQEAgaW5kZXggMDAwMDAwMC4uNDc0 N2VhOQogKyAgd3JpdGUgKCosKikgYSAgICAgICAgICAgICAgICAgISBicmVhay1zdGF0aWMKICtl bmQKIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAotaW5kZXggNTVlMTNjZi4uNDQxYzI4YiAx MDA2NDQKK2luZGV4IGQ3MDA3MTUuLjZlYmNhMGEgMTAwNjQ0CiAtLS0gYS9nZGIvdGVzdHN1aXRl L2dkYi5nZGIvc2VsZnRlc3QuZXhwCiArKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRl c3QuZXhwCi1AQCAtOTEsNiArOTEsMTAgQEAgcHJvYyBkb19zdGVwc19hbmRfbmV4dHMge30gewor QEAgLTkyLDYgKzkyLDEwIEBAIHByb2MgZG9fc3RlcHNfYW5kX25leHRzIHt9IHsKICAJCXNldCBk ZXNjcmlwdGlvbiAic3RlcCBvdmVyIGNtZGFyZ192ZWMgaW5pdGlhbGl6YXRpb24iCiAgCQlzZXQg Y29tbWFuZCAic3RlcCIKICAJICAgIH0KQEAgLTc4NzMsNyArNzc3OSw3IEBAIGluZGV4IDkxNDJj NzIuLjI4NTUyMjAgMTAwNjQ0CiAgIyBUZXN0IGVpdGhlciBDIG9yIEMrKyB2YWx1ZXMuIAogIHRl c3Rfc3Vic2NyaXB0X3JlZ3Jlc3Npb24gIiR7YmluZmlsZX0iICJjIgogZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvbGliL2dkYi5leHAgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCi1pbmRl eCA4YjE2YjM4Li5mNmU1OWIwIDEwMDY0NAoraW5kZXggNzBiNzk3ZS4uMzU4OGUxZCAxMDA2NDQK IC0tLSBhL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKICsrKyBiL2dkYi90ZXN0c3VpdGUvbGli L2dkYi5leHAKIEBAIC0xNDMsNiArMTQzLDExIEBAIHByb2MgZ2RiX3VubG9hZCB7fSB7CkBAIC03 ODg5LDcgKzc3OTUsNyBAQCBpbmRleCA4YjE2YjM4Li5mNmU1OWIwIDEwMDY0NAogIAkgICAgc2Vu ZF9nZGIgInlcbiIKICAJICAgIGV4cF9jb250aW51ZQogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvbGliL3Bhc2NhbC5leHAgYi9nZGIvdGVzdHN1aXRlL2xpYi9wYXNjYWwuZXhwCi1pbmRleCA1 NjlmYjAyLi5jYWNlY2Y0IDEwMDY0NAoraW5kZXggNzg0YWI2Yy4uOWUwYTg0NCAxMDA2NDQKIC0t LSBhL2dkYi90ZXN0c3VpdGUvbGliL3Bhc2NhbC5leHAKICsrKyBiL2dkYi90ZXN0c3VpdGUvbGli L3Bhc2NhbC5leHAKIEBAIC0zNyw2ICszNyw5IEBAIHByb2MgcGFzY2FsX2luaXQge30gewpAQCAt NzkyNCwxMCArNzgzMCwxMCBAQCBpbmRleCA1NjlmYjAyLi5jYWNlY2Y0IDEwMDY0NAogICAgICBz ZXQgcGFzY2FsX2luaXRfZG9uZSAxCiAgfSAgIAogZGlmZiAtLWdpdCBhL2dkYi90b3AuYyBiL2dk Yi90b3AuYwotaW5kZXggZTlhNDBmYy4uZGUwNTFjOCAxMDA2NDQKK2luZGV4IDMzYTc4ZGEuLjIy OTkyYmEgMTAwNjQ0CiAtLS0gYS9nZGIvdG9wLmMKICsrKyBiL2dkYi90b3AuYwotQEAgLTM1MCw2 ICszNTAsOSBAQCBwcmVwYXJlX2V4ZWN1dGVfY29tbWFuZCAodm9pZCkKK0BAIC0zNDIsNiArMzQy LDkgQEAgcHJlcGFyZV9leGVjdXRlX2NvbW1hbmQgKHZvaWQpCiAgCiAgICBtYXJrID0gdmFsdWVf bWFyayAoKTsKICAgIGNsZWFudXAgPSBtYWtlX2NsZWFudXBfdmFsdWVfZnJlZV90b19tYXJrICht YXJrKTsKQEAgLTc5MzgsNyArNzg0NCw3IEBAIGluZGV4IGU5YTQwZmMuLmRlMDUxYzggMTAwNjQ0 CiAgICAvKiBXaXRoIG11bHRpcGxlIHRocmVhZHMgcnVubmluZyB3aGlsZSB0aGUgb25lIHdlJ3Jl IGV4YW1pbmluZyBpcwogICAgICAgc3RvcHBlZCwgdGhlIGRjYWNoZSBjYW4gZ2V0IHN0YWxlIHdp dGhvdXQgdXMgYmVpbmcgYWJsZSB0byBkZXRlY3QKIGRpZmYgLS1naXQgYS9nZGIvdHlwZXByaW50 LmMgYi9nZGIvdHlwZXByaW50LmMKLWluZGV4IDJkNWE2YWYuLjUyNTFlM2YgMTAwNjQ0CitpbmRl eCA0ZTcwNTkzLi5lODQwMmEyIDEwMDY0NAogLS0tIGEvZ2RiL3R5cGVwcmludC5jCiArKysgYi9n ZGIvdHlwZXByaW50LmMKIEBAIC0zNCw2ICszNCw3IEBACkBAIC03OTc2LDEwICs3ODgyLDEwIEBA IGluZGV4IDJkNWE2YWYuLjUyNTFlM2YgMTAwNjQ0CiAgCiAgICBnZXRfdXNlcl9wcmludF9vcHRp b25zICgmb3B0cyk7CiBkaWZmIC0tZ2l0IGEvZ2RiL3V0aWxzLmMgYi9nZGIvdXRpbHMuYwotaW5k ZXggNGMyZjA4Yy4uZDFjODcxMCAxMDA2NDQKK2luZGV4IDk0ZWJjZTguLjIzYTQ5ODYgMTAwNjQ0 CiAtLS0gYS9nZGIvdXRpbHMuYwogKysrIGIvZ2RiL3V0aWxzLmMKLUBAIC0xODA1LDYgKzE4MDUs MzYgQEAgc2V0X2JhdGNoX2ZsYWdfYW5kX21ha2VfY2xlYW51cF9yZXN0b3JlX3BhZ2VfaW5mbyAo dm9pZCkKK0BAIC0xNzI1LDYgKzE3MjUsMzYgQEAgc2V0X2JhdGNoX2ZsYWdfYW5kX21ha2VfY2xl YW51cF9yZXN0b3JlX3BhZ2VfaW5mbyAodm9pZCkKICAgIHJldHVybiBiYWNrX3RvOwogIH0KICAK QEAgLTgwMTcsMTIgKzc5MjMsMTIgQEAgaW5kZXggNGMyZjA4Yy4uZDFjODcxMCAxMDA2NDQKICAK ICBzdGF0aWMgdm9pZAogZGlmZiAtLWdpdCBhL2dkYi91dGlscy5oIGIvZ2RiL3V0aWxzLmgKLWlu ZGV4IDUyYmNhZmYuLjZhYjQxN2IgMTAwNjQ0CitpbmRleCAwZjZiYjA2Li4yODMxMzdlIDEwMDY0 NAogLS0tIGEvZ2RiL3V0aWxzLmgKICsrKyBiL2dkYi91dGlscy5oCi1AQCAtMzc1LDQgKzM3NSw2 IEBAIGV4dGVybiBpbnQgbXlyZWFkIChpbnQsIGNoYXIgKiwgaW50KTsKLSBleHRlcm4gVUxPTkdF U1QgYWxpZ25fdXAgKFVMT05HRVNUIHYsIGludCBuKTsKLSBleHRlcm4gVUxPTkdFU1QgYWxpZ25f ZG93biAoVUxPTkdFU1QgdiwgaW50IG4pOworQEAgLTM4NCw0ICszODQsNiBAQCBleHRlcm4gVUxP TkdFU1QgYWxpZ25fZG93biAoVUxPTkdFU1QgdiwgaW50IG4pOworIAorIGV4dGVybiBMT05HRVNU IGdkYl9zaWduX2V4dGVuZCAoTE9OR0VTVCB2YWx1ZSwgaW50IGJpdCk7CiAgCiArZXh0ZXJuIHN0 cnVjdCBjbGVhbnVwICptYWtlX2NsZWFudXBfcmVzdG9yZV9zZWxlY3RlZF9mcmFtZSAodm9pZCk7 CiArCkBAIC04MDU1LDEwICs3OTYxLDEwIEBAIGluZGV4IDE4YzE0ZmMuLjBhM2EzYWEgMTAwNjQ0 CiAgfQogIAogZGlmZiAtLWdpdCBhL2dkYi92YWxvcHMuYyBiL2dkYi92YWxvcHMuYwotaW5kZXgg OTNjMDlkOC4uYWVmMDk5MSAxMDA2NDQKK2luZGV4IGEzYWIyNGYuLjUzYWY4NDIgMTAwNjQ0CiAt LS0gYS9nZGIvdmFsb3BzLmMKICsrKyBiL2dkYi92YWxvcHMuYwotQEAgLTQ1LDYgKzQ1LDcgQEAK K0BAIC00NCw2ICs0NCw3IEBACiAgI2luY2x1ZGUgIm9iamZpbGVzLmgiCiAgI2luY2x1ZGUgInN5 bXRhYi5oIgogICNpbmNsdWRlICJleGNlcHRpb25zLmgiCkBAIC04MDY2LDcgKzc5NzIsNyBAQCBp bmRleCA5M2MwOWQ4Li5hZWYwOTkxIDEwMDY0NAogIAogIGV4dGVybiB1bnNpZ25lZCBpbnQgb3Zl cmxvYWRfZGVidWc7CiAgLyogTG9jYWwgZnVuY3Rpb25zLiAgKi8KLUBAIC05MDMsNiArOTA0LDY1 IEBAIHZhbHVlX29uZSAoc3RydWN0IHR5cGUgKnR5cGUpCitAQCAtOTAyLDYgKzkwMyw2NSBAQCB2 YWx1ZV9vbmUgKHN0cnVjdCB0eXBlICp0eXBlKQogICAgcmV0dXJuIHZhbDsKICB9CiAgCkBAIC04 MTMyLDQ4ICs4MDM4LDcgQEAgaW5kZXggOTNjMDlkOC4uYWVmMDk5MSAxMDA2NDQKICAvKiBIZWxw ZXIgZnVuY3Rpb24gZm9yIHZhbHVlX2F0LCB2YWx1ZV9hdF9sYXp5LCBhbmQgdmFsdWVfYXRfbGF6 eV9zdGFjay4gICovCiAgCiAgc3RhdGljIHN0cnVjdCB2YWx1ZSAqCi1AQCAtOTY1LDcgKzEwMjUs OCBAQCBpbnQKLSB2YWx1ZV9mZXRjaF9sYXp5IChzdHJ1Y3QgdmFsdWUgKnZhbCkKLSB7Ci0gICBn ZGJfYXNzZXJ0ICh2YWx1ZV9sYXp5ICh2YWwpKTsKLS0gIGFsbG9jYXRlX3ZhbHVlX2NvbnRlbnRz ICh2YWwpOwotKyAgaWYgKFZBTFVFX0xWQUwgKHZhbCkgIT0gbHZhbF9tZW1vcnkpCi0rICAgIGFs bG9jYXRlX3ZhbHVlX2NvbnRlbnRzICh2YWwpOwotICAgaWYgKHZhbHVlX2JpdHNpemUgKHZhbCkp Ci0gICAgIHsKLSAgICAgICAvKiBUbyByZWFkIGEgbGF6eSBiaXRmaWVsZCwgcmVhZCB0aGUgZW50 aXJlIGVuY2xvc2luZyB2YWx1ZS4gIFRoaXMKLUBAIC05OTgsMTMgKzEwNTksMjQgQEAgdmFsdWVf ZmV0Y2hfbGF6eSAoc3RydWN0IHZhbHVlICp2YWwpCi0gICAgIH0KLSAgIGVsc2UgaWYgKFZBTFVF X0xWQUwgKHZhbCkgPT0gbHZhbF9tZW1vcnkpCi0gICAgIHsKLS0gICAgICBDT1JFX0FERFIgYWRk ciA9IHZhbHVlX2FkZHJlc3MgKHZhbCk7Ci0tICAgICAgc3RydWN0IHR5cGUgKnR5cGUgPSBjaGVj a190eXBlZGVmICh2YWx1ZV9lbmNsb3NpbmdfdHlwZSAodmFsKSk7Ci0rICAgICAgQ09SRV9BRERS IGFkZHIgPSB2YWx1ZV9yYXdfYWRkcmVzcyAodmFsKTsKLSAKLS0gICAgICBpZiAoVFlQRV9MRU5H VEggKHR5cGUpKQotLQlyZWFkX3ZhbHVlX21lbW9yeSAodmFsLCAwLCB2YWx1ZV9zdGFjayAodmFs KSwKLS0JCQkgICBhZGRyLCB2YWx1ZV9jb250ZW50c19hbGxfcmF3ICh2YWwpLAotLQkJCSAgIFRZ UEVfTEVOR1RIICh0eXBlKSk7Ci0rICAgICAgaWYgKG9iamVjdF9hZGRyZXNzX2dldF9kYXRhICh2 YWx1ZV90eXBlICh2YWwpLCAmYWRkcikpCi0rCXsKLSsJICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IHZh bHVlX2VuY2xvc2luZ190eXBlICh2YWwpOwotKwkgIGludCBsZW5ndGggPSBUWVBFX0xFTkdUSCAo Y2hlY2tfdHlwZWRlZiAodHlwZSkpOwotKwotKwkgIGlmIChsZW5ndGgpCi0rCSAgICB7Ci0rCSAg ICAgIC8qIERlbGF5IGl0IGFmdGVyIG9iamVjdF9hZGRyZXNzX2dldF9kYXRhIGFib3ZlLiAgKi8K LSsJICAgICAgYWxsb2NhdGVfdmFsdWVfY29udGVudHMgKHZhbCk7Ci0rCSAgICAgIGFkZHIgKz0g dmFsdWVfb2Zmc2V0ICh2YWwpOwotKwkgICAgICByZWFkX3ZhbHVlX21lbW9yeSAodmFsLCAwLCB2 YWx1ZV9zdGFjayAodmFsKSwKLSsJCQkJIGFkZHIsIHZhbHVlX2NvbnRlbnRzX2FsbF9yYXcgKHZh bCksIGxlbmd0aCk7Ci0rCSAgICB9Ci0rCX0KLSsgICAgICAvKiBKdXN0IHRvIGJlIHN1cmUgaXQg aGFzIGJlZW4gY2FsbGVkLiAgKi8KLSsgICAgICBhbGxvY2F0ZV92YWx1ZV9jb250ZW50cyAodmFs KTsKLSAgICAgfQotICAgZWxzZSBpZiAoVkFMVUVfTFZBTCAodmFsKSA9PSBsdmFsX3JlZ2lzdGVy KQotICAgICB7Ci1AQCAtMTUyOSw3ICsxNjAxLDE4IEBAIGFkZHJlc3Nfb2ZfdmFyaWFibGUgKHN0 cnVjdCBzeW1ib2wgKnZhciwgY29uc3Qgc3RydWN0IGJsb2NrICpiKQorQEAgLTEzNjYsNyArMTQy NiwxOCBAQCBhZGRyZXNzX29mX3ZhcmlhYmxlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIGNvbnN0IHN0 cnVjdCBibG9jayAqYikKICAgIGlmICgoVkFMVUVfTFZBTCAodmFsKSA9PSBsdmFsX21lbW9yeSAm JiB2YWx1ZV9sYXp5ICh2YWwpKQogICAgICAgIHx8IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9D T0RFX0ZVTkMpCiAgICAgIHsKQEAgLTgxOTMsNyArODA1OCw3IEBAIGluZGV4IDkzYzA5ZDguLmFl ZjA5OTEgMTAwNjQ0CiAgCiAgICAgICAgcmV0dXJuIHZhbHVlX2Zyb21fcG9pbnRlciAobG9va3Vw X3BvaW50ZXJfdHlwZSAodHlwZSksIGFkZHIpOwogICAgICB9Ci1AQCAtMTYzNiw2ICsxNzE5LDcg QEAgc3RydWN0IHZhbHVlICoKK0BAIC0xNDczLDYgKzE1NDQsNyBAQCBzdHJ1Y3QgdmFsdWUgKgog IHZhbHVlX2NvZXJjZV9hcnJheSAoc3RydWN0IHZhbHVlICphcmcxKQogIHsKICAgIHN0cnVjdCB0 eXBlICp0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOwpAQCAtODIwMSw3 ICs4MDY2LDcgQEAgaW5kZXggOTNjMDlkOC4uYWVmMDk5MSAxMDA2NDQKICAKICAgIC8qIElmIHRo ZSB1c2VyIHRyaWVzIHRvIGRvIHNvbWV0aGluZyByZXF1aXJpbmcgYSBwb2ludGVyIHdpdGggYW4K ICAgICAgIGFycmF5IHRoYXQgaGFzIG5vdCB5ZXQgYmVlbiBwdXNoZWQgdG8gdGhlIHRhcmdldCwg dGhlbiB0aGlzIHdvdWxkCi1AQCAtMTY0NSw4ICsxNzI5LDEyIEBAIHZhbHVlX2NvZXJjZV9hcnJh eSAoc3RydWN0IHZhbHVlICphcmcxKQorQEAgLTE0ODIsOCArMTU1NCwxMiBAQCB2YWx1ZV9jb2Vy Y2VfYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJnMSkKICAgIGlmIChWQUxVRV9MVkFMIChhcmcxKSAh PSBsdmFsX21lbW9yeSkKICAgICAgZXJyb3IgKF8oIkF0dGVtcHQgdG8gdGFrZSBhZGRyZXNzIG9m IHZhbHVlIG5vdCBsb2NhdGVkIGluIG1lbW9yeS4iKSk7CiAgCkBAIC04MjE1LDcgKzgwODAsNyBA QCBpbmRleCA5M2MwOWQ4Li5hZWYwOTkxIDEwMDY0NAogIH0KICAKICAvKiBHaXZlbiBhIHZhbHVl IHdoaWNoIGlzIGEgZnVuY3Rpb24sIHJldHVybiBhIHZhbHVlIHdoaWNoIGlzIGEgcG9pbnRlcgot QEAgLTM3MjEsNiArMzgwOSw4IEBAIHZhbHVlX3NsaWNlIChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBp bnQgbG93Ym91bmQsIGludCBsZW5ndGgpCitAQCAtMzU1OCw2ICszNjM0LDggQEAgdmFsdWVfc2xp Y2UgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIGludCBsb3dib3VuZCwgaW50IGxlbmd0aCkKICAJCQkJ CVRZUEVfVEFSR0VUX1RZUEUgKHJhbmdlX3R5cGUpLAogIAkJCQkJbG93Ym91bmQsIAogIAkJCQkJ bG93Ym91bmQgKyBsZW5ndGggLSAxKTsKQEAgLTgyMjUsNyArODA5MCw3IEBAIGluZGV4IDkzYzA5 ZDguLmFlZjA5OTEgMTAwNjQ0CiAgICAgIHsKICAgICAgICBzdHJ1Y3QgdHlwZSAqZWxlbWVudF90 eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSk7CiBkaWZmIC0tZ2l0IGEvZ2RiL3Zh bHByaW50LmMgYi9nZGIvdmFscHJpbnQuYwotaW5kZXggMThjZmY0OS4uODljYjAxYSAxMDA2NDQK K2luZGV4IDc1M2FlMzQuLjZkODdkOWMgMTAwNjQ0CiAtLS0gYS9nZGIvdmFscHJpbnQuYwogKysr IGIvZ2RiL3ZhbHByaW50LmMKIEBAIC0zNyw2ICszNyw3IEBACkBAIC04MjM2LDcgKzgxMDEsNyBA QCBpbmRleCAxOGNmZjQ5Li44OWNiMDFhIDEwMDY0NAogIAogICNpbmNsdWRlIDxlcnJuby5oPgog IAotQEAgLTI4Nyw3ICsyODgsNiBAQCBzY2FsYXJfdHlwZV9wIChzdHJ1Y3QgdHlwZSAqdHlwZSkK K0BAIC0yOTAsNyArMjkxLDYgQEAgc2NhbGFyX3R5cGVfcCAoc3RydWN0IHR5cGUgKnR5cGUpCiAg ICAgIGNhc2UgVFlQRV9DT0RFX1NUUlVDVDoKICAgICAgY2FzZSBUWVBFX0NPREVfVU5JT046CiAg ICAgIGNhc2UgVFlQRV9DT0RFX1NFVDoKQEAgLTgyNDQsNyArODEwOSw3IEBAIGluZGV4IDE4Y2Zm NDkuLjg5Y2IwMWEgMTAwNjQ0CiAgICAgICAgcmV0dXJuIDA7CiAgICAgIGRlZmF1bHQ6CiAgICAg ICAgcmV0dXJuIDE7Ci1AQCAtMTYwNCw2ICsxNjA0LDcgQEAgdmFsX3ByaW50X2FycmF5X2VsZW1l bnRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwKK0BAIC0xNjA3LDYgKzE2MDcsNyBAQCB2YWxfcHJpbnRf YXJyYXlfZWxlbWVudHMgKHN0cnVjdCB0eXBlICp0eXBlLAogIHsKICAgIHVuc2lnbmVkIGludCB0 aGluZ3NfcHJpbnRlZCA9IDA7CiAgICB1bnNpZ25lZCBsZW47CkBAIC04MjUyLDcgKzgxMTcsNyBA QCBpbmRleCAxOGNmZjQ5Li44OWNiMDFhIDEwMDY0NAogICAgc3RydWN0IHR5cGUgKmVsdHR5cGUs ICppbmRleF90eXBlOwogICAgdW5zaWduZWQgZWx0bGVuOwogICAgLyogUG9zaXRpb24gb2YgdGhl IGFycmF5IGVsZW1lbnQgd2UgYXJlIGV4YW1pbmluZyB0byBzZWUKLUBAIC0xNjEyLDkgKzE2MTMs MzMgQEAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwKK0BAIC0x NjE1LDkgKzE2MTYsMzMgQEAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChzdHJ1Y3QgdHlwZSAq dHlwZSwKICAgIC8qIE51bWJlciBvZiByZXBldGl0aW9ucyB3ZSBoYXZlIGRldGVjdGVkIHNvIGZh ci4gICovCiAgICB1bnNpZ25lZCBpbnQgcmVwczsKICAgIExPTkdFU1QgbG93X2JvdW5kLCBoaWdo X2JvdW5kOwpAQCAtODI4OCw3ICs4MTUzLDcgQEAgaW5kZXggMThjZmY0OS4uODljYjAxYSAxMDA2 NDQKICAgIGluZGV4X3R5cGUgPSBUWVBFX0lOREVYX1RZUEUgKHR5cGUpOwogIAogICAgaWYgKGdl dF9hcnJheV9ib3VuZHMgKHR5cGUsICZsb3dfYm91bmQsICZoaWdoX2JvdW5kKSkKLUBAIC0xNzAx LDYgKzE3MjYsOCBAQCB2YWxfcHJpbnRfYXJyYXlfZWxlbWVudHMgKHN0cnVjdCB0eXBlICp0eXBl LAorQEAgLTE3MDQsNiArMTcyOSw4IEBAIHZhbF9wcmludF9hcnJheV9lbGVtZW50cyAoc3RydWN0 IHR5cGUgKnR5cGUsCiAgICAgIHsKICAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIu Li4iKTsKICAgICAgfQpAQCAtODI5OCwxOCArODE2MywxOCBAQCBpbmRleCAxOGNmZjQ5Li44OWNi MDFhIDEwMDY0NAogIAogIC8qIFJlYWQgTEVOIGJ5dGVzIG9mIHRhcmdldCBtZW1vcnkgYXQgYWRk cmVzcyBNRU1BRERSLCBwbGFjaW5nIHRoZQogZGlmZiAtLWdpdCBhL2dkYi92YWx1ZS5jIGIvZ2Ri L3ZhbHVlLmMKLWluZGV4IDRiNzBlY2UuLjc0NDljMmEgMTAwNjQ0CitpbmRleCA4ZDYzNWM3Li5j Y2U4N2M2IDEwMDY0NAogLS0tIGEvZ2RiL3ZhbHVlLmMKICsrKyBiL2dkYi92YWx1ZS5jCi1AQCAt NDIsNiArNDIsNyBAQAotICNpbmNsdWRlIDxjdHlwZS5oPgorQEAgLTQzLDYgKzQzLDcgQEAKICAj aW5jbHVkZSAidHJhY2Vwb2ludC5oIgogICNpbmNsdWRlICJjcC1hYmkuaCIKKyAjaW5jbHVkZSAi dXNlci1yZWdzLmgiCiArI2luY2x1ZGUgIm9ic2VydmVyLmgiCiAgCiAgLyogUHJvdG90eXBlcyBm b3IgZXhwb3J0ZWQgZnVuY3Rpb25zLiAgKi8KICAKLUBAIC0xNDM1LDEyICsxNDM2LDE1IEBAIHZv aWQKK0BAIC0xNDQ4LDEyICsxNDQ5LDE1IEBAIHZvaWQKICBzZXRfdmFsdWVfY29tcG9uZW50X2xv Y2F0aW9uIChzdHJ1Y3QgdmFsdWUgKmNvbXBvbmVudCwKICAJCQkgICAgICBjb25zdCBzdHJ1Y3Qg dmFsdWUgKndob2xlKQogIHsKQEAgLTgzMjUsNyArODE5MCw3IEBAIGluZGV4IDRiNzBlY2UuLjc0 NDljMmEgMTAwNjQ0CiAgICBpZiAod2hvbGUtPmx2YWwgPT0gbHZhbF9jb21wdXRlZCkKICAgICAg ewogICAgICAgIGNvbnN0IHN0cnVjdCBsdmFsX2Z1bmNzICpmdW5jcyA9IHdob2xlLT5sb2NhdGlv bi5jb21wdXRlZC5mdW5jczsKLUBAIC0xNDQ4LDYgKzE0NTIsMTIgQEAgc2V0X3ZhbHVlX2NvbXBv bmVudF9sb2NhdGlvbiAoc3RydWN0IHZhbHVlICpjb21wb25lbnQsCitAQCAtMTQ2MSw2ICsxNDY1 LDEyIEBAIHNldF92YWx1ZV9jb21wb25lbnRfbG9jYXRpb24gKHN0cnVjdCB2YWx1ZSAqY29tcG9u ZW50LAogICAgICAgIGlmIChmdW5jcy0+Y29weV9jbG9zdXJlKQogICAgICAgICAgY29tcG9uZW50 LT5sb2NhdGlvbi5jb21wdXRlZC5jbG9zdXJlID0gZnVuY3MtPmNvcHlfY2xvc3VyZSAod2hvbGUp OwogICAgICB9CkBAIC04MzM4LDcgKzgyMDMsNyBAQCBpbmRleCA0YjcwZWNlLi43NDQ5YzJhIDEw MDY0NAogIH0KICAKICAMCi1AQCAtMTU4MSw2ICsxNTkxLDMxIEBAIHNob3dfdmFsdWVzIChjaGFy ICpudW1fZXhwLCBpbnQgZnJvbV90dHkpCitAQCAtMTU5NCw2ICsxNjA0LDMxIEBAIHNob3dfdmFs dWVzIChjaGFyICpudW1fZXhwLCBpbnQgZnJvbV90dHkpCiAgICAgICAgbnVtX2V4cFsxXSA9ICdc MCc7CiAgICAgIH0KICB9CkBAIC04MzcwLDcgKzgyMzUsNyBAQCBpbmRleCA0YjcwZWNlLi43NDQ5 YzJhIDEwMDY0NAogIAwKICAvKiBJbnRlcm5hbCB2YXJpYWJsZXMuICBUaGVzZSBhcmUgdmFyaWFi bGVzIHdpdGhpbiB0aGUgZGVidWdnZXIKICAgICB0aGF0IGhvbGQgdmFsdWVzIGFzc2lnbmVkIGJ5 IGRlYnVnZ2VyIGNvbW1hbmRzLgotQEAgLTIxMTYsNiArMjE1MSwzOCBAQCBjYWxsX2ludGVybmFs X2Z1bmN0aW9uIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKK0BAIC0yMTI5LDYgKzIxNjQsMzgg QEAgY2FsbF9pbnRlcm5hbF9mdW5jdGlvbiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCiAgICBy ZXR1cm4gKCppZm4tPmhhbmRsZXIpIChnZGJhcmNoLCBsYW5ndWFnZSwgaWZuLT5jb29raWUsIGFy Z2MsIGFyZ3YpOwogIH0KICAKQEAgLTg0MDksNyArODI3NCw3IEBAIGluZGV4IDRiNzBlY2UuLjc0 NDljMmEgMTAwNjQ0CiAgLyogVGhlICdmdW5jdGlvbicgY29tbWFuZC4gIFRoaXMgZG9lcyBub3Ro aW5nIC0tIGl0IGlzIGp1c3QgYQogICAgIHBsYWNlaG9sZGVyIHRvIGxldCAiaGVscCBmdW5jdGlv biBOQU1FIiB3b3JrLiAgVGhpcyBpcyBhbHNvIHVzZWQgYXMKICAgICB0aGUgaW1wbGVtZW50YXRp b24gb2YgdGhlIHN1Yi1jb21tYW5kIHRoYXQgaXMgY3JlYXRlZCB3aGVuCi1AQCAtMjE2MywxMSAr MjIzMCwxMCBAQCBwcmVzZXJ2ZV9vbmVfdmFsdWUgKHN0cnVjdCB2YWx1ZSAqdmFsdWUsIHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLAorQEAgLTIxNzYsMTEgKzIyNDMsMTAgQEAgcHJlc2VydmVfb25l X3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnZhbHVlLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAJ CSAgICBodGFiX3QgY29waWVkX3R5cGVzKQogIHsKICAgIGlmIChUWVBFX09CSkZJTEUgKHZhbHVl LT50eXBlKSA9PSBvYmpmaWxlKQpAQCAtODQyMyw3ICs4Mjg4LDcgQEAgaW5kZXggNGI3MGVjZS4u NzQ0OWMyYSAxMDA2NDQKICAJCQkJCQkgY29waWVkX3R5cGVzKTsKICB9CiAgCi1AQCAtMjE4Miw3 ICsyMjQ4LDcgQEAgcHJlc2VydmVfb25lX2ludGVybmFsdmFyIChzdHJ1Y3QgaW50ZXJuYWx2YXIg KnZhciwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCitAQCAtMjE5NSw3ICsyMjYxLDcgQEAgcHJl c2VydmVfb25lX2ludGVybmFsdmFyIChzdHJ1Y3QgaW50ZXJuYWx2YXIgKnZhciwgc3RydWN0IG9i amZpbGUgKm9iamZpbGUsCiAgICAgIGNhc2UgSU5URVJOQUxWQVJfSU5URUdFUjoKICAgICAgICBp ZiAodmFyLT51LmludGVnZXIudHlwZSAmJiBUWVBFX09CSkZJTEUgKHZhci0+dS5pbnRlZ2VyLnR5 cGUpID09IG9iamZpbGUpCiAgCXZhci0+dS5pbnRlZ2VyLnR5cGUKQEAgLTg0MzIsNyArODI5Nyw3 IEBAIGluZGV4IDRiNzBlY2UuLjc0NDljMmEgMTAwNjQ0CiAgICAgICAgYnJlYWs7CiAgCiAgICAg IGNhc2UgSU5URVJOQUxWQVJfVkFMVUU6Ci1AQCAtMzI4MCwxMCArMzM0NiwyNyBAQCByZWFkanVz dF9pbmRpcmVjdF92YWx1ZV90eXBlIChzdHJ1Y3QgdmFsdWUgKnZhbHVlLCBzdHJ1Y3QgdHlwZSAq ZW5jX3R5cGUsCitAQCAtMzMwOCwxMCArMzM3NCwyNyBAQCByZWFkanVzdF9pbmRpcmVjdF92YWx1 ZV90eXBlIChzdHJ1Y3QgdmFsdWUgKnZhbHVlLCBzdHJ1Y3QgdHlwZSAqZW5jX3R5cGUsCiAgc3Ry dWN0IHZhbHVlICoKICBjb2VyY2VfcmVmIChzdHJ1Y3QgdmFsdWUgKmFyZykKICB7CkBAIC04NDYx LDcgKzgzMjYsNDggQEAgaW5kZXggNGI3MGVjZS4uNzQ0OWMyYSAxMDA2NDQKICAgIHJldHZhbCA9 IGNvZXJjZV9yZWZfaWZfY29tcHV0ZWQgKGFyZyk7CiAgICBpZiAocmV0dmFsKQogICAgICByZXR1 cm4gcmV0dmFsOwotQEAgLTM0MDUsNCArMzQ4OCwxMCBAQCBWQVJJQUJMRSBpcyBhbHJlYWR5IGlu aXRpYWxpemVkLiIpKTsKK0BAIC0zNDE5LDcgKzM1MDIsOCBAQCBpbnQKKyB2YWx1ZV9mZXRjaF9s YXp5IChzdHJ1Y3QgdmFsdWUgKnZhbCkKKyB7CisgICBnZGJfYXNzZXJ0ICh2YWx1ZV9sYXp5ICh2 YWwpKTsKKy0gIGFsbG9jYXRlX3ZhbHVlX2NvbnRlbnRzICh2YWwpOworKyAgaWYgKFZBTFVFX0xW QUwgKHZhbCkgIT0gbHZhbF9tZW1vcnkpCisrICAgIGFsbG9jYXRlX3ZhbHVlX2NvbnRlbnRzICh2 YWwpOworICAgaWYgKHZhbHVlX2JpdHNpemUgKHZhbCkpCisgICAgIHsKKyAgICAgICAvKiBUbyBy ZWFkIGEgbGF6eSBiaXRmaWVsZCwgcmVhZCB0aGUgZW50aXJlIGVuY2xvc2luZyB2YWx1ZS4gIFRo aXMKK0BAIC0zNDU0LDEzICszNTM4LDI0IEBAIHZhbHVlX2ZldGNoX2xhenkgKHN0cnVjdCB2YWx1 ZSAqdmFsKQorICAgICB9CisgICBlbHNlIGlmIChWQUxVRV9MVkFMICh2YWwpID09IGx2YWxfbWVt b3J5KQorICAgICB7CistICAgICAgQ09SRV9BRERSIGFkZHIgPSB2YWx1ZV9hZGRyZXNzICh2YWwp OworLSAgICAgIHN0cnVjdCB0eXBlICp0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfZW5jbG9z aW5nX3R5cGUgKHZhbCkpOworKyAgICAgIENPUkVfQUREUiBhZGRyID0gdmFsdWVfcmF3X2FkZHJl c3MgKHZhbCk7CisrCisrICAgICAgaWYgKG9iamVjdF9hZGRyZXNzX2dldF9kYXRhICh2YWx1ZV90 eXBlICh2YWwpLCAmYWRkcikpCisrCXsKKysJICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IHZhbHVlX2Vu Y2xvc2luZ190eXBlICh2YWwpOworKwkgIGludCBsZW5ndGggPSBUWVBFX0xFTkdUSCAoY2hlY2tf dHlwZWRlZiAodHlwZSkpOworIAorLSAgICAgIGlmIChUWVBFX0xFTkdUSCAodHlwZSkpCistCXJl YWRfdmFsdWVfbWVtb3J5ICh2YWwsIDAsIHZhbHVlX3N0YWNrICh2YWwpLAorLQkJCSAgIGFkZHIs IHZhbHVlX2NvbnRlbnRzX2FsbF9yYXcgKHZhbCksCistCQkJICAgVFlQRV9MRU5HVEggKHR5cGUp KTsKKysJICBpZiAobGVuZ3RoKQorKwkgICAgeworKwkgICAgICAvKiBEZWxheSBpdCBhZnRlciBv YmplY3RfYWRkcmVzc19nZXRfZGF0YSBhYm92ZS4gICovCisrCSAgICAgIGFsbG9jYXRlX3ZhbHVl X2NvbnRlbnRzICh2YWwpOworKwkgICAgICBhZGRyICs9IHZhbHVlX29mZnNldCAodmFsKTsKKysJ ICAgICAgcmVhZF92YWx1ZV9tZW1vcnkgKHZhbCwgMCwgdmFsdWVfc3RhY2sgKHZhbCksCisrCQkJ CSBhZGRyLCB2YWx1ZV9jb250ZW50c19hbGxfcmF3ICh2YWwpLCBsZW5ndGgpOworKwkgICAgfQor Kwl9CisrICAgICAgLyogSnVzdCB0byBiZSBzdXJlIGl0IGhhcyBiZWVuIGNhbGxlZC4gICovCisr ICAgICAgYWxsb2NhdGVfdmFsdWVfY29udGVudHMgKHZhbCk7CisgICAgIH0KKyAgIGVsc2UgaWYg KFZBTFVFX0xWQUwgKHZhbCkgPT0gbHZhbF9yZWdpc3RlcikKKyAgICAgeworQEAgLTM1OTksNCAr MzY5NCwxMCBAQCBWQVJJQUJMRSBpcyBhbHJlYWR5IGluaXRpYWxpemVkLiIpKTsKICAgIGFkZF9w cmVmaXhfY21kICgiZnVuY3Rpb24iLCBub19jbGFzcywgZnVuY3Rpb25fY29tbWFuZCwgXygiXAog IFBsYWNlaG9sZGVyIGNvbW1hbmQgZm9yIHNob3dpbmcgaGVscCBvbiBjb252ZW5pZW5jZSBmdW5j dGlvbnMuIiksCiAgCQkgICZmdW5jdGlvbmxpc3QsICJmdW5jdGlvbiAiLCAwLCAmY21kbGlzdCk7 CkBAIC04NDczLDEwICs4Mzc5LDEwIEBAIGluZGV4IDRiNzBlY2UuLjc0NDljMmEgMTAwNjQ0CiAr I2VuZGlmCiAgfQogZGlmZiAtLWdpdCBhL2dkYi92YWx1ZS5oIGIvZ2RiL3ZhbHVlLmgKLWluZGV4 IGMxMGMzZWMuLjhkMDczNDggMTAwNjQ0CitpbmRleCA1ZTAwYzg5Li5kOWVmZTNlIDEwMDY0NAog LS0tIGEvZ2RiL3ZhbHVlLmgKICsrKyBiL2dkYi92YWx1ZS5oCi1AQCAtNTM3LDYgKzUzNywxMCBA QCBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1ZV9mcm9tX2RlY2Zsb2F0IChzdHJ1Y3QgdHlwZSAq dHlwZSwKK0BAIC01NDgsNiArNTQ4LDEwIEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2Zy b21fZGVjZmxvYXQgKHN0cnVjdCB0eXBlICp0eXBlLAogIAkJCQkJICBjb25zdCBnZGJfYnl0ZSAq ZGVjYnl0ZXMpOwogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2Zyb21faGlzdG9yeV9yZWYg KGNoYXIgKiwgY2hhciAqKik7CiAgCgpkaWZmIC0tZ2l0IGEvZ2RiLWF0dGFjaC1mYWlsLXJlYXNv bnMtNW9mNS5wYXRjaCBiL2dkYi1hdHRhY2gtZmFpbC1yZWFzb25zLTVvZjUucGF0Y2gKaW5kZXgg YTk4ZTI1Ni4uNzNlM2Y5NyAxMDA2NDQKLS0tIGEvZ2RiLWF0dGFjaC1mYWlsLXJlYXNvbnMtNW9m NS5wYXRjaAorKysgYi9nZGItYXR0YWNoLWZhaWwtcmVhc29ucy01b2Y1LnBhdGNoCkBAIC0zNywx MCArMzcsMTAgQEAgZ2RiL2dkYnNlcnZlci8KIAkobGludXhfY3JlYXRlX2luZmVyaW9yLCBsaW51 eF90cmFjZWZvcmtfY2hpbGQpOiBDYWxsIGl0IGluc3RlYWQgb2YKIAlkaXJlY3QgcHRyYWNlLgog Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvY29tbW9uL2xpbnV4LXB0cmFjZS5jCitJ bmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2NvbW1vbi9saW51eC1wdHJhY2UuYwog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvY29tbW9uL2xpbnV4 LXB0cmFjZS5jCTIwMTMtMDEtMDggMjA6Mzg6NTEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu NS41MC4yMDEzMDIxNS9nZGIvY29tbW9uL2xpbnV4LXB0cmFjZS5jCTIwMTMtMDItMTUgMjI6Mzg6 MDUuNzgyNDU2Mjc5ICswMTAwCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIv Y29tbW9uL2xpbnV4LXB0cmFjZS5jCTIwMTMtMDgtMDIgMTY6MzM6NTIuNzY3ODcyNDEyICswMjAw CisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2NvbW1vbi9saW51eC1wdHJhY2UuYwky MDEzLTA4LTAyIDE2OjM0OjE2LjEyMjkxMDkzNCArMDIwMAogQEAgLTI5LDYgKzI5LDEwIEBACiAg I2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKICAjaW5jbHVkZSAiZ2RiX3dhaXQuaCIKQEAgLTYxLDcg KzYxLDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2NvbW1vbi9saW51eC1wdHJh Y2UuYwogIH0KICAKICAjaWYgZGVmaW5lZCBfX2kzODZfXyB8fCBkZWZpbmVkIF9feDg2XzY0X18K LUBAIC0yNDMsMyArMjQ5LDE5IEBAIGxpbnV4X3B0cmFjZV9pbml0X3dhcm5pbmdzICh2b2lkKQor QEAgLTIzNiwzICsyNDIsMTkgQEAgbGludXhfcHRyYWNlX2luaXRfd2FybmluZ3MgKHZvaWQpCiAg CiAgICBsaW51eF9wdHJhY2VfdGVzdF9yZXRfdG9fbnggKCk7CiAgfQpAQCAtODEsMTAgKzgxLDEw IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9jb21tb24vbGludXgtcHRyYWNlLmMK ICsJCQkgIihnZGIpIHNoZWxsIHN1ZG8gc2V0c2Vib29sIGRlbnlfcHRyYWNlPTAiKSk7CiArI2Vu ZGlmIC8qIEhBVkVfTElCU0VMSU5VWCAqLwogK30KLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1 L2dkYi9jb21tb24vbGludXgtcHRyYWNlLmgKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2 cy9nZGIvY29tbW9uL2xpbnV4LXB0cmFjZS5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4y MDEzMDIxNS5vcmlnL2dkYi9jb21tb24vbGludXgtcHRyYWNlLmgJMjAxMy0wMS0wMSAwNzozMjo1 NC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9jb21tb24vbGlu dXgtcHRyYWNlLmgJMjAxMy0wMi0xNSAyMjozODowNS43ODI0NTYyNzkgKzAxMDAKKy0tLSBnZGIt Ny42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9jb21tb24vbGludXgtcHRyYWNlLmgJMjAxMy0w OC0wMiAxNjozMzo1Mi43Njg4NzI0MTQgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2 cy9nZGIvY29tbW9uL2xpbnV4LXB0cmFjZS5oCTIwMTMtMDgtMDIgMTY6MzQ6MTYuMTIyOTEwOTM0 ICswMjAwCiBAQCAtNjksNSArNjksNiBAQCBzdHJ1Y3QgYnVmZmVyOwogIAogIGV4dGVybiB2b2lk IGxpbnV4X3B0cmFjZV9hdHRhY2hfd2FybmluZ3MgKHBpZF90IHBpZCwgc3RydWN0IGJ1ZmZlciAq YnVmZmVyKTsKQEAgLTkyLDEzICs5MiwxMyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9n ZGIvY29tbW9uL2xpbnV4LXB0cmFjZS5oCiArZXh0ZXJuIHZvaWQgbGludXhfcHRyYWNlX2NyZWF0 ZV93YXJuaW5ncyAoc3RydWN0IGJ1ZmZlciAqYnVmZmVyKTsKICAKICAjZW5kaWYgLyogQ09NTU9O X0xJTlVYX1BUUkFDRV9IICovCi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvY29uZmln dXJlLmFjCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2NvbmZpZ3VyZS5hYwog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvY29uZmlndXJlLmFj CTIwMTMtMDItMTUgMjI6Mzc6NTcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEz MDIxNS9nZGIvY29uZmlndXJlLmFjCTIwMTMtMDItMTUgMjI6Mzg6MDUuNzgzNDU2MjgxICswMTAw Ci1AQCAtMjA2OCw2ICsyMDY4LDEwIEBAIHRoZW4KLSAJICAgICAgW0RlZmluZSBpZiB5b3Ugc3Vw cG9ydCB0aGUgcGVyc29uYWxpdHkgc3lzY2FsbC5dKQotIGZpCistLS0gZ2RiLTcuNi41MC4yMDEz MDczMS1jdnMub3JpZy9nZGIvY29uZmlndXJlLmFjCTIwMTMtMDgtMDIgMTY6MzQ6MTYuMTIzOTEw OTM2ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2NvbmZpZ3VyZS5hYwky MDEzLTA4LTAyIDE2OjM0OjQ2LjUxOTk2MDA2MyArMDIwMAorQEAgLTIwNzEsNiArMjA3MSwxMCBA QCBjYXNlICRob3N0X29zIGluCisgZXNhYworIEFDX0RFRklORV9VTlFVT1RFRChHREJJTklULCIk Z2RiaW5pdCIsW1RoZSAuZ2RiaW5pdCBmaWxlbmFtZS5dKQogIAogK2RubCBDaGVjayBzZWN1cml0 eV9nZXRfYm9vbGVhbl9hY3RpdmUgYXZhaWxhYmlsaXR5LgogK0FDX0NIRUNLX0hFQURFUlMoc2Vs aW51eC9zZWxpbnV4LmgpCkBAIC0xMDcsMTEgKzEwNywxMSBAQCBJbmRleDogZ2RiLTcuNS41MC4y MDEzMDIxNS9nZGIvY29uZmlndXJlLmFjCiAgZG5sIEhhbmRsZSBvcHRpb25hbCBmZWF0dXJlcyB0 aGF0IGNhbiBiZSBlbmFibGVkLgogIAogICMgU3VwcG9ydCBmb3IgLS13aXRoLXN5c3Jvb3QgaXMg YSBjb3B5IG9mIEdEQl9BQ19XSVRIX0RJUiwKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dk Yi9nZGJzZXJ2ZXIvY29uZmlndXJlLmFjCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMv Z2RiL2dkYnNlcnZlci9jb25maWd1cmUuYWMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIw MTMwMjE1Lm9yaWcvZ2RiL2dkYnNlcnZlci9jb25maWd1cmUuYWMJMjAxMy0wMS0wMSAwNzozMzow MC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9nZGJzZXJ2ZXIv Y29uZmlndXJlLmFjCTIwMTMtMDItMTUgMjI6Mzg6MDUuNzgzNDU2MjgxICswMTAwCi1AQCAtNDUx LDYgKzQ1MSwxMCBAQCBpZiAkd2FudF9pcGEgOyB0aGVuCistLS0gZ2RiLTcuNi41MC4yMDEzMDcz MS1jdnMub3JpZy9nZGIvZ2Ric2VydmVyL2NvbmZpZ3VyZS5hYwkyMDEzLTA4LTAyIDE2OjM0OjE2 LjEyNDkxMDkzOCArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9nZGJzZXJ2 ZXIvY29uZmlndXJlLmFjCTIwMTMtMDgtMDIgMTY6MzU6MDYuNjM0OTkxODkyICswMjAwCitAQCAt NDcxLDYgKzQ3MSwxMCBAQCBpZiAkd2FudF9pcGEgOyB0aGVuCiAgICAgZmkKICBmaQogIApAQCAt MTIxLDEyICsxMjEsMTIgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2dkYnNlcnZl ci9jb25maWd1cmUuYWMKICsKICBBQ19TVUJTVChHREJTRVJWRVJfREVQRklMRVMpCiAgQUNfU1VC U1QoR0RCU0VSVkVSX0xJQlMpCi0gQUNfU1VCU1QoVVNFX1RIUkVBRF9EQikKLUluZGV4OiBnZGIt Ny41LjUwLjIwMTMwMjE1L2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMKKyBBQ19TVUJTVChzcnZf eG1sYnVpbHRpbikKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvZ2Ric2VydmVy L2xpbnV4LWxvdy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dk Yi9nZGJzZXJ2ZXIvbGludXgtbG93LmMJMjAxMy0wMi0wNCAxODo0NzowMC4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMJMjAx My0wMi0xNSAyMjozOTo1NC4yNTY1OTEwNjkgKzAxMDAKLUBAIC02MDIsNiArNjAyLDI5IEBAIGFk ZF9sd3AgKHB0aWRfdCBwdGlkKQorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2Ri L2dkYnNlcnZlci9saW51eC1sb3cuYwkyMDEzLTA4LTAyIDE2OjMzOjUyLjc3Mjg3MjQyMSArMDIw MAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMJ MjAxMy0wOC0wMiAxNjozNDoxNi4xMjY5MTA5NDEgKzAyMDAKK0BAIC02MjIsNiArNjIyLDI5IEBA IGFkZF9sd3AgKHB0aWRfdCBwdGlkKQogICAgcmV0dXJuIGx3cDsKICB9CiAgCkBAIC0xNTYsNyAr MTU2LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2dkYnNlcnZlci9saW51eC1s b3cuYwogIC8qIFN0YXJ0IGFuIGluZmVyaW9yIHByb2Nlc3MgYW5kIHJldHVybnMgaXRzIHBpZC4K ICAgICBBTExBUkdTIGlzIGEgdmVjdG9yIG9mIHByb2dyYW0tbmFtZSBhbmQgYXJncy4gKi8KICAK LUBAIC02NDIsNyArNjY1LDcgQEAgbGludXhfY3JlYXRlX2luZmVyaW9yIChjaGFyICpwcm9ncmFt LCBjaAorQEAgLTY2Miw3ICs2ODUsNyBAQCBsaW51eF9jcmVhdGVfaW5mZXJpb3IgKGNoYXIgKnBy b2dyYW0sIGNoCiAgCiAgICBpZiAocGlkID09IDApCiAgICAgIHsKQEAgLTE2NSw3ICsxNjUsNyBA QCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvZ2Ric2VydmVyL2xpbnV4LWxvdy5jCiAg CiAgI2lmbmRlZiBfX0FORFJPSURfXyAvKiBCaW9uaWMgZG9lc24ndCB1c2UgU0lHUlRNSU4gdGhl IHdheSBnbGliYyBkb2VzLiAgKi8KICAgICAgICBzaWduYWwgKF9fU0lHUlRNSU4gKyAxLCBTSUdf REZMKTsKLUBAIC00NTg3LDcgKzQ2MTAsNyBAQCBsaW51eF90cmFjZWZvcmtfZ3JhbmRjaGlsZCAo dm9pZCAqYXJnKQorQEAgLTQ2ODUsNyArNDcwOCw3IEBAIGxpbnV4X3RyYWNlZm9ya19ncmFuZGNo aWxkICh2b2lkICphcmcpCiAgc3RhdGljIGludAogIGxpbnV4X3RyYWNlZm9ya19jaGlsZCAodm9p ZCAqYXJnKQogIHsKQEAgLTE3NCwxMCArMTc0LDEwIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMw MjE1L2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMKICAgIGtpbGwgKGdldHBpZCAoKSwgU0lHU1RP UCk7CiAgCiAgI2lmICEoZGVmaW5lZChfX1VDTElCQ19fKSAmJiBkZWZpbmVkKEhBU19OT01NVSkp Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvaW5mLXB0cmFjZS5jCitJbmRleDogZ2Ri LTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2luZi1wdHJhY2UuYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvaW5mLXB0cmFjZS5jCTIwMTMtMDEtMDEgMDc6MzI6 NDUuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvaW5mLXB0cmFj ZS5jCTIwMTMtMDItMTUgMjI6Mzg6MDUuNzg2NDU2Mjg5ICswMTAwCistLS0gZ2RiLTcuNi41MC4y MDEzMDczMS1jdnMub3JpZy9nZGIvaW5mLXB0cmFjZS5jCTIwMTMtMDgtMDIgMTY6MzM6NTIuNzcy ODcyNDIxICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2luZi1wdHJhY2Uu YwkyMDEzLTA4LTAyIDE2OjM0OjE2LjEyNjkxMDk0MSArMDIwMAogQEAgLTEwNCw3ICsxMDQsMTUg QEAgc3RhdGljIHZvaWQKICBpbmZfcHRyYWNlX21lICh2b2lkKQogIHsKQEAgLTE5NCwxMSArMTk0 LDExIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9pbmYtcHRyYWNlLmMKICB9CiAg CiAgLyogU3RhcnQgYSBuZXcgaW5mZXJpb3IgVW5peCBjaGlsZCBwcm9jZXNzLiAgRVhFQ19GSUxF IGlzIHRoZSBmaWxlIHRvCi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvbGludXgtbmF0 LmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvbGludXgtbmF0LmMKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTMt MDItMTUgMjI6MzQ6NDQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9n ZGIvbGludXgtbmF0LmMJMjAxMy0wMi0xNSAyMjozODowNS43ODc0NTYyOTEgKzAxMDAKLUBAIC0x NTU3LDYgKzE1NTcsNyBAQCBsaW51eF9uYXRfY3JlYXRlX2luZmVyaW9yIChzdHJ1Y3QgdGFyZ2V0 CistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvbGludXgtbmF0LmMJMjAxMy0w OC0wMiAxNjozMzo1Mi43NzQ4NzI0MjQgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2 cy9nZGIvbGludXgtbmF0LmMJMjAxMy0wOC0wMiAxNjozNDoxNi4xMjg5MTA5NDQgKzAyMDAKK0BA IC0xNTU0LDYgKzE1NTQsNyBAQCBsaW51eF9uYXRfY3JlYXRlX2luZmVyaW9yIChzdHJ1Y3QgdGFy Z2V0CiAgI2lmZGVmIEhBVkVfUEVSU09OQUxJVFkKICAgIGludCBwZXJzb25hbGl0eV9vcmlnID0g MCwgcGVyc29uYWxpdHlfc2V0ID0gMDsKICAjZW5kaWYgLyogSEFWRV9QRVJTT05BTElUWSAqLwpA QCAtMjA2LDcgKzIwNiw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9saW51eC1u YXQuYwogIAogICAgLyogVGhlIGZvcmtfY2hpbGQgbWVjaGFuaXNtIGlzIHN5bmNocm9ub3VzIGFu ZCBjYWxscyB0YXJnZXRfd2FpdCwgc28KICAgICAgIHdlIGhhdmUgdG8gbWFzayB0aGUgYXN5bmMg bW9kZS4gICovCi1AQCAtMTU4MSw3ICsxNTgyLDEwIEBAIGxpbnV4X25hdF9jcmVhdGVfaW5mZXJp b3IgKHN0cnVjdCB0YXJnZXQKK0BAIC0xNTc4LDcgKzE1NzksMTAgQEAgbGludXhfbmF0X2NyZWF0 ZV9pbmZlcmlvciAoc3RydWN0IHRhcmdldAogICAgLyogTWFrZSBzdXJlIHdlIHJlcG9ydCBhbGwg c2lnbmFscyBkdXJpbmcgc3RhcnR1cC4gICovCiAgICBsaW51eF9uYXRfcGFzc19zaWduYWxzICgw LCBOVUxMKTsKICAKQEAgLTIxOCw3ICsyMTgsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIx NS9nZGIvbGludXgtbmF0LmMKICAKICAjaWZkZWYgSEFWRV9QRVJTT05BTElUWQogICAgaWYgKHBl cnNvbmFsaXR5X3NldCkKLUBAIC0xNTkzLDYgKzE1OTcsMjQgQEAgbGludXhfbmF0X2NyZWF0ZV9p bmZlcmlvciAoc3RydWN0IHRhcmdldAorQEAgLTE1OTAsNiArMTU5NCwyNCBAQCBsaW51eF9uYXRf Y3JlYXRlX2luZmVyaW9yIChzdHJ1Y3QgdGFyZ2V0CiAgCQkgc2FmZV9zdHJlcnJvciAoZXJybm8p KTsKICAgICAgfQogICNlbmRpZiAvKiBIQVZFX1BFUlNPTkFMSVRZICovCkBAIC0yNDMsMyArMjQz LDE5MiBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvbGludXgtbmF0LmMKICB9CiAg CiAgc3RhdGljIHZvaWQKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvY29uZmln LmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvY29u ZmlnLmluCTIwMTMtMDgtMDIgMTY6MjU6MjcuMzM5MDk3NTYxICswMjAwCisrKysgZ2RiLTcuNi41 MC4yMDEzMDczMS1jdnMvZ2RiL2NvbmZpZy5pbgkyMDEzLTA4LTAyIDE2OjM2OjE2LjI0OTA5OTg0 MSArMDIwMAorQEAgLTIyNSw2ICsyMjUsOSBAQAorIC8qIERlZmluZSBpZiBsaWJycG0gbGlicmFy eSBpcyBiZWluZyB1c2VkLiAqLworICN1bmRlZiBIQVZFX0xJQlJQTQorIAorKy8qIERlZmluZSB0 byAxIGlmIHlvdSBoYXZlIHRoZSBgc2VsaW51eCcgbGlicmFyeSAoLWxzZWxpbnV4KS4gKi8KKysj dW5kZWYgSEFWRV9MSUJTRUxJTlVYCisrCisgLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhl IDxsaWJ1bndpbmQtaWE2NC5oPiBoZWFkZXIgZmlsZS4gKi8KKyAjdW5kZWYgSEFWRV9MSUJVTldJ TkRfSUE2NF9ICisgCitAQCAtMzcyLDYgKzM3NSw5IEBACisgLyogRGVmaW5lIHRvIDEgaWYgeW91 IGhhdmUgdGhlIGBzYnJrJyBmdW5jdGlvbi4gKi8KKyAjdW5kZWYgSEFWRV9TQlJLCisgCisrLyog RGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzZWxpbnV4L3NlbGludXguaD4gaGVhZGVyIGZp bGUuICovCisrI3VuZGVmIEhBVkVfU0VMSU5VWF9TRUxJTlVYX0gKKysKKyAvKiBEZWZpbmUgdG8g MSBpZiB5b3UgaGF2ZSB0aGUgYHNldGxvY2FsZScgZnVuY3Rpb24uICovCisgI3VuZGVmIEhBVkVf U0VUTE9DQUxFCisgCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2NvbmZpZ3Vy ZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2NvbmZp Z3VyZQkyMDEzLTA4LTAyIDE2OjI1OjI3LjM0MzA5NzU2NyArMDIwMAorKysrIGdkYi03LjYuNTAu MjAxMzA3MzEtY3ZzL2dkYi9jb25maWd1cmUJMjAxMy0wOC0wMiAxNjozNjoxNC42NjUwOTc0MzQg KzAyMDAKK0BAIC0xMjg1MSw2ICsxMjg1MSw2NCBAQCBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9G CisgX0FDRU9GCisgCisgCisrZm9yIGFjX2hlYWRlciBpbiBzZWxpbnV4L3NlbGludXguaAorK2Rv IDoKKysgIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgIiRMSU5FTk8iICJzZWxpbnV4L3Nl bGludXguaCIgImFjX2N2X2hlYWRlcl9zZWxpbnV4X3NlbGludXhfaCIgIiRhY19pbmNsdWRlc19k ZWZhdWx0IgorK2lmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX3NlbGludXhfc2VsaW51eF9oIiA9IHgi InllczsgdGhlbiA6CisrICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisrI2RlZmluZSBIQVZF X1NFTElOVVhfU0VMSU5VWF9IIDEKKytfQUNFT0YKKysKKytmaQorKworK2RvbmUKKysKKyt7ICRh c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzZWN1cml0 eV9nZXRfYm9vbGVhbl9hY3RpdmUgaW4gLWxzZWxpbnV4IiA+JjUKKyskYXNfZWNob19uICJjaGVj a2luZyBmb3Igc2VjdXJpdHlfZ2V0X2Jvb2xlYW5fYWN0aXZlIGluIC1sc2VsaW51eC4uLiAiID4m NjsgfQorK2lmIHRlc3QgIiR7YWNfY3ZfbGliX3NlbGludXhfc2VjdXJpdHlfZ2V0X2Jvb2xlYW5f YWN0aXZlK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2 CisrZWxzZQorKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworK0xJQlM9Ii1sc2VsaW51 eCAgJExJQlMiCisrY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAor Ky8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKysKKysvKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFs IHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKysgICBVc2UgY2hhciBiZWNhdXNlIGludCBt aWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKysgICBidWlsdGluIGFuZCB0aGVu IGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworKyNpZmRlZiBf X2NwbHVzcGx1cworK2V4dGVybiAiQyIKKysjZW5kaWYKKytjaGFyIHNlY3VyaXR5X2dldF9ib29s ZWFuX2FjdGl2ZSAoKTsKKytpbnQKKyttYWluICgpCisreworK3JldHVybiBzZWN1cml0eV9nZXRf Ym9vbGVhbl9hY3RpdmUgKCk7CisrICA7CisrICByZXR1cm4gMDsKKyt9CisrX0FDRU9GCisraWYg YWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorKyAgYWNfY3ZfbGliX3NlbGludXhf c2VjdXJpdHlfZ2V0X2Jvb2xlYW5fYWN0aXZlPXllcworK2Vsc2UKKysgIGFjX2N2X2xpYl9zZWxp bnV4X3NlY3VyaXR5X2dldF9ib29sZWFuX2FjdGl2ZT1ubworK2ZpCisrcm0gLWYgY29yZSBjb25m dGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisrICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBj b25mdGVzdC4kYWNfZXh0CisrTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworK2ZpCisreyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJf c2VsaW51eF9zZWN1cml0eV9nZXRfYm9vbGVhbl9hY3RpdmUiID4mNQorKyRhc19lY2hvICIkYWNf Y3ZfbGliX3NlbGludXhfc2VjdXJpdHlfZ2V0X2Jvb2xlYW5fYWN0aXZlIiA+JjY7IH0KKytpZiB0 ZXN0ICJ4JGFjX2N2X2xpYl9zZWxpbnV4X3NlY3VyaXR5X2dldF9ib29sZWFuX2FjdGl2ZSIgPSB4 IiJ5ZXM7IHRoZW4gOgorKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorKyNkZWZpbmUgSEFW RV9MSUJTRUxJTlVYIDEKKytfQUNFT0YKKysKKysgIExJQlM9Ii1sc2VsaW51eCAkTElCUyIKKysK KytmaQorKworKworIAorICMgU3VwcG9ydCBmb3IgLS13aXRoLXN5c3Jvb3QgaXMgYSBjb3B5IG9m IEdEQl9BQ19XSVRIX0RJUiwKKyAjIGV4Y2VwdCB0aGF0IHRoZSBhcmd1bWVudCB0byAtLXdpdGgt c3lzcm9vdCBpcyBvcHRpb25hbC4KK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIv Z2Ric2VydmVyL2NvbmZpZy5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEt Y3ZzLm9yaWcvZ2RiL2dkYnNlcnZlci9jb25maWcuaW4JMjAxMy0wNy0zMSAyMTo0MTo1NC4wMDAw MDAwMDAgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvZ2Ric2VydmVyL2Nv bmZpZy5pbgkyMDEzLTA4LTAyIDE2OjM2OjIxLjcxOTEwODE0MSArMDIwMAorQEAgLTc2LDYgKzc2 LDEyIEBACisgLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBkbCcgbGlicmFyeSAoLWxk bCkuICovCisgI3VuZGVmIEhBVkVfTElCREwKKyAKKysvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2 ZSB0aGUgYG1jaGVjaycgbGlicmFyeSAoLWxtY2hlY2spLiAqLworKyN1bmRlZiBIQVZFX0xJQk1D SEVDSworKworKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2VsaW51eCcgbGlicmFy eSAoLWxzZWxpbnV4KS4gKi8KKysjdW5kZWYgSEFWRV9MSUJTRUxJTlVYCisrCisgLyogRGVmaW5l IGlmIHRoZSB0YXJnZXQgc3VwcG9ydHMgYnJhbmNoIHRyYWNpbmcuICovCisgI3VuZGVmIEhBVkVf TElOVVhfQlRSQUNFCisgCitAQCAtMTQ2LDYgKzE1Miw5IEBACisgLyogRGVmaW5lIHRvIDEgaWYg eW91IGhhdmUgdGhlIGByZWFkbGluaycgZnVuY3Rpb24uICovCisgI3VuZGVmIEhBVkVfUkVBRExJ TksKKyAKKysvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHNlbGludXgvc2VsaW51eC5o PiBoZWFkZXIgZmlsZS4gKi8KKysjdW5kZWYgSEFWRV9TRUxJTlVYX1NFTElOVVhfSAorKworIC8q IERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c2d0dHkuaD4gaGVhZGVyIGZpbGUuICovCisg I3VuZGVmIEhBVkVfU0dUVFlfSAorIAorSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dk Yi9nZGJzZXJ2ZXIvY29uZmlndXJlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNi41MC4yMDEzMDcz MS1jdnMub3JpZy9nZGIvZ2Ric2VydmVyL2NvbmZpZ3VyZQkyMDEzLTA3LTMxIDIxOjQxOjU0LjAw MDAwMDAwMCArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9nZGJzZXJ2ZXIv Y29uZmlndXJlCTIwMTMtMDgtMDIgMTY6MzY6MjAuMjM3MTA1ODk0ICswMjAwCitAQCAtNjAwMyw2 ICs2MDAzLDY0IEBAIGlmICR3YW50X2lwYSA7IHRoZW4KKyAgICBmaQorIGZpCisgCisrZm9yIGFj X2hlYWRlciBpbiBzZWxpbnV4L3NlbGludXguaAorK2RvIDoKKysgIGFjX2ZuX2NfY2hlY2tfaGVh ZGVyX21vbmdyZWwgIiRMSU5FTk8iICJzZWxpbnV4L3NlbGludXguaCIgImFjX2N2X2hlYWRlcl9z ZWxpbnV4X3NlbGludXhfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgorK2lmIHRlc3QgIngkYWNf Y3ZfaGVhZGVyX3NlbGludXhfc2VsaW51eF9oIiA9IHgiInllczsgdGhlbiA6CisrICBjYXQgPj5j b25mZGVmcy5oIDw8X0FDRU9GCisrI2RlZmluZSBIQVZFX1NFTElOVVhfU0VMSU5VWF9IIDEKKytf QUNFT0YKKysKKytmaQorKworK2RvbmUKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzZWN1cml0eV9nZXRfYm9vbGVhbl9hY3RpdmUgaW4g LWxzZWxpbnV4IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3Igc2VjdXJpdHlfZ2V0X2Jv b2xlYW5fYWN0aXZlIGluIC1sc2VsaW51eC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7YWNfY3Zf bGliX3NlbGludXhfc2VjdXJpdHlfZ2V0X2Jvb2xlYW5fYWN0aXZlK3NldH0iID0gc2V0OyB0aGVu IDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgYWNfY2hlY2tfbGli X3NhdmVfTElCUz0kTElCUworK0xJQlM9Ii1sc2VsaW51eCAgJExJQlMiCisrY2F0IGNvbmZkZWZz LmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8K KysKKysvKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBl cnJvci4KKysgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5 cGUgb2YgYSBHQ0MKKysgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUg d291bGQgc3RpbGwgYXBwbHkuICAqLworKyNpZmRlZiBfX2NwbHVzcGx1cworK2V4dGVybiAiQyIK KysjZW5kaWYKKytjaGFyIHNlY3VyaXR5X2dldF9ib29sZWFuX2FjdGl2ZSAoKTsKKytpbnQKKytt YWluICgpCisreworK3JldHVybiBzZWN1cml0eV9nZXRfYm9vbGVhbl9hY3RpdmUgKCk7CisrICA7 CisrICByZXR1cm4gMDsKKyt9CisrX0FDRU9GCisraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVO TyI7IHRoZW4gOgorKyAgYWNfY3ZfbGliX3NlbGludXhfc2VjdXJpdHlfZ2V0X2Jvb2xlYW5fYWN0 aXZlPXllcworK2Vsc2UKKysgIGFjX2N2X2xpYl9zZWxpbnV4X3NlY3VyaXR5X2dldF9ib29sZWFu X2FjdGl2ZT1ubworK2ZpCisrcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29i amV4dCBcCisrICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CisrTElCUz0k YWNfY2hlY2tfbGliX3NhdmVfTElCUworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfc2VsaW51eF9zZWN1cml0eV9nZXRfYm9v bGVhbl9hY3RpdmUiID4mNQorKyRhc19lY2hvICIkYWNfY3ZfbGliX3NlbGludXhfc2VjdXJpdHlf Z2V0X2Jvb2xlYW5fYWN0aXZlIiA+JjY7IH0KKytpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9zZWxpbnV4 X3NlY3VyaXR5X2dldF9ib29sZWFuX2FjdGl2ZSIgPSB4IiJ5ZXM7IHRoZW4gOgorKyAgY2F0ID4+ Y29uZmRlZnMuaCA8PF9BQ0VPRgorKyNkZWZpbmUgSEFWRV9MSUJTRUxJTlVYIDEKKytfQUNFT0YK KysKKysgIExJQlM9Ii1sc2VsaW51eCAkTElCUyIKKysKKytmaQorKworKworIAorIAorIAoKZGlm ZiAtLWdpdCBhL2dkYi1hdHRhY2gtZmFpbC1yZWFzb25zLTVvZjVjb25maWd1cmUucGF0Y2ggYi9n ZGItYXR0YWNoLWZhaWwtcmVhc29ucy01b2Y1Y29uZmlndXJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCA3NmI4MGVlLi4wMDAwMDAwCi0tLSBhL2dkYi1hdHRhY2gtZmFpbC1y ZWFzb25zLTVvZjVjb25maWd1cmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxODYgKzAsMCBA QAotSW5kZXg6IGdkYi03LjUuOTEuMjAxMzAzMjMvZ2RiL2NvbmZpZy5pbgotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjUuOTEuMjAxMzAzMjMub3JpZy9nZGIvY29uZmlnLmluCTIwMTMtMDMtMjMgMTk6 NDg6MTguMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS45MS4yMDEzMDMyMy9nZGIvY29uZmln LmluCTIwMTMtMDMtMjMgMTk6NTA6NTMuMzAwMDY2Mzc4ICswMTAwCi1AQCAtMjE2LDYgKzIxNiw5 IEBACi0gLyogRGVmaW5lIGlmIGxpYnJwbSBsaWJyYXJ5IGlzIGJlaW5nIHVzZWQuICovCi0gI3Vu ZGVmIEhBVkVfTElCUlBNCi0gCi0rLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZWxp bnV4JyBsaWJyYXJ5ICgtbHNlbGludXgpLiAqLwotKyN1bmRlZiBIQVZFX0xJQlNFTElOVVgKLSsK LSAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGxpYnVud2luZC1pYTY0Lmg+IGhlYWRl ciBmaWxlLiAqLwotICN1bmRlZiBIQVZFX0xJQlVOV0lORF9JQTY0X0gKLSAKLUBAIC0zNjAsNiAr MzYzLDkgQEAKLSAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNicmsnIGZ1bmN0aW9u LiAqLwotICN1bmRlZiBIQVZFX1NCUksKLSAKLSsvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0 aGUgPHNlbGludXgvc2VsaW51eC5oPiBoZWFkZXIgZmlsZS4gKi8KLSsjdW5kZWYgSEFWRV9TRUxJ TlVYX1NFTElOVVhfSAotKwotIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2V0bG9j YWxlJyBmdW5jdGlvbi4gKi8KLSAjdW5kZWYgSEFWRV9TRVRMT0NBTEUKLSAKLUluZGV4OiBnZGIt Ny41LjkxLjIwMTMwMzIzL2dkYi9jb25maWd1cmUKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41Ljkx LjIwMTMwMzIzLm9yaWcvZ2RiL2NvbmZpZ3VyZQkyMDEzLTAzLTIzIDE5OjQ4OjE4LjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi03LjUuOTEuMjAxMzAzMjMvZ2RiL2NvbmZpZ3VyZQkyMDEzLTAzLTIz IDE5OjUwOjUzLjMwMzA2NjM3NiArMDEwMAotQEAgLTEyODE0LDYgKzEyODE0LDY0IEBAICRhc19l Y2hvICIjZGVmaW5lIEhBVkVfUEVSU09OQUxJVFkgMSIgPj4KLSAKLSBmaQotIAotK2ZvciBhY19o ZWFkZXIgaW4gc2VsaW51eC9zZWxpbnV4LmgKLStkbyA6Ci0rICBhY19mbl9jX2NoZWNrX2hlYWRl cl9tb25ncmVsICIkTElORU5PIiAic2VsaW51eC9zZWxpbnV4LmgiICJhY19jdl9oZWFkZXJfc2Vs aW51eF9zZWxpbnV4X2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKLStpZiB0ZXN0ICJ4JGFjX2N2 X2hlYWRlcl9zZWxpbnV4X3NlbGludXhfaCIgPSB4IiJ5ZXM7IHRoZW4gOgotKyAgY2F0ID4+Y29u ZmRlZnMuaCA8PF9BQ0VPRgotKyNkZWZpbmUgSEFWRV9TRUxJTlVYX1NFTElOVVhfSCAxCi0rX0FD RU9GCi0rCi0rZmkKLSsKLStkb25lCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBjaGVja2luZyBmb3Igc2VjdXJpdHlfZ2V0X2Jvb2xlYW5fYWN0aXZlIGluIC1s c2VsaW51eCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHNlY3VyaXR5X2dldF9ib29s ZWFuX2FjdGl2ZSBpbiAtbHNlbGludXguLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X2xp Yl9zZWxpbnV4X3NlY3VyaXR5X2dldF9ib29sZWFuX2FjdGl2ZStzZXR9IiA9IHNldDsgdGhlbiA6 Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGFjX2NoZWNrX2xpYl9z YXZlX0xJQlM9JExJQlMKLStMSUJTPSItbHNlbGludXggICRMSUJTIgotK2NhdCBjb25mZGVmcy5o IC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQgY29uZmRlZnMuaC4gICovCi0r Ci0rLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJy b3IuCi0rICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBl IG9mIGEgR0NDCi0rICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdv dWxkIHN0aWxsIGFwcGx5LiAgKi8KLSsjaWZkZWYgX19jcGx1c3BsdXMKLStleHRlcm4gIkMiCi0r I2VuZGlmCi0rY2hhciBzZWN1cml0eV9nZXRfYm9vbGVhbl9hY3RpdmUgKCk7Ci0raW50Ci0rbWFp biAoKQotK3sKLStyZXR1cm4gc2VjdXJpdHlfZ2V0X2Jvb2xlYW5fYWN0aXZlICgpOwotKyAgOwot KyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgotK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8i OyB0aGVuIDoKLSsgIGFjX2N2X2xpYl9zZWxpbnV4X3NlY3VyaXR5X2dldF9ib29sZWFuX2FjdGl2 ZT15ZXMKLStlbHNlCi0rICBhY19jdl9saWJfc2VsaW51eF9zZWN1cml0eV9nZXRfYm9vbGVhbl9h Y3RpdmU9bm8KLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpl eHQgXAotKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotK0xJQlM9JGFj X2NoZWNrX2xpYl9zYXZlX0xJQlMKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX3NlbGludXhfc2VjdXJpdHlfZ2V0X2Jvb2xl YW5fYWN0aXZlIiA+JjUKLSskYXNfZWNobyAiJGFjX2N2X2xpYl9zZWxpbnV4X3NlY3VyaXR5X2dl dF9ib29sZWFuX2FjdGl2ZSIgPiY2OyB9Ci0raWYgdGVzdCAieCRhY19jdl9saWJfc2VsaW51eF9z ZWN1cml0eV9nZXRfYm9vbGVhbl9hY3RpdmUiID0geCIieWVzOyB0aGVuIDoKLSsgIGNhdCA+PmNv bmZkZWZzLmggPDxfQUNFT0YKLSsjZGVmaW5lIEhBVkVfTElCU0VMSU5VWCAxCi0rX0FDRU9GCi0r Ci0rICBMSUJTPSItbHNlbGludXggJExJQlMiCi0rCi0rZmkKLSsKLSsKLSAKLSAjIFN1cHBvcnQg Zm9yIC0td2l0aC1zeXNyb290IGlzIGEgY29weSBvZiBHREJfQUNfV0lUSF9ESVIsCi0gIyBleGNl cHQgdGhhdCB0aGUgYXJndW1lbnQgdG8gLS13aXRoLXN5c3Jvb3QgaXMgb3B0aW9uYWwuCi1JbmRl eDogZ2RiLTcuNS45MS4yMDEzMDMyMy9nZGIvZ2Ric2VydmVyL2NvbmZpZy5pbgotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjUuOTEuMjAxMzAzMjMub3JpZy9nZGIvZ2Ric2VydmVyL2NvbmZpZy5pbgky MDEzLTAzLTExIDA5OjM1OjA5LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuOTEuMjAxMzAz MjMvZ2RiL2dkYnNlcnZlci9jb25maWcuaW4JMjAxMy0wMy0yMyAxOTo1MToxNC4zMjMwNTI0MTkg KzAxMDAKLUBAIC03Myw2ICs3Myw5IEBACi0gLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhl IGBkbCcgbGlicmFyeSAoLWxkbCkuICovCi0gI3VuZGVmIEhBVkVfTElCREwKLSAKLSsvKiBEZWZp bmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNlbGludXgnIGxpYnJhcnkgKC1sc2VsaW51eCkuICov Ci0rI3VuZGVmIEhBVkVfTElCU0VMSU5VWAotKwotIC8qIERlZmluZSBpZiB0aGUgdGFyZ2V0IHN1 cHBvcnRzIGJyYW5jaCB0cmFjaW5nLiAqLwotICN1bmRlZiBIQVZFX0xJTlVYX0JUUkFDRQotIAot QEAgLTE0MCw2ICsxNDMsOSBAQAotIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcmVh ZGxpbmsnIGZ1bmN0aW9uLiAqLwotICN1bmRlZiBIQVZFX1JFQURMSU5LCi0gCi0rLyogRGVmaW5l IHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzZWxpbnV4L3NlbGludXguaD4gaGVhZGVyIGZpbGUuICov Ci0rI3VuZGVmIEhBVkVfU0VMSU5VWF9TRUxJTlVYX0gKLSsKLSAvKiBEZWZpbmUgdG8gMSBpZiB5 b3UgaGF2ZSB0aGUgPHNndHR5Lmg+IGhlYWRlciBmaWxlLiAqLwotICN1bmRlZiBIQVZFX1NHVFRZ X0gKLSAKLUluZGV4OiBnZGItNy41LjkxLjIwMTMwMzIzL2dkYi9nZGJzZXJ2ZXIvY29uZmlndXJl Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS45MS4yMDEzMDMyMy5vcmlnL2dkYi9nZGJzZXJ2ZXIv Y29uZmlndXJlCTIwMTMtMDMtMTEgMDk6MzU6MDkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu NS45MS4yMDEzMDMyMy9nZGIvZ2Ric2VydmVyL2NvbmZpZ3VyZQkyMDEzLTAzLTIzIDE5OjUwOjUz LjMwNTA2NjM3NCArMDEwMAotQEAgLTU5MTEsNiArNTkxMSw2NCBAQCBpZiAkd2FudF9pcGEgOyB0 aGVuCi0gICAgZmkKLSBmaQotIAotK2ZvciBhY19oZWFkZXIgaW4gc2VsaW51eC9zZWxpbnV4LmgK LStkbyA6Ci0rICBhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAic2VsaW51 eC9zZWxpbnV4LmgiICJhY19jdl9oZWFkZXJfc2VsaW51eF9zZWxpbnV4X2giICIkYWNfaW5jbHVk ZXNfZGVmYXVsdCIKLStpZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9zZWxpbnV4X3NlbGludXhfaCIg PSB4IiJ5ZXM7IHRoZW4gOgotKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotKyNkZWZpbmUg SEFWRV9TRUxJTlVYX1NFTElOVVhfSCAxCi0rX0FDRU9GCi0rCi0rZmkKLSsKLStkb25lCi0rCi0r eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc2Vj dXJpdHlfZ2V0X2Jvb2xlYW5fYWN0aXZlIGluIC1sc2VsaW51eCIgPiY1Ci0rJGFzX2VjaG9fbiAi Y2hlY2tpbmcgZm9yIHNlY3VyaXR5X2dldF9ib29sZWFuX2FjdGl2ZSBpbiAtbHNlbGludXguLi4g IiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X2xpYl9zZWxpbnV4X3NlY3VyaXR5X2dldF9ib29s ZWFuX2FjdGl2ZStzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAi ID4mNgotK2Vsc2UKLSsgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKLStMSUJTPSItbHNl bGludXggICRMSUJTIgotK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19l eHQKLSsvKiBlbmQgY29uZmRlZnMuaC4gICovCi0rCi0rLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRl cm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCi0rICAgVXNlIGNoYXIgYmVjYXVzZSBp bnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCi0rICAgYnVpbHRpbiBhbmQg dGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KLSsjaWZk ZWYgX19jcGx1c3BsdXMKLStleHRlcm4gIkMiCi0rI2VuZGlmCi0rY2hhciBzZWN1cml0eV9nZXRf Ym9vbGVhbl9hY3RpdmUgKCk7Ci0raW50Ci0rbWFpbiAoKQotK3sKLStyZXR1cm4gc2VjdXJpdHlf Z2V0X2Jvb2xlYW5fYWN0aXZlICgpOwotKyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgot K2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSsgIGFjX2N2X2xpYl9zZWxp bnV4X3NlY3VyaXR5X2dldF9ib29sZWFuX2FjdGl2ZT15ZXMKLStlbHNlCi0rICBhY19jdl9saWJf c2VsaW51eF9zZWN1cml0eV9nZXRfYm9vbGVhbl9hY3RpdmU9bm8KLStmaQotK3JtIC1mIGNvcmUg Y29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotKyAgICBjb25mdGVzdCRhY19leGVl eHQgY29uZnRlc3QuJGFjX2V4dAotK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKLStmaQot K3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zf bGliX3NlbGludXhfc2VjdXJpdHlfZ2V0X2Jvb2xlYW5fYWN0aXZlIiA+JjUKLSskYXNfZWNobyAi JGFjX2N2X2xpYl9zZWxpbnV4X3NlY3VyaXR5X2dldF9ib29sZWFuX2FjdGl2ZSIgPiY2OyB9Ci0r aWYgdGVzdCAieCRhY19jdl9saWJfc2VsaW51eF9zZWN1cml0eV9nZXRfYm9vbGVhbl9hY3RpdmUi ID0geCIieWVzOyB0aGVuIDoKLSsgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSsjZGVmaW5l IEhBVkVfTElCU0VMSU5VWCAxCi0rX0FDRU9GCi0rCi0rICBMSUJTPSItbHNlbGludXggJExJQlMi Ci0rCi0rZmkKLSsKLSsKLSAKLSAKLSAKCmRpZmYgLS1naXQgYS9nZGItYno1MzMxNzYtZm9ydHJh bi1vbXAtc3RlcC5wYXRjaCBiL2dkYi1iejUzMzE3Ni1mb3J0cmFuLW9tcC1zdGVwLnBhdGNoCmlu ZGV4IDA3MjVhZDIuLjE5NzhkNWUgMTAwNjQ0Ci0tLSBhL2dkYi1iejUzMzE3Ni1mb3J0cmFuLW9t cC1zdGVwLnBhdGNoCisrKyBiL2dkYi1iejUzMzE3Ni1mb3J0cmFuLW9tcC1zdGVwLnBhdGNoCkBA IC0yMSwxNiArMjEsMTYgQEAgZGVidWdnaW5nIHByb2JsZW0gb2YgR09NUCBvdXRzaWRlIG9mIHRo ZSBzY29wZSBvZiB0aGlzIEJ1Zy4KIAogCiAKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dk Yi9pbmZydW4uYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9pbmZydW4uYwog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvaW5mcnVuLmMJMjAx My0wMS0xOSAyMzozODoyMi4zMjkzNzE0MTAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMTE4 L2dkYi9pbmZydW4uYwkyMDEzLTAxLTE5IDIzOjM5OjAzLjMyMjQyOTA0MSArMDEwMAotQEAgLTQ5 MTgsNiArNDkxOCwxNiBAQCBwcm9jZXNzX2V2ZW50X3N0b3BfdGVzdDoKKy0tLSBnZGItNy42LjUw LjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9pbmZydW4uYwkyMDEzLTA4LTAyIDE3OjEwOjA4LjQ0Njk2 Mjk1OCArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9pbmZydW4uYwkyMDEz LTA4LTAyIDE3OjEwOjQ5LjEwOTAxNjY4NSArMDIwMAorQEAgLTQ5MzAsNiArNDkzMCwxNiBAQCBw cm9jZXNzX2V2ZW50X3N0b3BfdGVzdDoKICAKICAgICAgICBpZiAoZWNzLT5ldmVudF90aHJlYWQt PmNvbnRyb2wuc3RlcF9vdmVyX2NhbGxzID09IFNURVBfT1ZFUl9BTEwpCiAgCXsKICsJICBzdHJ1 Y3Qgc3ltYm9sICpzdG9wX2ZuID0gZmluZF9wY19mdW5jdGlvbiAoc3RvcF9wYyk7Ci0rCSAgc3Ry dWN0IG1pbmltYWxfc3ltYm9sICpzdG9wZiA9IGxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAo c3RvcF9wYyk7CisrCSAgc3RydWN0IG1pbmltYWxfc3ltYm9sICpzdG9wZiA9IGxvb2t1cF9taW5p bWFsX3N5bWJvbF9ieV9wYyAoc3RvcF9wYykubWluc3ltOwogKwogKwkgIGlmICgoc3RvcF9mbiA9 PSBOVUxMCiArCSAgICAgICB8fCBzdHJzdHIgKFNZTUJPTF9MSU5LQUdFX05BTUUgKHN0b3BfZm4p LCAiLm9tcF9mbi4iKSA9PSBOVUxMKQpAQCAtNDIsNyArNDIsNyBAQCBJbmRleDogZ2RiLTcuNS41 MC4yMDEzMDExOC9nZGIvaW5mcnVuLmMKICAJICAvKiBXZSdyZSBkb2luZyBhICJuZXh0Ii4KICAK ICAJICAgICBOb3JtYWwgKGZvcndhcmQpIGV4ZWN1dGlvbjogc2V0IGEgYnJlYWtwb2ludCBhdCB0 aGUKLUBAIC00OTUzLDYgKzQ5NjMsNyBAQCBwcm9jZXNzX2V2ZW50X3N0b3BfdGVzdDoKK0BAIC00 OTY1LDYgKzQ5NzUsNyBAQCBwcm9jZXNzX2V2ZW50X3N0b3BfdGVzdDoKICAKICAJICBrZWVwX2dv aW5nIChlY3MpOwogIAkgIHJldHVybjsKQEAgLTUwLDEwICs1MCwxMCBAQCBJbmRleDogZ2RiLTcu NS41MC4yMDEzMDExOC9nZGIvaW5mcnVuLmMKICAJfQogIAogICAgICAgIC8qIElmIHdlIGFyZSBp biBhIGZ1bmN0aW9uIGNhbGwgdHJhbXBvbGluZSAoYSBzdHViIGJldHdlZW4gdGhlCi1JbmRleDog Z2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL29tcC1zdGVwLmV4 cAorSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vb21wLXN0ZXAuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6 MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL29tcC1zdGVwLmV4cAkyMDEzLTAxLTE5IDIzOjM4OjIzLjIxMzM3MjYy MiArMDEwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vb21wLXN0ZXAuZXhwCTIwMTMtMDgtMDIgMTc6MTA6MzcuMDYzMDAwNTcxICswMjAwCiBA QCAtMCwwICsxLDMxIEBACiArIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KICsKQEAgLTg2LDEwICs4NiwxMCBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDEx OC9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL29tcC1zdGVwLmV4cAogKwogK2dkYl9icmVha3Bv aW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJzdWNjZXNzIl0KICtnZGJfY29udGludWVfdG9fYnJl YWtwb2ludCAic3VjY2VzcyIgIi4qc3VjY2Vzcy4qIgotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAx MTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3RlcC5mOTAKK0luZGV4OiBnZGItNy42 LjUwLjIwMTMwNzMxLWN2cy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL29tcC1zdGVwLmY5MAog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCAr MDAwMAotKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9v bXAtc3RlcC5mOTAJMjAxMy0wMS0xOSAyMzozODoyMy4yMTMzNzI2MjIgKzAxMDAKKysrKyBnZGIt Ny42LjUwLjIwMTMwNzMxLWN2cy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL29tcC1zdGVwLmY5 MAkyMDEzLTA4LTAyIDE3OjEwOjM3LjA2MzAwMDU3MSArMDIwMAogQEAgLTAsMCArMSwzMiBAQAog KyEgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCgpkaWZm IC0tZ2l0IGEvZ2RiLWNvcmUtb3Blbi12ZHNvLXdhcm5pbmcucGF0Y2ggYi9nZGItY29yZS1vcGVu LXZkc28td2FybmluZy5wYXRjaAppbmRleCBjYWZkODQ0Li42YzQyZTVhIDEwMDY0NAotLS0gYS9n ZGItY29yZS1vcGVuLXZkc28td2FybmluZy5wYXRjaAorKysgYi9nZGItY29yZS1vcGVuLXZkc28t d2FybmluZy5wYXRjaApAQCAtMywxMSArMywxMSBAQCBTdWJqZWN0OiBbcGF0Y2hdIEZpeCBHTlUv TGludXggY29yZSBvcGVuOiBDYW4ndCByZWFkIHBhdGhuYW1lIGZvciBsb2FkIG1hcDogIElucAog CiBbIE5ldyBwYXRjaCB2YXJpYW50LiAgXQogCi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9n ZGIvc29saWItc3ZyNC5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3NvbGli LXN2cjQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvc29s aWItc3ZyNC5jCTIwMTMtMDEtMTggMjM6MDU6MTkuNDE0MjEwMDE1ICswMTAwCi0rKysgZ2RiLTcu NS41MC4yMDEzMDExOC9nZGIvc29saWItc3ZyNC5jCTIwMTMtMDEtMTggMjM6MDU6MzQuODEzMjMx NjY0ICswMTAwCi1AQCAtMTIyMSw4ICsxMjIxLDE3IEBAIHN2cjRfcmVhZF9zb19saXN0IChDT1JF X0FERFIgbG0sIHN0cnVjdAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL3Nv bGliLXN2cjQuYwkyMDEzLTA4LTAyIDE2OjI3OjI4LjgzMTI1OTQ2OCArMDIwMAorKysrIGdkYi03 LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9zb2xpYi1zdnI0LmMJMjAxMy0wOC0wMiAxNjoyNzo0Ny44 NzEyODQ4MTMgKzAyMDAKK0BAIC0xMzU5LDggKzEzNTksMTcgQEAgc3ZyNF9yZWFkX3NvX2xpc3Qg KENPUkVfQUREUiBsbSwgQ09SRV9BRAogIAkJCSAgU09fTkFNRV9NQVhfUEFUSF9TSVpFIC0gMSwg JmVycmNvZGUpOwogICAgICAgIGlmIChlcnJjb2RlICE9IDApCiAgCXsKQEAgLTI3LDIwICsyNywy MCBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvc29saWItc3ZyNC5jCiAgCSAgZG9f Y2xlYW51cHMgKG9sZF9jaGFpbik7CiAgCSAgY29udGludWU7CiAgCX0KLUluZGV4OiBnZGItNy41 LjUwLjIwMTMwMTE4L2dkYi9zb2xpYi5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMv Z2RiL3NvbGliLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2Ri L3NvbGliLmMJMjAxMy0wMS0xOCAyMzowNToxOS40MTUyMTAwMTcgKzAxMDAKLSsrKyBnZGItNy41 LjUwLjIwMTMwMTE4L2dkYi9zb2xpYi5jCTIwMTMtMDEtMTggMjM6MDU6NTcuNDIxMjYzMTczICsw MTAwCi1AQCAtNjY2LDcgKzY2Niw3IEBAIHNvbGliX3VzZWQgKGNvbnN0IHN0cnVjdCBzb19saXN0 ICpjb25zdAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL3NvbGliLmMJMjAx My0wOC0wMiAxNjoyNzoyOC44MzIyNTk0NzAgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMx LWN2cy9nZGIvc29saWIuYwkyMDEzLTA4LTAyIDE2OjI4OjUwLjQyMTM2NzY5NCArMDIwMAorQEAg LTY2OSw3ICs2NjksNyBAQCBzb2xpYl91c2VkIChjb25zdCBzdHJ1Y3Qgc29fbGlzdCAqY29uc3QK ICAgICBwcm9jZXNzZXMgd2UndmUganVzdCBhdHRhY2hlZCB0bywgc28gdGhhdCdzIG9rYXkuICAq LwogIAogIHN0YXRpYyB2b2lkCiAtdXBkYXRlX3NvbGliX2xpc3QgKGludCBmcm9tX3R0eSwgc3Ry dWN0IHRhcmdldF9vcHMgKnRhcmdldCkKICt1cGRhdGVfc29saWJfbGlzdF8xIChpbnQgZnJvbV90 dHksIHN0cnVjdCB0YXJnZXRfb3BzICp0YXJnZXQpCiAgewotICAgc3RydWN0IHRhcmdldF9zb19v cHMgKm9wcyA9IHNvbGliX29wcyAodGFyZ2V0X2dkYmFyY2ggKCkpOworICAgY29uc3Qgc3RydWN0 IHRhcmdldF9zb19vcHMgKm9wcyA9IHNvbGliX29wcyAodGFyZ2V0X2dkYmFyY2ggKCkpOwogICAg c3RydWN0IHNvX2xpc3QgKmluZmVyaW9yID0gb3BzLT5jdXJyZW50X3NvcygpOwotQEAgLTgzNyw2 ICs4MzcsMjEgQEAgRG8geW91IG5lZWQgXCJzZXQgc29saWItc2VhcmNoLXBhdGhcIiBvcgorQEAg LTg0MCw2ICs4NDAsMjEgQEAgRG8geW91IG5lZWQgXCJzZXQgc29saWItc2VhcmNoLXBhdGhcIiBv cgogICAgICB9CiAgfQogIApAQCAtNjIsMTEgKzYyLDExIEBAIEluZGV4OiBnZGItNy41LjUwLjIw MTMwMTE4L2dkYi9zb2xpYi5jCiAgCiAgLyogUmV0dXJuIG5vbi16ZXJvIGlmIE5BTUUgaXMgdGhl IGxpYnB0aHJlYWQgc2hhcmVkIGxpYnJhcnkuCiAgCi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDEx OC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2NvcmVmaWxlLmV4cAorSW5kZXg6IGdkYi03LjYuNTAu MjAxMzA3MzEtY3ZzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvY29yZWZpbGUuZXhwCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv Y29yZWZpbGUuZXhwCTIwMTMtMDEtMTggMjM6MDU6MTkuNDE2MjEwMDIwICswMTAwCi0rKysgZ2Ri LTcuNS41MC4yMDEzMDExOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2NvcmVmaWxlLmV4cAkyMDEz LTAxLTE4IDIzOjA1OjM0LjgxNDIzMTY2NyArMDEwMAotQEAgLTI4NiwzICsyODYsMTkgQEAgaWYg eyRidWlsZGlkID09ICIifSB7CistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2NvcmVmaWxlLmV4cAkyMDEzLTA4LTAyIDE2OjI3OjI4LjgzMzI1 OTQ3MSArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvY29yZWZpbGUuZXhwCTIwMTMtMDgtMDIgMTY6Mjc6NDcuODcyMjg0ODE0ICswMjAwCitA QCAtMjg1LDMgKzI4NSwxOSBAQCBpZiB7JGJ1aWxkaWQgPT0gIiJ9IHsKICAgICAgZ2RiX3Rlc3Qg ImluZm8gZmlsZXMiICJMb2NhbCBleGVjIGZpbGU6XHJcblxbIFx0XF0qYFtzdHJpbmdfdG9fcmVn ZXhwICRkZWJ1Z2Rpci8kYnVpbGRpZF0nLCBmaWxlIHR5cGUgLioiCiAgICAgIHBhc3MgJHdob2xl dGVzdAogIH0KQEAgLTg2LDIwICs4NiwxOCBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2NvcmVmaWxlLmV4cAogKwlwYXNzICR0ZXN0CiArICAgIH0K ICt9Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3Nv bGliLXN5bWJvbC5leHAKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL3NvbGliLXN5bWJvbC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUw LjIwMTMwMTE4Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zb2xpYi1zeW1ib2wuZXhwCTIw MTMtMDEtMTggMjM6MDU6MTkuNDE2MjEwMDIwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDEx OC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NvbGliLXN5bWJvbC5leHAJMjAxMy0wMS0xOCAyMzow NTozNC44MTQyMzE2NjcgKzAxMDAKLUBAIC0yNyw3ICsyNyw4IEBAIHNldCBsaWJfZmxhZ3MgW2xp c3QgZGVidWcgbGRmbGFncz0tV2wsLUIKLSAjIEJpbmFyeSBmaWxlLgotIHNldCB0ZXN0ZmlsZSAi c29saWItc3ltYm9sLW1haW4iCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL3NvbGliLXN5bWJvbC5leHAJMjAxMy0wOC0wMiAxNjoyNzoyOC44 MzMyNTk0NzEgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL3NvbGliLXN5bWJvbC5leHAJMjAxMy0wOC0wMiAxNjoyODoyMi41NDkzMzA5NzMg KzAyMDAKK0BAIC0yOSw2ICsyOSw3IEBAIHNldCB0ZXN0ZmlsZSAic29saWItc3ltYm9sLW1haW4i CiAgc2V0IHNyY2ZpbGUgJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS5jCi0tc2V0IGJp bmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQotK3NldCBleGVjdXRhYmxlICR7 dGVzdGZpbGV9Ci0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke2V4ZWN1dGFibGV9 Cisgc2V0IGJpbmZpbGUgW3N0YW5kYXJkX291dHB1dF9maWxlICR7dGVzdGZpbGV9XQogIHNldCBi aW5fZmxhZ3MgW2xpc3QgZGVidWcgc2hsaWI9JHtiaW5maWxlX2xpYn1dCisrc2V0IGV4ZWN1dGFi bGUgJHt0ZXN0ZmlsZX0KICAKICBpZiBbZ2V0X2NvbXBpbGVyX2luZm9dIHsKKyAgICAgcmV0dXJu IC0xCiBAQCAtNzIsOCArNzMsMjYgQEAgZ2RiX3Rlc3QgImJyIGZvbzIiIFwKICAJICJCcmVha3Bv aW50Lio6IGZvbzIuIC4yIGxvY2F0aW9ucy4uKiIgXAogIAkgImZvbzIgaW4gbWRsaWIiCgpkaWZm IC0tZ2l0IGEvZ2RiLWN4eC1wZXJmb3JtYW5jZS0xb2YyLnBhdGNoIGIvZ2RiLWN4eC1wZXJmb3Jt YW5jZS0xb2YyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDc3M2VjLi4w MDAwMDAwCi0tLSBhL2dkYi1jeHgtcGVyZm9ybWFuY2UtMW9mMi5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDIwOSArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEz LTA2L21zZzAwMDM0Lmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTMvMDYvMDUgMjA6 NDM6NTMJMS4xNTY4OQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTMvMDYvMDUgMjI6Mjg6NTEJ MS4xNTY5MAotIyMgLTEsMyArMSwxNCBAQAotKzIwMTMtMDYtMDUgIERvdWcgRXZhbnMgIDxkamVA Z29vZ2xlLmNvbT4KLSsJICAgIEtlaXRoIFNlaXR6ICA8a2VpdGhzQHJlZGhhdC5jb20+Ci0rCi0r CVBSIDE1NTE5Ci0rCSogY3AtbmFtZXNwYWNlLmMgKGZpbmRfc3ltYm9sX2luX2Jhc2VjbGFzcyk6 IENhbGwKLSsJY3BfbG9va3VwX3N5bWJvbF9pbl9uYW1lc3BhY2UgaW5zdGVhZCBvZiBjcF9sb29r dXBfc3ltYm9sX25hbWVzcGFjZS4KLSsJQ2hlY2sgcmVzdWx0IG9mIGNhbGwgdG8gbG9va3VwX3N5 bWJvbF9zdGF0aWMuCi0rCUNhbGwgbG9va3VwX3N0YXRpY19zeW1ib2xfYXV4IHVuY29uZGl0aW9u YWxseS4KLSsJQ2FsbCBjaGVja190eXBlZGVmIG9uIGJhc2UgdHlwZXMgYmVmb3JlIGFjY2Vzc2lu ZyB0aGVtLgotKwkoY3BfbG9va3VwX25lc3RlZF9zeW1ib2wpOiBGaXggY29tbWVudC4KLSsKLSAy MDEzLTA2LTA1ICBMdWlzIE1hY2hhZG8gIDxsZ3VzdGF2b0Bjb2Rlc291cmNlcnkuY29tPgotIAot IAkqIGdudS12My1hYmkuYyAoZ251djNfc2tpcF90cmFtcG9saW5lKTogSGFuZGxlIHRodW5rCi0t LS0gc3JjL2dkYi9jcC1uYW1lc3BhY2UuYwkyMDEzLzA1LzMwIDE3OjI5OjA2CTEuNjcKLSsrKyBz cmMvZ2RiL2NwLW5hbWVzcGFjZS5jCTIwMTMvMDYvMDUgMjI6Mjg6NTEJMS42OAotQEAgLTcyMCwz NiArNzIwLDQwIEBACi0gICBmb3IgKGkgPSAwOyBpIDwgVFlQRV9OX0JBU0VDTEFTU0VTIChwYXJl bnRfdHlwZSk7ICsraSkKLSAgICAgewotICAgICAgIHNpemVfdCBsZW47Ci0rICAgICAgc3RydWN0 IHR5cGUgKmJhc2VfdHlwZSA9IFRZUEVfQkFTRUNMQVNTIChwYXJlbnRfdHlwZSwgaSk7Ci0gICAg ICAgY29uc3QgY2hhciAqYmFzZV9uYW1lID0gVFlQRV9CQVNFQ0xBU1NfTkFNRSAocGFyZW50X3R5 cGUsIGkpOwotIAotICAgICAgIGlmIChiYXNlX25hbWUgPT0gTlVMTCkKLSAJY29udGludWU7Ci0g Ci0gICAgICAgLyogU2VhcmNoIHRoaXMgcGFydGljdWxhciBiYXNlIGNsYXNzLiAgKi8KLS0gICAg ICBzeW0gPSBjcF9sb29rdXBfc3ltYm9sX25hbWVzcGFjZSAoYmFzZV9uYW1lLCBuYW1lLCBibG9j aywgVkFSX0RPTUFJTik7Ci0rICAgICAgc3ltID0gY3BfbG9va3VwX3N5bWJvbF9pbl9uYW1lc3Bh Y2UgKGJhc2VfbmFtZSwgbmFtZSwgYmxvY2ssCi0rCQkJCQkgICBWQVJfRE9NQUlOLCAwKTsKLSAg ICAgICBpZiAoc3ltICE9IE5VTEwpCi0gCWJyZWFrOwotIAotKyAgICAgIC8qIE5vdyBzZWFyY2gg YWxsIHN0YXRpYyBmaWxlLWxldmVsIHN5bWJvbHMuICBXZSBoYXZlIHRvIGRvIHRoaXMgZm9yCi0r CSB0aGluZ3MgbGlrZSB0eXBlZGVmcyBpbiB0aGUgY2xhc3MuICBGaXJzdCBzZWFyY2ggaW4gdGhp cyBzeW10YWIsCi0rCSB3aGF0IHdlIHdhbnQgaXMgcG9zc2libHkgdGhlcmUuICAqLwotICAgICAg IGxlbiA9IHN0cmxlbiAoYmFzZV9uYW1lKSArIDIgKyBzdHJsZW4gKG5hbWUpICsgMTsKLSAgICAg ICBjb25jYXRlbmF0ZWRfbmFtZSA9IHhyZWFsbG9jIChjb25jYXRlbmF0ZWRfbmFtZSwgbGVuKTsK LSAgICAgICB4c25wcmludGYgKGNvbmNhdGVuYXRlZF9uYW1lLCBsZW4sICIlczo6JXMiLCBiYXNl X25hbWUsIG5hbWUpOwotICAgICAgIHN5bSA9IGxvb2t1cF9zeW1ib2xfc3RhdGljIChjb25jYXRl bmF0ZWRfbmFtZSwgYmxvY2ssIFZBUl9ET01BSU4pOwotKyAgICAgIGlmIChzeW0gIT0gTlVMTCkK LSsJYnJlYWs7Ci0gCi0tICAgICAgLyogSWYgdGhlcmUgaXMgY3VycmVudGx5IG5vIEJMT0NLLCBl LmcuLCB0aGUgaW5mZXJpb3IgaGFzbid0IHlldAotLQkgYmVlbiBzdGFydGVkLCB0aGVuIHRyeSBz ZWFyY2hpbmcgYWxsIFNUQVRJQ19CTE9DSyBzeW1ib2xzIGluCi0tCSBhbGwgb2JqZmlsZXMuICAq LwotLSAgICAgIGlmIChibG9jayA9PSBOVUxMKQotLQl7Ci0tCSAgc3ltID0gbG9va3VwX3N0YXRp Y19zeW1ib2xfYXV4IChjb25jYXRlbmF0ZWRfbmFtZSwgVkFSX0RPTUFJTik7Ci0tCSAgaWYgKHN5 bSAhPSBOVUxMKQotLQkgICAgYnJlYWs7Ci0tCX0KLSsgICAgICAvKiBOb3BlLiAgV2Ugbm93IGhh dmUgdG8gc2VhcmNoIGFsbCBzdGF0aWMgYmxvY2tzIGluIGFsbCBvYmpmaWxlcywKLSsJIGV2ZW4g aWYgYmxvY2sgIT0gTlVMTCwgYmVjYXVzZSB0aGVyZSdzIG5vIGd1YXJhbnRlZXMgYXMgdG8gd2hp Y2gKLSsJIHN5bXRhYiB0aGUgc3ltYm9sIHdlIHdhbnQgaXMgaW4uICAqLwotKyAgICAgIHN5bSA9 IGxvb2t1cF9zdGF0aWNfc3ltYm9sX2F1eCAoY29uY2F0ZW5hdGVkX25hbWUsIFZBUl9ET01BSU4p OwotKyAgICAgIGlmIChzeW0gIT0gTlVMTCkKLSsJYnJlYWs7Ci0gCi0gICAgICAgLyogSWYgdGhp cyBjbGFzcyBoYXMgYmFzZSBjbGFzc2VzLCBzZWFyY2ggdGhlbSBuZXh0LiAgKi8KLS0gICAgICBp ZiAoVFlQRV9OX0JBU0VDTEFTU0VTIChUWVBFX0JBU0VDTEFTUyAocGFyZW50X3R5cGUsIGkpKSA+ IDApCi0rICAgICAgQ0hFQ0tfVFlQRURFRiAoYmFzZV90eXBlKTsKLSsgICAgICBpZiAoVFlQRV9O X0JBU0VDTEFTU0VTIChiYXNlX3R5cGUpID4gMCkKLSAJewotLQkgIHN5bSA9IGZpbmRfc3ltYm9s X2luX2Jhc2VjbGFzcyAoVFlQRV9CQVNFQ0xBU1MgKHBhcmVudF90eXBlLCBpKSwKLS0JCQkJCSAg bmFtZSwgYmxvY2spOwotKwkgIHN5bSA9IGZpbmRfc3ltYm9sX2luX2Jhc2VjbGFzcyAoYmFzZV90 eXBlLCBuYW1lLCBibG9jayk7Ci0gCSAgaWYgKHN5bSAhPSBOVUxMKQotIAkgICAgYnJlYWs7Ci0g CX0KLUBAIC03OTcsOCArODAxLDggQEAKLSAJaWYgKHN5bSAhPSBOVUxMKQotIAkgIHJldHVybiBz eW07Ci0gCi0tCS8qIE5vdyBzZWFyY2ggYWxsIHN0YXRpYyBmaWxlLWxldmVsIHN5bWJvbHMuICBO b3Qgc3RyaWN0bHkKLS0JICAgY29ycmVjdCwgYnV0IG1vcmUgdXNlZnVsIHRoYW4gYW4gZXJyb3Iu ICBXZSBkbyBub3QgdHJ5IHRvCi0rCS8qIE5vdyBzZWFyY2ggYWxsIHN0YXRpYyBmaWxlLWxldmVs IHN5bWJvbHMuICBXZSBoYXZlIHRvIGRvIHRoaXMKLSsJICAgZm9yIHRoaW5ncyBsaWtlIHR5cGVk ZWZzIGluIHRoZSBjbGFzcy4gIFdlIGRvIG5vdCB0cnkgdG8KLSAJICAgZ3Vlc3MgYW55IGltcG9y dGVkIG5hbWVzcGFjZSBhcyBldmVuIHRoZSBmdWxseSBzcGVjaWZpZWQKLSAJICAgbmFtZXNwYWNl IHNlYXJjaCBpcyBhbHJlYWR5IG5vdCBDKysgY29tcGxpYW50IGFuZCBtb3JlCi0gCSAgIGFzc3Vt cHRpb25zIGNvdWxkIG1ha2UgaXQgdG9vIG1hZ2ljLiAgKi8KLSMjIyBzcmMvZ2RiL3Rlc3RzdWl0 ZS9DaGFuZ2VMb2cJMjAxMy8wNi8wNSAyMDozODozNwkxLjM2ODUKLSMjIyBzcmMvZ2RiL3Rlc3Rz dWl0ZS9DaGFuZ2VMb2cJMjAxMy8wNi8wNSAyMjoyODo1MQkxLjM2ODYKLSMjIC0xLDMgKzEsMTEg QEAKLSsyMDEzLTA2LTA1ICBEb3VnIEV2YW5zICA8ZGplQGdvb2dsZS5jb20+Ci0rCSAgICBLZWl0 aCBTZWl0eiAgPGtlaXRoc0ByZWRoYXQuY29tPgotKwotKwkqIGdkYi5jcC9kZXJpdmF0aW9uMi5j YzogTmV3IGZpbGUuCi0rCSogZ2RiLmNwL2Rlcml2YXRpb24uY2MgKG1haW4pOiBDYWxsIGZvbzIu Ci0rCSogZ2RiLmNwL2Rlcml2YXRpb24uZXhwOiBBZGQgdGVzdHMgZm9yIHR5cGVkZWZzIGluIGFu b3RoZXIKLSsJZmlsZSwgYW5kIHdoZW4gdGhlcmUncyBhbiBhY3RpdmUgYmxvY2suCi0rCi0gMjAx My0wNi0wNSAgTHVpcyBNYWNoYWRvICA8bGd1c3Rhdm9AY29kZXNvdXJjZXJ5LmNvbT4KLSAKLSAJ KiBnZGIuY3AvdmlydGZ1bmMuZXhwIChtYWtlX29uZV92dGFibGVfcmVzdWx0KTogSGFuZGxlIGV4 dHJhIG91dHB1dAotLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5jcC9kZXJpdmF0aW9uMi5jYwot KysrIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5jcC9kZXJpdmF0aW9uMi5jYwkyMDEzLTA2LTEwIDEy OjM1OjE0Ljg4MTI3MjI0NyArMDAwMAotQEAgLTAsMCArMSw0OSBAQAotKy8qIFRoaXMgdGVzdGNh c2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIw MTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsg ICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl Ci0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCi0rICAgKi8KLSsKLSsvKiBBIGNvcHkgb2Ygc29tZSBjbGFzc2Vz IGluIGRlcml2YXRpb24uY2Mgc28gdGhhdCB3ZSBjYW4gdGVzdCBzeW1ib2wgbG9va3VwCi0rICAg aW4gb3RoZXIgQ1VzLiAgKi8KLSsKLStjbGFzcyBBMiB7Ci0rcHVibGljOgotKyAgICB0eXBlZGVm IGludCB2YWx1ZV90eXBlOwotKyAgICB2YWx1ZV90eXBlIGE7Ci0rCi0rICAgIEEyKCkKLSsgICAg ewotKyAgICAgICAgYT0xOwotKyAgICB9Ci0rfTsKLSsKLStjbGFzcyBEMiA6IHB1YmxpYyBBMiB7 Ci0rcHVibGljOgotKyAgICB2YWx1ZV90eXBlIGQ7Ci0rCi0rICAgIEQyKCkKLSsgICAgewotKyAg ICAgICAgZD03OwotKyAgICB9Ci0rfTsKLSsKLSt2b2lkCi0rZm9vMiAoKQotK3sKLSsgIEQyIGQy X2luc3RhbmNlOwotKyAgZDJfaW5zdGFuY2UuYSA9IDQyOwotKyAgZDJfaW5zdGFuY2UuZCA9IDQz OwotK30KLS0tLSBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZGVyaXZhdGlvbi5jYwkyMDEzLzAx LzAxIDA2OjMzOjI3CTEuNQotKysrIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5jcC9kZXJpdmF0aW9u LmNjCTIwMTMvMDYvMDUgMjI6Mjg6NTEJMS42Ci1AQCAtMTYsNiArMTYsOCBAQAotICAgIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgotICAgICovCi0gCi0rZXh0ZXJuIHZvaWQgZm9vMiAoKTsgLyogZnJvbSBkZXJpdmF0 aW9uMi5jYyAqLwotKwotIG5hbWVzcGFjZSBOIHsKLSAgIHR5cGVkZWYgZG91YmxlIHZhbHVlX3R5 cGU7Ci0gICBzdHJ1Y3QgQmFzZSB7IHR5cGVkZWYgaW50IHZhbHVlX3R5cGU7IH07Ci1AQCAtMzA2 LDkgKzMwOCw3IEBACi0gICAgIE46OkRlcml2ZWQ6OnZhbHVlX3R5cGUgZCA9IDE7Ci0gICAgIE46 OnZhbHVlX3R5cGUgbiA9IDMuMDsKLSAgICAgZG9iai5kb2l0ICgpOwotKyAgICBmb28yICgpOwot ICAgICByZXR1cm4gMDsKLSAgICAgCi0gfQotLQotLSAgICAKLS0gICAgCi0tLS0gc3JjL2dkYi90 ZXN0c3VpdGUvZ2RiLmNwL2Rlcml2YXRpb24uZXhwCTIwMTMvMDEvMDEgMDY6MzM6MjcJMS4yNAot KysrIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5jcC9kZXJpdmF0aW9uLmV4cAkyMDEzLzA2LzA1IDIy OjI4OjUxCTEuMjUKLUBAIC0zMiwxNCArMzIsMTUgQEAKLSAKLSBsb2FkX2xpYiAiY3Atc3VwcG9y dC5leHAiCi0gCi0tc3RhbmRhcmRfdGVzdGZpbGUgLmNjCi0rc3RhbmRhcmRfdGVzdGZpbGUgZGVy aXZhdGlvbi5jYyBkZXJpdmF0aW9uMi5jYwotIAotLWlmIHtbcHJlcGFyZV9mb3JfdGVzdGluZyAk dGVzdGZpbGUuZXhwICR0ZXN0ZmlsZSAkc3JjZmlsZSB7ZGVidWcgYysrfV19IHsKLStpZiB7W3By ZXBhcmVfZm9yX3Rlc3RpbmcgJHRlc3RmaWxlLmV4cCAkdGVzdGZpbGUgXAotKwlbbGlzdCAkc3Jj ZmlsZSAkc3JjZmlsZTJdIHtkZWJ1ZyBjKyt9XX0gewotICAgICByZXR1cm4gLTEKLSB9Ci0gCi0g IyBDaGVjayBpbmhlcml0YW5jZSBvZiB0eXBlZGVmcy4KLS1mb3JlYWNoIGtsYXNzIHsiQSIgIkQi ICJFIiAiRiJ9IHsKLStmb3JlYWNoIGtsYXNzIHsiQSIgIkQiICJFIiAiRiIgIkEyIiAiRDIifSB7 Ci0gICAgIGdkYl90ZXN0ICJwdHlwZSAke2tsYXNzfTo6dmFsdWVfdHlwZSIgInR5cGUgPSBpbnQi Ci0gICAgIGdkYl90ZXN0ICJ3aGF0aXMgJHtrbGFzc306OnZhbHVlX3R5cGUiICJ0eXBlID0gaW50 IgotICAgICBnZGJfdGVzdCAicCAoJHtrbGFzc306OnZhbHVlX3R5cGUpIDAiICIgPSAwIgotQEAg LTU3LDYgKzU4LDEzIEBACi0gICAgIGNvbnRpbnVlCi0gfQotIAotKyMgQ2hlY2sgaW5oZXJpdGFu Y2Ugb2YgdHlwZWRlZnMgYWdhaW4sIGJ1dCB0aGlzIHRpbWUgd2l0aCBhbiBhY3RpdmUgYmxvY2su Ci0rZm9yZWFjaCBrbGFzcyB7IkEiICJEIiAiQTIiICJEMiJ9IHsKLSsgICAgZ2RiX3Rlc3QgInB0 eXBlICR7a2xhc3N9Ojp2YWx1ZV90eXBlIiAidHlwZSA9IGludCIKLSsgICAgZ2RiX3Rlc3QgIndo YXRpcyAke2tsYXNzfTo6dmFsdWVfdHlwZSIgInR5cGUgPSBpbnQiCi0rICAgIGdkYl90ZXN0ICJw ICgke2tsYXNzfTo6dmFsdWVfdHlwZSkgMCIgIiA9IDAiCi0rfQotKwotIGdkYl90ZXN0ICJ1cCIg Ii4qbWFpbi4qIiAidXAgZnJvbSBtYXJrZXIxIgotIAotICMgUHJpbnQgY2xhc3MgdHlwZXMgYW5k IHZhbHVlcy4KCmRpZmYgLS1naXQgYS9nZGItY3h4LXBlcmZvcm1hbmNlLTJvZjIucGF0Y2ggYi9n ZGItY3h4LXBlcmZvcm1hbmNlLTJvZjIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDIwNTY5OGQuLjAwMDAwMDAKLS0tIGEvZ2RiLWN4eC1wZXJmb3JtYW5jZS0yb2YyLnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21s L2dkYi1jdnMvMjAxMy0wNi9tc2cwMDA0NC5odG1sCi0KLSMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9D aGFuZ2VMb2cJMjAxMy8wNi8wNiAxOTowMDoxMwkxLjM2ODgKLSMjIyBzcmMvZ2RiL3Rlc3RzdWl0 ZS9DaGFuZ2VMb2cJMjAxMy8wNi8wNiAxOTowMjoyNgkxLjM2ODkKLSMjIC0xLDMgKzEsNyBAQAot KzIwMTMtMDYtMDYgIERvdWcgRXZhbnMgIDxkamVAZ29vZ2xlLmNvbT4KLSsKLSsJKiBnZGIuY3Av ZGVyaXZhdGlvbi5leHA6IE1ha2UgdGVzdHMgaGF2ZSB1bmlxdWUgbmFtZXMuCi0rCi0gMjAxMy0w Ni0wNiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgotIAotIAkqIGdkYi5iYXNlL2R1 bXAuZXhwIChjYXB0dXJlX3ZhbHVlKTogRG9uJ3QgcHV0IGV4cHJlc3Npb24gaW50bwotLS0tIHNy Yy9nZGIvdGVzdHN1aXRlL2dkYi5jcC9kZXJpdmF0aW9uLmV4cAkyMDEzLzA2LzA1IDIyOjI4OjUx CTEuMjUKLSsrKyBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZGVyaXZhdGlvbi5leHAJMjAxMy8w Ni8wNiAxOTowMjoyNwkxLjI2Ci1AQCAtNDAsMTUgKzQwLDE3IEBACi0gfQotIAotICMgQ2hlY2sg aW5oZXJpdGFuY2Ugb2YgdHlwZWRlZnMuCi0tZm9yZWFjaCBrbGFzcyB7IkEiICJEIiAiRSIgIkYi ICJBMiIgIkQyIn0gewotLSAgICBnZGJfdGVzdCAicHR5cGUgJHtrbGFzc306OnZhbHVlX3R5cGUi ICJ0eXBlID0gaW50IgotLSAgICBnZGJfdGVzdCAid2hhdGlzICR7a2xhc3N9Ojp2YWx1ZV90eXBl IiAidHlwZSA9IGludCIKLS0gICAgZ2RiX3Rlc3QgInAgKCR7a2xhc3N9Ojp2YWx1ZV90eXBlKSAw IiAiID0gMCIKLS19Ci0tZm9yZWFjaCBrbGFzcyB7IloiICJaWiJ9IHsKLS0gICAgZ2RiX3Rlc3Qg InB0eXBlICR7a2xhc3N9Ojp2YWx1ZV90eXBlIiAidHlwZSA9IGZsb2F0IgotLSAgICBnZGJfdGVz dCAid2hhdGlzICR7a2xhc3N9Ojp2YWx1ZV90eXBlIiAidHlwZSA9IGZsb2F0IgotLSAgICBnZGJf dGVzdCAicCAoJHtrbGFzc306OnZhbHVlX3R5cGUpIDAiICIgPSAwIgotK3dpdGhfdGVzdF9wcmVm aXggImJlZm9yZSBydW4iIHsKLSsgICAgZm9yZWFjaCBrbGFzcyB7IkEiICJEIiAiRSIgIkYiICJB MiIgIkQyIn0gewotKwlnZGJfdGVzdCAicHR5cGUgJHtrbGFzc306OnZhbHVlX3R5cGUiICJ0eXBl ID0gaW50IgotKwlnZGJfdGVzdCAid2hhdGlzICR7a2xhc3N9Ojp2YWx1ZV90eXBlIiAidHlwZSA9 IGludCIKLSsJZ2RiX3Rlc3QgInAgKCR7a2xhc3N9Ojp2YWx1ZV90eXBlKSAwIiAiID0gMCIKLSsg ICAgfQotKyAgICBmb3JlYWNoIGtsYXNzIHsiWiIgIlpaIn0gewotKwlnZGJfdGVzdCAicHR5cGUg JHtrbGFzc306OnZhbHVlX3R5cGUiICJ0eXBlID0gZmxvYXQiCi0rCWdkYl90ZXN0ICJ3aGF0aXMg JHtrbGFzc306OnZhbHVlX3R5cGUiICJ0eXBlID0gZmxvYXQiCi0rCWdkYl90ZXN0ICJwICgke2ts YXNzfTo6dmFsdWVfdHlwZSkgMCIgIiA9IDAiCi0rICAgIH0KLSB9Ci0gCi0gIyBTZXQgaXQgdXAg YXQgYSBicmVha3BvaW50IHNvIHdlIGNhbiBwbGF5IHdpdGggdGhlIHZhcmlhYmxlIHZhbHVlcy4K LUBAIC01OSwxMCArNjEsMTIgQEAKLSB9Ci0gCi0gIyBDaGVjayBpbmhlcml0YW5jZSBvZiB0eXBl ZGVmcyBhZ2FpbiwgYnV0IHRoaXMgdGltZSB3aXRoIGFuIGFjdGl2ZSBibG9jay4KLS1mb3JlYWNo IGtsYXNzIHsiQSIgIkQiICJBMiIgIkQyIn0gewotLSAgICBnZGJfdGVzdCAicHR5cGUgJHtrbGFz c306OnZhbHVlX3R5cGUiICJ0eXBlID0gaW50IgotLSAgICBnZGJfdGVzdCAid2hhdGlzICR7a2xh c3N9Ojp2YWx1ZV90eXBlIiAidHlwZSA9IGludCIKLS0gICAgZ2RiX3Rlc3QgInAgKCR7a2xhc3N9 Ojp2YWx1ZV90eXBlKSAwIiAiID0gMCIKLSt3aXRoX3Rlc3RfcHJlZml4ICJhdCBtYXJrZXIxIiB7 Ci0rICAgIGZvcmVhY2gga2xhc3MgeyJBIiAiRCIgIkEyIiAiRDIifSB7Ci0rCWdkYl90ZXN0ICJw dHlwZSAke2tsYXNzfTo6dmFsdWVfdHlwZSIgInR5cGUgPSBpbnQiCi0rCWdkYl90ZXN0ICJ3aGF0 aXMgJHtrbGFzc306OnZhbHVlX3R5cGUiICJ0eXBlID0gaW50IgotKwlnZGJfdGVzdCAicCAoJHtr bGFzc306OnZhbHVlX3R5cGUpIDAiICIgPSAwIgotKyAgICB9Ci0gfQotIAotIGdkYl90ZXN0ICJ1 cCIgIi4qbWFpbi4qIiAidXAgZnJvbSBtYXJrZXIxIgoKZGlmZiAtLWdpdCBhL2dkYi1kbG9wZW4t c3RhcC1wcm9iZS0xb2Y5LnBhdGNoIGIvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTFvZjkucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0MTlkYzkuLjAwMDAwMDAKLS0tIGEvZ2Ri LWRsb3Blbi1zdGFwLXByb2JlLTFvZjkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAs MCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMy0wNi9tc2cwMDAxMi5o dG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEzLzA2LzA0IDAyOjQ0OjM0CTEuMTU2ODAK LSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEzLzA2LzA0IDEyOjUwOjIwCTEuMTU2ODEKLSMjIC0x LDMgKzEsMTEgQEAKLSsyMDEzLTA2LTA0ICBHYXJ5IEJlbnNvbiAgPGdiZW5zb25AcmVkaGF0LmNv bT4KLSsKLSsJKiBwcm9iZS5oIChnZXRfcHJvYmVfYXJndW1lbnRfY291bnQpOiBOZXcgZGVjbGFy YXRpb24uCi0rCShldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCk6IExpa2V3aXNlLgotKwkqIHByb2Jl LmMgKGdldF9wcm9iZV9hcmd1bWVudF9jb3VudCk6IE5ldyBmdW5jdGlvbi4KLSsJKGV2YWx1YXRl X3Byb2JlX2FyZ3VtZW50KTogTGlrZXdpc2UuCi0rCShwcm9iZV9zYWZlX2V2YWx1YXRlX2F0X3Bj KTogVXNlIHRoZSBhYm92ZSBuZXcgZnVuY3Rpb25zLgotKwotIDIwMTMtMDYtMDQgIEFsYW4gTW9k cmEgIDxhbW9kcmFAZ21haWwuY29tPgotIAotIAkqIHBwYy10ZGVwLmggKHBwY19pbnNuc19tYXRj aF9wYXR0ZXJuKTogVXBkYXRlIHByb3RvdHlwZS4KLS0tLSBzcmMvZ2RiL3Byb2JlLmMJMjAxMy8w NS8zMCAxNzozOTozNAkxLjgKLSsrKyBzcmMvZ2RiL3Byb2JlLmMJMjAxMy8wNi8wNCAxMjo1MDoy MAkxLjkKLUBAIC02MTEsMjggKzYxMSw1NSBAQAotIAotIC8qIFNlZSBjb21tZW50cyBpbiBwcm9i ZS5oLiAgKi8KLSAKLSt1bnNpZ25lZAotK2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCAoc3RydWN0 IHByb2JlICpwcm9iZSkKLSt7Ci0rICBjb25zdCBzdHJ1Y3Qgc3ltX3Byb2JlX2ZucyAqcHJvYmVf Zm5zOwotKwotKyAgZ2RiX2Fzc2VydCAocHJvYmUtPm9iamZpbGUgIT0gTlVMTCk7Ci0rICBnZGJf YXNzZXJ0IChwcm9iZS0+b2JqZmlsZS0+c2YgIT0gTlVMTCk7Ci0rCi0rICBwcm9iZV9mbnMgPSBw cm9iZS0+b2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnM7Ci0rCi0rICBnZGJfYXNzZXJ0IChwcm9i ZV9mbnMgIT0gTlVMTCk7Ci0rCi0rICByZXR1cm4gcHJvYmVfZm5zLT5zeW1fZ2V0X3Byb2JlX2Fy Z3VtZW50X2NvdW50IChwcm9iZSk7Ci0rfQotKwotKy8qIFNlZSBjb21tZW50cyBpbiBwcm9iZS5o LiAgKi8KLSsKLStzdHJ1Y3QgdmFsdWUgKgotK2V2YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChzdHJ1 Y3QgcHJvYmUgKnByb2JlLCB1bnNpZ25lZCBuKQotK3sKLSsgIGNvbnN0IHN0cnVjdCBzeW1fcHJv YmVfZm5zICpwcm9iZV9mbnM7Ci0rCi0rICBnZGJfYXNzZXJ0IChwcm9iZS0+b2JqZmlsZSAhPSBO VUxMKTsKLSsgIGdkYl9hc3NlcnQgKHByb2JlLT5vYmpmaWxlLT5zZiAhPSBOVUxMKTsKLSsKLSsg IHByb2JlX2ZucyA9IHByb2JlLT5vYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2ZuczsKLSsKLSsgIGdk Yl9hc3NlcnQgKHByb2JlX2ZucyAhPSBOVUxMKTsKLSsKLSsgIHJldHVybiBwcm9iZV9mbnMtPnN5 bV9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCAocHJvYmUsIG4pOwotK30KLSsKLSsvKiBTZWUgY29t bWVudHMgaW4gcHJvYmUuaC4gICovCi0rCi0gc3RydWN0IHZhbHVlICoKLSBwcm9iZV9zYWZlX2V2 YWx1YXRlX2F0X3BjIChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsIHVuc2lnbmVkIG4pCi0gewot ICAgc3RydWN0IHByb2JlICpwcm9iZTsKLS0gIGNvbnN0IHN0cnVjdCBzeW1fcHJvYmVfZm5zICpw cm9iZV9mbnM7Ci0gICB1bnNpZ25lZCBuX2FyZ3M7Ci0gCi0gICBwcm9iZSA9IGZpbmRfcHJvYmVf YnlfcGMgKGdldF9mcmFtZV9wYyAoZnJhbWUpKTsKLSAgIGlmICghcHJvYmUpCi0gICAgIHJldHVy biBOVUxMOwotIAotLSAgZ2RiX2Fzc2VydCAocHJvYmUtPm9iamZpbGUgIT0gTlVMTCk7Ci0tICBn ZGJfYXNzZXJ0IChwcm9iZS0+b2JqZmlsZS0+c2YgIT0gTlVMTCk7Ci0tICBnZGJfYXNzZXJ0IChw cm9iZS0+b2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnMgIT0gTlVMTCk7Ci0tCi0tICBwcm9iZV9m bnMgPSBwcm9iZS0+b2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnM7Ci0tICBuX2FyZ3MgPSBwcm9i ZV9mbnMtPnN5bV9nZXRfcHJvYmVfYXJndW1lbnRfY291bnQgKHByb2JlKTsKLS0KLSsgIG5fYXJn cyA9IGdldF9wcm9iZV9hcmd1bWVudF9jb3VudCAocHJvYmUpOwotICAgaWYgKG4gPj0gbl9hcmdz KQotICAgICByZXR1cm4gTlVMTDsKLSAKLS0gIHJldHVybiBwcm9iZV9mbnMtPnN5bV9ldmFsdWF0 ZV9wcm9iZV9hcmd1bWVudCAocHJvYmUsIG4pOwotKyAgcmV0dXJuIGV2YWx1YXRlX3Byb2JlX2Fy Z3VtZW50IChwcm9iZSwgbik7Ci0gfQotIAotIC8qIFNlZSBjb21tZW50IGluIHByb2JlLmguICAq LwotLS0tIHNyYy9nZGIvcHJvYmUuaAkyMDEzLzAxLzAxIDA2OjMyOjQ5CTEuNAotKysrIHNyYy9n ZGIvcHJvYmUuaAkyMDEzLzA2LzA0IDEyOjUwOjIxCTEuNQotQEAgLTIxNCw2ICsyMTQsMTYgQEAK LSAKLSBleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKippbmZvX3Byb2Jlc19jbWRsaXN0 X2dldCAodm9pZCk7Ci0gCi0rLyogUmV0dXJuIHRoZSBhcmd1bWVudCBjb3VudCBvZiB0aGUgc3Bl Y2lmaWVkIHByb2JlLiAgKi8KLSsKLStleHRlcm4gdW5zaWduZWQgZ2V0X3Byb2JlX2FyZ3VtZW50 X2NvdW50IChzdHJ1Y3QgcHJvYmUgKnByb2JlKTsKLSsKLSsvKiBFdmFsdWF0ZSBhcmd1bWVudCBO IG9mIHRoZSBzcGVjaWZpZWQgcHJvYmUuICBOIG11c3QgYmUgYmV0d2VlbiAwCi0rICAgaW5jbHVz aXZlIGFuZCBnZXRfcHJvYmVfYXJndW1lbnRfY291bnQgZXhjbHVzaXZlLiAgKi8KLSsKLStleHRl cm4gc3RydWN0IHZhbHVlICpldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCAoc3RydWN0IHByb2JlICpw cm9iZSwKLSsJCQkJCSAgICAgIHVuc2lnbmVkIG4pOwotKwotIC8qIEEgY29udmVuaWVuY2UgZnVu Y3Rpb24gdGhhdCBmaW5kcyBhIHByb2JlIGF0IHRoZSBQQyBpbiBGUkFNRSBhbmQKLSAgICBldmFs dWF0ZXMgYXJndW1lbnQgTiwgd2l0aCAwIDw9IE4gPCBudW1iZXJfb2ZfYXJncy4gIElmIHRoZXJl IGlzIG5vCi0gICAgcHJvYmUgYXQgdGhhdCBsb2NhdGlvbiwgb3IgaWYgdGhlIHByb2JlIGRvZXMg bm90IGhhdmUgZW5vdWdoIGFyZ3VtZW50cywKCmRpZmYgLS1naXQgYS9nZGItZGxvcGVuLXN0YXAt cHJvYmUtMm9mOS5wYXRjaCBiL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS0yb2Y5LnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzFhNzlhLi4wMDAwMDAwCi0tLSBhL2dkYi1kbG9w ZW4tc3RhcC1wcm9iZS0yb2Y5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTgxICswLDAgQEAK LWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTMtMDYvbXNnMDAwMTMuaHRtbAot Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMy8wNi8wNCAxMjo1MDoyMAkxLjE1NjgxCi0jIyMg c3JjL2dkYi9DaGFuZ2VMb2cJMjAxMy8wNi8wNCAxMjo1MzozMwkxLjE1NjgyCi0jIyAtMSw1ICsx LDI0IEBACi0gMjAxMy0wNi0wNCAgR2FyeSBCZW5zb24gIDxnYmVuc29uQHJlZGhhdC5jb20+Ci0g Ci0rCSogb2JqZmlsZXMuaCAoaW5oaWJpdF9zZWN0aW9uX21hcF91cGRhdGVzKTogTmV3IGZ1bmN0 aW9uCi0rCWRlY2xhcmF0aW9uLgotKwkocmVzdW1lX3NlY3Rpb25fbWFwX3VwZGF0ZXMpOiBMaWtl d2lzZS4KLSsJKHJlc3VtZV9zZWN0aW9uX21hcF91cGRhdGVzX2NsZWFudXApOiBMaWtld2lzZS4K LSsJKiBvYmpmaWxlcy5jIChvYmpmaWxlX3BzcGFjZV9pbmZvKTogUmVtb3ZlZCBmaWVsZAotKwki b2JqZmlsZXNfY2hhbmdlZF9wIi4gIE5ldyBmaWVsZHMgIm5ld19vYmpmaWxlc19hdmFpbGFibGUi LAotKwkic2VjdGlvbl9tYXBfZGlydHkiIGFuZCAiaW5oaWJpdF91cGRhdGVzIi4KLSsJKGFsbG9j YXRlX29iamZpbGUpOiBTZXQgbmV3X29iamZpbGVzX2F2YWlsYWJsZS4KLSsJKGZyZWVfb2JqZmls ZSk6IFNldCBzZWN0aW9uX21hcF9kaXJ0eS4KLSsJKG9iamZpbGVfcmVsb2NhdGUxKTogTGlrZXdp c2UuCi0rCShpbl9wbHRfc2VjdGlvbik6IExpa2V3aXNlLgotKwkoZmluZF9wY19zZWN0aW9uKTog VXBkYXRlIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZQotKwlzZWN0aW9uIG1hcCB3aWxs IGJlIHVwZGF0ZWQuCi0rCShpbmhpYml0X3NlY3Rpb25fbWFwX3VwZGF0ZXMpOiBOZXcgZnVuY3Rp b24uCi0rCShyZXN1bWVfc2VjdGlvbl9tYXBfdXBkYXRlcyk6IExpa2V3aXNlLgotKwkocmVzdW1l X3NlY3Rpb25fbWFwX3VwZGF0ZXNfY2xlYW51cCk6IExpa2V3aXNlLgotKwotKzIwMTMtMDYtMDQg IEdhcnkgQmVuc29uICA8Z2JlbnNvbkByZWRoYXQuY29tPgotKwotIAkqIHByb2JlLmggKGdldF9w cm9iZV9hcmd1bWVudF9jb3VudCk6IE5ldyBkZWNsYXJhdGlvbi4KLSAJKGV2YWx1YXRlX3Byb2Jl X2FyZ3VtZW50KTogTGlrZXdpc2UuCi0gCSogcHJvYmUuYyAoZ2V0X3Byb2JlX2FyZ3VtZW50X2Nv dW50KTogTmV3IGZ1bmN0aW9uLgotLS0tIHNyYy9nZGIvb2JqZmlsZXMuYwkyMDEzLzA1LzA2IDE5 OjE1OjE3CTEuMTYwCi0rKysgc3JjL2dkYi9vYmpmaWxlcy5jCTIwMTMvMDYvMDQgMTI6NTM6MzQJ MS4xNjEKLUBAIC02Nyw5ICs2NywxOCBAQAotIAotIHN0cnVjdCBvYmpmaWxlX3BzcGFjZV9pbmZv Ci0gewotLSAgaW50IG9iamZpbGVzX2NoYW5nZWRfcDsKLSAgIHN0cnVjdCBvYmpfc2VjdGlvbiAq KnNlY3Rpb25zOwotICAgaW50IG51bV9zZWN0aW9uczsKLSsKLSsgIC8qIE5vbnplcm8gaWYgb2Jq ZWN0IGZpbGVzIGhhdmUgYmVlbiBhZGRlZCBzaW5jZSB0aGUgc2VjdGlvbiBtYXAKLSsgICAgIHdh cyBsYXN0IHVwZGF0ZWQuICAqLwotKyAgaW50IG5ld19vYmpmaWxlc19hdmFpbGFibGU7Ci0rCi0r ICAvKiBOb256ZXJvIGlmIHRoZSBzZWN0aW9uIG1hcCBNVVNUIGJlIHVwZGF0ZWQgYmVmb3JlIHVz ZS4gICovCi0rICBpbnQgc2VjdGlvbl9tYXBfZGlydHk7Ci0rCi0rICAvKiBOb256ZXJvIGlmIHNl Y3Rpb24gbWFwIHVwZGF0ZXMgc2hvdWxkIGJlIGluaGliaXRlZCBpZiBwb3NzaWJsZS4gICovCi0r ICBpbnQgaW5oaWJpdF91cGRhdGVzOwotIH07Ci0gCi0gLyogUGVyLXByb2dyYW0tc3BhY2UgZGF0 YSBrZXkuICAqLwotQEAgLTMxNyw3ICszMjYsNyBAQAotICAgb2JqZmlsZS0+ZmxhZ3MgfD0gZmxh Z3M7Ci0gCi0gICAvKiBSZWJ1aWxkIHNlY3Rpb24gbWFwIG5leHQgdGltZSB3ZSBuZWVkIGl0LiAg Ki8KLS0gIGdldF9vYmpmaWxlX3BzcGFjZV9kYXRhIChvYmpmaWxlLT5wc3BhY2UpLT5vYmpmaWxl c19jaGFuZ2VkX3AgPSAxOwotKyAgZ2V0X29iamZpbGVfcHNwYWNlX2RhdGEgKG9iamZpbGUtPnBz cGFjZSktPm5ld19vYmpmaWxlc19hdmFpbGFibGUgPSAxOwotIAotICAgcmV0dXJuIG9iamZpbGU7 Ci0gfQotQEAgLTY0Niw3ICs2NTUsNyBAQAotICAgb2JzdGFja19mcmVlICgmb2JqZmlsZS0+b2Jq ZmlsZV9vYnN0YWNrLCAwKTsKLSAKLSAgIC8qIFJlYnVpbGQgc2VjdGlvbiBtYXAgbmV4dCB0aW1l IHdlIG5lZWQgaXQuICAqLwotLSAgZ2V0X29iamZpbGVfcHNwYWNlX2RhdGEgKG9iamZpbGUtPnBz cGFjZSktPm9iamZpbGVzX2NoYW5nZWRfcCA9IDE7Ci0rICBnZXRfb2JqZmlsZV9wc3BhY2VfZGF0 YSAob2JqZmlsZS0+cHNwYWNlKS0+c2VjdGlvbl9tYXBfZGlydHkgPSAxOwotIAotICAgeGZyZWUg KG9iamZpbGUpOwotIH0KLUBAIC04MjYsNyArODM1LDcgQEAKLSAgIH0KLSAKLSAgIC8qIFJlYnVp bGQgc2VjdGlvbiBtYXAgbmV4dCB0aW1lIHdlIG5lZWQgaXQuICAqLwotLSAgZ2V0X29iamZpbGVf cHNwYWNlX2RhdGEgKG9iamZpbGUtPnBzcGFjZSktPm9iamZpbGVzX2NoYW5nZWRfcCA9IDE7Ci0r ICBnZXRfb2JqZmlsZV9wc3BhY2VfZGF0YSAob2JqZmlsZS0+cHNwYWNlKS0+c2VjdGlvbl9tYXBf ZGlydHkgPSAxOwotIAotICAgLyogVXBkYXRlIHRoZSB0YWJsZSBpbiBleGVjX29wcywgdXNlZCB0 byByZWFkIG1lbW9yeS4gICovCi0gICBBTExfT0JKRklMRV9PU0VDVElPTlMgKG9iamZpbGUsIHMp Ci1AQCAtMTI5MSwxMSArMTMwMCwxNCBAQAotIHVwZGF0ZV9zZWN0aW9uX21hcCAoc3RydWN0IHBy b2dyYW1fc3BhY2UgKnBzcGFjZSwKLSAJCSAgICBzdHJ1Y3Qgb2JqX3NlY3Rpb24gKioqcG1hcCwg aW50ICpwbWFwX3NpemUpCi0gewotKyAgc3RydWN0IG9iamZpbGVfcHNwYWNlX2luZm8gKnBzcGFj ZV9pbmZvOwotICAgaW50IGFsbG9jX3NpemUsIG1hcF9zaXplLCBpOwotICAgc3RydWN0IG9ial9z ZWN0aW9uICpzLCAqKm1hcDsKLSAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOwotIAotLSAgZ2Ri X2Fzc2VydCAoZ2V0X29iamZpbGVfcHNwYWNlX2RhdGEgKHBzcGFjZSktPm9iamZpbGVzX2NoYW5n ZWRfcCAhPSAwKTsKLSsgIHBzcGFjZV9pbmZvID0gZ2V0X29iamZpbGVfcHNwYWNlX2RhdGEgKHBz cGFjZSk7Ci0rICBnZGJfYXNzZXJ0IChwc3BhY2VfaW5mby0+c2VjdGlvbl9tYXBfZGlydHkgIT0g MAotKwkgICAgICB8fCBwc3BhY2VfaW5mby0+bmV3X29iamZpbGVzX2F2YWlsYWJsZSAhPSAwKTsK LSAKLSAgIG1hcCA9ICpwbWFwOwotICAgeGZyZWUgKG1hcCk7Ci1AQCAtMTM2NSw3ICsxMzc3LDkg QEAKLSAgICAgcmV0dXJuIHM7Ci0gCi0gICBwc3BhY2VfaW5mbyA9IGdldF9vYmpmaWxlX3BzcGFj ZV9kYXRhIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpOwotLSAgaWYgKHBzcGFjZV9pbmZvLT5vYmpm aWxlc19jaGFuZ2VkX3AgIT0gMCkKLSsgIGlmIChwc3BhY2VfaW5mby0+c2VjdGlvbl9tYXBfZGly dHkKLSsgICAgICB8fCAocHNwYWNlX2luZm8tPm5ld19vYmpmaWxlc19hdmFpbGFibGUKLSsJICAm JiAhcHNwYWNlX2luZm8tPmluaGliaXRfdXBkYXRlcykpCi0gICAgIHsKLSAgICAgICB1cGRhdGVf c2VjdGlvbl9tYXAgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSwKLSAJCQkgICZwc3BhY2VfaW5mby0+ c2VjdGlvbnMsCi1AQCAtMTM3Myw3ICsxMzg3LDggQEAKLSAKLSAgICAgICAvKiBEb24ndCBuZWVk IHVwZGF0ZXMgdG8gc2VjdGlvbiBtYXAgdW50aWwgb2JqZmlsZXMgYXJlIGFkZGVkLAotICAgICAg ICAgIHJlbW92ZWQgb3IgcmVsb2NhdGVkLiAgKi8KLS0gICAgICBwc3BhY2VfaW5mby0+b2JqZmls ZXNfY2hhbmdlZF9wID0gMDsKLSsgICAgICBwc3BhY2VfaW5mby0+bmV3X29iamZpbGVzX2F2YWls YWJsZSA9IDA7Ci0rICAgICAgcHNwYWNlX2luZm8tPnNlY3Rpb25fbWFwX2RpcnR5ID0gMDsKLSAg ICAgfQotIAotICAgLyogVGhlIEMgc3RhbmRhcmQgKElTTy9JRUMgOTg5OTpUQzIpIHJlcXVpcmVz IHRoZSBCQVNFIGFyZ3VtZW50IHRvCi1AQCAtMTQxNCwxNCArMTQyOSwzOCBAQAotIH0KLSAMCi0g Ci0tLyogU2V0IG9iamZpbGVzX2NoYW5nZWRfcCBzbyBzZWN0aW9uIG1hcCB3aWxsIGJlIHJlYnVp bHQgbmV4dCB0aW1lIGl0Ci0rLyogU2V0IHNlY3Rpb25fbWFwX2RpcnR5IHNvIHNlY3Rpb24gbWFw IHdpbGwgYmUgcmVidWlsdCBuZXh0IHRpbWUgaXQKLSAgICBpcyB1c2VkLiAgQ2FsbGVkIGJ5IHJl cmVhZF9zeW1ib2xzLiAgKi8KLSAKLSB2b2lkCi0gb2JqZmlsZXNfY2hhbmdlZCAodm9pZCkKLSB7 Ci0gICAvKiBSZWJ1aWxkIHNlY3Rpb24gbWFwIG5leHQgdGltZSB3ZSBuZWVkIGl0LiAgKi8KLS0g IGdldF9vYmpmaWxlX3BzcGFjZV9kYXRhIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpLT5vYmpmaWxl c19jaGFuZ2VkX3AgPSAxOwotKyAgZ2V0X29iamZpbGVfcHNwYWNlX2RhdGEgKGN1cnJlbnRfcHJv Z3JhbV9zcGFjZSktPnNlY3Rpb25fbWFwX2RpcnR5ID0gMTsKLSt9Ci0rCi0rLyogU2VlIGNvbW1l bnRzIGluIG9iamZpbGVzLmguICAqLwotKwotK3ZvaWQKLStpbmhpYml0X3NlY3Rpb25fbWFwX3Vw ZGF0ZXMgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UpCi0rewotKyAgZ2V0X29iamZpbGVf cHNwYWNlX2RhdGEgKHBzcGFjZSktPmluaGliaXRfdXBkYXRlcyA9IDE7Ci0rfQotKwotKy8qIFNl ZSBjb21tZW50cyBpbiBvYmpmaWxlcy5oLiAgKi8KLSsKLSt2b2lkCi0rcmVzdW1lX3NlY3Rpb25f bWFwX3VwZGF0ZXMgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UpCi0rewotKyAgZ2V0X29i amZpbGVfcHNwYWNlX2RhdGEgKHBzcGFjZSktPmluaGliaXRfdXBkYXRlcyA9IDA7Ci0rfQotKwot Ky8qIFNlZSBjb21tZW50cyBpbiBvYmpmaWxlcy5oLiAgKi8KLSsKLSt2b2lkCi0rcmVzdW1lX3Nl Y3Rpb25fbWFwX3VwZGF0ZXNfY2xlYW51cCAodm9pZCAqYXJnKQotK3sKLSsgIHJlc3VtZV9zZWN0 aW9uX21hcF91cGRhdGVzIChhcmcpOwotIH0KLSAKLSAvKiBUaGUgZGVmYXVsdCBpbXBsZW1lbnRh dGlvbiBmb3IgdGhlICJpdGVyYXRlX292ZXJfb2JqZmlsZXNfaW5fc2VhcmNoX29yZGVyIgotLS0t IHNyYy9nZGIvb2JqZmlsZXMuaAkyMDEzLzA1LzA2IDE5OjE1OjE3CTEuMTA2Ci0rKysgc3JjL2dk Yi9vYmpmaWxlcy5oCTIwMTMvMDYvMDQgMTI6NTM6MzQJMS4xMDcKLUBAIC01MDEsNiArNTAxLDIy IEBACi0gICAgbW9kdWxlcy4gICovCi0gREVDTEFSRV9SRUdJU1RSWShvYmpmaWxlKTsKLSAKLSsv KiBJbiBub3JtYWwgdXNlLCB0aGUgc2VjdGlvbiBtYXAgd2lsbCBiZSByZWJ1aWx0IGJ5IGZpbmRf cGNfc2VjdGlvbgotKyAgIGlmIG9iamZpbGVzIGhhdmUgYmVlbiBhZGRlZCwgcmVtb3ZlZCBvciBy ZWxvY2F0ZWQgc2luY2UgaXQgd2FzIGxhc3QKLSsgICBjYWxsZWQuICBDYWxsaW5nIGluaGliaXRf c2VjdGlvbl9tYXBfdXBkYXRlcyB3aWxsIGluaGliaXQgdGhpcwotKyAgIGJlaGF2aW9yIHVudGls IHJlc3VtZV9zZWN0aW9uX21hcF91cGRhdGVzIGlzIGNhbGxlZC4gIElmIHlvdSBjYWxsCi0rICAg aW5oaWJpdF9zZWN0aW9uX21hcF91cGRhdGVzIHlvdSBtdXN0IGVuc3VyZSB0aGF0IGV2ZXJ5IGNh bGwgdG8KLSsgICBmaW5kX3BjX3NlY3Rpb24gaW4gdGhlIGluaGliaXRlZCByZWdpb24gcmVsYXRl cyB0byBhIHNlY3Rpb24gdGhhdAotKyAgIGlzIGFscmVhZHkgaW4gdGhlIHNlY3Rpb24gbWFwIGFu ZCBoYXMgbm90IHNpbmNlIGJlZW4gcmVtb3ZlZCBvcgotKyAgIHJlbG9jYXRlZC4gICovCi0rZXh0 ZXJuIHZvaWQgaW5oaWJpdF9zZWN0aW9uX21hcF91cGRhdGVzIChzdHJ1Y3QgcHJvZ3JhbV9zcGFj ZSAqcHNwYWNlKTsKLSsKLSsvKiBSZXN1bWUgYXV0b21hdGljYWxseSByZWJ1aWxkaW5nIHRoZSBz ZWN0aW9uIG1hcCBhcyByZXF1aXJlZC4gICovCi0rZXh0ZXJuIHZvaWQgcmVzdW1lX3NlY3Rpb25f bWFwX3VwZGF0ZXMgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UpOwotKwotKy8qIFZlcnNp b24gb2YgdGhlIGFib3ZlIHN1aXRhYmxlIGZvciB1c2UgYXMgYSBjbGVhbnVwLiAgKi8KLStleHRl cm4gdm9pZCByZXN1bWVfc2VjdGlvbl9tYXBfdXBkYXRlc19jbGVhbnVwICh2b2lkICphcmcpOwot KwotIGV4dGVybiB2b2lkIGRlZmF1bHRfaXRlcmF0ZV9vdmVyX29iamZpbGVzX2luX3NlYXJjaF9v cmRlcgotICAgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotICAgIGl0ZXJhdGVfb3Zlcl9vYmpm aWxlc19pbl9zZWFyY2hfb3JkZXJfY2JfZnR5cGUgKmNiLAoKZGlmZiAtLWdpdCBhL2dkYi1kbG9w ZW4tc3RhcC1wcm9iZS0zb2Y5LnBhdGNoIGIvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTNvZjkucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1MWY0YmQuLjAwMDAwMDAKLS0tIGEv Z2RiLWRsb3Blbi1zdGFwLXByb2JlLTNvZjkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOTgg KzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMy0wNi9tc2cwMDAx NC5odG1sCi0KLSMjIyBzcmMvZ2RiL2dkYnNlcnZlci9DaGFuZ2VMb2cJMjAxMy8wNS8zMSAxOTox NDozMwkxLjcyMAotIyMjIHNyYy9nZGIvZ2Ric2VydmVyL0NoYW5nZUxvZwkyMDEzLzA2LzA0IDEy OjU5OjIwCTEuNzIxCi0jIyAtMSwzICsxLDEyIEBACi0rMjAxMy0wNi0wNCAgR2FyeSBCZW5zb24g IDxnYmVuc29uQHJlZGhhdC5jb20+Ci0rCi0rCSogc2VydmVyLmMgKGhhbmRsZV9xdWVyeSk6IEFk ZCAiYXVnbWVudGVkLWxpYnJhcmllcy1zdnI0LXJlYWQrIgotKwl0byBxU3VwcG9ydGVkIHJlc3Bv bnNlIHdoZW4gYXBwcm9wcmlhdGUuCi0rCShoYW5kbGVfcXhmZXJfbGlicmFyaWVzX3N2cjQpOiBB bGxvdyBxWGZlcjpsaWJyYXJpZXMtc3ZyNDpyZWFkCi0rCXdpdGggbm9uemVyby1sZW5ndGggYW5u ZXguCi0rCSogbGludXgtbG93LmMgKGxpbnV4X3F4ZmVyX2xpYnJhcmllc19zdnI0KTogUGFyc2Ug YW5kIGhhbmRsZQotKwlhcmd1bWVudHMgc3VwcGxpZWQgaW4gYW5uZXguCi0rCi0gMjAxMy0wNS0z MSAgRG91ZyBFdmFucyAgPGRqZUBnb29nbGUuY29tPgotIAotIAkqIGxpbnV4LXg4Ni1sb3cuYyAo cHNfZ2V0X3RocmVhZF9hcmVhKTogUHJvcGVybHkgZXh0ZW5kIGFkZHJlc3MgdG8KLS0tLSBzcmMv Z2RiL2dkYnNlcnZlci9saW51eC1sb3cuYwkyMDEzLzA1LzIzIDE3OjE3OjUwCTEuMjM3Ci0rKysg c3JjL2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMJMjAxMy8wNi8wNCAxMjo1OToyMQkxLjIzOAot QEAgLTU3MjgsNiArNTcyOCwxMiBAQAotICAgICB9OwotICAgY29uc3Qgc3RydWN0IGxpbmtfbWFw X29mZnNldHMgKmxtbzsKLSAgIHVuc2lnbmVkIGludCBtYWNoaW5lOwotKyAgaW50IHB0cl9zaXpl OwotKyAgQ09SRV9BRERSIGxtX2FkZHIgPSAwLCBsbV9wcmV2ID0gMDsKLSsgIGludCBhbGxvY2F0 ZWQgPSAxMDI0OwotKyAgY2hhciAqcDsKLSsgIENPUkVfQUREUiBsX25hbWUsIGxfYWRkciwgbF9s ZCwgbF9uZXh0LCBsX3ByZXY7Ci0rICBpbnQgaGVhZGVyX2RvbmUgPSAwOwotIAotICAgaWYgKHdy aXRlYnVmICE9IE5VTEwpCi0gICAgIHJldHVybiAtMjsKLUBAIC01NzM4LDEyOCArNTc0NCwxNDQg QEAKLSAgIHhzbnByaW50ZiAoZmlsZW5hbWUsIHNpemVvZiBmaWxlbmFtZSwgIi9wcm9jLyVkL2V4 ZSIsIHBpZCk7Ci0gICBpc19lbGY2NCA9IGVsZl82NF9maWxlX3AgKGZpbGVuYW1lLCAmbWFjaGlu ZSk7Ci0gICBsbW8gPSBpc19lbGY2NCA/ICZsbW9fNjRiaXRfb2Zmc2V0cyA6ICZsbW9fMzJiaXRf b2Zmc2V0czsKLSsgIHB0cl9zaXplID0gaXNfZWxmNjQgPyA4IDogNDsKLSAKLS0gIGlmIChwcml2 LT5yX2RlYnVnID09IDApCi0tICAgIHByaXYtPnJfZGVidWcgPSBnZXRfcl9kZWJ1ZyAocGlkLCBp c19lbGY2NCk7Ci0tCi0tICAvKiBXZSBmYWlsZWQgdG8gZmluZCBEVF9ERUJVRy4gIFN1Y2ggc2l0 dWF0aW9uIHdpbGwgbm90IGNoYW5nZSBmb3IgdGhpcwotLSAgICAgaW5mZXJpb3IgLSBkbyBub3Qg cmV0cnkgaXQuICBSZXBvcnQgaXQgdG8gR0RCIGFzIEUwMSwgc2VlIGZvciB0aGUgcmVhc29ucwot LSAgICAgYXQgdGhlIEdEQiBzb2xpYi1zdnI0LmMgc2lkZS4gICovCi0tICBpZiAocHJpdi0+cl9k ZWJ1ZyA9PSAoQ09SRV9BRERSKSAtMSkKLS0gICAgcmV0dXJuIC0xOwotLQotLSAgaWYgKHByaXYt PnJfZGVidWcgPT0gMCkKLSsgIHdoaWxlIChhbm5leFswXSAhPSAnXDAnKQotICAgICB7Ci0tICAg ICAgZG9jdW1lbnQgPSB4c3RyZHVwICgiPGxpYnJhcnktbGlzdC1zdnI0IHZlcnNpb249XCIxLjBc Ii8+XG4iKTsKLSsgICAgICBjb25zdCBjaGFyICpzZXA7Ci0rICAgICAgQ09SRV9BRERSICphZGRy cDsKLSsgICAgICBpbnQgbGVuOwotKwotKyAgICAgIHNlcCA9IHN0cmNociAoYW5uZXgsICc9Jyk7 Ci0rICAgICAgaWYgKHNlcCA9PSBOVUxMKQotKwlicmVhazsKLSsKLSsgICAgICBsZW4gPSBzZXAg LSBhbm5leDsKLSsgICAgICBpZiAobGVuID09IDUgJiYgc3RybmNtcCAoYW5uZXgsICJzdGFydCIs IDUpID09IDApCi0rCWFkZHJwID0gJmxtX2FkZHI7Ci0rICAgICAgZWxzZSBpZiAobGVuID09IDQg JiYgc3RybmNtcCAoYW5uZXgsICJwcmV2IiwgNCkgPT0gMCkKLSsJYWRkcnAgPSAmbG1fcHJldjsK LSsgICAgICBlbHNlCi0rCXsKLSsJICBhbm5leCA9IHN0cmNociAoc2VwLCAnOycpOwotKwkgIGlm IChhbm5leCA9PSBOVUxMKQotKwkgICAgYnJlYWs7Ci0rCSAgYW5uZXgrKzsKLSsJICBjb250aW51 ZTsKLSsJfQotKwotKyAgICAgIGFubmV4ID0gZGVjb2RlX2FkZHJlc3NfdG9fc2VtaWNvbG9uIChh ZGRycCwgc2VwICsgMSk7Ci0gICAgIH0KLS0gIGVsc2UKLSsKLSsgIGlmIChsbV9hZGRyID09IDAp Ci0gICAgIHsKLS0gICAgICBpbnQgYWxsb2NhdGVkID0gMTAyNDsKLS0gICAgICBjaGFyICpwOwot LSAgICAgIGNvbnN0IGludCBwdHJfc2l6ZSA9IGlzX2VsZjY0ID8gOCA6IDQ7Ci0tICAgICAgQ09S RV9BRERSIGxtX2FkZHIsIGxtX3ByZXYsIGxfbmFtZSwgbF9hZGRyLCBsX2xkLCBsX25leHQsIGxf cHJldjsKLS0gICAgICBpbnQgcl92ZXJzaW9uLCBoZWFkZXJfZG9uZSA9IDA7Ci0tCi0tICAgICAg ZG9jdW1lbnQgPSB4bWFsbG9jIChhbGxvY2F0ZWQpOwotLSAgICAgIHN0cmNweSAoZG9jdW1lbnQs ICI8bGlicmFyeS1saXN0LXN2cjQgdmVyc2lvbj1cIjEuMFwiIik7Ci0tICAgICAgcCA9IGRvY3Vt ZW50ICsgc3RybGVuIChkb2N1bWVudCk7Ci0tCi0tICAgICAgcl92ZXJzaW9uID0gMDsKLS0gICAg ICBpZiAobGludXhfcmVhZF9tZW1vcnkgKHByaXYtPnJfZGVidWcgKyBsbW8tPnJfdmVyc2lvbl9v ZmZzZXQsCi0tCQkJICAgICAodW5zaWduZWQgY2hhciAqKSAmcl92ZXJzaW9uLAotLQkJCSAgICAg c2l6ZW9mIChyX3ZlcnNpb24pKSAhPSAwCi0tCSAgfHwgcl92ZXJzaW9uICE9IDEpCi0rICAgICAg aW50IHJfdmVyc2lvbiA9IDA7Ci0rCi0rICAgICAgaWYgKHByaXYtPnJfZGVidWcgPT0gMCkKLSsJ cHJpdi0+cl9kZWJ1ZyA9IGdldF9yX2RlYnVnIChwaWQsIGlzX2VsZjY0KTsKLSsKLSsgICAgICAv KiBXZSBmYWlsZWQgdG8gZmluZCBEVF9ERUJVRy4gIFN1Y2ggc2l0dWF0aW9uIHdpbGwgbm90IGNo YW5nZQotKwkgZm9yIHRoaXMgaW5mZXJpb3IgLSBkbyBub3QgcmV0cnkgaXQuICBSZXBvcnQgaXQg dG8gR0RCIGFzCi0rCSBFMDEsIHNlZSBmb3IgdGhlIHJlYXNvbnMgYXQgdGhlIEdEQiBzb2xpYi1z dnI0LmMgc2lkZS4gICovCi0rICAgICAgaWYgKHByaXYtPnJfZGVidWcgPT0gKENPUkVfQUREUikg LTEpCi0rCXJldHVybiAtMTsKLSsKLSsgICAgICBpZiAocHJpdi0+cl9kZWJ1ZyAhPSAwKQotIAl7 Ci0tCSAgd2FybmluZyAoInVuZXhwZWN0ZWQgcl9kZWJ1ZyB2ZXJzaW9uICVkIiwgcl92ZXJzaW9u KTsKLS0JICBnb3RvIGRvbmU7Ci0rCSAgaWYgKGxpbnV4X3JlYWRfbWVtb3J5IChwcml2LT5yX2Rl YnVnICsgbG1vLT5yX3ZlcnNpb25fb2Zmc2V0LAotKwkJCQkgKHVuc2lnbmVkIGNoYXIgKikgJnJf dmVyc2lvbiwKLSsJCQkJIHNpemVvZiAocl92ZXJzaW9uKSkgIT0gMAotKwkgICAgICB8fCByX3Zl cnNpb24gIT0gMSkKLSsJICAgIHsKLSsJICAgICAgd2FybmluZyAoInVuZXhwZWN0ZWQgcl9kZWJ1 ZyB2ZXJzaW9uICVkIiwgcl92ZXJzaW9uKTsKLSsJICAgIH0KLSsJICBlbHNlIGlmIChyZWFkX29u ZV9wdHIgKHByaXYtPnJfZGVidWcgKyBsbW8tPnJfbWFwX29mZnNldCwKLSsJCQkJICZsbV9hZGRy LCBwdHJfc2l6ZSkgIT0gMCkKLSsJICAgIHsKLSsJICAgICAgd2FybmluZyAoInVuYWJsZSB0byBy ZWFkIHJfbWFwIGZyb20gMHglbHgiLAotKwkJICAgICAgIChsb25nKSBwcml2LT5yX2RlYnVnICsg bG1vLT5yX21hcF9vZmZzZXQpOwotKwkgICAgfQotIAl9Ci0rICAgIH0KLSsKLSsgIGRvY3VtZW50 ID0geG1hbGxvYyAoYWxsb2NhdGVkKTsKLSsgIHN0cmNweSAoZG9jdW1lbnQsICI8bGlicmFyeS1s aXN0LXN2cjQgdmVyc2lvbj1cIjEuMFwiIik7Ci0rICBwID0gZG9jdW1lbnQgKyBzdHJsZW4gKGRv Y3VtZW50KTsKLSsKLSsgIHdoaWxlIChsbV9hZGRyCi0rCSAmJiByZWFkX29uZV9wdHIgKGxtX2Fk ZHIgKyBsbW8tPmxfbmFtZV9vZmZzZXQsCi0rCQkJICAmbF9uYW1lLCBwdHJfc2l6ZSkgPT0gMAot KwkgJiYgcmVhZF9vbmVfcHRyIChsbV9hZGRyICsgbG1vLT5sX2FkZHJfb2Zmc2V0LAotKwkJCSAg JmxfYWRkciwgcHRyX3NpemUpID09IDAKLSsJICYmIHJlYWRfb25lX3B0ciAobG1fYWRkciArIGxt by0+bF9sZF9vZmZzZXQsCi0rCQkJICAmbF9sZCwgcHRyX3NpemUpID09IDAKLSsJICYmIHJlYWRf b25lX3B0ciAobG1fYWRkciArIGxtby0+bF9wcmV2X29mZnNldCwKLSsJCQkgICZsX3ByZXYsIHB0 cl9zaXplKSA9PSAwCi0rCSAmJiByZWFkX29uZV9wdHIgKGxtX2FkZHIgKyBsbW8tPmxfbmV4dF9v ZmZzZXQsCi0rCQkJICAmbF9uZXh0LCBwdHJfc2l6ZSkgPT0gMCkKLSsgICAgewotKyAgICAgIHVu c2lnbmVkIGNoYXIgbGlibmFtZVtQQVRIX01BWF07Ci0gCi0tICAgICAgaWYgKHJlYWRfb25lX3B0 ciAocHJpdi0+cl9kZWJ1ZyArIGxtby0+cl9tYXBfb2Zmc2V0LAotLQkJCSZsbV9hZGRyLCBwdHJf c2l6ZSkgIT0gMCkKLSsgICAgICBpZiAobG1fcHJldiAhPSBsX3ByZXYpCi0gCXsKLS0JICB3YXJu aW5nICgidW5hYmxlIHRvIHJlYWQgcl9tYXAgZnJvbSAweCVseCIsCi0tCQkgICAobG9uZykgcHJp di0+cl9kZWJ1ZyArIGxtby0+cl9tYXBfb2Zmc2V0KTsKLS0JICBnb3RvIGRvbmU7Ci0rCSAgd2Fy bmluZyAoIkNvcnJ1cHRlZCBzaGFyZWQgbGlicmFyeSBsaXN0OiAweCVseCAhPSAweCVseCIsCi0r CQkgICAobG9uZykgbG1fcHJldiwgKGxvbmcpIGxfcHJldik7Ci0rCSAgYnJlYWs7Ci0gCX0KLSAK LS0gICAgICBsbV9wcmV2ID0gMDsKLS0gICAgICB3aGlsZSAocmVhZF9vbmVfcHRyIChsbV9hZGRy ICsgbG1vLT5sX25hbWVfb2Zmc2V0LAotLQkJCSAgICZsX25hbWUsIHB0cl9zaXplKSA9PSAwCi0t CSAgICAgJiYgcmVhZF9vbmVfcHRyIChsbV9hZGRyICsgbG1vLT5sX2FkZHJfb2Zmc2V0LAotLQkJ CSAgICAgICZsX2FkZHIsIHB0cl9zaXplKSA9PSAwCi0tCSAgICAgJiYgcmVhZF9vbmVfcHRyIChs bV9hZGRyICsgbG1vLT5sX2xkX29mZnNldCwKLS0JCQkgICAgICAmbF9sZCwgcHRyX3NpemUpID09 IDAKLS0JICAgICAmJiByZWFkX29uZV9wdHIgKGxtX2FkZHIgKyBsbW8tPmxfcHJldl9vZmZzZXQs Ci0tCQkJICAgICAgJmxfcHJldiwgcHRyX3NpemUpID09IDAKLS0JICAgICAmJiByZWFkX29uZV9w dHIgKGxtX2FkZHIgKyBsbW8tPmxfbmV4dF9vZmZzZXQsCi0tCQkJICAgICAgJmxfbmV4dCwgcHRy X3NpemUpID09IDApCi0rICAgICAgLyogTm90IGNoZWNraW5nIGZvciBlcnJvciBiZWNhdXNlIHJl YWRpbmcgbWF5IHN0b3AgYmVmb3JlCi0rCSB3ZSd2ZSBnb3QgUEFUSF9NQVggd29ydGggb2YgY2hh cmFjdGVycy4gICovCi0rICAgICAgbGlibmFtZVswXSA9ICdcMCc7Ci0rICAgICAgbGludXhfcmVh ZF9tZW1vcnkgKGxfbmFtZSwgbGlibmFtZSwgc2l6ZW9mIChsaWJuYW1lKSAtIDEpOwotKyAgICAg IGxpYm5hbWVbc2l6ZW9mIChsaWJuYW1lKSAtIDFdID0gJ1wwJzsKLSsgICAgICBpZiAobGlibmFt ZVswXSAhPSAnXDAnKQotIAl7Ci0tCSAgdW5zaWduZWQgY2hhciBsaWJuYW1lW1BBVEhfTUFYXTsK LSsJICAvKiA2eCB0aGUgc2l6ZSBmb3IgeG1sX2VzY2FwZV90ZXh0IGJlbG93LiAgKi8KLSsJICBz aXplX3QgbGVuID0gNiAqIHN0cmxlbiAoKGNoYXIgKikgbGlibmFtZSk7Ci0rCSAgY2hhciAqbmFt ZTsKLSAKLS0JICBpZiAobG1fcHJldiAhPSBsX3ByZXYpCi0rCSAgaWYgKCFoZWFkZXJfZG9uZSkK LSAJICAgIHsKLS0JICAgICAgd2FybmluZyAoIkNvcnJ1cHRlZCBzaGFyZWQgbGlicmFyeSBsaXN0 OiAweCVseCAhPSAweCVseCIsCi0tCQkgICAgICAgKGxvbmcpIGxtX3ByZXYsIChsb25nKSBsX3By ZXYpOwotLQkgICAgICBicmVhazsKLSsJICAgICAgLyogVGVybWluYXRlIGA8bGlicmFyeS1saXN0 LXN2cjQnLiAgKi8KLSsJICAgICAgKnArKyA9ICc+JzsKLSsJICAgICAgaGVhZGVyX2RvbmUgPSAx OwotIAkgICAgfQotIAotLQkgIC8qIE5vdCBjaGVja2luZyBmb3IgZXJyb3IgYmVjYXVzZSByZWFk aW5nIG1heSBzdG9wIGJlZm9yZQotLQkgICAgIHdlJ3ZlIGdvdCBQQVRIX01BWCB3b3J0aCBvZiBj aGFyYWN0ZXJzLiAgKi8KLS0JICBsaWJuYW1lWzBdID0gJ1wwJzsKLS0JICBsaW51eF9yZWFkX21l bW9yeSAobF9uYW1lLCBsaWJuYW1lLCBzaXplb2YgKGxpYm5hbWUpIC0gMSk7Ci0tCSAgbGlibmFt ZVtzaXplb2YgKGxpYm5hbWUpIC0gMV0gPSAnXDAnOwotLQkgIGlmIChsaWJuYW1lWzBdICE9ICdc MCcpCi0rCSAgd2hpbGUgKGFsbG9jYXRlZCA8IHAgLSBkb2N1bWVudCArIGxlbiArIDIwMCkKLSAJ ICAgIHsKLS0JICAgICAgLyogNnggdGhlIHNpemUgZm9yIHhtbF9lc2NhcGVfdGV4dCBiZWxvdy4g ICovCi0tCSAgICAgIHNpemVfdCBsZW4gPSA2ICogc3RybGVuICgoY2hhciAqKSBsaWJuYW1lKTsK LS0JICAgICAgY2hhciAqbmFtZTsKLS0KLS0JICAgICAgaWYgKCFoZWFkZXJfZG9uZSkKLS0JCXsK LS0JCSAgLyogVGVybWluYXRlIGA8bGlicmFyeS1saXN0LXN2cjQnLiAgKi8KLS0JCSAgKnArKyA9 ICc+JzsKLS0JCSAgaGVhZGVyX2RvbmUgPSAxOwotLQkJfQotLQotLQkgICAgICB3aGlsZSAoYWxs b2NhdGVkIDwgcCAtIGRvY3VtZW50ICsgbGVuICsgMjAwKQotLQkJewotLQkJICAvKiBFeHBhbmQg dG8gZ3VhcmFudGVlIHN1ZmZpY2llbnQgc3RvcmFnZS4gICovCi0tCQkgIHVpbnRwdHJfdCBkb2N1 bWVudF9sZW4gPSBwIC0gZG9jdW1lbnQ7Ci0tCi0tCQkgIGRvY3VtZW50ID0geHJlYWxsb2MgKGRv Y3VtZW50LCAyICogYWxsb2NhdGVkKTsKLS0JCSAgYWxsb2NhdGVkICo9IDI7Ci0tCQkgIHAgPSBk b2N1bWVudCArIGRvY3VtZW50X2xlbjsKLS0JCX0KLS0KLS0JICAgICAgbmFtZSA9IHhtbF9lc2Nh cGVfdGV4dCAoKGNoYXIgKikgbGlibmFtZSk7Ci0tCSAgICAgIHAgKz0gc3ByaW50ZiAocCwgIjxs aWJyYXJ5IG5hbWU9XCIlc1wiIGxtPVwiMHglbHhcIiAiCi0tCQkJICAgICAgICJsX2FkZHI9XCIw eCVseFwiIGxfbGQ9XCIweCVseFwiLz4iLAotLQkJCSAgICBuYW1lLCAodW5zaWduZWQgbG9uZykg bG1fYWRkciwKLS0JCQkgICAgKHVuc2lnbmVkIGxvbmcpIGxfYWRkciwgKHVuc2lnbmVkIGxvbmcp IGxfbGQpOwotLQkgICAgICBmcmVlIChuYW1lKTsKLS0JICAgIH0KLS0JICBlbHNlIGlmIChsbV9w cmV2ID09IDApCi0tCSAgICB7Ci0tCSAgICAgIHNwcmludGYgKHAsICIgbWFpbi1sbT1cIjB4JWx4 XCIiLCAodW5zaWduZWQgbG9uZykgbG1fYWRkcik7Ci0tCSAgICAgIHAgPSBwICsgc3RybGVuIChw KTsKLS0JICAgIH0KLSsJICAgICAgLyogRXhwYW5kIHRvIGd1YXJhbnRlZSBzdWZmaWNpZW50IHN0 b3JhZ2UuICAqLwotKwkgICAgICB1aW50cHRyX3QgZG9jdW1lbnRfbGVuID0gcCAtIGRvY3VtZW50 OwotIAotLQkgIGlmIChsX25leHQgPT0gMCkKLS0JICAgIGJyZWFrOwotKwkgICAgICBkb2N1bWVu dCA9IHhyZWFsbG9jIChkb2N1bWVudCwgMiAqIGFsbG9jYXRlZCk7Ci0rCSAgICAgIGFsbG9jYXRl ZCAqPSAyOwotKwkgICAgICBwID0gZG9jdW1lbnQgKyBkb2N1bWVudF9sZW47Ci0rCSAgICB9Ci0g Ci0tCSAgbG1fcHJldiA9IGxtX2FkZHI7Ci0tCSAgbG1fYWRkciA9IGxfbmV4dDsKLSsJICBuYW1l ID0geG1sX2VzY2FwZV90ZXh0ICgoY2hhciAqKSBsaWJuYW1lKTsKLSsJICBwICs9IHNwcmludGYg KHAsICI8bGlicmFyeSBuYW1lPVwiJXNcIiBsbT1cIjB4JWx4XCIgIgotKwkJCSJsX2FkZHI9XCIw eCVseFwiIGxfbGQ9XCIweCVseFwiLz4iLAotKwkJCW5hbWUsICh1bnNpZ25lZCBsb25nKSBsbV9h ZGRyLAotKwkJCSh1bnNpZ25lZCBsb25nKSBsX2FkZHIsICh1bnNpZ25lZCBsb25nKSBsX2xkKTsK LSsJICBmcmVlIChuYW1lKTsKLSAJfQotLSAgICBkb25lOgotLSAgICAgIGlmICghaGVhZGVyX2Rv bmUpCi0rICAgICAgZWxzZSBpZiAobG1fcHJldiA9PSAwKQotIAl7Ci0tCSAgLyogRW1wdHkgbGlz dDsgdGVybWluYXRlIGA8bGlicmFyeS1saXN0LXN2cjQnLiAgKi8KLS0JICBzdHJjcHkgKHAsICIv PiIpOwotKwkgIHNwcmludGYgKHAsICIgbWFpbi1sbT1cIjB4JWx4XCIiLCAodW5zaWduZWQgbG9u ZykgbG1fYWRkcik7Ci0rCSAgcCA9IHAgKyBzdHJsZW4gKHApOwotIAl9Ci0tICAgICAgZWxzZQot LQlzdHJjcHkgKHAsICI8L2xpYnJhcnktbGlzdC1zdnI0PiIpOwotKwotKyAgICAgIGxtX3ByZXYg PSBsbV9hZGRyOwotKyAgICAgIGxtX2FkZHIgPSBsX25leHQ7Ci0gICAgIH0KLSAKLSsgIGlmICgh aGVhZGVyX2RvbmUpCi0rICAgIHsKLSsgICAgICAvKiBFbXB0eSBsaXN0OyB0ZXJtaW5hdGUgYDxs aWJyYXJ5LWxpc3Qtc3ZyNCcuICAqLwotKyAgICAgIHN0cmNweSAocCwgIi8+Iik7Ci0rICAgIH0K LSsgIGVsc2UKLSsgICAgc3RyY3B5IChwLCAiPC9saWJyYXJ5LWxpc3Qtc3ZyND4iKTsKLSsKLSAg IGRvY3VtZW50X2xlbiA9IHN0cmxlbiAoZG9jdW1lbnQpOwotICAgaWYgKG9mZnNldCA8IGRvY3Vt ZW50X2xlbikKLSAgICAgZG9jdW1lbnRfbGVuIC09IG9mZnNldDsKLS0tLSBzcmMvZ2RiL2dkYnNl cnZlci9zZXJ2ZXIuYwkyMDEzLzA1LzI0IDExOjI4OjA2CTEuMTkxCi0rKysgc3JjL2dkYi9nZGJz ZXJ2ZXIvc2VydmVyLmMJMjAxMy8wNi8wNCAxMjo1OToyMQkxLjE5MgotQEAgLTExMTUsOCArMTEx NSw3IEBACi0gICBpZiAod3JpdGVidWYgIT0gTlVMTCkKLSAgICAgcmV0dXJuIC0yOwotIAotLSAg aWYgKGFubmV4WzBdICE9ICdcMCcgfHwgIXRhcmdldF9ydW5uaW5nICgpCi0tICAgICAgfHwgdGhl X3RhcmdldC0+cXhmZXJfbGlicmFyaWVzX3N2cjQgPT0gTlVMTCkKLSsgIGlmICghdGFyZ2V0X3J1 bm5pbmcgKCkgfHwgdGhlX3RhcmdldC0+cXhmZXJfbGlicmFyaWVzX3N2cjQgPT0gTlVMTCkKLSAg ICAgcmV0dXJuIC0xOwotIAotICAgcmV0dXJuIHRoZV90YXJnZXQtPnF4ZmVyX2xpYnJhcmllc19z dnI0IChhbm5leCwgcmVhZGJ1Ziwgd3JpdGVidWYsIG9mZnNldCwgbGVuKTsKLUBAIC0xNzQzLDcg KzE3NDIsOCBAQAotIAkgICAgICAgUEJVRlNJWiAtIDEpOwotIAotICAgICAgIGlmICh0aGVfdGFy Z2V0LT5xeGZlcl9saWJyYXJpZXNfc3ZyNCAhPSBOVUxMKQotLQlzdHJjYXQgKG93bl9idWYsICI7 cVhmZXI6bGlicmFyaWVzLXN2cjQ6cmVhZCsiKTsKLSsJc3RyY2F0IChvd25fYnVmLCAiO3FYZmVy OmxpYnJhcmllcy1zdnI0OnJlYWQrIgotKwkJIjthdWdtZW50ZWQtbGlicmFyaWVzLXN2cjQtcmVh ZCsiKTsKLSAgICAgICBlbHNlCi0gCXsKLSAJICAvKiBXZSBkbyBub3QgaGF2ZSBhbnkgaG9vayB0 byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBub24tU1ZSNCB0YXJnZXQKCmRpZmYgLS1naXQgYS9nZGIt ZGxvcGVuLXN0YXAtcHJvYmUtNG9mOS5wYXRjaCBiL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS00b2Y5 LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTljNTgxLi4wMDAwMDAwCi0t LSBhL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS00b2Y5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs MzUgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMy0wNi9tc2cw MDAxNS5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEzLzA2LzA0IDEyOjUzOjMzCTEu MTU2ODIKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEzLzA2LzA0IDEzOjAyOjE1CTEuMTU2ODMK LSMjIC0xLDUgKzEsOSBAQAotIDIwMTMtMDYtMDQgIEdhcnkgQmVuc29uICA8Z2JlbnNvbkByZWRo YXQuY29tPgotIAotKwkqIE5FV1M6IFVwZGF0ZS4KLSsKLSsyMDEzLTA2LTA0ICBHYXJ5IEJlbnNv biAgPGdiZW5zb25AcmVkaGF0LmNvbT4KLSsKLSAJKiBvYmpmaWxlcy5oIChpbmhpYml0X3NlY3Rp b25fbWFwX3VwZGF0ZXMpOiBOZXcgZnVuY3Rpb24KLSAJZGVjbGFyYXRpb24uCi0gCShyZXN1bWVf c2VjdGlvbl9tYXBfdXBkYXRlcyk6IExpa2V3aXNlLgotSW5kZXg6IGdkYi03LjYvZ2RiL05FV1MK LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL05FV1MJMjAxMy0wNi0xMCAxNDoyNzow Mi4wNzExODQxNTMgKzAyMDAKLSsrKyBnZGItNy42L2dkYi9ORVdTCTIwMTMtMDYtMTAgMTQ6Mjg6 MzQuMzkxMTQ1MzM5ICswMjAwCi1AQCAtNCw2ICs0LDE2IEBACi0gKiBOZXdseSBpbnN0YWxsZWQg JHByZWZpeC9iaW4vZ2NvcmUgYWN0cyBhcyBhIHNoZWxsIGludGVyZmFjZSBmb3IgdGhlCi0gICBH REIgY29tbWFuZCBnY29yZS4KLSAKLSsqIE5ldyByZW1vdGUgcGFja2V0cwotKwotK3FYZmVyOmxp YnJhcmllcy1zdnI0OnJlYWQncyBhbm5leAotKyAgVGhlIHByZXZpb3VzbHkgdW51c2VkIGFubmV4 IG9mIHRoZSBxWGZlcjpsaWJyYXJpZXMtc3ZyNDpyZWFkIHBhY2tldAotKyAgaXMgbm93IHVzZWQg dG8gc3VwcG9ydCBwYXNzaW5nIGFuIGFyZ3VtZW50IGxpc3QuICBUaGUgcmVtb3RlIHN0dWIKLSsg IHJlcG9ydHMgc3VwcG9ydCBmb3IgdGhpcyBhcmd1bWVudCBsaXN0IHRvIEdEQidzIHFTdXBwb3J0 ZWQgcXVlcnkuCi0rICBUaGUgZGVmaW5lZCBhcmd1bWVudHMgYXJlICJzdGFydCIgYW5kICJwcmV2 IiwgdXNlZCB0byByZWR1Y2Ugd29yawotKyAgbmVjZXNzYXJ5IGZvciBsaWJyYXJ5IGxpc3QgdXBk YXRpbmcsIHJlc3VsdGluZyBpbiBzaWduaWZpY2FudAotKyAgc3BlZWR1cC4KLSsKLSAqKiogQ2hh bmdlcyBpbiBHREIgNy42Ci0gCi0gKiBUYXJnZXQgcmVjb3JkIGhhcyBiZWVuIHJlbmFtZWQgdG8g cmVjb3JkLWZ1bGwuCgpkaWZmIC0tZ2l0IGEvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTVvZjkucGF0 Y2ggYi9nZGItZGxvcGVuLXN0YXAtcHJvYmUtNW9mOS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggYWFiNTk4Zi4uMDAwMDAwMAotLS0gYS9nZGItZGxvcGVuLXN0YXAtcHJvYmUt NW9mOS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3 YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTMtMDYvbXNnMDAwMTYuaHRtbAotCi0jIyMgc3JjL2dkYi9k b2MvQ2hhbmdlTG9nCTIwMTMvMDUvMjQgMDQ6NTA6MjYJMS4xNDYzCi0jIyMgc3JjL2dkYi9kb2Mv Q2hhbmdlTG9nCTIwMTMvMDYvMDQgMTM6MDc6NDUJMS4xNDY0Ci0jIyAtMSwzICsxLDEyIEBACi0r MjAxMy0wNi0wNCBHYXJ5IEJlbnNvbiAgPGdiZW5zb25AcmVkaGF0LmNvbT4KLSsKLSsJKiBnZGIu dGV4aW5mbyAoR2VuZXJhbCBRdWVyeSBQYWNrZXRzL3FTdXBwb3J0ZWQpOiBBZGRlZAotKwkicVhm ZXI6bGlicmFyaWVzLXN2cjQ6cmVhZCIgYW5kICJhdWdtZW50ZWQtbGlicmFyaWVzLXN2cjQtcmVh ZCIuCi0rCXRvIHRoZSB0YWJsZSBvZiBjdXJyZW50bHkgZGVmaW5lZCBzdHViIGZlYXR1cmVzLgot KwlBZGRlZCBhIG1vcmUgZGV0YWlsZWQgZW50cnkgZm9yICJhdWdtZW50ZWQtbGlicmFyaWVzLXN2 cjQtcmVhZCIuCi0rCShHZW5lcmFsIFF1ZXJ5IFBhY2tldHMvcVhmZXI6bGlicmFyaWVzLXN2cjQ6 cmVhZCk6IERvY3VtZW50ZWQKLSsJdGhlIGF1Z21lbnRlZCBmb3JtIG9mIHRoaXMgcGFja2V0Lgot KwotIDIwMTMtMDUtMjMgIEpvZWwgQnJvYmVja2VyICA8YnJvYmVja2VyQGFkYWNvcmUuY29tPgot IAotIAkqIGdkYi50ZXhpbmZvIChTeXN0ZW0td2lkZSBDb25maWd1cmF0aW9uIFNjcmlwdHMpOiBS ZW5hbWVzCi0tLS0gc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMy8wNS8yNCAwNDo1MDoyNgkx LjEwOTMKLSsrKyBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEzLzA2LzA0IDEzOjA3OjQ1CTEu MTA5NAotQEAgLTM4NTk0LDYgKzM4NTk0LDE2IEBACi0gQHRhYiBAc2FtcHstfQotIEB0YWIgWWVz Ci0gCi0rQGl0ZW0gQHNhbXB7cVhmZXI6bGlicmFyaWVzLXN2cjQ6cmVhZH0KLStAdGFiIE5vCi0r QHRhYiBAc2FtcHstfQotK0B0YWIgWWVzCi0rCi0rQGl0ZW0gQHNhbXB7YXVnbWVudGVkLWxpYnJh cmllcy1zdnI0LXJlYWR9Ci0rQHRhYiBObwotK0B0YWIgQHNhbXB7LX0KLStAdGFiIE5vCi0rCi0g QGl0ZW0gQHNhbXB7cVhmZXI6bWVtb3J5LW1hcDpyZWFkfQotIEB0YWIgTm8KLSBAdGFiIEBzYW1w ey19Ci1AQCAtMzg3NzAsNiArMzg3ODAsMTEgQEAKLSBUaGUgcmVtb3RlIHN0dWIgdW5kZXJzdGFu ZHMgdGhlIEBzYW1we3FYZmVyOmxpYnJhcmllcy1zdnI0OnJlYWR9IHBhY2tldAotIChAcHhyZWZ7 cVhmZXIgc3ZyNCBsaWJyYXJ5IGxpc3QgcmVhZH0pLgotIAotK0BpdGVtIGF1Z21lbnRlZC1saWJy YXJpZXMtc3ZyNC1yZWFkCi0rVGhlIHJlbW90ZSBzdHViIHVuZGVyc3RhbmRzIHRoZSBhdWdtZW50 ZWQgZm9ybSBvZiB0aGUKLStAc2FtcHtxWGZlcjpsaWJyYXJpZXMtc3ZyNDpyZWFkfSBwYWNrZXQK LSsoQHB4cmVme3FYZmVyIHN2cjQgbGlicmFyeSBsaXN0IHJlYWR9KS4KLSsKLSBAaXRlbSBxWGZl cjptZW1vcnktbWFwOnJlYWQKLSBUaGUgcmVtb3RlIHN0dWIgdW5kZXJzdGFuZHMgdGhlIEBzYW1w e3FYZmVyOm1lbW9yeS1tYXA6cmVhZH0gcGFja2V0Ci0gKEBweHJlZntxWGZlciBtZW1vcnkgbWFw IHJlYWR9KS4KLUBAIC0zOTA2NSw3ICszOTA4MCwxMCBAQAotIEBhbmNob3J7cVhmZXIgc3ZyNCBs aWJyYXJ5IGxpc3QgcmVhZH0KLSBBY2Nlc3MgdGhlIHRhcmdldCdzIGxpc3Qgb2YgbG9hZGVkIGxp YnJhcmllcyB3aGVuIHRoZSB0YXJnZXQgaXMgYW4gU1ZSNAotIHBsYXRmb3JtLiAgQHhyZWZ7TGli cmFyeSBMaXN0IEZvcm1hdCBmb3IgU1ZSNCBUYXJnZXRzfS4gIFRoZSBhbm5leCBwYXJ0Ci0tb2Yg dGhlIGdlbmVyaWMgQHNhbXB7cVhmZXJ9IHBhY2tldCBtdXN0IGJlIGVtcHR5IChAcHhyZWZ7cVhm ZXIgcmVhZH0pLgotK29mIHRoZSBnZW5lcmljIEBzYW1we3FYZmVyfSBwYWNrZXQgbXVzdCBiZSBl bXB0eSB1bmxlc3MgdGhlIHJlbW90ZQotK3N0dWIgaW5kaWNhdGVkIGl0IHN1cHBvcnRzIHRoZSBh dWdtZW50ZWQgZm9ybSBvZiB0aGlzIHBhY2tldAotK2J5IHN1cHBseWluZyBhbiBhcHByb3ByaWF0 ZSBAc2FtcHtxU3VwcG9ydGVkfSByZXNwb25zZQotKyhAcHhyZWZ7cVhmZXIgcmVhZH0sIEByZWZ7 cVN1cHBvcnRlZH0pLgotIAotIFRoaXMgcGFja2V0IGlzIG9wdGlvbmFsIGZvciBiZXR0ZXIgcGVy Zm9ybWFuY2Ugb24gU1ZSNCB0YXJnZXRzLiAgCi0gQHZhbHVle0dEQk59IHVzZXMgbWVtb3J5IHJl YWQgcGFja2V0cyB0byByZWFkIHRoZSBTVlI0IGxpYnJhcnkgbGlzdCBvdGhlcndpc2UuCi1AQCAt MzkwNzMsNiArMzkwOTEsMzAgQEAKLSBUaGlzIHBhY2tldCBpcyBub3QgcHJvYmVkIGJ5IGRlZmF1 bHQ7IHRoZSByZW1vdGUgc3R1YiBtdXN0IHJlcXVlc3QgaXQsCi0gYnkgc3VwcGx5aW5nIGFuIGFw cHJvcHJpYXRlIEBzYW1we3FTdXBwb3J0ZWR9IHJlc3BvbnNlIChAcHhyZWZ7cVN1cHBvcnRlZH0p LgotIAotK0lmIHRoZSByZW1vdGUgc3R1YiBpbmRpY2F0ZXMgaXQgc3VwcG9ydHMgdGhlIGF1Z21l bnRlZCBmb3JtIG9mIHRoaXMKLStwYWNrZXQgdGhlbiB0aGUgYW5uZXggcGFydCBvZiB0aGUgZ2Vu ZXJpYyBAc2FtcHtxWGZlcn0gcGFja2V0IG1heQotK2NvbnRhaW4gYSBzZW1pY29sb24tc2VwYXJh dGVkIGxpc3Qgb2YgQHNhbXB7QHZhcntuYW1lfT1AdmFye3ZhbHVlfX0KLSthcmd1bWVudHMuICBU aGUgY3VycmVudGx5IHN1cHBvcnRlZCBhcmd1bWVudHMgYXJlOgotKwotK0B0YWJsZSBAY29kZQot K0BpdGVtIHN0YXJ0PUB2YXJ7YWRkcmVzc30KLStBIGhleGFkZWNpbWFsIG51bWJlciBzcGVjaWZ5 aW5nIHRoZSBhZGRyZXNzIG9mIHRoZSBAc2FtcHtzdHJ1Y3QKLStsaW5rX21hcH0gdG8gc3RhcnQg cmVhZGluZyB0aGUgbGlicmFyeSBsaXN0IGZyb20uICBJZiB1bnNldCBvciB6ZXJvCi0rdGhlbiB0 aGUgZmlyc3QgQHNhbXB7c3RydWN0IGxpbmtfbWFwfSBpbiB0aGUgbGlicmFyeSBsaXN0IHdpbGwg YmUKLStjaG9zZW4gYXMgdGhlIHN0YXJ0aW5nIHBvaW50LgotKwotK0BpdGVtIHByZXY9QHZhcnth ZGRyZXNzfQotK0EgaGV4YWRlY2ltYWwgbnVtYmVyIHNwZWNpZnlpbmcgdGhlIGFkZHJlc3Mgb2Yg dGhlIEBzYW1we3N0cnVjdAotK2xpbmtfbWFwfSBpbW1lZGlhdGVseSBwcmVjZWRpbmcgdGhlIEBz YW1we3N0cnVjdCBsaW5rX21hcH0KLStzcGVjaWZpZWQgYnkgdGhlIEBzYW1we3N0YXJ0fSBhcmd1 bWVudC4gIElmIHVuc2V0IG9yIHplcm8gdGhlbgotK3RoZSByZW1vdGUgc3R1YiB3aWxsIGV4cGVj dCB0aGF0IG5vIEBzYW1we3N0cnVjdCBsaW5rX21hcH0KLStleGlzdHMgcHJpb3IgdG8gdGhlIHN0 YXJ0aW5nIHBvaW50LgotKwotK0BlbmQgdGFibGUKLSsKLStBcmd1bWVudHMgdGhhdCBhcmUgbm90 IHVuZGVyc3Rvb2QgYnkgdGhlIHJlbW90ZSBzdHViIHdpbGwgYmUgc2lsZW50bHkKLStpZ25vcmVk LgotKwotIEBpdGVtIHFYZmVyOm1lbW9yeS1tYXA6cmVhZDo6QHZhcntvZmZzZXR9LEB2YXJ7bGVu Z3RofQotIEBhbmNob3J7cVhmZXIgbWVtb3J5IG1hcCByZWFkfQotIEFjY2VzcyB0aGUgdGFyZ2V0 J3MgQGRmbnttZW1vcnktbWFwfS4gIEB4cmVme01lbW9yeSBNYXAgRm9ybWF0fS4gIFRoZQoKZGlm ZiAtLWdpdCBhL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS02b2Y5LnBhdGNoIGIvZ2RiLWRsb3Blbi1z dGFwLXByb2JlLTZvZjkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhMWMz MzguLjAwMDAwMDAKLS0tIGEvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTZvZjkucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSwxMzIgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1j dnMvMjAxMy0wNi9tc2cwMDAxNy5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEzLzA2 LzA0IDEzOjAyOjE1CTEuMTU2ODMKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEzLzA2LzA0IDEz OjEwOjUzCTEuMTU2ODQKLSMjIC0xLDUgKzEsMjEgQEAKLSAyMDEzLTA2LTA0ICBHYXJ5IEJlbnNv biAgPGdiZW5zb25AcmVkaGF0LmNvbT4KLSAKLSsJKiB0YXJnZXQuaCAodGFyZ2V0X29wcyk6IE5l dyBmaWVsZAotKwkidG9fYXVnbWVudGVkX2xpYnJhcmllc19zdnI0X3JlYWQiLgotKwkodGFyZ2V0 X2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkKTogTmV3IG1hY3JvLgotKwkqIHRhcmdldC5j ICh1cGRhdGVfY3VycmVudF90YXJnZXQpOiBIYW5kbGUKLSsJdG9fYXVnbWVudGVkX2xpYnJhcmll c19zdnI0X3JlYWQuCi0rCSogcmVtb3RlLmMgKHJlbW90ZV9zdGF0ZSk6IE5ldyBmaWVsZAotKwki YXVnbWVudGVkX2xpYnJhcmllc19zdnI0X3JlYWQiLgotKwkocmVtb3RlX2F1Z21lbnRlZF9saWJy YXJpZXNfc3ZyNF9yZWFkX2ZlYXR1cmUpOiBOZXcgZnVuY3Rpb24uCi0rCShyZW1vdGVfcHJvdG9j b2xfZmVhdHVyZXMpOiBBZGQgZW50cnkgZm9yCi0rCSJhdWdtZW50ZWQtbGlicmFyaWVzLXN2cjQt cmVhZCIuCi0rCShyZW1vdGVfYXVnbWVudGVkX2xpYnJhcmllc19zdnI0X3JlYWQpOiBOZXcgZnVu Y3Rpb24uCi0rCShpbml0X3JlbW90ZV9vcHMpOiBJbml0aWFsaXplCi0rCXJlbW90ZV9vcHMudG9f YXVnbWVudGVkX2xpYnJhcmllc19zdnI0X3JlYWQuCi0rCi0rMjAxMy0wNi0wNCAgR2FyeSBCZW5z b24gIDxnYmVuc29uQHJlZGhhdC5jb20+Ci0rCi0gCSogTkVXUzogVXBkYXRlLgotIAotIDIwMTMt MDYtMDQgIEdhcnkgQmVuc29uICA8Z2JlbnNvbkByZWRoYXQuY29tPgotLS0tIHNyYy9nZGIvcmVt b3RlLmMJMjAxMy8wNS8zMCAwOToyOToxOAkxLjU1MgotKysrIHNyYy9nZGIvcmVtb3RlLmMJMjAx My8wNi8wNCAxMzoxMDo1MwkxLjU1MwotQEAgLTM2MSw2ICszNjEsMTAgQEAKLSAgIC8qIFRydWUg aWYgdGhlIHN0dWIgY2FuIGNvbGxlY3Qgc3RyaW5ncyB1c2luZyB0cmFjZW56IGJ5dGVjb2RlLiAg Ki8KLSAgIGludCBzdHJpbmdfdHJhY2luZzsKLSAKLSsgIC8qIFRydWUgaWYgdGhlIHN0dWIgc3Vw cG9ydHMgcVhmZXI6bGlicmFyaWVzLXN2cjQ6cmVhZCB3aXRoIGEKLSsgICAgIG5vbi1lbXB0eSBh bm5leC4gICovCi0rICBpbnQgYXVnbWVudGVkX2xpYnJhcmllc19zdnI0X3JlYWQ7Ci0rCi0gICAv KiBOb256ZXJvIGlmIHRoZSB1c2VyIGhhcyBwcmVzc2VkIEN0cmwtQywgYnV0IHRoZSB0YXJnZXQg aGFzbid0Ci0gICAgICByZXNwb25kZWQgdG8gdGhhdC4gICovCi0gICBpbnQgY3RybGNfcGVuZGlu Z19wOwotQEAgLTM5NDksNiArMzk1MywxNiBAQAotICAgcnMtPnN0cmluZ190cmFjaW5nID0gKHN1 cHBvcnQgPT0gUEFDS0VUX0VOQUJMRSk7Ci0gfQotIAotK3N0YXRpYyB2b2lkCi0rcmVtb3RlX2F1 Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkX2ZlYXR1cmUKLSsgIChjb25zdCBzdHJ1Y3QgcHJv dG9jb2xfZmVhdHVyZSAqZmVhdHVyZSwKLSsgICBlbnVtIHBhY2tldF9zdXBwb3J0IHN1cHBvcnQs IGNvbnN0IGNoYXIgKnZhbHVlKQotK3sKLSsgIHN0cnVjdCByZW1vdGVfc3RhdGUgKnJzID0gZ2V0 X3JlbW90ZV9zdGF0ZSAoKTsKLSsKLSsgIHJzLT5hdWdtZW50ZWRfbGlicmFyaWVzX3N2cjRfcmVh ZCA9IChzdXBwb3J0ID09IFBBQ0tFVF9FTkFCTEUpOwotK30KLSsKLSBzdGF0aWMgc3RydWN0IHBy b3RvY29sX2ZlYXR1cmUgcmVtb3RlX3Byb3RvY29sX2ZlYXR1cmVzW10gPSB7Ci0gICB7ICJQYWNr ZXRTaXplIiwgUEFDS0VUX0RJU0FCTEUsIHJlbW90ZV9wYWNrZXRfc2l6ZSwgLTEgfSwKLSAgIHsg InFYZmVyOmF1eHY6cmVhZCIsIFBBQ0tFVF9ESVNBQkxFLCByZW1vdGVfc3VwcG9ydGVkX3BhY2tl dCwKLUBAIC0zOTU5LDYgKzM5NzMsOCBAQAotICAgICBQQUNLRVRfcVhmZXJfbGlicmFyaWVzIH0s Ci0gICB7ICJxWGZlcjpsaWJyYXJpZXMtc3ZyNDpyZWFkIiwgUEFDS0VUX0RJU0FCTEUsIHJlbW90 ZV9zdXBwb3J0ZWRfcGFja2V0LAotICAgICBQQUNLRVRfcVhmZXJfbGlicmFyaWVzX3N2cjQgfSwK LSsgIHsgImF1Z21lbnRlZC1saWJyYXJpZXMtc3ZyNC1yZWFkIiwgUEFDS0VUX0RJU0FCTEUsCi0r ICAgIHJlbW90ZV9hdWdtZW50ZWRfbGlicmFyaWVzX3N2cjRfcmVhZF9mZWF0dXJlLCAtMSB9LAot ICAgeyAicVhmZXI6bWVtb3J5LW1hcDpyZWFkIiwgUEFDS0VUX0RJU0FCTEUsIHJlbW90ZV9zdXBw b3J0ZWRfcGFja2V0LAotICAgICBQQUNLRVRfcVhmZXJfbWVtb3J5X21hcCB9LAotICAgeyAicVhm ZXI6c3B1OnJlYWQiLCBQQUNLRVRfRElTQUJMRSwgcmVtb3RlX3N1cHBvcnRlZF9wYWNrZXQsCi1A QCAtMTE0MzksNiArMTE0NTUsMTQgQEAKLSAgIHJldHVybiBidHJhY2U7Ci0gfQotIAotK3N0YXRp YyBpbnQKLStyZW1vdGVfYXVnbWVudGVkX2xpYnJhcmllc19zdnI0X3JlYWQgKHZvaWQpCi0rewot KyAgc3RydWN0IHJlbW90ZV9zdGF0ZSAqcnMgPSBnZXRfcmVtb3RlX3N0YXRlICgpOwotKwotKyAg cmV0dXJuIHJzLT5hdWdtZW50ZWRfbGlicmFyaWVzX3N2cjRfcmVhZDsKLSt9Ci0rCi0gc3RhdGlj IHZvaWQKLSBpbml0X3JlbW90ZV9vcHMgKHZvaWQpCi0gewotQEAgLTExNTYxLDYgKzExNTg1LDgg QEAKLSAgIHJlbW90ZV9vcHMudG9fZGlzYWJsZV9idHJhY2UgPSByZW1vdGVfZGlzYWJsZV9idHJh Y2U7Ci0gICByZW1vdGVfb3BzLnRvX3RlYXJkb3duX2J0cmFjZSA9IHJlbW90ZV90ZWFyZG93bl9i dHJhY2U7Ci0gICByZW1vdGVfb3BzLnRvX3JlYWRfYnRyYWNlID0gcmVtb3RlX3JlYWRfYnRyYWNl OwotKyAgcmVtb3RlX29wcy50b19hdWdtZW50ZWRfbGlicmFyaWVzX3N2cjRfcmVhZCA9Ci0rICAg IHJlbW90ZV9hdWdtZW50ZWRfbGlicmFyaWVzX3N2cjRfcmVhZDsKLSB9Ci0gCi0gLyogU2V0IHVw IHRoZSBleHRlbmRlZCByZW1vdGUgdmVjdG9yIGJ5IG1ha2luZyBhIGNvcHkgb2YgdGhlIHN0YW5k YXJkCi0tLS0gc3JjL2dkYi90YXJnZXQuYwkyMDEzLzA1LzE0IDIwOjMzOjM2CTEuMzM1Ci0rKysg c3JjL2dkYi90YXJnZXQuYwkyMDEzLzA2LzA0IDEzOjEwOjUzCTEuMzM2Ci1AQCAtNzMxLDYgKzcz MSw3IEBACi0gICAgICAgSU5IRVJJVCAodG9fdHJhY2VmcmFtZV9pbmZvLCB0KTsKLSAgICAgICBJ TkhFUklUICh0b191c2VfYWdlbnQsIHQpOwotICAgICAgIElOSEVSSVQgKHRvX2Nhbl91c2VfYWdl bnQsIHQpOwotKyAgICAgIElOSEVSSVQgKHRvX2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFk LCB0KTsKLSAgICAgICBJTkhFUklUICh0b19tYWdpYywgdCk7Ci0gICAgICAgSU5IRVJJVCAodG9f c3VwcG9ydHNfZXZhbHVhdGlvbl9vZl9icmVha3BvaW50X2NvbmRpdGlvbnMsIHQpOwotICAgICAg IElOSEVSSVQgKHRvX2Nhbl9ydW5fYnJlYWtwb2ludF9jb21tYW5kcywgdCk7Ci1AQCAtOTc1LDYg Kzk3Niw5IEBACi0gICBkZV9mYXVsdCAodG9fY2FuX3VzZV9hZ2VudCwKLSAJICAgIChpbnQgKCop ICh2b2lkKSkKLSAJICAgIHJldHVybl96ZXJvKTsKLSsgIGRlX2ZhdWx0ICh0b19hdWdtZW50ZWRf bGlicmFyaWVzX3N2cjRfcmVhZCwKLSsJICAgIChpbnQgKCopICh2b2lkKSkKLSsJICAgIHJldHVy bl96ZXJvKTsKLSAgIGRlX2ZhdWx0ICh0b19leGVjdXRpb25fZGlyZWN0aW9uLCBkZWZhdWx0X2V4 ZWN1dGlvbl9kaXJlY3Rpb24pOwotIAotICN1bmRlZiBkZV9mYXVsdAotLS0tIHNyYy9nZGIvdGFy Z2V0LmgJMjAxMy8wNS8xNCAyMDozMzozNgkxLjI2MgotKysrIHNyYy9nZGIvdGFyZ2V0LmgJMjAx My8wNi8wNCAxMzoxMDo1MwkxLjI2MwotQEAgLTk0MSw2ICs5NDEsMTAgQEAKLSAgICAgICAgKGlu Y2x1c2l2ZSkgdG8gZnVuY3Rpb24gRU5EIChleGNsdXNpdmUpLiAgKi8KLSAgICAgdm9pZCAoKnRv X2NhbGxfaGlzdG9yeV9yYW5nZSkgKFVMT05HRVNUIGJlZ2luLCBVTE9OR0VTVCBlbmQsIGludCBm bGFncyk7Ci0gCi0rICAgIC8qIE5vbnplcm8gaWYgVEFSR0VUX09CSkVDVF9MSUJSQVJJRVNfU1ZS NCBtYXkgYmUgcmVhZCB3aXRoIGEKLSsgICAgICAgbm9uLWVtcHR5IGFubmV4LiAgKi8KLSsgICAg aW50ICgqdG9fYXVnbWVudGVkX2xpYnJhcmllc19zdnI0X3JlYWQpICh2b2lkKTsKLSsKLSAgICAg aW50IHRvX21hZ2ljOwotICAgICAvKiBOZWVkIHN1Yi1zdHJ1Y3R1cmUgZm9yIHRhcmdldCBtYWNo aW5lIHJlbGF0ZWQgcmF0aGVyIHRoYW4gY29tbSByZWxhdGVkPwotICAgICAgKi8KLUBAIC0xODA5 LDYgKzE4MTMsOSBAQAotICNkZWZpbmUgdGFyZ2V0X2Nhbl91c2VfYWdlbnQoKSBcCi0gICAoKmN1 cnJlbnRfdGFyZ2V0LnRvX2Nhbl91c2VfYWdlbnQpICgpCi0gCi0rI2RlZmluZSB0YXJnZXRfYXVn bWVudGVkX2xpYnJhcmllc19zdnI0X3JlYWQoKSBcCi0rICAoKmN1cnJlbnRfdGFyZ2V0LnRvX2F1 Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkKSAoKQotKwotIC8qIENvbW1hbmQgbG9nZ2luZyBm YWNpbGl0eS4gICovCi0gCi0gI2RlZmluZSB0YXJnZXRfbG9nX2NvbW1hbmQocCkJCQkJCQlcCgpk aWZmIC0tZ2l0IGEvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTdvZjkucGF0Y2ggYi9nZGItZGxvcGVu LXN0YXAtcHJvYmUtN29mOS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWNk NWY1Ni4uMDAwMDAwMAotLS0gYS9nZGItZGxvcGVuLXN0YXAtcHJvYmUtN29mOS5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDExMDcgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dk Yi1jdnMvMjAxMy0wNi9tc2cwMDAxOC5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEz LzA2LzA0IDEzOjEwOjUzCTEuMTU2ODQKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEzLzA2LzA0 IDEzOjE3OjA1CTEuMTU2ODUKLSMjIC0xLDUgKzEsNTggQEAKLSAyMDEzLTA2LTA0ICBHYXJ5IEJl bnNvbiAgPGdiZW5zb25AcmVkaGF0LmNvbT4KLSAKLSsJKiBicmVha3BvaW50LmggKGhhbmRsZV9z b2xpYl9ldmVudCk6IE1vdmVkIGZ1bmN0aW9uIGRlY2xhcmF0aW9uCi0rCXRvIHNvbGliLmguCi0r CSogYnJlYWtwb2ludC5jIChoYW5kbGVfc29saWJfZXZlbnQpOiBNb3ZlZCBmdW5jdGlvbiB0byBz b2xpYi5jLgotKwkoYnBzdGF0X3N0b3Bfc3RhdHVzKTogUGFzcyBuZXcgYXJndW1lbnQgdG8gaGFu ZGxlX3NvbGliX2V2ZW50LgotKwkqIHNvbGliLmggKHVwZGF0ZV9zb2xpYl9icmVha3BvaW50cyk6 IE5ldyBmdW5jdGlvbiBkZWNsYXJhdGlvbi4KLSsJKGhhbmRsZV9zb2xpYl9ldmVudCk6IE1vdmVk IGZ1bmN0aW9uIGRlY2xhcmF0aW9uIGZyb20KLSsJYnJlYWtwb2ludC5oLgotKwkqIHNvbGliLmMg KHVwZGF0ZV9zb2xpYl9icmVha3BvaW50cyk6IE5ldyBmdW5jdGlvbi4KLSsJKGhhbmRsZV9zb2xp Yl9ldmVudCk6IE1vdmVkIGZ1bmN0aW9uIGZyb20gYnJlYWtwb2ludC5jLgotKwlVcGRhdGVkIHRv IGNhbGwgc29saWJfb3BzLT5oYW5kbGVfZXZlbnQgaWYgbm90IE5VTEwuCi0rCSogc29saXN0Lmgg KHRhcmdldF9zb19vcHMpOiBOZXcgZmllbGRzICJ1cGRhdGVfYnJlYWtwb2ludHMiIGFuZAotKwki aGFuZGxlX2V2ZW50Ii4KLSsJKiBpbmZydW4uYyAoc2V0X3N0b3Bfb25fc29saWJfZXZlbnRzKTog TmV3IGZ1bmN0aW9uLgotKwkoX2luaXRpYWxpemVfaW5mcnVuKTogVXNlIHRoZSBhYm92ZSBmb3Ig InNldAotKwlzdG9wLW9uLXNvbGliLWV2ZW50cyIuCi0rCShoYW5kbGVfaW5mZXJpb3JfZXZlbnQp OiBQYXNzIG5ldyBhcmd1bWVudCB0byBoYW5kbGVfc29saWJfZXZlbnQuCi0rCSogc29saWItc3Zy NC5jIChwcm9iZS5oKTogTmV3IGluY2x1ZGUuCi0rCShzdnI0X2ZyZWVfbGlicmFyeV9saXN0KTog TmV3IGZvcndhcmQgZGVjbGFyYXRpb24uCi0rCShwcm9iZV9hY3Rpb24pOiBOZXcgZW51bS4KLSsJ KHByb2JlX2luZm8pOiBOZXcgc3RydWN0LgotKwkocHJvYmVfaW5mbyk6IE5ldyBzdGF0aWMgdmFy aWFibGUuCi0rCShOVU1fUFJPQkVTKTogTmV3IGRlZmluaXRpb24uCi0rCShzdnI0X2luZm8pOiBO ZXcgZmllbGRzICJ1c2luZ194ZmVyIiwgInByb2Jlc190YWJsZSIgYW5kCi0rCSJzb2xpYl9saXN0 Ii4KLSsJKGZyZWVfcHJvYmVzX3RhYmxlKTogTmV3IGZ1bmN0aW9uLgotKwkoZnJlZV9zb2xpYl9s aXN0KTogTmV3IGZ1bmN0aW9uLgotKwkoc3ZyNF9wc3BhY2VfZGF0YV9jbGVhbnVwKTogRnJlZSBw cm9iZXMgdGFibGUgYW5kIHNvbGliIGxpc3QuCi0rCShzdnI0X2NvcHlfbGlicmFyeV9saXN0KTog TmV3IGZ1bmN0aW9uLgotKwkoc3ZyNF9jdXJyZW50X3Nvc192aWFfeGZlcl9saWJyYXJpZXMpOiBO ZXcgcGFyYW1ldGVyICJhbm5leCIuCi0rCShzdnI0X3JlYWRfc29fbGlzdCk6IE5ldyBwYXJhbWV0 ZXIgInByZXZfbG0iLgotKwkoc3ZyNF9jdXJyZW50X3Nvc19kaXJlY3QpOiBSZW5hbWVkIGZyb20g InN2cjRfY3VycmVudF9zb3MiLgotKwkoc3ZyNF9jdXJyZW50X3Nvcyk6IE5ldyBmdW5jdGlvbi4K LSsJKHByb2JlX2FuZF9hY3Rpb24pOiBOZXcgc3RydWN0LgotKwkoaGFzaF9wcm9iZV9hbmRfYWN0 aW9uKTogTmV3IGZ1bmN0aW9uLgotKwkoZXF1YWxfcHJvYmVfYW5kX2FjdGlvbik6IExpa2V3aXNl LgotKwkocmVnaXN0ZXJfc29saWJfZXZlbnRfcHJvYmUpOiBMaWtld2lzZS4KLSsJKHNvbGliX2V2 ZW50X3Byb2JlX2F0KTogTGlrZXdpc2UuCi0rCShzb2xpYl9ldmVudF9wcm9iZV9hY3Rpb24pOiBM aWtld2lzZS4KLSsJKHNvbGlzdF91cGRhdGVfZnVsbCk6IExpa2V3aXNlLgotKwkoc29saXN0X3Vw ZGF0ZV9pbmNyZW1lbnRhbCk6IExpa2V3aXNlLgotKwkoZGlzYWJsZV9wcm9iZXNfaW50ZXJmYWNl X2NsZWFudXApOiBMaWtld2lzZS4KLSsJKHN2cjRfaGFuZGxlX3NvbGliX2V2ZW50KTogTGlrZXdp c2UuCi0rCShzdnI0X3VwZGF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50KTogTGlrZXdpc2UuCi0r CShzdnI0X3VwZGF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50cyk6IExpa2V3aXNlLgotKwkoc3Zy NF9jcmVhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludHMpOiBMaWtld2lzZS4KLSsJKGVuYWJsZV9i cmVhayk6IEZyZWUgcHJvYmVzIHRhYmxlIGJlZm9yZSBjcmVhdGluZyBicmVha3BvaW50cy4KLSsJ VXNlIHN2cjRfY3JlYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnRzIHRvIGNyZWF0ZSBicmVha3Bv aW50cy4KLSsJKHN2cjRfc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2spOiBGcmVlIHRoZSBzb2xp YiBsaXN0LgotKwkoX2luaXRpYWxpemVfc3ZyNF9zb2xpYik6IEluaXRpYWxpc2UKLSsJc3ZyNF9z b19vcHMuaGFuZGxlX3NvbGliX2V2ZW50IGFuZCBzdnI0X3NvX29wcy51cGRhdGVfYnJlYWtwb2lu dHMuCi0rCi0rMjAxMy0wNi0wNCAgR2FyeSBCZW5zb24gIDxnYmVuc29uQHJlZGhhdC5jb20+Ci0r Ci0gCSogdGFyZ2V0LmggKHRhcmdldF9vcHMpOiBOZXcgZmllbGQKLSAJInRvX2F1Z21lbnRlZF9s aWJyYXJpZXNfc3ZyNF9yZWFkIi4KLSAJKHRhcmdldF9hdWdtZW50ZWRfbGlicmFyaWVzX3N2cjRf cmVhZCk6IE5ldyBtYWNyby4KLUluZGV4OiBnZGItNy42L2dkYi9icmVha3BvaW50LmgKLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL2JyZWFrcG9pbnQuaAkyMDEzLTA2LTEwIDE0OjQ0 OjM3LjQ1NTgxMjY1NiArMDIwMAotKysrIGdkYi03LjYvZ2RiL2JyZWFrcG9pbnQuaAkyMDEzLTA2 LTEwIDE0OjQ0OjM3LjcwOTgxMjU3OSArMDIwMAotQEAgLTE1NTIsOCArMTU1Miw2IEBAIGV4dGVy biBpbnQgdXNlcl9icmVha3BvaW50X3AgKHN0cnVjdCBicmUKLSAvKiBBdHRlbXB0IHRvIGRldGVy bWluZSBhcmNoaXRlY3R1cmUgb2YgbG9jYXRpb24gaWRlbnRpZmllZCBieSBTQUwuICAqLwotIGV4 dGVybiBzdHJ1Y3QgZ2RiYXJjaCAqZ2V0X3NhbF9hcmNoIChzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5l IHNhbCk7Ci0gCi0tZXh0ZXJuIHZvaWQgaGFuZGxlX3NvbGliX2V2ZW50ICh2b2lkKTsKLS0KLSBl eHRlcm4gdm9pZCBicmVha3BvaW50X2ZyZWVfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUpOwotIAotIGV4dGVybiB2b2lkIGJyZWFrcG9pbnRzX3JlbG9jYXRlIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwKLUluZGV4OiBnZGItNy42L2dkYi9pbmZydW4uYwotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjYub3JpZy9nZGIvaW5mcnVuLmMJMjAxMy0wNi0xMCAxNDo0NDozNy40Mjc4MTI2NjQg KzAyMDAKLSsrKyBnZGItNy42L2dkYi9pbmZydW4uYwkyMDEzLTA2LTEwIDE0OjQ0OjM3LjcxMTgx MjU3OSArMDIwMAotQEAgLTM3MCw2ICszNzAsMTYgQEAgc3RhdGljIHN0cnVjdCBzeW1ib2wgKnN0 ZXBfc3RhcnRfZnVuY3RpbwotIC8qIE5vbnplcm8gaWYgd2Ugd2FudCB0byBnaXZlIGNvbnRyb2wg dG8gdGhlIHVzZXIgd2hlbiB3ZSdyZSBub3RpZmllZAotICAgIG9mIHNoYXJlZCBsaWJyYXJ5IGV2 ZW50cyBieSB0aGUgZHluYW1pYyBsaW5rZXIuICAqLwotIGludCBzdG9wX29uX3NvbGliX2V2ZW50 czsKLSsKLSsvKiBFbmFibGUgb3IgZGlzYWJsZSBvcHRpb25hbCBzaGFyZWQgbGlicmFyeSBldmVu dCBicmVha3BvaW50cwotKyAgIGFzIGFwcHJvcHJpYXRlIHdoZW4gdGhlIGFib3ZlIGZsYWcgaXMg Y2hhbmdlZC4gICovCi0rCi0rc3RhdGljIHZvaWQKLStzZXRfc3RvcF9vbl9zb2xpYl9ldmVudHMg KGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSwgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMpCi0r ewotKyAgdXBkYXRlX3NvbGliX2JyZWFrcG9pbnRzICgpOwotK30KLSsKLSBzdGF0aWMgdm9pZAot IHNob3dfc3RvcF9vbl9zb2xpYl9ldmVudHMgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJv bV90dHksCi0gCQkJICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZh bHVlKQotQEAgLTczMzUsNyArNzM0NSw3IEBAIFNob3cgc3RvcHBpbmcgZm9yIHNoYXJlZCBsaWJy YXJ5IGV2ZW50cy4KLSBJZiBub256ZXJvLCBnZGIgd2lsbCBnaXZlIGNvbnRyb2wgdG8gdGhlIHVz ZXIgd2hlbiB0aGUgZHluYW1pYyBsaW5rZXJcblwKLSBub3RpZmllcyBnZGIgb2Ygc2hhcmVkIGxp YnJhcnkgZXZlbnRzLiAgVGhlIG1vc3QgY29tbW9uIGV2ZW50IG9mIGludGVyZXN0XG5cCi0gdG8g dGhlIHVzZXIgd291bGQgYmUgbG9hZGluZy91bmxvYWRpbmcgb2YgYSBuZXcgbGlicmFyeS4iKSwK LS0JCQkgICAgTlVMTCwKLSsJCQkgICAgc2V0X3N0b3Bfb25fc29saWJfZXZlbnRzLAotIAkJCSAg ICBzaG93X3N0b3Bfb25fc29saWJfZXZlbnRzLAotIAkJCSAgICAmc2V0bGlzdCwgJnNob3dsaXN0 KTsKLSAKLUluZGV4OiBnZGItNy42L2dkYi9zb2xpYi1zdnI0LmMKLT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy42Lm9yaWcvZ2RiL3NvbGliLXN2cjQuYwkyMDEzLTA2LTEwIDE0OjQ0OjM3LjM5MjgxMjY3 NSArMDIwMAotKysrIGdkYi03LjYvZ2RiL3NvbGliLXN2cjQuYwkyMDEzLTA2LTEwIDE0OjQ0OjM3 LjcxMjgxMjU3OCArMDIwMAotQEAgLTQ2LDEwICs0NiwxMiBAQAotICNpbmNsdWRlICJhdXh2Lmgi Ci0gI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKLSAjaW5jbHVkZSAiZ2RiX2JmZC5oIgotKyNpbmNs dWRlICJwcm9iZS5oIgotIAotIHN0YXRpYyBzdHJ1Y3QgbGlua19tYXBfb2Zmc2V0cyAqc3ZyNF9m ZXRjaF9saW5rX21hcF9vZmZzZXRzICh2b2lkKTsKLSBzdGF0aWMgaW50IHN2cjRfaGF2ZV9saW5r X21hcF9vZmZzZXRzICh2b2lkKTsKLSBzdGF0aWMgdm9pZCBzdnI0X3JlbG9jYXRlX21haW5fZXhl Y3V0YWJsZSAodm9pZCk7Ci0rc3RhdGljIHZvaWQgc3ZyNF9mcmVlX2xpYnJhcnlfbGlzdCAodm9p ZCAqcF9saXN0KTsKLSAKLSAvKiBMaW5rIG1hcCBpbmZvIHRvIGluY2x1ZGUgaW4gYW4gYWxsb2Nh dGVkIHNvX2xpc3QgZW50cnkuICAqLwotIAotQEAgLTEwNiw2ICsxMDgsNTUgQEAgc3RhdGljIGNv bnN0ICBjaGFyICogY29uc3QgbWFpbl9uYW1lX2xpcwotICAgTlVMTAotIH07Ci0gCi0rLyogV2hh dCB0byBkbyB3aGVuIGEgcHJvYmUgc3RvcCBvY2N1cnMuICAqLwotKwotK2VudW0gcHJvYmVfYWN0 aW9uCi0rewotKyAgLyogU29tZXRoaW5nIHdlbnQgc2VyaW91c2x5IHdyb25nLiAgU3RvcCB1c2lu ZyBwcm9iZXMgYW5kCi0rICAgICByZXZlcnQgdG8gdXNpbmcgdGhlIG9sZGVyIGludGVyZmFjZS4g ICovCi0rICBQUk9CRVNfSU5URVJGQUNFX0ZBSUxFRCwKLSsKLSsgIC8qIE5vIGFjdGlvbiBpcyBy ZXF1aXJlZC4gIFRoZSBzaGFyZWQgb2JqZWN0IGxpc3QgaXMgc3RpbGwKLSsgICAgIHZhbGlkLiAg Ki8KLSsgIERPX05PVEhJTkcsCi0rCi0rICAvKiBUaGUgc2hhcmVkIG9iamVjdCBsaXN0IHNob3Vs ZCBiZSByZWxvYWRlZCBlbnRpcmVseS4gICovCi0rICBGVUxMX1JFTE9BRCwKLSsKLSsgIC8qIEF0 dGVtcHQgdG8gaW5jcmVtZW50YWxseSB1cGRhdGUgdGhlIHNoYXJlZCBvYmplY3QgbGlzdC4gSWYK LSsgICAgIHRoZSB1cGRhdGUgZmFpbHMgb3IgaXMgbm90IHBvc3NpYmxlLCBmYWxsIGJhY2sgdG8g cmVsb2FkaW5nCi0rICAgICB0aGUgbGlzdCBpbiBmdWxsLiAgKi8KLSsgIFVQREFURV9PUl9SRUxP QUQsCi0rfTsKLSsKLSsvKiBBIHByb2JlJ3MgbmFtZSBhbmQgaXRzIGFzc29jaWF0ZWQgYWN0aW9u LiAgKi8KLSsKLStzdHJ1Y3QgcHJvYmVfaW5mbwotK3sKLSsgIC8qIFRoZSBuYW1lIG9mIHRoZSBw cm9iZS4gICovCi0rICBjb25zdCBjaGFyICpuYW1lOwotKwotKyAgLyogV2hhdCB0byBkbyB3aGVu IGEgcHJvYmUgc3RvcCBvY2N1cnMuICAqLwotKyAgZW51bSBwcm9iZV9hY3Rpb24gYWN0aW9uOwot K307Ci0rCi0rLyogQSBsaXN0IG9mIG5hbWVkIHByb2JlcyBhbmQgdGhlaXIgYXNzb2NpYXRlZCBh Y3Rpb25zLiAgSWYgYWxsCi0rICAgcHJvYmVzIGFyZSBwcmVzZW50IGluIHRoZSBkeW5hbWljIGxp bmtlciB0aGVuIHRoZSBwcm9iZXMtYmFzZWQKLSsgICBpbnRlcmZhY2Ugd2lsbCBiZSB1c2VkLiAg Ki8KLSsKLStzdGF0aWMgY29uc3Qgc3RydWN0IHByb2JlX2luZm8gcHJvYmVfaW5mb1tdID0KLSt7 Ci0rICB7ICJpbml0X3N0YXJ0IiwgRE9fTk9USElORyB9LAotKyAgeyAiaW5pdF9jb21wbGV0ZSIs IEZVTExfUkVMT0FEIH0sCi0rICB7ICJtYXBfc3RhcnQiLCBET19OT1RISU5HIH0sCi0rICB7ICJt YXBfZmFpbGVkIiwgRE9fTk9USElORyB9LAotKyAgeyAicmVsb2NfY29tcGxldGUiLCBVUERBVEVf T1JfUkVMT0FEIH0sCi0rICB7ICJ1bm1hcF9zdGFydCIsIERPX05PVEhJTkcgfSwKLSsgIHsgInVu bWFwX2NvbXBsZXRlIiwgRlVMTF9SRUxPQUQgfSwKLSt9OwotKwotKyNkZWZpbmUgTlVNX1BST0JF UyBBUlJBWV9TSVpFIChwcm9iZV9pbmZvKQotKwotIC8qIFJldHVybiBub24temVybyBpZiBHREJf U09fTkFNRSBhbmQgSU5GRVJJT1JfU09fTkFNRSByZXByZXNlbnQKLSAgICB0aGUgc2FtZSBzaGFy ZWQgbGlicmFyeS4gICovCi0gCi1AQCAtMzEzLDE3ICszNjQsNTggQEAgc3RydWN0IHN2cjRfaW5m bwotICAgQ09SRV9BRERSIGludGVycF90ZXh0X3NlY3RfaGlnaDsKLSAgIENPUkVfQUREUiBpbnRl cnBfcGx0X3NlY3RfbG93OwotICAgQ09SRV9BRERSIGludGVycF9wbHRfc2VjdF9oaWdoOwotKwot KyAgLyogTm9uemVybyBpZiB0aGUgbGlzdCBvZiBvYmplY3RzIHdhcyBsYXN0IG9idGFpbmVkIGZy b20gdGhlIHRhcmdldAotKyAgICAgdmlhIHFYZmVyOmxpYnJhcmllcy1zdnI0OnJlYWQuICAqLwot KyAgaW50IHVzaW5nX3hmZXI7Ci0rCi0rICAvKiBUYWJsZSBvZiBzdHJ1Y3QgcHJvYmVfYW5kX2Fj dGlvbiBpbnN0YW5jZXMsIHVzZWQgYnkgdGhlCi0rICAgICBwcm9iZXMtYmFzZWQgaW50ZXJmYWNl IHRvIG1hcCBicmVha3BvaW50IGFkZHJlc3NlcyB0byBwcm9iZXMKLSsgICAgIGFuZCB0aGVpciBh c3NvY2lhdGVkIGFjdGlvbnMuICBMb29rdXAgaXMgcGVyZm9ybWVkIHVzaW5nCi0rICAgICBwcm9i ZV9hbmRfYWN0aW9uLT5wcm9iZS0+YWRkcmVzcy4gICovCi0rICBodGFiX3QgcHJvYmVzX3RhYmxl OwotKwotKyAgLyogTGlzdCBvZiBvYmplY3RzIGxvYWRlZCBpbnRvIHRoZSBpbmZlcmlvciwgdXNl ZCBieSB0aGUgcHJvYmVzLQotKyAgICAgYmFzZWQgaW50ZXJmYWNlLiAgKi8KLSsgIHN0cnVjdCBz b19saXN0ICpzb2xpYl9saXN0OwotIH07Ci0gCi0gLyogUGVyLXByb2dyYW0tc3BhY2UgZGF0YSBr ZXkuICAqLwotIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvZ3JhbV9zcGFjZV9kYXRhICpzb2xpYl9z dnI0X3BzcGFjZV9kYXRhOwotIAotKy8qIEZyZWUgdGhlIHByb2JlcyB0YWJsZS4gICovCi0rCi0r c3RhdGljIHZvaWQKLStmcmVlX3Byb2Jlc190YWJsZSAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbykK LSt7Ci0rICBpZiAoaW5mby0+cHJvYmVzX3RhYmxlID09IE5VTEwpCi0rICAgIHJldHVybjsKLSsK LSsgIGh0YWJfZGVsZXRlIChpbmZvLT5wcm9iZXNfdGFibGUpOwotKyAgaW5mby0+cHJvYmVzX3Rh YmxlID0gTlVMTDsKLSt9Ci0rCi0rLyogRnJlZSB0aGUgc29saWIgbGlzdC4gICovCi0rCi0rc3Rh dGljIHZvaWQKLStmcmVlX3NvbGliX2xpc3QgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8pCi0rewot KyAgc3ZyNF9mcmVlX2xpYnJhcnlfbGlzdCAoJmluZm8tPnNvbGliX2xpc3QpOwotKyAgaW5mby0+ c29saWJfbGlzdCA9IE5VTEw7Ci0rfQotKwotIHN0YXRpYyB2b2lkCi0gc3ZyNF9wc3BhY2VfZGF0 YV9jbGVhbnVwIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlLCB2b2lkICphcmcpCi0gewot ICAgc3RydWN0IHN2cjRfaW5mbyAqaW5mbzsKLSAKLSAgIGluZm8gPSBwcm9ncmFtX3NwYWNlX2Rh dGEgKHBzcGFjZSwgc29saWJfc3ZyNF9wc3BhY2VfZGF0YSk7Ci0rICBpZiAoaW5mbyA9PSBOVUxM KQotKyAgICByZXR1cm47Ci0rCi0rICBmcmVlX3Byb2Jlc190YWJsZSAoaW5mbyk7Ci0rICBmcmVl X3NvbGliX2xpc3QgKGluZm8pOwotKwotICAgeGZyZWUgKGluZm8pOwotIH0KLSAKLUBAIC05ODIs NiArMTA3NCwzNCBAQCBzdnI0X2ZyZWVfbGlicmFyeV9saXN0ICh2b2lkICpwX2xpc3QpCi0gICAg IH0KLSB9Ci0gCi0rLyogQ29weSBsaWJyYXJ5IGxpc3QuICAqLwotKwotK3N0YXRpYyBzdHJ1Y3Qg c29fbGlzdCAqCi0rc3ZyNF9jb3B5X2xpYnJhcnlfbGlzdCAoc3RydWN0IHNvX2xpc3QgKnNyYykK LSt7Ci0rICBzdHJ1Y3Qgc29fbGlzdCAqZHN0ID0gTlVMTDsKLSsgIHN0cnVjdCBzb19saXN0ICoq bGluayA9ICZkc3Q7Ci0rCi0rICB3aGlsZSAoc3JjICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICBz dHJ1Y3Qgc29fbGlzdCAqbmV3OwotKwotKyAgICAgIG5ldyA9IHhtYWxsb2MgKHNpemVvZiAoc3Ry dWN0IHNvX2xpc3QpKTsKLSsgICAgICBtZW1jcHkgKG5ldywgc3JjLCBzaXplb2YgKHN0cnVjdCBz b19saXN0KSk7Ci0rCi0rICAgICAgbmV3LT5sbV9pbmZvID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1 Y3QgbG1faW5mbykpOwotKyAgICAgIG1lbWNweSAobmV3LT5sbV9pbmZvLCBzcmMtPmxtX2luZm8s IHNpemVvZiAoc3RydWN0IGxtX2luZm8pKTsKLSsKLSsgICAgICBuZXctPm5leHQgPSBOVUxMOwot KyAgICAgICpsaW5rID0gbmV3OwotKyAgICAgIGxpbmsgPSAmbmV3LT5uZXh0OwotKwotKyAgICAg IHNyYyA9IHNyYy0+bmV4dDsKLSsgICAgfQotKwotKyAgcmV0dXJuIGRzdDsKLSt9Ci0rCi0gI2lm ZGVmIEhBVkVfTElCRVhQQVQKLSAKLSAjaW5jbHVkZSAieG1sLXN1cHBvcnQuaCIKLUBAIC0xMDk3 LDIzICsxMjE3LDMwIEBAIHN2cjRfcGFyc2VfbGlicmFyaWVzIChjb25zdCBjaGFyICpkb2N1bWUK LSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiBBdHRlbXB0IHRvIGdldCBzb19saXN0IGZyb20gdGFy Z2V0IHZpYSBxWGZlcjpsaWJyYXJpZXM6cmVhZCBwYWNrZXQuCi0rLyogQXR0ZW1wdCB0byBnZXQg c29fbGlzdCBmcm9tIHRhcmdldCB2aWEgcVhmZXI6bGlicmFyaWVzLXN2cjQ6cmVhZCBwYWNrZXQu Ci0gCi0gICAgUmV0dXJuIDAgaWYgcGFja2V0IG5vdCBzdXBwb3J0ZWQsICpTT19MSVNUX1JFVFVS TiBpcyBub3QgbW9kaWZpZWQgaW4gc3VjaAotICAgIGNhc2UuICBSZXR1cm4gMSBpZiAqU09fTElT VF9SRVRVUk4gY29udGFpbnMgdGhlIGxpYnJhcnkgbGlzdCwgaXQgbWF5IGJlCi0tICAgZW1wdHks IGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZnJlZWluZyBhbGwgaXRzIGVudHJpZXMuICAqLwot KyAgIGVtcHR5LCBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGZyZWVpbmcgYWxsIGl0cyBlbnRy aWVzLgotKwotKyAgIE5vdGUgdGhhdCBBTk5FWCBtdXN0IGJlIE5VTEwgaWYgdGhlIHJlbW90ZSBk b2VzIG5vdCBleHBsaWNpdGx5IGFsbG93Ci0rICAgcVhmZXI6bGlicmFyaWVzLXN2cjQ6cmVhZCBw YWNrZXRzIHdpdGggbm9uLWVtcHR5IGFubmV4ZXMuICBTdXBwb3J0IGZvcgotKyAgIHRoaXMgY2Fu IGJlIGNoZWNrZWQgdXNpbmcgdGFyZ2V0X2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkICgp LiAgKi8KLSAKLSBzdGF0aWMgaW50Ci0tc3ZyNF9jdXJyZW50X3Nvc192aWFfeGZlcl9saWJyYXJp ZXMgKHN0cnVjdCBzdnI0X2xpYnJhcnlfbGlzdCAqbGlzdCkKLStzdnI0X2N1cnJlbnRfc29zX3Zp YV94ZmVyX2xpYnJhcmllcyAoc3RydWN0IHN2cjRfbGlicmFyeV9saXN0ICpsaXN0LAotKwkJCQkg ICAgIGNvbnN0IGNoYXIgKmFubmV4KQotIHsKLSAgIGNoYXIgKnN2cjRfbGlicmFyeV9kb2N1bWVu dDsKLSAgIGludCByZXN1bHQ7Ci0gICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKLSAKLSsgIGdk Yl9hc3NlcnQgKGFubmV4ID09IE5VTEwgfHwgdGFyZ2V0X2F1Z21lbnRlZF9saWJyYXJpZXNfc3Zy NF9yZWFkICgpKTsKLSsKLSAgIC8qIEZldGNoIHRoZSBsaXN0IG9mIHNoYXJlZCBsaWJyYXJpZXMu ICAqLwotICAgc3ZyNF9saWJyYXJ5X2RvY3VtZW50ID0gdGFyZ2V0X3JlYWRfc3RyYWxsb2MgKCZj dXJyZW50X3RhcmdldCwKLSAJCQkJCQlUQVJHRVRfT0JKRUNUX0xJQlJBUklFU19TVlI0LAotLQkJ CQkJCU5VTEwpOwotKwkJCQkJCWFubmV4KTsKLSAgIGlmIChzdnI0X2xpYnJhcnlfZG9jdW1lbnQg PT0gTlVMTCkKLSAgICAgcmV0dXJuIDA7Ci0gCi1AQCAtMTEyNyw3ICsxMjU0LDggQEAgc3ZyNF9j dXJyZW50X3Nvc192aWFfeGZlcl9saWJyYXJpZXMgKHN0cgotICNlbHNlCi0gCi0gc3RhdGljIGlu dAotLXN2cjRfY3VycmVudF9zb3NfdmlhX3hmZXJfbGlicmFyaWVzIChzdHJ1Y3Qgc3ZyNF9saWJy YXJ5X2xpc3QgKmxpc3QpCi0rc3ZyNF9jdXJyZW50X3Nvc192aWFfeGZlcl9saWJyYXJpZXMgKHN0 cnVjdCBzdnI0X2xpYnJhcnlfbGlzdCAqbGlzdCwKLSsJCQkJICAgICBjb25zdCBjaGFyICphbm5l eCkKLSB7Ci0gICByZXR1cm4gMDsKLSB9Ci1AQCAtMTE2MSwxNSArMTI4OSwxOSBAQCBzdnI0X2Rl ZmF1bHRfc29zICh2b2lkKQotICAgcmV0dXJuIG5ldzsKLSB9Ci0gCi0tLyogUmVhZCB0aGUgd2hv bGUgaW5mZXJpb3IgbGlicmFyaWVzIGNoYWluIHN0YXJ0aW5nIGF0IGFkZHJlc3MgTE0uICBBZGQg dGhlCi0tICAgZW50cmllcyB0byB0aGUgdGFpbCByZWZlcmVuY2VkIGJ5IExJTktfUFRSX1BUUi4g IElnbm9yZSB0aGUgZmlyc3QgZW50cnkgaWYKLS0gICBJR05PUkVfRklSU1QgYW5kIHNldCBnbG9i YWwgTUFJTl9MTV9BRERSIGFjY29yZGluZyB0byBpdC4gICovCi0rLyogUmVhZCB0aGUgd2hvbGUg aW5mZXJpb3IgbGlicmFyaWVzIGNoYWluIHN0YXJ0aW5nIGF0IGFkZHJlc3MgTE0uCi0rICAgRXhw ZWN0IHRoZSBmaXJzdCBlbnRyeSBpbiB0aGUgY2hhaW4ncyBwcmV2aW91cyBlbnRyeSB0byBiZSBQ UkVWX0xNLgotKyAgIEFkZCB0aGUgZW50cmllcyB0byB0aGUgdGFpbCByZWZlcmVuY2VkIGJ5IExJ TktfUFRSX1BUUi4gIElnbm9yZSB0aGUKLSsgICBmaXJzdCBlbnRyeSBpZiBJR05PUkVfRklSU1Qg YW5kIHNldCBnbG9iYWwgTUFJTl9MTV9BRERSIGFjY29yZGluZwotKyAgIHRvIGl0LiAgUmV0dXJu cyBub256ZXJvIHVwb24gc3VjY2Vzcy4gIElmIHplcm8gaXMgcmV0dXJuZWQgdGhlCi0rICAgZW50 cmllcyBzdG9yZWQgdG8gTElOS19QVFJfUFRSIGFyZSBzdGlsbCB2YWxpZCBhbHRob3VnaCB0aGV5 IG1heQotKyAgIHJlcHJlc2VudCBvbmx5IHBhcnQgb2YgdGhlIGluZmVyaW9yIGxpYnJhcnkgbGlz dC4gICovCi0gCi0tc3RhdGljIHZvaWQKLS1zdnI0X3JlYWRfc29fbGlzdCAoQ09SRV9BRERSIGxt LCBzdHJ1Y3Qgc29fbGlzdCAqKipsaW5rX3B0cl9wdHIsCi0tCQkgICBpbnQgaWdub3JlX2ZpcnN0 KQotK3N0YXRpYyBpbnQKLStzdnI0X3JlYWRfc29fbGlzdCAoQ09SRV9BRERSIGxtLCBDT1JFX0FE RFIgcHJldl9sbSwKLSsJCSAgIHN0cnVjdCBzb19saXN0ICoqKmxpbmtfcHRyX3B0ciwgaW50IGln bm9yZV9maXJzdCkKLSB7Ci0tICBDT1JFX0FERFIgcHJldl9sbSA9IDAsIG5leHRfbG07Ci0rICBD T1JFX0FERFIgbmV4dF9sbTsKLSAKLSAgIGZvciAoOyBsbSAhPSAwOyBwcmV2X2xtID0gbG0sIGxt ID0gbmV4dF9sbSkKLSAgICAgewotQEAgLTExODUsNyArMTMxNyw3IEBAIHN2cjRfcmVhZF9zb19s aXN0IChDT1JFX0FERFIgbG0sIHN0cnVjdAotICAgICAgIGlmIChuZXctPmxtX2luZm8gPT0gTlVM TCkKLSAJewotIAkgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwotLQkgIGJyZWFrOwotKwkgIHJl dHVybiAwOwotIAl9Ci0gCi0gICAgICAgbmV4dF9sbSA9IG5ldy0+bG1faW5mby0+bF9uZXh0Owot QEAgLTExOTYsNyArMTMyOCw3IEBAIHN2cjRfcmVhZF9zb19saXN0IChDT1JFX0FERFIgbG0sIHN0 cnVjdAotIAkJICAgcGFkZHJlc3MgKHRhcmdldF9nZGJhcmNoICgpLCBwcmV2X2xtKSwKLSAJCSAg IHBhZGRyZXNzICh0YXJnZXRfZ2RiYXJjaCAoKSwgbmV3LT5sbV9pbmZvLT5sX3ByZXYpKTsKLSAJ ICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKLS0JICBicmVhazsKLSsJICByZXR1cm4gMDsKLSAJ fQotIAotICAgICAgIC8qIEZvciBTVlI0IHZlcnNpb25zLCB0aGUgZmlyc3QgZW50cnkgaW4gdGhl IGxpbmsgbWFwIGlzIGZvciB0aGUKLUBAIC0xMjkxLDE3ICsxNDIzLDIxIEBAIHN2cjRfcmVhZF9z b19saXN0IChDT1JFX0FERFIgbG0sIHN0cnVjdAotICAgICAgICoqbGlua19wdHJfcHRyID0gbmV3 OwotICAgICAgICpsaW5rX3B0cl9wdHIgPSAmbmV3LT5uZXh0OwotICAgICB9Ci0rCi0rICByZXR1 cm4gMTsKLSB9Ci0gCi0tLyogSW1wbGVtZW50IHRoZSAiY3VycmVudF9zb3MiIHRhcmdldF9zb19v cHMgbWV0aG9kLiAgKi8KLSsvKiBSZWFkIHRoZSBmdWxsIGxpc3Qgb2YgY3VycmVudGx5IGxvYWRl ZCBzaGFyZWQgb2JqZWN0cyBkaXJlY3RseQotKyAgIGZyb20gdGhlIGluZmVyaW9yLCB3aXRob3V0 IHJlZmVycmluZyB0byBhbnkgbGlicmFyaWVzIHJlYWQgYW5kCi0rICAgc3RvcmVkIGJ5IHRoZSBw cm9iZXMgaW50ZXJmYWNlLiAgSGFuZGxlIHNwZWNpYWwgY2FzZXMgcmVsYXRpbmcKLSsgICB0byB0 aGUgZmlyc3QgZWxlbWVudHMgb2YgdGhlIGxpc3QuICAqLwotIAotIHN0YXRpYyBzdHJ1Y3Qgc29f bGlzdCAqCi0tc3ZyNF9jdXJyZW50X3NvcyAodm9pZCkKLStzdnI0X2N1cnJlbnRfc29zX2RpcmVj dCAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbykKLSB7Ci0gICBDT1JFX0FERFIgbG07Ci0gICBzdHJ1 Y3Qgc29fbGlzdCAqaGVhZCA9IE5VTEw7Ci0gICBzdHJ1Y3Qgc29fbGlzdCAqKmxpbmtfcHRyID0g JmhlYWQ7Ci0tICBzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvOwotICAgc3RydWN0IGNsZWFudXAgKmJh Y2tfdG87Ci0gICBpbnQgaWdub3JlX2ZpcnN0OwotICAgc3RydWN0IHN2cjRfbGlicmFyeV9saXN0 IGxpYnJhcnlfbGlzdDsKLUBAIC0xMzE0LDE5ICsxNDUwLDE2IEBAIHN2cjRfY3VycmVudF9zb3Mg KHZvaWQpCi0gICAgICBVbmZvcnR1bmF0ZWx5IHN0YXRpY2FsbHkgbGlua2VkIGluZmVyaW9ycyB3 aWxsIGFsc28gZmFsbCBiYWNrIHRocm91Z2ggdGhpcwotICAgICAgc3Vib3B0aW1hbCBjb2RlIHBh dGguICAqLwotIAotLSAgaWYgKHN2cjRfY3VycmVudF9zb3NfdmlhX3hmZXJfbGlicmFyaWVzICgm bGlicmFyeV9saXN0KSkKLSsgIGluZm8tPnVzaW5nX3hmZXIgPSBzdnI0X2N1cnJlbnRfc29zX3Zp YV94ZmVyX2xpYnJhcmllcyAoJmxpYnJhcnlfbGlzdCwKLSsJCQkJCQkJICBOVUxMKTsKLSsgIGlm IChpbmZvLT51c2luZ194ZmVyKQotICAgICB7Ci0gICAgICAgaWYgKGxpYnJhcnlfbGlzdC5tYWlu X2xtKQotLQl7Ci0tCSAgaW5mbyA9IGdldF9zdnI0X2luZm8gKCk7Ci0tCSAgaW5mby0+bWFpbl9s bV9hZGRyID0gbGlicmFyeV9saXN0Lm1haW5fbG07Ci0tCX0KLSsJaW5mby0+bWFpbl9sbV9hZGRy ID0gbGlicmFyeV9saXN0Lm1haW5fbG07Ci0gCi0gICAgICAgcmV0dXJuIGxpYnJhcnlfbGlzdC5o ZWFkID8gbGlicmFyeV9saXN0LmhlYWQgOiBzdnI0X2RlZmF1bHRfc29zICgpOwotICAgICB9Ci0g Ci0tICBpbmZvID0gZ2V0X3N2cjRfaW5mbyAoKTsKLS0KLSAgIC8qIEFsd2F5cyBsb2NhdGUgdGhl IGRlYnVnIHN0cnVjdCwgaW4gY2FzZSBpdCBoYXMgbW92ZWQuICAqLwotICAgaW5mby0+ZGVidWdf YmFzZSA9IDA7Ci0gICBsb2NhdGVfYmFzZSAoaW5mbyk7Ci1AQCAtMTM0OSw3ICsxNDgyLDcgQEAg c3ZyNF9jdXJyZW50X3NvcyAodm9pZCkKLSAgICAgIGBzdHJ1Y3Qgc29fbGlzdCcgbm9kZXMuICAq LwotICAgbG0gPSBzb2xpYl9zdnI0X3JfbWFwIChpbmZvKTsKLSAgIGlmIChsbSkKLS0gICAgc3Zy NF9yZWFkX3NvX2xpc3QgKGxtLCAmbGlua19wdHIsIGlnbm9yZV9maXJzdCk7Ci0rICAgIHN2cjRf cmVhZF9zb19saXN0IChsbSwgMCwgJmxpbmtfcHRyLCBpZ25vcmVfZmlyc3QpOwotIAotICAgLyog T24gU29sYXJpcywgdGhlIGR5bmFtaWMgbGlua2VyIGlzIG5vdCBpbiB0aGUgbm9ybWFsIGxpc3Qg b2YKLSAgICAgIHNoYXJlZCBvYmplY3RzLCBzbyBtYWtlIHN1cmUgd2UgcGljayBpdCB1cCB0b28u ICBIYXZpbmcKLUBAIC0xMzU3LDcgKzE0OTAsNyBAQCBzdnI0X2N1cnJlbnRfc29zICh2b2lkKQot ICAgICAgZm9yIHNraXBwaW5nIGR5bmFtaWMgbGlua2VyIHJlc29sdmVyIGNvZGUuICAqLwotICAg bG0gPSBzb2xpYl9zdnI0X3JfbGRzb21hcCAoaW5mbyk7Ci0gICBpZiAobG0pCi0tICAgIHN2cjRf cmVhZF9zb19saXN0IChsbSwgJmxpbmtfcHRyLCAwKTsKLSsgICAgc3ZyNF9yZWFkX3NvX2xpc3Qg KGxtLCAwLCAmbGlua19wdHIsIDApOwotIAotICAgZGlzY2FyZF9jbGVhbnVwcyAoYmFja190byk7 Ci0gCi1AQCAtMTM2Nyw2ICsxNTAwLDIyIEBAIHN2cjRfY3VycmVudF9zb3MgKHZvaWQpCi0gICBy ZXR1cm4gaGVhZDsKLSB9Ci0gCi0rLyogSW1wbGVtZW50IHRoZSAiY3VycmVudF9zb3MiIHRhcmdl dF9zb19vcHMgbWV0aG9kLiAgKi8KLSsKLStzdGF0aWMgc3RydWN0IHNvX2xpc3QgKgotK3N2cjRf Y3VycmVudF9zb3MgKHZvaWQpCi0rewotKyAgc3RydWN0IHN2cjRfaW5mbyAqaW5mbyA9IGdldF9z dnI0X2luZm8gKCk7Ci0rCi0rICAvKiBJZiB0aGUgc29saWIgbGlzdCBoYXMgYmVlbiByZWFkIGFu ZCBzdG9yZWQgYnkgdGhlIHByb2JlcwotKyAgICAgaW50ZXJmYWNlIHRoZW4gd2UgcmV0dXJuIGEg Y29weSBvZiB0aGUgc3RvcmVkIGxpc3QuICAqLwotKyAgaWYgKGluZm8tPnNvbGliX2xpc3QgIT0g TlVMTCkKLSsgICAgcmV0dXJuIHN2cjRfY29weV9saWJyYXJ5X2xpc3QgKGluZm8tPnNvbGliX2xp c3QpOwotKwotKyAgLyogT3RoZXJ3aXNlIG9idGFpbiB0aGUgc29saWIgbGlzdCBkaXJlY3RseSBm cm9tIHRoZSBpbmZlcmlvci4gICovCi0rICByZXR1cm4gc3ZyNF9jdXJyZW50X3Nvc19kaXJlY3Qg KGluZm8pOwotK30KLSsKLSAvKiBHZXQgdGhlIGFkZHJlc3Mgb2YgdGhlIGxpbmtfbWFwIGZvciBh IGdpdmVuIE9CSkZJTEUuICAqLwotIAotIENPUkVfQUREUgotQEAgLTE0NDksNiArMTU5OCw0NzYg QEAgZXhlY19lbnRyeV9wb2ludCAoc3RydWN0IGJmZCAqYWJmZCwgc3RydQotICAgcmV0dXJuIGdk YmFyY2hfYWRkcl9iaXRzX3JlbW92ZSAodGFyZ2V0X2dkYmFyY2ggKCksIGFkZHIpOwotIH0KLSAK LSsvKiBBIHByb2JlIGFuZCBpdHMgYXNzb2NpYXRlZCBhY3Rpb24uICAqLwotKwotK3N0cnVjdCBw cm9iZV9hbmRfYWN0aW9uCi0rewotKyAgLyogVGhlIHByb2JlLiAgKi8KLSsgIHN0cnVjdCBwcm9i ZSAqcHJvYmU7Ci0rCi0rICAvKiBUaGUgYWN0aW9uLiAgKi8KLSsgIGVudW0gcHJvYmVfYWN0aW9u IGFjdGlvbjsKLSt9OwotKwotKy8qIFJldHVybnMgYSBoYXNoIGNvZGUgZm9yIHRoZSBwcm9iZV9h bmRfYWN0aW9uIHJlZmVyZW5jZWQgYnkgcC4gICovCi0rCi0rc3RhdGljIGhhc2h2YWxfdAotK2hh c2hfcHJvYmVfYW5kX2FjdGlvbiAoY29uc3Qgdm9pZCAqcCkKLSt7Ci0rICBjb25zdCBzdHJ1Y3Qg cHJvYmVfYW5kX2FjdGlvbiAqcGEgPSBwOwotKwotKyAgcmV0dXJuIChoYXNodmFsX3QpIHBhLT5w cm9iZS0+YWRkcmVzczsKLSt9Ci0rCi0rLyogUmV0dXJucyBub24temVybyBpZiB0aGUgcHJvYmVf YW5kX2FjdGlvbnMgcmVmZXJlbmNlZCBieSBwMSBhbmQgcDIKLSsgICBhcmUgZXF1YWwuICAqLwot KwotK3N0YXRpYyBpbnQKLStlcXVhbF9wcm9iZV9hbmRfYWN0aW9uIChjb25zdCB2b2lkICpwMSwg Y29uc3Qgdm9pZCAqcDIpCi0rewotKyAgY29uc3Qgc3RydWN0IHByb2JlX2FuZF9hY3Rpb24gKnBh MSA9IHAxOwotKyAgY29uc3Qgc3RydWN0IHByb2JlX2FuZF9hY3Rpb24gKnBhMiA9IHAyOwotKwot KyAgcmV0dXJuIHBhMS0+cHJvYmUtPmFkZHJlc3MgPT0gcGEyLT5wcm9iZS0+YWRkcmVzczsKLSt9 Ci0rCi0rLyogUmVnaXN0ZXIgYSBzb2xpYiBldmVudCBwcm9iZSBhbmQgaXRzIGFzc29jaWF0ZWQg YWN0aW9uIGluIHRoZQotKyAgIHByb2JlcyB0YWJsZS4gICovCi0rCi0rc3RhdGljIHZvaWQKLSty ZWdpc3Rlcl9zb2xpYl9ldmVudF9wcm9iZSAoc3RydWN0IHByb2JlICpwcm9iZSwgZW51bSBwcm9i ZV9hY3Rpb24gYWN0aW9uKQotK3sKLSsgIHN0cnVjdCBzdnI0X2luZm8gKmluZm8gPSBnZXRfc3Zy NF9pbmZvICgpOwotKyAgc3RydWN0IHByb2JlX2FuZF9hY3Rpb24gbG9va3VwLCAqcGE7Ci0rICB2 b2lkICoqc2xvdDsKLSsKLSsgIC8qIENyZWF0ZSB0aGUgcHJvYmVzIHRhYmxlLCBpZiBuZWNlc3Nh cnkuICAqLwotKyAgaWYgKGluZm8tPnByb2Jlc190YWJsZSA9PSBOVUxMKQotKyAgICBpbmZvLT5w cm9iZXNfdGFibGUgPSBodGFiX2NyZWF0ZV9hbGxvYyAoMSwgaGFzaF9wcm9iZV9hbmRfYWN0aW9u LAotKwkJCQkJICAgIGVxdWFsX3Byb2JlX2FuZF9hY3Rpb24sCi0rCQkJCQkgICAgeGZyZWUsIHhj YWxsb2MsIHhmcmVlKTsKLSsKLSsgIGxvb2t1cC5wcm9iZSA9IHByb2JlOwotKyAgc2xvdCA9IGh0 YWJfZmluZF9zbG90IChpbmZvLT5wcm9iZXNfdGFibGUsICZsb29rdXAsIElOU0VSVCk7Ci0rICBn ZGJfYXNzZXJ0ICgqc2xvdCA9PSBIVEFCX0VNUFRZX0VOVFJZKTsKLSsKLSsgIHBhID0gWENORVcg KHN0cnVjdCBwcm9iZV9hbmRfYWN0aW9uKTsKLSsgIHBhLT5wcm9iZSA9IHByb2JlOwotKyAgcGEt PmFjdGlvbiA9IGFjdGlvbjsKLSsKLSsgICpzbG90ID0gcGE7Ci0rfQotKwotKy8qIEdldCB0aGUg c29saWIgZXZlbnQgcHJvYmUgYXQgdGhlIHNwZWNpZmllZCBsb2NhdGlvbiwgYW5kIHRoZQotKyAg IGFjdGlvbiBhc3NvY2lhdGVkIHdpdGggaXQuICBSZXR1cm5zIE5VTEwgaWYgbm8gc29saWIgZXZl bnQgcHJvYmUKLSsgICB3YXMgZm91bmQuICAqLwotKwotK3N0YXRpYyBzdHJ1Y3QgcHJvYmVfYW5k X2FjdGlvbiAqCi0rc29saWJfZXZlbnRfcHJvYmVfYXQgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8s IENPUkVfQUREUiBhZGRyZXNzKQotK3sKLSsgIHN0cnVjdCBwcm9iZSBsb29rdXBfcHJvYmU7Ci0r ICBzdHJ1Y3QgcHJvYmVfYW5kX2FjdGlvbiBsb29rdXA7Ci0rICB2b2lkICoqc2xvdDsKLSsKLSsg IGxvb2t1cF9wcm9iZS5hZGRyZXNzID0gYWRkcmVzczsKLSsgIGxvb2t1cC5wcm9iZSA9ICZsb29r dXBfcHJvYmU7Ci0rICBzbG90ID0gaHRhYl9maW5kX3Nsb3QgKGluZm8tPnByb2Jlc190YWJsZSwg Jmxvb2t1cCwgTk9fSU5TRVJUKTsKLSsKLSsgIGlmIChzbG90ID09IE5VTEwpCi0rICAgIHJldHVy biBOVUxMOwotKwotKyAgcmV0dXJuIChzdHJ1Y3QgcHJvYmVfYW5kX2FjdGlvbiAqKSAqc2xvdDsK LSt9Ci0rCi0rLyogRGVjaWRlIHdoYXQgYWN0aW9uIHRvIHRha2Ugd2hlbiB0aGUgc3BlY2lmaWVk IHNvbGliIGV2ZW50IHByb2JlIGlzCi0rICAgaGl0LiAgKi8KLSsKLStzdGF0aWMgZW51bSBwcm9i ZV9hY3Rpb24KLStzb2xpYl9ldmVudF9wcm9iZV9hY3Rpb24gKHN0cnVjdCBwcm9iZV9hbmRfYWN0 aW9uICpwYSkKLSt7Ci0rICBlbnVtIHByb2JlX2FjdGlvbiBhY3Rpb247Ci0rICB1bnNpZ25lZCBw cm9iZV9hcmdjOwotKwotKyAgYWN0aW9uID0gcGEtPmFjdGlvbjsKLSsgIGlmIChhY3Rpb24gPT0g RE9fTk9USElORyB8fCBhY3Rpb24gPT0gUFJPQkVTX0lOVEVSRkFDRV9GQUlMRUQpCi0rICAgIHJl dHVybiBhY3Rpb247Ci0rCi0rICBnZGJfYXNzZXJ0IChhY3Rpb24gPT0gRlVMTF9SRUxPQUQgfHwg YWN0aW9uID09IFVQREFURV9PUl9SRUxPQUQpOwotKwotKyAgLyogQ2hlY2sgdGhhdCBhbiBhcHBy b3ByaWF0ZSBudW1iZXIgb2YgYXJndW1lbnRzIGhhcyBiZWVuIHN1cHBsaWVkLgotKyAgICAgV2Ug ZXhwZWN0OgotKyAgICAgICBhcmcwOiBMbWlkX3QgbG1pZCAobWFuZGF0b3J5KQotKyAgICAgICBh cmcxOiBzdHJ1Y3Qgcl9kZWJ1ZyAqZGVidWdfYmFzZSAobWFuZGF0b3J5KQotKyAgICAgICBhcmcy OiBzdHJ1Y3QgbGlua19tYXAgKm5ldyAob3B0aW9uYWwsIGZvciBpbmNyZW1lbnRhbCB1cGRhdGVz KSAgKi8KLSsgIHByb2JlX2FyZ2MgPSBnZXRfcHJvYmVfYXJndW1lbnRfY291bnQgKHBhLT5wcm9i ZSk7Ci0rICBpZiAocHJvYmVfYXJnYyA9PSAyKQotKyAgICBhY3Rpb24gPSBGVUxMX1JFTE9BRDsK LSsgIGVsc2UgaWYgKHByb2JlX2FyZ2MgPCAyKQotKyAgICBhY3Rpb24gPSBQUk9CRVNfSU5URVJG QUNFX0ZBSUxFRDsKLSsKLSsgIHJldHVybiBhY3Rpb247Ci0rfQotKwotKy8qIFBvcHVsYXRlIHRo ZSBzaGFyZWQgb2JqZWN0IGxpc3QgYnkgcmVhZGluZyB0aGUgZW50aXJlIGxpc3Qgb2YKLSsgICBz aGFyZWQgb2JqZWN0cyBmcm9tIHRoZSBpbmZlcmlvci4gIEhhbmRsZSBzcGVjaWFsIGNhc2VzIHJl bGF0aW5nCi0rICAgdG8gdGhlIGZpcnN0IGVsZW1lbnRzIG9mIHRoZSBsaXN0LiAgUmV0dXJucyBu b256ZXJvIG9uIHN1Y2Nlc3MuICAqLwotKwotK3N0YXRpYyBpbnQKLStzb2xpc3RfdXBkYXRlX2Z1 bGwgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8pCi0rewotKyAgZnJlZV9zb2xpYl9saXN0IChpbmZv KTsKLSsgIGluZm8tPnNvbGliX2xpc3QgPSBzdnI0X2N1cnJlbnRfc29zX2RpcmVjdCAoaW5mbyk7 Ci0rCi0rICByZXR1cm4gMTsKLSt9Ci0rCi0rLyogVXBkYXRlIHRoZSBzaGFyZWQgb2JqZWN0IGxp c3Qgc3RhcnRpbmcgZnJvbSB0aGUgbGluay1tYXAgZW50cnkKLSsgICBwYXNzZWQgYnkgdGhlIGxp bmtlciBpbiB0aGUgcHJvYmUncyB0aGlyZCBhcmd1bWVudC4gIFJldHVybnMKLSsgICBub256ZXJv IGlmIHRoZSBsaXN0IHdhcyBzdWNjZXNzZnVsbHkgdXBkYXRlZCwgb3IgemVybyB0byBpbmRpY2F0 ZQotKyAgIGZhaWx1cmUuICAqLwotKwotK3N0YXRpYyBpbnQKLStzb2xpc3RfdXBkYXRlX2luY3Jl bWVudGFsIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvLCBDT1JFX0FERFIgbG0pCi0rewotKyAgc3Ry dWN0IHNvX2xpc3QgKnRhaWw7Ci0rICBDT1JFX0FERFIgcHJldl9sbTsKLSsKLSsgIC8qIHN2cjRf Y3VycmVudF9zb3NfZGlyZWN0IGNvbnRhaW5zIGxvZ2ljIHRvIGhhbmRsZSBhIG51bWJlciBvZgot KyAgICAgc3BlY2lhbCBjYXNlcyByZWxhdGluZyB0byB0aGUgZmlyc3QgZWxlbWVudHMgb2YgdGhl IGxpc3QuICBUbwotKyAgICAgYXZvaWQgZHVwbGljYXRpbmcgdGhpcyBsb2dpYyB3ZSBkZWZlciB0 byBzb2xpc3RfdXBkYXRlX2Z1bGwKLSsgICAgIGlmIHRoZSBsaXN0IGlzIGVtcHR5LiAgKi8KLSsg IGlmIChpbmZvLT5zb2xpYl9saXN0ID09IE5VTEwpCi0rICAgIHJldHVybiAwOwotKwotKyAgLyog RmFsbCBiYWNrIHRvIGEgZnVsbCB1cGRhdGUgaWYgd2UgYXJlIHVzaW5nIGEgcmVtb3RlIHRhcmdl dAotKyAgICAgdGhhdCBkb2VzIG5vdCBzdXBwb3J0IGluY3JlbWVudGFsIHRyYW5zZmVycy4gICov Ci0rICBpZiAoaW5mby0+dXNpbmdfeGZlciAmJiAhdGFyZ2V0X2F1Z21lbnRlZF9saWJyYXJpZXNf c3ZyNF9yZWFkICgpKQotKyAgICByZXR1cm4gMDsKLSsKLSsgIC8qIFdhbGsgdG8gdGhlIGVuZCBv ZiB0aGUgbGlzdC4gICovCi0rICBmb3IgKHRhaWwgPSBpbmZvLT5zb2xpYl9saXN0OyB0YWlsLT5u ZXh0ICE9IE5VTEw7IHRhaWwgPSB0YWlsLT5uZXh0KQotKyAgICAvKiBOb3RoaW5nLiAgKi87Ci0r ICBwcmV2X2xtID0gdGFpbC0+bG1faW5mby0+bG1fYWRkcjsKLSsKLSsgIC8qIFJlYWQgdGhlIG5l dyBvYmplY3RzLiAgKi8KLSsgIGlmIChpbmZvLT51c2luZ194ZmVyKQotKyAgICB7Ci0rICAgICAg c3RydWN0IHN2cjRfbGlicmFyeV9saXN0IGxpYnJhcnlfbGlzdDsKLSsgICAgICBjaGFyIGFubmV4 WzY0XTsKLSsKLSsgICAgICB4c25wcmludGYgKGFubmV4LCBzaXplb2YgKGFubmV4KSwgInN0YXJ0 PSVzO3ByZXY9JXMiLAotKwkJIHBoZXhfbnogKGxtLCBzaXplb2YgKGxtKSksCi0rCQkgcGhleF9u eiAocHJldl9sbSwgc2l6ZW9mIChwcmV2X2xtKSkpOwotKyAgICAgIGlmICghc3ZyNF9jdXJyZW50 X3Nvc192aWFfeGZlcl9saWJyYXJpZXMgKCZsaWJyYXJ5X2xpc3QsIGFubmV4KSkKLSsJcmV0dXJu IDA7Ci0rCi0rICAgICAgdGFpbC0+bmV4dCA9IGxpYnJhcnlfbGlzdC5oZWFkOwotKyAgICB9Ci0r ICBlbHNlCi0rICAgIHsKLSsgICAgICBzdHJ1Y3Qgc29fbGlzdCAqKmxpbmsgPSAmdGFpbC0+bmV4 dDsKLSsKLSsgICAgICAvKiBJR05PUkVfRklSU1QgbWF5IHNhZmVseSBiZSBzZXQgdG8gemVybyBo ZXJlIGJlY2F1c2UgdGhlCi0rCSBhYm92ZSBjaGVjayBhbmQgZGVmZXJyYWwgdG8gc29saXN0X3Vw ZGF0ZV9mdWxsIGVuc3VyZXMKLSsJIHRoYXQgdGhpcyBjYWxsIHRvIHN2cjRfcmVhZF9zb19saXN0 IHdpbGwgbmV2ZXIgc2VlIHRoZQotKwkgZmlyc3QgZWxlbWVudC4gICovCi0rICAgICAgaWYgKCFz dnI0X3JlYWRfc29fbGlzdCAobG0sIHByZXZfbG0sICZsaW5rLCAwKSkKLSsJcmV0dXJuIDA7Ci0r ICAgIH0KLSsKLSsgIHJldHVybiAxOwotK30KLSsKLSsvKiBEaXNhYmxlIHRoZSBwcm9iZXMtYmFz ZWQgbGlua2VyIGludGVyZmFjZSBhbmQgcmV2ZXJ0IHRvIHRoZQotKyAgIG9yaWdpbmFsIGludGVy ZmFjZS4gIFdlIGRvbid0IHJlc2V0IHRoZSBicmVha3BvaW50cyBhcyB0aGUKLSsgICBvbmVzIHNl dCB1cCBmb3IgdGhlIHByb2Jlcy1iYXNlZCBpbnRlcmZhY2UgYXJlIGFkZXF1YXRlLiAgKi8KLSsK LStzdGF0aWMgdm9pZAotK2Rpc2FibGVfcHJvYmVzX2ludGVyZmFjZV9jbGVhbnVwICh2b2lkICph cmcpCi0rewotKyAgc3RydWN0IHN2cjRfaW5mbyAqaW5mbyA9IGdldF9zdnI0X2luZm8gKCk7Ci0r Ci0rICB3YXJuaW5nIChfKCJQcm9iZXMtYmFzZWQgZHluYW1pYyBsaW5rZXIgaW50ZXJmYWNlIGZh aWxlZC5cbiIKLSsJICAgICAiUmV2ZXJ0aW5nIHRvIG9yaWdpbmFsIGludGVyZmFjZS5cbiIpKTsK LSsKLSsgIGZyZWVfcHJvYmVzX3RhYmxlIChpbmZvKTsKLSsgIGZyZWVfc29saWJfbGlzdCAoaW5m byk7Ci0rfQotKwotKy8qIFVwZGF0ZSB0aGUgc29saWIgbGlzdCBhcyBhcHByb3ByaWF0ZSB3aGVu IHVzaW5nIHRoZQotKyAgIHByb2Jlcy1iYXNlZCBsaW5rZXIgaW50ZXJmYWNlLiAgRG8gbm90aGlu ZyBpZiB1c2luZyB0aGUKLSsgICBzdGFuZGFyZCBpbnRlcmZhY2UuICAqLwotKwotK3N0YXRpYyB2 b2lkCi0rc3ZyNF9oYW5kbGVfc29saWJfZXZlbnQgKHZvaWQpCi0rewotKyAgc3RydWN0IHN2cjRf aW5mbyAqaW5mbyA9IGdldF9zdnI0X2luZm8gKCk7Ci0rICBzdHJ1Y3QgcHJvYmVfYW5kX2FjdGlv biAqcGE7Ci0rICBlbnVtIHByb2JlX2FjdGlvbiBhY3Rpb247Ci0rICBzdHJ1Y3QgY2xlYW51cCAq b2xkX2NoYWluLCAqdXNtX2NoYWluOwotKyAgc3RydWN0IHZhbHVlICp2YWw7Ci0rICBDT1JFX0FE RFIgcGMsIGRlYnVnX2Jhc2UsIGxtID0gMDsKLSsgIGludCBpc19pbml0aWFsX25zOwotKwotKyAg LyogRG8gbm90aGluZyBpZiBub3QgdXNpbmcgdGhlIHByb2JlcyBpbnRlcmZhY2UuICAqLwotKyAg aWYgKGluZm8tPnByb2Jlc190YWJsZSA9PSBOVUxMKQotKyAgICByZXR1cm47Ci0rCi0rICAvKiBJ ZiBhbnl0aGluZyBnb2VzIHdyb25nIHdlIHJldmVydCB0byB0aGUgb3JpZ2luYWwgbGlua2VyCi0r ICAgICBpbnRlcmZhY2UuICAqLwotKyAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwIChkaXNhYmxl X3Byb2Jlc19pbnRlcmZhY2VfY2xlYW51cCwgTlVMTCk7Ci0rCi0rICBwYyA9IHJlZ2NhY2hlX3Jl YWRfcGMgKGdldF9jdXJyZW50X3JlZ2NhY2hlICgpKTsKLSsgIHBhID0gc29saWJfZXZlbnRfcHJv YmVfYXQgKGluZm8sIHBjKTsKLSsgIGlmIChwYSA9PSBOVUxMKQotKyAgICB7Ci0rICAgICAgZG9f Y2xlYW51cHMgKG9sZF9jaGFpbik7Ci0rICAgICAgcmV0dXJuOwotKyAgICB9Ci0rCi0rICBhY3Rp b24gPSBzb2xpYl9ldmVudF9wcm9iZV9hY3Rpb24gKHBhKTsKLSsgIGlmIChhY3Rpb24gPT0gUFJP QkVTX0lOVEVSRkFDRV9GQUlMRUQpCi0rICAgIHsKLSsgICAgICBkb19jbGVhbnVwcyAob2xkX2No YWluKTsKLSsgICAgICByZXR1cm47Ci0rICAgIH0KLSsKLSsgIGlmIChhY3Rpb24gPT0gRE9fTk9U SElORykKLSsgICAgewotKyAgICAgIGRpc2NhcmRfY2xlYW51cHMgKG9sZF9jaGFpbik7Ci0rICAg ICAgcmV0dXJuOwotKyAgICB9Ci0rCi0rICAvKiBldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCBsb29r cyB1cCBzeW1ib2xzIGluIHRoZSBkeW5hbWljIGxpbmtlcgotKyAgICAgdXNpbmcgZmluZF9wY19z ZWN0aW9uLiAgZmluZF9wY19zZWN0aW9uIGlzIGFjY2VsZXJhdGVkIGJ5IGEgY2FjaGUKLSsgICAg IGNhbGxlZCB0aGUgc2VjdGlvbiBtYXAuICBUaGUgc2VjdGlvbiBtYXAgaXMgaW52YWxpZGF0ZWQg ZXZlcnkKLSsgICAgIHRpbWUgYSBzaGFyZWQgbGlicmFyeSBpcyBsb2FkZWQgb3IgdW5sb2FkZWQs IGFuZCBpZiB0aGUgaW5mZXJpb3IKLSsgICAgIGlzIGdlbmVyYXRpbmcgYSBsb3Qgb2Ygc2hhcmVk IGxpYnJhcnkgZXZlbnRzIHRoZW4gdGhlIHNlY3Rpb24gbWFwCi0rICAgICB3aWxsIGJlIHVwZGF0 ZWQgZXZlcnkgdGltZSBzdnI0X2hhbmRsZV9zb2xpYl9ldmVudCBpcyBjYWxsZWQuCi0rICAgICBX ZSBjYWxsZWQgZmluZF9wY19zZWN0aW9uIGluIHN2cjRfY3JlYXRlX3NvbGliX2V2ZW50X2JyZWFr cG9pbnRzLAotKyAgICAgc28gd2UgY2FuIGd1YXJhbnRlZSB0aGF0IHRoZSBkeW5hbWljIGxpbmtl cidzIHNlY3Rpb25zIGFyZSBpbiB0aGUKLSsgICAgIHNlY3Rpb24gbWFwLiAgV2UgY2FuIHRoZXJl Zm9yZSBpbmhpYml0IHNlY3Rpb24gbWFwIHVwZGF0ZXMgYWNyb3NzCi0rICAgICB0aGVzZSBjYWxs cyB0byBldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCBhbmQgc2F2ZSBhIGxvdCBvZiB0aW1lLiAgKi8K LSsgIGluaGliaXRfc2VjdGlvbl9tYXBfdXBkYXRlcyAoY3VycmVudF9wcm9ncmFtX3NwYWNlKTsK LSsgIHVzbV9jaGFpbiA9IG1ha2VfY2xlYW51cCAocmVzdW1lX3NlY3Rpb25fbWFwX3VwZGF0ZXNf Y2xlYW51cCwKLSsJCQkgICAgY3VycmVudF9wcm9ncmFtX3NwYWNlKTsKLSsKLSsgIHZhbCA9IGV2 YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChwYS0+cHJvYmUsIDEpOwotKyAgaWYgKHZhbCA9PSBOVUxM KQotKyAgICB7Ci0rICAgICAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7Ci0rICAgICAgcmV0dXJu OwotKyAgICB9Ci0rCi0rICBkZWJ1Z19iYXNlID0gdmFsdWVfYXNfYWRkcmVzcyAodmFsKTsKLSsg IGlmIChkZWJ1Z19iYXNlID09IDApCi0rICAgIHsKLSsgICAgICBkb19jbGVhbnVwcyAob2xkX2No YWluKTsKLSsgICAgICByZXR1cm47Ci0rICAgIH0KLSsKLSsgIC8qIEFsd2F5cyBsb2NhdGUgdGhl IGRlYnVnIHN0cnVjdCwgaW4gY2FzZSBpdCBtb3ZlZC4gICovCi0rICBpbmZvLT5kZWJ1Z19iYXNl ID0gMDsKLSsgIGlmIChsb2NhdGVfYmFzZSAoaW5mbykgPT0gMCkKLSsgICAgewotKyAgICAgIGRv X2NsZWFudXBzIChvbGRfY2hhaW4pOwotKyAgICAgIHJldHVybjsKLSsgICAgfQotKwotKyAgLyog R0RCIGRvZXMgbm90IGN1cnJlbnRseSBzdXBwb3J0IGxpYnJhcmllcyBsb2FkZWQgdmlhIGRsbW9w ZW4KLSsgICAgIGludG8gbmFtZXNwYWNlcyBvdGhlciB0aGFuIHRoZSBpbml0aWFsIG9uZS4gIFdl IG11c3QgaWdub3JlCi0rICAgICBhbnkgbmFtZXNwYWNlIG90aGVyIHRoYW4gdGhlIGluaXRpYWwg bmFtZXNwYWNlIGhlcmUgdW50aWwKLSsgICAgIHN1cHBvcnQgZm9yIHRoaXMgaXMgYWRkZWQgdG8g R0RCLiAgKi8KLSsgIGlmIChkZWJ1Z19iYXNlICE9IGluZm8tPmRlYnVnX2Jhc2UpCi0rICAgIGFj dGlvbiA9IERPX05PVEhJTkc7Ci0rCi0rICBpZiAoYWN0aW9uID09IFVQREFURV9PUl9SRUxPQUQp Ci0rICAgIHsKLSsgICAgICB2YWwgPSBldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCAocGEtPnByb2Jl LCAyKTsKLSsgICAgICBpZiAodmFsICE9IE5VTEwpCi0rCWxtID0gdmFsdWVfYXNfYWRkcmVzcyAo dmFsKTsKLSsKLSsgICAgICBpZiAobG0gPT0gMCkKLSsJYWN0aW9uID0gRlVMTF9SRUxPQUQ7Ci0r ICAgIH0KLSsKLSsgIC8qIFJlc3VtZSBzZWN0aW9uIG1hcCB1cGRhdGVzLiAgKi8KLSsgIGRvX2Ns ZWFudXBzICh1c21fY2hhaW4pOwotKwotKyAgaWYgKGFjdGlvbiA9PSBVUERBVEVfT1JfUkVMT0FE KQotKyAgICB7Ci0rICAgICAgaWYgKCFzb2xpc3RfdXBkYXRlX2luY3JlbWVudGFsIChpbmZvLCBs bSkpCi0rCWFjdGlvbiA9IEZVTExfUkVMT0FEOwotKyAgICB9Ci0rCi0rICBpZiAoYWN0aW9uID09 IEZVTExfUkVMT0FEKQotKyAgICB7Ci0rICAgICAgaWYgKCFzb2xpc3RfdXBkYXRlX2Z1bGwgKGlu Zm8pKQotKwl7Ci0rCSAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7Ci0rCSAgcmV0dXJuOwotKwl9 Ci0rICAgIH0KLSsKLSsgIGRpc2NhcmRfY2xlYW51cHMgKG9sZF9jaGFpbik7Ci0rfQotKwotKy8q IEhlbHBlciBmdW5jdGlvbiBmb3Igc3ZyNF91cGRhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludHMu ICAqLwotKwotK3N0YXRpYyBpbnQKLStzdnI0X3VwZGF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50 IChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwgdm9pZCAqYXJnKQotK3sKLSsgIHN0cnVjdCBicF9sb2Nh dGlvbiAqbG9jOwotKwotKyAgaWYgKGItPnR5cGUgIT0gYnBfc2hsaWJfZXZlbnQpCi0rICAgIHsK LSsgICAgICAvKiBDb250aW51ZSBpdGVyYXRpbmcuICAqLwotKyAgICAgIHJldHVybiAwOwotKyAg ICB9Ci0rCi0rICBmb3IgKGxvYyA9IGItPmxvYzsgbG9jICE9IE5VTEw7IGxvYyA9IGxvYy0+bmV4 dCkKLSsgICAgewotKyAgICAgIHN0cnVjdCBzdnI0X2luZm8gKmluZm87Ci0rICAgICAgc3RydWN0 IHByb2JlX2FuZF9hY3Rpb24gKnBhOwotKwotKyAgICAgIGluZm8gPSBwcm9ncmFtX3NwYWNlX2Rh dGEgKGxvYy0+cHNwYWNlLCBzb2xpYl9zdnI0X3BzcGFjZV9kYXRhKTsKLSsgICAgICBpZiAoaW5m byA9PSBOVUxMIHx8IGluZm8tPnByb2Jlc190YWJsZSA9PSBOVUxMKQotKwljb250aW51ZTsKLSsK LSsgICAgICBwYSA9IHNvbGliX2V2ZW50X3Byb2JlX2F0IChpbmZvLCBsb2MtPmFkZHJlc3MpOwot KyAgICAgIGlmIChwYSA9PSBOVUxMKQotKwljb250aW51ZTsKLSsKLSsgICAgICBpZiAocGEtPmFj dGlvbiA9PSBET19OT1RISU5HKQotKwl7Ci0rCSAgaWYgKGItPmVuYWJsZV9zdGF0ZSA9PSBicF9k aXNhYmxlZCAmJiBzdG9wX29uX3NvbGliX2V2ZW50cykKLSsJICAgIGVuYWJsZV9icmVha3BvaW50 IChiKTsKLSsJICBlbHNlIGlmIChiLT5lbmFibGVfc3RhdGUgPT0gYnBfZW5hYmxlZCAmJiAhc3Rv cF9vbl9zb2xpYl9ldmVudHMpCi0rCSAgICBkaXNhYmxlX2JyZWFrcG9pbnQgKGIpOwotKwl9Ci0r Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSsKLSsgIC8qIENvbnRpbnVlIGl0ZXJhdGluZy4gICov Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogRW5hYmxlIG9yIGRpc2FibGUgb3B0aW9uYWwgc29s aWIgZXZlbnQgYnJlYWtwb2ludHMgYXMgYXBwcm9wcmlhdGUuCi0rICAgQ2FsbGVkIHdoZW5ldmVy IHN0b3Bfb25fc29saWJfZXZlbnRzIGlzIGNoYW5nZWQuICAqLwotKwotK3N0YXRpYyB2b2lkCi0r c3ZyNF91cGRhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludHMgKHZvaWQpCi0rewotKyAgaXRlcmF0 ZV9vdmVyX2JyZWFrcG9pbnRzIChzdnI0X3VwZGF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50LCBO VUxMKTsKLSt9Ci0rCi0rLyogQ3JlYXRlIGFuZCByZWdpc3RlciBzb2xpYiBldmVudCBicmVha3Bv aW50cy4gIFBST0JFUyBpcyBhbiBhcnJheQotKyAgIG9mIE5VTV9QUk9CRVMgZWxlbWVudHMsIGVh Y2ggb2Ygd2hpY2ggaXMgdmVjdG9yIG9mIHByb2Jlcy4gIEEKLSsgICBzb2xpYiBldmVudCBicmVh a3BvaW50IHdpbGwgYmUgY3JlYXRlZCBhbmQgcmVnaXN0ZXJlZCBmb3IgZWFjaAotKyAgIHByb2Jl LiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3N2cjRfY3JlYXRlX3Byb2JlX2JyZWFrcG9pbnRzIChz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSsJCQkgICAgICAgVkVDIChwcm9iZV9wKSAqKnByb2Jl cykKLSt7Ci0rICBpbnQgaTsKLSsKLSsgIGZvciAoaSA9IDA7IGkgPCBOVU1fUFJPQkVTOyBpKysp Ci0rICAgIHsKLSsgICAgICBlbnVtIHByb2JlX2FjdGlvbiBhY3Rpb24gPSBwcm9iZV9pbmZvW2ld LmFjdGlvbjsKLSsgICAgICBzdHJ1Y3QgcHJvYmUgKnByb2JlOwotKyAgICAgIGludCBpeDsKLSsK LSsgICAgICBmb3IgKGl4ID0gMDsKLSsJICAgVkVDX2l0ZXJhdGUgKHByb2JlX3AsIHByb2Jlc1tp XSwgaXgsIHByb2JlKTsKLSsJICAgKytpeCkKLSsJewotKwkgIGNyZWF0ZV9zb2xpYl9ldmVudF9i cmVha3BvaW50IChnZGJhcmNoLCBwcm9iZS0+YWRkcmVzcyk7Ci0rCSAgcmVnaXN0ZXJfc29saWJf ZXZlbnRfcHJvYmUgKHByb2JlLCBhY3Rpb24pOwotKwl9Ci0rICAgIH0KLSsKLSsgIHN2cjRfdXBk YXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnRzICgpOwotK30KLSsKLSsvKiBCb3RoIHRoZSBTdW5P UyBhbmQgdGhlIFNWUjQgZHluYW1pYyBsaW5rZXJzIGNhbGwgYSBtYXJrZXIgZnVuY3Rpb24KLSsg ICBiZWZvcmUgYW5kIGFmdGVyIG1hcHBpbmcgYW5kIHVubWFwcGluZyBzaGFyZWQgbGlicmFyaWVz LiAgVGhlIHNvbGUKLSsgICBwdXJwb3NlIG9mIHRoaXMgbWV0aG9kIGlzIHRvIGFsbG93IGRlYnVn Z2VycyB0byBzZXQgYSBicmVha3BvaW50IHNvCi0rICAgdGhleSBjYW4gdHJhY2sgdGhlc2UgY2hh bmdlcy4KLSsKLSsgICBTb21lIHZlcnNpb25zIG9mIHRoZSBnbGliYyBkeW5hbWljIGxpbmtlciBj b250YWluIG5hbWVkIHByb2JlcwotKyAgIHRvIGFsbG93IG1vcmUgZmluZSBncmFpbmVkIHN0b3Bw aW5nLiAgR2l2ZW4gdGhlIGFkZHJlc3Mgb2YgdGhlCi0rICAgb3JpZ2luYWwgbWFya2VyIGZ1bmN0 aW9uLCB0aGlzIGZ1bmN0aW9uIGF0dGVtcHRzIHRvIGZpbmQgdGhlc2UKLSsgICBwcm9iZXMsIGFu ZCBpZiBmb3VuZCwgc2V0cyBicmVha3BvaW50cyBvbiB0aG9zZSBpbnN0ZWFkLiAgSWYgdGhlCi0r ICAgcHJvYmVzIGFyZW4ndCBmb3VuZCwgYSBzaW5nbGUgYnJlYWtwb2ludCBpcyBzZXQgb24gdGhl IG9yaWdpbmFsCi0rICAgbWFya2VyIGZ1bmN0aW9uLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3N2 cjRfY3JlYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnRzIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aCwKLSsJCQkJICAgICBDT1JFX0FERFIgYWRkcmVzcykKLSt7Ci0rICBzdHJ1Y3Qgb2JqX3NlY3Rp b24gKm9zOwotKwotKyAgb3MgPSBmaW5kX3BjX3NlY3Rpb24gKGFkZHJlc3MpOwotKyAgaWYgKG9z ICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICBpbnQgd2l0aF9wcmVmaXg7Ci0rCi0rICAgICAgZm9y ICh3aXRoX3ByZWZpeCA9IDA7IHdpdGhfcHJlZml4IDw9IDE7IHdpdGhfcHJlZml4KyspCi0rCXsK LSsJICBWRUMgKHByb2JlX3ApICpwcm9iZXNbTlVNX1BST0JFU107Ci0rCSAgaW50IGFsbF9wcm9i ZXNfZm91bmQgPSAxOwotKwkgIGludCBpOwotKwotKwkgIG1lbXNldCAocHJvYmVzLCAwLCBzaXpl b2YgKHByb2JlcykpOwotKwkgIGZvciAoaSA9IDA7IGkgPCBOVU1fUFJPQkVTOyBpKyspCi0rCSAg ICB7Ci0rCSAgICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBwcm9iZV9pbmZvW2ldLm5hbWU7Ci0rCSAg ICAgIGNoYXIgYnVmWzMyXTsKLSsKLSsJICAgICAgLyogRmVkb3JhIDE3IGFuZCBSZWQgSGF0IEVu dGVycHJpc2UgTGludXggNi4yLTYuNAotKwkJIHNoaXBwZWQgd2l0aCBhbiBlYXJseSB2ZXJzaW9u IG9mIHRoZSBwcm9iZXMgY29kZSBpbgotKwkJIHdoaWNoIHRoZSBwcm9iZXMnIG5hbWVzIHdlcmUg cHJlZml4ZWQgd2l0aCAicnRsZF8iCi0rCQkgYW5kIHRoZSAibWFwX2ZhaWxlZCIgcHJvYmUgZGlk IG5vdCBleGlzdC4gIFRoZQotKwkJIGxvY2F0aW9ucyBvZiB0aGUgcHJvYmVzIGFyZSBvdGhlcndp c2UgdGhlIHNhbWUsIHNvCi0rCQkgd2UgY2hlY2sgZm9yIHByb2JlcyB3aXRoIHByZWZpeGVkIG5h bWVzIGlmIHByb2JlcwotKwkJIHdpdGggdW5wcmVmaXhlZCBuYW1lcyBhcmUgbm90IHByZXNlbnQu ICAqLwotKwkgICAgICBpZiAod2l0aF9wcmVmaXgpCi0rCQl7Ci0rCQkgIHhzbnByaW50ZiAoYnVm LCBzaXplb2YgKGJ1ZiksICJydGxkXyVzIiwgbmFtZSk7Ci0rCQkgIG5hbWUgPSBidWY7Ci0rCQl9 Ci0rCi0rCSAgICAgIHByb2Jlc1tpXSA9IGZpbmRfcHJvYmVzX2luX29iamZpbGUgKG9zLT5vYmpm aWxlLCAicnRsZCIsIG5hbWUpOwotKwotKwkgICAgICAvKiBUaGUgIm1hcF9mYWlsZWQiIHByb2Jl IGRpZCBub3QgZXhpc3QgaW4gZWFybHkKLSsJCSB2ZXJzaW9ucyBvZiB0aGUgcHJvYmVzIGNvZGUg aW4gd2hpY2ggdGhlIHByb2JlcycKLSsJCSBuYW1lcyB3ZXJlIHByZWZpeGVkIHdpdGggInJ0bGRf Ii4gICovCi0rCSAgICAgIGlmIChzdHJjbXAgKG5hbWUsICJydGxkX21hcF9mYWlsZWQiKSA9PSAw KQotKwkJY29udGludWU7Ci0rCi0rCSAgICAgIGlmIChWRUNfZW1wdHkgKHByb2JlX3AsIHByb2Jl c1tpXSkpCi0rCQl7Ci0rCQkgIGFsbF9wcm9iZXNfZm91bmQgPSAwOwotKwkJICBicmVhazsKLSsJ CX0KLSsJICAgIH0KLSsKLSsJICBpZiAoYWxsX3Byb2Jlc19mb3VuZCkKLSsJICAgIHN2cjRfY3Jl YXRlX3Byb2JlX2JyZWFrcG9pbnRzIChnZGJhcmNoLCBwcm9iZXMpOwotKwotKwkgIGZvciAoaSA9 IDA7IGkgPCBOVU1fUFJPQkVTOyBpKyspCi0rCSAgICBWRUNfZnJlZSAocHJvYmVfcCwgcHJvYmVz W2ldKTsKLSsKLSsJICBpZiAoYWxsX3Byb2Jlc19mb3VuZCkKLSsJICAgIHJldHVybjsKLSsJfQot KyAgICB9Ci0rCi0rICBjcmVhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludCAoZ2RiYXJjaCwgYWRk cmVzcyk7Ci0rfQotKwotIC8qIEhlbHBlciBmdW5jdGlvbiBmb3IgZ2RiX2JmZF9sb29rdXBfc3lt Ym9sLiAgKi8KLSAKLSBzdGF0aWMgaW50Ci1AQCAtMTUzMiw3ICsyMTUxLDcgQEAgZW5hYmxlX2Jy ZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvLCBpbgotIAkgVGhhdCBrbm93bGVkZ2UgaXMgZW5j b2RlZCBpbiB0aGUgYWRkcmVzcywgaWYgaXQncyBUaHVtYiB0aGUgbG93IGJpdAotIAkgaXMgMS4g IEhvd2V2ZXIsIHdlJ3ZlIHN0cmlwcGVkIHRoYXQgaW5mbyBhYm92ZSBhbmQgaXQncyBub3QgY2xl YXIKLSAJIHdoYXQgYWxsIHRoZSBjb25zZXF1ZW5jZXMgYXJlIG9mIHBhc3NpbmcgYSBub24tYWRk cl9iaXRzX3JlbW92ZSdkCi0tCSBhZGRyZXNzIHRvIGNyZWF0ZV9zb2xpYl9ldmVudF9icmVha3Bv aW50LiAgVGhlIGNhbGwgdG8KLSsJIGFkZHJlc3MgdG8gc3ZyNF9jcmVhdGVfc29saWJfZXZlbnRf YnJlYWtwb2ludHMuICBUaGUgY2FsbCB0bwotIAkgZmluZF9wY19zZWN0aW9uIHZlcmlmaWVzIHdl IGtub3cgYWJvdXQgdGhlIGFkZHJlc3MgYW5kIGhhdmUgc29tZQotIAkgaG9wZSBvZiBjb21wdXRp bmcgdGhlIHJpZ2h0IGtpbmQgb2YgYnJlYWtwb2ludCB0byB1c2UgKHZpYQotIAkgc3ltYm9sIGlu Zm8pLiAgSXQgZG9lcyBtZWFuIHRoYXQgR0RCIG5lZWRzIHRvIGJlIHBvaW50ZWQgYXQgYQotQEAg LTE1NzAsNyArMjE4OSw3IEBAIGVuYWJsZV9icmVhayAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbywg aW4KLSAJCSsgYmZkX3NlY3Rpb25fc2l6ZSAodG1wX2JmZCwgaW50ZXJwX3NlY3QpOwotIAkgICAg fQotIAotLQkgIGNyZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50ICh0YXJnZXRfZ2RiYXJjaCAo KSwgc3ltX2FkZHIpOwotKwkgIHN2cjRfY3JlYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnRzICh0 YXJnZXRfZ2RiYXJjaCAoKSwgc3ltX2FkZHIpOwotIAkgIHJldHVybiAxOwotIAl9Ci0gICAgIH0K LUBAIC0xNzI4LDcgKzIzNDcsOCBAQCBlbmFibGVfYnJlYWsgKHN0cnVjdCBzdnI0X2luZm8gKmlu Zm8sIGluCi0gCi0gICAgICAgaWYgKHN5bV9hZGRyICE9IDApCi0gCXsKLS0JICBjcmVhdGVfc29s aWJfZXZlbnRfYnJlYWtwb2ludCAodGFyZ2V0X2dkYmFyY2ggKCksIGxvYWRfYWRkciArIHN5bV9h ZGRyKTsKLSsJICBzdnI0X2NyZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50cyAodGFyZ2V0X2dk YmFyY2ggKCksCi0rCQkJCQkgICAgICAgbG9hZF9hZGRyICsgc3ltX2FkZHIpOwotIAkgIHhmcmVl IChpbnRlcnBfbmFtZSk7Ci0gCSAgcmV0dXJuIDE7Ci0gCX0KLUBAIC0xNzU0LDcgKzIzNzQsNyBA QCBlbmFibGVfYnJlYWsgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8sIGluCi0gCSAgc3ltX2FkZHIg PSBnZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyICh0YXJnZXRfZ2RiYXJjaCAoKSwK LSAJCQkJCQkJIHN5bV9hZGRyLAotIAkJCQkJCQkgJmN1cnJlbnRfdGFyZ2V0KTsKLS0JICBjcmVh dGVfc29saWJfZXZlbnRfYnJlYWtwb2ludCAodGFyZ2V0X2dkYmFyY2ggKCksIHN5bV9hZGRyKTsK LSsJICBzdnI0X2NyZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50cyAodGFyZ2V0X2dkYmFyY2gg KCksIHN5bV9hZGRyKTsKLSAJICByZXR1cm4gMTsKLSAJfQotICAgICB9Ci1AQCAtMTc3MCw3ICsy MzkwLDcgQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvLCBpbgotIAkgICAg ICBzeW1fYWRkciA9IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKHRhcmdldF9n ZGJhcmNoICgpLAotIAkJCQkJCQkgICAgIHN5bV9hZGRyLAotIAkJCQkJCQkgICAgICZjdXJyZW50 X3RhcmdldCk7Ci0tCSAgICAgIGNyZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50ICh0YXJnZXRf Z2RiYXJjaCAoKSwgc3ltX2FkZHIpOwotKwkgICAgICBzdnI0X2NyZWF0ZV9zb2xpYl9ldmVudF9i cmVha3BvaW50cyAodGFyZ2V0X2dkYmFyY2ggKCksIHN5bV9hZGRyKTsKLSAJICAgICAgcmV0dXJu IDE7Ci0gCSAgICB9Ci0gCX0KLUBAIC0yMjY2LDYgKzI4ODYsMTAgQEAgc3ZyNF9zb2xpYl9jcmVh dGVfaW5mZXJpb3JfaG9vayAoaW50IGZybwotIAotICAgaW5mbyA9IGdldF9zdnI0X2luZm8gKCk7 Ci0gCi0rICAvKiBDbGVhciB0aGUgcHJvYmVzLWJhc2VkIGludGVyZmFjZSdzIHN0YXRlLiAgKi8K LSsgIGZyZWVfcHJvYmVzX3RhYmxlIChpbmZvKTsKLSsgIGZyZWVfc29saWJfbGlzdCAoaW5mbyk7 Ci0rCi0gICAvKiBSZWxvY2F0ZSB0aGUgbWFpbiBleGVjdXRhYmxlIGlmIG5lY2Vzc2FyeS4gICov Ci0gICBzdnI0X3JlbG9jYXRlX21haW5fZXhlY3V0YWJsZSAoKTsKLSAKLUBAIC0yNTA3LDQgKzMx MzEsNiBAQCBfaW5pdGlhbGl6ZV9zdnI0X3NvbGliICh2b2lkKQotICAgc3ZyNF9zb19vcHMubG9v a3VwX2xpYl9nbG9iYWxfc3ltYm9sID0gZWxmX2xvb2t1cF9saWJfc3ltYm9sOwotICAgc3ZyNF9z b19vcHMuc2FtZSA9IHN2cjRfc2FtZTsKLSAgIHN2cjRfc29fb3BzLmtlZXBfZGF0YV9pbl9jb3Jl ID0gc3ZyNF9rZWVwX2RhdGFfaW5fY29yZTsKLSsgIHN2cjRfc29fb3BzLnVwZGF0ZV9icmVha3Bv aW50cyA9IHN2cjRfdXBkYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnRzOwotKyAgc3ZyNF9zb19v cHMuaGFuZGxlX2V2ZW50ID0gc3ZyNF9oYW5kbGVfc29saWJfZXZlbnQ7Ci0gfQotSW5kZXg6IGdk Yi03LjYvZ2RiL3NvbGliLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL3NvbGli LmMJMjAxMy0wNi0xMCAxNDo0NDozNy4zOTI4MTI2NzUgKzAyMDAKLSsrKyBnZGItNy42L2dkYi9z b2xpYi5jCTIwMTMtMDYtMTAgMTQ6NDQ6MzcuNzEzODEyNTc4ICswMjAwCi1AQCAtMTIyMSw2ICsx MjIxLDM3IEBAIG5vX3NoYXJlZF9saWJyYXJpZXMgKGNoYXIgKmlnbm9yZWQsIGludAotICAgb2Jq ZmlsZV9wdXJnZV9zb2xpYnMgKCk7Ci0gfQotIAotKy8qIFNlZSBzb2xpYi5oLiAgKi8KLSsKLSt2 b2lkCi0rdXBkYXRlX3NvbGliX2JyZWFrcG9pbnRzICh2b2lkKQotK3sKLSsgIGNvbnN0IHN0cnVj dCB0YXJnZXRfc29fb3BzICpvcHMgPSBzb2xpYl9vcHMgKHRhcmdldF9nZGJhcmNoICgpKTsKLSsK LSsgIGlmIChvcHMtPnVwZGF0ZV9icmVha3BvaW50cyAhPSBOVUxMKQotKyAgICBvcHMtPnVwZGF0 ZV9icmVha3BvaW50cyAoKTsKLSt9Ci0rCi0rLyogU2VlIHNvbGliLmguICAqLwotKwotK3ZvaWQK LStoYW5kbGVfc29saWJfZXZlbnQgKHZvaWQpCi0rewotKyAgY29uc3Qgc3RydWN0IHRhcmdldF9z b19vcHMgKm9wcyA9IHNvbGliX29wcyAodGFyZ2V0X2dkYmFyY2ggKCkpOwotKwotKyAgaWYgKG9w cy0+aGFuZGxlX2V2ZW50ICE9IE5VTEwpCi0rICAgIG9wcy0+aGFuZGxlX2V2ZW50ICgpOwotKwot KyAgY2xlYXJfcHJvZ3JhbV9zcGFjZV9zb2xpYl9jYWNoZSAoY3VycmVudF9pbmZlcmlvciAoKS0+ cHNwYWNlKTsKLSsKLSsgIC8qIENoZWNrIGZvciBhbnkgbmV3bHkgYWRkZWQgc2hhcmVkIGxpYnJh cmllcyBpZiB3ZSdyZSBzdXBwb3NlZCB0bwotKyAgICAgYmUgYWRkaW5nIHRoZW0gYXV0b21hdGlj YWxseS4gIFN3aXRjaCB0ZXJtaW5hbCBmb3IgYW55IG1lc3NhZ2VzCi0rICAgICBwcm9kdWNlZCBi eSBicmVha3BvaW50X3JlX3NldC4gICovCi0rICB0YXJnZXRfdGVybWluYWxfb3Vyc19mb3Jfb3V0 cHV0ICgpOwotKyAgc29saWJfYWRkIChOVUxMLCAwLCAmY3VycmVudF90YXJnZXQsIGF1dG9fc29s aWJfYWRkKTsKLSsgIHRhcmdldF90ZXJtaW5hbF9pbmZlcmlvciAoKTsKLSt9Ci0rCi0gLyogUmVs b2FkIHNoYXJlZCBsaWJyYXJpZXMsIGJ1dCBhdm9pZCByZWxvYWRpbmcgdGhlIHNhbWUgc3ltYm9s IGZpbGUKLSAgICB3ZSBhbHJlYWR5IGhhdmUgbG9hZGVkLiAgKi8KLSAKLUluZGV4OiBnZGItNy42 L2dkYi9zb2xpYi5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dkYi9zb2xpYi5oCTIw MTMtMDEtMDEgMDc6MzI6NTEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNi9nZGIvc29saWIu aAkyMDEzLTA2LTEwIDE0OjQ0OjM3LjcxMzgxMjU3OCArMDIwMAotQEAgLTkwLDQgKzkwLDEyIEBA IGV4dGVybiBDT1JFX0FERFIgZ2RiX2JmZF9sb29rdXBfc3ltYm9sX2YKLSAJCQkJCQkJCSAgICAg IHZvaWQgKiksCi0gCQkJCQkJICAgIHZvaWQgKmRhdGEpOwotIAotKy8qIEVuYWJsZSBvciBkaXNh YmxlIG9wdGlvbmFsIHNvbGliIGV2ZW50IGJyZWFrcG9pbnRzIGFzIGFwcHJvcHJpYXRlLiAgKi8K LSsKLStleHRlcm4gdm9pZCB1cGRhdGVfc29saWJfYnJlYWtwb2ludHMgKHZvaWQpOwotKwotKy8q IEhhbmRsZSBhbiBzb2xpYiBldmVudCBieSBjYWxsaW5nIHNvbGliX2FkZC4gICovCi0rCi0rZXh0 ZXJuIHZvaWQgaGFuZGxlX3NvbGliX2V2ZW50ICh2b2lkKTsKLSsKLSAjZW5kaWYgLyogU09MSUJf SCAqLwotSW5kZXg6IGdkYi03LjYvZ2RiL3NvbGlzdC5oCi09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu Ni5vcmlnL2dkYi9zb2xpc3QuaAkyMDEzLTAxLTAxIDA3OjMyOjUxLjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjYvZ2RiL3NvbGlzdC5oCTIwMTMtMDYtMTAgMTQ6NDQ6MzcuNzEzODEyNTc4ICsw MjAwCi1AQCAtMTQ4LDYgKzE0OCwxOSBAQCBzdHJ1Y3QgdGFyZ2V0X3NvX29wcwotICAgICAgICBj b3JlIGZpbGUgKGluIHBhcnRpY3VsYXIsIGZvciByZWFkb25seSBzZWN0aW9ucykuICAqLwotICAg ICBpbnQgKCprZWVwX2RhdGFfaW5fY29yZSkgKENPUkVfQUREUiB2YWRkciwKLSAJCQkgICAgICB1 bnNpZ25lZCBsb25nIHNpemUpOwotKwotKyAgICAvKiBFbmFibGUgb3IgZGlzYWJsZSBvcHRpb25h bCBzb2xpYiBldmVudCBicmVha3BvaW50cyBhcwotKyAgICAgICBhcHByb3ByaWF0ZS4gIFRoaXMg c2hvdWxkIGJlIGNhbGxlZCB3aGVuZXZlcgotKyAgICAgICBzdG9wX29uX3NvbGliX2V2ZW50cyBp cyBjaGFuZ2VkLiAgVGhpcyBwb2ludGVyIGNhbiBiZQotKyAgICAgICBOVUxMLCBpbiB3aGljaCBj YXNlIG5vIGVuYWJsaW5nIG9yIGRpc2FibGluZyBpcyBuZWNlc3NhcnkKLSsgICAgICAgZm9yIHRo aXMgdGFyZ2V0LiAgKi8KLSsgICAgdm9pZCAoKnVwZGF0ZV9icmVha3BvaW50cykgKHZvaWQpOwot KwotKyAgICAvKiBUYXJnZXQtc3BlY2lmaWMgcHJvY2Vzc2luZyBvZiBzb2xpYiBldmVudHMgdGhh dCB3aWxsIGJlCi0rICAgICAgIHBlcmZvcm1lZCBiZWZvcmUgc29saWJfYWRkIGlzIGNhbGxlZC4g IFRoaXMgcG9pbnRlciBjYW4gYmUKLSsgICAgICAgTlVMTCwgaW4gd2hpY2ggY2FzZSBubyBzcGVj aWZpYyBwcmVwcm9jZXNzaW5nIGlzIG5lY2Vzc2FyeQotKyAgICAgICBmb3IgdGhpcyB0YXJnZXQu ICAqLwotKyAgICB2b2lkICgqaGFuZGxlX2V2ZW50KSAodm9pZCk7Ci0gICB9OwotIAotIC8qIEZy ZWUgdGhlIG1lbW9yeSBhc3NvY2lhdGVkIHdpdGggYSAoc29fbGlzdCAqKS4gICovCi1JbmRleDog Z2RiLTcuNi9nZGIvYnJlYWtwb2ludC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dk Yi9icmVha3BvaW50LmMJMjAxMy0wNi0xMCAxNDo0NDozNy41MDA4MTI2NDIgKzAyMDAKLSsrKyBn ZGItNy42L2dkYi9icmVha3BvaW50LmMJMjAxMy0wNi0xMCAxNDo0NDo1Ny4zMDE4MDY3MDggKzAy MDAKLUBAIC01MzQ4LDI1ICs1MzQ4LDYgQEAgaGFuZGxlX2ppdF9ldmVudCAodm9pZCkKLSAgIHRh cmdldF90ZXJtaW5hbF9pbmZlcmlvciAoKTsKLSB9Ci0gCi0tLyogSGFuZGxlIGFuIHNvbGliIGV2 ZW50IGJ5IGNhbGxpbmcgc29saWJfYWRkLiAgKi8KLS0KLS12b2lkCi0taGFuZGxlX3NvbGliX2V2 ZW50ICh2b2lkKQotLXsKLS0gIGNsZWFyX3Byb2dyYW1fc3BhY2Vfc29saWJfY2FjaGUgKGN1cnJl bnRfaW5mZXJpb3IgKCktPnBzcGFjZSk7Ci0tCi0tICAvKiBDaGVjayBmb3IgYW55IG5ld2x5IGFk ZGVkIHNoYXJlZCBsaWJyYXJpZXMgaWYgd2UncmUgc3VwcG9zZWQgdG8KLS0gICAgIGJlIGFkZGlu ZyB0aGVtIGF1dG9tYXRpY2FsbHkuICBTd2l0Y2ggdGVybWluYWwgZm9yIGFueSBtZXNzYWdlcwot LSAgICAgcHJvZHVjZWQgYnkgYnJlYWtwb2ludF9yZV9zZXQuICAqLwotLSAgdGFyZ2V0X3Rlcm1p bmFsX291cnNfZm9yX291dHB1dCAoKTsKLS0jaWZkZWYgU09MSUJfQURECi0tICBTT0xJQl9BREQg KE5VTEwsIDAsICZjdXJyZW50X3RhcmdldCwgYXV0b19zb2xpYl9hZGQpOwotLSNlbHNlCi0tICBz b2xpYl9hZGQgKE5VTEwsIDAsICZjdXJyZW50X3RhcmdldCwgYXV0b19zb2xpYl9hZGQpOwotLSNl bmRpZgotLSAgdGFyZ2V0X3Rlcm1pbmFsX2luZmVyaW9yICgpOwotLX0KLS0KLSAvKiBQcmVwYXJl IFdIQVQgZmluYWwgZGVjaXNpb24gZm9yIGluZnJ1bi4gICovCi0gCi0gLyogRGVjaWRlIHdoYXQg aW5mcnVuIG5lZWRzIHRvIGRvIHdpdGggdGhpcyBicHN0YXQuICAqLwoKZGlmZiAtLWdpdCBhL2dk Yi1kbG9wZW4tc3RhcC1wcm9iZS04b2Y5LnBhdGNoIGIvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLThv ZjkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiNjYzOGEuLjAwMDAwMDAK LS0tIGEvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLThvZjkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAt MSw0NjIgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMy0wNi9t c2cwMDAxOS5odG1sCi0KLSMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMjAxMy8wNS8z MCAwMDoyNToxNgkxLjM2ODIKLSMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMjAxMy8w Ni8wNCAxMzoyMzozMQkxLjM2ODMKLSMjIC0xLDMgKzEsMTkgQEAKLSsyMDEzLTA2LTA0ICBKYW4g S3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCSAgICBHYXJ5IEJlbnNv biAgPGdiZW5zb25AcmVkaGF0LmNvbT4KLSsKLSsJKiBsaWIvZ2RiLmV4cCAoYnVpbGRfZXhlY3V0 YWJsZV9mcm9tX3NwZWNzKTogVXNlIGdkYl9jb21waWxlX3B0aHJlYWQsCi0rCWdkYl9jb21waWxl X3NobGliIG9yIGdkYl9jb21waWxlX3NobGliX3B0aHJlYWRzIHdoZXJlIGFwcHJvcHJpYXRlLgot KwkqIGxpYi9wcmVsaW5rLXN1cHBvcnQuZXhwIChidWlsZF9leGVjdXRhYmxlX293bl9saWJzKTog QWxsb3cgSU5URVJQCi0rCXRvIGJlIHNldCB0byAibm8iIHRvIGluZGljYXRlIHRoYXQgbm8gbGQu c28gY29weSBzaG91bGQgYmUgbWFkZS4KLSsJKiBnZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwIChz b2xpYl9icCk6IE5ldyBjb25zdGFudC4KLSsJKHJlYWNoXzEpOiBVc2UgdGhlIGFib3ZlIGluc3Rl YWQgb2YgIl9kbF9kZWJ1Z19zdGF0ZSIuCi0rCSh0ZXN0X2F0dGFjaCk6IExpa2V3aXNlLgotKwko dGVzdF9sZCk6IExpa2V3aXNlLgotKwkqIGdkYi50aHJlYWRzL2Rsb3Blbi1saWJwdGhyZWFkLmV4 cDogTmV3IGZpbGUuCi0rCSogZ2RiLnRocmVhZHMvZGxvcGVuLWxpYnB0aHJlYWQuYzogTGlrZXdp c2UuCi0rCSogZ2RiLnRocmVhZHMvZGxvcGVuLWxpYnB0aHJlYWQtbGliLmM6IExpa2V3aXNlLgot KwkqIGdkYi5iYXNlL3NvbGliLWNvcnJ1cHRlZC5leHA6IERpc2FibGUgdGVzdCBpZiBHREIgaXMg dXNpbmcgcHJvYmVzLgotKwotIDIwMTMtMDUtMzAgIFlhbyBRaSAgPHlhb0Bjb2Rlc291cmNlcnku Y29tPgotIAotIAkqIGdkYi5taS9taS1jbWQtcGFyYW0tY2hhbmdlZC5leHAgKHRlc3RfY29tbWFu ZF9wYXJhbV9jaGFuZ2VkKToKLUluZGV4OiBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv YnJlYWstaW50ZXJwLmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5leHAJMjAxMy0wNi0xMCAxNDoyOToyNC44MTUxMjM5 NDEgKzAyMDAKLSsrKyBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJw LmV4cAkyMDEzLTA2LTEwIDE0OjMwOjE4LjA4NjEwMjM3NSArMDIwMAotQEAgLTEwOSwxMiArMTA5 LDE5IEBAIHByb2Mgc3RyaXBfZGVidWcge2Rlc3R9IHsKLSAgICAgfQotIH0KLSAKLSsjIFRoZSBt YXJrZXIgZnVuY3Rpb24gZm9yIHRoZSBzdGFuZGFyZCBydW50aW1lIGxpbmtlciBpbnRlcmZhY2Ug aXMKLSsjIF9kbF9kZWJ1Z19zdGF0ZS4gIFRoZSBwcm9iZXMtYmFzZWQgaW50ZXJmYWNlIGhhcyBu byBzcGVjaWZpYyBtYXJrZXIKLSsjIGZ1bmN0aW9uOyB0aGUgcHJvYmUgd2Ugd2lsbCBzdG9wIG9u IChpbml0X3N0YXJ0KSBpcyBpbiBkbF9tYWluIHNvIHdlCi0rIyBjaGVjayBmb3IgdGhhdC4KLSsK LStzZXQgc29saWJfYnAgeyhfZGxfZGVidWdfc3RhdGV8ZGxfbWFpbil9Ci0rCi0gIyBJbXBsZW1l bnRhdGlvbiBvZiByZWFjaC4KLSAKLSBwcm9jIHJlYWNoXzEge2Z1bmMgY29tbWFuZCBkaXNwbGFj ZW1lbnR9IHsKLS0gICAgZ2xvYmFsIGdkYl9wcm9tcHQgZXhwZWN0X291dAotKyAgICBnbG9iYWwg Z2RiX3Byb21wdCBleHBlY3Rfb3V0IHNvbGliX2JwCi0gCi0tICAgIGlmIHskZnVuYyA9PSAiX2Rs X2RlYnVnX3N0YXRlIn0gewotKyAgICBpZiB7JGZ1bmMgPT0gJHNvbGliX2JwfSB7Ci0gCSMgQnJl YWtwb2ludCBvbiBfZGxfZGVidWdfc3RhdGUgY2FuIGhhdmUgcHJvYmxlbXMgZHVlIHRvIGl0cyBv dmVybGFwCi0gCSMgd2l0aCB0aGUgZXhpc3RpbmcgaW50ZXJuYWwgYnJlYWtwb2ludCBmcm9tIEdE Qi4KLSAJZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgc3RvcC1vbi1zb2xpYi1ldmVudHMgMSIKLUBA IC0xNDIsMjEgKzE0OSwyMSBAQCBwcm9jIHJlYWNoXzEge2Z1bmMgY29tbWFuZCBkaXNwbGFjZW1l bnR9Ci0gCSAgICBleHBfY29udGludWUKLSAJfQotIAktcmUgIkJyZWFrcG9pbnQgXFswLTlcXSss IFxcLj8oX19HSV8pPyRmdW5jIFxcKC4qXFwpIGF0IC4qOlxbMC05XF0rXHJcbi4qJGdkYl9wcm9t cHQgJCIgewotLQkgICAgaWYgeyRmdW5jID09ICJfZGxfZGVidWdfc3RhdGUifSB7Ci0rCSAgICBp ZiB7JGZ1bmMgPT0gJHNvbGliX2JwfSB7Ci0gCQlmYWlsICR0ZXN0Ci0gCSAgICB9IGVsc2Ugewot IAkJcGFzcyAkdGVzdAotIAkgICAgfQotIAl9Ci0gCS1yZSAiQnJlYWtwb2ludCBcWzAtOVxdKywg XFswLTl4YS1mXF0rIGluIFxcLj8oX19HSV8pPyRmdW5jIFxcKFxcKS4qXHJcbiRnZGJfcHJvbXB0 ICQiIHsKLS0JICAgIGlmIHskZnVuYyA9PSAiX2RsX2RlYnVnX3N0YXRlIn0gewotKwkgICAgaWYg eyRmdW5jID09ICRzb2xpYl9icH0gewotIAkJZmFpbCAkdGVzdAotIAkgICAgfSBlbHNlIHsKLSAJ CXBhc3MgJHRlc3QKLSAJICAgIH0KLSAJfQotIAktcmUgIlN0b3BwZWQgZHVlIHRvIChzcHVyaW91 cyApP3NoYXJlZCBsaWJyYXJ5IGV2ZW50LipcclxuJGdkYl9wcm9tcHQgJCIgewotLQkgICAgaWYg eyRmdW5jID09ICJfZGxfZGVidWdfc3RhdGUifSB7Ci0rCSAgICBpZiB7JGZ1bmMgPT0gJHNvbGli X2JwfSB7Ci0gCQlpZiB7JGRlYnVnX3N0YXRlX2NvdW50ID09IDB9IHsKLSAJCSAgICAjIEZpcnN0 IHN0b3AgZG9lcyBub3QgeWV0IHJlbG9jYXRlIHRoZSBfc3RhcnQgZnVuY3Rpb24KLSAJCSAgICAj IGRlc2NyaXB0b3Igb24gcHBjNjQuCi1AQCAtMTc1LDcgKzE4Miw3IEBAIHByb2MgcmVhY2hfMSB7 ZnVuYyBjb21tYW5kIGRpc3BsYWNlbWVudH0KLSAJZmFpbCAkdGVzdF9kaXNwbGFjZW1lbnQKLSAg ICAgfQotIAotLSAgICBpZiB7JGZ1bmMgPT0gIl9kbF9kZWJ1Z19zdGF0ZSJ9IHsKLSsgICAgaWYg eyRmdW5jID09ICRzb2xpYl9icH0gewotIAlnZGJfdGVzdF9ub19vdXRwdXQgInNldCBzdG9wLW9u LXNvbGliLWV2ZW50cyAwIgotICAgICB9Ci0gfQotQEAgLTM1Nyw3ICszNjQsNyBAQCBwcm9jIHRl c3RfYXR0YWNoIHtmaWxlIGRpc3BsYWNlbWVudCB7cmVsCi0gfQotIAotIHByb2MgdGVzdF9sZCB7 ZmlsZSBpZm1haW4gdHJ5bm9zeW0gZGlzcGxhY2VtZW50fSB7Ci0tICAgIGdsb2JhbCBzcmNkaXIg c3ViZGlyIGdkYl9wcm9tcHQgZXhwZWN0X291dCBpbmZlcmlvcl9leGl0ZWRfcmUKLSsgICAgZ2xv YmFsIHNyY2RpciBzdWJkaXIgZ2RiX3Byb21wdCBleHBlY3Rfb3V0IGluZmVyaW9yX2V4aXRlZF9y ZSBzb2xpYl9icAotIAotICAgICAjIEZpcnN0IHRlc3Qgbm9ybWFsIGBmaWxlJy1jb21tYW5kIGxv YWRlZCAkRklMRSB3aXRoIHN5bWJvbHMuCi0gCi1AQCAtMzg1LDkgKzM5Miw5IEBAIHByb2MgdGVz dF9sZCB7ZmlsZSBpZm1haW4gdHJ5bm9zeW0gZGlzcGwKLSAJZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJz ZXQgYXJncyAke29iamRpcn0vJHtzdWJkaXJ9LyRiaW5maWxlX3Rlc3QiICJzZXQgYXJncyBPQkpE SVIvJHtzdWJkaXJ9LyRiaW5maWxlX3Rlc3QiCi0gICAgIH0KLSAKLS0gICAgcmVhY2ggIl9kbF9k ZWJ1Z19zdGF0ZSIgInJ1biIgJGRpc3BsYWNlbWVudAotKyAgICByZWFjaCAkc29saWJfYnAgInJ1 biIgJGRpc3BsYWNlbWVudAotIAotLSAgICBnZGJfdGVzdCAiYnQiICIjMCArXFteXHJcblxdKlxc bShfX0dJXyk/X2RsX2RlYnVnX3N0YXRlXFxNLioiICJkbCBidCIKLSsgICAgZ2RiX3Rlc3QgImJ0 IiAiIzAgK1xbXlxyXG5cXSpcXG0oX19HSV8pPyRzb2xpYl9icFxcTS4qIiAiZGwgYnQiCi0gCi0g ICAgIGlmICRpZm1haW4gewotIAlyZWFjaCAibWFpbiIgY29udGludWUgIk5PTkUiCi1AQCAtMzk5 LDcgKzQwNiw3IEBAIHByb2MgdGVzdF9sZCB7ZmlsZSBpZm1haW4gdHJ5bm9zeW0gZGlzcGwKLSAK LSAgICAgIyBUcnkgcmUtcnVuIGlmIHRoZSBuZXcgUElFIGRpc3BsYWNlbWVudCB0YWtlcyBlZmZl Y3QuCi0gICAgIGdkYl90ZXN0ICJraWxsIiAiIiAia2lsbCIge0tpbGwgdGhlIHByb2dyYW0gYmVp bmcgZGVidWdnZWRcPyBcKHkgb3IgblwpIH0gInkiCi0tICAgIHJlYWNoICJfZGxfZGVidWdfc3Rh dGUiICJydW4iICRkaXNwbGFjZW1lbnQKLSsgICAgcmVhY2ggJHNvbGliX2JwICJydW4iICRkaXNw bGFjZW1lbnQKLSAKLSAgICAgaWYgJGlmbWFpbiB7Ci0gCXRlc3RfY29yZSAkZmlsZSAkZGlzcGxh Y2VtZW50Ci1AQCAtNDMxLDcgKzQzOCw3IEBAIHByb2MgdGVzdF9sZCB7ZmlsZSBpZm1haW4gdHJ5 bm9zeW0gZGlzcGwKLSAJZ2RiX3Rlc3QgImV4ZWMtZmlsZSAkZmlsZSIgImV4ZWMtZmlsZSAkZXNj YXBlZGZpbGUiICJsb2FkIgotIAotIAlpZiAkaWZtYWluIHsKLS0JICAgIHJlYWNoICJfZGxfZGVi dWdfc3RhdGUiIHJ1biAkZGlzcGxhY2VtZW50Ci0rCSAgICByZWFjaCAkc29saWJfYnAgcnVuICRk aXNwbGFjZW1lbnQKLSAKLSAJICAgICMgVXNlIHR3byBzZXBhcmF0ZSBnZGJfdGVzdF9tdWx0aXBs ZSBzdGF0ZW1lbnRzIHRvIGF2b2lkIHRpbWVvdXRzIGR1ZQotIAkgICAgIyB0byBzbG93IHByb2Nl c3Npbmcgb2Ygd2lsZGNhcmQgY2FwdHVyaW5nIGxvbmcgb3V0cHV0Ci1JbmRleDogZ2RiLTcuNi9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NvbGliLWNvcnJ1cHRlZC5leHAKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy42Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zb2xpYi1jb3JydXB0ZWQuZXhw CTIwMTMtMDYtMTAgMTQ6Mjk6MjQuODE2MTIzOTQxICswMjAwCi0rKysgZ2RiLTcuNi9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL3NvbGliLWNvcnJ1cHRlZC5leHAJMjAxMy0wNi0xMCAxNDozMDoxOC4w ODYxMDIzNzUgKzAyMDAKLUBAIC0zNiw2ICszNiwzMyBAQCBpZiAhW3J1bnRvX21haW5dIHsKLSAg ICAgcmV0dXJuCi0gfQotIAotKyMgV2l0aCBwcm9iZXMgaW50ZXJmYWNlIEdEQiBubyBsb25nZXIg c2NhbnMgdGhlIGluZmVyaW9yIGxpYnJhcnkgbGlzdCBzbyBpdHMKLSsjIGNvcnJ1cHRpb24gY2Fu bm90IGJlIHRlc3RlZC4gIFRoZXJlIGlzIG5vIHdheSB0byBkaXNhYmxlIHRoZSBwcm9iZXMKLSsj IGludGVyZmFjZS4KLSsKLStzZXQgcHJvYmVzIHsgaW5pdF9zdGFydCBpbml0X2NvbXBsZXRlIG1h cF9zdGFydCByZWxvY19jb21wbGV0ZSB1bm1hcF9zdGFydAotKwkgICAgIHVubWFwX2NvbXBsZXRl IH0KLStzZXQgdGVzdCAiaW5mbyBwcm9iZXMiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRl c3QgewotKyAgICAtcmUgIl5ydGxkXFsgXHRcXSsoPzpydGxkXyk/KFxbYS16X1xdKylcWyBcdFxd IiB7Ci0rCXNldCBpZHggW2xzZWFyY2ggLWV4YWN0ICRwcm9iZXMgJGV4cGVjdF9vdXQoMSxzdHJp bmcpXQotKwlpZiB7ICRpZHggPj0gMCB9IHsKLSsJICAgIHNldCBwcm9iZXMgW2xyZXBsYWNlICRw cm9iZXMgJGlkeCAkaWR4XQotKwl9Ci0rCWV4cF9jb250aW51ZQotKyAgICB9Ci0rICAgIC1yZSAi XlxbXlxyXG5cXSpcclxuIiB7Ci0rCWV4cF9jb250aW51ZQotKyAgICB9Ci0rICAgIC1yZSAiXiRn ZGJfcHJvbXB0ICQiIHsKLSsgICAgfQotK30KLStpZiB7IFtsbGVuZ3RoICRwcm9iZXNdID09IDAg fSB7Ci0rICAgIHhmYWlsICR0ZXN0Ci0rICAgIHVudGVzdGVkICJHREIgaXMgdXNpbmcgcHJvYmVz IgotKyAgICByZXR1cm4KLSt9Ci0rCi0gZ2RiX3Rlc3QgImluZm8gc2hhcmVkbGlicmFyeSIgIkZy b20gKiBUbyAuKiIgIm5vcm1hbCBsaXN0IgotIAotICMgR0RCIGNoZWNrcyB0aGVyZSBmb3IgbWF0 Y2hpbmcgTF9QUkVWLgotSW5kZXg6IGdkYi03LjYvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9k bG9wZW4tbGlicHRocmVhZC1saWIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAx LTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjYvZ2RiL3Rlc3RzdWl0ZS9n ZGIudGhyZWFkcy9kbG9wZW4tbGlicHRocmVhZC1saWIuYwkyMDEzLTA2LTEwIDE0OjMwOjE4LjA4 NjEwMjM3NSArMDIwMAotQEAgLTAsMCArMSw0MCBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFy dCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMTEtMjAxMyBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsg ICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2luY2x1ZGUgPHB0aHJlYWQuaD4KLSsjaW5jbHVkZSA8 YXNzZXJ0Lmg+Ci0rCi0rc3RhdGljIHZvaWQgKgotK3RmdW5jICh2b2lkICphcmcpCi0rewotKyAg dm9pZCAoKm5vdGlmeXApICh2b2lkKSA9IGFyZzsKLSsKLSsgIG5vdGlmeXAgKCk7Ci0rfQotKwot K3ZvaWQKLStmICh2b2lkICgqbm90aWZ5cCkgKHZvaWQpKQotK3sKLSsgIHB0aHJlYWRfdCB0Owot KyAgaW50IGk7Ci0rCi0rICBpID0gcHRocmVhZF9jcmVhdGUgKCZ0LCBOVUxMLCB0ZnVuYywgbm90 aWZ5cCk7Ci0rICBhc3NlcnQgKGkgPT0gMCk7Ci0rCi0rICBpID0gcHRocmVhZF9qb2luICh0LCBO VUxMKTsKLSsgIGFzc2VydCAoaSA9PSAwKTsKLSt9Ci1JbmRleDogZ2RiLTcuNi9nZGIvdGVzdHN1 aXRlL2dkYi50aHJlYWRzL2Rsb3Blbi1saWJwdGhyZWFkLmMKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2 L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy42L2dk Yi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvZGxvcGVuLWxpYnB0aHJlYWQuYwkyMDEzLTA2LTEwIDE0 OjMwOjE4LjA4NzEwMjM3NSArMDIwMAotQEAgLTAsMCArMSw0NiBAQAotKy8qIFRoaXMgdGVzdGNh c2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIw MTEtMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAg IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2luY2x1ZGUgPGRsZmNuLmg+Ci0rI2lu Y2x1ZGUgPHN0ZGRlZi5oPgotKyNpbmNsdWRlIDxhc3NlcnQuaD4KLSsKLStzdGF0aWMgY29uc3Qg Y2hhciAqdm9sYXRpbGUgZmlsZW5hbWU7Ci0rCi0rc3RhdGljIHZvaWQKLStub3RpZnkgKHZvaWQp Ci0rewotKyAgZmlsZW5hbWUgPSBOVUxMOyAvKiBub3RpZnktaGVyZSAqLwotK30KLSsKLStpbnQK LSttYWluICh2b2lkKQotK3sKLSsgIHZvaWQgKmg7Ci0rICB2b2lkICgqZnApICh2b2lkICgqKSAo dm9pZCkpOwotKwotKyAgYXNzZXJ0IChmaWxlbmFtZSAhPSBOVUxMKTsKLSsgIGggPSBkbG9wZW4g KGZpbGVuYW1lLCBSVExEX0xBWlkpOwotKyAgYXNzZXJ0IChoICE9IE5VTEwpOwotKwotKyAgZnAg PSBkbHN5bSAoaCwgImYiKTsKLSsgIGFzc2VydCAoZnAgIT0gTlVMTCk7Ci0rCi0rICBmcCAobm90 aWZ5KTsKLSsKLSsgIHJldHVybiAwOwotK30KLUluZGV4OiBnZGItNy42L2dkYi90ZXN0c3VpdGUv Z2RiLnRocmVhZHMvZGxvcGVuLWxpYnB0aHJlYWQuZXhwCi09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9u dWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNi9nZGIv dGVzdHN1aXRlL2dkYi50aHJlYWRzL2Rsb3Blbi1saWJwdGhyZWFkLmV4cAkyMDEzLTA2LTEwIDE0 OjMwOjE4LjA4NzEwMjM3NSArMDIwMAotQEAgLTAsMCArMSw3NCBAQAotKyMgQ29weXJpZ2h0IDIw MTEtMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjCi0rIyBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK LSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LgotKwotK2lmIHshW2lzdGFyZ2V0ICotbGludXgqXSB8fCBbc2tpcF9z aGxpYl90ZXN0c119IHsKLSsgICAgcmV0dXJuIDAKLSt9Ci0rCi0rbG9hZF9saWIgcHJlbGluay1z dXBwb3J0LmV4cAotKwotK3NldCB0ZXN0ZmlsZSAiZGxvcGVuLWxpYnB0aHJlYWQiCi0rc2V0IHNy Y21haW5maWxlICR7dGVzdGZpbGV9LmMKLStzZXQgc3JjbGliZmlsZSAke3Rlc3RmaWxlfS1saWIu YwotK3NldCBleGVjdXRhYmxlICR7dGVzdGZpbGV9Ci0rc2V0IGJpbmZpbGVfbGliICR7b2JqZGly fS8ke3N1YmRpcn0vJHtleGVjdXRhYmxlfS5zbwotK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1 YmRpcn0vJHtleGVjdXRhYmxlfQotK3NldCBsaWJfZGxvcGVuIFtzaGxpYl90YXJnZXRfZmlsZSAk e2V4ZWN1dGFibGV9LnNvXQotKwotKyMgVXNlIGJ1aWxkX2V4ZWN1dGFibGVfb3duX2xpYnMgYXMg cHJlbGlua2VkIGxpYnB0aHJlYWQuc28gY2FuIHByb2R1Y2UgZmFsc2UKLSsjIFBBU1MgLSBpdCBp cyBPSyBpZiBHREIgcHJvY2Vzc2VzIGl0IHN0aWxsIGJlZm9yZSByZWxvY2F0aW9uLgotKwotK3Nl dCByZWxpbmtfYXJncyBbYnVpbGRfZXhlY3V0YWJsZV9vd25fbGlicyAke3Rlc3RmaWxlfS5leHAg JHtleGVjdXRhYmxlfS5zbyAkc3JjbGliZmlsZSB7ZGVidWcgc2hsaWJfcHRocmVhZHN9IG5vXQot K2lmIHskcmVsaW5rX2FyZ3MgPT0gIiIgfHwgIVtwcmVsaW5rX25vICRyZWxpbmtfYXJnc10KLSsg ICAgfHwgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7ZXhlY3V0YWJsZX0g JHtzcmNtYWluZmlsZX0ge2RlYnVnIHNobGliX2xvYWR9XSB9IHsKLSsgICAgcmV0dXJuIC0xCi0r fQotK2dkYl9sb2FkX3NobGlicyAkYmluZmlsZV9saWIKLSsKLStpZiB7ICFbcnVudG9fbWFpbl0g fSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLStzZXQgdGVzdCAiaW5mbyBwcm9iZXMgYWxsIHJ0 bGQgcnRsZF9tYXBfY29tcGxldGUiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRlc3Qgewot KyAgICAtcmUgIlxbIFx0XF1ydGxkX21hcF9jb21wbGV0ZVxbIFx0XF0rMHhcWzAtOWEtZlxdKy4q XHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJcGFzcyAkdGVzdAotKyAgICB9Ci0rICAgIC1yZSAiTm8g cHJvYmVzIG1hdGNoZWRcXC5cclxuJGdkYl9wcm9tcHQgJCIgewotKwl4ZmFpbCAkdGVzdAotKwl1 bnRlc3RlZCAke3Rlc3RmaWxlfS5leHAKLSsJcmV0dXJuCi0rICAgIH0KLSt9Ci0rCi0rc2V0IHRl c3QgImxpYnB0aHJlYWQuc28gbm90IGZvdW5kIgotK2dkYl90ZXN0X211bHRpcGxlICJpbmZvIHNo YXJlZGxpYnJhcnkiICR0ZXN0IHsKLSsgICAgLXJlICIvbGlicHRocmVhZFxcLnNvLipcclxuJGdk Yl9wcm9tcHQgJCIgewotKwlmYWlsICR0ZXN0Ci0rICAgIH0KLSsgICAgLXJlICIvbGliY1xcLnNv LipcclxuJGdkYl9wcm9tcHQgJCIgewotKwlwYXNzICR0ZXN0Ci0rICAgIH0KLSt9Ci0rCi0rZ2Ri X3Rlc3QgInNldCB2YXJpYWJsZSBmaWxlbmFtZT1cIiRsaWJfZGxvcGVuXCIiCi0rCi0rZ2RiX2Jy ZWFrcG9pbnQgIm5vdGlmeSIKLSsKLSsjIFRoZSBlcnJvciB3YXM6Ci0rIyBDYW5ub3QgZmluZCBu ZXcgdGhyZWFkczogZ2VuZXJpYyBlcnJvcgotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJu b3RpZnkiICIuKiBub3RpZnktaGVyZSAuKiIKLSsKLStnZGJfdGVzdCAiaW5mbyBzaGFyZWRsaWJy YXJ5IiB7L2xpYnB0aHJlYWRcLnNvLip9ICJsaWJwdGhyZWFkLnNvIGZvdW5kIgotSW5kZXg6IGdk Yi03LjYvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYu b3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTMtMDYtMTAgMTQ6Mjk6MjQuODE5MTIz OTQwICswMjAwCi0rKysgZ2RiLTcuNi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTMtMDYt MTAgMTQ6MzA6NDQuNjU0MDkyMTQwICswMjAwCi1AQCAtNDAxMSwyMiArNDAxMSw2IEBAIHByb2Mg YnVpbGRfZXhlY3V0YWJsZV9mcm9tX3NwZWNzIHt0ZXN0bmEKLSAKLSAgICAgc2V0IGJpbmZpbGUg W3N0YW5kYXJkX291dHB1dF9maWxlICRleGVjdXRhYmxlXQotIAotLSAgICBzZXQgb2JqZWN0cyB7 fQotLSAgICBzZXQgaSAwCi0tICAgIGZvcmVhY2gge3MgbG9jYWxfb3B0aW9uc30gJGFyZ3Mgewot LSAgICAgICAgaWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c30iICIk e2JpbmZpbGV9JHtpfS5vIiBvYmplY3QgJGxvY2FsX29wdGlvbnNdICE9ICIiIH0gewotLSAgICAg ICAgICAgIHVudGVzdGVkICR0ZXN0bmFtZQotLSAgICAgICAgICAgIHJldHVybiAtMQotLSAgICAg ICAgfQotLSAgICAgICAgbGFwcGVuZCBvYmplY3RzICIke2JpbmZpbGV9JHtpfS5vIgotLQlpbmNy IGkKLS0gICAgfQotLSAgICAKLS0gICAgaWYgIHsgW2dkYl9jb21waWxlICRvYmplY3RzICIke2Jp bmZpbGV9IiBleGVjdXRhYmxlICRvcHRpb25zXSAhPSAiIiB9IHsKLS0gICAgICAgIHVudGVzdGVk ICR0ZXN0bmFtZQotLSAgICAgICAgcmV0dXJuIC0xCi0tICAgIH0KLS0KLSAgICAgc2V0IGluZm9f b3B0aW9ucyAiIgotICAgICBpZiB7IFtsc2VhcmNoIC1leGFjdCAkb3B0aW9ucyAiYysrIl0gPj0g MCB9IHsKLSAJc2V0IGluZm9fb3B0aW9ucyAiYysrIgotQEAgLTQwMzQsNiArNDAxOCw0MiBAQCBw cm9jIGJ1aWxkX2V4ZWN1dGFibGVfZnJvbV9zcGVjcyB7dGVzdG5hCi0gICAgIGlmIFtnZXRfY29t cGlsZXJfaW5mbyAke2luZm9fb3B0aW9uc31dIHsKLSAgICAgICAgIHJldHVybiAtMQotICAgICB9 Ci0rCi0rICAgIHNldCBiaW5maWxlIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAkZXhlY3V0YWJsZV0K LSsKLSsgICAgc2V0IGZ1bmMgZ2RiX2NvbXBpbGUKLSsgICAgc2V0IGZ1bmNfaW5kZXggW2xzZWFy Y2ggLXJlZ2V4cCAkb3B0aW9ucyB7XihwdGhyZWFkc3xzaGxpYnxzaGxpYl9wdGhyZWFkcykkfV0K LSsgICAgaWYgeyRmdW5jX2luZGV4ICE9IC0xfSB7Ci0rCXNldCBmdW5jICIke2Z1bmN9X1tsaW5k ZXggJG9wdGlvbnMgJGZ1bmNfaW5kZXhdIgotKyAgICB9Ci0rCi0rICAgICMgZ2RiX2NvbXBpbGVf c2hsaWIgYW5kIGdkYl9jb21waWxlX3NobGliX3B0aHJlYWRzIGRvIG5vdCB1c2UgdGhlIDNyZAot KyAgICAjIHBhcmFtZXRlci4gIFRoZXkgYWxzbyByZXF1aXJlcyAkc291cmNlcyB3aGlsZSBnZGJf Y29tcGlsZSBhbmQKLSsgICAgIyBnZGJfY29tcGlsZV9wdGhyZWFkcyByZXF1aXJlICRvYmplY3Rz LiAgTW9yZW92ZXIgdGhleSBpZ25vcmUgYW55IG9wdGlvbnMuCi0rICAgIGlmIFtzdHJpbmcgbWF0 Y2ggZ2RiX2NvbXBpbGVfc2hsaWIqICRmdW5jXSB7Ci0rCXNldCBzb3VyY2VzX3BhdGgge30KLSsJ Zm9yZWFjaCB7cyBsb2NhbF9vcHRpb25zfSAkYXJncyB7Ci0rCSAgICBsYXBwZW5kIHNvdXJjZXNf cGF0aCAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3N9IgotKwl9Ci0rCXNldCByZXQgWyRmdW5jICRz b3VyY2VzX3BhdGggIiR7YmluZmlsZX0iICRvcHRpb25zXQotKyAgICB9IGVsc2UgewotKwlzZXQg b2JqZWN0cyB7fQotKwlzZXQgaSAwCi0rCWZvcmVhY2gge3MgbG9jYWxfb3B0aW9uc30gJGFyZ3Mg ewotKwkgICAgaWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c30iICIk e2JpbmZpbGV9JHtpfS5vIiBvYmplY3QgJGxvY2FsX29wdGlvbnNdICE9ICIiIH0gewotKwkJdW50 ZXN0ZWQgJHRlc3RuYW1lCi0rCQlyZXR1cm4gLTEKLSsJICAgIH0KLSsJICAgIGxhcHBlbmQgb2Jq ZWN0cyAiJHtiaW5maWxlfSR7aX0ubyIKLSsJICAgIGluY3IgaQotKwl9Ci0rCXNldCByZXQgWyRm dW5jICRvYmplY3RzICIke2JpbmZpbGV9IiBleGVjdXRhYmxlICRvcHRpb25zXQotKyAgICB9Ci0r ICAgIGlmICB7ICRyZXQgIT0gIiIgfSB7Ci0rICAgICAgICB1bnRlc3RlZCAkdGVzdG5hbWUKLSsg ICAgICAgIHJldHVybiAtMQotKyAgICB9Ci0rCi0gICAgIHJldHVybiAwCi0gfQotIAotSW5kZXg6 IGdkYi03LjYvZ2RiL3Rlc3RzdWl0ZS9saWIvcHJlbGluay1zdXBwb3J0LmV4cAotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjYub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9wcmVsaW5rLXN1cHBvcnQuZXhw CTIwMTMtMDYtMTAgMTQ6Mjk6MjQuODE5MTIzOTQwICswMjAwCi0rKysgZ2RiLTcuNi9nZGIvdGVz dHN1aXRlL2xpYi9wcmVsaW5rLXN1cHBvcnQuZXhwCTIwMTMtMDYtMTAgMTQ6MzA6MTguMDg5MTAy Mzc0ICswMjAwCi1AQCAtOTUsOCArOTUsOSBAQCBwcm9jIGZpbGVfY29weSB7c3JjIGRlc3R9IHsK LSAjIFdyYXAgZnVuY3Rpb24gYnVpbGRfZXhlY3V0YWJsZSBzbyB0aGF0IHRoZSByZXN1bHRpbmcg ZXhlY3V0YWJsZSBpcyBmdWxseQotICMgc2VsZi1zdWZmaWNpZW50ICh3aXRob3V0IGRlcGVuZGVu Y2llcyBvbiBzeXN0ZW0gbGlicmFyaWVzKS4gIFBhcmFtZXRlcgotICMgSU5URVJQIG1heSBiZSB1 c2VkIHRvIHNwZWNpZnkgYSBsb2FkZXIgKGxkLnNvKSB0byBiZSB1c2VkIHRoYXQgaXMKLS0jIGRp ZmZlcmVudCBmcm9tIHRoZSBkZWZhdWx0IHN5c3RlbSBvbmUuICBMaWJyYXJpZXMgb24gd2hpY2gg dGhlIGV4ZWN1dGFibGUKLS0jIGRlcGVuZHMgYXJlIGNvcGllZCBpbnRvIGRpcmVjdG9yeSBESVIu ICBEZWZhdWx0IERJUiB2YWx1ZSB0bwotKyMgZGlmZmVyZW50IGZyb20gdGhlIGRlZmF1bHQgc3lz dGVtIG9uZS4gIElOVEVSUCBjYW4gYmUgc2V0IHRvICJubyIgaWYgbm8gbGQuc28KLSsjIGNvcHkg c2hvdWxkIGJlIG1hZGUuICBMaWJyYXJpZXMgb24gd2hpY2ggdGhlIGV4ZWN1dGFibGUgZGVwZW5k cyBhcmUgY29waWVkCi0rIyBpbnRvIGRpcmVjdG9yeSBESVIuICBEZWZhdWx0IERJUiB2YWx1ZSB0 bwotICMgYCR7b2JqZGlyfS8ke3N1YmRpcn0vJHtFWEVDVVRBQkxFfS5kJy4KLSAjCi0gIyBJbiBj YXNlIG9mIHN1Y2Nlc3MsIHJldHVybiBhIHN0cmluZyBjb250YWluaW5nIHRoZSBhcmd1bWVudHMg dG8gYmUgdXNlZAotQEAgLTE1MSw4ICsxNTIsMTUgQEAgcHJvYyBidWlsZF9leGVjdXRhYmxlX293 bl9saWJzIHt0ZXN0bmFtZQotIAotICAgICBpZiB7JGludGVycCA9PSAiIn0gewotIAlzZXQgaW50 ZXJwX3N5c3RlbSBbc2VjdGlvbl9nZXQgJGJpbmZpbGUgLmludGVycF0KLS0Jc2V0IGludGVycCAk e2Rpcn0vW2ZpbGUgdGFpbCAkaW50ZXJwX3N5c3RlbV0KLS0JZmlsZV9jb3B5ICRpbnRlcnBfc3lz dGVtICRpbnRlcnAKLSsJaWYgeyRpbnRlcnBfc3lzdGVtID09ICIifSB7Ci0rCSAgICBmYWlsICIk dGVzdCBjb3VsZCBub3QgZmluZCAuaW50ZXJwIgotKwl9IGVsc2UgewotKwkgICAgc2V0IGludGVy cCAke2Rpcn0vW2ZpbGUgdGFpbCAkaW50ZXJwX3N5c3RlbV0KLSsJICAgIGZpbGVfY29weSAkaW50 ZXJwX3N5c3RlbSAkaW50ZXJwCi0rCX0KLSsgICAgfQotKyAgICBpZiB7JGludGVycCA9PSAibm8i fSB7Ci0rCXNldCBpbnRlcnAgIiIKLSAgICAgfQotIAotICAgICBzZXQgZGVzdHMge30KLUBAIC0x NjQsMTMgKzE3MiwxOSBAQCBwcm9jIGJ1aWxkX2V4ZWN1dGFibGVfb3duX2xpYnMge3Rlc3RuYW1l Ci0gCi0gICAgICMgRG8gbm90IGxhcHBlbmQgaXQgc28gdGhhdCAiLXJwYXRoICRkaXIiIG92ZXJy aWRlcyBhbnkgcG9zc2libGUgIi1ycGF0aCJzCi0gICAgICMgc3BlY2lmaWVkIGJ5IHRoZSBjYWxs ZXIgdG8gYmUgYWJsZSB0byBsaW5rIGl0IGZvciBsZGQiIGFib3ZlLgotLSAgICBzZXQgb3B0aW9u cyBbbGluc2VydCAkb3B0aW9ucyAwICJsZGZsYWdzPS1XbCwtLWR5bmFtaWMtbGlua2VyLCRpbnRl cnAsLXJwYXRoLCRkaXIiXQotKyAgICBzZXQgb3B0aW9ucyBbbGluc2VydCAkb3B0aW9ucyAwICJs ZGZsYWdzPS1XbCwtcnBhdGgsJGRpciJdCi0rICAgIGlmIHskaW50ZXJwICE9ICIifSB7Ci0rCXNl dCBvcHRpb25zIFtsaW5zZXJ0ICRvcHRpb25zIDAgImxkZmxhZ3M9LVdsLC0tZHluYW1pYy1saW5r ZXIsJGludGVycCJdCi0rICAgIH0KLSAKLSAgICAgaWYge1tidWlsZF9leGVjdXRhYmxlICR0ZXN0 bmFtZSAkZXhlY3V0YWJsZSAkc291cmNlcyAkb3B0aW9uc10gPT0gLTF9IHsKLSAJcmV0dXJuICIi Ci0gICAgIH0KLSAKLS0gICAgc2V0IHByZWxpbmtfYXJncyAiLS1keW5hbWljLWxpbmtlcj0kaW50 ZXJwIC0tbGQtbGlicmFyeS1wYXRoPSRkaXIgJGJpbmZpbGUgJGludGVycCBbY29uY2F0ICRkZXN0 c10iCi0rICAgIHNldCBwcmVsaW5rX2FyZ3MgIi0tbGQtbGlicmFyeS1wYXRoPSRkaXIgJGJpbmZp bGUgW2NvbmNhdCAkZGVzdHNdIgotKyAgICBpZiB7JGludGVycCAhPSAiIn0gewotKwlzZXQgcHJl bGlua19hcmdzICItLWR5bmFtaWMtbGlua2VyPSRpbnRlcnAgJHByZWxpbmtfYXJncyAkaW50ZXJw IgotKyAgICB9Ci0gICAgIHJldHVybiAkcHJlbGlua19hcmdzCi0gfQotIAoKZGlmZiAtLWdpdCBh L2dkYi1kbG9wZW4tc3RhcC1wcm9iZS05b2Y5LnBhdGNoIGIvZ2RiLWRsb3Blbi1zdGFwLXByb2Jl LTlvZjkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyYmI4OTcuLjAwMDAw MDAKLS0tIGEvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTlvZjkucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSw0MTUgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMy0w Ni9tc2cwMDAyMC5odG1sCi0KLSMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMjAxMy8w Ni8wNCAxMzoyMzozMQkxLjM2ODMKLSMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMjAx My8wNi8wNCAxMzozMTowMAkxLjM2ODQKLSMjIC0xLDMgKzEsMTMgQEAKLSsyMDEzLTA2LTA0ICBH YXJ5IEJlbnNvbiAgPGdiZW5zb25AcmVkaGF0LmNvbT4KLSsKLSsJKiBnZGIuYmFzZS9icmVhay1w cm9iZXMuZXhwOiBOZXcgZmlsZS4KLSsJKiBnZGIuYmFzZS9icmVhay1wcm9iZXMuYzogTGlrZXdp c2UuCi0rCSogZ2RiLmJhc2UvYnJlYWstcHJvYmVzLXNvbGliLmM6IExpa2V3aXNlLgotKwkqIGdk Yi5iYXNlL2luZm8tc2hhcmVkLmV4cDogTmV3IGZpbGUuCi0rCSogZ2RiLmJhc2UvaW5mby1zaGFy ZWQuYzogTGlrZXdpc2UuCi0rCSogZ2RiLmJhc2UvaW5mby1zaGFyZWQtc29saWIxLmM6IExpa2V3 aXNlLgotKwkqIGdkYi5iYXNlL2luZm8tc2hhcmVkLXNvbGliMi5jOiBMaWtld2lzZS4KLSsKLSAy MDEzLTA2LTA0ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0g CSAgICBHYXJ5IEJlbnNvbiAgPGdiZW5zb25AcmVkaGF0LmNvbT4KLSAKLS0tLSBzcmMvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9icmVhay1wcm9iZXMtc29saWIuYwotKysrIHNyYy9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2JyZWFrLXByb2Jlcy1zb2xpYi5jCTIwMTMtMDYtMTAgMTI6MTU6MTEuNTQ4 OTM1NDEzICswMDAwCi1AQCAtMCwwICsxLDIyIEBACi0rLyogQ29weXJpZ2h0IDIwMTItMjAxMyBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsg ICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rCi0raW50Ci0rZm9v IChpbnQgbikKLSt7Ci0rICByZXR1cm4gbiAqIG4gLyAxNzsKLSt9Ci0tLS0gc3JjL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvYnJlYWstcHJvYmVzLmMKLSsrKyBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9icmVhay1wcm9iZXMuYwkyMDEzLTA2LTEwIDEyOjE1OjEyLjA0NzcxNzM4MyArMDAwMAot QEAgLTAsMCArMSwzMCBAQAotKy8qIENvcHlyaWdodCAyMDEyLTIwMTMgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAg IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsg ICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u ICAqLwotKwotKyNpbmNsdWRlIDxkbGZjbi5oPgotKyNpbmNsdWRlIDxhc3NlcnQuaD4KLSsjaW5j bHVkZSA8c3RkZGVmLmg+Ci0rCi0raW50Ci0rbWFpbiAodm9pZCkKLSt7Ci0rICB2b2lkICpoYW5k bGUgPSBkbG9wZW4gKFNITElCX05BTUUsIFJUTERfTEFaWSk7Ci0rCi0rICBhc3NlcnQgKGhhbmRs ZSAhPSBOVUxMKTsKLSsKLSsgIGRsY2xvc2UgKGhhbmRsZSk7Ci0rCi0rICByZXR1cm4gMDsKLSt9 Ci0tLS0gc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstcHJvYmVzLmV4cAotKysrIHNy Yy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLXByb2Jlcy5leHAJMjAxMy0wNi0xMCAxMjox NToxMi42MjAzNjgwNDAgKzAwMDAKLUBAIC0wLDAgKzEsNzggQEAKLSsjIENvcHlyaWdodCAyMDEy LTIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQot KyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsj IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LgotKwotK2lmIHsgW3NraXBfc2hsaWJfdGVzdHNdIH0gewotKyAgICByZXR1 cm4gMAotK30KLSsKLStzdGFuZGFyZF90ZXN0ZmlsZQotKwotK3NldCBsaWJuYW1lICR0ZXN0Zmls ZS1zb2xpYgotK3NldCBzcmNmaWxlX2xpYiAkc3JjZGlyLyRzdWJkaXIvJGxpYm5hbWUuYwotK3Nl dCBiaW5maWxlX2xpYiBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJGxpYm5hbWUuc29dCi0rCi0rc2V0 IG5vcm1hbF9icCAiX2RsX2RlYnVnX3N0YXRlIgotK3NldCBwcm9iZXNfYnAgImRsX21haW4iCi0r Ci0raWYgeyBbZ2RiX2NvbXBpbGVfc2hsaWIgJHNyY2ZpbGVfbGliICRiaW5maWxlX2xpYiBcCi0r CSAgW2xpc3QgYWRkaXRpb25hbF9mbGFncz0tZlBJQ11dICE9ICIiIH0gewotKyAgICB1bnRlc3Rl ZCAiQ291bGQgbm90IGNvbXBpbGUgJGJpbmZpbGVfbGliLiIKLSsgICAgcmV0dXJuIC0xCi0rfQot KwotK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHRlc3RmaWxlLmV4cCAkdGVzdGZpbGUgJHNy Y2ZpbGUgXAotKwkgIFtsaXN0IGFkZGl0aW9uYWxfZmxhZ3M9LURTSExJQl9OQU1FPVwiJGJpbmZp bGVfbGliXCIgbGlicz0tbGRsXV0gfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLSsjIEVuYWJs ZSBzdG9wLW9uLXNvbGliLWV2ZW50cwotK2dkYl90ZXN0X25vX291dHB1dCAic2V0IHN0b3Atb24t c29saWItZXZlbnRzIDEiCi0rCi0rIyBTdGFydCB0aGUgaW5mZXJpb3IgYW5kIHJ1biB0byB0aGUg Zmlyc3Qgc3RvcAotK2dkYl9ydW5fY21kCi0rZ2RiX3Rlc3QgIiIgIi4qU3RvcHBlZCBkdWUgdG8g c2hhcmVkIGxpYnJhcnkgZXZlbnQuKiIKLSsKLSsjIFhGQUlMIGlmIHdlIGFyZSBub3QgdXNpbmcg cHJvYmVzCi0rc2V0IHRlc3QgImVuc3VyZSB1c2luZyBwcm9iZXMiCi0rc2V0IHVzaW5nX3Byb2Jl cyAwCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgImJ0IiAkdGVzdCB7Ci0rICAgIC1yZSAiIzAgK1xbXlxy XG5cXSpcXG0oX19HSV8pPyRub3JtYWxfYnBcXE0uKiRnZGJfcHJvbXB0ICQiIHsKLSsJdW50ZXN0 ZWQgInByb2JlcyBub3QgcHJlc2VudCBvbiB0aGlzIHN5c3RlbSIKLSsgICAgfQotKyAgICAtcmUg IiMwICtcW15cclxuXF0qXFxtKF9fR0lfKT8kcHJvYmVzX2JwXFxNLiokZ2RiX3Byb21wdCAkIiB7 Ci0rCXBhc3MgJHRlc3QKLSsJc2V0IHVzaW5nX3Byb2JlcyAxCi0rICAgIH0KLSt9Ci0rCi0raWYg eyAkdXNpbmdfcHJvYmVzIH0gewotKyAgICAjIFJ1biB0aWwgaXQgbG9hZHMgb3VyIGxpYnJhcnkK LSsgICAgc2V0IHRlc3QgInJ1biB0aWwgb3VyIGxpYnJhcnkgbG9hZHMiCi0rICAgIHNldCBub3Rf bG9hZGVkX2xpYnJhcnkgMQotKyAgICB3aGlsZSB7ICRub3RfbG9hZGVkX2xpYnJhcnkgfSB7Ci0r CXNldCBub3RfbG9hZGVkX2xpYnJhcnkgMAotKwlnZGJfdGVzdF9tdWx0aXBsZSAiYyIgJHRlc3Qg ewotKwkgICAgLXJlICJJbmZlcmlvciBsb2FkZWQgJGJpbmZpbGVfbGliXFxNLiokZ2RiX3Byb21w dCAkIiB7Ci0rCQlwYXNzICR0ZXN0Ci0rCSAgICB9Ci0rCSAgICAtcmUgIlN0b3BwZWQgZHVlIHRv IHNoYXJlZCBsaWJyYXJ5IGV2ZW50XFxNLiokZ2RiX3Byb21wdCAkIiB7Ci0rCQlzZXQgbm90X2xv YWRlZF9saWJyYXJ5IDEKLSsJICAgIH0KLSsJfQotKyAgICB9Ci0rCi0rICAgICMgQ2FsbCBzb21l dGhpbmcgdG8gZW5zdXJlIHRoYXQgcmVsb2NhdGlvbiBvY2N1cnJlZAotKyAgICBnZGJfdGVzdCAi Y2FsbCBmb28oMjMpIiAiXFxcJC4qID0gMzEuKlxcXE0uKiIKLSt9Ci0tLS0gc3JjL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvaW5mby1zaGFyZWQtc29saWIxLmMKLSsrKyBzcmMvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9pbmZvLXNoYXJlZC1zb2xpYjEuYwkyMDEzLTA2LTEwIDEyOjE1OjE0LjM5OTEy OTI4OCArMDAwMAotQEAgLTAsMCArMSwyNCBAQAotKy8qIENvcHlyaWdodCAyMDEyLTIwMTMgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uICAqLwotKwotKyNpbmNsdWRlIDxzdGRpby5oPgotKwotK2ludAotK2ZvbyAo aW50IG4pCi0rewotKyAgcHJpbnRmICgiZm9vICVkXG4iLCBuKTsKLSsKLSsgIHJldHVybiAwOwot K30KLS0tLSBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbmZvLXNoYXJlZC1zb2xpYjIuYwot KysrIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2luZm8tc2hhcmVkLXNvbGliMi5jCTIwMTMt MDYtMTAgMTI6MTU6MTQuOTMwMTM1NzQyICswMDAwCi1AQCAtMCwwICsxLDI0IEBACi0rLyogQ29w eXJpZ2h0IDIwMTItMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0r Ci0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2luY2x1ZGUgPHN0ZGlv Lmg+Ci0rCi0raW50Ci0rYmFyIChpbnQgbikKLSt7Ci0rICBwcmludGYgKCJiYXIgJWRcbiIsIG4p OwotKwotKyAgcmV0dXJuIDA7Ci0rfQotLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2lu Zm8tc2hhcmVkLmMKLSsrKyBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbmZvLXNoYXJlZC5j CTIwMTMtMDYtMTAgMTI6MTU6MTUuMzk1NDc0ODE5ICswMDAwCi1AQCAtMCwwICsxLDUyIEBACi0r LyogQ29weXJpZ2h0IDIwMTItMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsK LSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m Ci0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2luY2x1ZGUg PGRsZmNuLmg+Ci0rI2luY2x1ZGUgPGFzc2VydC5oPgotKyNpbmNsdWRlIDxzdGRkZWYuaD4KLSsK LSt2b2lkCi0rc3RvcCAodm9pZCkKLSt7Ci0rfQotKwotK2ludAotK21haW4gKHZvaWQpCi0rewot KyAgdm9pZCAqaGFuZGxlMSwgKmhhbmRsZTI7Ci0rICB2b2lkICgqZnVuYykoaW50KTsKLSsKLSsg IGhhbmRsZTEgPSBkbG9wZW4gKFNITElCMV9OQU1FLCBSVExEX0xBWlkpOwotKyAgYXNzZXJ0ICho YW5kbGUxICE9IE5VTEwpOwotKyAgc3RvcCAoKTsKLSsKLSsgIGhhbmRsZTIgPSBkbG9wZW4gKFNI TElCMl9OQU1FLCBSVExEX0xBWlkpOwotKyAgYXNzZXJ0IChoYW5kbGUyICE9IE5VTEwpOwotKyAg c3RvcCAoKTsKLSsKLSsgIGZ1bmMgPSAodm9pZCAoKikoaW50KSkgZGxzeW0gKGhhbmRsZTEsICJm b28iKTsKLSsgIGZ1bmMgKDEpOwotKwotKyAgZnVuYyA9ICh2b2lkICgqKShpbnQpKSBkbHN5bSAo aGFuZGxlMiwgImJhciIpOwotKyAgZnVuYyAoMik7Ci0rCi0rICBkbGNsb3NlIChoYW5kbGUxKTsK LSsgIHN0b3AgKCk7Ci0rCi0rICBkbGNsb3NlIChoYW5kbGUyKTsKLSsgIHN0b3AgKCk7Ci0rCi0r ICByZXR1cm4gMDsKLSt9Ci0tLS0gc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW5mby1zaGFy ZWQuZXhwCi0rKysgc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW5mby1zaGFyZWQuZXhwCTIw MTMtMDYtMTAgMTI6MTU6MTUuODkxNDUwMjg1ICswMDAwCi1AQCAtMCwwICsxLDE0NiBAQAotKyMg Q29weXJpZ2h0IDIwMTItMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsj IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0r IyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0raWYgeyBbc2tpcF9zaGxpYl90ZXN0c10g fSB7Ci0rICAgIHJldHVybiAwCi0rfQotKwotK3N0YW5kYXJkX3Rlc3RmaWxlCi0rCi0rc2V0IGxp YjFuYW1lICR0ZXN0ZmlsZS1zb2xpYjEKLStzZXQgc3JjZmlsZV9saWIxICRzcmNkaXIvJHN1YmRp ci8kbGliMW5hbWUuYwotK3NldCBiaW5maWxlX2xpYjEgW3N0YW5kYXJkX291dHB1dF9maWxlICRs aWIxbmFtZS5zb10KLStzZXQgZGVmaW5lMSAtRFNITElCMV9OQU1FPVwiJGJpbmZpbGVfbGliMVwi Ci0rCi0rc2V0IGxpYjJuYW1lICR0ZXN0ZmlsZS1zb2xpYjIKLStzZXQgc3JjZmlsZV9saWIyICRz cmNkaXIvJHN1YmRpci8kbGliMm5hbWUuYwotK3NldCBiaW5maWxlX2xpYjIgW3N0YW5kYXJkX291 dHB1dF9maWxlICRsaWIybmFtZS5zb10KLStzZXQgZGVmaW5lMiAtRFNITElCMl9OQU1FPVwiJGJp bmZpbGVfbGliMlwiCi0rCi0raWYgeyBbZ2RiX2NvbXBpbGVfc2hsaWIgJHNyY2ZpbGVfbGliMSAk YmluZmlsZV9saWIxIFwKLSsJICBbbGlzdCBhZGRpdGlvbmFsX2ZsYWdzPS1mUElDXV0gIT0gIiIg fSB7Ci0rICAgIHVudGVzdGVkICJDb3VsZCBub3QgY29tcGlsZSAkYmluZmlsZV9saWIxLiIKLSsg ICAgcmV0dXJuIC0xCi0rfQotKwotK2lmIHsgW2dkYl9jb21waWxlX3NobGliICRzcmNmaWxlX2xp YjIgJGJpbmZpbGVfbGliMiBcCi0rCSAgW2xpc3QgYWRkaXRpb25hbF9mbGFncz0tZlBJQ11dICE9 ICIiIH0gewotKyAgICB1bnRlc3RlZCAiQ291bGQgbm90IGNvbXBpbGUgJGJpbmZpbGVfbGliMi4i Ci0rICAgIHJldHVybiAtMQotK30KLSsKLStzZXQgY2ZsYWdzICIkZGVmaW5lMSAkZGVmaW5lMiIK LStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR0ZXN0ZmlsZS5leHAgJHRlc3RmaWxlICRzcmNm aWxlIFwKLSsJICBbbGlzdCBhZGRpdGlvbmFsX2ZsYWdzPSRjZmxhZ3MgbGlicz0tbGRsXV0gfSB7 Ci0rICAgIHJldHVybiAtMQotK30KLSsKLSsjIFJ1biAiaW5mbyBzaGFyZWRsaWJyYXJ5IiBhbmQg Y2hlY2sgZm9yIHRoZSBwcmVzZW5jZSBvciBhYnNlbmNlIG9mCi0rIyBvdXIgbGlicmFyaWVzLgot K3Byb2MgY2hlY2tfaW5mb19zaGFyZWQgeyB0ZXN0IGV4cGVjdDEgZXhwZWN0MiB9IHsKLSsgICAg Z2xvYmFsIGxpYjFuYW1lCi0rICAgIGdsb2JhbCBsaWIybmFtZQotKyAgICBnbG9iYWwgZ2RiX3By b21wdAotKwotKyAgICBzZXQgYWN0dWFsMSAwCi0rICAgIHNldCBhY3R1YWwyIDAKLSsKLSsgICAg Z2RiX3Rlc3RfbXVsdGlwbGUgImluZm8gc2hhcmVkbGlicmFyeSIgJHRlc3QgewotKwktcmUgJGxp YjFuYW1lIHsKLSsJICAgIHNldCBhY3R1YWwxIDEKLSsJICAgIGV4cF9jb250aW51ZQotKwl9Ci0r CS1yZSAkbGliMm5hbWUgewotKwkgICAgc2V0IGFjdHVhbDIgMQotKwkgICAgZXhwX2NvbnRpbnVl Ci0rCX0KLSsJLXJlICJcclxuJGdkYl9wcm9tcHQgJCIgewotKwkgICAgaWYgeyAkYWN0dWFsMSA9 PSAkZXhwZWN0MSAmJiAkYWN0dWFsMiA9PSAkZXhwZWN0MiB9IHsKLSsJCXBhc3MgJHRlc3QKLSsJ ICAgIH0gZWxzZSB7Ci0rCQlmYWlsICR0ZXN0Ci0rCSAgICB9Ci0rCX0KLSsgICAgfQotK30KLSsK LSsjIFN0YXJ0IHRoZSBpbmZlcmlvciwgYW5kIGNoZWNrIG5laXRoZXIgb2YgdGhlIGxpYnJhcmll cyBhcmUgbG9hZGVkIGF0Ci0rIyB0aGUgc3RhcnQuCi0raWYgIVtydW50b19tYWluXSB7Ci0rICAg IHJldHVybiAwCi0rfQotK2NoZWNrX2luZm9fc2hhcmVkICJpbmZvIHNoYXJlZGxpYnJhcnkgIzEi IDAgMAotKwotKyMgU2V0IHVwIGJyZWFrcG9pbnRzLgotK2dkYl9icmVha3BvaW50ICJzdG9wIgot K2dkYl9icmVha3BvaW50ICJmb28iIGFsbG93LXBlbmRpbmcKLStnZGJfYnJlYWtwb2ludCAiYmFy IiBhbGxvdy1wZW5kaW5nCi0rCi0rIyBSdW4gdG8gdGhlIGZpcnN0IHN0b3AgYW5kIGNoZWNrIHRo YXQgb25seSB0aGUgZmlyc3QgbGlicmFyeSBpcyBsb2FkZWQuCi0rZ2RiX2NvbnRpbnVlX3RvX2Jy ZWFrcG9pbnQgImxpYnJhcnkgbG9hZCAjMSIgInN0b3AgLioiCi0rY2hlY2tfaW5mb19zaGFyZWQg ImluZm8gc2hhcmVkbGlicmFyeSAjMiIgMSAwCi0rCi0rIyBSdW4gdG8gdGhlIHNlY29uZCBzdG9w IGFuZCBjaGVjayB0aGF0IGJvdGggbGlicmFyaWVzIGFyZSBsb2FkZWQuCi0rZ2RiX2NvbnRpbnVl X3RvX2JyZWFrcG9pbnQgImxpYnJhcnkgbG9hZCAjMiIgInN0b3AgLioiCi0rY2hlY2tfaW5mb19z aGFyZWQgImluZm8gc2hhcmVkbGlicmFyeSAjMyIgMSAxCi0rCi0rIyBDaGVjayB0aGF0IHRoZSBu ZXh0IHN0b3AgaXMgaW4gZm9vLgotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJsaWJyYXJ5 IGZ1bmN0aW9uICMxIiAiZm9vIC4qIgotKwotKyMgQ2hlY2sgdGhhdCB0aGUgbmV4dCBzdG9wIGlz IGluIGJhci4KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAibGlicmFyeSBmdW5jdGlvbiAj MiIgImJhciAuKiIKLSsKLSsjIFJlc3RhcnQgdGhlIGluZmVyaW9yIGFuZCBtYWtlIHN1cmUgdGhl cmUgYXJlIG5vIGJyZWFrcG9pbnQgcmVzZXQKLSsjIGVycm9ycy4gIFRoZXNlIGNhbiBoYXBwZW4g d2l0aCB0aGUgcHJvYmVzLWJhc2VkIHJ1bnRpbWUgbGlua2VyCi0rIyBpbnRlcmZhY2UgaWYgdGhl IGNhY2hlIGlzIG5vdCBjbGVhcmVkIGNvcnJlY3RseS4KLStzZXQgdGVzdCAicmVzdGFydCIKLStn ZGJfcnVuX2NtZAotK2dkYl90ZXN0X211bHRpcGxlICIiICR0ZXN0IHsKLSsgICAgLXJlIHtTdGFy dCBpdCBmcm9tIHRoZSBiZWdpbm5pbmdcPyBcKHkgb3IgblwpICR9IHsKLSsJc2VuZF9nZGIgInlc biIKLSsJZXhwX2NvbnRpbnVlCi0rICAgIH0KLSsgICAgLXJlIHtFcnJvciBpbiByZS1zZXR0aW5n IGJyZWFrcG9pbnR9IHsKLSsJZmFpbCAkdGVzdAotKyAgICB9Ci0rICAgIC1yZSAiXHJcbiRnZGJf cHJvbXB0ICQiIHsKLSsJcGFzcyAkdGVzdAotKyAgICB9Ci0rfQotKwotKyMgQ2hlY2sgdGhhdCBu ZWl0aGVyIGxpYnJhcnkgaXMgbG9hZGVkLgotK2NoZWNrX2luZm9fc2hhcmVkICJpbmZvIHNoYXJl ZGxpYnJhcnkgIzQiIDAgMAotKwotKyMgUnVuIHRvIHRoZSBmaXJzdCBzdG9wIGFuZCBjaGVjayB0 aGF0IG9ubHkgdGhlIGZpcnN0IGxpYnJhcnkgaXMgbG9hZGVkLgotK2dkYl9jb250aW51ZV90b19i cmVha3BvaW50ICJsaWJyYXJ5IGxvYWQgIzMiICJzdG9wIC4qIgotK2NoZWNrX2luZm9fc2hhcmVk ICJpbmZvIHNoYXJlZGxpYnJhcnkgIzUiIDEgMAotKwotKyMgUnVuIHRvIHRoZSBzZWNvbmQgc3Rv cCBhbmQgY2hlY2sgdGhhdCBib3RoIGxpYnJhcmllcyBhcmUgbG9hZGVkLgotK2dkYl9jb250aW51 ZV90b19icmVha3BvaW50ICJsaWJyYXJ5IGxvYWQgIzQiICJzdG9wIC4qIgotK2NoZWNrX2luZm9f c2hhcmVkICJpbmZvIHNoYXJlZGxpYnJhcnkgIzYiIDEgMQotKwotKyMgQ2hlY2sgdGhhdCB0aGUg bmV4dCBzdG9wIGlzIGluIGZvby4KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAibGlicmFy eSBmdW5jdGlvbiAjMyIgImZvbyAuKiIKLSsKLSsjIENoZWNrIHRoYXQgdGhlIG5leHQgc3RvcCBp cyBpbiBiYXIuCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImxpYnJhcnkgZnVuY3Rpb24g IzQiICJiYXIgLioiCi0rCi0rIyBSdW4gdG8gdGhlIG5leHQgc3RvcCBhbmQgY2hlY2sgdGhhdCB0 aGUgZmlyc3QgbGlicmFyeSBoYXMgYmVlbiB1bmxvYWRlZC4KLStnZGJfY29udGludWVfdG9fYnJl YWtwb2ludCAibGlicmFyeSB1bmxvYWQgIzEiICJzdG9wIC4qIgotK2NoZWNrX2luZm9fc2hhcmVk ICJpbmZvIHNoYXJlZGxpYnJhcnkgIzciIDAgMQotKwotKyMgUnVuIHRvIHRoZSBsYXN0IHN0b3Ag YW5kIGNoZWNrIHRoYXQgYm90aCBsaWJyYXJpZXMgYXJlIGdvbmUuCi0rZ2RiX2NvbnRpbnVlX3Rv X2JyZWFrcG9pbnQgImxpYnJhcnkgdW5sb2FkICMyIiAic3RvcCAuKiIKLStjaGVja19pbmZvX3No YXJlZCAiaW5mbyBzaGFyZWRsaWJyYXJ5ICM4IiAwIDAKCmRpZmYgLS1naXQgYS9nZGItZ2RiLWFk ZC1pbmRleC1zY3JpcHQucGF0Y2ggYi9nZGItZ2RiLWFkZC1pbmRleC1zY3JpcHQucGF0Y2gKaW5k ZXggMWY0NDdiMS4uODFjMTk3YyAxMDA2NDQKLS0tIGEvZ2RiLWdkYi1hZGQtaW5kZXgtc2NyaXB0 LnBhdGNoCisrKyBiL2dkYi1nZGItYWRkLWluZGV4LXNjcmlwdC5wYXRjaApAQCAtNDAsMTEgKzQw LDExIEBAIFN1YmplY3Q6IFtQQVRDSCA0LzRdIGFkZCBnZGItYWRkLWluZGV4CiAgNSBmaWxlcyBj aGFuZ2VkLCA1NyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9ucygtKQogIGNyZWF0ZSBtb2RlIDEw MDc1NSBnZGIvZ2RiLWFkZC1pbmRleAogCi1JbmRleDogZ2RiLTcuNS45MS4yMDEzMDQwNy9nZGIv TWFrZWZpbGUuaW4KK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvTWFrZWZpbGUu aW4KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjkxLjIwMTMwNDA3Lm9yaWcvZ2RiL01ha2VmaWxl LmluCTIwMTMtMDQtMTEgMTY6NTI6NTEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNS45MS4y MDEzMDQwNy9nZGIvTWFrZWZpbGUuaW4JMjAxMy0wNC0xMSAxNjo1Mzo1OS4xOTkyNzkzODggKzAy MDAKLUBAIC0xMDUzLDYgKzEwNTMsMTUgQEAgaW5zdGFsbC1vbmx5OiBpbnN0YWxsLWdzdGFjayAk KENPTkZJR19JTgorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL01ha2VmaWxl LmluCTIwMTMtMDgtMDIgMTY6MzE6NTkuNjAzNjc0MTk0ICswMjAwCisrKysgZ2RiLTcuNi41MC4y MDEzMDczMS1jdnMvZ2RiL01ha2VmaWxlLmluCTIwMTMtMDgtMDIgMTY6MzI6MDguMjYwNjkwMTU2 ICswMjAwCitAQCAtMTA3MCw2ICsxMDcwLDE1IEBAIGluc3RhbGwtb25seTogaW5zdGFsbC1nc3Rh Y2sgJChDT05GSUdfSU4KICAJCSAgJChJTlNUQUxMX1BST0dSQU0pIGdjb3JlIFwKICAJCQkgICQo REVTVERJUikkKGJpbmRpcikvJCR0cmFuc2Zvcm1lZF9uYW1lOyBcCiAgCWZpCkBAIC02MCwxMSAr NjAsMTEgQEAgSW5kZXg6IGdkYi03LjUuOTEuMjAxMzA0MDcvZ2RiL01ha2VmaWxlLmluCiAgCUAk KE1BS0UpIERPPWluc3RhbGwgIkRPRElSUz0kKFNVQkRJUlMpIiAkKEZMQUdTX1RPX1BBU1MpIHN1 YmRpcl9kbwogIAogIGluc3RhbGwtcHl0aG9uOgotSW5kZXg6IGdkYi03LjUuOTEuMjAxMzA0MDcv Z2RiL2RvYy9nZGIudGV4aW5mbworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9k b2MvZ2RiLnRleGluZm8KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjkxLjIwMTMwNDA3Lm9yaWcv Z2RiL2RvYy9nZGIudGV4aW5mbwkyMDEzLTA0LTExIDE2OjUzOjAwLjAwMDAwMDAwMCArMDIwMAot KysrIGdkYi03LjUuOTEuMjAxMzA0MDcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEzLTA0LTExIDE2 OjU1OjA3LjAwNDI3ODg0MiArMDIwMAotQEAgLTE3MTU5LDYgKzE3MTU5LDE0IEBAIFRoZXJlIGFy ZSBjdXJyZW50bHkgc29tZSBsaW1pdGF0aW9uIG9uIGkKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMx LWN2cy5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMy0wOC0wMiAxNjozMTo1OS42MTY2NzQy MTggKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvZG9jL2dkYi50ZXhpbmZv CTIwMTMtMDgtMDIgMTY6MzI6MDguMjcxNjkwMTc2ICswMjAwCitAQCAtMTc0NDcsNiArMTc0NDcs MTQgQEAgVGhlcmUgYXJlIGN1cnJlbnRseSBzb21lIGxpbWl0YXRpb24gb24gaQogIGZvciBEV0FS RiBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24sIG5vdCBzdGFicy4gIEFuZCwgdGhleSBkbyBub3QKICBj dXJyZW50bHkgd29yayBmb3IgcHJvZ3JhbXMgdXNpbmcgQWRhLgogIApAQCAtNzksNyArNzksNyBA QCBJbmRleDogZ2RiLTcuNS45MS4yMDEzMDQwNy9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgQG5vZGUg U3ltYm9sIEVycm9ycwogIEBzZWN0aW9uIEVycm9ycyBSZWFkaW5nIFN5bWJvbCBGaWxlcwogIAot QEAgLTQxNzMwLDYgKzQxNzM4LDcgQEAgc3dpdGNoIChkaWUtPnRhZykKK0BAIC00MzA0NCw2ICs0 MzA1Miw3IEBAIHN3aXRjaCAoZGllLT50YWcpCiAgKiBnZGJzZXJ2ZXIgbWFuOjogICAgICAgICAg ICAgICBSZW1vdGUgU2VydmVyIGZvciB0aGUgR05VIERlYnVnZ2VyIG1hbiBwYWdlCiAgKiBnY29y ZSBtYW46OiAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZSBhIGNvcmUgZmlsZSBvZiBhIHJ1bm5p bmcgcHJvZ3JhbQogICogZ2RiaW5pdCBtYW46OiAgICAgICAgICAgICAgICAgZ2RiaW5pdCBzY3Jp cHRzCkBAIC04Nyw3ICs4Nyw3IEBAIEluZGV4OiBnZGItNy41LjkxLjIwMTMwNDA3L2dkYi9kb2Mv Z2RiLnRleGluZm8KICBAZW5kIG1lbnUKICAKICBAbm9kZSBnZGIgbWFuCi1AQCAtNDIzODIsNiAr NDIzOTEsNTQgQEAgZ2RiKDEpLCBAY29kZXtpbmZvIC1mIGdkYiAtbiBTdGFydHVwfQorQEAgLTQz Njk2LDYgKzQzNzA1LDU0IEBAIGdkYigxKSwgQGNvZGV7aW5mbyAtZiBnZGIgLW4gU3RhcnR1cH0K ICBUaGUgZnVsbCBkb2N1bWVudGF0aW9uIGZvciBAdmFsdWV7R0RCTn0gaXMgbWFpbnRhaW5lZCBh cyBhIFRleGluZm8gbWFudWFsLgogIElmIHRoZSBAY29kZXtpbmZvfSBhbmQgQGNvZGV7Z2RifSBw cm9ncmFtcyBhbmQgQHZhbHVle0dEQk59J3MgVGV4aW5mbwogIGRvY3VtZW50YXRpb24gYXJlIHBy b3Blcmx5IGluc3RhbGxlZCBhdCB5b3VyIHNpdGUsIHRoZSBjb21tYW5kCkBAIC0xNDIsMTAgKzE0 MiwxMCBAQCBJbmRleDogZ2RiLTcuNS45MS4yMDEzMDQwNy9nZGIvZG9jL2dkYi50ZXhpbmZvCiAg CiAgQHNtYWxsZXhhbXBsZQogIGluZm8gZ2RiCi1JbmRleDogZ2RiLTcuNS45MS4yMDEzMDQwNy9n ZGIvZ2RiLWFkZC1pbmRleAorSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9nZGIt YWRkLWluZGV4CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAu MDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNS45MS4yMDEzMDQwNy9nZGIvZ2RiLWFkZC1pbmRl eAkyMDEzLTA0LTExIDE2OjUzOjIxLjUyNDI3OTkwOSArMDIwMAorKysrIGdkYi03LjYuNTAuMjAx MzA3MzEtY3ZzL2dkYi9nZGItYWRkLWluZGV4CTIwMTMtMDgtMDIgMTY6MzI6MDguMjcxNjkwMTc2 ICswMjAwCiBAQCAtMCwwICsxLDMwIEBACiArIyEgL2Jpbi9zaAogKwpAQCAtMTc3LDEyICsxNzcs MTIgQEAgSW5kZXg6IGdkYi03LjUuOTEuMjAxMzA0MDcvZ2RiL2dkYi1hZGQtaW5kZXgKICtmaQog KwogK2V4aXQgMAotSW5kZXg6IGdkYi03LjUuOTEuMjAxMzA0MDcvZ2RiL2RvYy9NYWtlZmlsZS5p bgorSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9kb2MvTWFrZWZpbGUuaW4KID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy41LjkxLjIwMTMwNDA3Lm9yaWcvZ2RiL2RvYy9NYWtlZmlsZS5p bgkyMDEzLTA0LTExIDE2OjUwOjMzLjIwMjI4NjkyOCArMDIwMAotKysrIGdkYi03LjUuOTEuMjAx MzA0MDcvZ2RiL2RvYy9NYWtlZmlsZS5pbgkyMDEzLTA0LTExIDE2OjU1OjA2Ljk5MzI3OTMwNCAr MDIwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2RvYy9NYWtlZmlsZS5p bgkyMDEzLTA4LTAyIDE2OjMxOjU5LjYxODY3NDIyMiArMDIwMAorKysrIGdkYi03LjYuNTAuMjAx MzA3MzEtY3ZzL2dkYi9kb2MvTWFrZWZpbGUuaW4JMjAxMy0wOC0wMiAxNjozMjoyOC44Mjg3Mjcz MTQgKzAyMDAKIEBAIC0xNzcsNyArMTc3LDcgQEAgUE9EMk1BTjUgPSBwb2QybWFuIC0tY2VudGVy PSJHTlUgRGV2ZWxvcAotIAkJICAgLS1yZWxlYXNlPSJnZGItYHNlZCBxICQoc3JjZGlyKS8uLi92 ZXJzaW9uLmluYCIgLS1zZWN0aW9uPTUKKyAJCSAgIC0tcmVsZWFzZT0iZ2RiLWBzZWQgcSB2ZXJz aW9uLnN1YnN0YCIgLS1zZWN0aW9uPTUKICAKICAjIExpc3Qgb2YgbWFuIHBhZ2VzIGdlbmVyYXRl ZCBmcm9tIGdkYi50ZXhpCiAtTUFOMVMgPSBnZGIuMSBnZGJzZXJ2ZXIuMSBnY29yZS4xCkBAIC0x OTAsNyArMTkwLDcgQEAgSW5kZXg6IGdkYi03LjUuOTEuMjAxMzA0MDcvZ2RiL2RvYy9NYWtlZmls ZS5pbgogIE1BTjVTID0gZ2RiaW5pdC41CiAgTUFOUyA9ICQoTUFOMVMpICQoTUFONVMpCiAgCi1A QCAtNjI2LDYgKzYyNiwxMyBAQCBnY29yZS4xOiAkKEdEQl9ET0NfRklMRVMpCitAQCAtNjMwLDYg KzYzMCwxMyBAQCBnY29yZS4xOiAkKEdEQl9ET0NfRklMRVMpCiAgCQltdiAtZiAkQC5UJCQkJCAk QCkgfHwgKHJtIC1mICRALlQkJCQkICYmIGV4aXQgMSkKICAJcm0gLWYgZ2NvcmUucG9kCiAgCgpk aWZmIC0tZ2l0IGEvZ2RiLWdsaWJjLXN0cnN0ci13b3JrYXJvdW5kLnBhdGNoIGIvZ2RiLWdsaWJj LXN0cnN0ci13b3JrYXJvdW5kLnBhdGNoCmluZGV4IDgzZjZiMDkuLmRjOTI0MmUgMTAwNjQ0Ci0t LSBhL2dkYi1nbGliYy1zdHJzdHItd29ya2Fyb3VuZC5wYXRjaAorKysgYi9nZGItZ2xpYmMtc3Ry c3RyLXdvcmthcm91bmQucGF0Y2gKQEAgLTEsMTAgKzEsMTAgQEAKLUluZGV4OiBnZGItNy41LjUw LjIwMTMwMTE4L2dkYi9kd2FyZjJyZWFkLmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2 cy9nZGIvZHdhcmYycmVhZC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5v cmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxMy0wMS0xOSAyMToxNjoyMi40Mzc5NjE3ODkgKzAxMDAK LSsrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9kd2FyZjJyZWFkLmMJMjAxMy0wMS0xOSAyMToy NDoyMi4yNDI5NjkyNjYgKzAxMDAKLUBAIC0xNTk4Nyw2ICsxNTk4NywyNSBAQCBuZXdfc3ltYm9s X2Z1bGwgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1j dnMub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTMtMDgtMDIgMTY6Mzc6NTEuNjE5MjQxNjk2ICsw MjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2R3YXJmMnJlYWQuYwkyMDEzLTA4 LTAyIDE2OjM4OjE2LjE1OTI3NzQ2MSArMDIwMAorQEAgLTE2NjU0LDYgKzE2NjU0LDI1IEBAIG5l d19zeW1ib2xfZnVsbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHMKICAgICAgICAvKiBDYWNoZSB0 aGlzIHN5bWJvbCdzIG5hbWUgYW5kIHRoZSBuYW1lJ3MgZGVtYW5nbGVkIGZvcm0gKGlmIGFueSku ICAqLwotICAgICAgIFNZTUJPTF9TRVRfTEFOR1VBR0UgKHN5bSwgY3UtPmxhbmd1YWdlKTsKKyAg ICAgICBTWU1CT0xfU0VUX0xBTkdVQUdFIChzeW0sIGN1LT5sYW5ndWFnZSwgJm9iamZpbGUtPm9i amZpbGVfb2JzdGFjayk7CiAgICAgICAgbGlua2FnZW5hbWUgPSBkd2FyZjJfcGh5c25hbWUgKG5h bWUsIGRpZSwgY3UpOwogKwogKyAgICAgIC8qIFdvcmthcm91bmQgZm9yOgpAQCAtMjgsMTAgKzI4 LDEwIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9kd2FyZjJyZWFkLmMKICAgICAg ICBTWU1CT0xfU0VUX05BTUVTIChzeW0sIGxpbmthZ2VuYW1lLCBzdHJsZW4gKGxpbmthZ2VuYW1l KSwgMCwgb2JqZmlsZSk7CiAgCiAgICAgICAgLyogRm9ydHJhbiBkb2VzIG5vdCBoYXZlIG1hbmds aW5nIHN0YW5kYXJkIGFuZCB0aGUgbWFuZ2xpbmcgZG9lcyBkaWZmZXIKLUluZGV4OiBnZGItNy41 LjUwLjIwMTMwMTE4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLXN0cnN0ci13b3Jr YXJvdW5kLmV4cAorSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvZ251LWlmdW5jLXN0cnN0ci13b3JrYXJvdW5kLmV4cAogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0t IC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03 LjUuNTAuMjAxMzAxMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMtc3Ryc3RyLXdv cmthcm91bmQuZXhwCTIwMTMtMDEtMTkgMjE6MjM6MDkuMTE5ODI3OTYzICswMTAwCisrKysgZ2Ri LTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMtc3Ry c3RyLXdvcmthcm91bmQuZXhwCTIwMTMtMDgtMDIgMTY6Mzc6NTEuNjIwMjQxNjk3ICswMjAwCiBA QCAtMCwwICsxLDEwOCBAQAogKyMgQ29weXJpZ2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgogKwoKZGlmZiAtLWdpdCBhL2dkYi1wb3dlcjgtMW9mMi5wYXRjaCBiL2dk Yi1wb3dlcjgtMW9mMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzA0ZDYw My4uMDAwMDAwMAotLS0gYS9nZGItcG93ZXI4LTFvZjIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAt MSw3MzEgKzAsMCBAQAotW1BBVENIXSBGdWxsIFBPV0VSOCBiaW51dGlscyBzdXBwb3J0Ci1odHRw Oi8vc291cmNld2FyZS5vcmcvbWwvYmludXRpbHMvMjAxMy0wNS9tc2cwMDIzNS5odG1sCi1odHRw Oi8vc291cmNld2FyZS5vcmcvbWwvYmludXRpbHMtY3ZzLzIwMTMtMDUvbXNnMDAwOTUuaHRtbAot Ci0jIyMgc3JjL29wY29kZXMvQ2hhbmdlTG9nCTIwMTMvMDUvMTcgMTI6NTc6MTUJMS4xOTY0Ci0j IyMgc3JjL29wY29kZXMvQ2hhbmdlTG9nCTIwMTMvMDUvMjEgMDE6MzY6NDYJMS4xOTY1Ci0jIyAt MSwzICsxLDI4IEBACi0rMjAxMy0wNS0yMCAgUGV0ZXIgQmVyZ25lciA8YmVyZ25lckB2bmV0Lmli bS5jb20+Ci0rCi0rCSogcHBjLWRpcy5jIChwb3dlcnBjX2luaXRfZGlhbGVjdCk6IFNldCBkZWZh dWx0IGRpYWxlY3QgdG8gcG93ZXI4LgotKwkqIHBwYy1vcGMuYyAoQkhSQkUsIFNULCBTSVgsIFBT LCBTWEwsIFZYUFNfTUFTSywgWFgxUkJfTUFTSywKLSsJWExTX01BU0ssIFBQQ1ZTWDIpOiBOZXcg ZGVmaW5lcy4KLSsJKHBvd2VycGNfb3Bjb2RlcykgPGJjZGFkZC4sIGJjZHN1Yi4sIGJjdGFyLCBi Y3RhciwgYmN0YXJsLCBjbHJiaHJiLAotKwlmbXJnZXcsIGZtcmdvdywgbHFhcngsIGx4c2l3YXgs IGx4c2l3engsIGx4c3NweCwgbWZiaHJiZSwKLSsJbWZmcHJkLCBtZmZwcnd6LCBtZnZyZCwgbWZ2 cnd6LCBtZnZzcmQsIG1mdnNyd3osIG1zZ2NscnAsIG1zZ3NuZHAsCi0rCW10ZnByZCwgbXRmcHJ3 YSwgbXRmcHJ3eiwgbXRzbGUsIG10dnJkLCBtdHZyd2EsIG10dnJ3eiwgbXR2c3JkLAotKwltdHZz cndhLCBtdHZzcnd6LCBwYnQuLCByZmViYiwgc3RxY3guLCBzdHhzaXd4LCBzdHhzc3B4LAotKwl2 YWRkY3VxLCB2YWRkZWN1cSwgdmFkZGV1cW0sIHZhZGR1ZG0sIHZhZGR1cW0sIHZicGVybXEsIHZj aXBoZXIsCi0rCXZjaXBoZXJsYXN0LCB2Y2x6YiwgdmNsemQsIHZjbHpoLCB2Y2x6dywgdmNtcGVx dWQsIHZjbXBlcXVkLiwKLSsJdmNtcGd0c2QsIHZjbXBndHNkLiwgdmNtcGd0dWQsIHZjbXBndHVk LiwgdmVxdiwgdmdiYmQsIHZtYXhzZCwKLSsJdm1heHVkLCB2bWluc2QsIHZtaW51ZCwgdm1yZ2V3 LCB2bXJnb3csIHZtdWxlc3csIHZtdWxldXcsIHZtdWxvc3csCi0rCXZtdWxvdXcsIHZtdWx1d20s IHZuYW5kLCB2bmNpcGhlciwgdm5jaXBoZXJsYXN0LCB2b3JjLCB2cGVybXhvciwKLSsJdnBrc2Rz cywgdnBrc2R1cywgdnBrdWR1bSwgdnBrdWR1cywgdnBtc3VtYiwgdnBtc3VtZCwgdnBtc3VtaCwK LSsJdnBtc3VtdywgdnBvcGNudGIsIHZwb3BjbnRkLCB2cG9wY250aCwgdnBvcGNudHcsIHZybGQs IHZzYm94LAotKwl2c2hhc2lnbWFkLCB2c2hhc2lnbWF3LCB2c2xkLCB2c3JhZCwgdnNyZCwgdnN1 YmN1cSwgdnN1YmVjdXEsCi0rCXZzdWJldXFtLCB2c3VidWRtLCB2c3VidXFtLCB2dXBraHN3LCB2 dXBrbHN3LCB3YWl0YXNlYywgeHNhZGRzcCwKLSsJeHNjdmRwc3BuLCB4c2N2c3BkcG4sIHhzY3Zz eGRzcCwgeHNjdnV4ZHNwLCB4c2RpdnNwLCB4c21hZGRhc3AsCi0rCXhzbWFkZG1zcCwgeHNtc3Vi YXNwLCB4c21zdWJtc3AsIHhzbXVsc3AsIHhzbm1hZGRhc3AsIHhzbm1hZGRtc3AsCi0rCXhzbm1z dWJhc3AsIHhzbm1zdWJtc3AsIHhzcmVzcCwgeHNyc3AsIHhzcnNxcnRlc3AsIHhzc3FydHNwLAot Kwl4c3N1YnNwLCB4eGxlcXYsIHh4bG5hbmQsIHh4bG9yYz46IE5ldyBpbnN0cnVjdGlvbnMuCi0r CTxseHZ4LCBzdHh2eD46IE5ldyBleHRlbmRlZCBtbmVtb25pY3MuCi0rCi0gMjAxMy0wNS0xNyAg QWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+Ci0gCi0gCSogaWE2NC1yYXcudGJsOiBSZXBs YWNlIG5vbi1BU0NJSSBjaGFyLgotLS0tIHNyYy9vcGNvZGVzL3BwYy1kaXMuYwkyMDEzLzAxLzEx IDAyOjI1OjM2CTEuNjIKLSsrKyBzcmMvb3Bjb2Rlcy9wcGMtZGlzLmMJMjAxMy8wNS8yMSAwMToz Njo0NgkxLjYzCi1AQCAtMzE1LDEwICszMTUsNyBAQAotICAgICAgIGRpYWxlY3QgPSAoUFBDX09Q Q09ERV9QUEMgfCBQUENfT1BDT0RFX0lTRUwgfCBQUENfT1BDT0RFX1ZMRSk7Ci0gICAgICAgYnJl YWs7Ci0gICAgIGRlZmF1bHQ6Ci0tICAgICAgZGlhbGVjdCA9IChQUENfT1BDT0RFX1BQQyB8IFBQ Q19PUENPREVfSVNFTCB8IFBQQ19PUENPREVfNjQKLS0JCSB8IFBQQ19PUENPREVfUE9XRVI0IHwg UFBDX09QQ09ERV9QT1dFUjUgfCBQUENfT1BDT0RFX1BPV0VSNgotLQkJIHwgUFBDX09QQ09ERV9Q T1dFUjcgfCBQUENfT1BDT0RFX0FMVElWRUMgfCBQUENfT1BDT0RFX1ZTWAotLQkJIHwgUFBDX09Q Q09ERV9BTlkpOwotKyAgICAgIGRpYWxlY3QgPSBwcGNfcGFyc2VfY3B1IChkaWFsZWN0LCAmc3Rp Y2t5LCAicG93ZXI4IikgfCBQUENfT1BDT0RFX0FOWTsKLSAgICAgfQotIAotICAgYXJnID0gaW5m by0+ZGlzYXNzZW1ibGVyX29wdGlvbnM7Ci0tLS0gc3JjL29wY29kZXMvcHBjLW9wYy5jCTIwMTMv MDUvMDkgMDQ6MzI6NTUJMS4xNTkKLSsrKyBzcmMvb3Bjb2Rlcy9wcGMtb3BjLmMJMjAxMy8wNS8y MSAwMTozNjo0NgkxLjE2MAotQEAgLTMxNSwxNCArMzE1LDE4IEBACi0gICB7IDB4ZmZmYywgMCwg TlVMTCwgTlVMTCwKLSAgICAgUFBDX09QRVJBTkRfUEFSRU5TIHwgUFBDX09QRVJBTkRfU0lHTkVE IHwgUFBDX09QRVJBTkRfRFMgfSwKLSAKLS0gIC8qIFRoZSBEVUlTIGZpZWxkIGluIGEgWEZYIGZv cm0gaW5zdHJ1Y3Rpb24sIDEwIGJpdHMgdW5zaWduZWQgaW1lZGlhdGUgKi8KLSsgIC8qIFRoZSBE VUlTIG9yIEJIUkJFIGZpZWxkcyBpbiBhIFhGWCBmb3JtIGluc3RydWN0aW9uLCAxMCBiaXRzCi0r ICAgICB1bnNpZ25lZCBpbWVkaWF0ZSAqLwotICNkZWZpbmUgRFVJUyBEUyArIDEKLSsjZGVmaW5l IEJIUkJFIERVSVMKLSAgIHsgMHgzZmYsIDExLCBOVUxMLCBOVUxMLCAwIH0sCi0gCi0gICAvKiBU aGUgRSBmaWVsZCBpbiBhIHdydGVlaSBpbnN0cnVjdGlvbi4gICovCi0gICAvKiBBbmQgdGhlIFcg Yml0IGluIHRoZSBwYWlyIHNpbmdsZXMgaW5zdHJ1Y3Rpb25zLiAgKi8KLSsgIC8qIEFuZCB0aGUg U1QgZmllbGQgaW4gYSBWWCBmb3JtIGluc3RydWN0aW9uLiAgKi8KLSAjZGVmaW5lIEUgRFVJUyAr IDEKLSAjZGVmaW5lIFBTVyBFCi0rI2RlZmluZSBTVCBFCi0gICB7IDB4MSwgMTUsIE5VTEwsIE5V TEwsIDAgfSwKLSAKLSAgIC8qIFRoZSBGTDEgZmllbGQgaW4gYSBQT1dFUiBTQyBmb3JtIGluc3Ry dWN0aW9uLiAgKi8KLUBAIC02OTUsOCArNjk5LDE2IEBACi0gI2RlZmluZSBVSU1NMyBVSU1NICsg MQotICAgeyAweDcsIDE2LCBOVUxMLCBOVUxMLCAwIH0sCi0gCi0rICAvKiBUaGUgU0lYIGZpZWxk IGluIGEgVlggZm9ybSBpbnN0cnVjdGlvbi4gICovCi0rI2RlZmluZSBTSVggVUlNTTMgKyAxCi0r ICB7IDB4ZiwgMTEsIE5VTEwsIE5VTEwsIDAgfSwKLSsKLSsgIC8qIFRoZSBQUyBmaWVsZCBpbiBh IFZYIGZvcm0gaW5zdHJ1Y3Rpb24uICAqLwotKyNkZWZpbmUgUFMgU0lYICsgMQotKyAgeyAweDEs IDksIE5VTEwsIE5VTEwsIDAgfSwKLSsKLSAgIC8qIFRoZSBTSEIgZmllbGQgaW4gYSBWQSBmb3Jt IGluc3RydWN0aW9uLiAgKi8KLS0jZGVmaW5lIFNIQiBVSU1NMyArIDEKLSsjZGVmaW5lIFNIQiBQ UyArIDEKLSAgIHsgMHhmLCA2LCBOVUxMLCBOVUxMLCAwIH0sCi0gCi0gICAvKiBUaGUgb3RoZXIg VUlNTSBmaWVsZCBpbiBhIGhhbGYgd29yZCBFVlggZm9ybSBpbnN0cnVjdGlvbi4gICovCi1AQCAt NzUxLDggKzc2MywxMiBAQAotICNkZWZpbmUgUyBTUCArIDEKLSAgIHsgMHgxLCAyMCwgTlVMTCwg TlVMTCwgMCB9LAotIAotKyAgLyogVGhlIFMgZmllbGQgaW4gYSBYTCBmb3JtIGluc3RydWN0aW9u LiAgKi8KLSsjZGVmaW5lIFNYTCBTICsgMQotKyAgeyAweDEsIDExLCBOVUxMLCBOVUxMLCBQUENf T1BFUkFORF9PUFRJT05BTCB9LAotKwotICAgLyogU0ggZmllbGQgc3RhcnRpbmcgYXQgYml0IHBv c2l0aW9uIDE2LiAgKi8KLS0jZGVmaW5lIFNIMTYgUyArIDEKLSsjZGVmaW5lIFNIMTYgU1hMICsg MQotICAgLyogVGhlIERDTSBhbmQgREdNIGZpZWxkcyBpbiBhIFogZm9ybSBpbnN0cnVjdGlvbi4g ICovCi0gI2RlZmluZSBEQ00gU0gxNgotICNkZWZpbmUgREdNIERDTQotQEAgLTIzMjUsNiArMjM0 MSw5IEBACi0gLyogQSBWWF9NQVNLIHdpdGggYSBVSU1NMiBmaWVsZC4gICovCi0gI2RlZmluZSBW WFVJTU0yX01BU0sgKFZYX01BU0sgfCAoMHg3IDw8IDE4KSkKLSAKLSsvKiBBIFZYX01BU0sgd2l0 aCBhIFBTIGZpZWxkLiAgKi8KLSsjZGVmaW5lIFZYUFNfTUFTSyAoVlhfTUFTSyAmIH4oMHgxIDw8 IDkpKQotKwotIC8qIEEgVkEgZm9ybSBpbnN0cnVjdGlvbi4gICovCi0gI2RlZmluZSBWWEEob3As IHhvcCkgKE9QIChvcCkgfCAoKCh1bnNpZ25lZCBsb25nKSh4b3ApKSAmIDB4MDNmKSkKLSAKLUBA IC0yMzc5LDYgKzIzOTgsOSBAQAotIC8qIFRoZSBtYXNrIGZvciBhbiBYWDEgZm9ybSBpbnN0cnVj dGlvbi4gICovCi0gI2RlZmluZSBYWDFfTUFTSyBYICgweDNmLCAweDNmZikKLSAKLSsvKiBBbiBY WDFfTUFTSyB3aXRoIHRoZSBSQiBmaWVsZCBmaXhlZC4gICovCi0rI2RlZmluZSBYWDFSQl9NQVNL IChYWDFfTUFTSyB8IFJCX01BU0spCi0rCi0gLyogVGhlIG1hc2sgZm9yIGFuIFhYMiBmb3JtIGlu c3RydWN0aW9uLiAgKi8KLSAjZGVmaW5lIFhYMl9NQVNLIChYWDIgKDB4M2YsIDB4MWZmKSB8ICgw eDFmIDw8IDE2KSkKLSAKLUBAIC0yNTE2LDYgKzI1MzgsOSBAQAotIC8qIFRoZSBtYXNrIGZvciBh biBYTCBmb3JtIGluc3RydWN0aW9uLiAgKi8KLSAjZGVmaW5lIFhMX01BU0sgWExMSyAoMHgzZiwg MHgzZmYsIDEpCi0gCi0rLyogQW4gWExfTUFTSyB3aXRoIHRoZSBSVCwgUkEgYW5kIFJCIGZpZWxk cyBmaXhlZCwgYnV0IFMgYml0IGNsZWFyLiAgKi8KLSsjZGVmaW5lIFhMU19NQVNLICgoWExfTUFT SyB8IFJUX01BU0sgfCBSQV9NQVNLIHwgUkJfTUFTSykgJiB+KDEgPDwgMTEpKQotKwotIC8qIEFu IFhMIGZvcm0gaW5zdHJ1Y3Rpb24gd2hpY2ggZXhwbGljaXRseSBzZXRzIHRoZSBCTyBmaWVsZC4g ICovCi0gI2RlZmluZSBYTE8ob3AsIGJvLCB4b3AsIGxrKSBcCi0gICAoWExMSyAoKG9wKSwgKHhv cCksIChsaykpIHwgKCgoKHVuc2lnbmVkIGxvbmcpKGJvKSkgJiAweDFmKSA8PCAyMSkpCi1AQCAt MjY5OSw2ICsyNzI0LDcgQEAKLSAjZGVmaW5lIFBQQ1ZFQwlQUENfT1BDT0RFX0FMVElWRUMKLSAj ZGVmaW5lIFBQQ1ZFQzIJUFBDX09QQ09ERV9BTFRJVkVDMgotICNkZWZpbmUgUFBDVlNYCVBQQ19P UENPREVfVlNYCi0rI2RlZmluZSBQUENWU1gyCVBQQ19PUENPREVfVlNYCi0gI2RlZmluZSBQT1dF UglQUENfT1BDT0RFX1BPV0VSCi0gI2RlZmluZSBQT1dFUjIJUFBDX09QQ09ERV9QT1dFUiB8IFBQ Q19PUENPREVfUE9XRVIyCi0gI2RlZmluZSBQV1IyQ09NIFBQQ19PUENPREVfUE9XRVIgfCBQUENf T1BDT0RFX1BPV0VSMiB8IFBQQ19PUENPREVfQ09NTU9OCi1AQCAtMjg0NSw2ICsyODcxLDcgQEAK LSB7InZwZXJtIiwJVlhBKDQsCTQzKSwJVlhBX01BU0ssICAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05P TkUsCXtWRCwgVkEsIFZCLCBWQ319LAotIHsidnNsZG9pIiwJVlhBKDQsCTQ0KSwJVlhBU0hCX01B U0ssIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCLCBTSEJ9fSwKLSB7InBzX3Nl bCIsCUEgICg0LAkyMywwKSwJQV9NQVNLLCAgICAgIFBQQ1BTLAlQUENOT05FLAl7RlJULCBGUkEs IEZSQywgRlJCfX0sCi0reyJ2cGVybXhvciIsCVZYQSg0LAk0NSksCVZYQV9NQVNLLCAgICBQUENW RUMyLAlQUENOT05FLAl7VkQsIFZBLCBWQiwgVkN9fSwKLSB7InZtYWRkZnAiLAlWWEEoNCwJNDYp LAlWWEFfTUFTSywgICAgUFBDVkVDfFBQQ1ZMRSwgUFBDTk9ORSwJe1ZELCBWQSwgVkMsIFZCfX0s Ci0geyJwc19zZWwuIiwJQSAgKDQsCTIzLDEpLAlBX01BU0ssICAgICAgUFBDUFMsCVBQQ05PTkUs CXtGUlQsIEZSQSwgRlJDLCBGUkJ9fSwKLSB7InZubXN1YmZwIiwJVlhBKDQsCTQ3KSwJVlhBX01B U0ssICAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZDLCBWQn19LAotQEAgLTI4 NjMsNiArMjg5MCwxMCBAQAotIHsicHNfbm1hZGQiLAlBICAoNCwJMzEsMCksCUFfTUFTSywgICAg ICBQUENQUywJUFBDTk9ORSwJe0ZSVCwgRlJBLCBGUkMsIEZSQn19LAotIHsicHNfbm1hZGQuIiwJ QSAgKDQsCTMxLDEpLAlBX01BU0ssICAgICAgUFBDUFMsCVBQQ05PTkUsCXtGUlQsIEZSQSwgRlJD LCBGUkJ9fSwKLSB7InBzX2NtcG8wIiwJWCAgKDQsCTMyKSwgWF9NQVNLfCgzPDwyMSksIFBQQ1BT LAlQUENOT05FLAl7QkYsIEZSQSwgRlJCfX0sCi0reyJ2YWRkZXVxbSIsCVZYQSg0LAk2MCksCVZY QV9NQVNLLCAgICBQUENWRUMyLAlQUENOT05FLAl7VkQsIFZBLCBWQiwgVkN9fSwKLSt7InZhZGRl Y3VxIiwJVlhBKDQsCTYxKSwJVlhBX01BU0ssICAgIFBQQ1ZFQzIsCVBQQ05PTkUsCXtWRCwgVkEs IFZCLCBWQ319LAotK3sidnN1YmV1cW0iLAlWWEEoNCwJNjIpLAlWWEFfTUFTSywgICAgUFBDVkVD MiwJUFBDTk9ORSwJe1ZELCBWQSwgVkIsIFZDfX0sCi0reyJ2c3ViZWN1cSIsCVZYQSg0LAk2Myks CVZYQV9NQVNLLCAgICBQUENWRUMyLAlQUENOT05FLAl7VkQsIFZBLCBWQiwgVkN9fSwKLSB7InZh ZGR1aG0iLAlWWCAoNCwJNjQpLAlWWF9NQVNLLCAgICAgUFBDVkVDfFBQQ1ZMRSwgUFBDTk9ORSwJ e1ZELCBWQSwgVkJ9fSwKLSB7InZtYXh1aCIsCVZYICg0LAk2NiksCVZYX01BU0ssICAgICBQUENW RUN8UFBDVkxFLCBQUENOT05FLAl7VkQsIFZBLCBWQn19LAotIHsidnJsaCIsCVZYICg0LAk2OCks CVZYX01BU0ssICAgICBQUENWRUN8UFBDVkxFLCBQUENOT05FLAl7VkQsIFZBLCBWQn19LAotQEAg LTI4ODYsNiArMjkxNyw4IEBACi0geyJ2bWF4dXciLAlWWCAoNCwJMTMwKSwJVlhfTUFTSywgICAg IFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0geyJ2cmx3IiwJVlggKDQs CTEzMiksCVZYX01BU0ssICAgICBQUENWRUN8UFBDVkxFLCBQUENOT05FLAl7VkQsIFZBLCBWQn19 LAotIHsidmNtcGVxdXciLAlWWFIoNCwJMTM0LDApLCBWWFJfTUFTSywgICAgUFBDVkVDfFBQQ1ZM RSwgUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSt7InZtdWxvdXciLAlWWCAoNCwgIDEzNiksCVZY X01BU0ssICAgICBQUENWRUMyLAkgICAgUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSt7InZtdWx1 d20iLAlWWCAoNCwgIDEzNyksCVZYX01BU0ssICAgICBQUENWRUMyLAkgICAgUFBDTk9ORSwJe1ZE LCBWQSwgVkJ9fSwKLSB7InZtcmdodyIsCVZYICg0LAkxNDApLAlWWF9NQVNLLCAgICAgUFBDVkVD fFBQQ1ZMRSwgUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSB7InZwa3VodXMiLAlWWCAoNCwJMTQy KSwJVlhfTUFTSywgICAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0g eyJwc19tciIsCVhSQyg0LAk3MiwwKSwJWFJBX01BU0ssICAgIFBQQ1BTLAlQUENOT05FLAl7RlJU LCBGUkJ9fSwKLUBAIC0yODkzLDEyICsyOTI2LDE3IEBACi0geyJtYWNoaHdzdSIsCVhPICg0LAk3 NiwwLDApLFhPX01BU0ssICAgICBNVUxIV3xQUENWTEUsICBQUENOT05FLAl7UlQsIFJBLCBSQn19 LAotIHsibWFjaGh3c3UuIiwJWE8gKDQsCTc2LDAsMSksWE9fTUFTSywgICAgIE1VTEhXfFBQQ1ZM RSwgIFBQQ05PTkUsCXtSVCwgUkEsIFJCfX0sCi0geyJwc19jbXBvMSIsCVggICg0LAk5NiksIFhf TUFTS3woMzw8MjEpLCBQUENQUywJUFBDTk9ORSwJe0JGLCBGUkEsIEZSQn19LAotK3sidmFkZHVk bSIsCVZYICg0LCAxOTIpLAlWWF9NQVNLLCAgICAgUFBDVkVDMiwJUFBDTk9ORSwJe1ZELCBWQSwg VkJ9fSwKLSt7InZtYXh1ZCIsCVZYICg0LCAxOTQpLAlWWF9NQVNLLCAgICAgUFBDVkVDMiwJUFBD Tk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSt7InZybGQiLAlWWCAoNCwgMTk2KSwJVlhfTUFTSywgICAg IFBQQ1ZFQzIsCVBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0geyJ2Y21wZXFmcCIsCVZYUig0LCAx OTgsMCksCVZYUl9NQVNLLCAgICBQUENWRUN8UFBDVkxFLCBQUENOT05FLAl7VkQsIFZBLCBWQn19 LAotK3sidmNtcGVxdWQiLAlWWFIoNCwgMTk5LDApLAlWWFJfTUFTSywgICAgUFBDVkVDMiwJUFBD Tk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSB7InZwa3V3dXMiLAlWWCAoNCwgMjA2KSwJVlhfTUFTSywg ICAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0geyJtYWNoaHdzIiwJ WE8gKDQsIDEwOCwwLDApLFhPX01BU0ssICAgICBNVUxIV3xQUENWTEUsIFBQQ05PTkUsCXtSVCwg UkEsIFJCfX0sCi0geyJtYWNoaHdzLiIsCVhPICg0LCAxMDgsMCwxKSxYT19NQVNLLCAgICAgTVVM SFd8UFBDVkxFLCBQUENOT05FLAl7UlQsIFJBLCBSQn19LAotIHsibm1hY2hod3MiLAlYTyAoNCwg MTEwLDAsMCksWE9fTUFTSywgICAgIE1VTEhXfFBQQ1ZMRSwgUFBDTk9ORSwJe1JULCBSQSwgUkJ9 fSwKLSB7Im5tYWNoaHdzLiIsCVhPICg0LCAxMTAsMCwxKSxYT19NQVNLLCAgICAgTVVMSFd8UFBD VkxFLCBQUENOT05FLAl7UlQsIFJBLCBSQn19LAotK3sidmFkZHVxbSIsCVZYICg0LCAyNTYpLAlW WF9NQVNLLCAgICAgUFBDVkVDMiwJUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSB7InZtYXhzYiIs CVZYICg0LCAyNTgpLAlWWF9NQVNLLCAgICAgUFBDVkVDfFBQQ1ZMRSwgUFBDTk9ORSwJe1ZELCBW QSwgVkJ9fSwKLSB7InZzbGIiLAlWWCAoNCwgMjYwKSwJVlhfTUFTSywgICAgIFBQQ1ZFQ3xQUENW TEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0geyJ2bXVsb3NiIiwJVlggKDQsIDI2NCksCVZY X01BU0ssICAgICBQUENWRUN8UFBDVkxFLCBQUENOT05FLAl7VkQsIFZBLCBWQn19LAotQEAgLTI5 MTEsNiArMjk0OSw3IEBACi0geyJtdWxjaHd1LiIsCVhSQyg0LCAxMzYsMSksCVhfTUFTSywgICAg ICBNVUxIV3xQUENWTEUsIFBQQ05PTkUsCXtSVCwgUkEsIFJCfX0sCi0geyJtYWNjaHd1IiwJWE8g KDQsIDE0MCwwLDApLFhPX01BU0ssICAgICBNVUxIV3xQUENWTEUsIFBQQ05PTkUsCXtSVCwgUkEs IFJCfX0sCi0geyJtYWNjaHd1LiIsCVhPICg0LCAxNDAsMCwxKSxYT19NQVNLLCAgICAgTVVMSFd8 UFBDVkxFLCBQUENOT05FLAl7UlQsIFJBLCBSQn19LAotK3sidmFkZGN1cSIsCVZYICg0LCAzMjAp LAlWWF9NQVNLLCAgICAgUFBDVkVDMiwgICAgICBQUENOT05FLAl7VkQsIFZBLCBWQn19LAotIHsi dm1heHNoIiwJVlggKDQsIDMyMiksCVZYX01BU0ssICAgICBQUENWRUN8UFBDVkxFLCBQUENOT05F LAl7VkQsIFZBLCBWQn19LAotIHsidnNsaCIsCVZYICg0LCAzMjQpLAlWWF9NQVNLLCAgICAgUFBD VkVDfFBQQ1ZMRSwgUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSB7InZtdWxvc2giLAlWWCAoNCwg MzI4KSwJVlhfTUFTSywgICAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0s Ci1AQCAtMjkyNiwxMSArMjk2NSwxMyBAQAotIHsidmFkZGN1dyIsCVZYICg0LCAzODQpLAlWWF9N QVNLLCAgICAgUFBDVkVDfFBQQ1ZMRSwgUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSB7InZtYXhz dyIsCVZYICg0LCAzODYpLAlWWF9NQVNLLCAgICAgUFBDVkVDfFBQQ1ZMRSwgUFBDTk9ORSwJe1ZE LCBWQSwgVkJ9fSwKLSB7InZzbHciLAlWWCAoNCwgMzg4KSwJVlhfTUFTSywgICAgIFBQQ1ZFQ3xQ UENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0reyJ2bXVsb3N3IiwJVlggKDQsIDM5Miks CVZYX01BU0ssICAgICBQUENWRUMyLAkgICAgUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSB7InZl eHB0ZWZwIiwJVlggKDQsIDM5NCksCVZYVkFfTUFTSywgICBQUENWRUN8UFBDVkxFLCBQUENOT05F LAl7VkQsIFZCfX0sCi0geyJ2bXJnbHciLAlWWCAoNCwgMzk2KSwJVlhfTUFTSywgICAgIFBQQ1ZF Q3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0geyJ2cGtzaHNzIiwJVlggKDQsIDM5 OCksCVZYX01BU0ssICAgICBQUENWRUN8UFBDVkxFLCBQUENOT05FLAl7VkQsIFZBLCBWQn19LAot IHsibWFjY2h3c3UiLAlYTyAoNCwgMjA0LDAsMCksWE9fTUFTSywgICAgIE1VTEhXfFBQQ1ZMRSwg UFBDTk9ORSwJe1JULCBSQSwgUkJ9fSwKLSB7Im1hY2Nod3N1LiIsCVhPICg0LCAyMDQsMCwxKSxY T19NQVNLLCAgICAgTVVMSFd8UFBDVkxFLCBQUENOT05FLAl7UlQsIFJBLCBSQn19LAotK3sidm1h eHNkIiwJVlggKDQsIDQ1MCksCVZYX01BU0ssICAgICBQUENWRUMyLAkgICAgUFBDTk9ORSwJe1ZE LCBWQSwgVkJ9fSwKLSB7InZzbCIsCQlWWCAoNCwgNDUyKSwJVlhfTUFTSywgICAgIFBQQ1ZFQ3xQ UENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0geyJ2Y21wZ2VmcCIsCVZYUig0LCA0NTQs MCksCVZYUl9NQVNLLCAgICBQUENWRUN8UFBDVkxFLCBQUENOT05FLAl7VkQsIFZBLCBWQn19LAot IHsidmxvZ2VmcCIsCVZYICg0LCA0NTgpLAlWWFZBX01BU0ssICAgUFBDVkVDfFBQQ1ZMRSwgUFBD Tk9ORSwJe1ZELCBWQn19LAotQEAgLTMwMTQsNiArMzA1NSw3IEBACi0geyJldmZzbmFicyIsCVZY ICg0LCA2NDUpLAlWWF9NQVNLLCAgICAgUFBDU1BFfFBQQ1ZMRSwgUFBDTk9ORSwJe1JTLCBSQX19 LAotIHsiZXZmc25lZyIsCVZYICg0LCA2NDYpLAlWWF9NQVNLLCAgICAgUFBDU1BFfFBQQ1ZMRSwg UFBDTk9ORSwJe1JTLCBSQX19LAotIHsidmNtcGd0dXciLAlWWFIoNCwgNjQ2LDApLAlWWFJfTUFT SywgICAgUFBDVkVDfFBQQ1ZMRSwgUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSt7InZtdWxldXci LAlWWCAoNCwgNjQ4KSwJVlhfTUFTSywgICAgIFBQQ1ZFQzIsCSAgICBQUENOT05FLAl7VkQsIFZB LCBWQn19LAotIHsiZXZmc211bCIsCVZYICg0LCA2NDgpLAlWWF9NQVNLLCAgICAgUFBDU1BFfFBQ Q1ZMRSwgUFBDTk9ORSwJe1JTLCBSQSwgUkJ9fSwKLSB7ImV2ZnNkaXYiLAlWWCAoNCwgNjQ5KSwJ VlhfTUFTSywgICAgIFBQQ1NQRXxQUENWTEUsIFBQQ05PTkUsCXtSUywgUkEsIFJCfX0sCi0geyJ2 cmZpcCIsCVZYICg0LCA2NTApLAlWWFZBX01BU0ssICAgUFBDVkVDfFBQQ1ZMRSwgUFBDTk9ORSwJ e1ZELCBWQn19LAotQEAgLTMwMzksMTEgKzMwODEsMTMgQEAKLSB7ImNwdXQiLAlBUFUoNCwgMzQ4 LDApLAlBUFVfUlRfTUFTSywgUFBDNDA1LAlQUENOT05FLAl7UkEsIEZTTH19LAotIHsiZWZzYWRk IiwJVlggKDQsIDcwNCksCVZYX01BU0ssICAgICBQUENFRlN8UFBDVkxFLCBQUENOT05FLAl7UlMs IFJBLCBSQn19LAotIHsiZWZzc3ViIiwJVlggKDQsIDcwNSksCVZYX01BU0ssICAgICBQUENFRlN8 UFBDVkxFLCBQUENOT05FLAl7UlMsIFJBLCBSQn19LAotK3sidm1pbnVkIiwJVlggKDQsIDcwNiks CVZYX01BU0ssICAgICBQUENWRUMyLAkgICAgUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSB7ImVm c2FicyIsCVZYICg0LCA3MDgpLAlWWF9NQVNLLCAgICAgUFBDRUZTfFBQQ1ZMRSwgUFBDTk9ORSwJ e1JTLCBSQX19LAotIHsidnNyIiwJCVZYICg0LCA3MDgpLAlWWF9NQVNLLCAgICAgUFBDVkVDfFBQ Q1ZMRSwgUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSB7ImVmc25hYnMiLAlWWCAoNCwgNzA5KSwJ VlhfTUFTSywgICAgIFBQQ0VGU3xQUENWTEUsIFBQQ05PTkUsCXtSUywgUkF9fSwKLSB7ImVmc25l ZyIsCVZYICg0LCA3MTApLAlWWF9NQVNLLCAgICAgUFBDRUZTfFBQQ1ZMRSwgUFBDTk9ORSwJe1JT LCBSQX19LAotIHsidmNtcGd0ZnAiLAlWWFIoNCwgNzEwLDApLAlWWFJfTUFTSywgICAgUFBDVkVD fFBQQ1ZMRSwgUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSt7InZjbXBndHVkIiwJVlhSKDQsIDcx MSwwKSwJVlhSX01BU0ssICAgIFBQQ1ZFQzIsCSAgICBQUENOT05FLAl7VkQsIFZBLCBWQn19LAot IHsiZWZzbXVsIiwJVlggKDQsIDcxMiksCVZYX01BU0ssICAgICBQUENFRlN8UFBDVkxFLCBQUENO T05FLAl7UlMsIFJBLCBSQn19LAotIHsiZWZzZGl2IiwJVlggKDQsIDcxMyksCVZYX01BU0ssICAg ICBQUENFRlN8UFBDVkxFLCBQUENOT05FLAl7UlMsIFJBLCBSQn19LAotIHsidnJmaW0iLAlWWCAo NCwgNzE0KSwJVlhWQV9NQVNLLCAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkJ9fSwK LUBAIC0zMTYzLDEyICszMjA3LDE2IEBACi0geyJ2bWluc3ciLAlWWCAoNCwgODk4KSwJVlhfTUFT SywgICAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0geyJ2c3JhdyIs CVZYICg0LCA5MDApLAlWWF9NQVNLLCAgICAgUFBDVkVDfFBQQ1ZMRSwgUFBDTk9ORSwJe1ZELCBW QSwgVkJ9fSwKLSB7InZjbXBndHN3IiwJVlhSKDQsIDkwMiwwKSwJVlhSX01BU0ssICAgIFBQQ1ZF Q3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0reyJ2bXVsZXN3IiwJVlggKDQsIDkw NCksCVZYX01BU0ssICAgICBQUENWRUMyLAkgICAgUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSB7 InZjdHV4cyIsCVZYICg0LCA5MDYpLAlWWF9NQVNLLCAgICAgUFBDVkVDfFBQQ1ZMRSwgUFBDTk9O RSwJe1ZELCBWQiwgVUlNTX19LAotIHsidmNmcHV4d3MiLAlWWCAoNCwgOTA2KSwJVlhfTUFTSywg ICAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkIsIFVJTU19fSwKLSB7InZzcGx0aXN3 IiwJVlggKDQsIDkwOCksCVZYVkJfTUFTSywgICBQUENWRUN8UFBDVkxFLCBQUENOT05FLAl7VkQs IFNJTU19fSwKLSB7Im1hY2xod3N1IiwJWE8gKDQsIDQ2MCwwLDApLFhPX01BU0ssICAgICBNVUxI V3xQUENWTEUsIFBQQ05PTkUsCXtSVCwgUkEsIFJCfX0sCi0geyJtYWNsaHdzdS4iLAlYTyAoNCwg NDYwLDAsMSksWE9fTUFTSywgICAgIE1VTEhXfFBQQ1ZMRSwgUFBDTk9ORSwJe1JULCBSQSwgUkJ9 fSwKLSt7InZtaW5zZCIsCVZYICg0LCA5NjIpLAlWWF9NQVNLLCAgICAgUFBDVkVDMiwJICAgIFBQ Q05PTkUsCXtWRCwgVkEsIFZCfX0sCi0reyJ2c3JhZCIsCVZYICg0LCA5NjQpLAlWWF9NQVNLLCAg ICAgUFBDVkVDMiwJICAgIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0geyJ2Y21wYmZwIiwJVlhS KDQsIDk2NiwwKSwJVlhSX01BU0ssICAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkEs IFZCfX0sCi0reyJ2Y21wZ3RzZCIsCVZYUig0LCA5NjcsMCksCVZYUl9NQVNLLCAgICBQUENWRUMy LAlQUENOT05FLAl7VkQsIFZBLCBWQn19LAotIHsidmN0c3hzIiwJVlggKDQsIDk3MCksCVZYX01B U0ssICAgICBQUENWRUN8UFBDVkxFLCBQUENOT05FLAl7VkQsIFZCLCBVSU1NfX0sCi0geyJ2Y2Zw c3h3cyIsCVZYICg0LCA5NzApLAlWWF9NQVNLLCAgICAgUFBDVkVDfFBQQ1ZMRSwgUFBDTk9ORSwJ e1ZELCBWQiwgVUlNTX19LAotIHsidnVwa2xweCIsCVZYICg0LCA5NzQpLAlWWFZBX01BU0ssICAg UFBDVkVDfFBQQ1ZMRSwgUFBDTk9ORSwJe1ZELCBWQn19LAotQEAgLTMxNzcsNiArMzIyNSw3IEBA Ci0geyJubWFjbGh3cyIsCVhPICg0LCA0OTQsMCwwKSxYT19NQVNLLCAgICAgTVVMSFd8UFBDVkxF LCBQUENOT05FLAl7UlQsIFJBLCBSQn19LAotIHsibm1hY2xod3MuIiwJWE8gKDQsIDQ5NCwwLDEp LFhPX01BU0ssICAgICBNVUxIV3xQUENWTEUsIFBQQ05PTkUsCXtSVCwgUkEsIFJCfX0sCi0geyJ2 c3VidWJtIiwJVlggKDQsMTAyNCksCVZYX01BU0ssICAgICBQUENWRUN8UFBDVkxFLCBQUENOT05F LAl7VkQsIFZBLCBWQn19LAotK3siYmNkYWRkLiIsCVZYICg0LDEwMjUpLAlWWFBTX01BU0ssICAg UFBDVkVDMiwJICAgIFBQQ05PTkUsCXtWRCwgVkEsIFZCLCBQU319LAotIHsidmF2Z3ViIiwJVlgg KDQsMTAyNiksCVZYX01BU0ssICAgICBQUENWRUN8UFBDVkxFLCBQUENOT05FLAl7VkQsIFZBLCBW Qn19LAotIHsidmFic2R1YiIsCVZYICg0LDEwMjcpLAlWWF9NQVNLLCAgICAgUFBDVkVDMiwJUFBD Tk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSB7ImV2bWhlc3NmIiwJVlggKDQsMTAyNyksCVZYX01BU0ss ICAgICBQUENTUEV8UFBDVkxFLCBQUENOT05FLAl7UlMsIFJBLCBSQn19LAotQEAgLTMxODUsNiAr MzIzNCw3IEBACi0geyJ1ZGkwZmNtLiIsCUFQVSg0LCA1MTUsMCksIEFQVV9NQVNLLCBQUEM0MDV8 UFBDNDQwLCBQUEM0NzYsCQl7VVJULCBVUkEsIFVSQn19LAotIHsidWRpMGZjbSIsCUFQVSg0LCA1 MTUsMSksIEFQVV9NQVNLLCBQUEM0MDV8UFBDNDQwLCBQUEM0NzYsCQl7VVJULCBVUkEsIFVSQn19 LAotIHsiZXZtaG9zc2YiLAlWWCAoNCwxMDMxKSwJVlhfTUFTSywgICAgIFBQQ1NQRXxQUENWTEUs IFBQQ05PTkUsCXtSUywgUkEsIFJCfX0sCi0reyJ2cG1zdW1iIiwJVlggKDQsMTAzMiksCVZYX01B U0ssICAgICBQUENWRUMyLAkgICAgUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSB7ImV2bWhldW1p IiwJVlggKDQsMTAzMiksCVZYX01BU0ssICAgICBQUENTUEV8UFBDVkxFLCBQUENOT05FLAl7UlMs IFJBLCBSQn19LAotIHsiZXZtaGVzbWkiLAlWWCAoNCwxMDMzKSwJVlhfTUFTSywgICAgIFBQQ1NQ RXxQUENWTEUsIFBQQ05PTkUsCXtSUywgUkEsIFJCfX0sCi0geyJ2bWF4ZnAiLAlWWCAoNCwxMDM0 KSwJVlhfTUFTSywgICAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi1A QCAtMzIwNiw2ICszMjU2LDcgQEAKLSB7ImV2bWhvc21pYSIsCVZYICg0LDEwNjkpLAlWWF9NQVNL LCAgICAgUFBDU1BFfFBQQ1ZMRSwgUFBDTk9ORSwJe1JTLCBSQSwgUkJ9fSwKLSB7ImV2bWhvc21m YSIsCVZYICg0LDEwNzEpLAlWWF9NQVNLLCAgICAgUFBDU1BFfFBQQ1ZMRSwgUFBDTk9ORSwJe1JT LCBSQSwgUkJ9fSwKLSB7InZzdWJ1aG0iLAlWWCAoNCwxMDg4KSwJVlhfTUFTSywgICAgIFBQQ1ZF Q3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0reyJiY2RzdWIuIiwJVlggKDQsMTA4 OSksCVZYUFNfTUFTSywgICBQUENWRUMyLAkgICAgUFBDTk9ORSwJe1ZELCBWQSwgVkIsIFBTfX0s Ci0geyJ2YXZndWgiLAlWWCAoNCwxMDkwKSwJVlhfTUFTSywgICAgIFBQQ1ZFQ3xQUENWTEUsIFBQ Q05PTkUsCXtWRCwgVkEsIFZCfX0sCi0geyJ2YWJzZHVoIiwJVlggKDQsMTA5MSksCVZYX01BU0ss ICAgICBQUENWRUMyLAlQUENOT05FLAl7VkQsIFZBLCBWQn19LAotIHsidmFuZGMiLAlWWCAoNCwx MDkyKSwJVlhfTUFTSywgICAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0s Ci1AQCAtMzIxMywxMSArMzI2NCwxMyBAQAotIHsidWRpMWZjbS4iLAlBUFUoNCwgNTQ3LDApLCBB UFVfTUFTSywgUFBDNDA1fFBQQzQ0MCwgUFBDNDc2LAkJe1VSVCwgVVJBLCBVUkJ9fSwKLSB7InVk aTFmY20iLAlBUFUoNCwgNTQ3LDEpLCBBUFVfTUFTSywgUFBDNDA1fFBQQzQ0MCwgUFBDNDc2LAkJ e1VSVCwgVVJBLCBVUkJ9fSwgICAKLSB7ImV2bXdoc3NmIiwJVlggKDQsMTA5NSksCVZYX01BU0ss ICAgICBQUENTUEV8UFBDVkxFLCBQUENOT05FLAl7UlMsIFJBLCBSQn19LAotK3sidnBtc3VtaCIs CVZYICg0LDEwOTYpLAlWWF9NQVNLLCAgICAgUFBDVkVDMiwJICAgIFBQQ05PTkUsCXtWRCwgVkEs IFZCfX0sCi0geyJldm13bHVtaSIsCVZYICg0LDEwOTYpLAlWWF9NQVNLLCAgICAgUFBDU1BFfFBQ Q1ZMRSwgUFBDTk9ORSwJe1JTLCBSQSwgUkJ9fSwKLSB7InZtaW5mcCIsCVZYICg0LDEwOTgpLAlW WF9NQVNLLCAgICAgUFBDVkVDfFBQQ1ZMRSwgUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSB7ImV2 bXdodW1pIiwJVlggKDQsMTEwMCksCVZYX01BU0ssICAgICBQUENTUEV8UFBDVkxFLCBQUENOT05F LAl7UlMsIFJBLCBSQn19LAotIHsidnNybyIsCVZYICg0LDExMDApLAlWWF9NQVNLLCAgICAgUFBD VkVDfFBQQ1ZMRSwgUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSB7ImV2bXdoc21pIiwJVlggKDQs MTEwMSksCVZYX01BU0ssICAgICBQUENTUEV8UFBDVkxFLCBQUENOT05FLAl7UlMsIFJBLCBSQn19 LAotK3sidnBrdWR1bSIsCVZYICg0LDExMDIpLAlWWF9NQVNLLCAgICAgUFBDVkVDMiwJICAgIFBQ Q05PTkUsCXtWRCwgVkEsIFZCfX0sCi0geyJldm13aHNtZiIsCVZYICg0LDExMDMpLAlWWF9NQVNL LCAgICAgUFBDU1BFfFBQQ1ZMRSwgUFBDTk9ORSwJe1JTLCBSQSwgUkJ9fSwKLSB7ImV2bXdzc2Yi LAlWWCAoNCwxMTA3KSwJVlhfTUFTSywgICAgIFBQQ1NQRXxQUENWTEUsIFBQQ05PTkUsCXtSUywg UkEsIFJCfX0sCi0geyJtYWNoaHdvIiwJWE8gKDQsCTQ0LDEsMCksWE9fTUFTSywgICAgIE1VTEhX fFBQQ1ZMRSwgUFBDTk9ORSwJe1JULCBSQSwgUkJ9fSwKLUBAIC0zMjQzLDYgKzMyOTYsNyBAQAot IHsidmFic2R1dyIsCVZYICg0LDExNTUpLAlWWF9NQVNLLCAgICAgUFBDVkVDMiwJUFBDTk9ORSwJ e1ZELCBWQSwgVkJ9fSwKLSB7InZtciIsCQlWWCAoNCwxMTU2KSwJVlhfTUFTSywgICAgIFBQQ1ZF Q3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCQX19LAotIHsidm9yIiwJCVZYICg0LDExNTYp LAlWWF9NQVNLLCAgICAgUFBDVkVDfFBQQ1ZMRSwgUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSt7 InZwbXN1bXciLAlWWCAoNCwxMTYwKSwJVlhfTUFTSywgICAgIFBQQ1ZFQzIsCSAgICBQUENOT05F LAl7VkQsIFZBLCBWQn19LAotIHsidmNtcGVxdXcuIiwJVlhSKDQsIDEzNCwxKSwJVlhSX01BU0ss ICAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0geyJ1ZGkyZmNtLiIs CUFQVSg0LCA1NzksMCksIEFQVV9NQVNLLCBQUEM0MDV8UFBDNDQwLCBQUEM0NzYsCQl7VVJULCBV UkEsIFVSQn19LAotIHsidWRpMmZjbSIsCUFQVSg0LCA1NzksMSksIEFQVV9NQVNLLCBQUEM0MDV8 UFBDNDQwLCBQUEM0NzYsCQl7VVJULCBVUkEsIFVSQn19LCAgIAotQEAgLTMyNTAsNiArMzMwNCw3 IEBACi0geyJtYWNoaHdzdW8uIiwJWE8gKDQsCTc2LDEsMSksWE9fTUFTSywgICAgIE1VTEhXfFBQ Q1ZMRSwgUFBDTk9ORSwJe1JULCBSQSwgUkJ9fSwKLSB7InBzX21lcmdlMTAiLAlYT1BTKDQsNTky LDApLAlYT1BTX01BU0ssICAgUFBDUFMsCVBQQ05PTkUsCXtGUlQsIEZSQSwgRlJCfX0sCi0geyJw c19tZXJnZTEwLiIsCVhPUFMoNCw1OTIsMSksCVhPUFNfTUFTSywgICBQUENQUywJUFBDTk9ORSwJ e0ZSVCwgRlJBLCBGUkJ9fSwKLSt7InZzdWJ1ZG0iLAlWWCAoNCwxMjE2KSwJVlhfTUFTSywgICAg IFBQQ1ZFQzIsCSAgICBQUENOT05FLAl7VkQsIFZBLCBWQn19LAotIHsiZXZhZGR1c2lhYXciLAlW WCAoNCwxMjE2KSwJVlhfTUFTSywgICAgIFBQQ1NQRXxQUENWTEUsIFBQQ05PTkUsCXtSUywgUkF9 fSwKLSB7ImV2YWRkc3NpYWF3IiwJVlggKDQsMTIxNyksCVZYX01BU0ssICAgICBQUENTUEV8UFBD VkxFLCBQUENOT05FLAl7UlMsIFJBfX0sCi0geyJldnN1YmZ1c2lhYXciLFZYICg0LDEyMTgpLAlW WF9NQVNLLCAgICAgUFBDU1BFfFBQQ1ZMRSwgUFBDTk9ORSwJe1JTLCBSQX19LAotQEAgLTMyNTks MTggKzMzMTQsMjIgQEAKLSB7ImV2ZGl2d3MiLAlWWCAoNCwxMjIyKSwJVlhfTUFTSywgICAgIFBQ Q1NQRXxQUENWTEUsIFBQQ05PTkUsCXtSUywgUkEsIFJCfX0sCi0geyJ2Y21wZXFmcC4iLAlWWFIo NCwgMTk4LDEpLAlWWFJfTUFTSywgICAgUFBDVkVDfFBQQ1ZMRSwgUFBDTk9ORSwJe1ZELCBWQSwg VkJ9fSwKLSB7InVkaTNmY20uIiwJQVBVKDQsIDYxMSwwKSwgQVBVX01BU0ssIFBQQzQwNXxQUEM0 NDAsIFBQQzQ3NiwJCXtVUlQsIFVSQSwgVVJCfX0sCi0reyJ2Y21wZXF1ZC4iLAlWWFIoNCwgMTk5 LDEpLAlWWFJfTUFTSywgICAgUFBDVkVDMiwJUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSB7InVk aTNmY20iLAlBUFUoNCwgNjExLDEpLCBBUFVfTUFTSywgUFBDNDA1fFBQQzQ0MCwgUFBDNDc2LAkJ e1VSVCwgVVJBLCBVUkJ9fSwgICAKLSB7ImV2ZGl2d3UiLAlWWCAoNCwxMjIzKSwJVlhfTUFTSywg ICAgIFBQQ1NQRXxQUENWTEUsIFBQQ05PTkUsCXtSUywgUkEsIFJCfX0sCi0reyJ2cG1zdW1kIiwJ VlggKDQsMTIyNCksCVZYX01BU0ssICAgICBQUENWRUMyLAkgICAgUFBDTk9ORSwJe1ZELCBWQSwg VkJ9fSwKLSB7ImV2YWRkdW1pYWF3IiwJVlggKDQsMTIyNCksCVZYX01BU0ssICAgICBQUENTUEV8 UFBDVkxFLCBQUENOT05FLAl7UlMsIFJBfX0sCi0geyJldmFkZHNtaWFhdyIsCVZYICg0LDEyMjUp LAlWWF9NQVNLLCAgICAgUFBDU1BFfFBQQ1ZMRSwgUFBDTk9ORSwJe1JTLCBSQX19LAotIHsiZXZz dWJmdW1pYWF3IixWWCAoNCwxMjI2KSwJVlhfTUFTSywgICAgIFBQQ1NQRXxQUENWTEUsIFBQQ05P TkUsCXtSUywgUkF9fSwKLSB7ImV2c3ViZnNtaWFhdyIsVlggKDQsMTIyNyksCVZYX01BU0ssICAg ICBQUENTUEV8UFBDVkxFLCBQUENOT05FLAl7UlMsIFJBfX0sCi0reyJ2cGt1ZHVzIiwJVlggKDQs MTIzMCksCVZYX01BU0ssICAgICBQUENWRUMyLAkgICAgUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwK LSB7Im1hY2hod3NvIiwJWE8gKDQsIDEwOCwxLDApLFhPX01BU0ssICAgICBNVUxIV3xQUENWTEUs IFBQQ05PTkUsCXtSVCwgUkEsIFJCfX0sCi0geyJtYWNoaHdzby4iLAlYTyAoNCwgMTA4LDEsMSks WE9fTUFTSywgICAgIE1VTEhXfFBQQ1ZMRSwgUFBDTk9ORSwJe1JULCBSQSwgUkJ9fSwKLSB7Im5t YWNoaHdzbyIsCVhPICg0LCAxMTAsMSwwKSxYT19NQVNLLCAgICAgTVVMSFd8UFBDVkxFLCBQUENO T05FLAl7UlQsIFJBLCBSQn19LAotIHsibm1hY2hod3NvLiIsCVhPICg0LCAxMTAsMSwxKSxYT19N QVNLLCAgICAgTVVMSFd8UFBDVkxFLCBQUENOT05FLAl7UlQsIFJBLCBSQn19LAotIHsicHNfbWVy Z2UxMSIsCVhPUFMoNCw2MjQsMCksCVhPUFNfTUFTSywgICBQUENQUywJUFBDTk9ORSwJe0ZSVCwg RlJBLCBGUkJ9fSwKLSB7InBzX21lcmdlMTEuIiwJWE9QUyg0LDYyNCwxKSwJWE9QU19NQVNLLCAg IFBQQ1BTLAlQUENOT05FLAl7RlJULCBGUkEsIEZSQn19LAotK3sidnN1YnVxbSIsCVZYICg0LDEy ODApLAlWWF9NQVNLLCAgICAgUFBDVkVDMiwJUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSB7ImV2 bWhldXNpYWF3IiwJVlggKDQsMTI4MCksCVZYX01BU0ssICAgICBQUENTUEV8UFBDVkxFLCBQUENO T05FLAl7UlMsIFJBLCBSQn19LAotIHsiZXZtaGVzc2lhYXciLAlWWCAoNCwxMjgxKSwJVlhfTUFT SywgICAgIFBQQ1NQRXxQUENWTEUsIFBQQ05PTkUsCXtSUywgUkEsIFJCfX0sCi0geyJ2YXZnc2Ii LAlWWCAoNCwxMjgyKSwJVlhfTUFTSywgICAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtWRCwg VkEsIFZCfX0sCi1AQCAtMzI4Myw4ICszMzQyLDExIEBACi0geyJ1ZGk0ZmNtIiwJQVBVKDQsIDY0 MywxKSwgQVBVX01BU0ssIFBQQzQwNXxQUEM0NDAsIFBQQzQ3NiwJCXtVUlQsIFVSQSwgVVJCfX0s Ci0geyJldm1ob3NzZmFhdyIsCVZYICg0LDEyODcpLAlWWF9NQVNLLCAgICAgUFBDU1BFfFBQQ1ZM RSwgUFBDTk9ORSwJe1JTLCBSQSwgUkJ9fSwKLSB7ImV2bWhldW1pYWF3IiwJVlggKDQsMTI4OCks CVZYX01BU0ssICAgICBQUENTUEV8UFBDVkxFLCBQUENOT05FLAl7UlMsIFJBLCBSQn19LAotK3si dmNpcGhlciIsCVZYICg0LDEyODgpLAlWWF9NQVNLLCAgICAgUFBDVkVDMiwJICAgIFBQQ05PTkUs CXtWRCwgVkEsIFZCfX0sCi0reyJ2Y2lwaGVybGFzdCIsCVZYICg0LDEyODkpLAlWWF9NQVNLLCAg ICAgUFBDVkVDMiwJICAgIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0geyJldm1oZXNtaWFhdyIs CVZYICg0LDEyODkpLAlWWF9NQVNLLCAgICAgUFBDU1BFfFBQQ1ZMRSwgUFBDTk9ORSwJe1JTLCBS QSwgUkJ9fSwKLSB7ImV2bWhlc21mYWF3IiwJVlggKDQsMTI5MSksCVZYX01BU0ssICAgICBQUENT UEV8UFBDVkxFLCBQUENOT05FLAl7UlMsIFJBLCBSQn19LAotK3sidmdiYmQiLAlWWCAoNCwxMjky KSwJVlhWQV9NQVNLLCAgIFBQQ1ZFQzIsCSAgICBQUENOT05FLAl7VkQsIFZCfX0sCi0geyJldm1o b3VtaWFhdyIsCVZYICg0LDEyOTIpLAlWWF9NQVNLLCAgICAgUFBDU1BFfFBQQ1ZMRSwgUFBDTk9O RSwJe1JTLCBSQSwgUkJ9fSwKLSB7ImV2bWhvc21pYWF3IiwJVlggKDQsMTI5MyksCVZYX01BU0ss ICAgICBQUENTUEV8UFBDVkxFLCBQUENOT05FLAl7UlMsIFJBLCBSQn19LAotIHsiZXZtaG9zbWZh YXciLAlWWCAoNCwxMjk1KSwJVlhfTUFTSywgICAgIFBQQ1NQRXxQUENWTEUsIFBQQ05PTkUsCXtS UywgUkEsIFJCfX0sCi1AQCAtMzI5NiwxMyArMzM1OCwxOSBAQAotIHsiZXZtaG9ndW1pYWEiLAlW WCAoNCwxMzI0KSwJVlhfTUFTSywgICAgIFBQQ1NQRXxQUENWTEUsIFBQQ05PTkUsCXtSUywgUkEs IFJCfX0sCi0geyJldm1ob2dzbWlhYSIsCVZYICg0LDEzMjUpLAlWWF9NQVNLLCAgICAgUFBDU1BF fFBQQ1ZMRSwgUFBDTk9ORSwJe1JTLCBSQSwgUkJ9fSwKLSB7ImV2bWhvZ3NtZmFhIiwJVlggKDQs MTMyNyksCVZYX01BU0ssICAgICBQUENTUEV8UFBDVkxFLCBQUENOT05FLAl7UlMsIFJBLCBSQn19 LAotK3sidnN1YmN1cSIsCVZYICg0LDEzNDQpLAlWWF9NQVNLLCAgICAgUFBDVkVDMiwJICAgIFBQ Q05PTkUsCXtWRCwgVkEsIFZCfX0sCi0geyJldm13bHVzaWFhdyIsCVZYICg0LDEzNDQpLAlWWF9N QVNLLCAgICAgUFBDU1BFfFBQQ1ZMRSwgUFBDTk9ORSwJe1JTLCBSQSwgUkJ9fSwKLSB7ImV2bXds c3NpYWF3IiwJVlggKDQsMTM0NSksCVZYX01BU0ssICAgICBQUENTUEV8UFBDVkxFLCBQUENOT05F LAl7UlMsIFJBLCBSQn19LAotIHsidmF2Z3NoIiwJVlggKDQsMTM0NiksCVZYX01BU0ssICAgICBQ UENWRUN8UFBDVkxFLCBQUENOT05FLAl7VkQsIFZBLCBWQn19LAotK3sidm9yYyIsCVZYICg0LDEz NDgpLAlWWF9NQVNLLCAgICAgUFBDVkVDMiwJICAgIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0g eyJ1ZGk1ZmNtLiIsCUFQVSg0LCA2NzUsMCksIEFQVV9NQVNLLCBQUEM0MDV8UFBDNDQwLCBQUEM0 NzYsCQl7VVJULCBVUkEsIFVSQn19LAotIHsidWRpNWZjbSIsCUFQVSg0LCA2NzUsMSksIEFQVV9N QVNLLCBQUEM0MDV8UFBDNDQwLCBQUEM0NzYsCQl7VVJULCBVUkEsIFVSQn19LAotK3sidm5jaXBo ZXIiLAlWWCAoNCwxMzUyKSwJVlhfTUFTSywgICAgIFBQQ1ZFQzIsCSAgICBQUENOT05FLAl7VkQs IFZBLCBWQn19LAotIHsiZXZtd2x1bWlhYXciLAlWWCAoNCwxMzUyKSwJVlhfTUFTSywgICAgIFBQ Q1NQRXxQUENWTEUsIFBQQ05PTkUsCXtSUywgUkEsIFJCfX0sCi0reyJ2bmNpcGhlcmxhc3QiLFZY ICg0LDEzNTMpLAlWWF9NQVNLLCAgICAgUFBDVkVDMiwJICAgIFBQQ05PTkUsCXtWRCwgVkEsIFZC fX0sCi0geyJldm13bHNtaWFhdyIsCVZYICg0LDEzNTMpLAlWWF9NQVNLLCAgICAgUFBDU1BFfFBQ Q1ZMRSwgUFBDTk9ORSwJe1JTLCBSQSwgUkJ9fSwKLSt7InZicGVybXEiLAlWWCAoNCwxMzU2KSwJ VlhfTUFTSywgICAgIFBQQ1ZFQzIsCSAgICBQUENOT05FLAl7VkQsIFZBLCBWQn19LAotK3sidnBr c2R1cyIsCVZYICg0LDEzNTgpLAlWWF9NQVNLLCAgICAgUFBDVkVDMiwJICAgIFBQQ05PTkUsCXtW RCwgVkEsIFZCfX0sCi0geyJldm13c3NmYWEiLAlWWCAoNCwxMzYzKSwJVlhfTUFTSywgICAgIFBQ Q1NQRXxQUENWTEUsIFBQQ05PTkUsCXtSUywgUkEsIFJCfX0sCi0geyJtYWNjaHdvIiwJWE8gKDQs IDE3MiwxLDApLFhPX01BU0ssICAgICBNVUxIV3xQUENWTEUsIFBQQ05PTkUsCXtSVCwgUkEsIFJC fX0sCi0geyJldm13dW1pYWEiLAlWWCAoNCwxMzY4KSwJVlhfTUFTSywgICAgIFBQQ1NQRXxQUENW TEUsIFBQQ05PTkUsCXtSUywgUkEsIFJCfX0sCi1AQCAtMzMxNiw2ICszMzg0LDcgQEAKLSB7ImV2 bWhlc3NpYW53IiwJVlggKDQsMTQwOSksCVZYX01BU0ssICAgICBQUENTUEV8UFBDVkxFLCBQUENO T05FLAl7UlMsIFJBLCBSQn19LAotIHsidmF2Z3N3IiwJVlggKDQsMTQxMCksCVZYX01BU0ssICAg ICBQUENWRUN8UFBDVkxFLCBQUENOT05FLAl7VkQsIFZBLCBWQn19LAotIHsiZXZtaGVzc2Zhbnci LAlWWCAoNCwxNDExKSwJVlhfTUFTSywgICAgIFBQQ1NQRXxQUENWTEUsIFBQQ05PTkUsCXtSUywg UkEsIFJCfX0sCi0reyJ2bmFuZCIsCVZYICg0LDE0MTIpLAlWWF9NQVNLLCAgICAgUFBDVkVDMiwJ ICAgIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0geyJldm1ob3VzaWFudyIsCVZYICg0LDE0MTIp LAlWWF9NQVNLLCAgICAgUFBDU1BFfFBQQ1ZMRSwgUFBDTk9ORSwJe1JTLCBSQSwgUkJ9fSwKLSB7 ImV2bWhvc3NpYW53IiwJVlggKDQsMTQxMyksCVZYX01BU0ssICAgICBQUENTUEV8UFBDVkxFLCBQ UENOT05FLAl7UlMsIFJBLCBSQn19LAotIHsidWRpNmZjbS4iLAlBUFUoNCwgNzA3LDApLCBBUFVf TUFTSywgUFBDNDA1fFBQQzQ0MCwgUFBDNDc2LAkJe1VSVCwgVVJBLCBVUkJ9fSwKLUBAIC0zMzM3 LDExICszNDA2LDE0IEBACi0geyJldm1ob2dzbWZhbiIsCVZYICg0LDE0NTUpLAlWWF9NQVNLLCAg ICAgUFBDU1BFfFBQQ1ZMRSwgUFBDTk9ORSwJe1JTLCBSQSwgUkJ9fSwKLSB7ImV2bXdsdXNpYW53 IiwJVlggKDQsMTQ3MiksCVZYX01BU0ssICAgICBQUENTUEV8UFBDVkxFLCBQUENOT05FLAl7UlMs IFJBLCBSQn19LAotIHsiZXZtd2xzc2lhbnciLAlWWCAoNCwxNDczKSwJVlhfTUFTSywgICAgIFBQ Q1NQRXxQUENWTEUsIFBQQ05PTkUsCXtSUywgUkEsIFJCfX0sCi0reyJ2c2xkIiwJVlggKDQsMTQ3 NiksCVZYX01BU0ssICAgICBQUENWRUMyLAkgICAgUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSB7 InZjbXBnZWZwLiIsCVZYUig0LCA0NTQsMSksCVZYUl9NQVNLLCAgICBQUENWRUN8UFBDVkxFLCBQ UENOT05FLAl7VkQsIFZBLCBWQn19LAotIHsidWRpN2ZjbS4iLAlBUFUoNCwgNzM5LDApLCBBUFVf TUFTSywgUFBDNDA1fFBQQzQ0MCwgUFBDNDc2LAkJe1VSVCwgVVJBLCBVUkJ9fSwKLSB7InVkaTdm Y20iLAlBUFUoNCwgNzM5LDEpLCBBUFVfTUFTSywgUFBDNDA1fFBQQzQ0MCwgUFBDNDc2LAkJe1VS VCwgVVJBLCBVUkJ9fSwKLSt7InZzYm94IiwJVlggKDQsMTQ4MCksCVZYVkJfTUFTSywgICBQUENW RUMyLAkgICAgUFBDTk9ORSwJe1ZELCBWQX19LAotIHsiZXZtd2x1bWlhbnciLAlWWCAoNCwxNDgw KSwJVlhfTUFTSywgICAgIFBQQ1NQRXxQUENWTEUsIFBQQ05PTkUsCXtSUywgUkEsIFJCfX0sCi0g eyJldm13bHNtaWFudyIsCVZYICg0LDE0ODEpLAlWWF9NQVNLLCAgICAgUFBDU1BFfFBQQ1ZMRSwg UFBDTk9ORSwJe1JTLCBSQSwgUkJ9fSwKLSt7InZwa3Nkc3MiLAlWWCAoNCwxNDg2KSwJVlhfTUFT SywgICAgIFBQQ1ZFQzIsCSAgICBQUENOT05FLAl7VkQsIFZBLCBWQn19LAotIHsiZXZtd3NzZmFu IiwJVlggKDQsMTQ5MSksCVZYX01BU0ssICAgICBQUENTUEV8UFBDVkxFLCBQUENOT05FLAl7UlMs IFJBLCBSQn19LAotIHsibWFjY2h3c28iLAlYTyAoNCwgMjM2LDEsMCksWE9fTUFTSywgICAgIE1V TEhXfFBQQ1ZMRSwgUFBDTk9ORSwJe1JULCBSQSwgUkJ9fSwKLSB7ImV2bXd1bWlhbiIsCVZYICg0 LDE0OTYpLAlWWF9NQVNLLCAgICAgUFBDU1BFfFBQQ1ZMRSwgUFBDTk9ORSwJe1JTLCBSQSwgUkJ9 fSwKLUBAIC0zMzYyLDE1ICszNDM0LDI1IEBACi0geyJ2c3VtNHNocyIsCVZYICg0LDE2MDgpLAlW WF9NQVNLLCAgICAgUFBDVkVDfFBQQ1ZMRSwgUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSB7InVk aTlmY20uIiwJQVBVKDQsIDgwNCwwKSwJQVBVX01BU0ssICAgIFBQQzQ0MCwJUFBDNDc2LAkJe1VS VCwgVVJBLCBVUkJ9fSwKLSB7InVkaTlmY20iLAlBUFUoNCwgODA0LDEpLAlBUFVfTUFTSywgICAg UFBDNDQwLAlQUEM0NzYsCQl7VVJULCBVUkEsIFVSQn19LAotK3sidnVwa2hzdyIsCVZYICg0LDE2 MTQpLAlWWFZBX01BU0ssICAgUFBDVkVDMiwJICAgIFBQQ05PTkUsCXtWRCwgVkJ9fSwKLSB7InZz dWJ1d3MiLAlWWCAoNCwxNjY0KSwJVlhfTUFTSywgICAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUs CXtWRCwgVkEsIFZCfX0sCi0reyJ2c2hhc2lnbWF3IiwJVlggKDQsMTY2NiksCVZYX01BU0ssICAg ICBQUENWRUMyLAlQUENOT05FLAl7VkQsIFZBLCBTVCwgU0lYfX0sCi0reyJ2ZXF2IiwJVlggKDQs MTY2OCksCVZYX01BU0ssICAgICBQUENWRUMyLAlQUENOT05FLAl7VkQsIFZBLCBWQn19LAotIHsi dmNtcGd0dXcuIiwJVlhSKDQsIDY0NiwxKSwJVlhSX01BU0ssICAgIFBQQ1ZFQ3xQUENWTEUsIFBQ Q05PTkUsCXtWRCwgVkEsIFZCfX0sCi0geyJ1ZGkxMGZjbS4iLAlBUFUoNCwgODM1LDApLAlBUFVf TUFTSywgICAgUFBDNDQwLAlQUEM0NzYsCQl7VVJULCBVUkEsIFVSQn19LAotIHsidWRpMTBmY20i LAlBUFUoNCwgODM1LDEpLAlBUFVfTUFTSywgICAgUFBDNDQwLAlQUEM0NzYsCQl7VVJULCBVUkEs IFVSQn19LAotIHsidnN1bTJzd3MiLAlWWCAoNCwxNjcyKSwJVlhfTUFTSywgICAgIFBQQ1ZFQ3xQ UENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0reyJ2bXJnb3ciLAlWWCAoNCwxNjc2KSwJ VlhfTUFTSywgICAgIFBQQ1ZFQzIsCVBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0reyJ2c2hhc2ln bWFkIiwJVlggKDQsMTczMCksCVZYX01BU0ssICAgICBQUENWRUMyLAlQUENOT05FLAl7VkQsIFZB LCBTVCwgU0lYfX0sCi0reyJ2c3JkIiwJVlggKDQsMTczMiksCVZYX01BU0ssICAgICBQUENWRUMy LAlQUENOT05FLAl7VkQsIFZBLCBWQn19LAotIHsidmNtcGd0ZnAuIiwJVlhSKDQsIDcxMCwxKSwJ VlhSX01BU0ssICAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0geyJ1 ZGkxMWZjbS4iLAlBUFUoNCwgODY3LDApLAlBUFVfTUFTSywgICAgUFBDNDQwLAlQUEM0NzYsCQl7 VVJULCBVUkEsIFVSQn19LAotK3sidmNtcGd0dWQuIiwJVlhSKDQsIDcxMSwxKSwJVlhSX01BU0ss ICAgIFBQQ1ZFQzIsCVBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0geyJ1ZGkxMWZjbSIsCUFQVSg0 LCA4NjcsMSksCUFQVV9NQVNLLCAgICBQUEM0NDAsCVBQQzQ3NiwJCXtVUlQsIFVSQSwgVVJCfX0s Ci0reyJ2dXBrbHN3IiwJVlggKDQsMTc0MiksCVZYVkFfTUFTSywgICBQUENWRUMyLAlQUENOT05F LAl7VkQsIFZCfX0sCi0geyJ2c3Vic2JzIiwJVlggKDQsMTc5MiksCVZYX01BU0ssICAgICBQUENW RUN8UFBDVkxFLCBQUENOT05FLAl7VkQsIFZBLCBWQn19LAotK3sidmNsemIiLAlWWCAoNCwxNzk0 KSwJVlhWQV9NQVNLLCAgIFBQQ1ZFQzIsCVBQQ05PTkUsCXtWRCwgVkJ9fSwKLSt7InZwb3BjbnRi IiwJVlggKDQsMTc5NSksCVZYVkFfTUFTSywgICBQUENWRUMyLAlQUENOT05FLAl7VkQsIFZCfX0s Ci0geyJ2Y21wZ3RzYi4iLAlWWFIoNCwgNzc0LDEpLAlWWFJfTUFTSywgICAgUFBDVkVDfFBQQ1ZM RSwgUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSB7InVkaTEyZmNtLiIsCUFQVSg0LCA4OTksMCks CUFQVV9NQVNLLCAgICBQUEM0NDAsCVBQQzQ3NiwJCXtVUlQsIFVSQSwgVVJCfX0sCi0geyJ1ZGkx MmZjbSIsCUFQVSg0LCA4OTksMSksCUFQVV9NQVNLLCAgICBQUEM0NDAsCVBQQzQ3NiwJCXtVUlQs IFVSQSwgVVJCfX0sCi1AQCAtMzM3OCw2ICszNDYwLDggQEAKLSB7Im1hY2xod3VvIiwJWE8gKDQs IDM5NiwxLDApLFhPX01BU0ssICAgICBNVUxIV3xQUENWTEUsIFBQQ05PTkUsCXtSVCwgUkEsIFJC fX0sCi0geyJtYWNsaHd1by4iLAlYTyAoNCwgMzk2LDEsMSksWE9fTUFTSywgICAgIE1VTEhXfFBQ Q1ZMRSwgUFBDTk9ORSwJe1JULCBSQSwgUkJ9fSwKLSB7InZzdWJzaHMiLAlWWCAoNCwxODU2KSwJ VlhfTUFTSywgICAgIFBQQ1ZFQ3xQUENWTEUsIFBQQ05PTkUsCXtWRCwgVkEsIFZCfX0sCi0reyJ2 Y2x6aCIsCVZYICg0LDE4NTgpLAlWWFZBX01BU0ssICAgUFBDVkVDMiwJUFBDTk9ORSwJe1ZELCBW Qn19LAotK3sidnBvcGNudGgiLAlWWCAoNCwxODU5KSwJVlhWQV9NQVNLLCAgIFBQQ1ZFQzIsCVBQ Q05PTkUsCXtWRCwgVkJ9fSwKLSB7InZjbXBndHNoLiIsCVZYUig0LCA4MzgsMSksCVZYUl9NQVNL LCAgICBQUENWRUN8UFBDVkxFLCBQUENOT05FLAl7VkQsIFZBLCBWQn19LAotIHsidWRpMTNmY20u IiwJQVBVKDQsIDkzMSwwKSwJQVBVX01BU0ssICAgIFBQQzQ0MCwJUFBDNDc2LAkJe1VSVCwgVVJB LCBVUkJ9fSwKLSB7InVkaTEzZmNtIiwJQVBVKDQsIDkzMSwxKSwJQVBVX01BU0ssICAgIFBQQzQ0 MCwJUFBDNDc2LAkJe1VSVCwgVVJBLCBVUkJ9fSwKLUBAIC0zMzg2LDE0ICszNDcwLDIwIEBACi0g eyJubWFjbGh3byIsCVhPICg0LCA0MzAsMSwwKSxYT19NQVNLLCAgICAgTVVMSFd8UFBDVkxFLCBQ UENOT05FLAl7UlQsIFJBLCBSQn19LAotIHsibm1hY2xod28uIiwJWE8gKDQsIDQzMCwxLDEpLFhP X01BU0ssICAgICBNVUxIV3xQUENWTEUsIFBQQ05PTkUsCXtSVCwgUkEsIFJCfX0sCi0geyJ2c3Vi c3dzIiwJVlggKDQsMTkyMCksCVZYX01BU0ssICAgICBQUENWRUN8UFBDVkxFLCBQUENOT05FLAl7 VkQsIFZBLCBWQn19LAotK3sidmNsenciLAlWWCAoNCwxOTIyKSwJVlhWQV9NQVNLLCAgIFBQQ1ZF QzIsCVBQQ05PTkUsCXtWRCwgVkJ9fSwKLSt7InZwb3BjbnR3IiwJVlggKDQsMTkyMyksCVZYVkFf TUFTSywgICBQUENWRUMyLAlQUENOT05FLAl7VkQsIFZCfX0sCi0geyJ2Y21wZ3Rzdy4iLAlWWFIo NCwgOTAyLDEpLAlWWFJfTUFTSywgICAgUFBDVkVDfFBQQ1ZMRSwgUFBDTk9ORSwJe1ZELCBWQSwg VkJ9fSwKLSB7InVkaTE0ZmNtLiIsCUFQVSg0LCA5NjMsMCksCUFQVV9NQVNLLCAgICBQUEM0NDAs CVBQQzQ3NiwJCXtVUlQsIFVSQSwgVVJCfX0sCi0geyJ1ZGkxNGZjbSIsCUFQVSg0LCA5NjMsMSks CUFQVV9NQVNLLCAgICBQUEM0NDAsCVBQQzQ3NiwJCXtVUlQsIFVSQSwgVVJCfX0sCi0geyJ2c3Vt c3dzIiwJVlggKDQsMTkyOCksCVZYX01BU0ssICAgICBQUENWRUN8UFBDVkxFLCBQUENOT05FLAl7 VkQsIFZBLCBWQn19LAotK3sidm1yZ2V3IiwJVlggKDQsMTkzMiksCVZYX01BU0ssICAgICBQUENW RUMyLAlQUENOT05FLAl7VkQsIFZBLCBWQn19LAotIHsibWFjbGh3c3VvIiwJWE8gKDQsIDQ2MCwx LDApLFhPX01BU0ssICAgICBNVUxIV3xQUENWTEUsIFBQQ05PTkUsCXtSVCwgUkEsIFJCfX0sCi0g eyJtYWNsaHdzdW8uIiwJWE8gKDQsIDQ2MCwxLDEpLFhPX01BU0ssICAgICBNVUxIV3xQUENWTEUs IFBQQ05PTkUsCXtSVCwgUkEsIFJCfX0sCi0reyJ2Y2x6ZCIsCVZYICg0LDE5ODYpLAlWWFZBX01B U0ssICAgUFBDVkVDMiwJUFBDTk9ORSwJe1ZELCBWQn19LAotK3sidnBvcGNudGQiLAlWWCAoNCwx OTg3KSwJVlhWQV9NQVNLLCAgIFBQQ1ZFQzIsCVBQQ05PTkUsCXtWRCwgVkJ9fSwKLSB7InZjbXBi ZnAuIiwJVlhSKDQsIDk2NiwxKSwJVlhSX01BU0ssICAgIFBQQ1ZFQywJUFBDTk9ORSwJe1ZELCBW QSwgVkJ9fSwKLSB7InVkaTE1ZmNtLiIsCUFQVSg0LCA5OTUsMCksCUFQVV9NQVNLLCAgICBQUEM0 NDAsCVBQQzQ3NiwJCXtVUlQsIFVSQSwgVVJCfX0sCi0reyJ2Y21wZ3RzZC4iLAlWWFIoNCwgOTY3 LDEpLAlWWFJfTUFTSywgICAgUFBDVkVDMiwJUFBDTk9ORSwJe1ZELCBWQSwgVkJ9fSwKLSB7InVk aTE1ZmNtIiwJQVBVKDQsIDk5NSwxKSwJQVBVX01BU0ssICAgIFBQQzQ0MCwJUFBDNDc2LAkJe1VS VCwgVVJBLCBVUkJ9fSwKLSB7Im1hY2xod3NvIiwJWE8gKDQsIDQ5MiwxLDApLFhPX01BU0ssICAg ICBNVUxIV3xQUENWTEUsIFBQQ05PTkUsCXtSVCwgUkEsIFJCfX0sCi0geyJtYWNsaHdzby4iLAlY TyAoNCwgNDkyLDEsMSksWE9fTUFTSywgICAgIE1VTEhXfFBQQ1ZMRSwgUFBDTk9ORSwJe1JULCBS QSwgUkJ9fSwKLUBAIC0zOTY1LDYgKzQwNTUsOCBAQAotIAotIHsiY3JhbmRjIiwJWEwoMTksMTI5 KSwJWExfTUFTSywgICAgIENPTSwJUFBDTk9ORSwJe0JULCBCQSwgQkJ9fSwKLSAKLSt7InJmZWJi IiwJWEwoMTksMTQ2KSwJWExTX01BU0ssICAgIFBPV0VSOCwJUFBDTk9ORSwJe1NYTH19LAotKwot IHsiaXN5bmMiLAlYTCgxOSwxNTApLAkweGZmZmZmZmZmLCAgUFBDQ09NLAlQUENOT05FLAl7MH19 LAotIHsiaWNzIiwJCVhMKDE5LDE1MCksCTB4ZmZmZmZmZmYsICBQV1JDT00sCVBQQ05PTkUsCXsw fX0sCi0gCi1AQCAtNDE0OCw2ICs0MjQwLDEzIEBACi0geyJiY2N0cmwiLCAgWExMSygxOSw1Mjgs MSksCQlYTEJIX01BU0ssICAgICBQUENDT00sCSBQUENOT05FLAl7Qk8sIEJJLCBCSH19LAotIHsi YmNjbCIsICAgIFhMTEsoMTksNTI4LDEpLAkJWExCQl9NQVNLLCAgICAgUFdSQ09NLAkgUFBDTk9O RSwJe0JPLCBCSX19LAotIAotK3siYmN0YXItIiwgIFhMWUxLKDE5LDU2MCwwLDApLAkJWExZQkJf TUFTSywgICAgUE9XRVI4LAkgUFBDTk9ORSwJe0JPRSwgQkl9fSwKLSt7ImJjdGFybC0iLCBYTFlM SygxOSw1NjAsMCwxKSwJCVhMWUJCX01BU0ssICAgIFBPV0VSOCwJIFBQQ05PTkUsCXtCT0UsIEJJ fX0sCi0reyJiY3RhcisiLCAgWExZTEsoMTksNTYwLDEsMCksCQlYTFlCQl9NQVNLLCAgICBQT1dF UjgsCSBQUENOT05FLAl7Qk9FLCBCSX19LAotK3siYmN0YXJsKyIsIFhMWUxLKDE5LDU2MCwxLDEp LAkJWExZQkJfTUFTSywgICAgUE9XRVI4LAkgUFBDTk9ORSwJe0JPRSwgQkl9fSwKLSt7ImJjdGFy IiwgICBYTExLKDE5LDU2MCwwKSwJCVhMQkhfTUFTSywgICAgIFBPV0VSOCwJIFBQQ05PTkUsCXtC TywgQkksIEJIfX0sCi0reyJiY3RhcmwiLCAgWExMSygxOSw1NjAsMSksCQlYTEJIX01BU0ssICAg ICBQT1dFUjgsCSBQUENOT05FLAl7Qk8sIEJJLCBCSH19LAotKwotIHsicmx3aW1pIiwJTSgyMCww KSwJTV9NQVNLLCAgICAgIFBQQ0NPTSwJUFBDTk9ORSwJe1JBLCBSUywgU0gsIE1CRSwgTUV9fSwK LSB7InJsaW1pIiwJTSgyMCwwKSwJTV9NQVNLLCAgICAgIFBXUkNPTSwJUFBDTk9ORSwJe1JBLCBS UywgU0gsIE1CRSwgTUV9fSwKLSAKLUBAIC00Mjc2LDYgKzQzNzUsOCBAQAotIHsibXVsaHd1IiwJ WE8oMzEsMTEsMCwwKSwJWE9fTUFTSywgICAgIFBQQ3xQUENWTEUsIFBQQ05PTkUsCXtSVCwgUkEs IFJCfX0sCi0geyJtdWxod3UuIiwJWE8oMzEsMTEsMCwxKSwJWE9fTUFTSywgICAgIFBQQ3xQUENW TEUsIFBQQ05PTkUsCXtSVCwgUkEsIFJCfX0sCi0gCi0reyJseHNpd3p4IiwJWCgzMSwxMiksCVhY MV9NQVNLLCAgICBQUENWU1gyLAlQUENOT05FLAl7WFQ2LCBSQTAsIFJCfX0sCi0rCi0geyJpc2Vs bHQiLAlYKDMxLDE1KSwJWF9NQVNLLCAgICAgIFBQQ0lTRUwsCVBQQ05PTkUsCXtSVCwgUkEwLCBS Qn19LAotIAotIHsidGxiaWx4bHBpZCIsCVhUTygzMSwxOCwwKSwJWFRPX01BU0ssIEU1MDBNQ3xQ UENBMiwJUFBDTk9ORSwJezB9fSwKLUBAIC00MzE2LDYgKzQ0MTcsOSBAQAotIHsibWFza2cuIiwJ WFJDKDMxLDI5LDEpLAlYX01BU0ssICAgICAgTTYwMSwJUFBDQTIsCQl7UkEsIFJTLCBSQn19LAot IAotIHsibGRlcHgiLAlYKDMxLDI5KSwJWF9NQVNLLCAgICAgIEU1MDBNQ3xQUENBMnxQUENWTEUs IFBQQ05PTkUsIHtSVCwgUkEwLCBSQn19LAotKwotK3sid2FpdGFzZWMiLAlYKDMxLDMwKSwJWFJU UkFSQl9NQVNLLFBPV0VSOCwJUFBDTk9ORSwJezB9fSwKLSsKLSB7Imx3ZXB4IiwJWCgzMSwzMSks CVhfTUFTSywJICAgICBFNTAwTUN8UFBDQTJ8UFBDVkxFLCBQUENOT05FLCB7UlQsIFJBMCwgUkJ9 fSwKLSAKLSB7ImNtcGx3IiwJWE9QTCgzMSwzMiwwKSwJWENNUExfTUFTSywgIFBQQ0NPTXxQUENW TEUsIFBQQ05PTkUsCXtPQkYsIFJBLCBSQn19LAotQEAgLTQzMzUsNiArNDQzOSw4IEBACi0gCi0g eyJhZGRnNnMiLAlYTygzMSw3NCwwLDApLAlYT19NQVNLLCAgICAgUE9XRVI2LAlQUENOT05FLAl7 UlQsIFJBLCBSQn19LAotIAotK3sibHhzaXdheCIsCVgoMzEsNzYpLAlYWDFfTUFTSywgICAgUFBD VlNYMiwJUFBDTk9ORSwJe1hUNiwgUkEwLCBSQn19LAotKwotIHsiaXNlbGVxIiwJWCgzMSw3OSks CVhfTUFTSywgICAgICBQUENJU0VMLAlQUENOT05FLAl7UlQsIFJBMCwgUkJ9fSwKLSAKLSB7Imlz ZWwiLAlYSVNFTCgzMSwxNSksIFhJU0VMX01BU0ssIFBQQ0lTRUx8VElUQU58UFBDVkxFLCBQUENO T05FLCB7UlQsIFJBMCwgUkIsIENSQn19LAotQEAgLTQzNDQsNiArNDQ1MCw5IEBACi0geyJzdWJm LiIsCVhPKDMxLDQwLDAsMSksCVhPX01BU0ssICAgICBQUEN8UFBDVkxFLCBQUENOT05FLAl7UlQs IFJBLCBSQn19LAotIHsic3ViLiIsCVhPKDMxLDQwLDAsMSksCVhPX01BU0ssICAgICBQUEN8UFBD VkxFLCBQUENOT05FLAl7UlQsIFJCLCBSQX19LAotIAotK3sibWZ2c3JkIiwJWCgzMSw1MSksCVhY MVJCX01BU0ssICAgUFBDVlNYMiwJUFBDTk9ORSwJe1JBLCBYUzZ9fSwKLSt7Im1mZnByZCIsCVgo MzEsNTEpLAlYWDFSQl9NQVNLfDEsIFBQQ1ZTWDIsCVBQQ05PTkUsCXtSQSwgRlJTfX0sCi0reyJt ZnZyZCIsCVgoMzEsNTEpfDEsCVhYMVJCX01BU0t8MSwgUFBDVlNYMiwJUFBDTk9ORSwJe1JBLCBW U319LAotIHsiZXJhdGlseCIsCVgoMzEsNTEpLAlYX01BU0ssCSAgICAgUFBDQTIsCVBQQ05PTkUs CXtFUkFUX1QsIFJBLCBSQn19LAotIAotIHsibGJhcngiLAlYKDMxLDUyKSwJWEVIX01BU0ssICAg IFBPV0VSN3xQUENWTEUsIFBQQ05PTkUsCXtSVCwgUkEwLCBSQiwgRUh9fSwKLUBAIC00NDIxLDYg KzQ1MzAsMTAgQEAKLSAKLSB7Im10c3JkaW4iLAlYKDMxLDExNCksCVhSQV9NQVNLLCAgICBQUEM2 NCwJUFBDTk9ORSwJe1JTLCBSQn19LAotIAotK3sibWZmcHJ3eiIsCVgoMzEsMTE1KSwJWFgxUkJf TUFTS3wxLCBQUENWU1gyLAlQUENOT05FLAl7UkEsIEZSU319LAotK3sibWZ2cnd6IiwJWCgzMSwx MTUpfDEsCVhYMVJCX01BU0t8MSwgUFBDVlNYMiwJUFBDTk9ORSwJe1JBLCBWU319LAotK3sibWZ2 c3J3eiIsCVgoMzEsMTE1KSwJWFgxUkJfTUFTSywgICBQUENWU1gyLAlQUENOT05FLAl7UkEsIFhT Nn19LAotKwotIHsibGhhcngiLAlYKDMxLDExNiksCVhFSF9NQVNLLCAgICBQT1dFUjd8UFBDVkxF LCBQUENOT05FLAl7UlQsIFJBMCwgUkIsIEVIfX0sCi0gCi0geyJjbGYiLAkJWCgzMSwxMTgpLAlY VE9fTUFTSywgICAgUE9XRVIsCVBQQ05PTkUsCXtSQSwgUkJ9fSwKLUBAIC00NDUzLDYgKzQ1NjYs OSBAQAotIHsiYWRkZS4iLAlYTygzMSwxMzgsMCwxKSwJWE9fTUFTSywgICAgIFBQQ0NPTXxQUENW TEUsIFBQQ05PTkUsCXtSVCwgUkEsIFJCfX0sCi0geyJhZS4iLAkJWE8oMzEsMTM4LDAsMSksCVhP X01BU0ssICAgICBQV1JDT00sCVBQQ05PTkUsCXtSVCwgUkEsIFJCfX0sCi0gCi0reyJzdHhzaXd4 IiwJWCgzMSwxNDApLAlYWDFfTUFTSywgICAgUFBDVlNYMiwJUFBDTk9ORSwJe1hTNiwgUkEwLCBS Qn19LAotKwotK3sibXNnc25kcCIsCVhSVFJBKDMxLDE0MiwwLDApLCBYUlRSQV9NQVNLLCBQT1dF UjgsCVBQQ05PTkUsCXtSQn19LAotIHsiZGNidHN0bHNlIiwJWCgzMSwxNDIpLAlYX01BU0ssICAg ICAgUFBDQ0hMSywJRTUwME1DLAkJe0NULCBSQTAsIFJCfX0sCi0gCi0geyJtdGNyIiwJWEZYTSgz MSwxNDQsMHhmZiwwKSwgWFJBUkJfTUFTSywgQ09NLAlQUENOT05FLAl7UlN9fSwKLUBAIC00NDYx LDYgKzQ1NzcsOCBAQAotIAotIHsibXRtc3IiLAlYKDMxLDE0NiksCVhSTEFSQl9NQVNLLCBDT018 UFBDVkxFLCBQUENOT05FLAl7UlMsIEFfTH19LAotIAotK3sibXRzbGUiLAlYKDMxLDE0NyksICAg IFhSVExSQVJCX01BU0ssIFBPV0VSOCwJUFBDTk9ORSwJe0x9fSwKLSsKLSB7ImVyYXRzeCIsCVhS QygzMSwxNDcsMCksCVhfTUFTSywJICAgICBQUENBMiwJUFBDTk9ORSwJe1JULCBSQTAsIFJCfX0s Ci0geyJlcmF0c3guIiwJWFJDKDMxLDE0NywxKSwJWF9NQVNLLAkgICAgIFBQQ0EyLAlQUENOT05F LAl7UlQsIFJBMCwgUkJ9fSwKLSAKLUBAIC00NDkwLDE0ICs0NjA4LDE5IEBACi0geyJzdHZlaHgi LAlYKDMxLDE2NyksCVhfTUFTSywgICAgICBQUENWRUMsCVBQQ05PTkUsCXtWUywgUkEwLCBSQn19 LAotIHsic3RoZmNteCIsCUFQVSgzMSwxNjcsMCksIAlBUFVfTUFTSywgICAgUFBDNDA1LAlQUENO T05FLAl7RkNSVCwgUkEsIFJCfX0sCi0gCi0reyJtc2djbHJwIiwJWFJUUkEoMzEsMTc0LDAsMCks IFhSVFJBX01BU0ssIFBPV0VSOCwJUFBDTk9ORSwJe1JCfX0sCi0geyJkY2J0bHNlIiwJWCgzMSwx NzQpLAlYX01BU0ssICAgICAgUFBDQ0hMSywJRTUwME1DLAkJe0NULCBSQTAsIFJCfX0sCi0gCi0g eyJtdG1zcmQiLAlYKDMxLDE3OCksCVhSTEFSQl9NQVNLLCBQUEM2NCwJUFBDTk9ORSwJe1JTLCBB X0x9fSwKLSAKLSt7Im10dnNyZCIsCVgoMzEsMTc5KSwJWFgxUkJfTUFTSywgICBQUENWU1gyLAlQ UENOT05FLAl7WFQ2LCBSQX19LAotK3sibXRmcHJkIiwJWCgzMSwxNzkpLAlYWDFSQl9NQVNLfDEs IFBQQ1ZTWDIsCVBQQ05PTkUsCXtGUlQsIFJBfX0sCi0reyJtdHZyZCIsCVgoMzEsMTc5KXwxLAlY WDFSQl9NQVNLfDEsIFBQQ1ZTWDIsCVBQQ05PTkUsCXtWRCwgUkF9fSwKLSB7ImVyYXRyZSIsCVgo MzEsMTc5KSwJWF9NQVNLLAkgICAgIFBQQ0EyLAlQUENOT05FLAl7UlQsIFJBLCBXU319LAotIAot IHsic3RkdXgiLAlYKDMxLDE4MSksCVhfTUFTSywgICAgICBQUEM2NHxQUENWTEUsIFBQQ05PTkUs CXtSUywgUkFTLCBSQn19LAotIAotK3sic3RxY3guIiwJWFJDKDMxLDE4MiwxKSwJWF9NQVNLLCAg ICAgIFBPV0VSOCwJUFBDTk9ORSwJe1JTUSwgUkEwLCBSQn19LAotIHsid2Noa2FsbCIsCVgoMzEs MTgyKSwJWF9NQVNLLCAgICAgIFBQQ0EyLAlQUENOT05FLAl7T0JGfX0sCi0gCi0geyJzdHd1eCIs CVgoMzEsMTgzKSwJWF9NQVNLLCAgICAgIFBQQ0NPTXxQUENWTEUsIFBQQ05PTkUsCXtSUywgUkFT LCBSQn19LAotQEAgLTQ1MjcsNiArNDY1MCw5IEBACi0gCi0geyJtdHNyIiwJWCgzMSwyMTApLCBY UkJfTUFTS3woMTw8MjApLCBDT00sCU5PTjMyLCAgCXtTUiwgUlN9fSwKLSAKLSt7Im10ZnByd2Ei LAlYKDMxLDIxMSksCVhYMVJCX01BU0t8MSwgUFBDVlNYMiwJUFBDTk9ORSwJe0ZSVCwgUkF9fSwK LSt7Im10dnJ3YSIsCVgoMzEsMjExKXwxLAlYWDFSQl9NQVNLfDEsIFBQQ1ZTWDIsCVBQQ05PTkUs CXtWRCwgUkF9fSwKLSt7Im10dnNyd2EiLAlYKDMxLDIxMSksCVhYMVJCX01BU0ssICAgUFBDVlNY MiwJUFBDTk9ORSwJe1hUNiwgUkF9fSwKLSB7ImVyYXR3ZSIsCVgoMzEsMjExKSwJWF9NQVNLLAkg ICAgIFBQQ0EyLAlQUENOT05FLAl7UlMsIFJBLCBXU319LAotIAotIHsibGRhd3guIiwJWFJDKDMx LDIxMiwxKSwJWF9NQVNLLAkgICAgIFBQQ0EyLAlQUENOT05FLAl7UlQsIFJBMCwgUkJ9fSwKLUBA IC00NTcxLDYgKzQ2OTcsMTAgQEAKLSB7Im10c3JpbiIsCVgoMzEsMjQyKSwJWFJBX01BU0ssICAg IFBQQywJTk9OMzIsICAJe1JTLCBSQn19LAotIHsibXRzcmkiLAlYKDMxLDI0MiksCVhSQV9NQVNL LCAgICBQT1dFUiwJTk9OMzIsCQl7UlMsIFJCfX0sCi0gCi0reyJtdGZwcnd6IiwJWCgzMSwyNDMp LAlYWDFSQl9NQVNLfDEsIFBQQ1ZTWDIsCVBQQ05PTkUsCXtGUlQsIFJBfX0sCi0reyJtdHZyd3oi LAlYKDMxLDI0Myl8MSwJWFgxUkJfTUFTS3wxLCBQUENWU1gyLAlQUENOT05FLAl7VkQsIFJBfX0s Ci0reyJtdHZzcnd6IiwJWCgzMSwyNDMpLAlYWDFSQl9NQVNLLCAgIFBQQ1ZTWDIsCVBQQ05PTkUs CXtYVDYsIFJBfX0sCi0rCi0geyJkY2J0c3R0IiwJWFJUKDMxLDI0NiwweDEwKSwgWFJUX01BU0ss ICBQT1dFUjcsCVBQQ05PTkUsCXtSQTAsIFJCfX0sCi0geyJkY2J0c3QiLAlYKDMxLDI0NiksCVhf TUFTSywgICAgICBQT1dFUjQsCVBQQ05PTkUsCXtSQTAsIFJCLCBDVH19LAotIHsiZGNidHN0IiwJ WCgzMSwyNDYpLAlYX01BU0ssICAgICAgUFBDfFBQQ1ZMRSwgUE9XRVI0LAl7Q1QsIFJBMCwgUkJ9 fSwKLUBAIC00NjA4LDYgKzQ3MzgsOCBAQAotIAotIHsibWZhcGlkaSIsCVgoMzEsMjc1KSwJWF9N QVNLLCAgICAgIEJPT0tFLAlUSVRBTiwgIAl7UlQsIFJBfX0sCi0gCi0reyJscWFyeCIsCVgoMzEs Mjc2KSwJWEVIX01BU0ssICAgIFBPV0VSOCwJUFBDTk9ORSwJe1JUUSwgUkFYLCBSQlgsIEVIfX0s Ci0rCi0geyJsc2NieCIsCVhSQygzMSwyNzcsMCksCVhfTUFTSywgICAgICBNNjAxLAlQUENOT05F LAl7UlQsIFJBLCBSQn19LAotIHsibHNjYnguIiwJWFJDKDMxLDI3NywxKSwJWF9NQVNLLCAgICAg IE02MDEsCVBQQ05PTkUsCXtSVCwgUkEsIFJCfX0sCi0gCi1AQCAtNDYyOSw2ICs0NzYxLDggQEAK LSB7Imx2ZXhoeCIsCVgoMzEsMjkzKSwJWF9NQVNLLCAgICAgIFBQQ1ZFQzIsCVBQQ05PTkUsCXtW RCwgUkEwLCBSQn19LAotIHsibHZlcHgiLAlYKDMxLDI5NSksCVhfTUFTSywgICAgICBQUENWRUMy fFBQQ1ZMRSwgUFBDTk9ORSwJe1ZELCBSQTAsIFJCfX0sCi0gCi0reyJtZmJocmJlIiwJWCgzMSwz MDIpLAlYX01BU0ssICAgICAgUE9XRVI4LAlQUENOT05FLAl7UlQsIEJIUkJFfX0sCi0rCi0geyJ0 bGJpZSIsCVgoMzEsMzA2KSwJWFJUTFJBX01BU0ssIFBQQywJVElUQU4sICAJe1JCLCBMfX0sCi0g eyJ0bGJpIiwJWCgzMSwzMDYpLAlYUlRfTUFTSywgICAgUE9XRVIsCVBQQ05PTkUsCXtSQTAsIFJC fX0sCi0gCi1AQCAtNDkzNyw2ICs1MDcxLDggQEAKLSAKLSB7InNsYm10ZSIsCVgoMzEsNDAyKSwJ WFJBX01BU0ssICAgIFBQQzY0LAlQUENOT05FLAl7UlMsIFJCfX0sCi0gCi0reyJwYnQuIiwJWFJD KDMxLDQwNCwxKSwJWF9NQVNLLCAgICAgIFBPV0VSOCwJUFBDTk9ORSwJe1JTLCBSQTAsIFJCfX0s Ci0rCi0geyJpY3N3eCIsCVhSQygzMSw0MDYsMCksCVhfTUFTSywgICBQT1dFUjd8UFBDQTIsCVBQ Q05PTkUsCXtSUywgUkEsIFJCfX0sCi0geyJpY3N3eC4iLAlYUkMoMzEsNDA2LDEpLAlYX01BU0ss ICAgUE9XRVI3fFBQQ0EyLAlQUENOT05FLAl7UlMsIFJBLCBSQn19LAotIAotQEAgLTQ5NTgsNiAr NTA5NCw4IEBACi0geyJkaXZ3ZSIsCVhPKDMxLDQyNywwLDApLAlYT19NQVNLLCAgUE9XRVI3fFBQ Q0EyLAlQUENOT05FLAl7UlQsIFJBLCBSQn19LAotIHsiZGl2d2UuIiwJWE8oMzEsNDI3LDAsMSks CVhPX01BU0ssICBQT1dFUjd8UFBDQTIsCVBQQ05PTkUsCXtSVCwgUkEsIFJCfX0sCi0gCi0reyJj bHJiaHJiIiwJWCgzMSw0MzApLAkweGZmZmZmZmZmLCAgUE9XRVI4LAlQUENOT05FLAl7MH19LAot KwotIHsic2xiaWUiLAlYKDMxLDQzNCksCVhSVFJBX01BU0ssICBQUEM2NCwJUFBDTk9ORSwJe1JC fX0sCi0gCi0geyJlY293eCIsCVgoMzEsNDM4KSwJWF9NQVNLLCAgICAgIFBQQywJVElUQU4sICAJ e1JULCBSQTAsIFJCfX0sCi1AQCAtNTI0Niw2ICs1Mzg0LDggQEAKLSB7ImFkZGNvLiIsCVhPKDMx LDEwLDEsMSksCVhPX01BU0ssICAgICBQUENDT018UFBDVkxFLCBQUENOT05FLAl7UlQsIFJBLCBS Qn19LAotIHsiYW8uIiwJCVhPKDMxLDEwLDEsMSksCVhPX01BU0ssICAgICBQV1JDT00sCVBQQ05P TkUsCXtSVCwgUkEsIFJCfX0sCi0gCi0reyJseHNzcHgiLAlYKDMxLDUyNCksCVhYMV9NQVNLLCAg ICBQUENWU1gyLAlQUENOT05FLAl7WFQ2LCBSQTAsIFJCfX0sCi0rCi0geyJjbGNzIiwJWCgzMSw1 MzEpLAlYUkJfTUFTSywgICAgTTYwMSwJUFBDTk9ORSwJe1JULCBSQX19LAotIAotIHsibGRicngi LAlYKDMxLDUzMiksCVhfTUFTSywgQ0VMTHxQT1dFUjd8UFBDQTIsIFBQQ05PTkUsCXtSVCwgUkEw LCBSQn19LAotQEAgLTUzNDAsNiArNTQ4MCw4IEBACi0geyJzdHZseCIsCVgoMzEsNjQ3KSwJWF9N QVNLLCAgICAgIENFTEwsCVBQQ05PTkUsCXtWUywgUkEwLCBSQn19LAotIHsic3RiZmNtdXgiLAlB UFUoMzEsNjQ3LDApLCAJQVBVX01BU0ssICAgIFBQQzQwNSwJUFBDTk9ORSwJe0ZDUlQsIFJBLCBS Qn19LAotIAotK3sic3R4c3NweCIsCVgoMzEsNjUyKSwJWFgxX01BU0ssICAgIFBQQ1ZTWDIsCVBQ Q05PTkUsCXtYUzYsIFJBMCwgUkJ9fSwKLSsKLSB7InRiZWdpbi4iLAlYUkMoMzEsNjU0LDEpLCBY UlRMUkFSQl9NQVNLLFBQQ0hUTSwJUFBDTk9ORSwJe0hUTV9SfX0sCi0gCi0geyJzdWJmZW8iLAlY TygzMSwxMzYsMSwwKSwJWE9fTUFTSywgUFBDQ09NfFBQQ1ZMRSwgUFBDTk9ORSwJe1JULCBSQSwg UkJ9fSwKLUBAIC01NTI1LDYgKzU2NjcsNyBAQAotIHsiZGl2by4iLAlYTygzMSwzMzEsMSwxKSwJ WE9fTUFTSywgICAgIE02MDEsCVBQQ05PTkUsCXtSVCwgUkEsIFJCfX0sCi0gCi0geyJseHZkMngi LAlYKDMxLDg0NCksCVhYMV9NQVNLLCAgICBQUENWU1gsCVBQQ05PTkUsCXtYVDYsIFJBMCwgUkJ9 fSwKLSt7Imx4dngiLAlYKDMxLDg0NCksCVhYMV9NQVNLLCAgICBQUENWU1gsCVBQQ05PTkUsCXtY VDYsIFJBMCwgUkJ9fSwKLSAKLSB7InRhYm9ydHdjaS4iLAlYUkMoMzEsODQ2LDEpLAlYX01BU0ss ICAgICAgUFBDSFRNLAlQUENOT05FLAl7VE8sIFJBLCBIVE1fU0l9fSwKLSAKLUBAIC01NjM2LDYg KzU3NzksNyBAQAotIHsiZGl2d3VvLiIsCVhPKDMxLDQ1OSwxLDEpLAlYT19NQVNLLCAgICAgUFBD fFBQQ1ZMRSwgUFBDTk9ORSwJe1JULCBSQSwgUkJ9fSwKLSAKLSB7InN0eHZkMngiLAlYKDMxLDk3 MiksCVhYMV9NQVNLLCAgICBQUENWU1gsCVBQQ05PTkUsCXtYUzYsIFJBMCwgUkJ9fSwKLSt7InN0 eHZ4IiwJWCgzMSw5NzIpLAlYWDFfTUFTSywgICAgUFBDVlNYLAlQUENOT05FLAl7WFM2LCBSQTAs IFJCfX0sCi0gCi0geyJ0bGJsZCIsCVgoMzEsOTc4KSwJWFJUUkFfTUFTSywgIFBQQywgUFBDNDAz fEJPT0tFfFBQQ0EyfFBQQzQ3Niwge1JCfX0sCi0geyJ0bGJ3ZWhpIiwJWFRMQigzMSw5NzgsMCks CVhUTEJfTUFTSywgICBQUEM0MDMsCVBQQ05PTkUsCXtSVCwgUkF9fSwKLUBAIC01ODY4LDE0ICs2 MDEyLDI1IEBACi0geyJmY2ZpZHVzIiwJWFJDKDU5LDk3NCwwKSwJWFJBX01BU0ssIFBPV0VSN3xQ UENBMiwJUFBDTk9ORSwJe0ZSVCwgRlJCfX0sCi0geyJmY2ZpZHVzLiIsCVhSQyg1OSw5NzQsMSks CVhSQV9NQVNLLCBQT1dFUjd8UFBDQTIsCVBQQ05PTkUsCXtGUlQsIEZSQn19LAotIAotK3sieHNh ZGRzcCIsCVhYMyg2MCwwKSwJWFgzX01BU0ssICAgIFBQQ1ZTWDIsCVBQQ05PTkUsCXtYVDYsIFhB NiwgWEI2fX0sCi0reyJ4c21hZGRhc3AiLAlYWDMoNjAsMSksCVhYM19NQVNLLCAgICBQUENWU1gy LAlQUENOT05FLAl7WFQ2LCBYQTYsIFhCNn19LAotIHsieHhzbGR3aSIsCVhYMyg2MCwyKSwJWFgz U0hXX01BU0ssIFBQQ1ZTWCwJUFBDTk9ORSwJe1hUNiwgWEE2LCBYQjYsIFNIV319LAotIHsieHhz ZWwiLAlYWDQoNjAsMyksCVhYNF9NQVNLLCAgICBQUENWU1gsCVBQQ05PTkUsCXtYVDYsIFhBNiwg WEI2LCBYQzZ9fSwKLSt7Inhzc3Vic3AiLAlYWDMoNjAsOCksCVhYM19NQVNLLCAgICBQUENWU1gy LAlQUENOT05FLAl7WFQ2LCBYQTYsIFhCNn19LAotK3sieHNtYWRkbXNwIiwJWFgzKDYwLDkpLAlY WDNfTUFTSywgICAgUFBDVlNYMiwJUFBDTk9ORSwJe1hUNiwgWEE2LCBYQjZ9fSwKLSB7Inh4c3Bs dGQiLAlYWDMoNjAsMTApLAlYWDNETV9NQVNLLCAgUFBDVlNYLAlQUENOT05FLAl7WFQ2LCBYQTYs IFhCNlMsIERNRVh9fSwKLSB7Inh4bXJnaGQiLAlYWDMoNjAsMTApLAlYWDNfTUFTSywgICAgUFBD VlNYLAlQUENOT05FLAl7WFQ2LCBYQTYsIFhCNn19LAotIHsieHhzd2FwZCIsCVhYMyg2MCwxMCl8 KDI8PDgpLCBYWDNfTUFTSywgUFBDVlNYLAlQUENOT05FLAl7WFQ2LCBYQTYsIFhCNlN9fSwKLSB7 Inh4bXJnbGQiLAlYWDMoNjAsMTApfCgzPDw4KSwgWFgzX01BU0ssIFBQQ1ZTWCwJUFBDTk9ORSwJ e1hUNiwgWEE2LCBYQjZ9fSwKLSB7Inh4cGVybWRpIiwJWFgzKDYwLDEwKSwJWFgzRE1fTUFTSywg IFBQQ1ZTWCwJUFBDTk9ORSwJe1hUNiwgWEE2LCBYQjYsIERNfX0sCi0reyJ4c3JzcXJ0ZXNwIiwJ WFgyKDYwLDEwKSwJWFgyX01BU0ssICAgIFBQQ1ZTWDIsCVBQQ05PTkUsCXtYVDYsIFhCNn19LAot K3sieHNzcXJ0c3AiLAlYWDIoNjAsMTEpLAlYWDJfTUFTSywgICAgUFBDVlNYMiwJUFBDTk9ORSwJ e1hUNiwgWEI2fX0sCi0reyJ4c211bHNwIiwJWFgzKDYwLDE2KSwJWFgzX01BU0ssICAgIFBQQ1ZT WDIsCVBQQ05PTkUsCXtYVDYsIFhBNiwgWEI2fX0sCi0reyJ4c21zdWJhc3AiLAlYWDMoNjAsMTcp LAlYWDNfTUFTSywgICAgUFBDVlNYMiwJUFBDTk9ORSwJe1hUNiwgWEE2LCBYQjZ9fSwKLSB7Inh4 bXJnaHciLAlYWDMoNjAsMTgpLAlYWDNfTUFTSywgICAgUFBDVlNYLAlQUENOT05FLAl7WFQ2LCBY QTYsIFhCNn19LAotK3sieHNkaXZzcCIsCVhYMyg2MCwyNCksCVhYM19NQVNLLCAgICBQUENWU1gy LAlQUENOT05FLAl7WFQ2LCBYQTYsIFhCNn19LAotK3sieHNtc3VibXNwIiwJWFgzKDYwLDI1KSwJ WFgzX01BU0ssICAgIFBQQ1ZTWDIsCVBQQ05PTkUsCXtYVDYsIFhBNiwgWEI2fX0sCi0reyJ4c3Jl c3AiLAlYWDIoNjAsMjYpLAlYWDJfTUFTSywgICAgUFBDVlNYMiwJUFBDTk9ORSwJe1hUNiwgWEI2 fX0sCi0geyJ4c2FkZGRwIiwJWFgzKDYwLDMyKSwJWFgzX01BU0ssICAgIFBQQ1ZTWCwJUFBDTk9O RSwJe1hUNiwgWEE2LCBYQjZ9fSwKLSB7InhzbWFkZGFkcCIsCVhYMyg2MCwzMyksCVhYM19NQVNL LCAgICBQUENWU1gsCVBQQ05PTkUsCXtYVDYsIFhBNiwgWEI2fX0sCi0geyJ4c2NtcHVkcCIsCVhY Myg2MCwzNSksCVhYM0JGX01BU0ssICBQUENWU1gsCVBQQ05PTkUsCXtCRiwgWEE2LCBYQjZ9fSwK LUBAIC01OTI5LDE0ICs2MDg0LDE4IEBACi0geyJ4dm1zdWJtZHAiLAlYWDMoNjAsMTIxKSwJWFgz X01BU0ssICAgIFBQQ1ZTWCwJUFBDTk9ORSwJe1hUNiwgWEE2LCBYQjZ9fSwKLSB7InhzcmRwaW0i LAlYWDIoNjAsMTIxKSwJWFgyX01BU0ssICAgIFBQQ1ZTWCwJUFBDTk9ORSwJe1hUNiwgWEI2fX0s Ci0geyJ4dnRkaXZkcCIsCVhYMyg2MCwxMjUpLAlYWDNCRl9NQVNLLCAgUFBDVlNYLAlQUENOT05F LAl7QkYsIFhBNiwgWEI2fX0sCi0reyJ4c25tYWRkYXNwIiwJWFgzKDYwLDEyOSksCVhYM19NQVNL LCAgICBQUENWU1gyLAlQUENOT05FLAl7WFQ2LCBYQTYsIFhCNn19LAotIHsieHhsYW5kIiwJWFgz KDYwLDEzMCksCVhYM19NQVNLLCAgICBQUENWU1gsCVBQQ05PTkUsCXtYVDYsIFhBNiwgWEI2fX0s Ci0geyJ4dmN2c3B1eHdzIiwJWFgyKDYwLDEzNiksCVhYMl9NQVNLLCAgICBQUENWU1gsCVBQQ05P TkUsCXtYVDYsIFhCNn19LAotK3sieHNubWFkZG1zcCIsCVhYMyg2MCwxMzcpLAlYWDNfTUFTSywg ICAgUFBDVlNYMiwJUFBDTk9ORSwJe1hUNiwgWEE2LCBYQjZ9fSwKLSB7Inh2cnNwaSIsCVhYMig2 MCwxMzcpLAlYWDJfTUFTSywgICAgUFBDVlNYLAlQUENOT05FLAl7WFQ2LCBYQjZ9fSwKLSB7Inh4 bGFuZGMiLAlYWDMoNjAsMTM4KSwJWFgzX01BU0ssICAgIFBQQ1ZTWCwJUFBDTk9ORSwJe1hUNiwg WEE2LCBYQjZ9fSwKLSB7Inh2cnNxcnRlc3AiLAlYWDIoNjAsMTM4KSwJWFgyX01BU0ssICAgIFBQ Q1ZTWCwJUFBDTk9ORSwJe1hUNiwgWEI2fX0sCi0geyJ4dnNxcnRzcCIsCVhYMig2MCwxMzkpLAlY WDJfTUFTSywgICAgUFBDVlNYLAlQUENOT05FLAl7WFQ2LCBYQjZ9fSwKLSt7Inhzbm1zdWJhc3Ai LAlYWDMoNjAsMTQ1KSwJWFgzX01BU0ssICAgIFBQQ1ZTWDIsCVBQQ05PTkUsCXtYVDYsIFhBNiwg WEI2fX0sCi0geyJ4eGxvciIsCVhYMyg2MCwxNDYpLAlYWDNfTUFTSywgICAgUFBDVlNYLAlQUENO T05FLAl7WFQ2LCBYQTYsIFhCNn19LAotIHsieHZjdnNwc3h3cyIsCVhYMig2MCwxNTIpLAlYWDJf TUFTSywgICAgUFBDVlNYLAlQUENOT05FLAl7WFQ2LCBYQjZ9fSwKLSt7Inhzbm1zdWJtc3AiLAlY WDMoNjAsMTUzKSwJWFgzX01BU0ssICAgIFBQQ1ZTWDIsCVBQQ05PTkUsCXtYVDYsIFhBNiwgWEI2 fX0sCi0geyJ4dnJzcGl6IiwJWFgyKDYwLDE1MyksCVhYMl9NQVNLLCAgICBQUENWU1gsCVBQQ05P TkUsCXtYVDYsIFhCNn19LAotIHsieHhseG9yIiwJWFgzKDYwLDE1NCksCVhYM19NQVNLLCAgICBQ UENWU1gsCVBQQ05PTkUsCXtYVDYsIFhBNiwgWEI2fX0sCi0geyJ4dnJlc3AiLAlYWDIoNjAsMTU0 KSwJWFgyX01BU0ssICAgIFBQQ1ZTWCwJUFBDTk9ORSwJe1hUNiwgWEI2fX0sCi1AQCAtNTk0OSwx MiArNjEwOCwxNSBAQAotIHsieHNubWFkZG1kcCIsCVhYMyg2MCwxNjkpLAlYWDNfTUFTSywgICAg UFBDVlNYLAlQUENOT05FLAl7WFQ2LCBYQTYsIFhCNn19LAotIHsieHZyc3BpcCIsCVhYMig2MCwx NjkpLAlYWDJfTUFTSywgICAgUFBDVlNYLAlQUENOT05FLAl7WFQ2LCBYQjZ9fSwKLSB7Inh2dHNx cnRzcCIsCVhYMig2MCwxNzApLAlYWDJCRl9NQVNLLCAgUFBDVlNYLAlQUENOT05FLAl7QkYsIFhC Nn19LAotK3sieHhsb3JjIiwJWFgzKDYwLDE3MCksCVhYM19NQVNLLCAgICBQUENWU1gyLAlQUENO T05FLAl7WFQ2LCBYQTYsIFhCNn19LAotIHsieHZyc3BpYyIsCVhYMig2MCwxNzEpLAlYWDJfTUFT SywgICAgUFBDVlNYLAlQUENOT05FLAl7WFQ2LCBYQjZ9fSwKLSB7InhzY3BzZ25kcCIsCVhYMyg2 MCwxNzYpLAlYWDNfTUFTSywgICAgUFBDVlNYLAlQUENOT05FLAl7WFQ2LCBYQTYsIFhCNn19LAot IHsieHNubXN1YmFkcCIsCVhYMyg2MCwxNzcpLAlYWDNfTUFTSywgICAgUFBDVlNYLAlQUENOT05F LAl7WFQ2LCBYQTYsIFhCNn19LAotK3sieHhsbmFuZCIsCVhYMyg2MCwxNzgpLAlYWDNfTUFTSywg ICAgUFBDVlNYMiwJUFBDTk9ORSwJe1hUNiwgWEE2LCBYQjZ9fSwKLSB7Inh2Y3ZzeHdzcCIsCVhY Mig2MCwxODQpLAlYWDJfTUFTSywgICAgUFBDVlNYLAlQUENOT05FLAl7WFQ2LCBYQjZ9fSwKLSB7 Inhzbm1zdWJtZHAiLAlYWDMoNjAsMTg1KSwJWFgzX01BU0ssICAgIFBQQ1ZTWCwJUFBDTk9ORSwJ e1hUNiwgWEE2LCBYQjZ9fSwKLSB7Inh2cnNwaW0iLAlYWDIoNjAsMTg1KSwJWFgyX01BU0ssICAg IFBQQ1ZTWCwJUFBDTk9ORSwJe1hUNiwgWEI2fX0sCi0reyJ4eGxlcXYiLAlYWDMoNjAsMTg2KSwJ WFgzX01BU0ssICAgIFBQQ1ZTWDIsCVBQQ05PTkUsCXtYVDYsIFhBNiwgWEI2fX0sCi0geyJ4dm1h eHNwIiwJWFgzKDYwLDE5MiksCVhYM19NQVNLLCAgICBQUENWU1gsCVBQQ05PTkUsCXtYVDYsIFhB NiwgWEI2fX0sCi0geyJ4dm5tYWRkYXNwIiwJWFgzKDYwLDE5MyksCVhYM19NQVNLLCAgICBQUENW U1gsCVBQQ05PTkUsCXtYVDYsIFhBNiwgWEI2fX0sCi0geyJ4dm1pbnNwIiwJWFgzKDYwLDIwMCks CVhYM19NQVNLLCAgICBQUENWU1gsCVBQQ05PTkUsCXtYVDYsIFhBNiwgWEI2fX0sCi1AQCAtNTk4 NSw4ICs2MTQ3LDEzIEBACi0geyJ4dm5tc3VibWRwIiwJWFgzKDYwLDI0OSksCVhYM19NQVNLLCAg ICBQUENWU1gsCVBQQ05PTkUsCXtYVDYsIFhBNiwgWEI2fX0sCi0geyJ4dnJkcGltIiwJWFgyKDYw LDI0OSksCVhYMl9NQVNLLCAgICBQUENWU1gsCVBQQ05PTkUsCXtYVDYsIFhCNn19LAotIHsieHNj dmRwc3AiLAlYWDIoNjAsMjY1KSwJWFgyX01BU0ssICAgIFBQQ1ZTWCwJUFBDTk9ORSwJe1hUNiwg WEI2fX0sCi0reyJ4c2N2ZHBzcG4iLAlYWDIoNjAsMjY3KSwJWFgyX01BU0ssICAgIFBQQ1ZTWDIs CVBQQ05PTkUsCXtYVDYsIFhCNn19LAotK3sieHNyc3AiLAlYWDIoNjAsMjgxKSwJWFgyX01BU0ss ICAgIFBQQ1ZTWDIsCVBQQ05PTkUsCXtYVDYsIFhCNn19LAotK3sieHNjdnV4ZHNwIiwJWFgyKDYw LDI5NiksCVhYMl9NQVNLLCAgICBQUENWU1gyLAlQUENOT05FLAl7WFQ2LCBYQjZ9fSwKLSt7Inhz Y3ZzeGRzcCIsCVhYMig2MCwzMTIpLAlYWDJfTUFTSywgICAgUFBDVlNYMiwJUFBDTk9ORSwJe1hU NiwgWEI2fX0sCi0geyJ4c2N2ZHB1eGRzIiwJWFgyKDYwLDMyOCksCVhYMl9NQVNLLCAgICBQUENW U1gsCVBQQ05PTkUsCXtYVDYsIFhCNn19LAotIHsieHNjdnNwZHAiLAlYWDIoNjAsMzI5KSwJWFgy X01BU0ssICAgIFBQQ1ZTWCwJUFBDTk9ORSwJe1hUNiwgWEI2fX0sCi0reyJ4c2N2c3BkcG4iLAlY WDIoNjAsMzMxKSwJWFgyX01BU0ssICAgIFBQQ1ZTWDIsCVBQQ05PTkUsCXtYVDYsIFhCNn19LAot IHsieHNjdmRwc3hkcyIsCVhYMig2MCwzNDQpLAlYWDJfTUFTSywgICAgUFBDVlNYLAlQUENOT05F LAl7WFQ2LCBYQjZ9fSwKLSB7InhzYWJzZHAiLAlYWDIoNjAsMzQ1KSwJWFgyX01BU0ssICAgIFBQ Q1ZTWCwJUFBDTk9ORSwJe1hUNiwgWEI2fX0sCi0geyJ4c2N2dXhkZHAiLAlYWDIoNjAsMzYwKSwJ WFgyX01BU0ssICAgIFBQQ1ZTWCwJUFBDTk9ORSwJe1hUNiwgWEI2fX0sCi1AQCAtNjIyMiw2ICs2 Mzg5LDggQEAKLSB7ImRlbmJjZHEiLAlYUkMoNjMsODM0LDApLAlYX01BU0ssICAgICAgUE9XRVI2 LAlQUENOT05FLAl7UywgRlJUcCwgRlJCcH19LAotIHsiZGVuYmNkcS4iLAlYUkMoNjMsODM0LDEp LAlYX01BU0ssICAgICAgUE9XRVI2LAlQUENOT05FLAl7UywgRlJUcCwgRlJCcH19LAotIAotK3si Zm1yZ293IiwJWCg2Myw4MzgpLAlYX01BU0ssICAgICAgUFBDVlNYMiwJUFBDTk9ORSwJe0ZSVCwg RlJBLCBGUkJ9fSwKLSsKLSB7ImZjZmlkIiwJWFJDKDYzLDg0NiwwKSwJWFJBX01BU0ssICAgIFBQ QzY0LAlQUENOT05FLAl7RlJULCBGUkJ9fSwKLSB7ImZjZmlkIiwJWFJDKDYzLDg0NiwwKSwJWFJB X01BU0ssICAgIFBQQzQ3NiwJUFBDTk9ORSwJe0ZSVCwgRlJCfX0sCi0geyJmY2ZpZC4iLAlYUkMo NjMsODQ2LDEpLAlYUkFfTUFTSywgICAgUFBDNjQsCVBQQ05PTkUsCXtGUlQsIEZSQn19LAotQEAg LTYyMzYsNiArNjQwNSw4IEBACi0geyJmY3RpZHV6IiwJWFJDKDYzLDk0MywwKSwJWFJBX01BU0ss IFBPV0VSN3xQUENBMiwJUFBDTk9ORSwJe0ZSVCwgRlJCfX0sCi0geyJmY3RpZHV6LiIsCVhSQyg2 Myw5NDMsMSksCVhSQV9NQVNLLCBQT1dFUjd8UFBDQTIsCVBQQ05PTkUsCXtGUlQsIEZSQn19LAot IAotK3siZm1yZ2V3IiwJWCg2Myw5NjYpLAlYX01BU0ssICAgICAgUFBDVlNYMiwJUFBDTk9ORSwJ e0ZSVCwgRlJBLCBGUkJ9fSwKLSsKLSB7ImZjZmlkdSIsCVhSQyg2Myw5NzQsMCksCVhSQV9NQVNL LCBQT1dFUjd8UFBDQTIsCVBQQ05PTkUsCXtGUlQsIEZSQn19LAotIHsiZmNmaWR1LiIsCVhSQyg2 Myw5NzQsMSksCVhSQV9NQVNLLCBQT1dFUjd8UFBDQTIsCVBQQ05PTkUsCXtGUlQsIEZSQn19LAot IH07CgpkaWZmIC0tZ2l0IGEvZ2RiLXBvd2VyOC0yb2YyLnBhdGNoIGIvZ2RiLXBvd2VyOC0yb2Yy LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZjE2ZjlmLi4wMDAwMDAwCi0t LSBhL2dkYi1wb3dlcjgtMm9mMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAK LVtQQVRDSF0gRW5hYmxlIGh3IHdhdGNocG9pbnQgd2l0aCBsb25nZXIgcmFuZ2VzIHVzaW5nIERB V1Igb24gUG93ZXIKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEzLTA3 L21zZzAwMDg1Lmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTMtMDcv bXNnMDAwOTcuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMy8wNy8yMiAxMTo0Mjoz MAkxLjE1ODEyCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMy8wNy8yMiAxMzoxNzo1MQkxLjE1 ODEzCi0jIyAtMSwzICsxLDkgQEAKLSsyMDEzLTA3LTIyICBFZGp1bmlvciBCYXJib3NhIE1hY2hh ZG8gIDxlbWFjaGFkb0BsaW51eC52bmV0LmlibS5jb20+Ci0rCi0rCSogcHBjLWxpbnV4LW5hdC5j IChQUENfREVCVUdfRkVBVFVSRV9EQVRBX0JQX0RBV1IpOiBOZXcgZGVmaW5lLgotKwkocHBjX2xp bnV4X3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludCk6IEFkZCBjaGVja2luZyB0byB1c2UgdGhl IG5ldwotKwlEQVdSIGludGVyZmFjZSBmb3IgbG9uZ2VyIHJhbmdlcyBoYXJkd2FyZSB3YXRjaHBv aW50ICh1cCB0byA1MTIgYnl0ZXMpLgotKwotIDIwMTMtMDctMjIgIFBoaWwgTXVsZG9vbiAgPHBt dWxkb29uQHJlZGhhdC5jb20+Ci0gCi0gCSogdG9wLmMgKHByaW50X2dkYl92ZXJzaW9uKTogQWRk IGhlbHAsIGFwcm9wb3MgZGVzY3JpcHRpb24gYW5kCi0tLS0gZ2RiLTcuNi9nZGIvcHBjLWxpbnV4 LW5hdC5jLm9yaWcJMjAxMy0wNy0yNCAxNzozOTozMC40MzQ1NDkyNzkgKzAyMDAKLSsrKyBnZGIt Ny42L2dkYi9wcGMtbGludXgtbmF0LmMJMjAxMy0wNy0yNCAxNzo0MTozMS4zMzc3MDY1MDIgKzAy MDAKLUBAIC0xNzgsNyArMTc4LDExIEBAIHN0cnVjdCBwcGNfaHdfYnJlYWtwb2ludAotICAgICAg ICAgKDE8PCgobikrUFBDX0JSRUFLUE9JTlRfQ09ORElUSU9OX0JFX1NISUZUKSkKLSAjZW5kaWYg LyogUFBDX1BUUkFDRV9HRVRIV0RCR0lORk8gKi8KLSAKLS0KLSsvKiBGZWF0dXJlIGRlZmluZWQg b24gTGludXgga2VybmVsIHYzLjk6IERBV1IgaW50ZXJmYWNlLCB0aGF0IGVuYWJsZXMgd2lkZXIK LSsgICB3YXRjaHBvaW50ICh1cCB0byA1MTIgYnl0ZXMpLiAgKi8KLSsjaWZuZGVmIFBQQ19ERUJV R19GRUFUVVJFX0RBVEFfQlBfREFXUgotKyNkZWZpbmUgUFBDX0RFQlVHX0ZFQVRVUkVfREFUQV9C UF9EQVdSCTB4MTAKLSsjZW5kaWYgLyogUFBDX0RFQlVHX0ZFQVRVUkVfREFUQV9CUF9EQVdSICov Ci0gCi0gLyogU2ltaWxhcmx5IGZvciB0aGUgZ2VuZXJhbC1wdXJwb3NlIChncDAgLS0gZ3AzMSkK LSAgICBhbmQgZmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJzIChmcDAgLS0gZnAzMSkuICAqLwotQEAg LTE1MDMsNiArMTUwNyw3IEBAIHBwY19saW51eF9yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQg KEMKLSAgICAgIHRvIGRldGVybWluZSB0aGUgaGFyZGNvZGVkIHdhdGNoYWJsZSByZWdpb24gZm9y IHdhdGNocG9pbnRzLiAgKi8KLSAgIGlmIChoYXZlX3B0cmFjZV9ib29rZV9pbnRlcmZhY2UgKCkp Ci0gICAgIHsKLSsgICAgICBpbnQgcmVnaW9uX3NpemU7Ci0gICAgICAgLyogRW1iZWRkZWQgREFD LWJhc2VkIHByb2Nlc3NvcnMsIGxpa2UgdGhlIFBvd2VyUEMgNDQwIGhhdmUgcmFuZ2VkCi0gCSB3 YXRjaHBvaW50cyBhbmQgY2FuIHdhdGNoIGFueSBhY2Nlc3Mgd2l0aGluIGFuIGFyYml0cmFyeSBt ZW1vcnkKLSAJIHJlZ2lvbi4gVGhpcyBpcyB1c2VmdWwgdG8gd2F0Y2ggYXJyYXlzIGFuZCBzdHJ1 Y3RzLCBmb3IgaW5zdGFuY2UuICBJdAotQEAgLTE1MTEsMTEgKzE1MTYsMTcgQEAgcHBjX2xpbnV4 X3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludCAoQwotIAkgICYmIGJvb2tlX2RlYnVnX2luZm8u ZmVhdHVyZXMgJiBQUENfREVCVUdfRkVBVFVSRV9EQVRBX0JQX1JBTkdFCi0gCSAgJiYgcHBjX2xp bnV4X2dldF9od2NhcCAoKSAmIFBQQ19GRUFUVVJFX0JPT0tFKQotIAlyZXR1cm4gMjsKLSsgICAg ICAvKiBDaGVjayBpZiB0aGUgcHJvY2Vzc29yIHByb3ZpZGVzIERBV1IgaW50ZXJmYWNlLiAgKi8K LSsgICAgICBpZiAoYm9va2VfZGVidWdfaW5mby5mZWF0dXJlcyAmIFBQQ19ERUJVR19GRUFUVVJF X0RBVEFfQlBfREFXUikKLSsJLyogREFXUiBpbnRlcmZhY2UgYWxsb3dzIHRvIHdhdGNoIHVwIHRv IDUxMiBieXRlIHdpZGUgcmFuZ2VzIHdoaWNoCi0rCSAgIGNhbid0IGNyb3NzIGEgNTEyIGJ5dGUg Ym91bmRhcnkuICAqLwotKwlyZWdpb25fc2l6ZSA9IDUxMjsKLSsgICAgICBlbHNlCi0rCXJlZ2lv bl9zaXplID0gYm9va2VfZGVidWdfaW5mby5kYXRhX2JwX2FsaWdubWVudDsKLSAgICAgICAvKiBT ZXJ2ZXIgcHJvY2Vzc29ycyBwcm92aWRlIG9uZSBoYXJkd2FyZSB3YXRjaHBvaW50IGFuZCBhZGRy K2xlbiBzaG91bGQKLSAgICAgICAgICBmYWxsIGluIHRoZSB3YXRjaGFibGUgcmVnaW9uIHByb3Zp ZGVkIGJ5IHRoZSBwdHJhY2UgaW50ZXJmYWNlLiAgKi8KLS0gICAgICBpZiAoYm9va2VfZGVidWdf aW5mby5kYXRhX2JwX2FsaWdubWVudAotLQkgICYmIChhZGRyICsgbGVuID4gKGFkZHIgJiB+KGJv b2tlX2RlYnVnX2luZm8uZGF0YV9icF9hbGlnbm1lbnQgLSAxKSkKLS0JICAgICAgKyBib29rZV9k ZWJ1Z19pbmZvLmRhdGFfYnBfYWxpZ25tZW50KSkKLSsgICAgICBpZiAocmVnaW9uX3NpemUKLSsJ ICAmJiAoYWRkciArIGxlbiA+IChhZGRyICYgfihyZWdpb25fc2l6ZSAtIDEpKSArIHJlZ2lvbl9z aXplKSkKLSAJcmV0dXJuIDA7Ci0gICAgIH0KLSAgIC8qIGFkZHIrbGVuIG11c3QgZmFsbCBpbiB0 aGUgOCBieXRlIHdhdGNoYWJsZSByZWdpb24gZm9yIERBQlItYmFzZWQKCmRpZmYgLS1naXQgYS9n ZGItcHN5bXRhYi1leHBhbmQucGF0Y2ggYi9nZGItcHN5bXRhYi1leHBhbmQucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3OTJlNDguLjAwMDAwMDAKLS0tIGEvZ2RiLXBzeW10 YWItZXhwYW5kLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotaHR0cDovL3Nv dXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTMtMDUvbXNnMDAzMDAuaHRtbAotU3ViamVj dDogW1JGQV0gRml4IGZpbGUgbmFtZSBtYXRjaGluZyBpbiBleHBhbmRfc3ltdGFic19tYXRjaGlu Z192aWFfcGFydGlhbAotCi1bYmxlY2gsIGFwb2xvZ2llcyBmb3IgdGhlIHJlc2VuZCwgdHlwbyBp biBhZGRyZXNzXQotCi1IaS4KLUkgbm90aWNlZCB0aGlzIHdoaWxlIHBsYXlpbmcgd2l0aCBteSBu ZXcgIm10IGV4cGFuZC1zeW10YWJzIiBjb21tYW5kCi1hbmQgd2F0Y2hpbmcgIm10IHNldCBwZXIg b24iIG91dHB1dC4KLQotVGhlIHRlc3QgaGVyZSBpcyB3cm9uZy4KLXJlZjogaHR0cDovL3NvdXJj ZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTMtMDIvbXNnMDAwNjMuaHRtbAotCi1UaGUgdGVz dAotICAoYmFzZW5hbWVzX21heV9kaWZmZXIKLSAgIHx8ICgqZmlsZV9tYXRjaGVyKSAobGJhc2Vu YW1lIChwcy0+ZmlsZW5hbWUpLCBkYXRhLCAxKSkKLWZhaWxzIGFuZCB0aGUgY29kZSBmYWxscyB0 aHJvdWdoIGFzc3VtaW5nIHRoZSBmaWxlIG5hbWUgbWF0Y2hlZC4KLQotUmVncmVzc2lvbiB0ZXN0 ZWQgb24gYW1kNjQtbGludXguCi0KLU9rIHRvIGNoZWNrIGluPwotT2sgZm9yIDcuNiBicmFuY2gg dG9vPwotCi0yMDEzLTA1LTA4ICBEb3VnIEV2YW5zICA8ZGplQGdvb2dsZS5jb20+Ci0KLQkqIHBz eW10YWIuYyAoZXhwYW5kX3N5bXRhYnNfbWF0Y2hpbmdfdmlhX3BhcnRpYWwpOiBGaXggZmlsZSBu YW1lCi0JbWF0Y2hpbmcgdGVzdC4KLQotSW5kZXg6IHBzeW10YWIuYwotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotUkNT IGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIvcHN5bXRhYi5jLHYKLXJldHJpZXZpbmcgcmV2aXNpb24g MS43NAotZGlmZiAtdSAtcCAtcjEuNzQgcHN5bXRhYi5jCi0tLS0gLi9nZGIvcHN5bXRhYi5jCTYg TWF5IDIwMTMgMTk6MTU6MTcgLTAwMDAJMS43NAotKysrIC4vZ2RiL3BzeW10YWIuYwk4IE1heSAy MDEzIDE5OjE4OjUxIC0wMDAwCi1AQCAtMTQwMCwxNSArMTQwNSwyMSBAQCBleHBhbmRfc3ltdGFi c19tYXRjaGluZ192aWFfcGFydGlhbAotIAotICAgICAgIGlmIChmaWxlX21hdGNoZXIpCi0gCXsK LSsJICBpbnQgbWF0Y2g7Ci0rCi0gCSAgaWYgKHBzLT5hbm9ueW1vdXMpCi0gCSAgICBjb250aW51 ZTsKLSAKLS0JICAvKiBCZWZvcmUgd2UgaW52b2tlIHJlYWxwYXRoLCB3aGljaCBjYW4gZ2V0IGV4 cGVuc2l2ZSB3aGVuIG1hbnkKLS0JICAgICBmaWxlcyBhcmUgaW52b2x2ZWQsIGRvIGEgcXVpY2sg Y29tcGFyaXNvbiBvZiB0aGUgYmFzZW5hbWVzLiAgKi8KLS0JICBpZiAoISgqZmlsZV9tYXRjaGVy KSAocHMtPmZpbGVuYW1lLCBkYXRhLCAwKQotLQkgICAgICAmJiAoYmFzZW5hbWVzX21heV9kaWZm ZXIKLSsJICBtYXRjaCA9ICgqZmlsZV9tYXRjaGVyKSAocHMtPmZpbGVuYW1lLCBkYXRhLCAwKTsK LSsJICBpZiAoISBtYXRjaCkKLSsJICAgIHsKLSsJICAgICAgLyogQmVmb3JlIHdlIGludm9rZSBy ZWFscGF0aCwgd2hpY2ggY2FuIGdldCBleHBlbnNpdmUgd2hlbiBtYW55Ci0rCQkgZmlsZXMgYXJl IGludm9sdmVkLCBkbyBhIHF1aWNrIGNvbXBhcmlzb24gb2YgdGhlIGJhc2VuYW1lcy4gICovCi0r CSAgICAgIGlmIChiYXNlbmFtZXNfbWF5X2RpZmZlcgotIAkJICB8fCAoKmZpbGVfbWF0Y2hlcikg KGxiYXNlbmFtZSAocHMtPmZpbGVuYW1lKSwgZGF0YSwgMSkpCi0tCSAgICAgICYmICEoKmZpbGVf bWF0Y2hlcikgKHBzeW10YWJfdG9fZnVsbG5hbWUgKHBzKSwgZGF0YSwgMCkpCi0rCQltYXRjaCA9 ICgqZmlsZV9tYXRjaGVyKSAocHN5bXRhYl90b19mdWxsbmFtZSAocHMpLCBkYXRhLCAwKTsKLSsJ ICAgIH0KLSsJICBpZiAoISBtYXRjaCkKLSAJICAgIGNvbnRpbnVlOwotIAl9Ci0gCi0KCmRpZmYg LS1naXQgYS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjBvZjI1LnBhdGNoIGIvZ2RiLXJoYno3OTU0 MjQtYml0cG9zLTIwb2YyNS5wYXRjaAppbmRleCBkZDE1M2I0Li41ZmM2MzY5IDEwMDY0NAotLS0g YS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjBvZjI1LnBhdGNoCisrKyBiL2dkYi1yaGJ6Nzk1NDI0 LWJpdHBvcy0yMG9mMjUucGF0Y2gKQEAgLTQ2MywxMCArNDYzLDEwIEBAIENvbnRlbnQtVHlwZTog dGV4dC94LXBhdGNoCiBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA3Yml0CiBDb250ZW50LURp c3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1iaXRwb3MtbWFpbi5wYXRjaAogCi1JbmRl eDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvYWRhLWxhbmcuYworSW5kZXg6IGdkYi03LjYuNTAu MjAxMzA3MzEtY3ZzL2dkYi9hZGEtbGFuZy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4y MDEzMDIxNS5vcmlnL2dkYi9hZGEtbGFuZy5jCTIwMTMtMDItMTUgMjI6MzE6MzcuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvYWRhLWxhbmcuYwkyMDEzLTAyLTE1 IDIyOjQwOjE4LjUxMzYyMjAzNSArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9y aWcvZ2RiL2FkYS1sYW5nLmMJMjAxMy0wOC0wMiAxNjozODoyNi40MDgyOTIxNjAgKzAyMDAKKysr KyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvYWRhLWxhbmcuYwkyMDEzLTA4LTAyIDE2OjM5 OjQ4LjA1MjQwODI1NiArMDIwMAogQEAgLTgwLDcgKzgwLDcgQEAgc3RhdGljIHN0cnVjdCB0eXBl ICpkZXNjX2JvdW5kc190eXBlIChzdAogIAogIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKmRlc2NfYm91 bmRzIChzdHJ1Y3QgdmFsdWUgKik7CkBAIC02NTMsNyArNjUzLDcgQEAgSW5kZXg6IGdkYi03LjUu NTAuMjAxMzAyMTUvZ2RiL2FkYS1sYW5nLmMKICAKICAgICAgICBzZXRfdmFsdWVfY29tcG9uZW50 X2xvY2F0aW9uICh2LCBvYmopOwogICAgICAgIHNldF92YWx1ZV9iaXRwb3MgKHYsIGJpdF9vZmZz ZXQgKyB2YWx1ZV9iaXRwb3MgKG9iaikpOwotQEAgLTI0MjcsNyArMjQzMCw3IEBAIGFkYV92YWx1 ZV9wcmltaXRpdmVfcGFja2VkX3ZhbCAoc3RydWN0IHYKK0BAIC0yNDI2LDcgKzI0MjksNyBAQCBh ZGFfdmFsdWVfcHJpbWl0aXZlX3BhY2tlZF92YWwgKHN0cnVjdCB2CiAgICAgbm90IG92ZXJsYXAu ICAqLwogIHN0YXRpYyB2b2lkCiAgbW92ZV9iaXRzIChnZGJfYnl0ZSAqdGFyZ2V0LCBpbnQgdGFy Z19vZmZzZXQsIGNvbnN0IGdkYl9ieXRlICpzb3VyY2UsCkBAIC02NjIsMTYgKzY2MiwxNiBAQCBJ bmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvYWRhLWxhbmcuYwogIHsKICAgIHVuc2lnbmVk IGludCBhY2N1bSwgbWFzazsKICAgIGludCBhY2N1bV9iaXRzLCBjaHVua19zaXplOwotQEAgLTI1 MTcsNyArMjUyMCw3IEBAIGFkYV92YWx1ZV9hc3NpZ24gKHN0cnVjdCB2YWx1ZSAqdG92YWwsIHMK K0BAIC0yNTE2LDcgKzI1MTksNyBAQCBhZGFfdmFsdWVfYXNzaWduIChzdHJ1Y3QgdmFsdWUgKnRv dmFsLCBzCiAgICAgIHsKICAgICAgICBpbnQgbGVuID0gKHZhbHVlX2JpdHBvcyAodG92YWwpCiAg CQkgKyBiaXRzICsgSE9TVF9DSEFSX0JJVCAtIDEpIC8gSE9TVF9DSEFSX0JJVDsKIC0gICAgICBp bnQgZnJvbV9zaXplOwogKyAgICAgIExPTkdFU1QgZnJvbV9zaXplOwotICAgICAgIGNoYXIgKmJ1 ZmZlciA9IChjaGFyICopIGFsbG9jYSAobGVuKTsKKyAgICAgICBnZGJfYnl0ZSAqYnVmZmVyID0g YWxsb2NhIChsZW4pOwogICAgICAgIHN0cnVjdCB2YWx1ZSAqdmFsOwogICAgICAgIENPUkVfQURE UiB0b19hZGRyID0gdmFsdWVfYWRkcmVzcyAodG92YWwpOwotQEAgLTI1NjIsNyArMjU2NSw3IEBA IHZhbHVlX2Fzc2lnbl90b19jb21wb25lbnQgKHN0cnVjdCB2YWx1ZQorQEAgLTI1NjEsNyArMjU2 NCw3IEBAIHZhbHVlX2Fzc2lnbl90b19jb21wb25lbnQgKHN0cnVjdCB2YWx1ZQogICAgICAoTE9O R0VTVCkgICh2YWx1ZV9hZGRyZXNzIChjb21wb25lbnQpIC0gdmFsdWVfYWRkcmVzcyAoY29udGFp bmVyKSk7CiAgICBpbnQgYml0X29mZnNldF9pbl9jb250YWluZXIgPSAKICAgICAgdmFsdWVfYml0 cG9zIChjb21wb25lbnQpIC0gdmFsdWVfYml0cG9zIChjb250YWluZXIpOwpAQCAtNjgwLDcgKzY4 MCw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9hZGEtbGFuZy5jCiAgICAKICAg IHZhbCA9IHZhbHVlX2Nhc3QgKHZhbHVlX3R5cGUgKGNvbXBvbmVudCksIHZhbCk7CiAgCi1AQCAt NDA4NCw3ICs0MDg3LDcgQEAgZW5zdXJlX2x2YWwgKHN0cnVjdCB2YWx1ZSAqdmFsKQorQEAgLTQw ODIsNyArNDA4NSw3IEBAIGVuc3VyZV9sdmFsIChzdHJ1Y3QgdmFsdWUgKnZhbCkKICAgIGlmIChW QUxVRV9MVkFMICh2YWwpID09IG5vdF9sdmFsCiAgICAgICAgfHwgVkFMVUVfTFZBTCAodmFsKSA9 PSBsdmFsX2ludGVybmFsdmFyKQogICAgICB7CkBAIC02ODksNyArNjg5LDcgQEAgSW5kZXg6IGdk Yi03LjUuNTAuMjAxMzAyMTUvZ2RiL2FkYS1sYW5nLmMKICAgICAgICBjb25zdCBDT1JFX0FERFIg YWRkciA9CiAgICAgICAgICB2YWx1ZV9hc19sb25nICh2YWx1ZV9hbGxvY2F0ZV9zcGFjZV9pbl9p bmZlcmlvciAobGVuKSk7CiAgCi1AQCAtNDE1OCw3ICs0MTYxLDcgQEAgc3RhdGljIENPUkVfQURE UgorQEAgLTQxNTYsNyArNDE1OSw3IEBAIHN0YXRpYyBDT1JFX0FERFIKICB2YWx1ZV9wb2ludGVy IChzdHJ1Y3QgdmFsdWUgKnZhbHVlLCBzdHJ1Y3QgdHlwZSAqdHlwZSkKICB7CiAgICBzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCA9IGdldF90eXBlX2FyY2ggKHR5cGUpOwpAQCAtNjk4LDcgKzY5OCw3 IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9hZGEtbGFuZy5jCiAgICBnZGJfYnl0 ZSAqYnVmID0gYWxsb2NhIChsZW4pOwogICAgQ09SRV9BRERSIGFkZHI7CiAgCi1AQCAtNjA1Myw3 ICs2MDU2LDcgQEAgdmFsdWVfdGFnX2Zyb21fY29udGVudHNfYW5kX2FkZHJlc3MgKHN0cgorQEAg LTYwODcsNyArNjA5MCw3IEBAIHZhbHVlX3RhZ19mcm9tX2NvbnRlbnRzX2FuZF9hZGRyZXNzIChz dHIKICAJCQkJICAgICBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgQ09SRV9BRERSIGFkZHJlc3MpCiAgewpAQCAtNzA3LDcgKzcw Nyw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9hZGEtbGFuZy5jCiAgICBzdHJ1 Y3QgdHlwZSAqdGFnX3R5cGU7CiAgCiAgICBpZiAoZmluZF9zdHJ1Y3RfZmllbGQgKCJfdGFnIiwg dHlwZSwgMCwgJnRhZ190eXBlLCAmdGFnX2J5dGVfb2Zmc2V0LAotQEAgLTY1MTgsNyArNjUyMSw3 IEBAIGFkYV9pbl92YXJpYW50IChMT05HRVNUIHZhbCwgc3RydWN0IHR5cGUKK0BAIC02NTUyLDcg KzY1NTUsNyBAQCBhZGFfaW5fdmFyaWFudCAoTE9OR0VTVCB2YWwsIHN0cnVjdCB0eXBlCiAgICAg b25seSBpbiB0aGF0IGl0IGNhbiBoYW5kbGUgcGFja2VkIHZhbHVlcyBvZiBhcmJpdHJhcnkgdHlw ZS4gICovCiAgCiAgc3RhdGljIHN0cnVjdCB2YWx1ZSAqCkBAIC03MTYsNyArNzE2LDcgQEAgSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2FkYS1sYW5nLmMKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgdHlwZSAqYXJnX3R5cGUpCiAgewogICAgc3RydWN0IHR5cGUgKnR5 cGU7Ci1AQCAtNjUzMCw3ICs2NTMzLDcgQEAgYWRhX3ZhbHVlX3ByaW1pdGl2ZV9maWVsZCAoc3Ry dWN0IHZhbHVlCitAQCAtNjU2NCw3ICs2NTY3LDcgQEAgYWRhX3ZhbHVlX3ByaW1pdGl2ZV9maWVs ZCAoc3RydWN0IHZhbHVlCiAgCiAgICBpZiAoVFlQRV9GSUVMRF9CSVRTSVpFIChhcmdfdHlwZSwg ZmllbGRubykgIT0gMCkKICAgICAgewpAQCAtNzI1LDcgKzcyNSw3IEBAIEluZGV4OiBnZGItNy41 LjUwLjIwMTMwMjE1L2dkYi9hZGEtbGFuZy5jCiAgICAgICAgaW50IGJpdF9zaXplID0gVFlQRV9G SUVMRF9CSVRTSVpFIChhcmdfdHlwZSwgZmllbGRubyk7CiAgCiAgICAgICAgcmV0dXJuIGFkYV92 YWx1ZV9wcmltaXRpdmVfcGFja2VkX3ZhbCAoYXJnMSwgdmFsdWVfY29udGVudHMgKGFyZzEpLAot QEAgLTY1NTcsOSArNjU2MCw5IEBAIGFkYV92YWx1ZV9wcmltaXRpdmVfZmllbGQgKHN0cnVjdCB2 YWx1ZQorQEAgLTY1OTEsOSArNjU5NCw5IEBAIGFkYV92YWx1ZV9wcmltaXRpdmVfZmllbGQgKHN0 cnVjdCB2YWx1ZQogICAgIFJldHVybnMgMSBpZiBmb3VuZCwgMCBvdGhlcndpc2UuICAqLwogIAog IHN0YXRpYyBpbnQKQEAgLTczNyw3ICs3MzcsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIx NS9nZGIvYWRhLWxhbmcuYwogIAkJICAgaW50ICppbmRleF9wKQogIHsKICAgIGludCBpOwotQEAg LTY1NzcsOCArNjU4MCw4IEBAIGZpbmRfc3RydWN0X2ZpZWxkIChjb25zdCBjaGFyICpuYW1lLCBz dHIKK0BAIC02NjExLDggKzY2MTQsOCBAQCBmaW5kX3N0cnVjdF9maWVsZCAoY29uc3QgY2hhciAq bmFtZSwgc3RyCiAgCiAgICBmb3IgKGkgPSAwOyBpIDwgVFlQRV9ORklFTERTICh0eXBlKTsgaSAr PSAxKQogICAgICB7CkBAIC03NDgsNyArNzQ4LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAy MTUvZ2RiL2FkYS1sYW5nLmMKICAgICAgICBjb25zdCBjaGFyICp0X2ZpZWxkX25hbWUgPSBUWVBF X0ZJRUxEX05BTUUgKHR5cGUsIGkpOwogIAogICAgICAgIGlmICh0X2ZpZWxkX25hbWUgPT0gTlVM TCkKLUBAIC02NjQ4LDcgKzY2NTEsNyBAQCBudW1fdmlzaWJsZV9maWVsZHMgKHN0cnVjdCB0eXBl ICp0eXBlKQorQEAgLTY2ODIsNyArNjY4NSw3IEBAIG51bV92aXNpYmxlX2ZpZWxkcyAoc3RydWN0 IHR5cGUgKnR5cGUpCiAgICAgU2VhcmNoZXMgcmVjdXJzaXZlbHkgdGhyb3VnaCB3cmFwcGVyIGZp ZWxkcyAoZS5nLiwgJ19wYXJlbnQnKS4gICovCiAgCiAgc3RhdGljIHN0cnVjdCB2YWx1ZSAqCkBA IC03NTcsNyArNzU3LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2FkYS1sYW5n LmMKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHR5cGUgKnR5cGUpCiAgewogICAg aW50IGk7Ci1AQCAtNjY4MSw3ICs2Njg0LDcgQEAgYWRhX3NlYXJjaF9zdHJ1Y3RfZmllbGQgKGNo YXIgKm5hbWUsIHN0cgorQEAgLTY3MTUsNyArNjcxOCw3IEBAIGFkYV9zZWFyY2hfc3RydWN0X2Zp ZWxkIChjaGFyICpuYW1lLCBzdHIKICAgICAgICAgICAgaW50IGo7CiAgICAgICAgICAgIHN0cnVj dCB0eXBlICpmaWVsZF90eXBlID0gYWRhX2NoZWNrX3R5cGVkZWYgKFRZUEVfRklFTERfVFlQRSAo dHlwZSwKICAJCQkJCQkJCQlpKSk7CkBAIC03NjYsNyArNzY2LDcgQEAgSW5kZXg6IGdkYi03LjUu NTAuMjAxMzAyMTUvZ2RiL2FkYS1sYW5nLmMKICAKICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8 IFRZUEVfTkZJRUxEUyAoZmllbGRfdHlwZSk7IGogKz0gMSkKICAgICAgICAgICAgICB7Ci1AQCAt NjY5OSw4ICs2NzAyLDggQEAgYWRhX3NlYXJjaF9zdHJ1Y3RfZmllbGQgKGNoYXIgKm5hbWUsIHN0 cgorQEAgLTY3MzMsOCArNjczNiw4IEBAIGFkYV9zZWFyY2hfc3RydWN0X2ZpZWxkIChjaGFyICpu YW1lLCBzdHIKICAgIHJldHVybiBOVUxMOwogIH0KICAKQEAgLTc3Nyw3ICs3NzcsNyBAQCBJbmRl eDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvYWRhLWxhbmcuYwogIAogIAogIC8qIFJldHVybiBm aWVsZCAjSU5ERVggaW4gQVJHLCB3aGVyZSB0aGUgaW5kZXggaXMgdGhhdCByZXR1cm5lZCBieQot QEAgLTY3MDksNyArNjcxMiw3IEBAIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKmFkYV9pbmRleF9zdHJ1 Y3RfZmkKK0BAIC02NzQzLDcgKzY3NDYsNyBAQCBzdGF0aWMgc3RydWN0IHZhbHVlICphZGFfaW5k ZXhfc3RydWN0X2ZpCiAgICogSWYgZm91bmQsIHJldHVybiB2YWx1ZSwgZWxzZSByZXR1cm4gTlVM TC4gICovCiAgCiAgc3RhdGljIHN0cnVjdCB2YWx1ZSAqCkBAIC03ODYsNyArNzg2LDcgQEAgSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2FkYS1sYW5nLmMKICAJCQlzdHJ1Y3QgdHlwZSAq dHlwZSkKICB7CiAgICByZXR1cm4gYWRhX2luZGV4X3N0cnVjdF9maWVsZF8xICgmaW5kZXgsIGFy Zywgb2Zmc2V0LCB0eXBlKTsKLUBAIC02NzIxLDcgKzY3MjQsNyBAQCBhZGFfaW5kZXhfc3RydWN0 X2ZpZWxkIChpbnQgaW5kZXgsIHN0cnVjCitAQCAtNjc1NSw3ICs2NzU4LDcgQEAgYWRhX2luZGV4 X3N0cnVjdF9maWVsZCAoaW50IGluZGV4LCBzdHJ1YwogICAqICpJTkRFWF9QLiAgKi8KICAKICBz dGF0aWMgc3RydWN0IHZhbHVlICoKQEAgLTc5NSw3ICs3OTUsNyBAQCBJbmRleDogZ2RiLTcuNS41 MC4yMDEzMDIxNS9nZGIvYWRhLWxhbmcuYwogIAkJCSAgc3RydWN0IHR5cGUgKnR5cGUpCiAgewog ICAgaW50IGk7Ci1AQCAtNjgxMSw3ICs2ODE0LDggQEAgYWRhX3ZhbHVlX3N0cnVjdF9lbHQgKHN0 cnVjdCB2YWx1ZSAqYXJnLAorQEAgLTY4NDUsNyArNjg0OCw4IEBAIGFkYV92YWx1ZV9zdHJ1Y3Rf ZWx0IChzdHJ1Y3QgdmFsdWUgKmFyZywKICAgICAgdiA9IGFkYV9zZWFyY2hfc3RydWN0X2ZpZWxk IChuYW1lLCBhcmcsIDAsIHQpOwogICAgZWxzZQogICAgICB7CkBAIC04MDUsNyArODA1LDcgQEAg SW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2FkYS1sYW5nLmMKICAgICAgICBzdHJ1Y3Qg dHlwZSAqZmllbGRfdHlwZTsKICAgICAgICBDT1JFX0FERFIgYWRkcmVzczsKICAKLUBAIC03MTI0 LDggKzcxMjgsOCBAQCBhZGFfY29lcmNlX3JlZiAoc3RydWN0IHZhbHVlICp2YWwwKQorQEAgLTcx NTgsOCArNzE2Miw4IEBAIGFkYV9jb2VyY2VfcmVmIChzdHJ1Y3QgdmFsdWUgKnZhbDApCiAgLyog UmV0dXJuIE9GRiByb3VuZGVkIHVwd2FyZCBpZiBuZWNlc3NhcnkgdG8gYSBtdWx0aXBsZSBvZgog ICAgIEFMSUdOTUVOVCAoYSBwb3dlciBvZiAyKS4gICovCiAgCkBAIC04MTYsNyArODE2LDcgQEAg SW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2FkYS1sYW5nLmMKICB7CiAgICByZXR1cm4g KG9mZiArIGFsaWdubWVudCAtIDEpICYgfihhbGlnbm1lbnQgLSAxKTsKICB9Ci1AQCAtNzUwNCwx MCArNzUwOCw5IEBAIGFkYV90ZW1wbGF0ZV90b19maXhlZF9yZWNvcmRfdHlwZV8xIChzdHIKK0BA IC03NTM4LDEwICs3NTQyLDkgQEAgYWRhX3RlbXBsYXRlX3RvX2ZpeGVkX3JlY29yZF90eXBlXzEg KHN0cgogICAgc3RydWN0IHZhbHVlICptYXJrID0gdmFsdWVfbWFyayAoKTsKICAgIHN0cnVjdCB2 YWx1ZSAqZHZhbDsKICAgIHN0cnVjdCB0eXBlICpydHlwZTsKQEAgLTgyOSw3ICs4MjksNyBAQCBJ bmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvYWRhLWxhbmcuYwogICAgaW50IGY7CiAgCiAg ICAvKiBDb21wdXRlIHRoZSBudW1iZXIgb2YgZmllbGRzIGluIHRoaXMgcmVjb3JkIHR5cGUgdGhh dCBhcmUgZ29pbmcKLUBAIC03NTc4LDcgKzc1ODEsNyBAQCBhZGFfdGVtcGxhdGVfdG9fZml4ZWRf cmVjb3JkX3R5cGVfMSAoc3RyCitAQCAtNzYxMiw3ICs3NjE1LDcgQEAgYWRhX3RlbXBsYXRlX3Rv X2ZpeGVkX3JlY29yZF90eXBlXzEgKHN0cgogIAkgICAgIHRoYXQgZm9sbG93IHRoaXMgb25lLiAg Ki8KICAJICBpZiAoYWRhX2lzX2FsaWduZXJfdHlwZSAoZmllbGRfdHlwZSkpCiAgCSAgICB7CkBA IC04MzgsNyArODM4LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2FkYS1sYW5n LmMKICAKICAJICAgICAgZmllbGRfdmFsYWRkciA9IGNvbmRfb2Zmc2V0X2hvc3QgKGZpZWxkX3Zh bGFkZHIsIGZpZWxkX29mZnNldCk7CiAgCSAgICAgIGZpZWxkX2FkZHJlc3MgPSBjb25kX29mZnNl dF90YXJnZXQgKGZpZWxkX2FkZHJlc3MsIGZpZWxkX29mZnNldCk7Ci1AQCAtNzcwNywxMSArNzcx MCwxMSBAQCBhZGFfdGVtcGxhdGVfdG9fZml4ZWRfcmVjb3JkX3R5cGVfMSAoc3RyCitAQCAtNzc0 MSwxMSArNzc0NCwxMSBAQCBhZGFfdGVtcGxhdGVfdG9fZml4ZWRfcmVjb3JkX3R5cGVfMSAoc3Ry CiAgICBpZiAoVFlQRV9MRU5HVEggKHR5cGUpIDw9IDApCiAgICAgIHsKICAgICAgICBpZiAoVFlQ RV9OQU1FIChydHlwZSkpCkBAIC04NTQsNyArODU0LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAx MzAyMTUvZ2RiL2FkYS1sYW5nLmMKICAgICAgfQogICAgZWxzZQogICAgICB7Ci1AQCAtODA0OCw3 ICs4MDUxLDggQEAgdG9fZml4ZWRfYXJyYXlfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUwLAorQEAg LTgwODIsNyArODA4NSw4IEBAIHRvX2ZpeGVkX2FycmF5X3R5cGUgKHN0cnVjdCB0eXBlICp0eXBl MCwKICAJIHR5cGUgd2FzIGEgcmVndWxhciAobm9uLXBhY2tlZCkgYXJyYXkgdHlwZS4gIEFzIGEg cmVzdWx0LCB0aGUKICAJIGJpdHNpemUgb2YgdGhlIGFycmF5IGVsZW1lbnRzIG5lZWRzIHRvIGJl IHNldCBhZ2FpbiwgYW5kIHRoZSBhcnJheQogIAkgbGVuZ3RoIG5lZWRzIHRvIGJlIHJlY29tcHV0 ZWQgYmFzZWQgb24gdGhhdCBiaXRzaXplLiAgKi8KQEAgLTg2NCwxMCArODY0LDEwIEBAIEluZGV4 OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9hZGEtbGFuZy5jCiAgICAgICAgaW50IGVsdF9iaXRz aXplID0gVFlQRV9GSUVMRF9CSVRTSVpFICh0eXBlMCwgMCk7CiAgCiAgICAgICAgVFlQRV9GSUVM RF9CSVRTSVpFIChyZXN1bHQsIDApID0gVFlQRV9GSUVMRF9CSVRTSVpFICh0eXBlMCwgMCk7Ci1J bmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvYWRhLWxhbmcuaAorSW5kZXg6IGdkYi03LjYu NTAuMjAxMzA3MzEtY3ZzL2dkYi9hZGEtbGFuZy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41 MC4yMDEzMDIxNS5vcmlnL2dkYi9hZGEtbGFuZy5oCTIwMTMtMDEtMjQgMTk6MDQ6MzQuMDAwMDAw MDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvYWRhLWxhbmcuaAkyMDEzLTAy LTE1IDIyOjQwOjE4LjUxMzYyMjAzNSArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3Zz Lm9yaWcvZ2RiL2FkYS1sYW5nLmgJMjAxMy0wOC0wMiAxNjozODoyNi40MDkyOTIxNjIgKzAyMDAK KysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvYWRhLWxhbmcuaAkyMDEzLTA4LTAyIDE2 OjM4OjMyLjM0MzMwMDcxMyArMDIwMAogQEAgLTE2OSw3ICsxNjksNyBAQCBleHRlcm4gdm9pZCBh ZGFfcHJpbnRfdHlwZSAoc3RydWN0IHR5cGUKICBleHRlcm4gdm9pZCBhZGFfcHJpbnRfdHlwZWRl ZiAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBzeW1ib2wgKm5ld19zeW1ib2wsCiAgCQkJICAg ICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pOwpAQCAtODg2LDcgKzg4Niw3IEBAIEluZGV4OiBn ZGItNy41LjUwLjIwMTMwMjE1L2dkYi9hZGEtbGFuZy5oCiAgCQkJICBjb25zdCBzdHJ1Y3QgdmFs dWVfcHJpbnRfb3B0aW9ucyAqKTsKICAKICBzdHJ1Y3QgdmFsdWUgKmFkYV9jb252ZXJ0X2FjdHVh bCAoc3RydWN0IHZhbHVlICphY3R1YWwsCi1AQCAtMjU4LDcgKzI1OCw3IEBAIGV4dGVybiBpbnQg YWRhX2lzX2NvbnN0cmFpbmVkX3BhY2tlZF9hcnIKK0BAIC0yNTcsNyArMjU3LDcgQEAgZXh0ZXJu IGludCBhZGFfaXNfY29uc3RyYWluZWRfcGFja2VkX2FycgogIAogIGV4dGVybiBzdHJ1Y3QgdmFs dWUgKmFkYV92YWx1ZV9wcmltaXRpdmVfcGFja2VkX3ZhbCAoc3RydWN0IHZhbHVlICosCiAgCQkJ CQkJICAgICBjb25zdCBnZGJfYnl0ZSAqLApAQCAtODk1LDEwICs4OTUsMTAgQEAgSW5kZXg6IGdk Yi03LjUuNTAuMjAxMzAyMTUvZ2RiL2FkYS1sYW5nLmgKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0eXBlICopOwogIAogIGV4dGVy biBzdHJ1Y3QgdHlwZSAqYWRhX2NvZXJjZV90b19zaW1wbGVfYXJyYXlfdHlwZSAoc3RydWN0IHR5 cGUgKik7Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvYWRhLXR5cGVwcmludC5jCitJ bmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2FkYS10eXBlcHJpbnQuYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvYWRhLXR5cGVwcmludC5jCTIw MTMtMDEtMDEgMDc6MzI6MzcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIx NS9nZGIvYWRhLXR5cGVwcmludC5jCTIwMTMtMDItMTUgMjI6NDA6MTguNTE0NjIyMDM4ICswMTAw CistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvYWRhLXR5cGVwcmludC5jCTIw MTMtMDgtMDIgMTY6Mzg6MjYuNDI0MjkyMTg0ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDcz MS1jdnMvZ2RiL2FkYS10eXBlcHJpbnQuYwkyMDEzLTA4LTAyIDE2OjM4OjMyLjM0MzMwMDcxMyAr MDIwMAogQEAgLTgyOSw4ICs4MjksOCBAQCBhZGFfcHJpbnRfdHlwZSAoc3RydWN0IHR5cGUgKnR5 cGUwLCBjb25zCiAgCSAgICBjb25zdCBjaGFyICpuYW1lID0gYWRhX3R5cGVfbmFtZSAodHlwZSk7 CiAgCkBAIC05MjAsMTAgKzkyMCwxMCBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIv YWRhLXR5cGVwcmludC5jCiAgCWJyZWFrOwogICAgICAgIGNhc2UgVFlQRV9DT0RFX0VOVU06CiAg CWlmIChzaG93IDwgMCkKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9hZGEtdmFscHJp bnQuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9hZGEtdmFscHJpbnQuYwog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvYWRhLXZhbHByaW50 LmMJMjAxMy0wMi0wMSAyMTowODo0NS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIw MTMwMjE1L2dkYi9hZGEtdmFscHJpbnQuYwkyMDEzLTAyLTE1IDIyOjQwOjE4LjUxNDYyMjAzOCAr MDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2FkYS12YWxwcmludC5j CTIwMTMtMDgtMDIgMTY6Mzg6MjYuNDI1MjkyMTg1ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEz MDczMS1jdnMvZ2RiL2FkYS12YWxwcmludC5jCTIwMTMtMDgtMDIgMTY6Mzg6MzIuMzQ0MzAwNzE1 ICswMjAwCiBAQCAtNDEsMTYgKzQxLDE2IEBAIHN0YXRpYyB2b2lkIHByaW50X3JlY29yZCAoc3Ry dWN0IHR5cGUgKiwKICAJCQkgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICopOwog IApAQCAtMTA4NCwxMCArMTA4NCwxMCBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIv YWRhLXZhbHByaW50LmMKICAJICAgICAgaW50IGJpdF9zaXplID0gVFlQRV9GSUVMRF9CSVRTSVpF ICh0eXBlLCBpKTsKICAJICAgICAgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgb3B0czsKICAK LUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9hbm5vdGF0ZS5jCitJbmRleDogZ2RiLTcu Ni41MC4yMDEzMDczMS1jdnMvZ2RiL2Fubm90YXRlLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41 LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL2Fubm90YXRlLmMJMjAxMy0wMS0yMiAyMToyMjozOC4wMDAw MDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9hbm5vdGF0ZS5jCTIwMTMt MDItMTUgMjI6NDA6MTguNTE0NjIyMDM4ICswMTAwCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1j dnMub3JpZy9nZGIvYW5ub3RhdGUuYwkyMDEzLTA4LTAyIDE2OjM4OjI2LjQyNTI5MjE4NSArMDIw MAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9hbm5vdGF0ZS5jCTIwMTMtMDgtMDIg MTY6Mzg6MzIuMzQ0MzAwNzE1ICswMjAwCiBAQCAtNTIzLDIxICs1MjMsMjEgQEAgYW5ub3RhdGVf ZnJhbWVfZW5kICh2b2lkKQogIH0KICAMCkBAIC0xMTE0LDEwICsxMTE0LDEwIEBAIEluZGV4OiBn ZGItNy41LjUwLjIwMTMwMjE1L2dkYi9hbm5vdGF0ZS5jCiAgfQogIAogIHZvaWQKLUluZGV4OiBn ZGItNy41LjUwLjIwMTMwMjE1L2dkYi9hbm5vdGF0ZS5oCitJbmRleDogZ2RiLTcuNi41MC4yMDEz MDczMS1jdnMvZ2RiL2Fubm90YXRlLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMw MjE1Lm9yaWcvZ2RiL2Fubm90YXRlLmgJMjAxMy0wMS0yMiAyMToxOTozOC4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9hbm5vdGF0ZS5oCTIwMTMtMDItMTUgMjI6 NDA6MTguNTE1NjIyMDQxICswMTAwCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9n ZGIvYW5ub3RhdGUuaAkyMDEzLTA4LTAyIDE2OjM4OjI2LjQyNjI5MjE4NiArMDIwMAorKysrIGdk Yi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9hbm5vdGF0ZS5oCTIwMTMtMDgtMDIgMTY6Mzg6MzIu MzQ0MzAwNzE1ICswMjAwCiBAQCAtOTIsOCArOTIsOCBAQCBleHRlcm4gdm9pZCBhbm5vdGF0ZV9m cmFtZV9zb3VyY2VfZW5kICh2CiAgZXh0ZXJuIHZvaWQgYW5ub3RhdGVfZnJhbWVfd2hlcmUgKHZv aWQpOwogIGV4dGVybiB2b2lkIGFubm90YXRlX2ZyYW1lX2VuZCAodm9pZCk7CkBAIC0xMTI5LDEw ICsxMTI5LDEwIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9hbm5vdGF0ZS5oCiAg ZXh0ZXJuIHZvaWQgYW5ub3RhdGVfZWx0X3JlcF9lbmQgKHZvaWQpOwogIGV4dGVybiB2b2lkIGFu bm90YXRlX2VsdCAodm9pZCk7CiAgZXh0ZXJuIHZvaWQgYW5ub3RhdGVfYXJyYXlfc2VjdGlvbl9l bmQgKHZvaWQpOwotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2FybS1saW51eC1uYXQu YworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9hcm0tbGludXgtbmF0LmMKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL2FybS1saW51eC1uYXQu YwkyMDEzLTAxLTAxIDA3OjMyOjM4LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAx MzAyMTUvZ2RiL2FybS1saW51eC1uYXQuYwkyMDEzLTAyLTE1IDIyOjQwOjE4LjUxNTYyMjA0MSAr MDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2FybS1saW51eC1uYXQu YwkyMDEzLTA4LTAyIDE2OjM4OjI2LjQyNjI5MjE4NiArMDIwMAorKysrIGdkYi03LjYuNTAuMjAx MzA3MzEtY3ZzL2dkYi9hcm0tbGludXgtbmF0LmMJMjAxMy0wOC0wMiAxNjozODozMi4zNDUzMDA3 MTYgKzAyMDAKIEBAIC0xMDczLDcgKzEwNzMsNyBAQCBhcm1fbGludXhfcmVtb3ZlX2h3X2JyZWFr cG9pbnQgKHN0cnVjdCBnCiAgLyogQXJlIHdlIGFibGUgdG8gdXNlIGEgaGFyZHdhcmUgd2F0Y2hw b2ludCBmb3IgdGhlIExFTiBieXRlcyBzdGFydGluZyBhdCAKICAgICBBRERSPyAgKi8KQEAgLTEx NDIsMTAgKzExNDIsMTAgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2FybS1saW51 eC1uYXQuYwogIHsKICAgIGNvbnN0IHN0cnVjdCBhcm1fbGludXhfaHdicF9jYXAgKmNhcCA9IGFy bV9saW51eF9nZXRfaHdicF9jYXAgKCk7CiAgICBDT1JFX0FERFIgbWF4X3dwX2xlbmd0aCwgYWxp Z25lZF9hZGRyOwotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2F4LWdkYi5jCitJbmRl eDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2F4LWdkYi5jCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9heC1nZGIuYwkyMDEzLTAxLTMxIDE3OjI3OjUw LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2F4LWdkYi5jCTIw MTMtMDItMTUgMjI6NDA6MTguNTE2NjIyMDQzICswMTAwCistLS0gZ2RiLTcuNi41MC4yMDEzMDcz MS1jdnMub3JpZy9nZGIvYXgtZ2RiLmMJMjAxMy0wOC0wMiAxNjozODoyNi40MjcyOTIxODggKzAy MDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvYXgtZ2RiLmMJMjAxMy0wOC0wMiAx NjozODozMi4zNDYzMDA3MTcgKzAyMDAKIEBAIC04MywxMiArODMsMTIgQEAgc3RhdGljIHZvaWQg Z2VuX3RyYWNlZF9wb3AgKHN0cnVjdCBnZGJhcgogIHN0YXRpYyB2b2lkIGdlbl9zaWduX2V4dGVu ZCAoc3RydWN0IGFnZW50X2V4cHIgKiwgc3RydWN0IHR5cGUgKik7CiAgc3RhdGljIHZvaWQgZ2Vu X2V4dGVuZCAoc3RydWN0IGFnZW50X2V4cHIgKiwgc3RydWN0IHR5cGUgKik7CkBAIC0xMTgxLDcg KzExODEsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvYXgtZ2RiLmMKICAJCQkJ ICAgICBzdHJ1Y3QgdHlwZSAqdHlwZSk7CiAgc3RhdGljIHZvaWQgZ2VuX3N0cnVjdF9yZWYgKHN0 cnVjdCBleHByZXNzaW9uICpleHAsIHN0cnVjdCBhZ2VudF9leHByICpheCwKICAJCQkgICAgc3Ry dWN0IGF4c192YWx1ZSAqdmFsdWUsCi1AQCAtNTY5LDcgKzU3MCw3IEBAIGdlbl9mZXRjaCAoc3Ry dWN0IGFnZW50X2V4cHIgKmF4LCBzdHJ1Y3QKK0BAIC01MzksNyArNTQwLDcgQEAgZ2VuX2ZldGNo IChzdHJ1Y3QgYWdlbnRfZXhwciAqYXgsIHN0cnVjdAogICAgIHJpZ2h0IHNoaWZ0IGl0IGJ5IC1E SVNUQU5DRSBiaXRzIGlmIERJU1RBTkNFIDwgMC4gIFRoaXMgZ2VuZXJhdGVzCiAgICAgdW5zaWdu ZWQgKGxvZ2ljYWwpIHJpZ2h0IHNoaWZ0cy4gICovCiAgc3RhdGljIHZvaWQKQEAgLTExOTAsNyAr MTE5MCw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9heC1nZGIuYwogIHsKICAg IGlmIChkaXN0YW5jZSA+IDApCiAgICAgIHsKLUBAIC02MjMsNyArNjI0LDcgQEAgZ2VuX2ZyYW1l X2xvY2Fsc19hZGRyZXNzIChzdHJ1Y3QgZ2RiYXJjaAorQEAgLTU5Myw3ICs1OTQsNyBAQCBnZW5f ZnJhbWVfbG9jYWxzX2FkZHJlc3MgKHN0cnVjdCBnZGJhcmNoCiAgICAgcHJvZ3JhbW1pbmcgaW4g TUwsIGl0IHdvdWxkIGJlIGNsZWFyZXIgd2h5IHRoZXNlIGFyZSB0aGUgc2FtZQogICAgIHRoaW5n LiAgKi8KICBzdGF0aWMgdm9pZApAQCAtMTE5OSw3ICsxMTk5LDcgQEAgSW5kZXg6IGdkYi03LjUu NTAuMjAxMzAyMTUvZ2RiL2F4LWdkYi5jCiAgewogICAgLyogSXQgd291bGQgc3VmZmljZSB0byBz aW1wbHkgcHVzaCB0aGUgb2Zmc2V0IGFuZCBhZGQgaXQsIGJ1dCB0aGlzCiAgICAgICBtYWtlcyBp dCBlYXNpZXIgdG8gcmVhZCBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgb2Zmc2V0cyBpbiB0aGUKLUBA IC0xMjc5LDcgKzEyODAsNyBAQCBnZW5fYWRkcmVzc19vZiAoc3RydWN0IGFnZW50X2V4cHIgKmF4 LCBzCitAQCAtMTI0OSw3ICsxMjUwLDcgQEAgZ2VuX2FkZHJlc3Nfb2YgKHN0cnVjdCBhZ2VudF9l eHByICpheCwgcwogIHN0YXRpYyB2b2lkCiAgZ2VuX2JpdGZpZWxkX3JlZiAoc3RydWN0IGV4cHJl c3Npb24gKmV4cCwgc3RydWN0IGFnZW50X2V4cHIgKmF4LAogIAkJICBzdHJ1Y3QgYXhzX3ZhbHVl ICp2YWx1ZSwgc3RydWN0IHR5cGUgKnR5cGUsCkBAIC0xMjA4LDcgKzEyMDgsNyBAQCBJbmRleDog Z2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvYXgtZ2RiLmMKICB7CiAgICAvKiBOb3RlIHRoYXQgb3Bz W2ldIGZldGNoZXMgOCA8PCBpIGJpdHMuICAqLwogICAgc3RhdGljIGVudW0gYWdlbnRfb3Agb3Bz W10KLUBAIC0xMzE0LDEzICsxMzE1LDEzIEBAIGdlbl9iaXRmaWVsZF9yZWYgKHN0cnVjdCBleHBy ZXNzaW9uICpleHAKK0BAIC0xMjg0LDEzICsxMjg1LDEzIEBAIGdlbl9iaXRmaWVsZF9yZWYgKHN0 cnVjdCBleHByZXNzaW9uICpleHAKICAKICAgIC8qIFRoZSBmaXJzdCBhbmQgb25lLWFmdGVyLWxh c3QgYml0cyBpbiB0aGUgZmllbGQsIGJ1dCByb3VuZGVkIGRvd24KICAgICAgIGFuZCB1cCB0byBi eXRlIGJvdW5kYXJpZXMuICAqLwpAQCAtMTIyNyw3ICsxMjI3LDcgQEAgSW5kZXg6IGdkYi03LjUu NTAuMjAxMzAyMTUvZ2RiL2F4LWdkYi5jCiAgCiAgICAvKiBUaGUgaW5kZXggaW4gb3BzIG9mIHRo ZSBvcGNvZGUgd2UncmUgY29uc2lkZXJpbmcuICAqLwogICAgaW50IG9wOwotQEAgLTE0MzksNyAr MTQ0MCw3IEBAIGdlbl9iaXRmaWVsZF9yZWYgKHN0cnVjdCBleHByZXNzaW9uICpleHAKK0BAIC0x NDA5LDcgKzE0MTAsNyBAQCBnZW5fYml0ZmllbGRfcmVmIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhw CiAgc3RhdGljIHZvaWQKICBnZW5fcHJpbWl0aXZlX2ZpZWxkIChzdHJ1Y3QgZXhwcmVzc2lvbiAq ZXhwLAogIAkJICAgICBzdHJ1Y3QgYWdlbnRfZXhwciAqYXgsIHN0cnVjdCBheHNfdmFsdWUgKnZh bHVlLApAQCAtMTIzNiw3ICsxMjM2LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2Ri L2F4LWdkYi5jCiAgewogICAgLyogSXMgdGhpcyBhIGJpdGZpZWxkPyAgKi8KICAgIGlmIChUWVBF X0ZJRUxEX1BBQ0tFRCAodHlwZSwgZmllbGRubykpCi1AQCAtMTQ2NCw3ICsxNDY1LDcgQEAgZ2Vu X3ByaW1pdGl2ZV9maWVsZCAoc3RydWN0IGV4cHJlc3Npb24gKgorQEAgLTE0MzQsNyArMTQzNSw3 IEBAIGdlbl9wcmltaXRpdmVfZmllbGQgKHN0cnVjdCBleHByZXNzaW9uICoKICBzdGF0aWMgaW50 CiAgZ2VuX3N0cnVjdF9yZWZfcmVjdXJzaXZlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBzdHJ1 Y3QgYWdlbnRfZXhwciAqYXgsCiAgCQkJICBzdHJ1Y3QgYXhzX3ZhbHVlICp2YWx1ZSwKQEAgLTEy NDUsMTEgKzEyNDUsMTEgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2F4LWdkYi5j CiAgewogICAgaW50IGksIHJzbHQ7CiAgICBpbnQgbmJhc2VzID0gVFlQRV9OX0JBU0VDTEFTU0VT ICh0eXBlKTsKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9heC1nZW5lcmFsLmMKK0lu ZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvYXgtZ2VuZXJhbC5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9heC1nZW5lcmFsLmMJMjAxMy0wMS0z MSAxNzoyNzo1MC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9h eC1nZW5lcmFsLmMJMjAxMy0wMi0xNSAyMjo0MDoxOC41MTY2MjIwNDMgKzAxMDAKLUBAIC0xOTIs NyArMTkyLDcgQEAgYXhfemVyb19leHQgKHN0cnVjdCBhZ2VudF9leHByICp4LCBpbnQgbgorLS0t IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2F4LWdlbmVyYWwuYwkyMDEzLTA4LTAy IDE2OjM4OjI2LjQyODI5MjE4OSArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dk Yi9heC1nZW5lcmFsLmMJMjAxMy0wOC0wMiAxNjozODozMi4zNDYzMDA3MTcgKzAyMDAKK0BAIC0x OTUsNyArMTk1LDcgQEAgYXhfemVyb19leHQgKHN0cnVjdCBhZ2VudF9leHByICp4LCBpbnQgbgog IAogIC8qIEFwcGVuZCBhIHRyYWNlX3F1aWNrIGluc3RydWN0aW9uIHRvIEVYUFIsIHRvIHJlY29y ZCBOIGJ5dGVzLiAgKi8KICB2b2lkCkBAIC0xMjU4LDExICsxMjU4LDExIEBAIEluZGV4OiBnZGIt Ny41LjUwLjIwMTMwMjE1L2dkYi9heC1nZW5lcmFsLmMKICB7CiAgICAvKiBOIG11c3QgZml0IGlu IGEgYnl0ZS4gICovCiAgICBpZiAobiA8IDAgfHwgbiA+IDI1NSkKLUluZGV4OiBnZGItNy41LjUw LjIwMTMwMjE1L2dkYi9heC5oCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2F4 LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL2F4LmgJMjAx My0wMS0wMSAwNzozMjozOS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1 L2dkYi9heC5oCTIwMTMtMDItMTUgMjI6NDA6MTguNTE3NjIyMDQ1ICswMTAwCi1AQCAtMTkwLDcg KzE5MCw3IEBAIGV4dGVybiB2b2lkIGF4X2V4dCAoc3RydWN0IGFnZW50X2V4cHIgKkUKKy0tLSBn ZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9heC5oCTIwMTMtMDgtMDIgMTY6Mzg6MjYu NDI4MjkyMTg5ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2F4LmgJMjAx My0wOC0wMiAxNjozODozMi4zNDYzMDA3MTcgKzAyMDAKK0BAIC0yMDcsNyArMjA3LDcgQEAgZXh0 ZXJuIHZvaWQgYXhfZXh0IChzdHJ1Y3QgYWdlbnRfZXhwciAqRQogIGV4dGVybiB2b2lkIGF4X3pl cm9fZXh0IChzdHJ1Y3QgYWdlbnRfZXhwciAqRVhQUiwgaW50IE4pOwogIAogIC8qIEFwcGVuZCBh IHRyYWNlX3F1aWNrIGluc3RydWN0aW9uIHRvIEVYUFIsIHRvIHJlY29yZCBOIGJ5dGVzLiAgKi8K QEAgLTEyNzEsMTEgKzEyNzEsMTEgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2F4 LmgKICAKICAvKiBBcHBlbmQgYSBnb3RvIG9wIHRvIEVYUFIuICBPUCBpcyB0aGUgYWN0dWFsIG9w IChtdXN0IGJlIGFvcF9nb3RvIG9yCiAgICAgYW9wX2lmX2dvdG8pLiAgV2UgYXNzdW1lIHdlIGRv bid0IGtub3cgdGhlIHRhcmdldCBvZmZzZXQgeWV0LAotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAy MTUvZ2RiL2JyZWFrcG9pbnQuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9i cmVha3BvaW50LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMjE1Lm9yaWcvZ2Ri L2JyZWFrcG9pbnQuYwkyMDEzLTAyLTE1IDIyOjM3OjM1LjAwMDAwMDAwMCArMDEwMAotKysrIGdk Yi03LjUuNTAuMjAxMzAyMTUvZ2RiL2JyZWFrcG9pbnQuYwkyMDEzLTAyLTE1IDIyOjQwOjE4LjUy MTYyMjA1MyArMDEwMAotQEAgLTY2NjAsNyArNjY2MCw3IEBAIGJyZWFrcG9pbnRfYWRkcmVzc19t YXRjaCAoc3RydWN0IGFkZHJlc3MKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dk Yi9icmVha3BvaW50LmMJMjAxMy0wOC0wMiAxNjozODoyNi40MzIyOTIxOTUgKzAyMDAKKysrKyBn ZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvYnJlYWtwb2ludC5jCTIwMTMtMDgtMDIgMTY6Mzg6 MzIuMzUwMzAwNzIzICswMjAwCitAQCAtNjcxMCw3ICs2NzEwLDcgQEAgYnJlYWtwb2ludF9hZGRy ZXNzX21hdGNoIChzdHJ1Y3QgYWRkcmVzcwogIAogIHN0YXRpYyBpbnQKICBicmVha3BvaW50X2Fk ZHJlc3NfbWF0Y2hfcmFuZ2UgKHN0cnVjdCBhZGRyZXNzX3NwYWNlICphc3BhY2UxLCBDT1JFX0FE RFIgYWRkcjEsCkBAIC0xMjg0LDcgKzEyODQsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIx NS9nZGIvYnJlYWtwb2ludC5jCiAgCQkJCUNPUkVfQUREUiBhZGRyMikKICB7CiAgICByZXR1cm4g KChnZGJhcmNoX2hhc19nbG9iYWxfYnJlYWtwb2ludHMgKHRhcmdldF9nZGJhcmNoICgpKQotQEAg LTExMTgyLDcgKzExMTgyLDcgQEAgY2FuX3VzZV9oYXJkd2FyZV93YXRjaHBvaW50IChzdHJ1Y3Qg dmFsdQorQEAgLTExMjQ3LDcgKzExMjQ3LDcgQEAgY2FuX3VzZV9oYXJkd2FyZV93YXRjaHBvaW50 IChzdHJ1Y3QgdmFsdQogIAkJICAgICAgJiYgVFlQRV9DT0RFICh2dHlwZSkgIT0gVFlQRV9DT0RF X0FSUkFZKSkKICAJCXsKICAJCSAgQ09SRV9BRERSIHZhZGRyID0gdmFsdWVfYWRkcmVzcyAodik7 CkBAIC0xMjkzLDExICsxMjkzLDExIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9i cmVha3BvaW50LmMKICAJCSAgaW50IG51bV9yZWdzOwogIAogIAkJICBsZW4gPSAodGFyZ2V0X2V4 YWN0X3dhdGNocG9pbnRzCi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvYnJlYWtwb2lu dC5oCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2JyZWFrcG9pbnQuaAogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvYnJlYWtwb2ludC5oCTIw MTMtMDItMTUgMjI6Mzc6NDcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIx NS9nZGIvYnJlYWtwb2ludC5oCTIwMTMtMDItMTUgMjI6NDA6MTguNTIxNjIyMDUzICswMTAwCi1A QCAtMjUwLDcgKzI1MCw3IEBAIHN0cnVjdCBicF90YXJnZXRfaW5mbworLS0tIGdkYi03LjYuNTAu MjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2JyZWFrcG9pbnQuaAkyMDEzLTA4LTAyIDE2OjM4OjI2LjQz NDI5MjE5OCArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9icmVha3BvaW50 LmgJMjAxMy0wOC0wMiAxNjozODozMi4zNTEzMDA3MjUgKzAyMDAKK0BAIC0yNDIsNyArMjQyLDcg QEAgc3RydWN0IGJwX3RhcmdldF9pbmZvCiAgCiAgICAvKiBJZiB0aGlzIGlzIGEgcmFuZ2VkIGJy ZWFrcG9pbnQsIHRoZW4gdGhpcyBmaWVsZCBjb250YWlucyB0aGUKICAgICAgIGxlbmd0aCBvZiB0 aGUgcmFuZ2UgdGhhdCB3aWxsIGJlIHdhdGNoZWQgZm9yIGV4ZWN1dGlvbi4gICovCkBAIC0xMzA2 LDcgKzEzMDYsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvYnJlYWtwb2ludC5o CiAgCiAgICAvKiBJZiB0aGUgYnJlYWtwb2ludCBsaXZlcyBpbiBtZW1vcnkgYW5kIHJlYWRpbmcg dGhhdCBtZW1vcnkgd291bGQKICAgICAgIGdpdmUgYmFjayB0aGUgYnJlYWtwb2ludCwgaW5zdGVh ZCBvZiB0aGUgb3JpZ2luYWwgY29udGVudHMsIHRoZW4KLUBAIC00MTksNyArNDE5LDcgQEAgc3Ry dWN0IGJwX2xvY2F0aW9uCitAQCAtNDExLDcgKzQxMSw3IEBAIHN0cnVjdCBicF9sb2NhdGlvbgog ICAgLyogRm9yIGhhcmR3YXJlIHdhdGNocG9pbnRzLCB0aGUgc2l6ZSBvZiB0aGUgbWVtb3J5IHJl Z2lvbiBiZWluZwogICAgICAgd2F0Y2hlZC4gIEZvciBoYXJkd2FyZSByYW5nZWQgYnJlYWtwb2lu dHMsIHRoZSBzaXplIG9mIHRoZQogICAgICAgYnJlYWtwb2ludCByYW5nZS4gICovCkBAIC0xMzE1 LDEwICsxMzE1LDEwIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9icmVha3BvaW50 LmgKICAKICAgIC8qIFR5cGUgb2YgaGFyZHdhcmUgd2F0Y2hwb2ludC4gICovCiAgICBlbnVtIHRh cmdldF9od19icF90eXBlIHdhdGNocG9pbnRfdHlwZTsKLUluZGV4OiBnZGItNy41LjUwLjIwMTMw MjE1L2dkYi9jLWxhbmcuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9jLWxh bmcuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvYy1sYW5n LmMJMjAxMy0wMi0xMyAxMTo0MToxMS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIw MTMwMjE1L2dkYi9jLWxhbmcuYwkyMDEzLTAyLTE1IDIyOjQwOjE4LjUyMjYyMjA1NSArMDEwMAor LS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2MtbGFuZy5jCTIwMTMtMDgtMDIg MTY6Mzg6MjYuNDM0MjkyMTk4ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2Ri L2MtbGFuZy5jCTIwMTMtMDgtMDIgMTY6Mzg6MzIuMzUxMzAwNzI1ICswMjAwCiBAQCAtMTg4LDcg KzE4OCw3IEBAIGNfcHJpbnRjaGFyIChpbnQgYywgc3RydWN0IHR5cGUgKnR5cGUsIHMKICAKICB2 b2lkCkBAIC0xMzQ2LDEwICsxMzQ2LDEwIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dk Yi9jLWxhbmcuYwogIAogIAkJaWYgKGdldF9kaXNjcmV0ZV9ib3VuZHMgKFRZUEVfSU5ERVhfVFlQ RSAoZXhwZWN0X3R5cGUpLAogIAkJCQkJICZsb3dfYm91bmQsICZoaWdoX2JvdW5kKSA8IDApCi1J bmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvYy1sYW5nLmgKK0luZGV4OiBnZGItNy42LjUw LjIwMTMwNzMxLWN2cy9nZGIvYy1sYW5nLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIw MTMwMjE1Lm9yaWcvZ2RiL2MtbGFuZy5oCTIwMTMtMDEtMDEgMDc6MzI6NDAuMDAwMDAwMDAwICsw MTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvYy1sYW5nLmgJMjAxMy0wMi0xNSAyMjo0 MDoxOC41MjI2MjIwNTUgKzAxMDAKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dk Yi9jLWxhbmcuaAkyMDEzLTA4LTAyIDE2OjM4OjI2LjQzNDI5MjE5OCArMDIwMAorKysrIGdkYi03 LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9jLWxhbmcuaAkyMDEzLTA4LTAyIDE2OjM4OjMyLjM1MTMw MDcyNSArMDIwMAogQEAgLTczLDcgKzczLDcgQEAgZXh0ZXJuIHZvaWQgY19wcmludF90eXBlZGVm IChzdHJ1Y3QgdHlwZQogIAkJCSAgICAgc3RydWN0IHVpX2ZpbGUgKik7CiAgCkBAIC0xMzg1LDEw ICsxMzg1LDEwIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9jLWxhbmcuaAogIAkJ CQkJc3RydWN0IHVpX2ZpbGUgKiwgaW50LAogIAkJCQkJY29uc3Qgc3RydWN0IHZhbHVlICosCiAg CQkJCQljb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqLAotSW5kZXg6IGdkYi03LjUu NTAuMjAxMzAyMTUvZ2RiL2MtdmFscHJpbnQuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEt Y3ZzL2dkYi9jLXZhbHByaW50LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMjE1 Lm9yaWcvZ2RiL2MtdmFscHJpbnQuYwkyMDEzLTAxLTAxIDA3OjMyOjQwLjAwMDAwMDAwMCArMDEw MAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2MtdmFscHJpbnQuYwkyMDEzLTAyLTE1IDIy OjQwOjE4LjUyMjYyMjA1NSArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcv Z2RiL2MtdmFscHJpbnQuYwkyMDEzLTA4LTAyIDE2OjM4OjI2LjQzNTI5MjE5OSArMDIwMAorKysr IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9jLXZhbHByaW50LmMJMjAxMy0wOC0wMiAxNjoz ODozMi4zNTIzMDA3MjYgKzAyMDAKIEBAIC0xMzIsNyArMTMyLDcgQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCBnZW5lcmljX3ZhbF9wcmludF9kZQogIAogIHZvaWQKQEAgLTE0MzAsMTAgKzE0MzAsMTAg QEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2MtdmFscHJpbnQuYwogICAgc3RydWN0 IHZhbHVlX3ByaW50X29wdGlvbnMgb3B0cyA9ICpvcHRpb25zOwogIAogICAgb3B0cy5kZXJlZl9y ZWYgPSAxOwotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2NwLWFiaS5jCitJbmRleDog Z2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2NwLWFiaS5jCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9jcC1hYmkuYwkyMDEzLTAxLTE3IDIxOjI2OjE0LjAw MDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2NwLWFiaS5jCTIwMTMt MDItMTUgMjI6NDA6MTguNTIzNjIyMDU3ICswMTAwCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1j dnMub3JpZy9nZGIvY3AtYWJpLmMJMjAxMy0wOC0wMiAxNjozODoyNi40MzUyOTIxOTkgKzAyMDAK KysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvY3AtYWJpLmMJMjAxMy0wOC0wMiAxNjoz ODozMi4zNTIzMDA3MjYgKzAyMDAKIEBAIC02OCwxMyArNjgsMTMgQEAgaXNfb3BlcmF0b3JfbmFt ZSAoY29uc3QgY2hhciAqbmFtZSkKICAgIHJldHVybiAoKmN1cnJlbnRfY3BfYWJpLmlzX29wZXJh dG9yX25hbWUpIChuYW1lKTsKICB9CkBAIC0xNDY5LDEwICsxNDY5LDEwIEBAIEluZGV4OiBnZGIt Ny41LjUwLjIwMTMwMjE1L2dkYi9jcC1hYmkuYwogIHsKICAgIHN0cnVjdCB0eXBlICpyZXQgPSBO VUxMOwogICAgdm9sYXRpbGUgc3RydWN0IGdkYl9leGNlcHRpb24gZTsKLUluZGV4OiBnZGItNy41 LjUwLjIwMTMwMjE1L2dkYi9jcC1hYmkuaAorSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3Zz L2dkYi9jcC1hYmkuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9n ZGIvY3AtYWJpLmgJMjAxMy0wMS0wMSAwNzozMjo0MC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGIt Ny41LjUwLjIwMTMwMjE1L2dkYi9jcC1hYmkuaAkyMDEzLTAyLTE1IDIyOjQwOjE4LjUyMzYyMjA1 NyArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2NwLWFiaS5oCTIw MTMtMDgtMDIgMTY6Mzg6MjYuNDM1MjkyMTk5ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDcz MS1jdnMvZ2RiL2NwLWFiaS5oCTIwMTMtMDgtMDIgMTY6Mzg6MzIuMzUyMzAwNzI2ICswMjAwCiBA QCAtMTA4LDcgKzEwOCw3IEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX3ZpcnR1YWxfZm5f ZmkKICAJCQkJCSAgICAgc3RydWN0IGZuX2ZpZWxkICpmLAogIAkJCQkJICAgICBpbnQgaiwKQEAg LTE1MDgsNyArMTUwOCw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9jcC1hYmku aAogIAogIC8qIERlc2NyaWJlIHRoZSB0YXJnZXQgb2YgYSBwb2ludGVyIHRvIG1ldGhvZC4gIENP TlRFTlRTIGlzIHRoZSBieXRlCiAgICAgcGF0dGVybiByZXByZXNlbnRpbmcgdGhlIHBvaW50ZXIg dG8gbWV0aG9kLiAgVFlQRSBpcyB0aGUgcG9pbnRlciB0bwotQEAgLTIwNCwxMiArMjA0LDEzIEBA IHN0cnVjdCBjcF9hYmlfb3BzCitAQCAtMjI3LDEyICsyMjcsMTMgQEAgc3RydWN0IGNwX2FiaV9v cHMKICAgIHN0cnVjdCB2YWx1ZSAqKCp2aXJ0dWFsX2ZuX2ZpZWxkKSAoc3RydWN0IHZhbHVlICoq YXJnMXAsCiAgCQkJCSAgICAgc3RydWN0IGZuX2ZpZWxkICogZiwKICAJCQkJICAgICBpbnQgaiwg c3RydWN0IHR5cGUgKiB0eXBlLApAQCAtMTUyNywxMCArMTUyNywxMCBAQCBJbmRleDogZ2RiLTcu NS41MC4yMDEzMDIxNS9nZGIvY3AtYWJpLmgKICAgIHZvaWQgKCpwcmludF9tZXRob2RfcHRyKSAo Y29uc3QgZ2RiX2J5dGUgKmNvbnRlbnRzLAogIAkJCSAgICBzdHJ1Y3QgdHlwZSAqdHlwZSwKICAJ CQkgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSk7Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIx NS9nZGIvY3AtdmFscHJpbnQuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9j cC12YWxwcmludC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dk Yi9jcC12YWxwcmludC5jCTIwMTMtMDEtMDcgMTc6NDA6MzYuMDAwMDAwMDAwICswMTAwCi0rKysg Z2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvY3AtdmFscHJpbnQuYwkyMDEzLTAyLTE1IDIyOjQwOjE4 LjUyMzYyMjA1NyArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2Nw LXZhbHByaW50LmMJMjAxMy0wOC0wMiAxNjozODoyNi40MzYyOTIyMDEgKzAyMDAKKysrKyBnZGIt Ny42LjUwLjIwMTMwNzMxLWN2cy9nZGIvY3AtdmFscHJpbnQuYwkyMDEzLTA4LTAyIDE2OjM4OjMy LjM1MzMwMDcyNyArMDIwMAogQEAgLTgyLDcgKzgyLDcgQEAgc3RhdGljIHZvaWQgY3BfcHJpbnRf c3RhdGljX2ZpZWxkIChzdHJ1YwogIAkJCQkgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0 aW9ucyAqKTsKICAKQEAgLTE2MDQsMTAgKzE2MDQsMTAgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAx MzAyMTUvZ2RiL2NwLXZhbHByaW50LmMKICAgICAgICBpbnQgc2tpcDsKICAgICAgICBzdHJ1Y3Qg dHlwZSAqYmFzZWNsYXNzID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9CQVNFQ0xBU1MgKHR5cGUsIGkp KTsKICAgICAgICBjb25zdCBjaGFyICpiYXNlbmFtZSA9IFRZUEVfTkFNRSAoYmFzZWNsYXNzKTsK LUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9kLWxhbmcuaAorSW5kZXg6IGdkYi03LjYu NTAuMjAxMzA3MzEtY3ZzL2dkYi9kLWxhbmcuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAu MjAxMzAyMTUub3JpZy9nZGIvZC1sYW5nLmgJMjAxMy0wMS0wMSAwNzozMjo0MS4wMDAwMDAwMDAg KzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9kLWxhbmcuaAkyMDEzLTAyLTE1IDIy OjQwOjE4LjUyMzYyMjA1NyArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcv Z2RiL2QtbGFuZy5oCTIwMTMtMDgtMDIgMTY6Mzg6MjYuNDM2MjkyMjAxICswMjAwCisrKysgZ2Ri LTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2QtbGFuZy5oCTIwMTMtMDgtMDIgMTY6Mzg6MzIuMzUz MzAwNzI3ICswMjAwCiBAQCAtMjUsNyArMjUsNyBAQAogIGV4dGVybiBjaGFyICpkX2RlbWFuZ2xl IChjb25zdCBjaGFyICptYW5nbGVkLCBpbnQgb3B0aW9ucyk7CiAgCkBAIC0xNjE3LDEwICsxNjE3 LDEwIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9kLWxhbmcuaAogIAkJCSBzdHJ1 Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKICAJCQkgY29uc3Qgc3RydWN0IHZhbHVl ICp2YWwsCiAgCQkJIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zKTsK LUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9kLXZhbHByaW50LmMKK0luZGV4OiBnZGIt Ny42LjUwLjIwMTMwNzMxLWN2cy9nZGIvZC12YWxwcmludC5jCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9kLXZhbHByaW50LmMJMjAxMy0wMS0wMSAwNzozMjo0 MS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9kLXZhbHByaW50 LmMJMjAxMy0wMi0xNSAyMjo0MDoxOC41MjQ2MjIwNTkgKzAxMDAKKy0tLSBnZGItNy42LjUwLjIw MTMwNzMxLWN2cy5vcmlnL2dkYi9kLXZhbHByaW50LmMJMjAxMy0wOC0wMiAxNjozODoyNi40MzYy OTIyMDEgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvZC12YWxwcmludC5j CTIwMTMtMDgtMDIgMTY6Mzg6MzIuMzUzMzAwNzI3ICswMjAwCiBAQCAtMjksNyArMjksNyBAQAog IAogIHN0YXRpYyBpbnQKQEAgLTE2NDMsMTEgKzE2NDMsMTEgQEAgSW5kZXg6IGdkYi03LjUuNTAu MjAxMzAyMTUvZ2RiL2QtdmFscHJpbnQuYwogICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdmFs dWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucykKICB7CiAgICBpbnQgcmV0OwotSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAyMTUvZ2RiL2RvdWJsZXN0LmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMx LWN2cy9nZGIvZG91Ymxlc3QuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUu b3JpZy9nZGIvZG91Ymxlc3QuYwkyMDEzLTAxLTAxIDA3OjMyOjQxLjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2RvdWJsZXN0LmMJMjAxMy0wMi0xNSAyMjo0MDox OC41MjQ2MjIwNTkgKzAxMDAKLUBAIC03OTEsNyArNzkxLDcgQEAgZmxvYXRmb3JtYXRfZnJvbV9k b3VibGVzdCAoY29uc3Qgc3RydWN0CistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9n ZGIvZG91Ymxlc3QuYwkyMDEzLTA4LTAyIDE2OjM4OjI2LjQzNjI5MjIwMSArMDIwMAorKysrIGdk Yi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9kb3VibGVzdC5jCTIwMTMtMDgtMDIgMTY6Mzg6MzIu MzU0MzAwNzI5ICswMjAwCitAQCAtNzQ0LDcgKzc0NCw3IEBAIGZsb2F0Zm9ybWF0X2Zyb21fZG91 Ymxlc3QgKGNvbnN0IHN0cnVjdAogICAgIGJ1dCBub3QgcGFzc2VkIG9uIGJ5IEdEQi4gIFRoaXMg c2hvdWxkIGJlIGZpeGVkLiAgKi8KICAKICBzdGF0aWMgY29uc3Qgc3RydWN0IGZsb2F0Zm9ybWF0 ICoKQEAgLTE2NTYsNyArMTY1Niw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9k b3VibGVzdC5jCiAgewogICAgY29uc3Qgc3RydWN0IGZsb2F0Zm9ybWF0ICpmb3JtYXQ7CiAgCi1A QCAtODE5LDggKzgxOSw4IEBAIGZsb2F0Zm9ybWF0X2Zyb21fbGVuZ3RoIChzdHJ1Y3QgZ2RiYXJj aAorQEAgLTc3Miw4ICs3NzIsOCBAQCBmbG9hdGZvcm1hdF9mcm9tX2xlbmd0aCAoc3RydWN0IGdk YmFyY2gKICAgIGVsc2UKICAgICAgZm9ybWF0ID0gTlVMTDsKICAgIGlmIChmb3JtYXQgPT0gTlVM TCkKQEAgLTE2NjcsMTEgKzE2NjcsMTEgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2Ri L2RvdWJsZXN0LmMKICAgIHJldHVybiBmb3JtYXQ7CiAgfQogIAotSW5kZXg6IGdkYi03LjUuNTAu MjAxMzAyMTUvZ2RiL2R3YXJmMmxvYy5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMv Z2RiL2R3YXJmMmxvYy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmln L2dkYi9kd2FyZjJsb2MuYwkyMDEzLTAyLTE1IDIyOjMxOjM3LjAwMDAwMDAwMCArMDEwMAotKysr IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2R3YXJmMmxvYy5jCTIwMTMtMDItMTUgMjI6NDA6MTgu NTI1NjIyMDYxICswMTAwCi1AQCAtMTY3NywxOSArMTY3NywxOSBAQCBpbnNlcnRfYml0cyAodW5z aWduZWQgaW50IGRhdHVtLAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2R3 YXJmMmxvYy5jCTIwMTMtMDgtMDIgMTY6Mzg6MjYuNDM4MjkyMjA0ICswMjAwCisrKysgZ2RiLTcu Ni41MC4yMDEzMDczMS1jdnMvZ2RiL2R3YXJmMmxvYy5jCTIwMTMtMDgtMDIgMTY6NDI6MTEuMjE3 NjA3NzAzICswMjAwCitAQCAtMTcxMywxOSArMTcxMywxOSBAQCBpbnNlcnRfYml0cyAodW5zaWdu ZWQgaW50IGRhdHVtLAogICAgIEJJVFNfQklHX0VORElBTiBpcyB0YWtlbiBkaXJlY3RseSBmcm9t IGdkYmFyY2guICAqLwogIAogIHN0YXRpYyB2b2lkCkBAIC0xNjk3LDcgKzE2OTcsNyBAQCBJbmRl eDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvZHdhcmYybG9jLmMKICAKICAgIGRlc3RfYXZhaWwg PSA4IC0gZGVzdF9vZmZzZXRfYml0cyAlIDg7CiAgCi1AQCAtMTcyNywxMyArMTcyNywxMyBAQCBz dGF0aWMgdm9pZAorQEAgLTE3NjMsMTMgKzE3NjMsMTMgQEAgc3RhdGljIHZvaWQKICByZWFkX3Bp ZWNlZF92YWx1ZSAoc3RydWN0IHZhbHVlICp2KQogIHsKICAgIGludCBpOwpAQCAtMTcxMSw5ICsx NzExLDkgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2R3YXJmMmxvYy5jCiAtICBz aXplX3QgdHlwZV9sZW47CiArICBVTE9OR0VTVCB0eXBlX2xlbjsKICAgIHNpemVfdCBidWZmZXJf c2l6ZSA9IDA7Ci0gICBjaGFyICpidWZmZXIgPSBOVUxMOworICAgZ2RiX2J5dGUgKmJ1ZmZlciA9 IE5VTEw7CiAgICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cDsKLUBAIC0xNzYwLDggKzE3NjAsOCBA QCByZWFkX3BpZWNlZF92YWx1ZSAoc3RydWN0IHZhbHVlICp2KQorQEAgLTE3OTYsOCArMTc5Niw4 IEBAIHJlYWRfcGllY2VkX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnYpCiAgICBmb3IgKGkgPSAwOyBp IDwgYy0+bl9waWVjZXMgJiYgb2Zmc2V0IDwgdHlwZV9sZW47IGkrKykKICAgICAgewogICAgICAg IHN0cnVjdCBkd2FyZl9leHByX3BpZWNlICpwID0gJmMtPnBpZWNlc1tpXTsKQEAgLTE3MjQsNyAr MTcyNCw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9kd2FyZjJsb2MuYwogICAg ICAgIGNvbnN0IGdkYl9ieXRlICppbnRlcm1lZGlhdGVfYnVmZmVyOwogIAogICAgICAgIC8qIENv bXB1dGUgc2l6ZSwgc291cmNlLCBhbmQgZGVzdGluYXRpb24gb2Zmc2V0cyBmb3IgY29weWluZywg aW4KLUBAIC0xOTEwLDEzICsxOTEwLDEzIEBAIHN0YXRpYyB2b2lkCitAQCAtMTk0NiwxMyArMTk0 NiwxMyBAQCBzdGF0aWMgdm9pZAogIHdyaXRlX3BpZWNlZF92YWx1ZSAoc3RydWN0IHZhbHVlICp0 bywgc3RydWN0IHZhbHVlICpmcm9tKQogIHsKICAgIGludCBpOwpAQCAtMTczOCw5ICsxNzM4LDkg QEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2R3YXJmMmxvYy5jCiAtICBzaXplX3Qg dHlwZV9sZW47CiArICBVTE9OR0VTVCB0eXBlX2xlbjsKICAgIHNpemVfdCBidWZmZXJfc2l6ZSA9 IDA7Ci0gICBjaGFyICpidWZmZXIgPSBOVUxMOworICAgZ2RiX2J5dGUgKmJ1ZmZlciA9IE5VTEw7 CiAgICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cDsKLUBAIC0xOTQ0LDggKzE5NDQsOCBAQCB3cml0 ZV9waWVjZWRfdmFsdWUgKHN0cnVjdCB2YWx1ZSAqdG8sIHN0CitAQCAtMTk4MCw4ICsxOTgwLDgg QEAgd3JpdGVfcGllY2VkX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnRvLCBzdAogICAgZm9yIChpID0g MDsgaSA8IGMtPm5fcGllY2VzICYmIG9mZnNldCA8IHR5cGVfbGVuOyBpKyspCiAgICAgIHsKICAg ICAgICBzdHJ1Y3QgZHdhcmZfZXhwcl9waWVjZSAqcCA9ICZjLT5waWVjZXNbaV07CkBAIC0xNzUx LDcgKzE3NTEsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvZHdhcmYybG9jLmMK ICAgICAgICBpbnQgbmVlZF9iaXR3aXNlOwogICAgICAgIGNvbnN0IGdkYl9ieXRlICpzb3VyY2Vf YnVmZmVyOwogIAotQEAgLTIwNzQsOCArMjA3NCw4IEBAIHdyaXRlX3BpZWNlZF92YWx1ZSAoc3Ry dWN0IHZhbHVlICp0bywgc3QKK0BAIC0yMTEwLDggKzIxMTAsOCBAQCB3cml0ZV9waWVjZWRfdmFs dWUgKHN0cnVjdCB2YWx1ZSAqdG8sIHN0CiAgICAgaW1wbGljaXQgcG9pbnRlci4gICovCiAgCiAg c3RhdGljIGludApAQCAtMTc2Miw3ICsxNzYyLDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAy MTUvZ2RiL2R3YXJmMmxvYy5jCiAgCQkJIGVudW0gZHdhcmZfdmFsdWVfbG9jYXRpb24gY2hlY2tf Zm9yKQogIHsKICAgIHN0cnVjdCBwaWVjZV9jbG9zdXJlICpjCi1AQCAtMjA5MSw3ICsyMDkxLDcg QEAgY2hlY2tfcGllY2VkX3ZhbHVlX2JpdHMgKGNvbnN0IHN0cnVjdCB2YQorQEAgLTIxMjcsNyAr MjEyNyw3IEBAIGNoZWNrX3BpZWNlZF92YWx1ZV9iaXRzIChjb25zdCBzdHJ1Y3QgdmEKICAgIGZv ciAoaSA9IDA7IGkgPCBjLT5uX3BpZWNlcyAmJiBiaXRfbGVuZ3RoID4gMDsgaSsrKQogICAgICB7 CiAgICAgICAgc3RydWN0IGR3YXJmX2V4cHJfcGllY2UgKnAgPSAmYy0+cGllY2VzW2ldOwpAQCAt MTc3MSw3ICsxNzcxLDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2R3YXJmMmxv Yy5jCiAgCiAgICAgICAgaWYgKGJpdF9vZmZzZXQgPiAwKQogIAl7Ci1AQCAtMjEyOSw4ICsyMTI5 LDggQEAgY2hlY2tfcGllY2VkX3ZhbHVlX2JpdHMgKGNvbnN0IHN0cnVjdCB2YQorQEAgLTIxNjUs OCArMjE2NSw4IEBAIGNoZWNrX3BpZWNlZF92YWx1ZV9iaXRzIChjb25zdCBzdHJ1Y3QgdmEKICB9 CiAgCiAgc3RhdGljIGludApAQCAtMTc4Miw3ICsxNzgyLDcgQEAgSW5kZXg6IGdkYi03LjUuNTAu MjAxMzAyMTUvZ2RiL2R3YXJmMmxvYy5jCiAgewogICAgcmV0dXJuIGNoZWNrX3BpZWNlZF92YWx1 ZV9iaXRzICh2YWx1ZSwgYml0X29mZnNldCwgYml0X2xlbmd0aCwKICAJCQkJICBEV0FSRl9WQUxV RV9NRU1PUlkpOwotQEAgLTIxNDgsOCArMjE0OCw4IEBAIGNoZWNrX3BpZWNlZF92YWx1ZV9pbnZh bGlkIChjb25zdCBzdHJ1Y3QKK0BAIC0yMTg0LDggKzIxODQsOCBAQCBjaGVja19waWVjZWRfdmFs dWVfaW52YWxpZCAoY29uc3Qgc3RydWN0CiAgICAgYSBzeW50aGV0aWMgcG9pbnRlci4gICovCiAg CiAgc3RhdGljIGludApAQCAtMTc5Myw3ICsxNzkzLDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAx MzAyMTUvZ2RiL2R3YXJmMmxvYy5jCiAgewogICAgcmV0dXJuIGNoZWNrX3BpZWNlZF92YWx1ZV9i aXRzICh2YWx1ZSwgYml0X29mZnNldCwgYml0X2xlbmd0aCwKICAJCQkJICBEV0FSRl9WQUxVRV9J TVBMSUNJVF9QT0lOVEVSKTsKLUBAIC0yMTc0LDkgKzIxNzQsMTAgQEAgaW5kaXJlY3RfcGllY2Vk X3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnZhbAorQEAgLTIyMTAsOSArMjIxMCwxMCBAQCBpbmRpcmVj dF9waWVjZWRfdmFsdWUgKHN0cnVjdCB2YWx1ZSAqdmFsCiAgICBzdHJ1Y3QgdHlwZSAqdHlwZTsK ICAgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZTsKICAgIHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9i YXRvbiBiYXRvbjsKQEAgLTE4MDYsNyArMTgwNiw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMw MjE1L2dkYi9kd2FyZjJsb2MuYwogIAogICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5 cGUgKHZhbHVlKSk7CiAgICBpZiAoVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVfUFRSKQot QEAgLTIxOTAsNyArMjE5MSw3IEBAIGluZGlyZWN0X3BpZWNlZF92YWx1ZSAoc3RydWN0IHZhbHVl ICp2YWwKK0BAIC0yMjI2LDcgKzIyMjcsNyBAQCBpbmRpcmVjdF9waWVjZWRfdmFsdWUgKHN0cnVj dCB2YWx1ZSAqdmFsCiAgICBmb3IgKGkgPSAwOyBpIDwgYy0+bl9waWVjZXMgJiYgYml0X2xlbmd0 aCA+IDA7IGkrKykKICAgICAgewogICAgICAgIHN0cnVjdCBkd2FyZl9leHByX3BpZWNlICpwID0g JmMtPnBpZWNlc1tpXTsKQEAgLTE4MTUsNyArMTgxNSw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIw MTMwMjE1L2dkYi9kd2FyZjJsb2MuYwogIAogICAgICAgIGlmIChiaXRfb2Zmc2V0ID4gMCkKICAJ ewotQEAgLTI0MDYsNyArMjQwNyw3IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzY19mdWxsIChz dHJ1Y3QgdHkKK0BAIC0yNDY3LDcgKzI0NjgsNyBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2Nf ZnVsbCAoc3RydWN0IHR5CiAgCSAgICBzdHJ1Y3QgdmFsdWUgKnZhbHVlID0gZHdhcmZfZXhwcl9m ZXRjaCAoY3R4LCAwKTsKICAJICAgIGdkYl9ieXRlICpjb250ZW50czsKICAJICAgIGNvbnN0IGdk Yl9ieXRlICp2YWxfYnl0ZXM7CkBAIC0xODI0LDExICsxODI0LDExIEBAIEluZGV4OiBnZGItNy41 LjUwLjIwMTMwMjE1L2dkYi9kd2FyZjJsb2MuYwogIAogIAkgICAgaWYgKGJ5dGVfb2Zmc2V0ICsg VFlQRV9MRU5HVEggKHR5cGUpID4gbikKICAJICAgICAgaW52YWxpZF9zeW50aGV0aWNfcG9pbnRl ciAoKTsKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9kd2FyZjJyZWFkLmMKK0luZGV4 OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvZHdhcmYycmVhZC5jCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxMy0wMi0xNSAy Mjo0MDoxMy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9kd2Fy ZjJyZWFkLmMJMjAxMy0wMi0xNSAyMjo0MDoxOC41Mjg2MjIwNjcgKzAxMDAKLUBAIC0xMjI3LDEy ICsxMjI3LDEyIEBAIGR3YXJmMl9jb21wbGV4X2xvY2F0aW9uX2V4cHJfY29tcGxhaW50ICgKKy0t LSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxMy0wOC0w MiAxNjozODoyNi40NDEyOTIyMDggKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9n ZGIvZHdhcmYycmVhZC5jCTIwMTMtMDgtMDIgMTY6Mzg6MzIuMzU4MzAwNzM1ICswMjAwCitAQCAt MTI1OCwxMiArMTI1OCwxMiBAQCBkd2FyZjJfY29tcGxleF9sb2NhdGlvbl9leHByX2NvbXBsYWlu dCAoCiAgfQogIAogIHN0YXRpYyB2b2lkCkBAIC0xODQ1LDcgKzE4NDUsNyBAQCBJbmRleDogZ2Ri LTcuNS41MC4yMDEzMDIxNS9nZGIvZHdhcmYycmVhZC5jCiAgfQogIAogIHN0YXRpYyB2b2lkCi1A QCAtMTA2NDEsOCArMTA2NDEsOCBAQCBkd2FyZjJfYWRkX2ZpZWxkIChzdHJ1Y3QgZmllbGRfaW5m byAqZmlwCitAQCAtMTEyMTUsOCArMTEyMTUsOCBAQCBkd2FyZjJfYWRkX2ZpZWxkIChzdHJ1Y3Qg ZmllbGRfaW5mbyAqZmlwCiAgCSAgICAgICAgIG9iamVjdCwgYW5kIHRoZW4gc3VidHJhY3Qgb2Zm IHRoZSBudW1iZXIgb2YgYml0cyBvZgogIAkgICAgICAgICB0aGUgZmllbGQgaXRzZWxmLiAgVGhl IHJlc3VsdCBpcyB0aGUgYml0IG9mZnNldCBvZgogIAkgICAgICAgICB0aGUgTFNCIG9mIHRoZSBm aWVsZC4gICovCkBAIC0xODU2LDEwICsxODU2LDEwIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMw MjE1L2dkYi9kd2FyZjJyZWFkLmMKICAKICAJICAgICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUs IERXX0FUX2J5dGVfc2l6ZSwgY3UpOwogIAkgICAgICBpZiAoYXR0cikKLUluZGV4OiBnZGItNy41 LjUwLjIwMTMwMjE1L2dkYi9ldmFsLmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9n ZGIvZXZhbC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9l dmFsLmMJMjAxMy0wMi0xNSAyMjozMTozNy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUw LjIwMTMwMjE1L2dkYi9ldmFsLmMJMjAxMy0wMi0xNSAyMjo0MDoxOC41Mjk2MjIwNzAgKzAxMDAK Ky0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9ldmFsLmMJMjAxMy0wOC0wMiAx NjozODoyNi40NDMyOTIyMTEgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIv ZXZhbC5jCTIwMTMtMDgtMDIgMTY6Mzg6MzIuMzU5MzAwNzM2ICswMjAwCiBAQCAtMjk0LDcgKzI5 NCw4IEBAIGV2YWx1YXRlX3N0cnVjdF90dXBsZSAoc3RydWN0IHZhbHVlICpzdHIKICAgIHdoaWxl ICgtLW5hcmdzID49IDApCiAgICAgIHsKQEAgLTE4NzksNyArMTg3OSw3IEBAIEluZGV4OiBnZGIt Ny41LjUwLjIwMTMwMjE1L2dkYi9ldmFsLmMKICAKICAgIGlmIChleHAtPmVsdHNbKnBvc10ub3Bj b2RlID09IEJJTk9QX0NPTU1BKQogICAgICB7Ci1AQCAtNzA5LDExICs3MTAsMTEgQEAgYmlub3Bf cHJvbW90ZSAoY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZgorQEAgLTcxMywxMSArNzE0LDExIEBA IGJpbm9wX3Byb21vdGUgKGNvbnN0IHN0cnVjdCBsYW5ndWFnZV9kZWYKICAgICAgLyogRklYTUU6 IEFsc28gbWl4ZWQgaW50ZWdyYWwvYm9vbGVhbnMsIHdpdGggcmVzdWx0IGFuIGludGVnZXIuICAq LwogICAgICB7CiAgICAgICAgY29uc3Qgc3RydWN0IGJ1aWx0aW5fdHlwZSAqYnVpbHRpbiA9IGJ1 aWx0aW5fdHlwZSAoZ2RiYXJjaCk7CkBAIC0xODk0LDcgKzE4OTQsNyBAQCBJbmRleDogZ2RiLTcu NS41MC4yMDEzMDIxNS9nZGIvZXZhbC5jCiAgICAgICAgaW50IHVuc2lnbmVkX29wZXJhdGlvbjsK ICAKICAgICAgICAvKiBEZXRlcm1pbmUgdHlwZSBsZW5ndGggYW5kIHNpZ25lZG5lc3MgYWZ0ZXIg cHJvbW90aW9uIGZvcgotQEAgLTg5Niw3ICs4OTcsNyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRh cmQgKHN0cnVjdCB0eXBlICplCitAQCAtOTAwLDcgKzkwMSw3IEBAIGV2YWx1YXRlX3N1YmV4cF9z dGFuZGFyZCAoc3RydWN0IHR5cGUgKmUKICAgIHN0cnVjdCB2YWx1ZSAqKmFyZ3ZlYzsKICAgIGlu dCBjb2RlOwogICAgaW50IGl4OwpAQCAtMTkwMyw3ICsxOTAzLDcgQEAgSW5kZXg6IGdkYi03LjUu NTAuMjAxMzAyMTUvZ2RiL2V2YWwuYwogICAgc3RydWN0IHR5cGUgKiphcmdfdHlwZXM7CiAgICBp bnQgc2F2ZV9wb3MxOwogICAgc3RydWN0IHN5bWJvbCAqZnVuY3Rpb24gPSBOVUxMOwotQEAgLTEw NzYsNyArMTA3Nyw3IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmUK K0BAIC0xMDgwLDcgKzEwODEsNyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0 eXBlICplCiAgCSAgc3RydWN0IHR5cGUgKnJhbmdlX3R5cGUgPSBUWVBFX0lOREVYX1RZUEUgKHR5 cGUpOwogIAkgIHN0cnVjdCB0eXBlICplbGVtZW50X3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFICh0 eXBlKTsKICAJICBzdHJ1Y3QgdmFsdWUgKmFycmF5ID0gYWxsb2NhdGVfdmFsdWUgKGV4cGVjdF90 eXBlKTsKQEAgLTE5MTIsNyArMTkxMiw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dk Yi9ldmFsLmMKICAJICBMT05HRVNUIGxvd19ib3VuZCwgaGlnaF9ib3VuZCwgaW5kZXg7CiAgCiAg CSAgaWYgKGdldF9kaXNjcmV0ZV9ib3VuZHMgKHJhbmdlX3R5cGUsICZsb3dfYm91bmQsICZoaWdo X2JvdW5kKSA8IDApCi1AQCAtMjA3OCw3ICsyMDc5LDggQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5k YXJkIChzdHJ1Y3QgdHlwZSAqZQorQEAgLTIwNzUsNyArMjA3Niw4IEBAIGV2YWx1YXRlX3N1YmV4 cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmUKICAgICAgICB7CiAgICAgICAgICBzdHJ1Y3QgdHlw ZSAqdHlwZSA9IHZhbHVlX3R5cGUgKGFyZzEpOwogICAgICAgICAgc3RydWN0IHR5cGUgKnJlYWxf dHlwZTsKQEAgLTE5MjIsMTAgKzE5MjIsMTAgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUv Z2RiL2V2YWwuYwogIAlzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRzOwogIAogIAlnZXRf dXNlcl9wcmludF9vcHRpb25zICgmb3B0cyk7Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9n ZGIvZi1sYW5nLmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvZi1sYW5nLmMK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL2YtbGFuZy5jCTIw MTMtMDEtMDEgMDc6MzI6NDIuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIx NS9nZGIvZi1sYW5nLmMJMjAxMy0wMi0xNSAyMjo0MDoxOC41Mjk2MjIwNzAgKzAxMDAKKy0tLSBn ZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9mLWxhbmcuYwkyMDEzLTA4LTAyIDE2OjM4 OjI2LjQ0MzI5MjIxMSArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9mLWxh bmcuYwkyMDEzLTA4LTAyIDE2OjM4OjMyLjM1OTMwMDczNiArMDIwMAogQEAgLTEwMyw3ICsxMDMs NyBAQCBmX3ByaW50Y2hhciAoaW50IGMsIHN0cnVjdCB0eXBlICp0eXBlLCBzCiAgCiAgc3RhdGlj IHZvaWQKQEAgLTE5MzUsMTAgKzE5MzUsMTAgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUv Z2RiL2YtbGFuZy5jCiAgCSAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0 aW9ucykKICB7CiAgICBjb25zdCBjaGFyICp0eXBlX2VuY29kaW5nID0gZl9nZXRfZW5jb2Rpbmcg KHR5cGUpOwotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2YtbGFuZy5oCitJbmRleDog Z2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2YtbGFuZy5oCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9mLWxhbmcuaAkyMDEzLTAyLTE1IDIyOjMxOjM3LjAw MDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2YtbGFuZy5oCTIwMTMt MDItMTUgMjI6NDA6MTguNTI5NjIyMDcwICswMTAwCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1j dnMub3JpZy9nZGIvZi1sYW5nLmgJMjAxMy0wOC0wMiAxNjozODoyNi40NDMyOTIyMTEgKzAyMDAK KysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvZi1sYW5nLmgJMjAxMy0wOC0wMiAxNjoz ODozMi4zNTkzMDA3MzYgKzAyMDAKIEBAIC0zMyw3ICszMyw3IEBAIGV4dGVybiBjb25zdCBjaGFy ICpmX29iamVjdF9hZGRyZXNzX2RhdGEKICAgIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVp X2ZpbGUgKnN0cmVhbSk7CiAgZXh0ZXJuIHZvaWQgZl9vYmplY3RfYWRkcmVzc19kYXRhX3ZhbGlk X29yX2Vycm9yIChzdHJ1Y3QgdHlwZSAqdHlwZSk7CkBAIC0xOTQ4LDEwICsxOTQ4LDEwIEBAIElu ZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9mLWxhbmcuaAogIAkJCSBzdHJ1Y3QgdWlfZmls ZSAqLCBpbnQsCiAgCQkJIGNvbnN0IHN0cnVjdCB2YWx1ZSAqLAogIAkJCSBjb25zdCBzdHJ1Y3Qg dmFsdWVfcHJpbnRfb3B0aW9ucyAqKTsKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9m LXZhbHByaW50LmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvZi12YWxwcmlu dC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9mLXZhbHBy aW50LmMJMjAxMy0wMi0xNSAyMjozMTozNy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUw LjIwMTMwMjE1L2dkYi9mLXZhbHByaW50LmMJMjAxMy0wMi0xNSAyMjo0MDoxOC41Mjk2MjIwNzAg KzAxMDAKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9mLXZhbHByaW50LmMJ MjAxMy0wOC0wMiAxNjozODoyNi40NDQyOTIyMTIgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMw NzMxLWN2cy9nZGIvZi12YWxwcmludC5jCTIwMTMtMDgtMDIgMTY6Mzg6MzIuMzU5MzAwNzM2ICsw MjAwCiBAQCAtNDMsNyArNDMsNyBAQCBzdGF0aWMgdm9pZCBmNzdfY3JlYXRlX2FycmF5cHJpbnRf b2Zmc2V0CiAgCQkJCQkgICAgICBzdHJ1Y3QgdWlfZmlsZSAqKTsKICBzdGF0aWMgdm9pZCBmNzdf Z2V0X2R5bmFtaWNfbGVuZ3RoX29mX2FnZ3JlZ2F0ZSAoc3RydWN0IHR5cGUgKik7CkBAIC0yMDE2 LDExICsyMDE2LDExIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9mLXZhbHByaW50 LmMKICAKICAgICAgICAgICAgdmFsX3ByaW50IChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGluZGV4 KSwgdmFsYWRkciwKICAJCSAgICAgZW1iZWRkZWRfb2Zmc2V0ICsgb2Zmc2V0LAotSW5kZXg6IGdk Yi03LjUuNTAuMjAxMzAyMTUvZ2RiL2ZpbmR2YXIuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3 MzEtY3ZzL2dkYi9maW5kdmFyLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMjE1 Lm9yaWcvZ2RiL2ZpbmR2YXIuYwkyMDEzLTAyLTE1IDIyOjMxOjM3LjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2ZpbmR2YXIuYwkyMDEzLTAyLTE1IDIyOjQwOjE4 LjUyOTYyMjA3MCArMDEwMAotQEAgLTY0NCw3ICs2NDQsNyBAQCBkZWZhdWx0X3ZhbHVlX2Zyb21f cmVnaXN0ZXIgKHN0cnVjdCB0eXBlCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9n ZGIvZmluZHZhci5jCTIwMTMtMDgtMDIgMTY6Mzg6MjYuNDQ0MjkyMjEyICswMjAwCisrKysgZ2Ri LTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2ZpbmR2YXIuYwkyMDEzLTA4LTAyIDE2OjM4OjMyLjM2 MDMwMDczOCArMDIwMAorQEAgLTY1Miw3ICs2NTIsNyBAQCBkZWZhdWx0X3ZhbHVlX2Zyb21fcmVn aXN0ZXIgKHN0cnVjdCB0eXBlCiAgCQkJICAgICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCiAg ewogICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfZnJhbWVfYXJjaCAoZnJhbWUpOwpA QCAtMjAyOSw3ICsyMDI5LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2ZpbmR2 YXIuYwogICAgc3RydWN0IHZhbHVlICp2YWx1ZSA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKICAK ICAgIFZBTFVFX0xWQUwgKHZhbHVlKSA9IGx2YWxfcmVnaXN0ZXI7Ci1AQCAtNjc3LDEwICs2Nzcs MTAgQEAgdm9pZAorQEAgLTY4NSwxMCArNjg1LDEwIEBAIHZvaWQKICByZWFkX2ZyYW1lX3JlZ2lz dGVyX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnZhbHVlLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUp CiAgewogICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfZnJhbWVfYXJjaCAoZnJhbWUp OwpAQCAtMjA0Myw3ICsyMDQzLDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2Zp bmR2YXIuYwogIAogICAgZ2RiX2Fzc2VydCAoVkFMVUVfTFZBTCAodmFsdWUpID09IGx2YWxfcmVn aXN0ZXIpOwogIAotQEAgLTY5NSw3ICs2OTUsNyBAQCByZWFkX2ZyYW1lX3JlZ2lzdGVyX3ZhbHVl IChzdHJ1Y3QgdmFsdWUKK0BAIC03MDMsNyArNzAzLDcgQEAgcmVhZF9mcmFtZV9yZWdpc3Rlcl92 YWx1ZSAoc3RydWN0IHZhbHVlCiAgICB3aGlsZSAobGVuID4gMCkKICAgICAgewogICAgICAgIHN0 cnVjdCB2YWx1ZSAqcmVndmFsID0gZ2V0X2ZyYW1lX3JlZ2lzdGVyX3ZhbHVlIChmcmFtZSwgcmVn bnVtKTsKQEAgLTIwNTIsMTEgKzIwNTIsMTEgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUv Z2RiL2ZpbmR2YXIuYwogIAogICAgICAgIGlmICh2YWx1ZV9vcHRpbWl6ZWRfb3V0IChyZWd2YWwp KQogIAl7Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvZnJhbWUuYworSW5kZXg6IGdk Yi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9mcmFtZS5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu NS41MC4yMDEzMDIxNS5vcmlnL2dkYi9mcmFtZS5jCTIwMTMtMDEtMDEgMDc6MzI6NDIuMDAwMDAw MDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvZnJhbWUuYwkyMDEzLTAyLTE1 IDIyOjQwOjE4LjUzMDYyMjA3MyArMDEwMAotQEAgLTExMTMsNyArMTExMyw3IEBAIGRlcHJlY2F0 ZWRfZnJhbWVfcmVnaXN0ZXJfcmVhZCAoc3RydWN0IGYKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMx LWN2cy5vcmlnL2dkYi9mcmFtZS5jCTIwMTMtMDgtMDIgMTY6Mzg6MjYuNDQ1MjkyMjE0ICswMjAw CisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2ZyYW1lLmMJMjAxMy0wOC0wMiAxNjoz ODozMi4zNjAzMDA3MzggKzAyMDAKK0BAIC0xMTgyLDcgKzExODIsNyBAQCBkZXByZWNhdGVkX2Zy YW1lX3JlZ2lzdGVyX3JlYWQgKHN0cnVjdCBmCiAgCiAgaW50CiAgZ2V0X2ZyYW1lX3JlZ2lzdGVy X2J5dGVzIChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsIGludCByZWdudW0sCkBAIC0yMDY1LDcg KzIwNjUsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvZnJhbWUuYwogIAkJCSAg aW50ICpvcHRpbWl6ZWRwLCBpbnQgKnVuYXZhaWxhYmxlcCkKICB7CiAgICBzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoIChmcmFtZSk7Ci1AQCAtMTE0Miw3ICsxMTQyLDcg QEAgZ2V0X2ZyYW1lX3JlZ2lzdGVyX2J5dGVzIChzdHJ1Y3QgZnJhbWVfaQorQEAgLTEyMTEsNyAr MTIxMSw3IEBAIGdldF9mcmFtZV9yZWdpc3Rlcl9ieXRlcyAoc3RydWN0IGZyYW1lX2kKICAgICAg fQogICAgaWYgKGxlbiA+IG1heHNpemUpCiAgICAgIGVycm9yIChfKCJCYWQgZGVidWcgaW5mb3Jt YXRpb24gZGV0ZWN0ZWQ6ICIKQEAgLTIwNzQsMTAgKzIwNzQsMTAgQEAgSW5kZXg6IGdkYi03LjUu NTAuMjAxMzAyMTUvZ2RiL2ZyYW1lLmMKICAKICAgIC8qIENvcHkgdGhlIGRhdGEuICAqLwogICAg d2hpbGUgKGxlbiA+IDApCi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvZnJhbWUuaAor SW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9mcmFtZS5oCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9mcmFtZS5oCTIwMTMtMDItMDEgMjA6NTg6 MDQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvZnJhbWUuaAky MDEzLTAyLTE1IDIyOjQwOjE4LjUzMDYyMjA3MyArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3 MzEtY3ZzLm9yaWcvZ2RiL2ZyYW1lLmgJMjAxMy0wOC0wMiAxNjozODoyNi40NDUyOTIyMTQgKzAy MDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvZnJhbWUuaAkyMDEzLTA4LTAyIDE2 OjM4OjMyLjM2MDMwMDczOCArMDIwMAogQEAgLTUzMiw3ICs1MzIsNyBAQCBleHRlcm4gdm9pZCBw dXRfZnJhbWVfcmVnaXN0ZXIgKHN0cnVjdCBmCiAgICAgY29udGVudHMgYXJlIG9wdGltaXplZCBv dXQgb3IgdW5hdmFpbGFibGUsIHNldCAqT1BUSU1JWkVEUCwKICAgICAqVU5BVkFJTEFCTEVQIGFj Y29yZGluZ2x5LiAgKi8KQEAgLTIwODcsMTEgKzIwODcsMTEgQEAgSW5kZXg6IGdkYi03LjUuNTAu MjAxMzAyMTUvZ2RiL2ZyYW1lLmgKICAJCQkJICAgICBnZGJfYnl0ZSAqbXlhZGRyLAogIAkJCQkg ICAgIGludCAqb3B0aW1pemVkcCwgaW50ICp1bmF2YWlsYWJsZXApOwogIAotSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAyMTUvZ2RiL2dkYnR5cGVzLmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMx LWN2cy9nZGIvZ2RidHlwZXMuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUu b3JpZy9nZGIvZ2RidHlwZXMuYwkyMDEzLTAyLTE1IDIyOjMxOjM3LjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2dkYnR5cGVzLmMJMjAxMy0wMi0xNSAyMjo0MDoz OS40OTY2NDgwNTIgKzAxMDAKLUBAIC0yMDkwLDcgKzIwOTAsNyBAQCBhbGxvY2F0ZV9nbmF0X2F1 eF90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3Jp Zy9nZGIvZ2RidHlwZXMuYwkyMDEzLTA4LTAyIDE2OjM4OjI2LjQ0NjI5MjIxNSArMDIwMAorKysr IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9nZGJ0eXBlcy5jCTIwMTMtMDgtMDIgMTY6Mzg6 MzIuMzYxMzAwNzM5ICswMjAwCitAQCAtMjA5MSw3ICsyMDkxLDcgQEAgYWxsb2NhdGVfZ25hdF9h dXhfdHlwZSAoc3RydWN0IHR5cGUgKnR5cAogICAgIGxlYXN0IGFzIGxvbmcgYXMgT0JKRklMRS4g ICovCiAgCiAgc3RydWN0IHR5cGUgKgpAQCAtMjEwMCw3ICsyMTAwLDcgQEAgSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAyMTUvZ2RiL2dkYnR5cGVzLmMKICAJICAgY29uc3QgY2hhciAqbmFtZSwgc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUpCiAgewogICAgc3RydWN0IHR5cGUgKnR5cGU7Ci1AQCAtMjMy MSw4ICsyMzIxLDggQEAgaXNfcHVibGljX2FuY2VzdG9yIChzdHJ1Y3QgdHlwZSAqYmFzZSwgcwor QEAgLTIzMjIsOCArMjMyMiw4IEBAIGlzX3B1YmxpY19hbmNlc3RvciAoc3RydWN0IHR5cGUgKmJh c2UsIHMKICAKICBzdGF0aWMgaW50CiAgaXNfdW5pcXVlX2FuY2VzdG9yX3dvcmtlciAoc3RydWN0 IHR5cGUgKmJhc2UsIHN0cnVjdCB0eXBlICpkY2xhc3MsCkBAIC0yMTExLDcgKzIxMTEsNyBAQCBJ bmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvZ2RidHlwZXMuYwogIAkJCSAgIENPUkVfQURE UiBhZGRyZXNzLCBzdHJ1Y3QgdmFsdWUgKnZhbCkKICB7CiAgICBpbnQgaSwgY291bnQgPSAwOwot QEAgLTIzMzMsNyArMjMzMyw3IEBAIGlzX3VuaXF1ZV9hbmNlc3Rvcl93b3JrZXIgKHN0cnVjdCB0 eXBlICoKK0BAIC0yMzM0LDcgKzIzMzQsNyBAQCBpc191bmlxdWVfYW5jZXN0b3Jfd29ya2VyIChz dHJ1Y3QgdHlwZSAqCiAgICBmb3IgKGkgPSAwOyBpIDwgVFlQRV9OX0JBU0VDTEFTU0VTIChkY2xh c3MpICYmIGNvdW50IDwgMjsgKytpKQogICAgICB7CiAgICAgICAgc3RydWN0IHR5cGUgKml0ZXI7 CkBAIC0yMTIwLDcgKzIxMjAsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvZ2Ri dHlwZXMuYwogIAogICAgICAgIGl0ZXIgPSBjaGVja190eXBlZGVmIChUWVBFX0JBU0VDTEFTUyAo ZGNsYXNzLCBpKSk7CiAgCi1AQCAtMjM3NCw3ICsyMzc0LDcgQEAgaXNfdW5pcXVlX2FuY2VzdG9y X3dvcmtlciAoc3RydWN0IHR5cGUgKgorQEAgLTIzNzUsNyArMjM3NSw3IEBAIGlzX3VuaXF1ZV9h bmNlc3Rvcl93b3JrZXIgKHN0cnVjdCB0eXBlICoKICBpbnQKICBpc191bmlxdWVfYW5jZXN0b3Ig KHN0cnVjdCB0eXBlICpiYXNlLCBzdHJ1Y3QgdmFsdWUgKnZhbCkKICB7CkBAIC0yMTI5LDcgKzIx MjksNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvZ2RidHlwZXMuYwogIAogICAg cmV0dXJuIGlzX3VuaXF1ZV9hbmNlc3Rvcl93b3JrZXIgKGJhc2UsIHZhbHVlX3R5cGUgKHZhbCks ICZvZmZzZXQsCiAgCQkJCSAgICB2YWx1ZV9jb250ZW50c19mb3JfcHJpbnRpbmcgKHZhbCksCi1A QCAtMzI4Myw3ICszMjgzLDcgQEAgcmVjdXJzaXZlX2R1bXBfdHlwZSAoc3RydWN0IHR5cGUgKnR5 cGUsCitAQCAtMzMwMyw3ICszMzAzLDcgQEAgcmVjdXJzaXZlX2R1bXBfdHlwZSAoc3RydWN0IHR5 cGUgKnR5cGUsCiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIHB1dHNfZmlsdGVyZWQgKCJcbiIp OwpAQCAtMjEzOCw3ICsyMTM4LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2dk YnR5cGVzLmMKICAgIGlmIChUWVBFX09CSkZJTEVfT1dORUQgKHR5cGUpKQogICAgICB7CiAgICAg ICAgcHJpbnRmaV9maWx0ZXJlZCAoc3BhY2VzLCAib2JqZmlsZSAiKTsKLUBAIC0zNDA3LDggKzM0 MDcsOCBAQCByZWN1cnNpdmVfZHVtcF90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwKK0BAIC0zNDI3 LDggKzM0MjcsOCBAQCByZWN1cnNpdmVfZHVtcF90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwKICAJ CQkgIGlkeCwgcGxvbmdlc3QgKFRZUEVfRklFTERfRU5VTVZBTCAodHlwZSwgaWR4KSkpOwogICAg ICAgIGVsc2UKICAJcHJpbnRmaV9maWx0ZXJlZCAoc3BhY2VzICsgMiwKQEAgLTIxNDksNyArMjE0 OSw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9nZGJ0eXBlcy5jCiAgCQkJICBU WVBFX0ZJRUxEX0JJVFNJWkUgKHR5cGUsIGlkeCkpOwogICAgICAgIGdkYl9wcmludF9ob3N0X2Fk ZHJlc3MgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgaWR4KSwgZ2RiX3N0ZG91dCk7CiAgICAgICAg cHJpbnRmX2ZpbHRlcmVkICgiIG5hbWUgJyVzJyAoIiwKLUBAIC0zOTIyLDcgKzM5MjIsNyBAQCBj b3B5X3R5cGUgKGNvbnN0IHN0cnVjdCB0eXBlICp0eXBlKQorQEAgLTM5NDIsNyArMzk0Miw3IEBA IGNvcHlfdHlwZSAoY29uc3Qgc3RydWN0IHR5cGUgKnR5cGUpCiAgCiAgc3RydWN0IHR5cGUgKgog IGFyY2hfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCkBAIC0yMTU4LDEwICsyMTU4LDEw IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9nZGJ0eXBlcy5jCiAgewogICAgc3Ry dWN0IHR5cGUgKnR5cGU7CiAgCi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvZ2RidHlw ZXMuaAorSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9nZGJ0eXBlcy5oCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9nZGJ0eXBlcy5oCTIwMTMt MDItMTUgMjI6Mzc6MDQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9n ZGIvZ2RidHlwZXMuaAkyMDEzLTAyLTE1IDIyOjQyOjMzLjg0Njc4Nzk1OSArMDEwMAorLS0tIGdk Yi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2dkYnR5cGVzLmgJMjAxMy0wOC0wMiAxNjoz ODoyNi40NDcyOTIyMTcgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvZ2Ri dHlwZXMuaAkyMDEzLTA4LTAyIDE2OjM4OjMyLjM2MTMwMDczOSArMDIwMAogQEAgLTYwNiw3ICs2 MDYsNyBAQCBzdHJ1Y3QgbWFpbl90eXBlCiAgCSAgIGdkYmFyY2hfYml0c19iaWdfZW5kaWFuPTAg dGFyZ2V0cywgaXQgaXMgdGhlIGJpdCBvZmZzZXQgdG8KICAJICAgdGhlIExTQi4gICovCkBAIC0y MTk1LDEwICsyMTk1LDEwIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9nZGJ0eXBl cy5oCiAgZXh0ZXJuIHN0cnVjdCB0eXBlICphcmNoX2ludGVnZXJfdHlwZSAoc3RydWN0IGdkYmFy Y2ggKiwgaW50LCBpbnQsIGNoYXIgKik7CiAgZXh0ZXJuIHN0cnVjdCB0eXBlICphcmNoX2NoYXJh Y3Rlcl90eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqLCBpbnQsIGludCwgY2hhciAqKTsKICBleHRlcm4g c3RydWN0IHR5cGUgKmFyY2hfYm9vbGVhbl90eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqLCBpbnQsIGlu dCwgY2hhciAqKTsKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9nbnUtdjItYWJpLmMK K0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvZ251LXYyLWFiaS5jCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9nbnUtdjItYWJpLmMJMjAxMy0w MS0yMSAxODoyOTozOS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dk Yi9nbnUtdjItYWJpLmMJMjAxMy0wMi0xNSAyMjo0MDoxOC41MzI2MjIwNzcgKzAxMDAKKy0tLSBn ZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9nbnUtdjItYWJpLmMJMjAxMy0wOC0wMiAx NjozODoyNi40NDcyOTIyMTcgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIv Z251LXYyLWFiaS5jCTIwMTMtMDgtMDIgMTY6Mzg6MzIuMzYyMzAwNzQwICswMjAwCiBAQCAtODUs NyArODUsNyBAQCBnbnV2Ml9pc19vcGVyYXRvcl9uYW1lIChjb25zdCBjaGFyICpuYW1lCiAgICAg VFlQRSBpcyB0aGUgdHlwZSBpbiB3aGljaCBGIGlzIGxvY2F0ZWQuICAqLwogIHN0YXRpYyBzdHJ1 Y3QgdmFsdWUgKgpAQCAtMjI1MCwxMSArMjI1MCwxMSBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEz MDIxNS9nZGIvZ251LXYyLWFiaS5jCiAgCSAgICBnbnV2Ml9iYXNlY2xhc3Nfb2Zmc2V0ICh0eXBl LCBpLCB2YWxhZGRyLAogIAkJCQkgICAgZW1iZWRkZWRfb2Zmc2V0LCBhZGRyZXNzLCB2YWwpOwog IAotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2dudS12My1hYmkuYworSW5kZXg6IGdk Yi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9nbnUtdjMtYWJpLmMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy41LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL2dudS12My1hYmkuYwkyMDEzLTAxLTMxIDE5OjM3 OjM3LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2dudS12My1h YmkuYwkyMDEzLTAyLTE1IDIyOjQwOjE4LjUzMjYyMjA3NyArMDEwMAotQEAgLTEwNiw3ICsxMDYs NyBAQCBidWlsZF9nZGJfdnRhYmxlX3R5cGUgKHN0cnVjdCBnZGJhcmNoICphCistLS0gZ2RiLTcu Ni41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvZ251LXYzLWFiaS5jCTIwMTMtMDgtMDIgMTY6Mzg6 MjYuNDQ4MjkyMjE4ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2dudS12 My1hYmkuYwkyMDEzLTA4LTAyIDE2OjM4OjMyLjM2MjMwMDc0MCArMDIwMAorQEAgLTExMiw3ICsx MTIsNyBAQCBidWlsZF9nZGJfdnRhYmxlX3R5cGUgKHN0cnVjdCBnZGJhcmNoICphCiAgewogICAg c3RydWN0IHR5cGUgKnQ7CiAgICBzdHJ1Y3QgZmllbGQgKmZpZWxkX2xpc3QsICpmaWVsZDsKQEAg LTIyNjMsNyArMjI2Myw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9nbnUtdjMt YWJpLmMKICAKICAgIHN0cnVjdCB0eXBlICp2b2lkX3B0cl90eXBlCiAgICAgID0gYnVpbHRpbl90 eXBlIChhcmNoKS0+YnVpbHRpbl9kYXRhX3B0cjsKLUBAIC0xODIsNyArMTgyLDcgQEAgdnRhYmxl X3B0cmRpZmZfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkYgorQEAgLTE4OCw3ICsxODgsNyBAQCB2 dGFibGVfcHRyZGlmZl90eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiCiAgLyogUmV0dXJuIHRoZSBv ZmZzZXQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGltYWdpbmFyeSBgc3RydWN0CiAgICAgZ2RiX2du dV92M19hYmlfdnRhYmxlJyBvYmplY3QgdG8gdGhlIHZ0YWJsZSdzICJhZGRyZXNzIHBvaW50Igog ICAgIChpLmUuLCB3aGVyZSBvYmplY3RzJyB2aXJ0dWFsIHRhYmxlIHBvaW50ZXJzIHBvaW50KS4g ICovCkBAIC0yMjcyLDcgKzIyNzIsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIv Z251LXYzLWFiaS5jCiAgdnRhYmxlX2FkZHJlc3NfcG9pbnRfb2Zmc2V0IChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCkKICB7CiAgICBzdHJ1Y3QgdHlwZSAqdnRhYmxlX3R5cGUgPSBnZGJhcmNoX2Rh dGEgKGdkYmFyY2gsIHZ0YWJsZV90eXBlX2dkYmFyY2hfZGF0YSk7Ci1AQCAtMjczLDcgKzI3Myw3 IEBAIGdudXYzX2dldF92dGFibGUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmMKK0BAIC0yNzksNyAr Mjc5LDcgQEAgZ251djNfZ2V0X3Z0YWJsZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyYwogIAogIHN0 YXRpYyBzdHJ1Y3QgdHlwZSAqCiAgZ251djNfcnR0aV90eXBlIChzdHJ1Y3QgdmFsdWUgKnZhbHVl LApAQCAtMjI4MSw3ICsyMjgxLDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2du dS12My1hYmkuYwogIHsKICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoOwogICAgc3RydWN0IHR5 cGUgKnZhbHVlc190eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAodmFsdWUpKTsKLUBA IC0zODUsNyArMzg1LDcgQEAgZ251djNfZ2V0X3ZpcnR1YWxfZm4gKHN0cnVjdCBnZGJhcmNoICpn ZAorQEAgLTQwNCw3ICs0MDQsNyBAQCBnbnV2M19nZXRfdmlydHVhbF9mbiAoc3RydWN0IGdkYmFy Y2ggKmdkCiAgc3RhdGljIHN0cnVjdCB2YWx1ZSAqCiAgZ251djNfdmlydHVhbF9mbl9maWVsZCAo c3RydWN0IHZhbHVlICoqdmFsdWVfcCwKICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg Zm5fZmllbGQgKmYsIGludCBqLApAQCAtMjI5MCw3ICsyMjkwLDcgQEAgSW5kZXg6IGdkYi03LjUu NTAuMjAxMzAyMTUvZ2RiL2dudS12My1hYmkuYwogIHsKICAgIHN0cnVjdCB0eXBlICp2YWx1ZXNf dHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKCp2YWx1ZV9wKSk7CiAgICBzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaDsKLUBAIC00MTUsMTYgKzQxNSwxNiBAQCBnbnV2M192aXJ0dWFsX2Zu X2ZpZWxkIChzdHJ1Y3QgdmFsdWUgKip2CitAQCAtNDM0LDE2ICs0MzQsMTYgQEAgZ251djNfdmly dHVhbF9mbl9maWVsZCAoc3RydWN0IHZhbHVlICoqdgogIAogICAgIC0xIGlzIHJldHVybmVkIG9u IGVycm9yLiAgKi8KICAKQEAgLTIzMTAsNyArMjMxMCw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIw MTMwMjE1L2dkYi9nbnUtdjMtYWJpLmMKICAKICAgIC8qIERldGVybWluZSBhcmNoaXRlY3R1cmUu ICAqLwogICAgZ2RiYXJjaCA9IGdldF90eXBlX2FyY2ggKHR5cGUpOwotQEAgLTQ0OCw3ICs0NDgs NyBAQCBnbnV2M19iYXNlY2xhc3Nfb2Zmc2V0IChzdHJ1Y3QgdHlwZSAqdHlwCitAQCAtNDY3LDcg KzQ2Nyw3IEBAIGdudXYzX2Jhc2VjbGFzc19vZmZzZXQgKHN0cnVjdCB0eXBlICp0eXAKICAgIGN1 cl9iYXNlX29mZnNldCA9IGN1cl9iYXNlX29mZnNldCArIHZ0YWJsZV9hZGRyZXNzX3BvaW50X29m ZnNldCAoZ2RiYXJjaCk7CiAgICBpZiAoKC0gY3VyX2Jhc2Vfb2Zmc2V0KSAlIFRZUEVfTEVOR1RI IChwdHJfdHlwZSkgIT0gMCkKICAgICAgZXJyb3IgKF8oIk1pc2FsaWduZWQgdmJhc2Ugb2Zmc2V0 LiIpKTsKQEAgLTIzMTksNyArMjMxOSw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dk Yi9nbnUtdjMtYWJpLmMKICAKICAgIHZ0YWJsZSA9IGdudXYzX2dldF92dGFibGUgKGdkYmFyY2gs IHR5cGUsIGFkZHJlc3MgKyBlbWJlZGRlZF9vZmZzZXQpOwogICAgZ2RiX2Fzc2VydCAodnRhYmxl ICE9IE5VTEwpOwotQEAgLTQ5Miw3ICs0OTIsNyBAQCBnbnV2M19maW5kX21ldGhvZF9pbiAoc3Ry dWN0IHR5cGUgKmRvbWFpCitAQCAtNTExLDcgKzUxMSw3IEBAIGdudXYzX2ZpbmRfbWV0aG9kX2lu IChzdHJ1Y3QgdHlwZSAqZG9tYWkKICAgICAgIHdlJ3JlIG91dCBvZiBsdWNrLiAgKi8KICAgIGZv ciAoaSA9IDA7IGkgPCBUWVBFX05fQkFTRUNMQVNTRVMgKGRvbWFpbik7IGkrKykKICAgICAgewpA QCAtMjMyOCwxMCArMjMyOCwxMCBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvZ251 LXYzLWFiaS5jCiAgICAgICAgc3RydWN0IHR5cGUgKmJhc2V0eXBlOwogIAogICAgICAgIGlmIChC QVNFVFlQRV9WSUFfVklSVFVBTCAoZG9tYWluLCBpKSkKLUluZGV4OiBnZGItNy41LjUwLjIwMTMw MjE1L2dkYi9nby1sYW5nLmgKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvZ28t bGFuZy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9nby1s YW5nLmgJMjAxMy0wMS0wMSAwNzozMjo0NC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUw LjIwMTMwMjE1L2dkYi9nby1sYW5nLmgJMjAxMy0wMi0xNSAyMjo0MDoxOC41MzI2MjIwNzcgKzAx MDAKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9nby1sYW5nLmgJMjAxMy0w OC0wMiAxNjozODoyNi40NDgyOTIyMTggKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2 cy9nZGIvZ28tbGFuZy5oCTIwMTMtMDgtMDIgMTY6Mzg6MzIuMzYyMzAwNzQwICswMjAwCiBAQCAt ODMsNyArODMsNyBAQCBleHRlcm4gdm9pZCBnb19wcmludF90eXBlIChzdHJ1Y3QgdHlwZSAqCiAg LyogRGVmaW5lZCBpbiBnby12YWxwcmludC5jLiAgKi8KICAKQEAgLTIzNDEsMTAgKzIzNDEsMTAg QEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2dvLWxhbmcuaAogIAkJCSAgc3RydWN0 IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCiAgCQkJICBjb25zdCBzdHJ1Y3QgdmFsdWUg KnZhbCwKICAJCQkgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zKTsK LUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9nby12YWxwcmludC5jCitJbmRleDogZ2Ri LTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2dvLXZhbHByaW50LmMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy41LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL2dvLXZhbHByaW50LmMJMjAxMy0wMS0wMSAwNzoz Mjo0NC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9nby12YWxw cmludC5jCTIwMTMtMDItMTUgMjI6NDA6MTguNTMyNjIyMDc3ICswMTAwCistLS0gZ2RiLTcuNi41 MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvZ28tdmFscHJpbnQuYwkyMDEzLTA4LTAyIDE2OjM4OjI2 LjQ0ODI5MjIxOCArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9nby12YWxw cmludC5jCTIwMTMtMDgtMDIgMTY6Mzg6MzIuMzYyMzAwNzQwICswMjAwCiBAQCAtMzcsNyArMzcs NyBAQAogIAogIHN0YXRpYyB2b2lkCkBAIC0yMzY3LDEwICsyMzY3LDEwIEBAIEluZGV4OiBnZGIt Ny41LjUwLjIwMTMwMjE1L2dkYi9nby12YWxwcmludC5jCiAgCSAgICAgIGNvbnN0IHN0cnVjdCB2 YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zKQogIHsKICAgIENIRUNLX1RZUEVERUYgKHR5cGUp OwotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2kzODYtbmF0LmMKK0luZGV4OiBnZGIt Ny42LjUwLjIwMTMwNzMxLWN2cy9nZGIvaTM4Ni1uYXQuYwogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvaTM4Ni1uYXQuYwkyMDEzLTAyLTEzIDE1OjU5OjQ5LjAw MDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2kzODYtbmF0LmMJMjAx My0wMi0xNSAyMjo0MTo1My45NTA3Mzk0MTQgKzAxMDAKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMx LWN2cy5vcmlnL2dkYi9pMzg2LW5hdC5jCTIwMTMtMDgtMDIgMTY6Mzg6MjYuNDQ4MjkyMjE4ICsw MjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2kzODYtbmF0LmMJMjAxMy0wOC0w MiAxNjozODozMi4zNjIzMDA3NDAgKzAyMDAKIEBAIC0yOTAsNyArMjkwLDcgQEAgc3RhdGljIGlu dCBpMzg2X3JlbW92ZV9hbGlnbmVkX3dhdGNocG9pbgogICAgIHZhbGlkIHZhbHVlLCBib21icyB0 aHJvdWdoIGludGVybmFsX2Vycm9yLiAgKi8KICBzdGF0aWMgaW50IGkzODZfaGFuZGxlX25vbmFs aWduZWRfd2F0Y2hwb2ludCAoc3RydWN0IGkzODZfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSwKQEAg LTI0MDAsMTEgKzI0MDAsMTEgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2kzODYt bmF0LmMKICB7CiAgICBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlCiAgICAgID0g aTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKHB0aWRfZ2V0X3BpZCAoaW5mZXJpb3JfcHRpZCkpOwotSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2luZi10dHJhY2UuYworSW5kZXg6IGdkYi03LjYu NTAuMjAxMzA3MzEtY3ZzL2dkYi9pbmYtdHRyYWNlLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41 LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL2luZi10dHJhY2UuYwkyMDEzLTAxLTAxIDA3OjMyOjQ1LjAw MDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2luZi10dHJhY2UuYwky MDEzLTAyLTE1IDIyOjQwOjE4LjUzMzYyMjA3OCArMDEwMAotQEAgLTM2NCw3ICszNjQsNyBAQCBp bmZfdHRyYWNlX2Nhbl91c2VfaHdfYnJlYWtwb2ludCAoaW50IHR5CistLS0gZ2RiLTcuNi41MC4y MDEzMDczMS1jdnMub3JpZy9nZGIvaW5mLXR0cmFjZS5jCTIwMTMtMDgtMDIgMTY6Mzg6MjYuNDQ5 MjkyMjIwICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2luZi10dHJhY2Uu YwkyMDEzLTA4LTAyIDE2OjM4OjMyLjM2MzMwMDc0MiArMDIwMAorQEAgLTM2NSw3ICszNjUsNyBA QCBpbmZfdHRyYWNlX2Nhbl91c2VfaHdfYnJlYWtwb2ludCAoaW50IHR5CiAgfQogIAogIHN0YXRp YyBpbnQKQEAgLTI0MTMsMTEgKzI0MTMsMTEgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUv Z2RiL2luZi10dHJhY2UuYwogIHsKICAgIHJldHVybiAxOwogIH0KLUluZGV4OiBnZGItNy41LjUw LjIwMTMwMjE1L2dkYi9qdi1sYW5nLmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9n ZGIvanYtbGFuZy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dk Yi9qdi1sYW5nLmMJMjAxMy0wMi0xNSAyMjozNzowNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGIt Ny41LjUwLjIwMTMwMjE1L2dkYi9qdi1sYW5nLmMJMjAxMy0wMi0xNSAyMjo0MDoxOC41MzM2MjIw NzggKzAxMDAKLUBAIC00MzcsNyArNDM3LDcgQEAgamF2YV9saW5rX2NsYXNzX3R5cGUgKHN0cnVj dCBnZGJhcmNoICpnZAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2p2LWxh bmcuYwkyMDEzLTA4LTAyIDE2OjM4OjI2LjQ0OTI5MjIyMCArMDIwMAorKysrIGdkYi03LjYuNTAu MjAxMzA3MzEtY3ZzL2dkYi9qdi1sYW5nLmMJMjAxMy0wOC0wMiAxNjozODozMi4zNjMzMDA3NDIg KzAyMDAKK0BAIC00MzYsNyArNDM2LDcgQEAgamF2YV9saW5rX2NsYXNzX3R5cGUgKHN0cnVjdCBn ZGJhcmNoICpnZAogICAgZm9yIChpID0gVFlQRV9OX0JBU0VDTEFTU0VTICh0eXBlKTsgaSA8IG5m aWVsZHM7IGkrKykKICAgICAgewogICAgICAgIGludCBhY2NmbGFnczsKQEAgLTI0MjYsNyArMjQy Niw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9qdi1sYW5nLmMKICAKICAgICAg ICBpZiAoZmllbGRzID09IE5VTEwpCiAgCXsKLUBAIC04ODcsNyArODg3LDcgQEAgamF2YV9wcmlu dGNoYXIgKGludCBjLCBzdHJ1Y3QgdHlwZSAqdHlwZQorQEAgLTg4Niw3ICs4ODYsNyBAQCBqYXZh X3ByaW50Y2hhciAoaW50IGMsIHN0cnVjdCB0eXBlICp0eXBlCiAgc3RhdGljIHZvaWQKICBqYXZh X3ByaW50c3RyIChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBzdHJ1Y3QgdHlwZSAqdHlwZSwKICAJ ICAgICAgIGNvbnN0IGdkYl9ieXRlICpzdHJpbmcsCkBAIC0yNDM1LDEwICsyNDM1LDEwIEBAIElu ZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9qdi1sYW5nLmMKICAJICAgICAgIGNvbnN0IHN0 cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zKQogIHsKICAgIGNvbnN0IGNoYXIgKnR5 cGVfZW5jb2RpbmcgPSBqYXZhX2dldF9lbmNvZGluZyAodHlwZSk7Ci1JbmRleDogZ2RiLTcuNS41 MC4yMDEzMDIxNS9nZGIvanYtbGFuZy5oCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMv Z2RiL2p2LWxhbmcuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9n ZGIvanYtbGFuZy5oCTIwMTMtMDEtMDEgMDc6MzI6NDYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2Ri LTcuNS41MC4yMDEzMDIxNS9nZGIvanYtbGFuZy5oCTIwMTMtMDItMTUgMjI6NDA6MTguNTMzNjIy MDc4ICswMTAwCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvanYtbGFuZy5o CTIwMTMtMDgtMDIgMTY6Mzg6MjYuNDQ5MjkyMjIwICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEz MDczMS1jdnMvZ2RiL2p2LWxhbmcuaAkyMDEzLTA4LTAyIDE2OjM4OjMyLjM2MzMwMDc0MiArMDIw MAogQEAgLTQyLDggKzQyLDggQEAgc3RydWN0IGJ1aWx0aW5famF2YV90eXBlCiAgCiAgZXh0ZXJu IGNvbnN0IHN0cnVjdCBidWlsdGluX2phdmFfdHlwZSAqYnVpbHRpbl9qYXZhX3R5cGUgKHN0cnVj dCBnZGJhcmNoICopOwpAQCAtMjQ1MCwxMCArMjQ1MCwxMCBAQCBJbmRleDogZ2RiLTcuNS41MC4y MDEzMDIxNS9nZGIvanYtbGFuZy5oCiAgCQkJICAgIGNvbnN0IHN0cnVjdCB2YWx1ZSAqLAogIAkJ CSAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqKTsKICAKLUluZGV4OiBnZGIt Ny41LjUwLjIwMTMwMjE1L2dkYi9qdi12YWxwcmludC5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEz MDczMS1jdnMvZ2RiL2p2LXZhbHByaW50LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIw MTMwMjE1Lm9yaWcvZ2RiL2p2LXZhbHByaW50LmMJMjAxMy0wMS0zMSAxOTozNzozNy4wMDAwMDAw MDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9qdi12YWxwcmludC5jCTIwMTMt MDItMTUgMjI6NDA6MTguNTMzNjIyMDc4ICswMTAwCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1j dnMub3JpZy9nZGIvanYtdmFscHJpbnQuYwkyMDEzLTA4LTAyIDE2OjM4OjI2LjQ1MDI5MjIyMSAr MDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9qdi12YWxwcmludC5jCTIwMTMt MDgtMDIgMTY6Mzg6MzIuMzYzMzAwNzQyICswMjAwCiBAQCAtMjY2LDcgKzI2Niw3IEBAIGphdmFf dmFsdWVfcHJpbnQgKHN0cnVjdCB2YWx1ZSAqdmFsLCBzdHIKICAKICBzdGF0aWMgdm9pZApAQCAt MjQ3MiwxMSArMjQ3MiwxMSBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvanYtdmFs cHJpbnQuYwogIAkJc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCiAgCQljb25z dCBzdHJ1Y3QgdmFsdWUgKnZhbCwKICAJCWNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25z ICpvcHRpb25zKQotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2xhbmd1YWdlLmMKK0lu ZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvbGFuZ3VhZ2UuYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvbGFuZ3VhZ2UuYwkyMDEzLTAxLTAxIDA3 OjMyOjQ2LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2xhbmd1 YWdlLmMJMjAxMy0wMi0xNSAyMjo0MDoxOC41MzQ2MjIwNzkgKzAxMDAKLUBAIC03MjAsNyArNzIw LDcgQEAgdW5rX2xhbmdfcHJpbnRjaGFyIChpbnQgYywgc3RydWN0IHR5cGUgKgorLS0tIGdkYi03 LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2xhbmd1YWdlLmMJMjAxMy0wOC0wMiAxNjozODoy Ni40NTAyOTIyMjEgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvbGFuZ3Vh Z2UuYwkyMDEzLTA4LTAyIDE2OjM4OjMyLjM2NDMwMDc0MyArMDIwMAorQEAgLTcyMSw3ICs3MjEs NyBAQCB1bmtfbGFuZ19wcmludGNoYXIgKGludCBjLCBzdHJ1Y3QgdHlwZSAqCiAgCiAgc3RhdGlj IHZvaWQKICB1bmtfbGFuZ19wcmludHN0ciAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgc3RydWN0 IHR5cGUgKnR5cGUsCkBAIC0yNDg1LDcgKzI0ODUsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEz MDIxNS9nZGIvbGFuZ3VhZ2UuYwogIAkJICAgY29uc3QgY2hhciAqZW5jb2RpbmcsIGludCBmb3Jj ZV9lbGxpcHNlcywKICAJCSAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRp b25zKQogIHsKLUBAIC03MzksNyArNzM5LDcgQEAgdW5rX2xhbmdfcHJpbnRfdHlwZSAoc3RydWN0 IHR5cGUgKnR5cGUsCitAQCAtNzQwLDcgKzc0MCw3IEBAIHVua19sYW5nX3ByaW50X3R5cGUgKHN0 cnVjdCB0eXBlICp0eXBlLAogIAogIHN0YXRpYyB2b2lkCiAgdW5rX2xhbmdfdmFsX3ByaW50IChz dHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCkBAIC0yNDk0LDEwICsy NDk0LDEwIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9sYW5ndWFnZS5jCiAgCQkg ICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCiAgCQkgICAgY29uc3Qgc3Ry dWN0IHZhbHVlICp2YWwsCiAgCQkgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMg Km9wdGlvbnMpCi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvbGFuZ3VhZ2UuaAorSW5k ZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9sYW5ndWFnZS5oCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9sYW5ndWFnZS5oCTIwMTMtMDEtMDEgMDc6 MzI6NDYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvbGFuZ3Vh Z2UuaAkyMDEzLTAyLTE1IDIyOjQwOjE4LjUzNDYyMjA3OSArMDEwMAorLS0tIGdkYi03LjYuNTAu MjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2xhbmd1YWdlLmgJMjAxMy0wOC0wMiAxNjozODoyNi40NTAy OTIyMjEgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvbGFuZ3VhZ2UuaAky MDEzLTA4LTAyIDE2OjM4OjMyLjM2NDMwMDc0MyArMDIwMAogQEAgLTE3NSw3ICsxNzUsNyBAQCBz dHJ1Y3QgbGFuZ3VhZ2VfZGVmbgogIAkJCSAgc3RydWN0IHVpX2ZpbGUgKiBzdHJlYW0pOwogIApA QCAtMjUxNiwxMCArMjUxNiwxMCBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvbGFu Z3VhZ2UuaAogIAkJCSAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCiAgCQkJ ICBjb25zdCBzdHJ1Y3QgdmFsdWUgKnZhbCwKICAJCQkgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmlu dF9vcHRpb25zICpvcHRpb25zKTsKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9tMi1s YW5nLmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvbTItbGFuZy5jCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9tMi1sYW5nLmMJMjAxMy0w MS0wNyAxNzo0MDozNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dk Yi9tMi1sYW5nLmMJMjAxMy0wMi0xNSAyMjo0MDoxOC41MzQ2MjIwNzkgKzAxMDAKKy0tLSBnZGIt Ny42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9tMi1sYW5nLmMJMjAxMy0wOC0wMiAxNjozODoy Ni40NTAyOTIyMjEgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvbTItbGFu Zy5jCTIwMTMtMDgtMDIgMTY6Mzg6MzIuMzY0MzAwNzQzICswMjAwCiBAQCAtMTAzLDEwICsxMDMs MTAgQEAgbTJfcHJpbnRjaGFyIChpbnQgYywgc3RydWN0IHR5cGUgKnR5cGUsCiAgCiAgc3RhdGlj IHZvaWQKQEAgLTI1NTQsMTAgKzI1NTQsMTAgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUv Z2RiL20yLWxhbmcuYwogIAkgIGkgPSByZXAxIC0gMTsKICAJICB0aGluZ3NfcHJpbnRlZCArPSBv cHRpb25zLT5yZXBlYXRfY291bnRfdGhyZXNob2xkOwogIAkgIG5lZWRfY29tbWEgPSAxOwotSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL20yLWxhbmcuaAorSW5kZXg6IGdkYi03LjYuNTAu MjAxMzA3MzEtY3ZzL2dkYi9tMi1sYW5nLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIw MTMwMjE1Lm9yaWcvZ2RiL20yLWxhbmcuaAkyMDEzLTAxLTAxIDA3OjMyOjQ2LjAwMDAwMDAwMCAr MDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL20yLWxhbmcuaAkyMDEzLTAyLTE1IDIy OjQwOjE4LjUzNDYyMjA3OSArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcv Z2RiL20yLWxhbmcuaAkyMDEzLTA4LTAyIDE2OjM4OjI2LjQ1MTI5MjIyMiArMDIwMAorKysrIGdk Yi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9tMi1sYW5nLmgJMjAxMy0wOC0wMiAxNjozODozMi4z NjQzMDA3NDMgKzAyMDAKIEBAIC0zMyw3ICszMyw3IEBAIGV4dGVybiB2b2lkIG0yX3ByaW50X3R5 cGVkZWYgKHN0cnVjdCB0eXAKICBleHRlcm4gaW50IG0yX2lzX2xvbmdfc2V0IChzdHJ1Y3QgdHlw ZSAqdHlwZSk7CiAgZXh0ZXJuIGludCBtMl9pc191bmJvdW5kZWRfYXJyYXkgKHN0cnVjdCB0eXBl ICp0eXBlKTsKQEAgLTI1NjcsMTAgKzI1NjcsMTAgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAy MTUvZ2RiL20yLWxhbmcuaAogIAkJCSAgc3RydWN0IHVpX2ZpbGUgKiwgaW50LAogIAkJCSAgY29u c3Qgc3RydWN0IHZhbHVlICosCiAgCQkJICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9u cyAqKTsKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9tMi10eXBlcHJpbnQuYworSW5k ZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9tMi10eXBlcHJpbnQuYwogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvbTItdHlwZXByaW50LmMJMjAxMy0w MS0zMSAxOTozNzozNy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dk Yi9tMi10eXBlcHJpbnQuYwkyMDEzLTAyLTE1IDIyOjQwOjE4LjUzNDYyMjA3OSArMDEwMAorLS0t IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL20yLXR5cGVwcmludC5jCTIwMTMtMDgt MDIgMTY6Mzg6MjYuNDUxMjkyMjIyICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMv Z2RiL20yLXR5cGVwcmludC5jCTIwMTMtMDgtMDIgMTY6Mzg6MzIuMzY0MzAwNzQzICswMjAwCiBA QCAtMjMzLDkgKzIzMywxMiBAQCBzdGF0aWMgdm9pZCBtMl9hcnJheSAoc3RydWN0IHR5cGUgKnR5 cGUsCiAgCSAgbTJfcHJpbnRfYm91bmRzIChUWVBFX0lOREVYX1RZUEUgKHR5cGUpLCBzdHJlYW0s IHNob3csIC0xLCAxKTsKICAJfQpAQCAtMjU4NywxMCArMjU4NywxMCBAQCBJbmRleDogZ2RiLTcu NS41MC4yMDEzMDIxNS9nZGIvbTItdHlwZXByaW50LmMKICAgICAgfQogICAgZnByaW50Zl9maWx0 ZXJlZCAoc3RyZWFtLCAiXSBPRiAiKTsKICAgIG0yX3ByaW50X3R5cGUgKFRZUEVfVEFSR0VUX1RZ UEUgKHR5cGUpLCAiIiwgc3RyZWFtLCBzaG93LCBsZXZlbCwgZmxhZ3MpOwotSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAyMTUvZ2RiL20yLXZhbHByaW50LmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMw NzMxLWN2cy9nZGIvbTItdmFscHJpbnQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAx MzAyMTUub3JpZy9nZGIvbTItdmFscHJpbnQuYwkyMDEzLTAxLTAxIDA3OjMyOjQ2LjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL20yLXZhbHByaW50LmMJMjAxMy0w Mi0xNSAyMjo0MDoxOC41MzQ2MjIwNzkgKzAxMDAKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2 cy5vcmlnL2dkYi9tMi12YWxwcmludC5jCTIwMTMtMDgtMDIgMTY6Mzg6MjYuNDUxMjkyMjIyICsw MjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL20yLXZhbHByaW50LmMJMjAxMy0w OC0wMiAxNjozODozMi4zNjUzMDA3NDUgKzAyMDAKIEBAIC0zNSw3ICszNSw3IEBAIHN0YXRpYyBp bnQgcHJpbnRfdW5wYWNrZWRfcG9pbnRlciAoc3RydWMKICAJCQkJICAgc3RydWN0IHVpX2ZpbGUg KnN0cmVhbSk7CiAgc3RhdGljIHZvaWQKQEAgLTI2NTYsMTAgKzI2NTYsMTAgQEAgSW5kZXg6IGdk Yi03LjUuNTAuMjAxMzAyMTUvZ2RiL20yLXZhbHByaW50LmMKICAKICAJCSAgLyogTG9vayBmb3Ig YSBOVUxMIGNoYXIuICAqLwogIAkJICBmb3IgKHRlbXBfbGVuID0gMDsKLUluZGV4OiBnZGItNy41 LjUwLjIwMTMwMjE1L2dkYi9tZW1yYW5nZS5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1j dnMvZ2RiL21lbXJhbmdlLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMjE1Lm9y aWcvZ2RiL21lbXJhbmdlLmMJMjAxMy0wMS0wMSAwNzozMjo0Ny4wMDAwMDAwMDAgKzAxMDAKLSsr KyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9tZW1yYW5nZS5jCTIwMTMtMDItMTUgMjI6NDA6MTgu NTM0NjIyMDc5ICswMTAwCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvbWVt cmFuZ2UuYwkyMDEzLTA4LTAyIDE2OjM4OjI2LjQ1MTI5MjIyMiArMDIwMAorKysrIGdkYi03LjYu NTAuMjAxMzA3MzEtY3ZzL2dkYi9tZW1yYW5nZS5jCTIwMTMtMDgtMDIgMTY6Mzg6MzIuMzY1MzAw NzQ1ICswMjAwCiBAQCAtMjEsOCArMjEsOCBAQAogICNpbmNsdWRlICJtZW1yYW5nZS5oIgogIApA QCAtMjY3MSwxMCArMjY3MSwxMCBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvbWVt cmFuZ2UuYwogIHsKICAgIFVMT05HRVNUIGgsIGw7CiAgCi1JbmRleDogZ2RiLTcuNS41MC4yMDEz MDIxNS9nZGIvbWVtcmFuZ2UuaAorSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9t ZW1yYW5nZS5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9t ZW1yYW5nZS5oCTIwMTMtMDEtMDEgMDc6MzI6NDcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu NS41MC4yMDEzMDIxNS9nZGIvbWVtcmFuZ2UuaAkyMDEzLTAyLTE1IDIyOjQwOjE4LjUzNTYyMjA4 MSArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL21lbXJhbmdlLmgJ MjAxMy0wOC0wMiAxNjozODoyNi40NTIyOTIyMjQgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMw NzMxLWN2cy9nZGIvbWVtcmFuZ2UuaAkyMDEzLTA4LTAyIDE2OjM4OjMyLjM2NTMwMDc0NSArMDIw MAogQEAgLTMwLDcgKzMwLDcgQEAgc3RydWN0IG1lbV9yYW5nZQogICAgQ09SRV9BRERSIHN0YXJ0 OwogIApAQCAtMjY5NSwxMSArMjY5NSwxMSBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9n ZGIvbWVtcmFuZ2UuaAogIAogIC8qIFNvcnQgcmFuZ2VzIGJ5IHN0YXJ0IGFkZHJlc3MsIHRoZW4g Y29hbGVzY2UgY29udGlndW91cyBvcgogICAgIG92ZXJsYXBwaW5nIHJhbmdlcy4gICovCi1JbmRl eDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvbWlwcy1saW51eC1uYXQuYworSW5kZXg6IGdkYi03 LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9taXBzLWxpbnV4LW5hdC5jCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9taXBzLWxpbnV4LW5hdC5jCTIwMTMtMDEtMDEg MDc6MzI6NDcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvbWlw cy1saW51eC1uYXQuYwkyMDEzLTAyLTE1IDIyOjQwOjE4LjUzNTYyMjA4MSArMDEwMAotQEAgLTkz OCw3ICs5MzgsNyBAQCB0cnlfb25lX3dhdGNoIChzdHJ1Y3QgcHRfd2F0Y2hfcmVncyAqcmVnCist LS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvbWlwcy1saW51eC1uYXQuYwkyMDEz LTA4LTAyIDE2OjM4OjI2LjQ1MjI5MjIyNCArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEt Y3ZzL2dkYi9taXBzLWxpbnV4LW5hdC5jCTIwMTMtMDgtMDIgMTY6Mzg6MzIuMzY1MzAwNzQ1ICsw MjAwCitAQCAtNTg4LDcgKzU4OCw3IEBAIG1pcHNfbGludXhfc3RvcHBlZF9kYXRhX2FkZHJlc3Mg KHN0cnVjdAogICAgIHRoZSBzcGVjaWZpZWQgcmVnaW9uIGNhbiBiZSBjb3ZlcmVkIGJ5IHRoZSB3 YXRjaCByZWdpc3RlcnMuICAqLwogIAogIHN0YXRpYyBpbnQKQEAgLTI3MDgsMTAgKzI3MDgsMTAg QEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL21pcHMtbGludXgtbmF0LmMKICB7CiAg ICBzdHJ1Y3QgcHRfd2F0Y2hfcmVncyBkdW1teV9yZWdzOwogICAgaW50IGk7Ci1JbmRleDogZ2Ri LTcuNS41MC4yMDEzMDIxNS9nZGIvb3BlbmNsLWxhbmcuYworSW5kZXg6IGdkYi03LjYuNTAuMjAx MzA3MzEtY3ZzL2dkYi9vcGVuY2wtbGFuZy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4y MDEzMDIxNS5vcmlnL2dkYi9vcGVuY2wtbGFuZy5jCTIwMTMtMDEtMjUgMTg6MTY6NDAuMDAwMDAw MDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvb3BlbmNsLWxhbmcuYwkyMDEz LTAyLTE1IDIyOjQwOjE4LjUzNTYyMjA4MSArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEt Y3ZzLm9yaWcvZ2RiL29wZW5jbC1sYW5nLmMJMjAxMy0wOC0wMiAxNjozODoyNi40NTIyOTIyMjQg KzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvb3BlbmNsLWxhbmcuYwkyMDEz LTA4LTAyIDE2OjM4OjMyLjM2NTMwMDc0NSArMDIwMAogQEAgLTgwLDExICs4MCwxMSBAQCBidWls dGluX29wZW5jbF90eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiCiAgCiAgc3RhdGljIHN0cnVjdCB0 eXBlICoKQEAgLTI4MzgsMTAgKzI4MzgsMTAgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUv Z2RiL29wZW5jbC1sYW5nLmMKICAKICAgICAgICBpZiAoIXZhbHVlX2JpdHNfc3ludGhldGljX3Bv aW50ZXIgKGMtPnZhbCwKICAJCQkJCSBjLT5pbmRpY2VzW2ldICogZWxzaXplICsgY29tcF9vZmZz ZXQsCi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvcC1sYW5nLmMKK0luZGV4OiBnZGIt Ny42LjUwLjIwMTMwNzMxLWN2cy9nZGIvcC1sYW5nLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41 LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL3AtbGFuZy5jCTIwMTMtMDEtMDcgMTc6NDA6MzYuMDAwMDAw MDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvcC1sYW5nLmMJMjAxMy0wMi0x NSAyMjo0MDoxOC41MzU2MjIwODEgKzAxMDAKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5v cmlnL2dkYi9wLWxhbmcuYwkyMDEzLTA4LTAyIDE2OjM4OjI2LjQ1MzI5MjIyNSArMDIwMAorKysr IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9wLWxhbmcuYwkyMDEzLTA4LTAyIDE2OjM4OjMy LjM2NjMwMDc0NiArMDIwMAogQEAgLTk1LDggKzk1LDggQEAgcGFzY2FsX21haW5fbmFtZSAodm9p ZCkKICAgICBhcmUgbm90IG11bHRpcGxlIG9mIFRBUkdFVF9DSEFSX0JJVCB0aGVuIHRoZSByZXN1 bHRzIGFyZSB3cm9uZwogICAgIGJ1dCB0aGlzIGRvZXMgbm90IGhhcHBlbiBmb3IgRnJlZSBQYXNj YWwgbm9yIGZvciBHUEMuICAqLwpAQCAtMjg4OSwxMCArMjg4OSwxMCBAQCBJbmRleDogZ2RiLTcu NS41MC4yMDEzMDIxNS9nZGIvcC1sYW5nLmMKICAJICBpID0gcmVwMSAtIDE7CiAgCSAgdGhpbmdz X3ByaW50ZWQgKz0gb3B0aW9ucy0+cmVwZWF0X2NvdW50X3RocmVzaG9sZDsKICAJICBuZWVkX2Nv bW1hID0gMTsKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9wLWxhbmcuaAorSW5kZXg6 IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9wLWxhbmcuaAogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvcC1sYW5nLmgJMjAxMy0wMS0wMSAwNzozMjo0Ny4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9wLWxhbmcuaAkyMDEz LTAyLTE1IDIyOjQwOjE4LjUzNTYyMjA4MSArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEt Y3ZzLm9yaWcvZ2RiL3AtbGFuZy5oCTIwMTMtMDgtMDIgMTY6Mzg6MjYuNDUzMjkyMjI1ICswMjAw CisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3AtbGFuZy5oCTIwMTMtMDgtMDIgMTY6 Mzg6MzIuMzY2MzAwNzQ2ICswMjAwCiBAQCAtMzUsNyArMzUsNyBAQCBleHRlcm4gdm9pZCBwYXNj YWxfcHJpbnRfdHlwZSAoc3RydWN0IHR5CiAgZXh0ZXJuIHZvaWQgcGFzY2FsX3ByaW50X3R5cGVk ZWYgKHN0cnVjdCB0eXBlICosIHN0cnVjdCBzeW1ib2wgKiwKICAJCQkJICBzdHJ1Y3QgdWlfZmls ZSAqKTsKQEAgLTI5MjcsMTAgKzI5MjcsMTAgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUv Z2RiL3AtbGFuZy5oCiAgCQkJCQkgICAgICBDT1JFX0FERFIsIHN0cnVjdCB1aV9maWxlICosCiAg CQkJCQkgICAgICBpbnQsCiAgCQkJCQkgICAgICBjb25zdCBzdHJ1Y3QgdmFsdWUgKiwKLUluZGV4 OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9wLXZhbHByaW50LmMKK0luZGV4OiBnZGItNy42LjUw LjIwMTMwNzMxLWN2cy9nZGIvcC12YWxwcmludC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41 MC4yMDEzMDIxNS5vcmlnL2dkYi9wLXZhbHByaW50LmMJMjAxMy0wMi0xNSAyMjozMTozNy4wMDAw MDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9wLXZhbHByaW50LmMJMjAx My0wMi0xNSAyMjo0MDoxOC41MzY2MjIwODQgKzAxMDAKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMx LWN2cy5vcmlnL2dkYi9wLXZhbHByaW50LmMJMjAxMy0wOC0wMiAxNjozODoyNi40NTMyOTIyMjUg KzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvcC12YWxwcmludC5jCTIwMTMt MDgtMDIgMTY6Mzg6MzIuMzY2MzAwNzQ2ICswMjAwCiBAQCAtNTgsNyArNTgsNyBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGdlbmVyaWNfdmFsX3ByaW50X2RlCiAgCiAgdm9pZApAQCAtMjk1MSw3ICsy OTUxLDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3AtdmFscHJpbnQuYwogICAg c3RydWN0IHR5cGUgKmNoYXJfdHlwZTsKICAgIENPUkVfQUREUiBhZGRyOwogICAgaW50IHdhbnRf c3BhY2UgPSAwOwotQEAgLTQ5Myw3ICs0OTMsNyBAQCBzdGF0aWMgdm9pZCBwYXNjYWxfb2JqZWN0 X3ByaW50X3N0YXRpY19mCitAQCAtNDk0LDcgKzQ5NCw3IEBAIHN0YXRpYyB2b2lkIHBhc2NhbF9v YmplY3RfcHJpbnRfc3RhdGljX2YKICAJCQkJCSAgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmlu dF9vcHRpb25zICopOwogIAogIHN0YXRpYyB2b2lkIHBhc2NhbF9vYmplY3RfcHJpbnRfdmFsdWUg KHN0cnVjdCB0eXBlICosIGNvbnN0IGdkYl9ieXRlICosCkBAIC0yOTYwLDcgKzI5NjAsNyBAQCBJ bmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvcC12YWxwcmludC5jCiAgCQkJCSAgICAgICBD T1JFX0FERFIsIHN0cnVjdCB1aV9maWxlICosIGludCwKICAJCQkJICAgICAgIGNvbnN0IHN0cnVj dCB2YWx1ZSAqLAogIAkJCQkgICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMg KiwKLUBAIC01NTIsNyArNTUyLDcgQEAgcGFzY2FsX29iamVjdF9pc192dGJsX21lbWJlciAoc3Ry dWN0IHR5cAorQEAgLTU1Myw3ICs1NTMsNyBAQCBwYXNjYWxfb2JqZWN0X2lzX3Z0YmxfbWVtYmVy IChzdHJ1Y3QgdHlwCiAgCiAgdm9pZAogIHBhc2NhbF9vYmplY3RfcHJpbnRfdmFsdWVfZmllbGRz IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCkBAIC0yOTY5LDcg KzI5NjksNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvcC12YWxwcmludC5jCiAg CQkJCSAgQ09SRV9BRERSIGFkZHJlc3MsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCiAgCQkJCSAg aW50IHJlY3Vyc2UsCiAgCQkJCSAgY29uc3Qgc3RydWN0IHZhbHVlICp2YWwsCi1AQCAtNzI4LDcg KzcyOCw3IEBAIHBhc2NhbF9vYmplY3RfcHJpbnRfdmFsdWVfZmllbGRzIChzdHJ1Y3QKK0BAIC03 MjksNyArNzI5LDcgQEAgcGFzY2FsX29iamVjdF9wcmludF92YWx1ZV9maWVsZHMgKHN0cnVjdAog IAogIHN0YXRpYyB2b2lkCiAgcGFzY2FsX29iamVjdF9wcmludF92YWx1ZSAoc3RydWN0IHR5cGUg KnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLApAQCAtMjk3OCw3ICsyOTc4LDcgQEAgSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3AtdmFscHJpbnQuYwogIAkJCSAgIENPUkVfQURE UiBhZGRyZXNzLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAogIAkJCSAgIGludCByZWN1cnNlLAog IAkJCSAgIGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFsLAotQEAgLTc1MSwxMSArNzUxLDExIEBAIHBh c2NhbF9vYmplY3RfcHJpbnRfdmFsdWUgKHN0cnVjdCB0eXBlICoKK0BAIC03NTIsMTEgKzc1Miwx MSBAQCBwYXNjYWxfb2JqZWN0X3ByaW50X3ZhbHVlIChzdHJ1Y3QgdHlwZSAqCiAgCiAgICBmb3Ig KGkgPSAwOyBpIDwgbl9iYXNlY2xhc3NlczsgaSsrKQogICAgICB7CkBAIC0yOTkyLDExICsyOTky LDExIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9wLXZhbHByaW50LmMKICAgICAg ICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBleDsKICAgICAgICBpbnQgc2tpcCA9IDA7 CiAgCi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvcHBjLWxpbnV4LW5hdC5jCitJbmRl eDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3BwYy1saW51eC1uYXQuYwogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvcHBjLWxpbnV4LW5hdC5jCTIwMTMt MDEtMDEgMDc6MzI6NDkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9n ZGIvcHBjLWxpbnV4LW5hdC5jCTIwMTMtMDItMTUgMjI6NDA6MTguNTM2NjIyMDg0ICswMTAwCi1A QCAtMTQ5Miw3ICsxNDkyLDcgQEAgcHBjX2xpbnV4X2Nhbl91c2VfaHdfYnJlYWtwb2ludCAoaW50 IHR5cAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL3BwYy1saW51eC1uYXQu YwkyMDEzLTA4LTAyIDE2OjM4OjI2LjQ1NDI5MjIyNyArMDIwMAorKysrIGdkYi03LjYuNTAuMjAx MzA3MzEtY3ZzL2dkYi9wcGMtbGludXgtbmF0LmMJMjAxMy0wOC0wMiAxNjozODozMi4zNjYzMDA3 NDYgKzAyMDAKK0BAIC0xNDk2LDcgKzE0OTYsNyBAQCBwcGNfbGludXhfY2FuX3VzZV9od19icmVh a3BvaW50IChpbnQgdHlwCiAgfQogIAogIHN0YXRpYyBpbnQKQEAgLTMwMDUsMTAgKzMwMDUsMTAg QEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3BwYy1saW51eC1uYXQuYwogIHsKICAg IC8qIEhhbmRsZSBzdWItOC1ieXRlIHF1YW50aXRpZXMuICAqLwogICAgaWYgKGxlbiA8PSAwKQot SW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3ByaW50Y21kLmMKK0luZGV4OiBnZGItNy42 LjUwLjIwMTMwNzMxLWN2cy9nZGIvcHJpbnRjbWQuYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUu NTAuMjAxMzAyMTUub3JpZy9nZGIvcHJpbnRjbWQuYwkyMDEzLTAyLTE1IDIyOjM0OjQ0LjAwMDAw MDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3ByaW50Y21kLmMJMjAxMy0w Mi0xNSAyMjo0MDoxOC41Mzc2MjIwODYgKzAxMDAKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2 cy5vcmlnL2dkYi9wcmludGNtZC5jCTIwMTMtMDgtMDIgMTY6Mzg6MjYuNDU0MjkyMjI3ICswMjAw CisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3ByaW50Y21kLmMJMjAxMy0wOC0wMiAx NjozODozMi4zNjczMDA3NDggKzAyMDAKIEBAIC0yOTAsNyArMjkwLDcgQEAgcHJpbnRfZm9ybWF0 dGVkIChzdHJ1Y3QgdmFsdWUgKnZhbCwgaW50CiAgCQkgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkK ICB7CkBAIC0zMDI3LDEwICszMDI3LDEwIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dk Yi9wcmludGNtZC5jCiAgICBlbnVtIGJmZF9lbmRpYW4gYnl0ZV9vcmRlciA9IGdkYmFyY2hfYnl0 ZV9vcmRlciAoZ2RiYXJjaCk7CiAgCiAgICAvKiBTdHJpbmcgcHJpbnRpbmcgc2hvdWxkIGdvIHRo cm91Z2ggdmFsX3ByaW50X3NjYWxhcl9mb3JtYXR0ZWQuICAqLwotSW5kZXg6IGdkYi03LjUuNTAu MjAxMzAyMTUvZ2RiL3Byb2Nmcy5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2Ri L3Byb2Nmcy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9w cm9jZnMuYwkyMDEzLTAxLTAxIDA3OjMyOjQ5LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUu NTAuMjAxMzAyMTUvZ2RiL3Byb2Nmcy5jCTIwMTMtMDItMTUgMjI6NDA6MTguNTM3NjIyMDg2ICsw MTAwCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvcHJvY2ZzLmMJMjAxMy0w OC0wMiAxNjozODoyNi40NTUyOTIyMjggKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2 cy9nZGIvcHJvY2ZzLmMJMjAxMy0wOC0wMiAxNjozODozMi4zNjgzMDA3NDkgKzAyMDAKIEBAIC00 OTI2LDcgKzQ5MjYsNyBAQCBwcm9jZnNfcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRy CiAgfQogIApAQCAtMzA0MCwxMSArMzA0MCwxMSBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIx NS9nZGIvcHJvY2ZzLmMKICB7CiAgICAvKiBUaGUgbWFuIHBhZ2UgZm9yIHByb2MoNCkgb24gU29s YXJpcyAyLjYgYW5kIHVwIHNheXMgdGhhdCB0aGUKICAgICAgIHN5c3RlbSBjYW4gc3VwcG9ydCAi dGhvdXNhbmRzIiBvZiBoYXJkd2FyZSB3YXRjaHBvaW50cywgYnV0IGdpdmVzCi1JbmRleDogZ2Ri LTcuNS41MC4yMDEzMDIxNS9nZGIvcHl0aG9uL3B5LXByZXR0eXByaW50LmMKK0luZGV4OiBnZGIt Ny42LjUwLjIwMTMwNzMxLWN2cy9nZGIvcHl0aG9uL3B5LXByZXR0eXByaW50LmMKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL3B5dGhvbi9weS1wcmV0dHlwcmlu dC5jCTIwMTMtMDEtMDEgMDc6MzM6MDEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4y MDEzMDIxNS9nZGIvcHl0aG9uL3B5LXByZXR0eXByaW50LmMJMjAxMy0wMi0xNSAyMjo0MDoxOC41 Mzg2MjIwODggKzAxMDAKLUBAIC02ODksNyArNjg5LDcgQEAgcHJpbnRfY2hpbGRyZW4gKFB5T2Jq ZWN0ICpwcmludGVyLCBjb25zdAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2Ri L3B5dGhvbi9weS1wcmV0dHlwcmludC5jCTIwMTMtMDgtMDIgMTY6Mzg6MjYuNDU2MjkyMjMwICsw MjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3B5dGhvbi9weS1wcmV0dHlwcmlu dC5jCTIwMTMtMDgtMDIgMTY6Mzg6MzIuMzY4MzAwNzQ5ICswMjAwCitAQCAtNjg4LDcgKzY4OCw3 IEBAIHByaW50X2NoaWxkcmVuIChQeU9iamVjdCAqcHJpbnRlciwgY29uc3QKICAKICBpbnQKICBh cHBseV92YWxfcHJldHR5X3ByaW50ZXIgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0 ZSAqdmFsYWRkciwKQEAgLTMwNTMsNyArMzA1Myw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMw MjE1L2dkYi9weXRob24vcHktcHJldHR5cHJpbnQuYwogIAkJCSAgc3RydWN0IHVpX2ZpbGUgKnN0 cmVhbSwgaW50IHJlY3Vyc2UsCiAgCQkJICBjb25zdCBzdHJ1Y3QgdmFsdWUgKnZhbCwKICAJCQkg IGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zLAotQEAgLTgzNyw3ICs4 MzcsNyBAQCBnZGJweV9kZWZhdWx0X3Zpc3VhbGl6ZXIgKFB5T2JqZWN0ICpzZWxmCitAQCAtODQz LDcgKzg0Myw3IEBAIGdkYnB5X2RlZmF1bHRfdmlzdWFsaXplciAoUHlPYmplY3QgKnNlbGYKICAK ICBpbnQKICBhcHBseV92YWxfcHJldHR5X3ByaW50ZXIgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25z dCBnZGJfYnl0ZSAqdmFsYWRkciwKQEAgLTMwNjIsMTEgKzMwNjIsMTEgQEAgSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAyMTUvZ2RiL3B5dGhvbi9weS1wcmV0dHlwcmludC5jCiAgCQkJICBzdHJ1Y3Qg dWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKICAJCQkgIGNvbnN0IHN0cnVjdCB2YWx1ZSAq dmFsLAogIAkJCSAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMsCi1J bmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvcHl0aG9uL3B5dGhvbi5oCitJbmRleDogZ2Ri LTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3B5dGhvbi9weXRob24uaAogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvcHl0aG9uL3B5dGhvbi5oCTIwMTMtMDItMTUg MjI6MzE6MzcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvcHl0 aG9uL3B5dGhvbi5oCTIwMTMtMDItMTUgMjI6NDA6MTguNTM4NjIyMDg4ICswMTAwCi1AQCAtMzcs NyArMzcsNyBAQCB2b2lkIHNvdXJjZV9weXRob25fc2NyaXB0IChGSUxFICpmaWxlLCBjCistLS0g Z2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvcHl0aG9uL3B5dGhvbi5oCTIwMTMtMDgt MDIgMTY6Mzg6MjYuNDU2MjkyMjMwICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMv Z2RiL3B5dGhvbi9weXRob24uaAkyMDEzLTA4LTAyIDE2OjM4OjMyLjM2ODMwMDc0OSArMDIwMAor QEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBzb3VyY2VfcHl0aG9uX3NjcmlwdCAoRklMRSAqZmlsZSwg YwogIHZvaWQgcnVuX3B5dGhvbl9zY3JpcHQgKGludCBhcmdjLCBjaGFyICoqYXJndik7CiAgCiAg aW50IGFwcGx5X3ZhbF9wcmV0dHlfcHJpbnRlciAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdk Yl9ieXRlICp2YWxhZGRyLApAQCAtMzA3NSwxMCArMzA3NSwxMCBAQCBJbmRleDogZ2RiLTcuNS41 MC4yMDEzMDIxNS9nZGIvcHl0aG9uL3B5dGhvbi5oCiAgCQkJICAgICAgc3RydWN0IHVpX2ZpbGUg KnN0cmVhbSwgaW50IHJlY3Vyc2UsCiAgCQkJICAgICAgY29uc3Qgc3RydWN0IHZhbHVlICp2YWws CiAgCQkJICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMsCi1J bmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvcmVnY2FjaGUuYworSW5kZXg6IGdkYi03LjYu NTAuMjAxMzA3MzEtY3ZzL2dkYi9yZWdjYWNoZS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41 MC4yMDEzMDIxNS5vcmlnL2dkYi9yZWdjYWNoZS5jCTIwMTMtMDEtMzEgMTk6Mzc6MzcuMDAwMDAw MDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvcmVnY2FjaGUuYwkyMDEzLTAy LTE1IDIyOjQwOjE4LjUzODYyMjA4OCArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3Zz Lm9yaWcvZ2RiL3JlZ2NhY2hlLmMJMjAxMy0wOC0wMiAxNjozODoyNi40NTcyOTIyMzEgKzAyMDAK KysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvcmVnY2FjaGUuYwkyMDEzLTA4LTAyIDE2 OjM4OjMyLjM2ODMwMDc0OSArMDIwMAogQEAgLTg5OSw3ICs4OTksNyBAQCB0eXBlZGVmIHZvaWQg KHJlZ2NhY2hlX3dyaXRlX2Z0eXBlKSAoc3RyCiAgCiAgc3RhdGljIGVudW0gcmVnaXN0ZXJfc3Rh dHVzCkBAIC0zMTI0LDEwICszMTI0LDEwIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dk Yi9yZWdjYWNoZS5jCiAgewogICAgc3RydWN0IHJlZ2NhY2hlX2Rlc2NyICpkZXNjciA9IHJlZ2Nh Y2hlLT5kZXNjcjsKICAKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9yZWdjYWNoZS5o CitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3JlZ2NhY2hlLmgKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL3JlZ2NhY2hlLmgJMjAxMy0wMS0w MSAwNzozMjo0OS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9y ZWdjYWNoZS5oCTIwMTMtMDItMTUgMjI6NDA6MTguNTM4NjIyMDg4ICswMTAwCistLS0gZ2RiLTcu Ni41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvcmVnY2FjaGUuaAkyMDEzLTA4LTAyIDE2OjM4OjI2 LjQ1NzI5MjIzMSArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9yZWdjYWNo ZS5oCTIwMTMtMDgtMDIgMTY6Mzg6MzIuMzY4MzAwNzQ5ICswMjAwCiBAQCAtODksOSArODksOSBA QCBleHRlcm4gdm9pZCByZWdjYWNoZV9yYXdfd3JpdGVfdW5zaWduZWQKICAKICBleHRlcm4gZW51 bSByZWdpc3Rlcl9zdGF0dXMKQEAgLTMxNTUsMTEgKzMxNTUsMTEgQEAgSW5kZXg6IGdkYi03LjUu NTAuMjAxMzAyMTUvZ2RiL3JlZ2NhY2hlLmgKICAKICAvKiBTcGVjaWFsIHJvdXRpbmVzIHRvIHJl YWQvd3JpdGUgdGhlIFBDLiAgKi8KICAKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9y ZW1vdGUuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9yZW1vdGUuYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvcmVtb3RlLmMJMjAxMy0w Mi0xNSAyMjozNDo0NC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dk Yi9yZW1vdGUuYwkyMDEzLTAyLTE1IDIyOjQwOjE4LjU0MDYyMjA5MiArMDEwMAotQEAgLTgyMzYs NyArODIzNiw3IEBAIGludCByZW1vdGVfaHdfd2F0Y2hwb2ludF9sZW5ndGhfbGltaXQgPQorLS0t IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL3JlbW90ZS5jCTIwMTMtMDgtMDIgMTY6 Mzg6MjYuNDU5MjkyMjM0ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3Jl bW90ZS5jCTIwMTMtMDgtMDIgMTY6Mzg6MzIuMzcwMzAwNzUyICswMjAwCitAQCAtODM2OCw3ICs4 MzY4LDcgQEAgaW50IHJlbW90ZV9od193YXRjaHBvaW50X2xlbmd0aF9saW1pdCA9CiAgaW50IHJl bW90ZV9od19icmVha3BvaW50X2xpbWl0ID0gLTE7CiAgCiAgc3RhdGljIGludApAQCAtMzE2OCwx MCArMzE2OCwxMCBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvcmVtb3RlLmMKICB7 CiAgICBpZiAocmVtb3RlX2h3X3dhdGNocG9pbnRfbGVuZ3RoX2xpbWl0ID09IDApCiAgICAgIHJl dHVybiAwOwotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3MzOTAtbmF0LmMKK0luZGV4 OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvczM5MC1uYXQuYwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvczM5MC1uYXQuYwkyMDEzLTAxLTAxIDA3OjMy OjUwLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3MzOTAtbmF0 LmMJMjAxMy0wMi0xNSAyMjo0MDoxOC41NDA2MjIwOTIgKzAxMDAKKy0tLSBnZGItNy42LjUwLjIw MTMwNzMxLWN2cy5vcmlnL2dkYi9zMzkwLW5hdC5jCTIwMTMtMDgtMDIgMTY6Mzg6MjYuNDU5Mjky MjM0ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3MzOTAtbmF0LmMJMjAx My0wOC0wMiAxNjozODozMi4zNzAzMDA3NTIgKzAyMDAKIEBAIC01NzEsNyArNTcxLDcgQEAgczM5 MF9jYW5fdXNlX2h3X2JyZWFrcG9pbnQgKGludCB0eXBlLCBpbgogIH0KICAKQEAgLTMxODEsMTAg KzMxODEsMTAgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3MzOTAtbmF0LmMKICB7 CiAgICByZXR1cm4gMTsKICB9Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvc3B1LW11 bHRpYXJjaC5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3NwdS1tdWx0aWFy Y2guYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvc3B1LW11 bHRpYXJjaC5jCTIwMTMtMDEtMDEgMDc6MzI6NTEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu NS41MC4yMDEzMDIxNS9nZGIvc3B1LW11bHRpYXJjaC5jCTIwMTMtMDItMTUgMjI6NDA6MTguNTQw NjIyMDkyICswMTAwCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvc3B1LW11 bHRpYXJjaC5jCTIwMTMtMDgtMDIgMTY6Mzg6MjYuNDU5MjkyMjM0ICswMjAwCisrKysgZ2RiLTcu Ni41MC4yMDEzMDczMS1jdnMvZ2RiL3NwdS1tdWx0aWFyY2guYwkyMDEzLTA4LTAyIDE2OjM4OjMy LjM3MDMwMDc1MiArMDIwMAogQEAgLTExOCw3ICsxMTgsNyBAQCBzcHVfdGhyZWFkX2FyY2hpdGVj dHVyZSAoc3RydWN0IHRhcmdldF9vCiAgCiAgLyogT3ZlcnJpZGUgdGhlIHRvX3JlZ2lvbl9va19m b3JfaHdfd2F0Y2hwb2ludCByb3V0aW5lLiAgKi8KQEAgLTMxOTQsMTEgKzMxOTQsMTEgQEAgSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3NwdS1tdWx0aWFyY2guYwogIHsKICAgIHN0cnVj dCB0YXJnZXRfb3BzICpvcHNfYmVuZWF0aCA9IGZpbmRfdGFyZ2V0X2JlbmVhdGggKCZzcHVfb3Bz KTsKICAgIHdoaWxlIChvcHNfYmVuZWF0aCAmJiAhb3BzX2JlbmVhdGgtPnRvX3JlZ2lvbl9va19m b3JfaHdfd2F0Y2hwb2ludCkKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9zdGFjay5j CitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3N0YWNrLmMKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy41LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL3N0YWNrLmMJMjAxMy0wMi0xNSAyMjoz MTozNy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9zdGFjay5j CTIwMTMtMDItMTUgMjI6NDA6MTguNTQwNjIyMDkyICswMTAwCi1AQCAtMTczLDcgKzE3Myw3IEBA IHByaW50X3N0YWNrX2ZyYW1lIChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnIKKy0tLSBnZGItNy42LjUw LjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9zdGFjay5jCTIwMTMtMDgtMDIgMTY6Mzg6MjYuNDYwMjky MjM2ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3N0YWNrLmMJMjAxMy0w OC0wMiAxNjozODozMi4zNzEzMDA3NTQgKzAyMDAKK0BAIC0xNzgsNyArMTc4LDcgQEAgcHJpbnRf c3RhY2tfZnJhbWUgKHN0cnVjdCBmcmFtZV9pbmZvICpmcgogICAgIGFyZ3VtZW50IChub3QganVz dCB0aGUgZmlyc3QgbmFtZWxlc3MgYXJndW1lbnQpLiAgKi8KICAKICBzdGF0aWMgdm9pZApAQCAt MzIwNyw3ICszMjA3LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3N0YWNrLmMK ICAJCQkgICBpbnQgZmlyc3QsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCiAgewogICAgc3RydWN0 IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfZnJhbWVfYXJjaCAoZnJhbWUpOwotQEAgLTQ5Nyw3ICs0 OTcsNyBAQCBwcmludF9mcmFtZV9hcmdzIChzdHJ1Y3Qgc3ltYm9sICpmdW5jLCBzCitAQCAtNTAw LDcgKzUwMCw3IEBAIHByaW50X2ZyYW1lX2FyZ3MgKHN0cnVjdCBzeW1ib2wgKmZ1bmMsIHMKICAg IC8qIE9mZnNldCBvZiBuZXh0IHN0YWNrIGFyZ3VtZW50IGJleW9uZCB0aGUgb25lIHdlIGhhdmUg c2VlbiB0aGF0IGlzCiAgICAgICBhdCB0aGUgaGlnaGVzdCBvZmZzZXQsIG9yIC0xIGlmIHdlIGhh dmVuJ3QgY29tZSB0byBhIHN0YWNrCiAgICAgICBhcmd1bWVudCB5ZXQuICAqLwpAQCAtMzIxNiw3 ICszMjE2LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3N0YWNrLmMKICAgIC8q IE51bWJlciBvZiBpbnRzIG9mIGFyZ3VtZW50cyB0aGF0IHdlIGhhdmUgcHJpbnRlZCBzbyBmYXIu ICAqLwogICAgaW50IGFyZ3NfcHJpbnRlZCA9IDA7CiAgICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2No YWluOwotQEAgLTUzNSw4ICs1MzUsOCBAQCBwcmludF9mcmFtZV9hcmdzIChzdHJ1Y3Qgc3ltYm9s ICpmdW5jLCBzCitAQCAtNTM4LDggKzUzOCw4IEBAIHByaW50X2ZyYW1lX2FyZ3MgKHN0cnVjdCBz eW1ib2wgKmZ1bmMsIHMKICAJICAgIGNhc2UgTE9DX0FSRzoKICAJICAgIGNhc2UgTE9DX1JFRl9B Ukc6CiAgCSAgICAgIHsKQEAgLTMyMjcsNyArMzIyNyw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIw MTMwMjE1L2dkYi9zdGFjay5jCiAgCiAgCQkvKiBDb21wdXRlIGFkZHJlc3Mgb2YgbmV4dCBhcmd1 bWVudCBieSBhZGRpbmcgdGhlIHNpemUgb2YKICAJCSAgIHRoaXMgYXJndW1lbnQgYW5kIHJvdW5k aW5nIHRvIGFuIGludCBib3VuZGFyeS4gICovCi1AQCAtNjcxLDcgKzY3MSw3IEBAIHByaW50X2Zy YW1lX2FyZ3MgKHN0cnVjdCBzeW1ib2wgKmZ1bmMsIHMKK0BAIC02NzQsNyArNjc0LDcgQEAgcHJp bnRfZnJhbWVfYXJncyAoc3RydWN0IHN5bWJvbCAqZnVuYywgcwogICAgICAgZW5vdWdoIGFib3V0 IHRoZSBzdGFjayB0byBmaW5kIHRoZW0uICAqLwogICAgaWYgKG51bSAhPSAtMSkKICAgICAgewpA QCAtMzIzNiwxMSArMzIzNiwxMSBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvc3Rh Y2suYwogIAogICAgICAgIGlmIChoaWdoZXN0X29mZnNldCA9PSAtMSkKICAJc3RhcnQgPSBnZGJh cmNoX2ZyYW1lX2FyZ3Nfc2tpcCAoZ2V0X2ZyYW1lX2FyY2ggKGZyYW1lKSk7Ci1JbmRleDogZ2Ri LTcuNS41MC4yMDEzMDIxNS9nZGIvc3ltbWlzYy5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDcz MS1jdnMvZ2RiL3N5bW1pc2MuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUu b3JpZy9nZGIvc3ltbWlzYy5jCTIwMTMtMDItMTUgMjI6MzQ6NDQuMDAwMDAwMDAwICswMTAwCi0r KysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvc3ltbWlzYy5jCTIwMTMtMDItMTUgMjI6NDA6MTgu NTQxNjIyMDk0ICswMTAwCi1AQCAtNTI3LDExICs1MjcsMTEgQEAgcHJpbnRfc3ltYm9sICh2b2lk ICphcmdzKQorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL3N5bW1pc2MuYwky MDEzLTA4LTAyIDE2OjM4OjI2LjQ2MDI5MjIzNiArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3 MzEtY3ZzL2dkYi9zeW1taXNjLmMJMjAxMy0wOC0wMiAxNjozODozMi4zNzEzMDA3NTQgKzAyMDAK K0BAIC01MzQsMTEgKzUzNCwxMSBAQCBwcmludF9zeW1ib2wgKHZvaWQgKmFyZ3MpCiAgCiAgCWNh c2UgTE9DX0NPTlNUX0JZVEVTOgogIAkgIHsKQEAgLTMyNTUsMTEgKzMyNTUsMTEgQEAgSW5kZXg6 IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3N5bW1pc2MuYwogIAkgICAgZm9yIChpID0gMDsgaSA8 IFRZUEVfTEVOR1RIICh0eXBlKTsgaSsrKQogIAkgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChvdXRm aWxlLCAiICUwMngiLAogIAkJCQkodW5zaWduZWQpIFNZTUJPTF9WQUxVRV9CWVRFUyAoc3ltYm9s KVtpXSk7Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdGFyZ2V0LmMKK0luZGV4OiBn ZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvdGFyZ2V0LmMKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny41LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL3RhcmdldC5jCTIwMTMtMDEtMzEgMTc6MzI6NDQuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdGFyZ2V0LmMJMjAxMy0w Mi0xNSAyMjo0MDoxOC41NDE2MjIwOTQgKzAxMDAKLUBAIC01MSw3ICs1MSw3IEBAIHN0YXRpYyB2 b2lkIGRlZmF1bHRfdGVybWluYWxfaW5mbyAoY2hhcgorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEt Y3ZzLm9yaWcvZ2RiL3RhcmdldC5jCTIwMTMtMDgtMDIgMTY6Mzg6MjYuNDYxMjkyMjM3ICswMjAw CisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3RhcmdldC5jCTIwMTMtMDgtMDIgMTY6 Mzg6MzIuMzcyMzAwNzU1ICswMjAwCitAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgdm9pZCBkZWZh dWx0X3Rlcm1pbmFsX2luZm8gKGNvbnN0CiAgc3RhdGljIGludCBkZWZhdWx0X3dhdGNocG9pbnRf YWRkcl93aXRoaW5fcmFuZ2UgKHN0cnVjdCB0YXJnZXRfb3BzICosCiAgCQkJCQkJIENPUkVfQURE UiwgQ09SRV9BRERSLCBpbnQpOwogIApAQCAtMzI3Nyw3ICszMjc3LDcgQEAgSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAyMTUvZ2RiL3RhcmdldC5jCiAgCiAgc3RhdGljIGludCBkZWJ1Z190b19jYW5f YWNjZWxfd2F0Y2hwb2ludF9jb25kaXRpb24gKENPUkVfQUREUiwgaW50LCBpbnQsCiAgCQkJCQkJ ICAgIHN0cnVjdCBleHByZXNzaW9uICopOwotQEAgLTM1NTAsNyArMzU1MCw3IEBAIHRhcmdldF9m aWxlaW9fcmVhZF9zdHJhbGxvYyAoY29uc3QgY2hhcgorQEAgLTM1ODYsNyArMzU4Niw3IEBAIHRh cmdldF9maWxlaW9fcmVhZF9zdHJhbGxvYyAoY29uc3QgY2hhcgogIAogIAogIHN0YXRpYyBpbnQK QEAgLTMyODYsNyArMzI4Niw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi90YXJn ZXQuYwogIHsKICAgIHJldHVybiAobGVuIDw9IGdkYmFyY2hfcHRyX2JpdCAodGFyZ2V0X2dkYmFy Y2ggKCkpIC8gVEFSR0VUX0NIQVJfQklUKTsKICB9Ci1AQCAtNDI1MSw3ICs0MjUxLDcgQEAgZGVi dWdfdG9fY2FuX3VzZV9od19icmVha3BvaW50IChpbnQgdHlwZQorQEAgLTQ1NDEsNyArNDU0MSw3 IEBAIGRlYnVnX3RvX2Nhbl91c2VfaHdfYnJlYWtwb2ludCAoaW50IHR5cGUKICB9CiAgCiAgc3Rh dGljIGludApAQCAtMzI5NSwxMSArMzI5NSwxMSBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIx NS9nZGIvdGFyZ2V0LmMKICB7CiAgICBDT1JFX0FERFIgcmV0dmFsOwogIAotSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAyMTUvZ2RiL3RhcmdldC5oCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1j dnMvZ2RiL3RhcmdldC5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmln L2dkYi90YXJnZXQuaAkyMDEzLTAyLTE1IDIyOjM3OjMwLjAwMDAwMDAwMCArMDEwMAotKysrIGdk Yi03LjUuNTAuMjAxMzAyMTUvZ2RiL3RhcmdldC5oCTIwMTMtMDItMTUgMjI6NDA6MTguNTQyNjIy MDk2ICswMTAwCi1AQCAtNDgyLDcgKzQ4Miw3IEBAIHN0cnVjdCB0YXJnZXRfb3BzCistLS0gZ2Ri LTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvdGFyZ2V0LmgJMjAxMy0wOC0wMiAxNjozODoy Ni40NjIyOTIyMzggKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvdGFyZ2V0 LmgJMjAxMy0wOC0wMiAxNjozODozMi4zNzIzMDA3NTUgKzAyMDAKK0BAIC0zODksNyArMzg5LDcg QEAgc3RydWN0IHRhcmdldF9vcHMKICAKICAgICAgLyogRG9jdW1lbnRhdGlvbiBvZiB0aGlzIHJv dXRpbmUgaXMgcHJvdmlkZWQgd2l0aCB0aGUgY29ycmVzcG9uZGluZwogICAgICAgICB0YXJnZXRf KiBtYWNyby4gICovCkBAIC0zMzA4LDExICszMzA4LDExIEBAIEluZGV4OiBnZGItNy41LjUwLjIw MTMwMjE1L2dkYi90YXJnZXQuaAogIAogICAgICBpbnQgKCp0b19jYW5fYWNjZWxfd2F0Y2hwb2lu dF9jb25kaXRpb24pIChDT1JFX0FERFIsIGludCwgaW50LAogIAkJCQkJICAgICAgc3RydWN0IGV4 cHJlc3Npb24gKik7Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdHJhY2Vwb2ludC5j CitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3RyYWNlcG9pbnQuYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvdHJhY2Vwb2ludC5jCTIwMTMt MDItMTQgMTE6MTk6MzkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9n ZGIvdHJhY2Vwb2ludC5jCTIwMTMtMDItMTUgMjI6NDA6MTguNTQzNjIyMDk5ICswMTAwCi1AQCAt OTU1LDEzICs5NTUsMTMgQEAgYWRkX3JlZ2lzdGVyIChzdHJ1Y3QgY29sbGVjdGlvbl9saXN0ICpj bworLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL3RyYWNlcG9pbnQuYwkyMDEz LTA4LTAyIDE2OjM4OjI2LjQ2NDI5MjI0MSArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEt Y3ZzL2dkYi90cmFjZXBvaW50LmMJMjAxMy0wOC0wMiAxNjo0MDo1My4wMTg0OTk3NjkgKzAyMDAK K0BAIC05NDAsMTMgKzk0MCwxMyBAQCBhZGRfcmVnaXN0ZXIgKHN0cnVjdCBjb2xsZWN0aW9uX2xp c3QgKmNvCiAgc3RhdGljIHZvaWQKICBhZGRfbWVtcmFuZ2UgKHN0cnVjdCBjb2xsZWN0aW9uX2xp c3QgKm1lbXJhbmdlcywgCiAgCSAgICAgIGludCB0eXBlLCBiZmRfc2lnbmVkX3ZtYSBiYXNlLApA QCAtMzMyOCwxNiArMzMyOCwxNiBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdHJh Y2Vwb2ludC5jCiAgICAgIH0KICAKICAgIC8qIHR5cGU6IG1lbXJhbmdlX2Fic29sdXRlID09IG1l bW9yeSwgb3RoZXIgbiA9PSBiYXNlcmVnICovCi1AQCAtOTkwLDcgKzk5MCw3IEBAIGNvbGxlY3Rf c3ltYm9sIChzdHJ1Y3QgY29sbGVjdGlvbl9saXN0ICoKLSAJCWxvbmcgZnJhbWVfcmVnbm8sIGxv bmcgZnJhbWVfb2Zmc2V0LAotIAkJQ09SRV9BRERSIHNjb3BlKQorQEAgLTk3Niw3ICs5NzYsNyBA QCBjb2xsZWN0X3N5bWJvbCAoc3RydWN0IGNvbGxlY3Rpb25fbGlzdCAqCisgCQlDT1JFX0FERFIg c2NvcGUsCisgCQlpbnQgdHJhY2Vfc3RyaW5nKQogIHsKIC0gIHVuc2lnbmVkIGxvbmcgbGVuOwog KyAgVUxPTkdFU1QgbGVuOwogICAgdW5zaWduZWQgaW50IHJlZzsKICAgIGJmZF9zaWduZWRfdm1h IG9mZnNldDsKICAgIGludCB0cmVhdF9hc19leHByID0gMDsKLUBAIC0xMDE0LDggKzEwMTQsOCBA QCBjb2xsZWN0X3N5bWJvbCAoc3RydWN0IGNvbGxlY3Rpb25fbGlzdCAqCitAQCAtMTAwMCw4ICsx MDAwLDggQEAgY29sbGVjdF9zeW1ib2wgKHN0cnVjdCBjb2xsZWN0aW9uX2xpc3QgKgogIAkgIGNo YXIgdG1wWzQwXTsKICAKICAJICBzcHJpbnRmX3ZtYSAodG1wLCBvZmZzZXQpOwpAQCAtMzM0OCw3 ICszMzQ4LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3RyYWNlcG9pbnQuYwog IAkJCSAgIHRtcCAvKiBhZGRyZXNzICovKTsKICAJfQogICAgICAgIC8qIEEgc3RydWN0IG1heSBi ZSBhIEMrKyBjbGFzcyB3aXRoIHN0YXRpYyBmaWVsZHMsIGdvIHRvIGdlbmVyYWwKLUBAIC0xMDQ3 LDggKzEwNDcsOCBAQCBjb2xsZWN0X3N5bWJvbCAoc3RydWN0IGNvbGxlY3Rpb25fbGlzdCAqCitA QCAtMTAzMyw4ICsxMDMzLDggQEAgY29sbGVjdF9zeW1ib2wgKHN0cnVjdCBjb2xsZWN0aW9uX2xp c3QgKgogICAgICAgIG9mZnNldCA9IGZyYW1lX29mZnNldCArIFNZTUJPTF9WQUxVRSAoc3ltKTsK ICAgICAgICBpZiAoaW5mb192ZXJib3NlKQogIAl7CkBAIC0zMzU5LDcgKzMzNTksNyBAQCBJbmRl eDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdHJhY2Vwb2ludC5jCiAgCSAgcHJpbnRmX3ZtYSAo b2Zmc2V0KTsKICAJICBwcmludGZfZmlsdGVyZWQgKCIgZnJvbSBmcmFtZSBwdHIgcmVnICVkXG4i LCByZWcpOwogIAl9Ci1AQCAtMTA1OSw4ICsxMDU5LDggQEAgY29sbGVjdF9zeW1ib2wgKHN0cnVj dCBjb2xsZWN0aW9uX2xpc3QgKgorQEAgLTEwNDUsOCArMTA0NSw4IEBAIGNvbGxlY3Rfc3ltYm9s IChzdHJ1Y3QgY29sbGVjdGlvbl9saXN0ICoKICAgICAgICBvZmZzZXQgPSAwOwogICAgICAgIGlm IChpbmZvX3ZlcmJvc2UpCiAgCXsKQEAgLTMzNzAsNyArMzM3MCw3IEBAIEluZGV4OiBnZGItNy41 LjUwLjIwMTMwMjE1L2dkYi90cmFjZXBvaW50LmMKICAJICBwcmludGZfdm1hIChvZmZzZXQpOwog IAkgIHByaW50Zl9maWx0ZXJlZCAoIiBmcm9tIHJlZyAlZFxuIiwgcmVnKTsKICAJfQotQEAgLTEw NzEsOCArMTA3MSw4IEBAIGNvbGxlY3Rfc3ltYm9sIChzdHJ1Y3QgY29sbGVjdGlvbl9saXN0ICoK K0BAIC0xMDU3LDggKzEwNTcsOCBAQCBjb2xsZWN0X3N5bWJvbCAoc3RydWN0IGNvbGxlY3Rpb25f bGlzdCAqCiAgICAgICAgb2Zmc2V0ID0gZnJhbWVfb2Zmc2V0ICsgU1lNQk9MX1ZBTFVFIChzeW0p OwogICAgICAgIGlmIChpbmZvX3ZlcmJvc2UpCiAgCXsKQEAgLTMzODEsNyArMzM4MSw3IEBAIElu ZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi90cmFjZXBvaW50LmMKICAJICBwcmludGZfdm1h IChvZmZzZXQpOwogIAkgIHByaW50Zl9maWx0ZXJlZCAoIiBmcm9tIGZyYW1lIHB0ciByZWcgJWRc biIsIHJlZyk7CiAgCX0KLUBAIC0yNjQyLDcgKzI2NDIsOCBAQCBzY29wZV9pbmZvIChjaGFyICph cmdzLCBpbnQgZnJvbV90dHkpCitAQCAtMjcxNiw3ICsyNzE2LDggQEAgc2NvcGVfaW5mbyAoY2hh ciAqYXJncywgaW50IGZyb21fdHR5KQogICAgY29uc3QgY2hhciAqc3ltbmFtZTsKICAgIGNoYXIg KnNhdmVfYXJncyA9IGFyZ3M7CiAgICBzdHJ1Y3QgYmxvY2tfaXRlcmF0b3IgaXRlcjsKQEAgLTMz OTEsOCArMzM5MSw4IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi90cmFjZXBvaW50 LmMKICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoOwogICAgaW50IHJlZ25vOwogIAotQEAgLTI3 NzIsOCArMjc3MywxMSBAQCBzY29wZV9pbmZvIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCi0g CSAgICAgIGJyZWFrOworQEAgLTI4NTIsOCArMjg1MywxMSBAQCBzY29wZV9pbmZvIChjaGFyICph cmdzLCBpbnQgZnJvbV90dHkpCisgCQl9CiAgCSAgICB9CiAgCSAgaWYgKFNZTUJPTF9UWVBFIChz eW0pKQogLQkgICAgcHJpbnRmX2ZpbHRlcmVkICgiLCBsZW5ndGggJWQuXG4iLApAQCAtMzQwNSwx MCArMzQwNSwxMCBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdHJhY2Vwb2ludC5j CiAgCX0KICAgICAgICBpZiAoQkxPQ0tfRlVOQ1RJT04gKGJsb2NrKSkKICAJYnJlYWs7Ci1JbmRl eDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdHlwZXByaW50LmMKK0luZGV4OiBnZGItNy42LjUw LjIwMTMwNzMxLWN2cy9nZGIvdHlwZXByaW50LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUw LjIwMTMwMjE1Lm9yaWcvZ2RiL3R5cGVwcmludC5jCTIwMTMtMDItMTUgMjI6MzE6MzcuMDAwMDAw MDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdHlwZXByaW50LmMJMjAxMy0w Mi0xNSAyMjo0MDoxOC41NDM2MjIwOTkgKzAxMDAKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2 cy5vcmlnL2dkYi90eXBlcHJpbnQuYwkyMDEzLTA4LTAyIDE2OjM4OjI2LjQ2NDI5MjI0MSArMDIw MAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90eXBlcHJpbnQuYwkyMDEzLTA4LTAy IDE2OjM4OjMyLjM3NDMwMDc1OCArMDIwMAogQEAgLTQwOSw3ICs0MDksNyBAQCB3aGF0aXNfZXhw IChjaGFyICpleHAsIGludCBzaG93KQogICAgc3RydWN0IHR5cGUgKnJlYWxfdHlwZSA9IE5VTEw7 CiAgICBzdHJ1Y3QgdHlwZSAqdHlwZTsKQEAgLTM0MTgsMTAgKzM0MTgsMTAgQEAgSW5kZXg6IGdk Yi03LjUuNTAuMjAxMzAyMTUvZ2RiL3R5cGVwcmludC5jCiAgICBpbnQgdXNpbmdfZW5jID0gMDsK ICAgIHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zIG9wdHM7CiAgICBzdHJ1Y3QgdHlwZV9wcmlu dF9vcHRpb25zIGZsYWdzID0gZGVmYXVsdF9wdHlwZV9mbGFnczsKLUluZGV4OiBnZGItNy41LjUw LjIwMTMwMjE1L2dkYi92YWxhcml0aC5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMv Z2RiL3ZhbGFyaXRoLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMjE1Lm9yaWcv Z2RiL3ZhbGFyaXRoLmMJMjAxMy0wMi0xNSAyMjozMTozNy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBn ZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWxhcml0aC5jCTIwMTMtMDItMTUgMjI6NDA6MTguNTQz NjIyMDk5ICswMTAwCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvdmFsYXJp dGguYwkyMDEzLTA4LTAyIDE2OjM4OjI2LjQ2NTI5MjI0MyArMDIwMAorKysrIGdkYi03LjYuNTAu MjAxMzA3MzEtY3ZzL2dkYi92YWxhcml0aC5jCTIwMTMtMDgtMDIgMTY6Mzg6MzIuMzc0MzAwNzU4 ICswMjAwCiBAQCAtMTkwLDE1ICsxOTAsMTUgQEAgdmFsdWVfc3Vic2NyaXB0IChzdHJ1Y3QgdmFs dWUgKmFycmF5LCBMTwogICAgIHRvIGRvdWJsZXMsIGJ1dCBubyBsb25nZXIgZG9lcy4gICovCiAg CkBAIC0zNDc1LDExICszNDc1LDExIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92 YWxhcml0aC5jCiAgCiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCiAgICAgIHsKLUluZGV4 OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWxvcHMuYworSW5kZXg6IGdkYi03LjYuNTAuMjAx MzA3MzEtY3ZzL2dkYi92YWxvcHMuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAy MTUub3JpZy9nZGIvdmFsb3BzLmMJMjAxMy0wMi0xNSAyMjozNzowNC4wMDAwMDAwMDAgKzAxMDAK LSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWxvcHMuYwkyMDEzLTAyLTE1IDIyOjQxOjM0 Ljc1MTcxNTg2NyArMDEwMAotQEAgLTU0LDExICs1NCwxMSBAQCBzdGF0aWMgaW50IHR5cGVjbXAg KGludCBzdGF0aWNwLCBpbnQgdmFyCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9n ZGIvdmFsb3BzLmMJMjAxMy0wOC0wMiAxNjozODoyNi40NjcyOTIyNDYgKzAyMDAKKysrKyBnZGIt Ny42LjUwLjIwMTMwNzMxLWN2cy9nZGIvdmFsb3BzLmMJMjAxMy0wOC0wMiAxNjozODozMi4zNzUz MDA3NTkgKzAyMDAKK0BAIC01MywxMSArNTMsMTEgQEAgc3RhdGljIGludCB0eXBlY21wIChpbnQg c3RhdGljcCwgaW50IHZhcgogIAkJICAgIHN0cnVjdCBmaWVsZCB0MVtdLCBzdHJ1Y3QgdmFsdWUg KnQyW10pOwogIAogIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKnNlYXJjaF9zdHJ1Y3RfZmllbGQgKGNv bnN0IGNoYXIgKiwgc3RydWN0IHZhbHVlICosIApAQCAtMzQ5Myw3ICszNDkzLDcgQEAgSW5kZXg6 IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3ZhbG9wcy5jCiAgCiAgc3RhdGljIGludCBmaW5kX29s b2FkX2NoYW1wX25hbWVzcGFjZSAoc3RydWN0IHZhbHVlICoqLCBpbnQsCiAgCQkJCSAgICAgICBj b25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwKLUBAIC04Niw3ICs4Niw3IEBAIG9sb2FkX2NsYXNz aWZpY2F0aW9uIGNsYXNzaWZ5X29sb2FkX21hdGMKK0BAIC04NSw3ICs4NSw3IEBAIG9sb2FkX2Ns YXNzaWZpY2F0aW9uIGNsYXNzaWZ5X29sb2FkX21hdGMKICAJCQkJCSAgIGludCwgaW50KTsKICAK ICBzdGF0aWMgc3RydWN0IHZhbHVlICp2YWx1ZV9zdHJ1Y3RfZWx0X2Zvcl9yZWZlcmVuY2UgKHN0 cnVjdCB0eXBlICosCkBAIC0zNTAyLDcgKzM1MDIsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEz MDIxNS9nZGIvdmFsb3BzLmMKICAJCQkJCQkgICAgIGNoYXIgKiwKICAJCQkJCQkgICAgIHN0cnVj dCB0eXBlICosCiAgCQkJCQkJICAgICBpbnQsIGVudW0gbm9zaWRlKTsKLUBAIC0xMDMsOCArMTAz LDggQEAgc3RhdGljIENPUkVfQUREUiBhbGxvY2F0ZV9zcGFjZV9pbl9pbmZlcgorQEAgLTEwMiw4 ICsxMDIsOCBAQCBzdGF0aWMgQ09SRV9BRERSIGFsbG9jYXRlX3NwYWNlX2luX2luZmVyCiAgc3Rh dGljIHN0cnVjdCB2YWx1ZSAqY2FzdF9pbnRvX2NvbXBsZXggKHN0cnVjdCB0eXBlICosIHN0cnVj dCB2YWx1ZSAqKTsKICAKICBzdGF0aWMgc3RydWN0IGZuX2ZpZWxkICpmaW5kX21ldGhvZF9saXN0 IChzdHJ1Y3QgdmFsdWUgKiosIGNvbnN0IGNoYXIgKiwKQEAgLTM1MTMsNyArMzUxMyw3IEBAIElu ZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWxvcHMuYwogIAogIHZvaWQgX2luaXRpYWxp emVfdmFsb3BzICh2b2lkKTsKICAKLUBAIC0xODksNyArMTg5LDcgQEAgZmluZF9mdW5jdGlvbl9p bl9pbmZlcmlvciAoY29uc3QgY2hhciAqbgorQEAgLTE4OCw3ICsxODgsNyBAQCBmaW5kX2Z1bmN0 aW9uX2luX2luZmVyaW9yIChjb25zdCBjaGFyICpuCiAgICAgc3BhY2UuICAqLwogIAogIHN0cnVj dCB2YWx1ZSAqCkBAIC0zNTIyLDcgKzM1MjIsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIx NS9nZGIvdmFsb3BzLmMKICB7CiAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZjsKICAgIHN0cnVjdCB2 YWx1ZSAqdmFsID0gZmluZF9mdW5jdGlvbl9pbl9pbmZlcmlvciAoIm1hbGxvYyIsICZvYmpmKTsK LUBAIC0yNjIsNyArMjYyLDggQEAgdmFsdWVfY2FzdF9zdHJ1Y3RzIChzdHJ1Y3QgdHlwZSAqdHlw ZSwgcworQEAgLTI2MSw3ICsyNjEsOCBAQCB2YWx1ZV9jYXN0X3N0cnVjdHMgKHN0cnVjdCB0eXBl ICp0eXBlLCBzCiAgICBpZiAoVFlQRV9OQU1FICh0MikgIT0gTlVMTCkKICAgICAgewogICAgICAg IC8qIFRyeSBkb3duY2FzdGluZyB1c2luZyB0aGUgcnVuLXRpbWUgdHlwZSBvZiB0aGUgdmFsdWUu ICAqLwpAQCAtMzUzMiw3ICszNTMyLDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2Ri L3ZhbG9wcy5jCiAgICAgICAgc3RydWN0IHR5cGUgKnJlYWxfdHlwZTsKICAKICAgICAgICByZWFs X3R5cGUgPSB2YWx1ZV9ydHRpX3R5cGUgKHYyLCAmZnVsbCwgJnRvcCwgJnVzaW5nX2VuYyk7Ci1A QCAtNDAxLDEyICs0MDIsMTIgQEAgdmFsdWVfY2FzdCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVj dCB2YQorQEAgLTQwMCwxMiArNDAxLDEyIEBAIHZhbHVlX2Nhc3QgKHN0cnVjdCB0eXBlICp0eXBl LCBzdHJ1Y3QgdmEKICAgIGlmIChjb2RlMSA9PSBUWVBFX0NPREVfQVJSQVkpCiAgICAgIHsKICAg ICAgICBzdHJ1Y3QgdHlwZSAqZWxlbWVudF90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAodHlwZSk7 CkBAIC0zNTQ3LDcgKzM1NDcsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdmFs b3BzLmMKICAJICBMT05HRVNUIGxvd19ib3VuZCwgaGlnaF9ib3VuZCwgbmV3X2xlbmd0aDsKICAK ICAJICBpZiAoZ2V0X2Rpc2NyZXRlX2JvdW5kcyAocmFuZ2VfdHlwZSwgJmxvd19ib3VuZCwgJmhp Z2hfYm91bmQpIDwgMCkKLUBAIC02NDAsNyArNjQxLDcgQEAgdmFsdWVfcmVpbnRlcnByZXRfY2Fz dCAoc3RydWN0IHR5cGUgKnR5cAorQEAgLTYzOSw3ICs2NDAsNyBAQCB2YWx1ZV9yZWludGVycHJl dF9jYXN0IChzdHJ1Y3QgdHlwZSAqdHlwCiAgc3RhdGljIGludAogIGR5bmFtaWNfY2FzdF9jaGVj a18xIChzdHJ1Y3QgdHlwZSAqZGVzaXJlZF90eXBlLAogIAkJICAgICAgY29uc3QgZ2RiX2J5dGUg KnZhbGFkZHIsCkBAIC0zNTU2LDcgKzM1NTYsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIx NS9nZGIvdmFsb3BzLmMKICAJCSAgICAgIENPUkVfQUREUiBhZGRyZXNzLAogIAkJICAgICAgc3Ry dWN0IHZhbHVlICp2YWwsCiAgCQkgICAgICBzdHJ1Y3QgdHlwZSAqc2VhcmNoX3R5cGUsCi1AQCAt NjUyLDggKzY1Myw4IEBAIGR5bmFtaWNfY2FzdF9jaGVja18xIChzdHJ1Y3QgdHlwZSAqZGVzaXIK K0BAIC02NTEsOCArNjUyLDggQEAgZHluYW1pY19jYXN0X2NoZWNrXzEgKHN0cnVjdCB0eXBlICpk ZXNpcgogIAogICAgZm9yIChpID0gMDsgaSA8IFRZUEVfTl9CQVNFQ0xBU1NFUyAoc2VhcmNoX3R5 cGUpICYmIHJlc3VsdF9jb3VudCA8IDI7ICsraSkKICAgICAgewpAQCAtMzU2Nyw3ICszNTY3LDcg QEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3ZhbG9wcy5jCiAgCiAgICAgICAgaWYg KGNsYXNzX3R5cGVzX3NhbWVfcCAoZGVzaXJlZF90eXBlLCBUWVBFX0JBU0VDTEFTUyAoc2VhcmNo X3R5cGUsIGkpKSkKICAJewotQEAgLTY4Nyw3ICs2ODgsNyBAQCBkeW5hbWljX2Nhc3RfY2hlY2tf MSAoc3RydWN0IHR5cGUgKmRlc2lyCitAQCAtNjg2LDcgKzY4Nyw3IEBAIGR5bmFtaWNfY2FzdF9j aGVja18xIChzdHJ1Y3QgdHlwZSAqZGVzaXIKICBzdGF0aWMgaW50CiAgZHluYW1pY19jYXN0X2No ZWNrXzIgKHN0cnVjdCB0eXBlICpkZXNpcmVkX3R5cGUsCiAgCQkgICAgICBjb25zdCBnZGJfYnl0 ZSAqdmFsYWRkciwKQEAgLTM1NzYsNyArMzU3Niw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMw MjE1L2dkYi92YWxvcHMuYwogIAkJICAgICAgQ09SRV9BRERSIGFkZHJlc3MsCiAgCQkgICAgICBz dHJ1Y3QgdmFsdWUgKnZhbCwKICAJCSAgICAgIHN0cnVjdCB0eXBlICpzZWFyY2hfdHlwZSwKLUBA IC02OTcsNyArNjk4LDcgQEAgZHluYW1pY19jYXN0X2NoZWNrXzIgKHN0cnVjdCB0eXBlICpkZXNp cgorQEAgLTY5Niw3ICs2OTcsNyBAQCBkeW5hbWljX2Nhc3RfY2hlY2tfMiAoc3RydWN0IHR5cGUg KmRlc2lyCiAgCiAgICBmb3IgKGkgPSAwOyBpIDwgVFlQRV9OX0JBU0VDTEFTU0VTIChzZWFyY2hf dHlwZSkgJiYgcmVzdWx0X2NvdW50IDwgMjsgKytpKQogICAgICB7CkBAIC0zNTg1LDcgKzM1ODUs NyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdmFsb3BzLmMKICAKICAgICAgICBp ZiAoISBCQVNFVFlQRV9WSUFfUFVCTElDIChzZWFyY2hfdHlwZSwgaSkpCiAgCWNvbnRpbnVlOwot QEAgLTcyOCw3ICs3MjksOCBAQCBkeW5hbWljX2Nhc3RfY2hlY2tfMiAoc3RydWN0IHR5cGUgKmRl c2lyCitAQCAtNzI3LDcgKzcyOCw4IEBAIGR5bmFtaWNfY2FzdF9jaGVja18yIChzdHJ1Y3QgdHlw ZSAqZGVzaXIKICBzdHJ1Y3QgdmFsdWUgKgogIHZhbHVlX2R5bmFtaWNfY2FzdCAoc3RydWN0IHR5 cGUgKnR5cGUsIHN0cnVjdCB2YWx1ZSAqYXJnKQogIHsKQEAgLTM1OTUsNyArMzU5NSw3IEBAIElu ZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWxvcHMuYwogICAgc3RydWN0IHR5cGUgKnJl c29sdmVkX3R5cGUgPSBjaGVja190eXBlZGVmICh0eXBlKTsKICAgIHN0cnVjdCB0eXBlICphcmdf dHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZykpOwogICAgc3RydWN0IHR5cGUg KmNsYXNzX3R5cGUsICpydHRpX3R5cGU7Ci1AQCAtMTE4MSw3ICsxMTgzLDcgQEAgdmFsdWVfZmV0 Y2hfbGF6eSAoc3RydWN0IHZhbHVlICp2YWwpCitAQCAtMTAwNyw3ICsxMDA5LDcgQEAgdmFsdWVf YXRfbGF6eSAoc3RydWN0IHR5cGUgKnR5cGUsIENPUkVfQQogIH0KICAKICB2b2lkCkBAIC0zNjA0 LDcgKzM2MDQsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdmFsb3BzLmMKICAJ CSAgIGludCBzdGFjaywgQ09SRV9BRERSIG1lbWFkZHIsCiAgCQkgICBnZGJfYnl0ZSAqYnVmZmVy LCBzaXplX3QgbGVuZ3RoKQogIHsKLUBAIC0xMzMyLDcgKzEzMzQsNyBAQCB2YWx1ZV9hc3NpZ24g KHN0cnVjdCB2YWx1ZSAqdG92YWwsIHN0cnVjCitAQCAtMTE1Nyw3ICsxMTU5LDcgQEAgdmFsdWVf YXNzaWduIChzdHJ1Y3QgdmFsdWUgKnRvdmFsLCBzdHJ1YwogICAgICAgIHsKICAJY29uc3QgZ2Ri X2J5dGUgKmRlc3RfYnVmZmVyOwogIAlDT1JFX0FERFIgY2hhbmdlZF9hZGRyOwpAQCAtMzYxMyw3 ICszNjEzLDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3ZhbG9wcy5jCiAgICAg ICAgICBnZGJfYnl0ZSBidWZmZXJbc2l6ZW9mIChMT05HRVNUKV07CiAgCiAgCWlmICh2YWx1ZV9i aXRzaXplICh0b3ZhbCkpCi1AQCAtMTQxMSw3ICsxNDEzLDcgQEAgdmFsdWVfYXNzaWduIChzdHJ1 Y3QgdmFsdWUgKnRvdmFsLCBzdHJ1YworQEAgLTEyMzYsNyArMTIzOCw3IEBAIHZhbHVlX2Fzc2ln biAoc3RydWN0IHZhbHVlICp0b3ZhbCwgc3RydWMKICAJICAgIGlmICh2YWx1ZV9iaXRzaXplICh0 b3ZhbCkpCiAgCSAgICAgIHsKICAJCXN0cnVjdCB2YWx1ZSAqcGFyZW50ID0gdmFsdWVfcGFyZW50 ICh0b3ZhbCk7CkBAIC0zNjIyLDcgKzM2MjIsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIx NS9nZGIvdmFsb3BzLmMKICAJCWludCBjaGFuZ2VkX2xlbjsKICAJCWdkYl9ieXRlIGJ1ZmZlcltz aXplb2YgKExPTkdFU1QpXTsKICAJCWludCBvcHRpbSwgdW5hdmFpbDsKLUBAIC0xODkxLDcgKzE4 OTMsNyBAQCB2YWx1ZV9hcnJheSAoaW50IGxvd2JvdW5kLCBpbnQgaGlnaGJvdW5kCitAQCAtMTcx Niw3ICsxNzE4LDcgQEAgdmFsdWVfYXJyYXkgKGludCBsb3dib3VuZCwgaW50IGhpZ2hib3VuZAog IHsKICAgIGludCBuZWxlbTsKICAgIGludCBpZHg7CkBAIC0zNjMxLDcgKzM2MzEsNyBAQCBJbmRl eDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdmFsb3BzLmMKICAgIHN0cnVjdCB2YWx1ZSAqdmFs OwogICAgc3RydWN0IHR5cGUgKmFycmF5dHlwZTsKICAKLUBAIC0yMDY2LDcgKzIwNjgsNyBAQCB0 eXBlY21wIChpbnQgc3RhdGljcCwgaW50IHZhcmFyZ3MsIGludCBuCitAQCAtMTg5MSw3ICsxODkz LDcgQEAgdHlwZWNtcCAoaW50IHN0YXRpY3AsIGludCB2YXJhcmdzLCBpbnQgbgogIAogIHN0YXRp YyB2b2lkCiAgdXBkYXRlX3NlYXJjaF9yZXN1bHQgKHN0cnVjdCB2YWx1ZSAqKnJlc3VsdF9wdHIs IHN0cnVjdCB2YWx1ZSAqdiwKQEAgLTM2NDAsNyArMzY0MCw3IEBAIEluZGV4OiBnZGItNy41LjUw LjIwMTMwMjE1L2dkYi92YWxvcHMuYwogIAkJICAgICAgY29uc3QgY2hhciAqbmFtZSwgc3RydWN0 IHR5cGUgKnR5cGUpCiAgewogICAgaWYgKHYgIT0gTlVMTCkKLUBAIC0yMDkwLDEwICsyMDkyLDEw IEBAIHVwZGF0ZV9zZWFyY2hfcmVzdWx0IChzdHJ1Y3QgdmFsdWUgKipyZXMKK0BAIC0xOTE1LDEw ICsxOTE3LDEwIEBAIHVwZGF0ZV9zZWFyY2hfcmVzdWx0IChzdHJ1Y3QgdmFsdWUgKipyZXMKICAg ICBsb29rdXAgaXMgYW1iaWd1b3VzLiAgKi8KICAKICBzdGF0aWMgdm9pZApAQCAtMzY1Myw3ICsz NjUzLDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3ZhbG9wcy5jCiAgCQkJc3Ry dWN0IHR5cGUgKm91dGVybW9zdF90eXBlKQogIHsKICAgIGludCBpOwotQEAgLTIxNDgsNyArMjE1 MCw3IEBAIGRvX3NlYXJjaF9zdHJ1Y3RfZmllbGQgKGNvbnN0IGNoYXIgKm5hbWUKK0BAIC0xOTcz LDcgKzE5NzUsNyBAQCBkb19zZWFyY2hfc3RydWN0X2ZpZWxkIChjb25zdCBjaGFyICpuYW1lCiAg CQkgICA8dmFyaWFudCBmaWVsZD4uICAqLwogIAogIAkJc3RydWN0IHZhbHVlICp2ID0gTlVMTDsK QEAgLTM2NjIsNyArMzY2Miw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWxv cHMuYwogIAogIAkJLyogVGhpcyBpcyBwcmV0dHkgZ3Jvc3MuICBJbiBHKyssIHRoZSBvZmZzZXQg aW4gYW4KICAJCSAgIGFub255bW91cyB1bmlvbiBpcyByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5n IG9mIHRoZQotQEAgLTIxODcsNyArMjE4OSw3IEBAIGRvX3NlYXJjaF9zdHJ1Y3RfZmllbGQgKGNv bnN0IGNoYXIgKm5hbWUKK0BAIC0yMDEyLDcgKzIwMTQsNyBAQCBkb19zZWFyY2hfc3RydWN0X2Zp ZWxkIChjb25zdCBjaGFyICpuYW1lCiAgCQkJICAgICAmJiAoc3RyY21wX2l3IChuYW1lLCAKICAJ CQkJCSAgICBUWVBFX0JBU0VDTEFTU19OQU1FICh0eXBlLCAKICAJCQkJCQkJCSBpKSkgPT0gMCkp OwpAQCAtMzY3MSw3ICszNjcxLDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3Zh bG9wcy5jCiAgCiAgICAgICAgaWYgKEJBU0VUWVBFX1ZJQV9WSVJUVUFMICh0eXBlLCBpKSkKICAJ ewotQEAgLTIyNjIsMTEgKzIyNjQsMTEgQEAgZG9fc2VhcmNoX3N0cnVjdF9maWVsZCAoY29uc3Qg Y2hhciAqbmFtZQorQEAgLTIwODcsMTEgKzIwODksMTEgQEAgZG9fc2VhcmNoX3N0cnVjdF9maWVs ZCAoY29uc3QgY2hhciAqbmFtZQogICAgIGZpZWxkcywgbG9vayBmb3IgYSBiYXNlY2xhc3MgbmFt ZWQgTkFNRS4gICovCiAgCiAgc3RhdGljIHN0cnVjdCB2YWx1ZSAqCkBAIC0zNjg1LDcgKzM2ODUs NyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdmFsb3BzLmMKICAKICAgIGRvX3Nl YXJjaF9zdHJ1Y3RfZmllbGQgKG5hbWUsIGFyZzEsIG9mZnNldCwgdHlwZSwgbG9va2luZ19mb3Jf YmFzZWNsYXNzLAogIAkJCSAgJnJlc3VsdCwgJmJvZmZzZXQsIHR5cGUpOwotQEAgLTIyODMsNyAr MjI4NSw3IEBAIHNlYXJjaF9zdHJ1Y3RfZmllbGQgKGNvbnN0IGNoYXIgKm5hbWUsIHMKK0BAIC0y MTA4LDcgKzIxMTAsNyBAQCBzZWFyY2hfc3RydWN0X2ZpZWxkIChjb25zdCBjaGFyICpuYW1lLCBz CiAgCiAgc3RhdGljIHN0cnVjdCB2YWx1ZSAqCiAgc2VhcmNoX3N0cnVjdF9tZXRob2QgKGNvbnN0 IGNoYXIgKm5hbWUsIHN0cnVjdCB2YWx1ZSAqKmFyZzFwLApAQCAtMzY5NCw3ICszNjk0LDcgQEAg SW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3ZhbG9wcy5jCiAgCQkgICAgICBpbnQgKnN0 YXRpY19tZW1mdW5jcCwgc3RydWN0IHR5cGUgKnR5cGUpCiAgewogICAgaW50IGk7Ci1AQCAtMjM0 Nyw4ICsyMzQ5LDggQEAgc2VhcmNoX3N0cnVjdF9tZXRob2QgKGNvbnN0IGNoYXIgKm5hbWUsCitA QCAtMjE3Miw4ICsyMTc0LDggQEAgc2VhcmNoX3N0cnVjdF9tZXRob2QgKGNvbnN0IGNoYXIgKm5h bWUsCiAgCiAgICBmb3IgKGkgPSBUWVBFX05fQkFTRUNMQVNTRVMgKHR5cGUpIC0gMTsgaSA+PSAw OyBpLS0pCiAgICAgIHsKQEAgLTM3MDUsNyArMzcwNSw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIw MTMwMjE1L2dkYi92YWxvcHMuYwogIAogICAgICAgIGlmIChCQVNFVFlQRV9WSUFfVklSVFVBTCAo dHlwZSwgaSkpCiAgCXsKLUBAIC0yNTMwLDggKzI1MzIsOCBAQCB2YWx1ZV9zdHJ1Y3RfZWx0IChz dHJ1Y3QgdmFsdWUgKiphcmdwLCBzCitAQCAtMjM1NSw4ICsyMzU3LDggQEAgdmFsdWVfc3RydWN0 X2VsdCAoc3RydWN0IHZhbHVlICoqYXJncCwgcwogIAogIHN0YXRpYyBzdHJ1Y3QgZm5fZmllbGQg KgogIGZpbmRfbWV0aG9kX2xpc3QgKHN0cnVjdCB2YWx1ZSAqKmFyZ3AsIGNvbnN0IGNoYXIgKm1l dGhvZCwKQEAgLTM3MTYsNyArMzcxNiw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dk Yi92YWxvcHMuYwogIHsKICAgIGludCBpOwogICAgc3RydWN0IGZuX2ZpZWxkICpmOwotQEAgLTI1 NjQsNyArMjU2Niw3IEBAIGZpbmRfbWV0aG9kX2xpc3QgKHN0cnVjdCB2YWx1ZSAqKmFyZ3AsIGMK K0BAIC0yMzg5LDcgKzIzOTEsNyBAQCBmaW5kX21ldGhvZF9saXN0IChzdHJ1Y3QgdmFsdWUgKiph cmdwLCBjCiAgICAvKiBOb3QgZm91bmQgaW4gb2JqZWN0LCBjaGVjayBpbiBiYXNlIHN1Ym9iamVj dHMuICAqLwogICAgZm9yIChpID0gVFlQRV9OX0JBU0VDTEFTU0VTICh0eXBlKSAtIDE7IGkgPj0g MDsgaS0tKQogICAgICB7CkBAIC0zNzI1LDcgKzM3MjUsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4y MDEzMDIxNS9nZGIvdmFsb3BzLmMKICAKICAgICAgICBpZiAoQkFTRVRZUEVfVklBX1ZJUlRVQUwg KHR5cGUsIGkpKQogIAl7Ci1AQCAtMjYwMCw3ICsyNjAyLDcgQEAgZmluZF9tZXRob2RfbGlzdCAo c3RydWN0IHZhbHVlICoqYXJncCwgYworQEAgLTI0MjUsNyArMjQyNyw3IEBAIGZpbmRfbWV0aG9k X2xpc3QgKHN0cnVjdCB2YWx1ZSAqKmFyZ3AsIGMKICBzdGF0aWMgc3RydWN0IGZuX2ZpZWxkICoK ICB2YWx1ZV9maW5kX29sb2FkX21ldGhvZF9saXN0IChzdHJ1Y3QgdmFsdWUgKiphcmdwLCBjb25z dCBjaGFyICptZXRob2QsCiAgCQkJICAgICAgaW50IG9mZnNldCwgaW50ICpudW1fZm5zLCAKQEAg LTM3MzQsNyArMzczNCw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWxvcHMu YwogIHsKICAgIHN0cnVjdCB0eXBlICp0OwogIAotQEAgLTI2OTAsNyArMjY5Miw3IEBAIGZpbmRf b3ZlcmxvYWRfbWF0Y2ggKHN0cnVjdCB2YWx1ZSAqKmFyZ3MKK0BAIC0yNTE1LDcgKzI1MTcsNyBA QCBmaW5kX292ZXJsb2FkX21hdGNoIChzdHJ1Y3QgdmFsdWUgKiphcmdzCiAgICAvKiBOdW1iZXIg b2Ygb3ZlcmxvYWRlZCBpbnN0YW5jZXMgYmVpbmcgY29uc2lkZXJlZC4gICovCiAgICBpbnQgbnVt X2ZucyA9IDA7CiAgICBzdHJ1Y3QgdHlwZSAqYmFzZXR5cGUgPSBOVUxMOwpAQCAtMzc0Myw3ICsz NzQzLDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3ZhbG9wcy5jCiAgCiAgICBz dHJ1Y3QgY2xlYW51cCAqYWxsX2NsZWFudXBzID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAs IE5VTEwpOwogIAotQEAgLTMzNjAsNyArMzM2Miw3IEBAIGNvbXBhcmVfcGFyYW1ldGVycyAoc3Ry dWN0IHR5cGUgKnQxLCBzdHIKK0BAIC0zMTg1LDcgKzMxODcsNyBAQCBjb21wYXJlX3BhcmFtZXRl cnMgKHN0cnVjdCB0eXBlICp0MSwgc3RyCiAgICAgdGhlIGZvcm0gIkRPTUFJTjo6TkFNRSIuICAq LwogIAogIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgpAQCAtMzc1Miw3ICszNzUyLDcgQEAgSW5kZXg6 IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3ZhbG9wcy5jCiAgCQkJCXN0cnVjdCB0eXBlICpjdXJ0 eXBlLCBjaGFyICpuYW1lLAogIAkJCQlzdHJ1Y3QgdHlwZSAqaW50eXBlLCAKICAJCQkJaW50IHdh bnRfYWRkcmVzcywKLUBAIC0zMzk3LDcgKzMzOTksNyBAQCB2YWx1ZV9zdHJ1Y3RfZWx0X2Zvcl9y ZWZlcmVuY2UgKHN0cnVjdCB0CitAQCAtMzIyMiw3ICszMjI0LDcgQEAgdmFsdWVfc3RydWN0X2Vs dF9mb3JfcmVmZXJlbmNlIChzdHJ1Y3QgdAogIAkgIGlmICh3YW50X2FkZHJlc3MpCiAgCSAgICBy ZXR1cm4gdmFsdWVfZnJvbV9sb25nZXN0CiAgCSAgICAgIChsb29rdXBfbWVtYmVycHRyX3R5cGUg KFRZUEVfRklFTERfVFlQRSAodCwgaSksIGRvbWFpbiksCkBAIC0zNzYxLDcgKzM3NjEsNyBAQCBJ bmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdmFsb3BzLmMKICAJICBlbHNlIGlmIChub3Np ZGUgPT0gRVZBTF9BVk9JRF9TSURFX0VGRkVDVFMpCiAgCSAgICByZXR1cm4gYWxsb2NhdGVfdmFs dWUgKFRZUEVfRklFTERfVFlQRSAodCwgaSkpOwogIAkgIGVsc2UKLUBAIC0zNTQwLDcgKzM1NDIs NyBAQCB2YWx1ZV9zdHJ1Y3RfZWx0X2Zvcl9yZWZlcmVuY2UgKHN0cnVjdCB0CitAQCAtMzM2NSw3 ICszMzY3LDcgQEAgdmFsdWVfc3RydWN0X2VsdF9mb3JfcmVmZXJlbmNlIChzdHJ1Y3QgdAogICAg Zm9yIChpID0gVFlQRV9OX0JBU0VDTEFTU0VTICh0KSAtIDE7IGkgPj0gMDsgaS0tKQogICAgICB7 CiAgICAgICAgc3RydWN0IHZhbHVlICp2OwpAQCAtMzc3MCw3ICszNzcwLDcgQEAgSW5kZXg6IGdk Yi03LjUuNTAuMjAxMzAyMTUvZ2RiL3ZhbG9wcy5jCiAgCiAgICAgICAgaWYgKEJBU0VUWVBFX1ZJ QV9WSVJUVUFMICh0LCBpKSkKICAJYmFzZV9vZmZzZXQgPSAwOwotQEAgLTM2MzAsNyArMzYzMiw3 IEBAIHZhbHVlX21heWJlX25hbWVzcGFjZV9lbHQgKGNvbnN0IHN0cnVjdAorQEAgLTM0NTUsNyAr MzQ1Nyw3IEBAIHZhbHVlX21heWJlX25hbWVzcGFjZV9lbHQgKGNvbnN0IHN0cnVjdAogIAogIHN0 cnVjdCB0eXBlICoKICB2YWx1ZV9ydHRpX2luZGlyZWN0X3R5cGUgKHN0cnVjdCB2YWx1ZSAqdiwg aW50ICpmdWxsLCAKQEAgLTM3NzksNyArMzc3OSw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMw MjE1L2dkYi92YWxvcHMuYwogIHsKICAgIHN0cnVjdCB2YWx1ZSAqdGFyZ2V0OwogICAgc3RydWN0 IHR5cGUgKnR5cGUsICpyZWFsX3R5cGUsICp0YXJnZXRfdHlwZTsKLUBAIC0zNjgwLDEyICszNjgy LDEyIEBAIHZhbHVlX3J0dGlfaW5kaXJlY3RfdHlwZSAoc3RydWN0IHZhbHVlICoKK0BAIC0zNTA1 LDEyICszNTA3LDEyIEBAIHZhbHVlX3J0dGlfaW5kaXJlY3RfdHlwZSAoc3RydWN0IHZhbHVlICoK ICBzdHJ1Y3QgdmFsdWUgKgogIHZhbHVlX2Z1bGxfb2JqZWN0IChzdHJ1Y3QgdmFsdWUgKmFyZ3As IAogIAkJICAgc3RydWN0IHR5cGUgKnJ0eXBlLCAKQEAgLTM3OTQsMTEgKzM3OTQsMTEgQEAgSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3ZhbG9wcy5jCiAgICBpbnQgdXNpbmdfZW5jID0g MDsKICAgIHN0cnVjdCB2YWx1ZSAqbmV3X3ZhbDsKICAKLUluZGV4OiBnZGItNy41LjUwLjIwMTMw MjE1L2dkYi92YWxwcmludC5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3Zh bHByaW50LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL3Zh bHByaW50LmMJMjAxMy0wMi0xNSAyMjozMTozNy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41 LjUwLjIwMTMwMjE1L2dkYi92YWxwcmludC5jCTIwMTMtMDItMTUgMjI6NDA6MTguNTQ1NjIyMTA0 ICswMTAwCi1AQCAtMjk5LDcgKzI5OSw3IEBAIHNjYWxhcl90eXBlX3AgKHN0cnVjdCB0eXBlICp0 eXBlKQorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL3ZhbHByaW50LmMJMjAx My0wOC0wMiAxNjozODoyNi40NjgyOTIyNDcgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMx LWN2cy9nZGIvdmFscHJpbnQuYwkyMDEzLTA4LTAyIDE2OjM4OjMyLjM3NjMwMDc2MSArMDIwMAor QEAgLTMwMiw3ICszMDIsNyBAQCBzY2FsYXJfdHlwZV9wIChzdHJ1Y3QgdHlwZSAqdHlwZSkKICBp bnQKICB2YWxwcmludF9jaGVja192YWxpZGl0eSAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwKICAJ CQkgc3RydWN0IHR5cGUgKnR5cGUsCkBAIC0zODA3LDcgKzM4MDcsNyBAQCBJbmRleDogZ2RiLTcu NS41MC4yMDEzMDIxNS9nZGIvdmFscHJpbnQuYwogIAkJCSBjb25zdCBzdHJ1Y3QgdmFsdWUgKnZh bCkKICB7CiAgICBDSEVDS19UWVBFREVGICh0eXBlKTsKLUBAIC0zNjMsNyArMzYzLDcgQEAgdmFs X3ByaW50X2ludmFsaWRfYWRkcmVzcyAoc3RydWN0IHVpX2ZpbAorQEAgLTM2Niw3ICszNjYsNyBA QCB2YWxfcHJpbnRfaW52YWxpZF9hZGRyZXNzIChzdHJ1Y3QgdWlfZmlsCiAgCiAgdm9pZAogIGdl bmVyaWNfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFk ZHIsCkBAIC0zODE2LDcgKzM4MTYsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIv dmFscHJpbnQuYwogIAkJICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCiAg CQkgICBjb25zdCBzdHJ1Y3QgdmFsdWUgKm9yaWdpbmFsX3ZhbHVlLAogIAkJICAgY29uc3Qgc3Ry dWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMsCi1AQCAtNzI1LDcgKzcyNSw3IEBAIGdl bmVyaWNfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY28KK0BAIC03MjgsNyArNzI4LDcg QEAgZ2VuZXJpY192YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjbwogICAgIFJFQ1VSU0Uu ICAqLwogIAogIHZvaWQKQEAgLTM4MjUsNyArMzgyNSw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIw MTMwMjE1L2dkYi92YWxwcmludC5jCiAgCSAgIENPUkVfQUREUiBhZGRyZXNzLCBzdHJ1Y3QgdWlf ZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKICAJICAgY29uc3Qgc3RydWN0IHZhbHVlICp2YWws CiAgCSAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zLAotQEAgLTkz Nyw3ICs5MzcsNyBAQCB2YWxfcHJpbnRfdHlwZV9jb2RlX2ZsYWdzIChzdHJ1Y3QgdHlwZSAqCitA QCAtOTQwLDcgKzk0MCw3IEBAIHZhbF9wcmludF90eXBlX2NvZGVfZmxhZ3MgKHN0cnVjdCB0eXBl ICoKICAKICB2b2lkCiAgdmFsX3ByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHN0cnVjdCB0eXBlICp0 eXBlLApAQCAtMzgzNCw3ICszODM0LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2Ri L3ZhbHByaW50LmMKICAJCQkgICAgY29uc3Qgc3RydWN0IHZhbHVlICp2YWwsCiAgCQkJICAgIGNv bnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zLAogIAkJCSAgICBpbnQgc2l6 ZSwKLUBAIC0xNDc4LDcgKzE0NzgsNyBAQCBwcmludF9kZWNpbWFsX2NoYXJzIChzdHJ1Y3QgdWlf ZmlsZSAqc3RyCitAQCAtMTQ4MSw3ICsxNDgxLDcgQEAgcHJpbnRfZGVjaW1hbF9jaGFycyAoc3Ry dWN0IHVpX2ZpbGUgKnN0cgogIAogIHZvaWQKICBwcmludF9oZXhfY2hhcnMgKHN0cnVjdCB1aV9m aWxlICpzdHJlYW0sIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLApAQCAtMzg0Myw3ICszODQzLDcg QEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3ZhbHByaW50LmMKICB7CiAgICBjb25z dCBnZGJfYnl0ZSAqcDsKICAKLUBAIC0xNTk1LDIzICsxNTk1LDIzIEBAIG1heWJlX3ByaW50X2Fy cmF5X2luZGV4IChzdHJ1Y3QgdHlwZSAqaW4KK0BAIC0xNTk4LDIzICsxNTk4LDIzIEBAIG1heWJl X3ByaW50X2FycmF5X2luZGV4IChzdHJ1Y3QgdHlwZSAqaW4KICAKICB2b2lkCiAgdmFsX3ByaW50 X2FycmF5X2VsZW1lbnRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwKQEAgLTM4NzMsNyArMzg3Myw3IEBA IEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWxwcmludC5jCiAgICBMT05HRVNUIGxv d19ib3VuZCwgaGlnaF9ib3VuZDsKICAgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOwogICAgQ09S RV9BRERSIHNhdmVkX2FkZHJlc3MgPSBhZGRyZXNzOwotQEAgLTE3MDYsNyArMTcwNiw3IEBAIHZh bF9wcmludF9hcnJheV9lbGVtZW50cyAoc3RydWN0IHR5cGUgKnQKK0BAIC0xNzA5LDcgKzE3MDks NyBAQCB2YWxfcHJpbnRfYXJyYXlfZWxlbWVudHMgKHN0cnVjdCB0eXBlICp0CiAgCQkgICAgIGFk ZHJlc3MsIHN0cmVhbSwgcmVjdXJzZSArIDEsIHZhbCwgb3B0aW9ucywKICAJCSAgICAgY3VycmVu dF9sYW5ndWFnZSk7CiAgCSAgYW5ub3RhdGVfZWx0X3JlcCAocmVwcyk7CkBAIC0zODgyLDcgKzM4 ODIsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdmFscHJpbnQuYwogIAkgIGFu bm90YXRlX2VsdF9yZXBfZW5kICgpOwogIAogIAkgIGkgPSByZXAxIC0gMTsKLUBAIC0yMzU3LDcg KzIzNTcsNyBAQCBwcmludF9jb252ZXJ0ZWRfY2hhcnNfdG9fb2JzdGFjayAoc3RydWN0CitAQCAt MjM2MCw3ICsyMzYwLDcgQEAgcHJpbnRfY29udmVydGVkX2NoYXJzX3RvX29ic3RhY2sgKHN0cnVj dAogIAogIHZvaWQKICBnZW5lcmljX3ByaW50c3RyIChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBz dHJ1Y3QgdHlwZSAqdHlwZSwgCkBAIC0zODkxLDExICszODkxLDExIEBAIEluZGV4OiBnZGItNy41 LjUwLjIwMTMwMjE1L2dkYi92YWxwcmludC5jCiAgCQkgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBp bnQgZm9yY2VfZWxsaXBzZXMsCiAgCQkgIGludCBxdW90ZV9jaGFyLCBpbnQgY19zdHlsZV90ZXJt aW5hdG9yLAogIAkJICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucykK LUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWxwcmludC5oCitJbmRleDogZ2RiLTcu Ni41MC4yMDEzMDczMS1jdnMvZ2RiL3ZhbHByaW50LmgKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41 LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL3ZhbHByaW50LmgJMjAxMy0wMS0wOCAwMzowMDozNC4wMDAw MDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWxwcmludC5oCTIwMTMt MDItMTUgMjI6NDA6MTguNTQ1NjIyMTA0ICswMTAwCi1AQCAtMTEzLDExICsxMTMsMTEgQEAgZXh0 ZXJuIHZvaWQgbWF5YmVfcHJpbnRfYXJyYXlfaW5kZXggKHN0cgorLS0tIGdkYi03LjYuNTAuMjAx MzA3MzEtY3ZzLm9yaWcvZ2RiL3ZhbHByaW50LmgJMjAxMy0wOC0wMiAxNjozODoyNi40NjkyOTIy NDggKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvdmFscHJpbnQuaAkyMDEz LTA4LTAyIDE2OjM4OjMyLjM3NjMwMDc2MSArMDIwMAorQEAgLTExNSwxMSArMTE1LDExIEBAIGV4 dGVybiB2b2lkIG1heWJlX3ByaW50X2FycmF5X2luZGV4IChzdHIKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwKICAJCQkJICAgICBj b25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqKTsKICAKQEAgLTM5MDksNyArMzkwOSw3 IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWxwcmludC5oCiAgCiAgZXh0ZXJu IHZvaWQgdmFsX3ByaW50X3R5cGVfY29kZV9pbnQgKHN0cnVjdCB0eXBlICosIGNvbnN0IGdkYl9i eXRlICosCiAgCQkJCSAgICAgc3RydWN0IHVpX2ZpbGUgKik7Ci1AQCAtMTI3LDcgKzEyNyw3IEBA IGV4dGVybiB2b2lkIHZhbF9wcmludF90eXBlX2NvZGVfZmxhZ3MgKHMKK0BAIC0xMjksNyArMTI5 LDcgQEAgZXh0ZXJuIHZvaWQgdmFsX3ByaW50X3R5cGVfY29kZV9mbGFncyAocwogIAkJCQkgICAg ICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSk7CiAgCiAgZXh0ZXJuIHZvaWQgdmFsX3ByaW50X3Nj YWxhcl9mb3JtYXR0ZWQgKHN0cnVjdCB0eXBlICosCkBAIC0zOTE4LDcgKzM5MTgsNyBAQCBJbmRl eDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdmFscHJpbnQuaAogIAkJCQkJY29uc3Qgc3RydWN0 IHZhbHVlICosCiAgCQkJCQljb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqLAogIAkJ CQkJaW50LAotQEAgLTE0Myw3ICsxNDMsNyBAQCBleHRlcm4gdm9pZCBwcmludF9kZWNpbWFsX2No YXJzIChzdHJ1Y3QKK0BAIC0xNDUsNyArMTQ1LDcgQEAgZXh0ZXJuIHZvaWQgcHJpbnRfZGVjaW1h bF9jaGFycyAoc3RydWN0CiAgCQkJCSB1bnNpZ25lZCBpbnQsIGVudW0gYmZkX2VuZGlhbik7CiAg CiAgZXh0ZXJuIHZvaWQgcHJpbnRfaGV4X2NoYXJzIChzdHJ1Y3QgdWlfZmlsZSAqLCBjb25zdCBn ZGJfYnl0ZSAqLApAQCAtMzkyNyw3ICszOTI3LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAy MTUvZ2RiL3ZhbHByaW50LmgKICAKICBleHRlcm4gdm9pZCBwcmludF9jaGFyX2NoYXJzIChzdHJ1 Y3QgdWlfZmlsZSAqLCBzdHJ1Y3QgdHlwZSAqLAogIAkJCSAgICAgIGNvbnN0IGdkYl9ieXRlICos IHVuc2lnbmVkIGludCwgZW51bSBiZmRfZW5kaWFuKTsKLUBAIC0xODgsNyArMTg4LDcgQEAgc3Ry dWN0IGdlbmVyaWNfdmFsX3ByaW50X2RlY29yYXRpb25zCitAQCAtMTkwLDcgKzE5MCw3IEBAIHN0 cnVjdCBnZW5lcmljX3ZhbF9wcmludF9kZWNvcmF0aW9ucwogIAogIAogIGV4dGVybiB2b2lkIGdl bmVyaWNfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFk ZHIsCkBAIC0zOTM2LDcgKzM5MzYsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIv dmFscHJpbnQuaAogIAkJCSAgICAgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJz ZSwKICAJCQkgICAgICAgY29uc3Qgc3RydWN0IHZhbHVlICpvcmlnaW5hbF92YWx1ZSwKICAJCQkg ICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMsCi1AQCAtMTk4 LDcgKzE5OCw3IEBAIGV4dGVybiB2b2lkIGdlbmVyaWNfZW1pdF9jaGFyIChpbnQgYywgc3QKK0BA IC0yMDAsNyArMjAwLDcgQEAgZXh0ZXJuIHZvaWQgZ2VuZXJpY19lbWl0X2NoYXIgKGludCBjLCBz dAogIAkJCSAgICAgICBpbnQgcXVvdGVyLCBjb25zdCBjaGFyICplbmNvZGluZyk7CiAgCiAgZXh0 ZXJuIHZvaWQgZ2VuZXJpY19wcmludHN0ciAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgc3RydWN0 IHR5cGUgKnR5cGUsIApAQCAtMzk0NSwxMSArMzk0NSwxMSBAQCBJbmRleDogZ2RiLTcuNS41MC4y MDEzMDIxNS9nZGIvdmFscHJpbnQuaAogIAkJCSAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBp bnQgZm9yY2VfZWxsaXBzZXMsCiAgCQkJICAgICAgaW50IHF1b3RlX2NoYXIsIGludCBjX3N0eWxl X3Rlcm1pbmF0b3IsCiAgCQkJICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMg Km9wdGlvbnMpOwotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3ZhbHVlLmMKK0luZGV4 OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvdmFsdWUuYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvdmFsdWUuYwkyMDEzLTAyLTE1IDIyOjM3OjA0LjAw MDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3ZhbHVlLmMJMjAxMy0w Mi0xNSAyMjo0MDoxOC41NDU2MjIxMDQgKzAxMDAKLUBAIC02OCwxMCArNjgsMTAgQEAgc3RydWN0 IGludGVybmFsX2Z1bmN0aW9uCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIv dmFsdWUuYwkyMDEzLTA4LTAyIDE2OjM4OjI2LjQ3MTI5MjI1MSArMDIwMAorKysrIGdkYi03LjYu NTAuMjAxMzA3MzEtY3ZzL2dkYi92YWx1ZS5jCTIwMTMtMDgtMDIgMTY6NDE6MTMuMTA1NTI3NDgz ICswMjAwCitAQCAtNjksMTAgKzY5LDEwIEBAIHN0cnVjdCBpbnRlcm5hbF9mdW5jdGlvbgogIHN0 cnVjdCByYW5nZQogIHsKICAgIC8qIExvd2VzdCBvZmZzZXQgaW4gdGhlIHJhbmdlLiAgKi8KQEAg LTM5NjIsNyArMzk2Miw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWx1ZS5j CiAgfTsKICAKICB0eXBlZGVmIHN0cnVjdCByYW5nZSByYW5nZV9zOwotQEAgLTgyLDggKzgyLDgg QEAgREVGX1ZFQ19PKHJhbmdlX3MpOworQEAgLTgzLDggKzgzLDggQEAgREVGX1ZFQ19PKHJhbmdl X3MpOwogICAgIFtvZmZzZXQyLCBvZmZzZXQyK2xlbjIpIG92ZXJsYXAuICAqLwogIAogIHN0YXRp YyBpbnQKQEAgLTM5NzMsNyArMzk3Myw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dk Yi92YWx1ZS5jCiAgewogICAgVUxPTkdFU1QgaCwgbDsKICAKLUBAIC0xMDcsNyArMTA3LDcgQEAg cmFuZ2VfbGVzc3RoYW4gKGNvbnN0IHJhbmdlX3MgKnIxLCBjb25zdAorQEAgLTEwOCw3ICsxMDgs NyBAQCByYW5nZV9sZXNzdGhhbiAoY29uc3QgcmFuZ2VfcyAqcjEsIGNvbnN0CiAgICAgT0ZGU0VU K0xFTkdUSCkuICAqLwogIAogIHN0YXRpYyBpbnQKQEAgLTM5ODIsNyArMzk4Miw3IEBAIEluZGV4 OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWx1ZS5jCiAgewogICAgcmFuZ2VfcyB3aGF0Owog ICAgaW50IGk7Ci1AQCAtMjQwLDcgKzI0MCw3IEBAIHN0cnVjdCB2YWx1ZQorQEAgLTI0MSw3ICsy NDEsNyBAQCBzdHJ1Y3QgdmFsdWUKICAgICAgIGx2YWwgPT0gbHZhbF9yZWdpc3RlciwgdGhpcyBp cyBhIGZ1cnRoZXIgb2Zmc2V0IGZyb20KICAgICAgIGxvY2F0aW9uLmFkZHJlc3Mgd2l0aGluIHRo ZSByZWdpc3RlcnMgc3RydWN0dXJlLiAgTm90ZSBhbHNvIHRoZQogICAgICAgbWVtYmVyIGVtYmVk ZGVkX29mZnNldCBiZWxvdy4gICovCkBAIC0zOTkxLDcgKzM5OTEsNyBAQCBJbmRleDogZ2RiLTcu NS41MC4yMDEzMDIxNS9nZGIvdmFsdWUuYwogIAogICAgLyogT25seSB1c2VkIGZvciBiaXRmaWVs ZHM7IG51bWJlciBvZiBiaXRzIGNvbnRhaW5lZCBpbiB0aGVtLiAgKi8KICAgIGludCBiaXRzaXpl OwotQEAgLTMxMCw4ICszMTAsOCBAQCBzdHJ1Y3QgdmFsdWUKK0BAIC0zMTEsOCArMzExLDggQEAg c3RydWN0IHZhbHVlCiAgICAgICBgdHlwZScsIGFuZCBgZW1iZWRkZWRfb2Zmc2V0JyBpcyB6ZXJv LCBzbyBldmVyeXRoaW5nIHdvcmtzCiAgICAgICBub3JtYWxseS4gICovCiAgICBzdHJ1Y3QgdHlw ZSAqZW5jbG9zaW5nX3R5cGU7CkBAIC00MDAyLDcgKzQwMDIsNyBAQCBJbmRleDogZ2RiLTcuNS41 MC4yMDEzMDIxNS9nZGIvdmFsdWUuYwogIAogICAgLyogVmFsdWVzIGFyZSBzdG9yZWQgaW4gYSBj aGFpbiwgc28gdGhhdCB0aGV5IGNhbiBiZSBkZWxldGVkIGVhc2lseQogICAgICAgb3ZlciBjYWxs cyB0byB0aGUgaW5mZXJpb3IuICBWYWx1ZXMgYXNzaWduZWQgdG8gaW50ZXJuYWwKLUBAIC0zMzMs NyArMzMzLDggQEAgc3RydWN0IHZhbHVlCitAQCAtMzM0LDcgKzMzNCw4IEBAIHN0cnVjdCB2YWx1 ZQogIH07CiAgCiAgaW50CkBAIC00MDEyLDcgKzQwMTIsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4y MDEzMDIxNS9nZGIvdmFsdWUuYwogIHsKICAgIGdkYl9hc3NlcnQgKCF2YWx1ZS0+bGF6eSk7CiAg Ci1AQCAtMzU0LDcgKzM1NSw4IEBAIHZhbHVlX2VudGlyZWx5X2F2YWlsYWJsZSAoc3RydWN0IHZh bHVlICoKK0BAIC0zNTUsNyArMzU2LDggQEAgdmFsdWVfZW50aXJlbHlfYXZhaWxhYmxlIChzdHJ1 Y3QgdmFsdWUgKgogIH0KICAKICB2b2lkCkBAIC00MDIyLDcgKzQwMjIsNyBAQCBJbmRleDogZ2Ri LTcuNS41MC4yMDEzMDIxNS9nZGIvdmFsdWUuYwogIHsKICAgIHJhbmdlX3MgbmV3cjsKICAgIGlu dCBpOwotQEAgLTUyNSw3ICs1MjcsNyBAQCBtYXJrX3ZhbHVlX2J5dGVzX3VuYXZhaWxhYmxlIChz dHJ1Y3QgdmFsCitAQCAtNTI2LDcgKzUyOCw3IEBAIG1hcmtfdmFsdWVfYnl0ZXNfdW5hdmFpbGFi bGUgKHN0cnVjdCB2YWwKICAKICBzdGF0aWMgaW50CiAgZmluZF9maXJzdF9yYW5nZV9vdmVybGFw IChWRUMocmFuZ2VfcykgKnJhbmdlcywgaW50IHBvcywKQEAgLTQwMzEsNyArNDAzMSw3IEBAIElu ZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWx1ZS5jCiAgewogICAgcmFuZ2VfcyAqcjsK ICAgIGludCBpOwotQEAgLTUzOCw5ICs1NDAsOSBAQCBmaW5kX2ZpcnN0X3JhbmdlX292ZXJsYXAg KFZFQyhyYW5nZV9zKSAqCitAQCAtNTM5LDkgKzU0MSw5IEBAIGZpbmRfZmlyc3RfcmFuZ2Vfb3Zl cmxhcCAoVkVDKHJhbmdlX3MpICoKICB9CiAgCiAgaW50CkBAIC00MDQ0LDcgKzQwNDQsNyBAQCBJ bmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdmFsdWUuYwogIHsKICAgIGludCBpZHgxID0g MCwgaWR4MiA9IDA7CiAgCi1AQCAtNzY4LDEzICs3NzAsMTMgQEAgZGVwcmVjYXRlZF9zZXRfdmFs dWVfdHlwZSAoc3RydWN0IHZhbHVlCitAQCAtNzY3LDEzICs3NjksMTMgQEAgZGVwcmVjYXRlZF9z ZXRfdmFsdWVfdHlwZSAoc3RydWN0IHZhbHVlCiAgICB2YWx1ZS0+dHlwZSA9IHR5cGU7CiAgfQog IApAQCAtNDA2MCw3ICs0MDYwLDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3Zh bHVlLmMKICB7CiAgICB2YWx1ZS0+b2Zmc2V0ID0gb2Zmc2V0OwogIH0KLUBAIC05MjgsOCArOTMw LDkgQEAgdmFsdWVfY29udGVudHNfYWxsIChzdHJ1Y3QgdmFsdWUgKnZhbHVlKQorQEAgLTkzMiw4 ICs5MzQsOSBAQCB2YWx1ZV9jb250ZW50c19hbGwgKHN0cnVjdCB2YWx1ZSAqdmFsdWUpCiAgICAg RFNUX09GRlNFVCtMRU5HVEgpIHJhbmdlIGFyZSB3aG9sbHkgYXZhaWxhYmxlLiAgKi8KICAKICB2 b2lkCkBAIC00MDcyLDcgKzQwNzIsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIv dmFsdWUuYwogIHsKICAgIHJhbmdlX3MgKnI7CiAgICBpbnQgaTsKLUBAIC05NzcsOCArOTgwLDgg QEAgdmFsdWVfY29udGVudHNfY29weV9yYXcgKHN0cnVjdCB2YWx1ZSAqZAorQEAgLTk4MSw4ICs5 ODQsOCBAQCB2YWx1ZV9jb250ZW50c19jb3B5X3JhdyAoc3RydWN0IHZhbHVlICpkCiAgICAgRFNU X09GRlNFVCtMRU5HVEgpIHJhbmdlIGFyZSB3aG9sbHkgYXZhaWxhYmxlLiAgKi8KICAKICB2b2lk CkBAIC00MDgzLDcgKzQwODMsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdmFs dWUuYwogIHsKICAgIHJlcXVpcmVfbm90X29wdGltaXplZF9vdXQgKHNyYyk7CiAgCi1AQCAtMTA3 Miw3ICsxMDc1LDcgQEAgdmFsdWVfZW50aXJlbHlfb3B0aW1pemVkX291dCAoY29uc3Qgc3RydQor QEAgLTEwODcsNyArMTA5MCw3IEBAIHZhbHVlX2VudGlyZWx5X29wdGltaXplZF9vdXQgKGNvbnN0 IHN0cnUKICB9CiAgCiAgaW50CkBAIC00MDkyLDcgKzQwOTIsNyBAQCBJbmRleDogZ2RiLTcuNS41 MC4yMDEzMDIxNS9nZGIvdmFsdWUuYwogIHsKICAgIGlmICghdmFsdWUtPm9wdGltaXplZF9vdXQp CiAgICAgIHJldHVybiAxOwotQEAgLTEwODUsNyArMTA4OCw3IEBAIHZhbHVlX2JpdHNfdmFsaWQg KGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmEKK0BAIC0xMTAwLDcgKzExMDMsNyBAQCB2YWx1ZV9iaXRz X3ZhbGlkIChjb25zdCBzdHJ1Y3QgdmFsdWUgKnZhCiAgCiAgaW50CiAgdmFsdWVfYml0c19zeW50 aGV0aWNfcG9pbnRlciAoY29uc3Qgc3RydWN0IHZhbHVlICp2YWx1ZSwKQEAgLTQxMDEsNyArNDEw MSw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWx1ZS5jCiAgewogICAgaWYg KHZhbHVlLT5sdmFsICE9IGx2YWxfY29tcHV0ZWQKICAgICAgICB8fCAhdmFsdWUtPmxvY2F0aW9u LmNvbXB1dGVkLmZ1bmNzLT5jaGVja19zeW50aGV0aWNfcG9pbnRlcikKLUBAIC0xMDk1LDI2ICsx MDk4LDI2IEBAIHZhbHVlX2JpdHNfc3ludGhldGljX3BvaW50ZXIgKGNvbnN0IHN0cnUKK0BAIC0x MTEwLDI2ICsxMTEzLDI2IEBAIHZhbHVlX2JpdHNfc3ludGhldGljX3BvaW50ZXIgKGNvbnN0IHN0 cnUKICAJCQkJCQkJCSAgbGVuZ3RoKTsKICB9CiAgCkBAIC00MTMyLDcgKzQxMzIsNyBAQCBJbmRl eDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdmFsdWUuYwogIHsKICAgIHZhbHVlLT5wb2ludGVk X3RvX29mZnNldCA9IHZhbDsKICB9Ci1AQCAtMTk2OSw3ICsxOTcyLDcgQEAgZ2V0X2ludGVybmFs dmFyX2Z1bmN0aW9uIChzdHJ1Y3QgaW50ZXJuYQorQEAgLTE5ODIsNyArMTk4NSw3IEBAIGdldF9p bnRlcm5hbHZhcl9mdW5jdGlvbiAoc3RydWN0IGludGVybmEKICB9CiAgCiAgdm9pZApAQCAtNDE0 MSw3ICs0MTQxLDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3ZhbHVlLmMKICAJ CQkgICBpbnQgYml0c2l6ZSwgc3RydWN0IHZhbHVlICpuZXd2YWwpCiAgewogICAgZ2RiX2J5dGUg KmFkZHI7Ci1AQCAtMjY3Niw3ICsyNjc5LDcgQEAgc2V0X3ZhbHVlX2VuY2xvc2luZ190eXBlIChz dHJ1Y3QgdmFsdWUgKgorQEAgLTI2ODksNyArMjY5Miw3IEBAIHNldF92YWx1ZV9lbmNsb3Npbmdf dHlwZSAoc3RydWN0IHZhbHVlICoKICAgICBGSUVMRE5PIHNheXMgd2hpY2ggZmllbGQuICAqLwog IAogIHN0cnVjdCB2YWx1ZSAqCkBAIC00MTUwLDcgKzQxNTAsNyBAQCBJbmRleDogZ2RiLTcuNS41 MC4yMDEzMDIxNS9nZGIvdmFsdWUuYwogIAkJICAgICAgIGludCBmaWVsZG5vLCBzdHJ1Y3QgdHlw ZSAqYXJnX3R5cGUpCiAgewogICAgc3RydWN0IHZhbHVlICp2OwotQEAgLTI3MDYsNyArMjcwOSw3 IEBAIHZhbHVlX3ByaW1pdGl2ZV9maWVsZCAoc3RydWN0IHZhbHVlICphcmcKK0BAIC0yNzE3LDcg KzI3MjAsNyBAQCB2YWx1ZV9wcmltaXRpdmVfZmllbGQgKHN0cnVjdCB2YWx1ZSAqYXJnCiAgCSBi aXQuICBBc3N1bWUgdGhhdCB0aGUgYWRkcmVzcywgb2Zmc2V0LCBhbmQgZW1iZWRkZWQgb2Zmc2V0 CiAgCSBhcmUgc3VmZmljaWVudGx5IGFsaWduZWQuICAqLwogIApAQCAtNDE1OCw4ICs0MTU4LDgg QEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3ZhbHVlLmMKICsgICAgICBMT05HRVNU IGJpdHBvcyA9IFRZUEVfRklFTERfQklUUE9TIChhcmdfdHlwZSwgZmllbGRubyk7CiAgICAgICAg aW50IGNvbnRhaW5lcl9iaXRzaXplID0gVFlQRV9MRU5HVEggKHR5cGUpICogODsKICAKLSAgICAg ICB2ID0gYWxsb2NhdGVfdmFsdWVfbGF6eSAodHlwZSk7Ci1AQCAtMjcyOSw3ICsyNzMyLDcgQEAg dmFsdWVfcHJpbWl0aXZlX2ZpZWxkIChzdHJ1Y3QgdmFsdWUgKmFyZworICAgICAgIGlmIChhcmcx LT5vcHRpbWl6ZWRfb3V0KQorQEAgLTI3NDQsNyArMjc0Nyw3IEBAIHZhbHVlX3ByaW1pdGl2ZV9m aWVsZCAoc3RydWN0IHZhbHVlICphcmcKICAgICAgICAvKiBUaGlzIGZpZWxkIGlzIGFjdHVhbGx5 IGEgYmFzZSBzdWJvYmplY3QsIHNvIHByZXNlcnZlIHRoZQogIAkgZW50aXJlIG9iamVjdCdzIGNv bnRlbnRzIGZvciBsYXRlciByZWZlcmVuY2VzIHRvIHZpcnR1YWwKICAJIGJhc2VzLCBldGMuICAq LwpAQCAtNDE2OCw3ICs0MTY4LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3Zh bHVlLmMKICAKICAgICAgICAvKiBMYXp5IHJlZ2lzdGVyIHZhbHVlcyB3aXRoIG9mZnNldHMgYXJl IG5vdCBzdXBwb3J0ZWQuICAqLwogICAgICAgIGlmIChWQUxVRV9MVkFMIChhcmcxKSA9PSBsdmFs X3JlZ2lzdGVyICYmIHZhbHVlX2xhenkgKGFyZzEpKQotQEAgLTI4MDYsNyArMjgwOSw3IEBAIHZh bHVlX2ZpZWxkIChzdHJ1Y3QgdmFsdWUgKmFyZzEsIGludCBmaWUKK0BAIC0yODM0LDcgKzI4Mzcs NyBAQCB2YWx1ZV9maWVsZCAoc3RydWN0IHZhbHVlICphcmcxLCBpbnQgZmllCiAgc3RydWN0IHZh bHVlICoKICB2YWx1ZV9mbl9maWVsZCAoc3RydWN0IHZhbHVlICoqYXJnMXAsIHN0cnVjdCBmbl9m aWVsZCAqZiwKICAJCWludCBqLCBzdHJ1Y3QgdHlwZSAqdHlwZSwKQEAgLTQxNzcsNyArNDE3Nyw3 IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWx1ZS5jCiAgewogICAgc3RydWN0 IHZhbHVlICp2OwogICAgc3RydWN0IHR5cGUgKmZ0eXBlID0gVFlQRV9GTl9GSUVMRF9UWVBFIChm LCBqKTsKLUBAIC0yODY2LDggKzI4NjksOCBAQCB2YWx1ZV9mbl9maWVsZCAoc3RydWN0IHZhbHVl ICoqYXJnMXAsIHN0CitAQCAtMjg5NCw4ICsyODk3LDggQEAgdmFsdWVfZm5fZmllbGQgKHN0cnVj dCB2YWx1ZSAqKmFyZzFwLCBzdAogIAogIHN0YXRpYyBpbnQKICB1bnBhY2tfdmFsdWVfYml0c19h c19sb25nXzEgKHN0cnVjdCB0eXBlICpmaWVsZF90eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRk ciwKQEAgLTQxODgsNyArNDE4OCw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92 YWx1ZS5jCiAgCQkJICAgICBMT05HRVNUICpyZXN1bHQpCiAgewogICAgZW51bSBiZmRfZW5kaWFu IGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdldF90eXBlX2FyY2ggKGZpZWxkX3R5 cGUpKTsKLUBAIC0yODc1LDcgKzI4NzgsNyBAQCB1bnBhY2tfdmFsdWVfYml0c19hc19sb25nXzEg KHN0cnVjdCB0eXBlCitAQCAtMjkwMyw3ICsyOTA2LDcgQEAgdW5wYWNrX3ZhbHVlX2JpdHNfYXNf bG9uZ18xIChzdHJ1Y3QgdHlwZQogICAgVUxPTkdFU1QgdmFsbWFzazsKICAgIGludCBsc2Jjb3Vu dDsKICAgIGludCBieXRlc19yZWFkOwpAQCAtNDE5Nyw3ICs0MTk3LDcgQEAgSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAyMTUvZ2RiL3ZhbHVlLmMKICAKICAgIC8qIFJlYWQgdGhlIG1pbmltdW0gbnVt YmVyIG9mIGJ5dGVzIHJlcXVpcmVkOyB0aGVyZSBtYXkgbm90IGJlCiAgICAgICBlbm91Z2ggYnl0 ZXMgdG8gcmVhZCBhbiBlbnRpcmUgVUxPTkdFU1QuICAqLwotQEAgLTI5NDUsNyArMjk0OCw3IEBA IHVucGFja192YWx1ZV9iaXRzX2FzX2xvbmdfMSAoc3RydWN0IHR5cGUKK0BAIC0yOTczLDcgKzI5 NzYsNyBAQCB1bnBhY2tfdmFsdWVfYml0c19hc19sb25nXzEgKHN0cnVjdCB0eXBlCiAgCiAgaW50 CiAgdW5wYWNrX3ZhbHVlX2JpdHNfYXNfbG9uZyAoc3RydWN0IHR5cGUgKmZpZWxkX3R5cGUsIGNv bnN0IGdkYl9ieXRlICp2YWxhZGRyLApAQCAtNDIwNiw3ICs0MjA2LDcgQEAgSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAyMTUvZ2RiL3ZhbHVlLmMKICAJCQkgICBjb25zdCBzdHJ1Y3QgdmFsdWUgKm9y aWdpbmFsX3ZhbHVlLAogIAkJCSAgIExPTkdFU1QgKnJlc3VsdCkKICB7Ci1AQCAtMjk2MywxMCAr Mjk2NiwxMCBAQCB1bnBhY2tfdmFsdWVfYml0c19hc19sb25nIChzdHJ1Y3QgdHlwZSAqCitAQCAt Mjk5MSwxMCArMjk5NCwxMCBAQCB1bnBhY2tfdmFsdWVfYml0c19hc19sb25nIChzdHJ1Y3QgdHlw ZSAqCiAgCiAgc3RhdGljIGludAogIHVucGFja192YWx1ZV9maWVsZF9hc19sb25nXzEgKHN0cnVj dCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKQEAgLTQyMTksNyArNDIxOSw3 IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWx1ZS5jCiAgICBpbnQgYml0c2l6 ZSA9IFRZUEVfRklFTERfQklUU0laRSAodHlwZSwgZmllbGRubyk7CiAgICBzdHJ1Y3QgdHlwZSAq ZmllbGRfdHlwZSA9IFRZUEVfRklFTERfVFlQRSAodHlwZSwgZmllbGRubyk7CiAgCi1AQCAtMjk4 Miw3ICsyOTg1LDcgQEAgdW5wYWNrX3ZhbHVlX2ZpZWxkX2FzX2xvbmdfMSAoc3RydWN0IHR5cAor QEAgLTMwMTAsNyArMzAxMyw3IEBAIHVucGFja192YWx1ZV9maWVsZF9hc19sb25nXzEgKHN0cnVj dCB0eXAKICAKICBpbnQKICB1bnBhY2tfdmFsdWVfZmllbGRfYXNfbG9uZyAoc3RydWN0IHR5cGUg KnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLApAQCAtNDIyOCw3ICs0MjI4LDcgQEAgSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3ZhbHVlLmMKICAJCQkgICAgY29uc3Qgc3RydWN0 IHZhbHVlICp2YWwsIExPTkdFU1QgKnJlc3VsdCkKICB7CiAgICBnZGJfYXNzZXJ0ICh2YWwgIT0g TlVMTCk7Ci1AQCAtMzAxNCw3ICszMDE3LDcgQEAgdW5wYWNrX2ZpZWxkX2FzX2xvbmcgKHN0cnVj dCB0eXBlICp0eXBlLAorQEAgLTMwNDIsNyArMzA0NSw3IEBAIHVucGFja19maWVsZF9hc19sb25n IChzdHJ1Y3QgdHlwZSAqdHlwZSwKICBzdHJ1Y3QgdmFsdWUgKgogIHZhbHVlX2ZpZWxkX2JpdGZp ZWxkIChzdHJ1Y3QgdHlwZSAqdHlwZSwgaW50IGZpZWxkbm8sCiAgCQkgICAgICBjb25zdCBnZGJf Ynl0ZSAqdmFsYWRkciwKQEAgLTQyMzcsNyArNDIzNyw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIw MTMwMjE1L2dkYi92YWx1ZS5jCiAgewogICAgTE9OR0VTVCBsOwogIAotQEAgLTMwNDEsMTIgKzMw NDQsMTIgQEAgdmFsdWVfZmllbGRfYml0ZmllbGQgKHN0cnVjdCB0eXBlICp0eXBlLAorQEAgLTMw NjksMTIgKzMwNzIsMTIgQEAgdmFsdWVfZmllbGRfYml0ZmllbGQgKHN0cnVjdCB0eXBlICp0eXBl LAogIAogIHZvaWQKICBtb2RpZnlfZmllbGQgKHN0cnVjdCB0eXBlICp0eXBlLCBnZGJfYnl0ZSAq YWRkciwKQEAgLTQyNTIsMTAgKzQyNTIsMTAgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUv Z2RiL3ZhbHVlLmMKICAKICAgIC8qIE5vcm1hbGl6ZSBCSVRQT1MuICAqLwogICAgYWRkciArPSBi aXRwb3MgLyA4OwotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3ZhbHVlLmgKK0luZGV4 OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvdmFsdWUuaAogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvdmFsdWUuaAkyMDEzLTAyLTE1IDIyOjMxOjM3LjAw MDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3ZhbHVlLmgJMjAxMy0w Mi0xNSAyMjo0MDoxOC41NDY2MjIxMDYgKzAxMDAKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2 cy5vcmlnL2dkYi92YWx1ZS5oCTIwMTMtMDgtMDIgMTY6Mzg6MjYuNDcyMjkyMjUzICswMjAwCisr KysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3ZhbHVlLmgJMjAxMy0wOC0wMiAxNjozOTox NS43MjEzNjI1NzcgKzAyMDAKIEBAIC04Miw4ICs4Miw4IEBAIGV4dGVybiB2b2lkIHNldF92YWx1 ZV9wYXJlbnQgKHN0cnVjdCB2YWwKICAgICB3aXRoaW4gdGhlIHJlZ2lzdGVycyBzdHJ1Y3R1cmUu ICBOb3RlIGFsc28gdGhlIG1lbWJlcgogICAgIGVtYmVkZGVkX29mZnNldCBiZWxvdy4gICovCkBA IC00MzEwLDcgKzQzMTAsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdmFsdWUu aAogIAkJCQkgICAgY29uc3Qgc3RydWN0IHZhbHVlICp2YWwpOwogIAogIGV4dGVybiBzdHJ1Y3Qg dmFsdWUgKmFsbG9jYXRlX29wdGltaXplZF9vdXRfdmFsdWUgKHN0cnVjdCB0eXBlICp0eXBlKTsK LUBAIC00MDksMTMgKzQxMCwxMyBAQCBleHRlcm4gc3RydWN0IHZhbHVlICpjb2VyY2VfYXJyYXkg KHN0cnVjCitAQCAtNDE1LDEzICs0MTYsMTMgQEAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqY29lcmNl X2FycmF5IChzdHJ1YwogICAgIGJpdHMgaW4gdGhlIGdpdmVuIHJhbmdlIGFyZSB2YWxpZCwgemVy byBpZiBhbnkgYml0IGlzIGludmFsaWQuICAqLwogIAogIGV4dGVybiBpbnQgdmFsdWVfYml0c192 YWxpZCAoY29uc3Qgc3RydWN0IHZhbHVlICp2YWx1ZSwKQEAgLTQzMjYsNyArNDMyNiw3IEBAIElu ZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWx1ZS5oCiAgCiAgLyogR2l2ZW4gYSB2YWx1 ZSwgZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGNvbnRlbnRzIGJ5dGVzIHN0YXJ0aW5nIGF0CiAgICAg T0ZGU0VUIGFuZCBleHRlbmRpbmcgZm9yIExFTkdUSCBieXRlcyBhcmUgYXZhaWxhYmxlLiAgVGhp cyByZXR1cm5zCi1AQCAtNDIzLDcgKzQyNCw3IEBAIGV4dGVybiBpbnQgdmFsdWVfYml0c19zeW50 aGV0aWNfcG9pbnRlcgorQEAgLTQyOSw3ICs0MzAsNyBAQCBleHRlcm4gaW50IHZhbHVlX2JpdHNf c3ludGhldGljX3BvaW50ZXIKICAgICBieXRlIGlzIHVuYXZhaWxhYmxlLiAgKi8KICAKICBleHRl cm4gaW50IHZhbHVlX2J5dGVzX2F2YWlsYWJsZSAoY29uc3Qgc3RydWN0IHZhbHVlICp2YWx1ZSwK QEAgLTQzMzUsNyArNDMzNSw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWx1 ZS5oCiAgCiAgLyogTGlrZSB2YWx1ZV9ieXRlc19hdmFpbGFibGUsIGJ1dCByZXR1cm4gZmFsc2Ug aWYgYW55IGJ5dGUgaW4gdGhlCiAgICAgd2hvbGUgb2JqZWN0IGlzIHVuYXZhaWxhYmxlLiAgKi8K LUBAIC00MzMsNyArNDM0LDcgQEAgZXh0ZXJuIGludCB2YWx1ZV9lbnRpcmVseV9hdmFpbGFibGUg KHN0cgorQEAgLTQzOSw3ICs0NDAsNyBAQCBleHRlcm4gaW50IHZhbHVlX2VudGlyZWx5X2F2YWls YWJsZSAoc3RyCiAgICAgTEVOR1RIIGJ5dGVzIGFzIHVuYXZhaWxhYmxlLiAgKi8KICAKICBleHRl cm4gdm9pZCBtYXJrX3ZhbHVlX2J5dGVzX3VuYXZhaWxhYmxlIChzdHJ1Y3QgdmFsdWUgKnZhbHVl LApAQCAtNDM0NCw3ICs0MzQ0LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3Zh bHVlLmgKICAKICAvKiBDb21wYXJlIExFTkdUSCBieXRlcyBvZiBWQUwxJ3MgY29udGVudHMgc3Rh cnRpbmcgYXQgT0ZGU0VUMSB3aXRoCiAgICAgTEVOR1RIIGJ5dGVzIG9mIFZBTDIncyBjb250ZW50 cyBzdGFydGluZyBhdCBPRkZTRVQyLgotQEAgLTQ0Myw3ICs0NDQsNyBAQCBleHRlcm4gdm9pZCBt YXJrX3ZhbHVlX2J5dGVzX3VuYXZhaWxhYmxlCitAQCAtNDQ5LDcgKzQ1MCw3IEBAIGV4dGVybiB2 b2lkIG1hcmtfdmFsdWVfYnl0ZXNfdW5hdmFpbGFibGUKICAgICBleGFtcGxlLCB0byBjb21wYXJl IGEgY29tcGxldGUgb2JqZWN0IHZhbHVlIHdpdGggaXRzZWxmLCBpbmNsdWRpbmcKICAgICBpdHMg ZW5jbG9zaW5nIHR5cGUgY2h1bmssIHlvdSdkIGRvOgogIApAQCAtNDM1MywyMSArNDM1MywyMCBA QCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdmFsdWUuaAogICAgICAgdmFsdWVfYXZh aWxhYmxlX2NvbnRlbnRzICh2YWwsIDAsIHZhbCwgMCwgbGVuKTsKICAKICAgICBSZXR1cm5zIHRy dWUgaWZmIHRoZSBzZXQgb2YgYXZhaWxhYmxlIGNvbnRlbnRzIG1hdGNoLiAgVW5hdmFpbGFibGUK LUBAIC00NjUsOSArNDY2LDEwIEBAIGV4dGVybiB2b2lkIG1hcmtfdmFsdWVfYnl0ZXNfdW5hdmFp bGFibGUKLSAgICB2YWx1ZV9hdmFpbGFibGVfY29udGVudHNfZXEodmFsLCAzLCB2YWwsIDQsIDQp ID0+IDAKLSAqLworQEAgLTQ3Niw5ICs0NzcsOSBAQCBleHRlcm4gdm9pZCBtYXJrX3ZhbHVlX2J5 dGVzX3VuYXZhaWxhYmxlCisgICAgZ29uZSwgaXQgd29ya3Mgd2l0aCBjb25zdCB2YWx1ZXMuICBU aGVyZWZvcmUsIHRoaXMgcm91dGluZSBtdXN0IG5vdAorICAgIGJlIGNhbGxlZCB3aXRoIGxhenkg dmFsdWVzLiAgKi8KICAKIC1leHRlcm4gaW50IHZhbHVlX2F2YWlsYWJsZV9jb250ZW50c19lcSAo Y29uc3Qgc3RydWN0IHZhbHVlICp2YWwxLCBpbnQgb2Zmc2V0MSwKIC0JCQkJCWNvbnN0IHN0cnVj dCB2YWx1ZSAqdmFsMiwgaW50IG9mZnNldDIsCiAtCQkJCQlpbnQgbGVuZ3RoKTsKLStleHRlcm4g aW50IHZhbHVlX2F2YWlsYWJsZV9jb250ZW50c19lcSAoY29uc3Qgc3RydWN0IHZhbHVlICp2YWwx LAotKwkJCQkJTE9OR0VTVCBvZmZzZXQxLAotKwkJCQkJY29uc3Qgc3RydWN0IHZhbHVlICp2YWwy LAotKwkJCQkJTE9OR0VTVCBvZmZzZXQyLCBMT05HRVNUIGxlbmd0aCk7CisrZXh0ZXJuIGludCB2 YWx1ZV9hdmFpbGFibGVfY29udGVudHNfZXEgKGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFsMSwgTE9O R0VTVCBvZmZzZXQxLAorKwkJCQkJY29uc3Qgc3RydWN0IHZhbHVlICp2YWwyLCBMT05HRVNUIG9m ZnNldDIsCisrCQkJCQlMT05HRVNUIGxlbmd0aCk7CiAgCiAgLyogUmVhZCBMRU5HVEggYnl0ZXMg b2YgbWVtb3J5IHN0YXJ0aW5nIGF0IE1FTUFERFIgaW50byBCVUZGRVIsIHdoaWNoCiAgICAgaXMg KG9yIHdpbGwgYmUgY29waWVkIHRvKSBWQUwncyBjb250ZW50cyBidWZmZXIgb2Zmc2V0IGJ5Ci1A QCAtNDc2LDcgKzQ3OCw3IEBAIGV4dGVybiBpbnQgdmFsdWVfYXZhaWxhYmxlX2NvbnRlbnRzX2Vx ICgKK0BAIC00ODcsNyArNDg4LDcgQEAgZXh0ZXJuIGludCB2YWx1ZV9hdmFpbGFibGVfY29udGVu dHNfZXEgKAogICAgIG1lbW9yeSBpcyBsaWtld2lzZSB1bmF2YWlsYWJsZS4gIFNUQUNLIGluZGlj YXRlcyB3aGV0aGVyIHRoZSBtZW1vcnkKICAgICBpcyBrbm93biB0byBiZSBzdGFjayBtZW1vcnku ICAqLwogIApAQCAtNDM3Niw3ICs0Mzc1LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUv Z2RiL3ZhbHVlLmgKICAJCQkgICAgICAgaW50IHN0YWNrLCBDT1JFX0FERFIgbWVtYWRkciwKICAJ CQkgICAgICAgZ2RiX2J5dGUgKmJ1ZmZlciwgc2l6ZV90IGxlbmd0aCk7CiAgCi1AQCAtNTEwLDcg KzUxMiw3IEBAIGV4dGVybiBDT1JFX0FERFIgdW5wYWNrX3BvaW50ZXIgKHN0cnVjdAorQEAgLTUy MSw3ICs1MjIsNyBAQCBleHRlcm4gQ09SRV9BRERSIHVucGFja19wb2ludGVyIChzdHJ1Y3QKICAK ICBleHRlcm4gaW50IHVucGFja192YWx1ZV9iaXRzX2FzX2xvbmcgKHN0cnVjdCB0eXBlICpmaWVs ZF90eXBlLAogIAkJCQkgICAgICBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKQEAgLTQzODUsNyAr NDM4NCw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWx1ZS5oCiAgCQkJCSAg ICAgIGludCBiaXRzaXplLAogIAkJCQkgICAgICBjb25zdCBzdHJ1Y3QgdmFsdWUgKm9yaWdpbmFs X3ZhbHVlLAogIAkJCQkgICAgICBMT05HRVNUICpyZXN1bHQpOwotQEAgLTUxOSwxMiArNTIxLDEy IEBAIGV4dGVybiBMT05HRVNUIHVucGFja19maWVsZF9hc19sb25nIChzdHIKK0BAIC01MzAsMTIg KzUzMSwxMiBAQCBleHRlcm4gTE9OR0VTVCB1bnBhY2tfZmllbGRfYXNfbG9uZyAoc3RyCiAgCQkJ CSAgICAgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAgCQkJCSAgICAgaW50IGZpZWxkbm8pOwog IGV4dGVybiBpbnQgdW5wYWNrX3ZhbHVlX2ZpZWxkX2FzX2xvbmcgKHN0cnVjdCB0eXBlICp0eXBl LCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKQEAgLTQ0MDAsNyArNDM5OSw3IEBAIEluZGV4OiBn ZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWx1ZS5oCiAgCQkJCQkgICBjb25zdCBzdHJ1Y3QgdmFs dWUgKnZhbCk7CiAgCiAgZXh0ZXJuIHZvaWQgcGFja19sb25nIChnZGJfYnl0ZSAqYnVmLCBzdHJ1 Y3QgdHlwZSAqdHlwZSwgTE9OR0VTVCBudW0pOwotQEAgLTU4MywxMiArNTg1LDEyIEBAIGV4dGVy biBzdHJ1Y3QgdmFsdWUgKmRlZmF1bHRfcmVhZF92YXJfdmEKK0BAIC01OTQsMTIgKzU5NSwxMiBA QCBleHRlcm4gc3RydWN0IHZhbHVlICpkZWZhdWx0X3JlYWRfdmFyX3ZhCiAgZXh0ZXJuIHN0cnVj dCB2YWx1ZSAqYWxsb2NhdGVfdmFsdWUgKHN0cnVjdCB0eXBlICp0eXBlKTsKICBleHRlcm4gc3Ry dWN0IHZhbHVlICphbGxvY2F0ZV92YWx1ZV9sYXp5IChzdHJ1Y3QgdHlwZSAqdHlwZSk7CiAgZXh0 ZXJuIHZvaWQgYWxsb2NhdGVfdmFsdWVfY29udGVudHMgKHN0cnVjdCB2YWx1ZSAqdmFsdWUpOwpA QCAtNDQxOSw3ICs0NDE4LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3ZhbHVl LmgKICAKICBleHRlcm4gc3RydWN0IHZhbHVlICphbGxvY2F0ZV9yZXBlYXRfdmFsdWUgKHN0cnVj dCB0eXBlICp0eXBlLCBpbnQgY291bnQpOwogIAotQEAgLTY2MCwxNiArNjYyLDE2IEBAIGV4dGVy biBpbnQgZmluZF9vdmVybG9hZF9tYXRjaCAoc3RydWN0IHYKK0BAIC02NzEsMTYgKzY3MiwxNiBA QCBleHRlcm4gaW50IGZpbmRfb3ZlcmxvYWRfbWF0Y2ggKHN0cnVjdCB2CiAgCiAgZXh0ZXJuIHN0 cnVjdCB2YWx1ZSAqdmFsdWVfZmllbGQgKHN0cnVjdCB2YWx1ZSAqYXJnMSwgaW50IGZpZWxkbm8p OwogIApAQCAtNDQzOSw3ICs0NDM4LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2Ri L3ZhbHVlLmgKICAKICBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1ZV9jYXN0X3BvaW50ZXJzIChz dHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdmFsdWUgKiwgaW50KTsKICAKLUBAIC03NjMsNyArNzY1LDcg QEAgZXh0ZXJuIHZvaWQgc2V0X2ludGVybmFsdmFyX3N0cmluZyAoc3RydQorQEAgLTc3NCw3ICs3 NzUsNyBAQCBleHRlcm4gdm9pZCBzZXRfaW50ZXJuYWx2YXJfc3RyaW5nIChzdHJ1CiAgZXh0ZXJu IHZvaWQgY2xlYXJfaW50ZXJuYWx2YXIgKHN0cnVjdCBpbnRlcm5hbHZhciAqdmFyKTsKICAKICBl eHRlcm4gdm9pZCBzZXRfaW50ZXJuYWx2YXJfY29tcG9uZW50IChzdHJ1Y3QgaW50ZXJuYWx2YXIg KnZhciwKQEAgLTQ0NDgsNyArNDQ0Nyw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dk Yi92YWx1ZS5oCiAgCQkJCSAgICAgICBpbnQgYml0cG9zLCBpbnQgYml0c2l6ZSwKICAJCQkJICAg ICAgIHN0cnVjdCB2YWx1ZSAqbmV3dmFsdWUpOwogIAotQEAgLTg0NSw3ICs4NDcsNyBAQCBleHRl cm4gc3RydWN0IHZhbHVlICp2YWx1ZV94X3Vub3AgKHN0cnVjCitAQCAtODU2LDcgKzg1Nyw3IEBA IGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX3hfdW5vcCAoc3RydWMKICAJCQkJICAgZW51bSBu b3NpZGUgbm9zaWRlKTsKICAKICBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1ZV9mbl9maWVsZCAo c3RydWN0IHZhbHVlICoqYXJnMXAsIHN0cnVjdCBmbl9maWVsZCAqZiwKQEAgLTQ0NTcsNyArNDQ1 Niw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWx1ZS5oCiAgCiAgZXh0ZXJu IGludCBiaW5vcF90eXBlc191c2VyX2RlZmluZWRfcCAoZW51bSBleHBfb3Bjb2RlIG9wLAogIAkJ CQkgICAgICAgc3RydWN0IHR5cGUgKnR5cGUxLAotQEAgLTg3Myw3ICs4NzUsOCBAQCBleHRlcm4g dm9pZCByZWxlYXNlX3ZhbHVlX29yX2luY3JlZiAoc3RyCitAQCAtODg0LDcgKzg4NSw4IEBAIGV4 dGVybiB2b2lkIHJlbGVhc2VfdmFsdWVfb3JfaW5jcmVmIChzdHIKICBleHRlcm4gaW50IHJlY29y ZF9sYXRlc3RfdmFsdWUgKHN0cnVjdCB2YWx1ZSAqdmFsKTsKICAKICBleHRlcm4gdm9pZCBtb2Rp ZnlfZmllbGQgKHN0cnVjdCB0eXBlICp0eXBlLCBnZGJfYnl0ZSAqYWRkciwKQEAgLTQ0NjcsNyAr NDQ2Niw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi92YWx1ZS5oCiAgCiAgZXh0 ZXJuIHZvaWQgdHlwZV9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGNoYXIgKnZhcnN0 cmluZywKICAJCQlzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgc2hvdyk7Ci1AQCAtOTAzLDcg KzkwNiw3IEBAIGV4dGVybiB2b2lkIHZhbHVlX3ByaW50X2FycmF5X2VsZW1lbnRzICgKK0BAIC05 MTQsNyArOTE2LDcgQEAgZXh0ZXJuIHZvaWQgdmFsdWVfcHJpbnRfYXJyYXlfZWxlbWVudHMgKAog IGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX3JlbGVhc2VfdG9fbWFyayAoc3RydWN0IHZhbHVl ICptYXJrKTsKICAKICBleHRlcm4gdm9pZCB2YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBj b25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKQEAgLTQ0NzYsNyArNDQ3NSw3IEBAIEluZGV4OiBnZGIt Ny41LjUwLjIwMTMwMjE1L2dkYi92YWx1ZS5oCiAgCQkgICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0 cmVhbSwgaW50IHJlY3Vyc2UsCiAgCQkgICAgICAgY29uc3Qgc3RydWN0IHZhbHVlICp2YWwsCiAg CQkgICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMsCi1AQCAt OTUyLDEwICs5NTUsMTEgQEAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfbGl0ZXJhbF9jb21w bAorQEAgLTk2MywxMCArOTY1LDExIEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2xpdGVy YWxfY29tcGwKICBleHRlcm4gc3RydWN0IHZhbHVlICpmaW5kX2Z1bmN0aW9uX2luX2luZmVyaW9y IChjb25zdCBjaGFyICosCiAgCQkJCQkJc3RydWN0IG9iamZpbGUgKiopOwogIAoKZGlmZiAtLWdp dCBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0yMm9mMjUucGF0Y2ggYi9nZGItcmhiejc5NTQyNC1i aXRwb3MtMjJvZjI1LnBhdGNoCmluZGV4IDA3ZDA1ODMuLmMzOTY1NTQgMTAwNjQ0Ci0tLSBhL2dk Yi1yaGJ6Nzk1NDI0LWJpdHBvcy0yMm9mMjUucGF0Y2gKKysrIGIvZ2RiLXJoYno3OTU0MjQtYml0 cG9zLTIyb2YyNS5wYXRjaApAQCAtOTYsMTAgKzk2LDEwIEBAIENvbnRlbnQtVHlwZTogdGV4dC94 LXBhdGNoCiBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA3Yml0CiBDb250ZW50LURpc3Bvc2l0 aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1iaXRwb3Mtd3AucGF0Y2gKIAotSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAyMTUvZ2RiL2FybS1saW51eC1uYXQuYworSW5kZXg6IGdkYi03LjYuNTAuMjAx MzA3MzEtY3ZzL2dkYi9hcm0tbGludXgtbmF0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUw LjIwMTMwMjE1Lm9yaWcvZ2RiL2FybS1saW51eC1uYXQuYwkyMDEzLTAyLTE1IDIyOjQwOjE4LjAw MDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2FybS1saW51eC1uYXQu YwkyMDEzLTAyLTE1IDIyOjQyOjQ1Ljk4ODgwNDMwNiArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAx MzA3MzEtY3ZzLm9yaWcvZ2RiL2FybS1saW51eC1uYXQuYwkyMDEzLTA4LTAyIDE2OjQyOjI5LjU2 NTYzMjg5NSArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9hcm0tbGludXgt bmF0LmMJMjAxMy0wOC0wMiAxNjo0MjozNC4wOTQ2MzkxMDQgKzAyMDAKIEBAIC0xMTA1LDcgKzEx MDUsNyBAQCBhcm1fbGludXhfcmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50IChDCiAgCiAgLyog SW5zZXJ0IGEgSGFyZHdhcmUgYnJlYWtwb2ludC4gICovCkBAIC0xMjcsMTAgKzEyNywxMCBAQCBJ bmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvYXJtLWxpbnV4LW5hdC5jCiAgewogICAgcmV0 dXJuIHN0YXJ0IDw9IGFkZHIgJiYgc3RhcnQgKyBsZW5ndGggLSAxID49IGFkZHI7CiAgfQotSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2kzODYtbmF0LmMKK0luZGV4OiBnZGItNy42LjUw LjIwMTMwNzMxLWN2cy9nZGIvaTM4Ni1uYXQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAu MjAxMzAyMTUub3JpZy9nZGIvaTM4Ni1uYXQuYwkyMDEzLTAyLTE1IDIyOjQxOjUzLjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2kzODYtbmF0LmMJMjAxMy0wMi0x NSAyMjo0MzoxNC4wMDU4Mzg3NDEgKzAxMDAKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5v cmlnL2dkYi9pMzg2LW5hdC5jCTIwMTMtMDgtMDIgMTY6NDI6MjkuNTY2NjMyODk2ICswMjAwCisr KysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2kzODYtbmF0LmMJMjAxMy0wOC0wMiAxNjo0 MjozNC4wOTU2MzkxMDUgKzAyMDAKIEBAIC01ODksNyArNTg5LDcgQEAgaTM4Nl91cGRhdGVfaW5m ZXJpb3JfZGVidWdfcmVncyAoc3RydWN0CiAgICAgb2YgdGhlIHR5cGUgVFlQRS4gIFJldHVybiAw IG9uIHN1Y2Nlc3MsIC0xIG9uIGZhaWx1cmUuICAqLwogIApAQCAtMTQ5LDEwICsxNDksMTAgQEAg SW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL2kzODYtbmF0LmMKICAJCQlzdHJ1Y3QgZXhw cmVzc2lvbiAqY29uZCkKICB7CiAgICBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRl Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvaWE2NC1saW51eC1uYXQuYworSW5kZXg6 IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9pYTY0LWxpbnV4LW5hdC5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9pYTY0LWxpbnV4LW5hdC5jCTIwMTMt MDItMTUgMjI6MzQ6MTguMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIxNS9n ZGIvaWE2NC1saW51eC1uYXQuYwkyMDEzLTAyLTE1IDIyOjQyOjQ1Ljk4OTgwNDMwOSArMDEwMAor LS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2lhNjQtbGludXgtbmF0LmMJMjAx My0wOC0wMiAxNjo0MjoyOS41NjY2MzI4OTYgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMx LWN2cy9nZGIvaWE2NC1saW51eC1uYXQuYwkyMDEzLTA4LTAyIDE2OjQyOjM0LjA5NTYzOTEwNSAr MDIwMAogQEAgLTU0Miw3ICs1NDIsNyBAQCBpc19wb3dlcl9vZl8yIChpbnQgdmFsKQogIH0KICAK QEAgLTE3MSwxMSArMTcxLDExIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9pYTY0 LWxpbnV4LW5hdC5jCiAgCQkJICAgICAgc3RydWN0IGV4cHJlc3Npb24gKmNvbmQpCiAgewogICAg aW50IGlkeDsKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9pbmYtdHRyYWNlLmMKK0lu ZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvaW5mLXR0cmFjZS5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9pbmYtdHRyYWNlLmMJMjAxMy0wMi0x NSAyMjo0MDoxOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9p bmYtdHRyYWNlLmMJMjAxMy0wMi0xNSAyMjo0Mjo0NS45ODk4MDQzMDkgKzAxMDAKLUBAIC0zMTMs MTQgKzMxMywxNCBAQCBpbmZfdHRyYWNlX2Rpc2FibGVfcGFnZV9wcm90ZWN0aW9ucyAocGlkCist LS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvaW5mLXR0cmFjZS5jCTIwMTMtMDgt MDIgMTY6NDI6MjkuNTY3NjMyODk4ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMv Z2RiL2luZi10dHJhY2UuYwkyMDEzLTA4LTAyIDE2OjQyOjM0LjA5NTYzOTEwNSArMDIwMAorQEAg LTMxNCwxNCArMzE0LDE0IEBAIGluZl90dHJhY2VfZGlzYWJsZV9wYWdlX3Byb3RlY3Rpb25zIChw aWQKICAgICB0eXBlIFRZUEUuICAqLwogIAogIHN0YXRpYyBpbnQKQEAgLTE5Myw3ICsxOTMsNyBA QCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvaW5mLXR0cmFjZS5jCiAgCiAgICBnZGJf YXNzZXJ0ICh0eXBlID09IGh3X3dyaXRlKTsKICAKLUBAIC0zMzcsMTQgKzMzNywxNCBAQCBpbmZf dHRyYWNlX2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIKK0BAIC0zMzgsMTQgKzMzOCwxNCBA QCBpbmZfdHRyYWNlX2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIKICAgICB0eXBlIFRZUEUu ICAqLwogIAogIHN0YXRpYyBpbnQKQEAgLTIxMSwxMSArMjExLDExIEBAIEluZGV4OiBnZGItNy41 LjUwLjIwMTMwMjE1L2dkYi9pbmYtdHRyYWNlLmMKICAKICAgIGdkYl9hc3NlcnQgKHR5cGUgPT0g aHdfd3JpdGUpOwogIAotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL21pcHMtbGludXgt bmF0LmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvbWlwcy1saW51eC1uYXQu YwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvbWlwcy1saW51 eC1uYXQuYwkyMDEzLTAyLTE1IDIyOjQwOjE4LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUu NTAuMjAxMzAyMTUvZ2RiL21pcHMtbGludXgtbmF0LmMJMjAxMy0wMi0xNSAyMjo0Mjo0NS45OTA4 MDQzMTEgKzAxMDAKLUBAIC0xMDE3LDcgKzEwMTcsNyBAQCBwb3B1bGF0ZV9yZWdzX2Zyb21fd2F0 Y2hlcyAoc3RydWN0IHB0X3dhCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIv bWlwcy1saW51eC1uYXQuYwkyMDEzLTA4LTAyIDE2OjQyOjI5LjU2ODYzMjg5OSArMDIwMAorKysr IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9taXBzLWxpbnV4LW5hdC5jCTIwMTMtMDgtMDIg MTY6NDI6MzQuMDk2NjM5MTA2ICswMjAwCitAQCAtNjQ0LDcgKzY0NCw3IEBAIG1pcHNfbGludXhf bmV3X3RocmVhZCAoc3RydWN0IGx3cF9pbmZvICoKICAgICB3YXRjaC4gIFJldHVybiB6ZXJvIG9u IHN1Y2Nlc3MuICAqLwogIAogIHN0YXRpYyBpbnQKQEAgLTIyNCw3ICsyMjQsNyBAQCBJbmRleDog Z2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvbWlwcy1saW51eC1uYXQuYwogIAkJCSAgICAgIHN0cnVj dCBleHByZXNzaW9uICpjb25kKQogIHsKICAgIHN0cnVjdCBwdF93YXRjaF9yZWdzIHJlZ3M7Ci1A QCAtMTA2Nyw3ICsxMDY3LDcgQEAgbWlwc19saW51eF9pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9B RERSCitAQCAtNjk3LDcgKzY5Nyw3IEBAIG1pcHNfbGludXhfaW5zZXJ0X3dhdGNocG9pbnQgKENP UkVfQUREUgogICAgIFJldHVybiB6ZXJvIG9uIHN1Y2Nlc3MuICAqLwogIAogIHN0YXRpYyBpbnQK QEAgLTIzMywxMCArMjMzLDEwIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9taXBz LWxpbnV4LW5hdC5jCiAgCQkJICAgICAgc3RydWN0IGV4cHJlc3Npb24gKmNvbmQpCiAgewogICAg aW50IHJldHZhbDsKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9udG8tcHJvY2ZzLmMK K0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvbnRvLXByb2Nmcy5jCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9udG8tcHJvY2ZzLmMJMjAxMy0w MS0wMSAwNzozMjo0Ny4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dk Yi9udG8tcHJvY2ZzLmMJMjAxMy0wMi0xNSAyMjo0Mjo0NS45OTA4MDQzMTEgKzAxMDAKKy0tLSBn ZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9udG8tcHJvY2ZzLmMJMjAxMy0wOC0wMiAx Njo0MjoyOS41Njg2MzI4OTkgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIv bnRvLXByb2Nmcy5jCTIwMTMtMDgtMDIgMTY6NDI6MzQuMDk2NjM5MTA2ICswMjAwCiBAQCAtNjks MTAgKzY5LDEwIEBAIHN0YXRpYyBwdGlkX3QgZG9fYXR0YWNoIChwdGlkX3QgcHRpZCk7CiAgCiAg c3RhdGljIGludCBwcm9jZnNfY2FuX3VzZV9od19icmVha3BvaW50IChpbnQsIGludCwgaW50KTsK QEAgLTI2NywxMSArMjY3LDExIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9udG8t cHJvY2ZzLmMKICAJCQkgICAgIHN0cnVjdCBleHByZXNzaW9uICpjb25kKQogIHsKICAgIHJldHVy biBwcm9jZnNfaHdfd2F0Y2hwb2ludCAoYWRkciwgbGVuLCB0eXBlKTsKLUluZGV4OiBnZGItNy41 LjUwLjIwMTMwMjE1L2dkYi9wcGMtbGludXgtbmF0LmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMw NzMxLWN2cy9nZGIvcHBjLWxpbnV4LW5hdC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4y MDEzMDIxNS5vcmlnL2dkYi9wcGMtbGludXgtbmF0LmMJMjAxMy0wMi0xNSAyMjo0MDoxOC4wMDAw MDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9wcGMtbGludXgtbmF0LmMJ MjAxMy0wMi0xNSAyMjo0Mjo0NS45OTE4MDQzMTMgKzAxMDAKLUBAIC0xODM4LDExICsxODM4LDEx IEBAIGNhbl91c2Vfd2F0Y2hwb2ludF9jb25kX2FjY2VsICh2b2lkKQorLS0tIGdkYi03LjYuNTAu MjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL3BwYy1saW51eC1uYXQuYwkyMDEzLTA4LTAyIDE2OjQyOjI5 LjU3MDYzMjkwMiArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9wcGMtbGlu dXgtbmF0LmMJMjAxMy0wOC0wMiAxNjo0MjozNC4wOTc2MzkxMDggKzAyMDAKK0BAIC0xODUzLDEx ICsxODUzLDExIEBAIGNhbl91c2Vfd2F0Y2hwb2ludF9jb25kX2FjY2VsICh2b2lkKQogICAgIENP TkRJVElPTl9WQUxVRSB3aWxsIGhvbGQgdGhlIHZhbHVlIHdoaWNoIHNob3VsZCBiZSBwdXQgaW4g dGhlCiAgICAgRFZDIHJlZ2lzdGVyLiAgKi8KICBzdGF0aWMgdm9pZApAQCAtMjg2LDcgKzI4Niw3 IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9wcGMtbGludXgtbmF0LmMKICAgIENP UkVfQUREUiBhZGRyX2VuZF9kYXRhLCBhZGRyX2VuZF9kdmM7CiAgCiAgICAvKiBUaGUgRFZDIHJl Z2lzdGVyIGNvbXBhcmVzIGJ5dGVzIHdpdGhpbiBmaXhlZC1sZW5ndGggd2luZG93cyB3aGljaAot QEAgLTE5MjksNyArMTkyOSw3IEBAIG51bV9tZW1vcnlfYWNjZXNzZXMgKHN0cnVjdCB2YWx1ZSAq dikKK0BAIC0xOTQ0LDcgKzE5NDQsNyBAQCBudW1fbWVtb3J5X2FjY2Vzc2VzIChzdHJ1Y3QgdmFs dWUgKnYpCiAgICAgb2YgdGhlIGNvbnN0YW50LiAgKi8KICBzdGF0aWMgaW50CiAgY2hlY2tfY29u ZGl0aW9uIChDT1JFX0FERFIgd2F0Y2hfYWRkciwgc3RydWN0IGV4cHJlc3Npb24gKmNvbmQsCkBA IC0yOTUsNyArMjk1LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3BwYy1saW51 eC1uYXQuYwogIHsKICAgIGludCBwYyA9IDEsIG51bV9hY2Nlc3Nlc19sZWZ0LCBudW1fYWNjZXNz ZXNfcmlnaHQ7CiAgICBzdHJ1Y3QgdmFsdWUgKmxlZnRfdmFsLCAqcmlnaHRfdmFsLCAqbGVmdF9j aGFpbiwgKnJpZ2h0X2NoYWluOwotQEAgLTE5OTYsNyArMTk5Niw3IEBAIGNoZWNrX2NvbmRpdGlv biAoQ09SRV9BRERSIHdhdGNoX2FkZHIsIHMKK0BAIC0yMDExLDcgKzIwMTEsNyBAQCBjaGVja19j b25kaXRpb24gKENPUkVfQUREUiB3YXRjaF9hZGRyLCBzCiAgICAgdGhlIGNvbmRpdGlvbiBleHBy ZXNzaW9uLCB0aHVzIG9ubHkgdHJpZ2dlcmluZyB0aGUgd2F0Y2hwb2ludCB3aGVuIGl0IGlzCiAg ICAgdHJ1ZS4gICovCiAgc3RhdGljIGludApAQCAtMzA0LDcgKzMwNCw3IEBAIEluZGV4OiBnZGIt Ny41LjUwLjIwMTMwMjE1L2dkYi9wcGMtbGludXgtbmF0LmMKICAJCQkJCSAgc3RydWN0IGV4cHJl c3Npb24gKmNvbmQpCiAgewogICAgQ09SRV9BRERSIGRhdGFfdmFsdWU7Ci1AQCAtMjAxMyw3ICsy MDEzLDcgQEAgcHBjX2xpbnV4X2Nhbl9hY2NlbF93YXRjaHBvaW50X2NvbmRpdGlvbgorQEAgLTIw MjgsNyArMjAyOCw3IEBAIHBwY19saW51eF9jYW5fYWNjZWxfd2F0Y2hwb2ludF9jb25kaXRpb24K ICAKICBzdGF0aWMgdm9pZAogIGNyZWF0ZV93YXRjaHBvaW50X3JlcXVlc3QgKHN0cnVjdCBwcGNf aHdfYnJlYWtwb2ludCAqcCwgQ09SRV9BRERSIGFkZHIsCkBAIC0zMTMsNyArMzEzLDcgQEAgSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3BwYy1saW51eC1uYXQuYwogIAkJCSAgIGludCBp bnNlcnQpCiAgewogICAgaWYgKGxlbiA9PSAxCi1AQCAtMjA1OCw3ICsyMDU4LDcgQEAgY3JlYXRl X3dhdGNocG9pbnRfcmVxdWVzdCAoc3RydWN0IHBwY19odworQEAgLTIwNzMsNyArMjA3Myw3IEBA IGNyZWF0ZV93YXRjaHBvaW50X3JlcXVlc3QgKHN0cnVjdCBwcGNfaHcKICB9CiAgCiAgc3RhdGlj IGludApAQCAtMzIyLDcgKzMyMiw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9w cGMtbGludXgtbmF0LmMKICAJCQkgICAgIHN0cnVjdCBleHByZXNzaW9uICpjb25kKQogIHsKICAg IHN0cnVjdCBsd3BfaW5mbyAqbHA7Ci1AQCAtMjEyNiw3ICsyMTI2LDcgQEAgcHBjX2xpbnV4X2lu c2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYQorQEAgLTIxNDEsNyArMjE0MSw3IEBAIHBwY19s aW51eF9pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGEKICB9CiAgCiAgc3RhdGljIGludApA QCAtMzMxLDcgKzMzMSw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9wcGMtbGlu dXgtbmF0LmMKICAJCQkgICAgIHN0cnVjdCBleHByZXNzaW9uICpjb25kKQogIHsKICAgIHN0cnVj dCBsd3BfaW5mbyAqbHA7Ci1AQCAtMjI2Niw3ICsyMjY2LDcgQEAgcHBjX2xpbnV4X3N0b3BwZWRf Ynlfd2F0Y2hwb2ludCAodm9pZCkKK0BAIC0yMjkyLDcgKzIyOTIsNyBAQCBwcGNfbGludXhfc3Rv cHBlZF9ieV93YXRjaHBvaW50ICh2b2lkKQogIHN0YXRpYyBpbnQKICBwcGNfbGludXhfd2F0Y2hw b2ludF9hZGRyX3dpdGhpbl9yYW5nZSAoc3RydWN0IHRhcmdldF9vcHMgKnRhcmdldCwKICAJCQkJ CUNPUkVfQUREUiBhZGRyLApAQCAtMzQwLDEwICszNDAsMTAgQEAgSW5kZXg6IGdkYi03LjUuNTAu MjAxMzAyMTUvZ2RiL3BwYy1saW51eC1uYXQuYwogIHsKICAgIGludCBtYXNrOwogIAotSW5kZXg6 IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3Byb2Nmcy5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEz MDczMS1jdnMvZ2RiL3Byb2Nmcy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIx NS5vcmlnL2dkYi9wcm9jZnMuYwkyMDEzLTAyLTE1IDIyOjQwOjE4LjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3Byb2Nmcy5jCTIwMTMtMDItMTUgMjI6NDI6NDUu OTkyODA0MzE1ICswMTAwCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvcHJv Y2ZzLmMJMjAxMy0wOC0wMiAxNjo0MjoyOS41NzI2MzI5MDQgKzAyMDAKKysrKyBnZGItNy42LjUw LjIwMTMwNzMxLWN2cy9nZGIvcHJvY2ZzLmMJMjAxMy0wOC0wMiAxNjo0MjozNC4wOTg2MzkxMDkg KzAyMDAKIEBAIC0yNDMzLDcgKzI0MzMsNyBAQCBwcm9jZnNfYWRkcmVzc190b19ob3N0X3BvaW50 ZXIgKENPUkVfQURECiAgI2VuZGlmCiAgCkBAIC0zODAsMTEgKzM4MCwxMSBAQCBJbmRleDogZ2Ri LTcuNS41MC4yMDEzMDIxNS9nZGIvcHJvY2ZzLmMKICAJCQkgIHN0cnVjdCBleHByZXNzaW9uICpj b25kKQogIHsKICAgIHJldHVybiBwcm9jZnNfc2V0X3dhdGNocG9pbnQgKGluZmVyaW9yX3B0aWQs IGFkZHIsIDAsIDAsIDApOwotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3JlbW90ZS1t MzJyLXNkaS5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3JlbW90ZS1tMzJy LXNkaS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi9yZW1v dGUtbTMyci1zZGkuYwkyMDEzLTAxLTAxIDA3OjMyOjUwLjAwMDAwMDAwMCArMDEwMAotKysrIGdk Yi03LjUuNTAuMjAxMzAyMTUvZ2RiL3JlbW90ZS1tMzJyLXNkaS5jCTIwMTMtMDItMTUgMjI6NDI6 NDUuOTkzODA0MzE3ICswMTAwCi1AQCAtMTQxNywxNCArMTQxNywxNSBAQCBtMzJyX2Nhbl91c2Vf aHdfd2F0Y2hwb2ludCAoaW50IHR5cGUsIGluCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMu b3JpZy9nZGIvcmVtb3RlLW0zMnItc2RpLmMJMjAxMy0wOC0wMiAxNjo0MjoyOS41NzM2MzI5MDYg KzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvcmVtb3RlLW0zMnItc2RpLmMJ MjAxMy0wOC0wMiAxNjo0MjozNC4wOTk2MzkxMTEgKzAyMDAKK0BAIC0xNDE2LDE0ICsxNDE2LDE1 IEBAIG0zMnJfY2FuX3VzZV9od193YXRjaHBvaW50IChpbnQgdHlwZSwgaW4KICAgICB3YXRjaHBv aW50LiAgKi8KICAKICBzdGF0aWMgaW50CkBAIC00MDMsNyArNDAzLDcgQEAgSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAyMTUvZ2RiL3JlbW90ZS1tMzJyLXNkaS5jCiAgCiAgICBmb3IgKGkgPSAwOyBp IDwgTUFYX0FDQ0VTU19CUkVBS1M7IGkrKykKICAgICAgewotQEAgLTE0NDIsMTQgKzE0NDMsMTUg QEAgbTMycl9pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsCitAQCAtMTQ0MSwxNCAr MTQ0MiwxNSBAQCBtMzJyX2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwKICB9CiAg CiAgc3RhdGljIGludApAQCAtNDIyLDExICs0MjIsMTEgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAx MzAyMTUvZ2RiL3JlbW90ZS1tMzJyLXNkaS5jCiAgCiAgICBmb3IgKGkgPSAwOyBpIDwgTUFYX0FD Q0VTU19CUkVBS1M7IGkrKykKICAgICAgewotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2Ri L3JlbW90ZS1taXBzLmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvcmVtb3Rl LW1pcHMuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvcmVt b3RlLW1pcHMuYwkyMDEzLTAxLTAxIDA3OjMyOjUwLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjUuNTAuMjAxMzAyMTUvZ2RiL3JlbW90ZS1taXBzLmMJMjAxMy0wMi0xNSAyMjo0Mjo0NS45OTQ4 MDQzMTkgKzAxMDAKLUBAIC0yNDE5LDcgKzI0MTksNyBAQCBjYWxjdWxhdGVfbWFzayAoQ09SRV9B RERSIGFkZHIsIGludCBsZW4pCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIv cmVtb3RlLW1pcHMuYwkyMDEzLTA4LTAyIDE2OjQyOjI5LjU3NDYzMjkwNyArMDIwMAorKysrIGdk Yi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9yZW1vdGUtbWlwcy5jCTIwMTMtMDgtMDIgMTY6NDI6 MzQuMTAwNjM5MTEyICswMjAwCitAQCAtMjQyNiw3ICsyNDI2LDcgQEAgY2FsY3VsYXRlX21hc2sg KENPUkVfQUREUiBhZGRyLCBpbnQgbGVuKQogICAgIHdhdGNocG9pbnQuICAqLwogIAogIHN0YXRp YyBpbnQKQEAgLTQzNSw3ICs0MzUsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIv cmVtb3RlLW1pcHMuYwogIAkJCXN0cnVjdCBleHByZXNzaW9uICpjb25kKQogIHsKICAgIGlmICht aXBzX3NldF9icmVha3BvaW50IChhZGRyLCBsZW4sIHR5cGUpKQotQEAgLTI0MzEsNyArMjQzMSw3 IEBAIG1pcHNfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLAorQEAgLTI0MzgsNyAr MjQzOCw3IEBAIG1pcHNfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLAogIC8qIFJl bW92ZSBhIHdhdGNocG9pbnQuICAqLwogIAogIHN0YXRpYyBpbnQKQEAgLTQ0NCwxMSArNDQ0LDEx IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9yZW1vdGUtbWlwcy5jCiAgCQkJc3Ry dWN0IGV4cHJlc3Npb24gKmNvbmQpCiAgewogICAgaWYgKG1pcHNfY2xlYXJfYnJlYWtwb2ludCAo YWRkciwgbGVuLCB0eXBlKSkKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9yZW1vdGUu YworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9yZW1vdGUuYwogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjUuNTAuMjAxMzAyMTUub3JpZy9nZGIvcmVtb3RlLmMJMjAxMy0wMi0xNSAy Mjo0MDoxOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9yZW1v dGUuYwkyMDEzLTAyLTE1IDIyOjQyOjQ1Ljk5NjgwNDMyMyArMDEwMAotQEAgLTgxNTUsNyArODE1 NSw3IEBAIHdhdGNocG9pbnRfdG9fWl9wYWNrZXQgKGludCB0eXBlKQorLS0tIGdkYi03LjYuNTAu MjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL3JlbW90ZS5jCTIwMTMtMDgtMDIgMTY6NDI6MjkuNTc3NjMy OTExICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3JlbW90ZS5jCTIwMTMt MDgtMDIgMTY6NDI6MzQuMTAzNjM5MTE2ICswMjAwCitAQCAtODI3Nyw3ICs4Mjc3LDcgQEAgd2F0 Y2hwb2ludF90b19aX3BhY2tldCAoaW50IHR5cGUpCiAgfQogIAogIHN0YXRpYyBpbnQKQEAgLTQ1 Nyw3ICs0NTcsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvcmVtb3RlLmMKICAJ CQkgIHN0cnVjdCBleHByZXNzaW9uICpjb25kKQogIHsKICAgIHN0cnVjdCByZW1vdGVfc3RhdGUg KnJzID0gZ2V0X3JlbW90ZV9zdGF0ZSAoKTsKLUBAIC04MTcwLDcgKzgxNzAsNyBAQCByZW1vdGVf aW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyCitAQCAtODI5Nyw3ICs4Mjk3LDcgQEAg cmVtb3RlX2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkcgogICAgcCA9IHN0cmNociAo cnMtPmJ1ZiwgJ1wwJyk7CiAgICBhZGRyID0gcmVtb3RlX2FkZHJlc3NfbWFza2VkIChhZGRyKTsK ICAgIHAgKz0gaGV4bnVtc3RyIChwLCAoVUxPTkdFU1QpIGFkZHIpOwpAQCAtNDY2LDcgKzQ2Niw3 IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi9yZW1vdGUuYwogIAogICAgcHV0cGt0 IChycy0+YnVmKTsKICAgIGdldHBrdCAoJnJzLT5idWYsICZycy0+YnVmX3NpemUsIDApOwotQEAg LTgxOTAsNyArODE5MCw3IEBAIHJlbW90ZV9pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFk ZHIKK0BAIC04MzE3LDcgKzgzMTcsNyBAQCByZW1vdGVfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVf QUREUiBhZGRyCiAgCiAgc3RhdGljIGludAogIHJlbW90ZV93YXRjaHBvaW50X2FkZHJfd2l0aGlu X3JhbmdlIChzdHJ1Y3QgdGFyZ2V0X29wcyAqdGFyZ2V0LCBDT1JFX0FERFIgYWRkciwKQEAgLTQ3 NSw3ICs0NzUsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvcmVtb3RlLmMKICB7 CiAgICBDT1JFX0FERFIgZGlmZiA9IHJlbW90ZV9hZGRyZXNzX21hc2tlZCAoYWRkciAtIHN0YXJ0 KTsKICAKLUBAIC04MTk5LDcgKzgxOTksNyBAQCByZW1vdGVfd2F0Y2hwb2ludF9hZGRyX3dpdGhp bl9yYW5nZSAoc3RyCitAQCAtODMyNiw3ICs4MzI2LDcgQEAgcmVtb3RlX3dhdGNocG9pbnRfYWRk cl93aXRoaW5fcmFuZ2UgKHN0cgogIAogIAogIHN0YXRpYyBpbnQKQEAgLTQ4NCw3ICs0ODQsNyBA QCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvcmVtb3RlLmMKICAJCQkgIHN0cnVjdCBl eHByZXNzaW9uICpjb25kKQogIHsKICAgIHN0cnVjdCByZW1vdGVfc3RhdGUgKnJzID0gZ2V0X3Jl bW90ZV9zdGF0ZSAoKTsKLUBAIC04MjE0LDcgKzgyMTQsNyBAQCByZW1vdGVfcmVtb3ZlX3dhdGNo cG9pbnQgKENPUkVfQUREUiBhZGRyCitAQCAtODM0Niw3ICs4MzQ2LDcgQEAgcmVtb3RlX3JlbW92 ZV93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkcgogICAgcCA9IHN0cmNociAocnMtPmJ1ZiwgJ1ww Jyk7CiAgICBhZGRyID0gcmVtb3RlX2FkZHJlc3NfbWFza2VkIChhZGRyKTsKICAgIHAgKz0gaGV4 bnVtc3RyIChwLCAoVUxPTkdFU1QpIGFkZHIpOwpAQCAtNDkzLDEwICs0OTMsMTAgQEAgSW5kZXg6 IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3JlbW90ZS5jCiAgICBwdXRwa3QgKHJzLT5idWYpOwog ICAgZ2V0cGt0ICgmcnMtPmJ1ZiwgJnJzLT5idWZfc2l6ZSwgMCk7CiAgCi1JbmRleDogZ2RiLTcu NS41MC4yMDEzMDIxNS9nZGIvczM5MC1uYXQuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEt Y3ZzL2dkYi9zMzkwLW5hdC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5v cmlnL2dkYi9zMzkwLW5hdC5jCTIwMTMtMDItMTUgMjI6NDA6MTguMDAwMDAwMDAwICswMTAwCi0r KysgZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvczM5MC1uYXQuYwkyMDEzLTAyLTE1IDIyOjQyOjQ1 Ljk5NzgwNDMyNSArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL3Mz OTAtbmF0LmMJMjAxMy0wOC0wMiAxNjo0MjoyOS41Nzg2MzI5MTMgKzAyMDAKKysrKyBnZGItNy42 LjUwLjIwMTMwNzMxLWN2cy9nZGIvczM5MC1uYXQuYwkyMDEzLTA4LTAyIDE2OjQyOjM0LjEwMzYz OTExNiArMDIwMAogQEAgLTUxNiw3ICs1MTYsNyBAQCBzMzkwX2ZpeF93YXRjaF9wb2ludHMgKHN0 cnVjdCBsd3BfaW5mbyAqCiAgfQogIApAQCAtNTE1LDIxICs1MTUsMjAgQEAgSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAyMTUvZ2RiL3MzOTAtbmF0LmMKICAJCQlzdHJ1Y3QgZXhwcmVzc2lvbiAqY29u ZCkKICB7CiAgICBzdHJ1Y3QgbHdwX2luZm8gKmxwOwotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAy MTUvZ2RiL3RhcmdldC5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3Rhcmdl dC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDIxNS5vcmlnL2dkYi90YXJnZXQu YwkyMDEzLTAyLTE1IDIyOjQwOjE4LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAx MzAyMTUvZ2RiL3RhcmdldC5jCTIwMTMtMDItMTUgMjI6NDI6NDUuOTk3ODA0MzI1ICswMTAwCi1A QCAtNDksNyArNDksOCBAQCBzdGF0aWMgdm9pZCB0YXJnZXRfaW5mbyAoY2hhciAqLCBpbnQpOwot IHN0YXRpYyB2b2lkIGRlZmF1bHRfdGVybWluYWxfaW5mbyAoY2hhciAqLCBpbnQpOworLS0tIGdk Yi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL3RhcmdldC5jCTIwMTMtMDgtMDIgMTY6NDI6 MjkuNTgwNjMyOTE1ICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3Rhcmdl dC5jCTIwMTMtMDgtMDIgMTY6NDI6NTIuMTYwNjYzNzg3ICswMjAwCitAQCAtNDksNyArNDksNyBA QCBzdGF0aWMgdm9pZCB0YXJnZXRfaW5mbyAoY2hhciAqLCBpbnQpOworIHN0YXRpYyB2b2lkIGRl ZmF1bHRfdGVybWluYWxfaW5mbyAoY29uc3QgY2hhciAqLCBpbnQpOwogIAogIHN0YXRpYyBpbnQg ZGVmYXVsdF93YXRjaHBvaW50X2FkZHJfd2l0aGluX3JhbmdlIChzdHJ1Y3QgdGFyZ2V0X29wcyAq LAogLQkJCQkJCSBDT1JFX0FERFIsIENPUkVfQUREUiwgaW50KTsKLSsJCQkJCQkgQ09SRV9BRERS LCBDT1JFX0FERFIsCi0rCQkJCQkJIExPTkdFU1QpOworKwkJCQkJCSBDT1JFX0FERFIsIENPUkVf QUREUiwgTE9OR0VTVCk7CiAgCiAgc3RhdGljIGludCBkZWZhdWx0X3JlZ2lvbl9va19mb3JfaHdf d2F0Y2hwb2ludCAoQ09SRV9BRERSLCBMT05HRVNUKTsKICAKLUBAIC0xMTQsMTAgKzExNSwxMCBA QCBzdGF0aWMgaW50IGRlYnVnX3RvX2luc2VydF9od19icmVha3BvaW50CitAQCAtMTE0LDEwICsx MTQsMTAgQEAgc3RhdGljIGludCBkZWJ1Z190b19pbnNlcnRfaHdfYnJlYWtwb2ludAogIHN0YXRp YyBpbnQgZGVidWdfdG9fcmVtb3ZlX2h3X2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICosCiAg CQkJCQkgIHN0cnVjdCBicF90YXJnZXRfaW5mbyAqKTsKICAKQEAgLTU0Miw3ICs1NDEsNyBAQCBJ bmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdGFyZ2V0LmMKICAJCQkJICAgICAgIHN0cnVj dCBleHByZXNzaW9uICopOwogIAogIHN0YXRpYyBpbnQgZGVidWdfdG9fc3RvcHBlZF9ieV93YXRj aHBvaW50ICh2b2lkKTsKLUBAIC0xMjUsMTEgKzEyNiwxMiBAQCBzdGF0aWMgaW50IGRlYnVnX3Rv X3N0b3BwZWRfYnlfd2F0Y2hwb2luCitAQCAtMTI1LDExICsxMjUsMTIgQEAgc3RhdGljIGludCBk ZWJ1Z190b19zdG9wcGVkX2J5X3dhdGNocG9pbgogIHN0YXRpYyBpbnQgZGVidWdfdG9fc3RvcHBl ZF9kYXRhX2FkZHJlc3MgKHN0cnVjdCB0YXJnZXRfb3BzICosIENPUkVfQUREUiAqKTsKICAKICBz dGF0aWMgaW50IGRlYnVnX3RvX3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UgKHN0cnVjdCB0 YXJnZXRfb3BzICosCkBAIC01NTcsNyArNTU2LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAy MTUvZ2RiL3RhcmdldC5jCiAgCQkJCQkJICAgIHN0cnVjdCBleHByZXNzaW9uICopOwogIAogIHN0 YXRpYyB2b2lkIGRlYnVnX3RvX3Rlcm1pbmFsX2luaXQgKHZvaWQpOwotQEAgLTc1MSwxMCArNzUz LDEwIEBAIHVwZGF0ZV9jdXJyZW50X3RhcmdldCAodm9pZCkKK0BAIC03OTAsMTAgKzc5MSwxMCBA QCB1cGRhdGVfY3VycmVudF90YXJnZXQgKHZvaWQpCiAgCSAgICAoaW50ICgqKSAoc3RydWN0IGdk YmFyY2ggKiwgc3RydWN0IGJwX3RhcmdldF9pbmZvICopKQogIAkgICAgcmV0dXJuX21pbnVzX29u ZSk7CiAgICBkZV9mYXVsdCAodG9faW5zZXJ0X3dhdGNocG9pbnQsCkBAIC01NzAsNyArNTY5LDcg QEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3RhcmdldC5jCiAgCSAgICByZXR1cm5f bWludXNfb25lKTsKICAgIGRlX2ZhdWx0ICh0b19zdG9wcGVkX2J5X3dhdGNocG9pbnQsCiAgCSAg ICAoaW50ICgqKSAodm9pZCkpCi1AQCAtNzY3LDcgKzc2OSw3IEBAIHVwZGF0ZV9jdXJyZW50X3Rh cmdldCAodm9pZCkKK0BAIC04MDYsNyArODA3LDcgQEAgdXBkYXRlX2N1cnJlbnRfdGFyZ2V0ICh2 b2lkKQogICAgZGVfZmF1bHQgKHRvX3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludCwKICAJICAg IGRlZmF1bHRfcmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50KTsKICAgIGRlX2ZhdWx0ICh0b19j YW5fYWNjZWxfd2F0Y2hwb2ludF9jb25kaXRpb24sCkBAIC01NzksNyArNTc4LDcgQEAgSW5kZXg6 IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3RhcmdldC5jCiAgICAgICAgICAgICAgcmV0dXJuX3pl cm8pOwogICAgZGVfZmF1bHQgKHRvX3Rlcm1pbmFsX2luaXQsCiAgCSAgICAodm9pZCAoKikgKHZv aWQpKQotQEAgLTM1NTgsNyArMzU2MCw3IEBAIGRlZmF1bHRfcmVnaW9uX29rX2Zvcl9od193YXRj aHBvaW50IChDT1IKK0BAIC0zNTk0LDcgKzM1OTUsNyBAQCBkZWZhdWx0X3JlZ2lvbl9va19mb3Jf aHdfd2F0Y2hwb2ludCAoQ09SCiAgc3RhdGljIGludAogIGRlZmF1bHRfd2F0Y2hwb2ludF9hZGRy X3dpdGhpbl9yYW5nZSAoc3RydWN0IHRhcmdldF9vcHMgKnRhcmdldCwKICAJCQkJICAgICAgQ09S RV9BRERSIGFkZHIsCkBAIC01ODgsNyArNTg3LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAy MTUvZ2RiL3RhcmdldC5jCiAgewogICAgcmV0dXJuIGFkZHIgPj0gc3RhcnQgJiYgYWRkciA8IHN0 YXJ0ICsgbGVuZ3RoOwogIH0KLUBAIC00MjY1LDcgKzQyNjcsNyBAQCBkZWJ1Z190b19yZWdpb25f b2tfZm9yX2h3X3dhdGNocG9pbnQgKENPCitAQCAtNDU1NSw3ICs0NTU2LDcgQEAgZGVidWdfdG9f cmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50IChDTwogIH0KICAKICBzdGF0aWMgaW50CkBAIC01 OTcsNyArNTk2LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3RhcmdldC5jCiAg CQkJCQkgc3RydWN0IGV4cHJlc3Npb24gKmNvbmQpCiAgewogICAgaW50IHJldHZhbDsKLUBAIC00 Mjc1LDggKzQyNzcsOCBAQCBkZWJ1Z190b19jYW5fYWNjZWxfd2F0Y2hwb2ludF9jb25kaXRpb24K K0BAIC00NTY1LDggKzQ1NjYsOCBAQCBkZWJ1Z190b19jYW5fYWNjZWxfd2F0Y2hwb2ludF9jb25k aXRpb24KICAKICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKICAJCSAgICAgICJ0 YXJnZXRfY2FuX2FjY2VsX3dhdGNocG9pbnRfY29uZGl0aW9uICIKQEAgLTYwOCw3ICs2MDcsNyBA QCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9nZGIvdGFyZ2V0LmMKICAJCSAgICAgIGhvc3Rf YWRkcmVzc190b19zdHJpbmcgKGNvbmQpLCAodW5zaWduZWQgbG9uZykgcmV0dmFsKTsKICAgIHJl dHVybiByZXR2YWw7CiAgfQotQEAgLTQzMTEsNyArNDMxMyw3IEBAIGRlYnVnX3RvX3N0b3BwZWRf ZGF0YV9hZGRyZXNzIChzdHJ1Y3QgdGEKK0BAIC00NjAxLDcgKzQ2MDIsNyBAQCBkZWJ1Z190b19z dG9wcGVkX2RhdGFfYWRkcmVzcyAoc3RydWN0IHRhCiAgc3RhdGljIGludAogIGRlYnVnX3RvX3dh dGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UgKHN0cnVjdCB0YXJnZXRfb3BzICp0YXJnZXQsCiAg CQkJCSAgICAgICBDT1JFX0FERFIgYWRkciwKQEAgLTYxNyw3ICs2MTYsNyBAQCBJbmRleDogZ2Ri LTcuNS41MC4yMDEzMDIxNS9nZGIvdGFyZ2V0LmMKICB7CiAgICBpbnQgcmV0dmFsOwogIAotQEAg LTQzMTksOSArNDMyMSw5IEBAIGRlYnVnX3RvX3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2Ug KHMKK0BAIC00NjA5LDkgKzQ2MTAsOSBAQCBkZWJ1Z190b193YXRjaHBvaW50X2FkZHJfd2l0aGlu X3JhbmdlIChzCiAgCQkJCQkJCSBzdGFydCwgbGVuZ3RoKTsKICAKICAgIGZwcmludGZfZmlsdGVy ZWQgKGdkYl9zdGRsb2csCkBAIC02MjksNyArNjI4LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAx MzAyMTUvZ2RiL3RhcmdldC5jCiAgICByZXR1cm4gcmV0dmFsOwogIH0KICAKLUBAIC00MzU2LDcg KzQzNTgsNyBAQCBkZWJ1Z190b19yZW1vdmVfaHdfYnJlYWtwb2ludCAoc3RydWN0IGdkCitAQCAt NDY0Niw3ICs0NjQ3LDcgQEAgZGVidWdfdG9fcmVtb3ZlX2h3X2JyZWFrcG9pbnQgKHN0cnVjdCBn ZAogIH0KICAKICBzdGF0aWMgaW50CkBAIC02MzgsNyArNjM3LDcgQEAgSW5kZXg6IGdkYi03LjUu NTAuMjAxMzAyMTUvZ2RiL3RhcmdldC5jCiAgCQkJICAgIHN0cnVjdCBleHByZXNzaW9uICpjb25k KQogIHsKICAgIGludCByZXR2YWw7Ci1AQCAtNDM2NCwxNCArNDM2NiwxNCBAQCBkZWJ1Z190b19p bnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkCitAQCAtNDY1NCwxNCArNDY1NSwxNCBAQCBk ZWJ1Z190b19pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkCiAgICByZXR2YWwgPSBkZWJ1 Z190YXJnZXQudG9faW5zZXJ0X3dhdGNocG9pbnQgKGFkZHIsIGxlbiwgdHlwZSwgY29uZCk7CiAg CiAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCkBAIC02NTYsNyArNjU1LDcgQEAg SW5kZXg6IGdkYi03LjUuNTAuMjAxMzAyMTUvZ2RiL3RhcmdldC5jCiAgCQkJICAgIHN0cnVjdCBl eHByZXNzaW9uICpjb25kKQogIHsKICAgIGludCByZXR2YWw7Ci1AQCAtNDM3OSw4ICs0MzgxLDgg QEAgZGVidWdfdG9fcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZAorQEAgLTQ2NjksOCAr NDY3MCw4IEBAIGRlYnVnX3RvX3JlbW92ZV93YXRjaHBvaW50IChDT1JFX0FERFIgYWQKICAgIHJl dHZhbCA9IGRlYnVnX3RhcmdldC50b19yZW1vdmVfd2F0Y2hwb2ludCAoYWRkciwgbGVuLCB0eXBl LCBjb25kKTsKICAKICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKQEAgLTY2Nywx MSArNjY2LDExIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi90YXJnZXQuYwogIAkJ ICAgICAgaG9zdF9hZGRyZXNzX3RvX3N0cmluZyAoY29uZCksICh1bnNpZ25lZCBsb25nKSByZXR2 YWwpOwogICAgcmV0dXJuIHJldHZhbDsKICB9Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDIxNS9n ZGIvdGFyZ2V0LmgKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvdGFyZ2V0LmgK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMjE1Lm9yaWcvZ2RiL3RhcmdldC5oCTIw MTMtMDItMTUgMjI6NDA6MTguMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDIx NS9nZGIvdGFyZ2V0LmgJMjAxMy0wMi0xNSAyMjo0Mjo0NS45OTg4MDQzMjggKzAxMDAKLUBAIC00 NjYsOCArNDY2LDggQEAgc3RydWN0IHRhcmdldF9vcHMKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMx LWN2cy5vcmlnL2dkYi90YXJnZXQuaAkyMDEzLTA4LTAyIDE2OjQyOjI5LjU4MDYzMjkxNSArMDIw MAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90YXJnZXQuaAkyMDEzLTA4LTAyIDE2 OjQyOjM0LjEwNTYzOTExOSArMDIwMAorQEAgLTM3Myw4ICszNzMsOCBAQCBzdHJ1Y3QgdGFyZ2V0 X29wcwogIAogICAgICAvKiBEb2N1bWVudGF0aW9uIG9mIHdoYXQgdGhlIHR3byByb3V0aW5lcyBi ZWxvdyBhcmUgZXhwZWN0ZWQgdG8gZG8gaXMKICAgICAgICAgcHJvdmlkZWQgd2l0aCB0aGUgY29y cmVzcG9uZGluZyB0YXJnZXRfKiBtYWNyb3MuICAqLwpAQCAtNjgyLDcgKzY4MSw3IEBAIEluZGV4 OiBnZGItNy41LjUwLjIwMTMwMjE1L2dkYi90YXJnZXQuaAogIAogICAgICBpbnQgKCp0b19pbnNl cnRfbWFza193YXRjaHBvaW50KSAoc3RydWN0IHRhcmdldF9vcHMgKiwKICAJCQkJICAgICAgQ09S RV9BRERSLCBDT1JFX0FERFIsIGludCk7Ci1AQCAtNDc4LDEzICs0NzgsMTMgQEAgc3RydWN0IHRh cmdldF9vcHMKK0BAIC0zODUsMTMgKzM4NSwxMyBAQCBzdHJ1Y3QgdGFyZ2V0X29wcwogICAgICBp bnQgdG9faGF2ZV9jb250aW51YWJsZV93YXRjaHBvaW50OwogICAgICBpbnQgKCp0b19zdG9wcGVk X2RhdGFfYWRkcmVzcykgKHN0cnVjdCB0YXJnZXRfb3BzICosIENPUkVfQUREUiAqKTsKICAgICAg aW50ICgqdG9fd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSkgKHN0cnVjdCB0YXJnZXRfb3Bz ICosCgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYno3OTU0MjQtYml0cG9zLTIzb2YyNS5wYXRjaCBiL2dk Yi1yaGJ6Nzk1NDI0LWJpdHBvcy0yM29mMjUucGF0Y2gKaW5kZXggMDhlMmNkNC4uODI3ZDY0ZCAx MDA2NDQKLS0tIGEvZ2RiLXJoYno3OTU0MjQtYml0cG9zLTIzb2YyNS5wYXRjaAorKysgYi9nZGIt cmhiejc5NTQyNC1iaXRwb3MtMjNvZjI1LnBhdGNoCkBAIC0xMzcsMTAgKzEzNywxMCBAQCBDb250 ZW50LVR5cGU6IHRleHQveC1wYXRjaAogQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogN2JpdAog Q29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9Yml0cG9zLXRkZXAucGF0 Y2gKIAotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL2FscGhhLXRkZXAuYworSW5kZXg6 IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9hbHBoYS10ZGVwLmMKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy41LjUwLjIwMTMwMzEwLm9yaWcvZ2RiL2FscGhhLXRkZXAuYwkyMDEzLTAzLTEwIDE2 OjQ0OjM0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL2FscGhh LXRkZXAuYwkyMDEzLTAzLTEwIDE2OjQ0OjQyLjExMTU5OTgzOCArMDEwMAorLS0tIGdkYi03LjYu NTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2FscGhhLXRkZXAuYwkyMDEzLTA4LTAyIDE2OjQzOjAx LjEyODY3NjA5NCArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9hbHBoYS10 ZGVwLmMJMjAxMy0wOC0wMiAxNjo0MzowNC43MjM2ODEwMDQgKzAyMDAKIEBAIC0yOTksMTggKzI5 OSwxOCBAQCBhbHBoYV9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnCiAgewogICAg ZW51bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gp OwpAQCAtMTg0LDEwICsxODQsMTAgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL2Fs cGhhLXRkZXAuYwogIAkgICAgICBtZW1jcHkgKGFyZ19yZWdfYnVmZmVyICsgb2Zmc2V0LCBjb250 ZW50cywgdGxlbik7CiAgCSAgICAgIG9mZnNldCArPSB0bGVuOwogIAkgICAgICBjb250ZW50cyAr PSB0bGVuOwotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL2FtZDY0LXRkZXAuYworSW5k ZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9hbWQ2NC10ZGVwLmMKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy41LjUwLjIwMTMwMzEwLm9yaWcvZ2RiL2FtZDY0LXRkZXAuYwkyMDEzLTAzLTEw IDE2OjE2OjIzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL2Ft ZDY0LXRkZXAuYwkyMDEzLTAzLTEwIDE2OjQ0OjQyLjExMjU5OTgzOCArMDEwMAorLS0tIGdkYi03 LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2FtZDY0LXRkZXAuYwkyMDEzLTA4LTAyIDE2OjQz OjAxLjEzMDY3NjA5NyArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9hbWQ2 NC10ZGVwLmMJMjAxMy0wOC0wMiAxNjo0MzowNC43MjQ2ODEwMDYgKzAyMDAKIEBAIC02MTYsNyAr NjE2LDcgQEAgYW1kNjRfcmV0dXJuX3ZhbHVlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYQogIHsKICAg IHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwpAQCAt MjE3LDEwICsyMTcsMTAgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL2FtZDY0LXRk ZXAuYwogICAgICAgIGVudW0gYW1kNjRfcmVnX2NsYXNzIGNsYXNzWzJdOwogICAgICAgIGludCBu ZWVkZWRfaW50ZWdlcl9yZWdzID0gMDsKICAgICAgICBpbnQgbmVlZGVkX3NzZV9yZWdzID0gMDsK LUluZGV4OiBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9hbWQ2NC13aW5kb3dzLXRkZXAuYworSW5k ZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9hbWQ2NC13aW5kb3dzLXRkZXAuYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAzMTAub3JpZy9nZGIvYW1kNjQtd2luZG93cy10 ZGVwLmMJMjAxMy0wMS0wMSAwNzozMjozNy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUw LjIwMTMwMzEwL2dkYi9hbWQ2NC13aW5kb3dzLXRkZXAuYwkyMDEzLTAzLTEwIDE2OjQ0OjQyLjEx MjU5OTgzOCArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2FtZDY0 LXdpbmRvd3MtdGRlcC5jCTIwMTMtMDgtMDIgMTY6NDM6MDEuMTM1Njc2MTA0ICswMjAwCisrKysg Z2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2FtZDY0LXdpbmRvd3MtdGRlcC5jCTIwMTMtMDgt MDIgMTY6NDM6MDQuNzI0NjgxMDA2ICswMjAwCiBAQCAtNzksNyArNzksNyBAQCBhbWQ2NF93aW5k b3dzX3JldHVybl92YWx1ZSAoc3RydWN0IGdkYmFyCiAgCQkJICAgIHN0cnVjdCB0eXBlICp0eXBl LCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAogIAkJCSAgICBnZGJfYnl0ZSAqcmVhZGJ1Ziwg Y29uc3QgZ2RiX2J5dGUgKndyaXRlYnVmKQpAQCAtMjMwLDExICsyMzAsMTEgQEAgSW5kZXg6IGdk Yi03LjUuNTAuMjAxMzAzMTAvZ2RiL2FtZDY0LXdpbmRvd3MtdGRlcC5jCiAgICBpbnQgcmVnbnVt ID0gLTE7CiAgCiAgICAvKiBTZWUgaWYgb3VyIHZhbHVlIGlzIHJldHVybmVkIHRocm91Z2ggYSBy ZWdpc3Rlci4gIElmIGl0IGlzLCB0aGVuCi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDMxMC9nZGIv YXJtLXRkZXAuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9hcm0tdGRlcC5j CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDMxMC5vcmlnL2dkYi9hcm0tdGRlcC5j CTIwMTMtMDMtMDEgMTY6Mzg6MjMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEz MDMxMC9nZGIvYXJtLXRkZXAuYwkyMDEzLTAzLTEwIDE2OjQ0OjQyLjExNTU5OTg0MCArMDEwMAot QEAgLTM0OTYsNyArMzQ5Niw3IEBAIGFybV92ZnBfY3ByY19yZWdfY2hhciAoZW51bSBhcm1fdmZw X2NwcmMKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9hcm0tdGRlcC5jCTIw MTMtMDgtMDIgMTY6NDM6MDEuMTQwNjc2MTEwICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDcz MS1jdnMvZ2RiL2FybS10ZGVwLmMJMjAxMy0wOC0wMiAxNjo0MzowNC43Mjc2ODEwMTAgKzAyMDAK K0BAIC0zNDk4LDcgKzM0OTgsNyBAQCBhcm1fdmZwX2NwcmNfcmVnX2NoYXIgKGVudW0gYXJtX3Zm cF9jcHJjCiAgICAgYXJyYXkpLiAgVmVjdG9ycyBhbmQgY29tcGxleCB0eXBlcyBhcmUgbm90IGN1 cnJlbnRseSBzdXBwb3J0ZWQsCiAgICAgbWF0Y2hpbmcgdGhlIGdlbmVyaWMgQUFQQ1Mgc3VwcG9y dC4gICovCiAgCkBAIC0yNDMsNyArMjQzLDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAv Z2RiL2FybS10ZGVwLmMKICBhcm1fdmZwX2NwcmNfc3ViX2NhbmRpZGF0ZSAoc3RydWN0IHR5cGUg KnQsCiAgCQkJICAgIGVudW0gYXJtX3ZmcF9jcHJjX2Jhc2VfdHlwZSAqYmFzZV90eXBlKQogIHsK LUBAIC0zNTI3LDcgKzM1MjcsNyBAQCBhcm1fdmZwX2NwcmNfc3ViX2NhbmRpZGF0ZSAoc3RydWN0 IHR5cGUKK0BAIC0zNTI5LDcgKzM1MjksNyBAQCBhcm1fdmZwX2NwcmNfc3ViX2NhbmRpZGF0ZSAo c3RydWN0IHR5cGUKICAKICAgICAgY2FzZSBUWVBFX0NPREVfQVJSQVk6CiAgICAgICAgewpAQCAt MjUyLDcgKzI1Miw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9hcm0tdGRlcC5j CiAgCXVuc2lnbmVkIHVuaXRsZW47CiAgCWNvdW50ID0gYXJtX3ZmcF9jcHJjX3N1Yl9jYW5kaWRh dGUgKFRZUEVfVEFSR0VUX1RZUEUgKHQpLCBiYXNlX3R5cGUpOwogIAlpZiAoY291bnQgPT0gLTEp Ci1AQCAtMzU0NywxMyArMzU0NywxNSBAQCBhcm1fdmZwX2NwcmNfc3ViX2NhbmRpZGF0ZSAoc3Ry dWN0IHR5cGUKK0BAIC0zNTQ5LDEzICszNTQ5LDE1IEBAIGFybV92ZnBfY3ByY19zdWJfY2FuZGlk YXRlIChzdHJ1Y3QgdHlwZQogIAogICAgICBjYXNlIFRZUEVfQ09ERV9TVFJVQ1Q6CiAgICAgICAg ewpAQCAtMjcxLDcgKzI3MSw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9hcm0t dGRlcC5jCiAgCSAgICBpZiAoc3ViX2NvdW50ID09IC0xKQogIAkgICAgICByZXR1cm4gLTE7CiAg CSAgICBjb3VudCArPSBzdWJfY291bnQ7Ci1AQCAtMzU3MywxMyArMzU3NSwxNSBAQCBhcm1fdmZw X2NwcmNfc3ViX2NhbmRpZGF0ZSAoc3RydWN0IHR5cGUKK0BAIC0zNTc1LDEzICszNTc3LDE1IEBA IGFybV92ZnBfY3ByY19zdWJfY2FuZGlkYXRlIChzdHJ1Y3QgdHlwZQogIAogICAgICBjYXNlIFRZ UEVfQ09ERV9VTklPTjoKICAgICAgICB7CkBAIC0yOTAsNyArMjkwLDcgQEAgSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAzMTAvZ2RiL2FybS10ZGVwLmMKICAJICAgIGlmIChzdWJfY291bnQgPT0gLTEp CiAgCSAgICAgIHJldHVybiAtMTsKICAJICAgIGNvdW50ID0gKGNvdW50ID4gc3ViX2NvdW50ID8g Y291bnQgOiBzdWJfY291bnQpOwotQEAgLTM2MTUsNyArMzYxOSw3IEBAIGFybV92ZnBfY2FsbF9j YW5kaWRhdGUgKHN0cnVjdCB0eXBlICp0LAorQEAgLTM2MTcsNyArMzYyMSw3IEBAIGFybV92ZnBf Y2FsbF9jYW5kaWRhdGUgKHN0cnVjdCB0eXBlICp0LAogIAkJCWludCAqY291bnQpCiAgewogICAg ZW51bSBhcm1fdmZwX2NwcmNfYmFzZV90eXBlIGIgPSBWRlBfQ1BSQ19VTktOT1dOOwpAQCAtMjk5 LDcgKzI5OSw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9hcm0tdGRlcC5jCiAg ICBpZiAoYyA8PSAwIHx8IGMgPiA0KQogICAgICByZXR1cm4gMDsKICAgICpiYXNlX3R5cGUgPSBi OwotQEAgLTM2OTYsNyArMzcwMCw3IEBAIGFybV9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJh cmNoICpnZGIKK0BAIC0zNjk4LDcgKzM3MDIsNyBAQCBhcm1fcHVzaF9kdW1teV9jYWxsIChzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiCiAgCiAgICBmb3IgKGFyZ251bSA9IDA7IGFyZ251bSA8IG5hcmdzOyBh cmdudW0rKykKICAgICAgewpAQCAtMzA4LDEwICszMDgsMTAgQEAgSW5kZXg6IGdkYi03LjUuNTAu MjAxMzAzMTAvZ2RiL2FybS10ZGVwLmMKICAgICAgICBzdHJ1Y3QgdHlwZSAqYXJnX3R5cGU7CiAg ICAgICAgc3RydWN0IHR5cGUgKnRhcmdldF90eXBlOwogICAgICAgIGVudW0gdHlwZV9jb2RlIHR5 cGVjb2RlOwotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL2F2ci10ZGVwLmMKK0luZGV4 OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvYXZyLXRkZXAuYwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjUuNTAuMjAxMzAzMTAub3JpZy9nZGIvYXZyLXRkZXAuYwkyMDEzLTAzLTAxIDE2OjM4 OjI0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL2F2ci10ZGVw LmMJMjAxMy0wMy0xMCAxNjo0NDo0Mi4xMTY1OTk4NDAgKzAxMDAKKy0tLSBnZGItNy42LjUwLjIw MTMwNzMxLWN2cy5vcmlnL2dkYi9hdnItdGRlcC5jCTIwMTMtMDgtMDIgMTY6NDM6MDEuMTQyNjc2 MTEzICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2F2ci10ZGVwLmMJMjAx My0wOC0wMiAxNjo0MzowNC43Mjg2ODEwMTEgKzAyMDAKIEBAIC0xMTcwLDEzICsxMTcwLDE0IEBA IGF2cl9kdW1teV9pZCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHMKICAKICBzdHJ1Y3Qgc3Rh Y2tfaXRlbQpAQCAtMzQ1LDEwICszNDUsMTAgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAv Z2RiL2F2ci10ZGVwLmMKICAKICAgICAgICAvKiBDYWxjdWxhdGUgdGhlIHBvdGVudGlhbCBsYXN0 IHJlZ2lzdGVyIG5lZWRlZC4gICovCiAgICAgICAgbGFzdF9yZWdudW0gPSByZWdudW0gLSAobGVu ICsgKGxlbiAmIDEpKTsKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9iZmluLXRkZXAu YworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9iZmluLXRkZXAuYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAzMTAub3JpZy9nZGIvYmZpbi10ZGVwLmMJMjAxMy0w My0wMSAxNjozODoyNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMzEwL2dk Yi9iZmluLXRkZXAuYwkyMDEzLTAzLTEwIDE2OjQ2OjI3Ljk5MjY2OTk2NCArMDEwMAorLS0tIGdk Yi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2JmaW4tdGRlcC5jCTIwMTMtMDgtMDIgMTY6 NDM6MDEuMTQyNjc2MTEzICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2Jm aW4tdGRlcC5jCTIwMTMtMDgtMDIgMTY6NDM6MDQuNzI4NjgxMDExICswMjAwCiBAQCAtNTA2LDcg KzUwNiw3IEBAIGJmaW5fcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2QKICAgIGdk Yl9ieXRlIGJ1Zls0XTsKICAgIGludCBpOwpAQCAtMzY3LDEwICszNjcsMTAgQEAgSW5kZXg6IGdk Yi03LjUuNTAuMjAxMzAzMTAvZ2RiL2JmaW4tdGRlcC5jCiAgCiAgICAgICAgc3AgLT0gY29udGFp bmVyX2xlbjsKICAgICAgICB3cml0ZV9tZW1vcnkgKHNwLCB2YWx1ZV9jb250ZW50c193cml0ZWFi bGUgKGFyZ3NbaV0pLCBjb250YWluZXJfbGVuKTsKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMzEw L2dkYi9jcmlzLXRkZXAuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9jcmlz LXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAzMTAub3JpZy9nZGIvY3Jp cy10ZGVwLmMJMjAxMy0wMy0wMSAxNjozODoyNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41 LjUwLjIwMTMwMzEwL2dkYi9jcmlzLXRkZXAuYwkyMDEzLTAzLTEwIDE2OjQ0OjQyLjExNzU5OTg0 MSArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2NyaXMtdGRlcC5j CTIwMTMtMDgtMDIgMTY6NDM6MDQuNzI5NjgxMDEyICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEz MDczMS1jdnMvZ2RiL2NyaXMtdGRlcC5jCTIwMTMtMDgtMDIgMTY6NTI6MjguMzE2NDkxNTYxICsw MjAwCiBAQCAtNjcwLDEzICs2NzAsMTMgQEAgc3RhdGljIENPUkVfQUREUiBjcmlzX3Vud2luZF9z cCAoc3RydWN0CiAgCiAgc3RydWN0IHN0YWNrX2l0ZW0KQEAgLTM4Miw4ICszODIsOCBAQCBJbmRl eDogZ2RiLTcuNS41MC4yMDEzMDMxMC9nZGIvY3Jpcy10ZGVwLmMKICB9OwogIAogIHN0YXRpYyBz dHJ1Y3Qgc3RhY2tfaXRlbSAqCi0tcHVzaF9zdGFja19pdGVtIChzdHJ1Y3Qgc3RhY2tfaXRlbSAq cHJldiwgdm9pZCAqY29udGVudHMsIGludCBsZW4pCi0rcHVzaF9zdGFja19pdGVtIChzdHJ1Y3Qg c3RhY2tfaXRlbSAqcHJldiwgdm9pZCAqY29udGVudHMsIHNzaXplX3QgbGVuKQorLXB1c2hfc3Rh Y2tfaXRlbSAoc3RydWN0IHN0YWNrX2l0ZW0gKnByZXYsIGNvbnN0IGdkYl9ieXRlICpjb250ZW50 cywgaW50IGxlbikKKytwdXNoX3N0YWNrX2l0ZW0gKHN0cnVjdCBzdGFja19pdGVtICpwcmV2LCBj b25zdCBnZGJfYnl0ZSAqY29udGVudHMsIHNzaXplX3QgbGVuKQogIHsKICAgIHN0cnVjdCBzdGFj a19pdGVtICpzaTsKICAgIHNpID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3Qgc3RhY2tfaXRlbSkp OwpAQCAtMzkzLDIyICszOTMsMjIgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL2Ny aXMtdGRlcC5jCiAgICAgIHsKIC0gICAgICBpbnQgbGVuOwogKyAgICAgIHNzaXplX3QgbGVuOwot ICAgICAgIGNoYXIgKnZhbDsKKyAgICAgICBjb25zdCBnZGJfYnl0ZSAqdmFsOwogLSAgICAgIGlu dCByZWdfZGVtYW5kOwogLSAgICAgIGludCBpOwogKyAgICAgIHNzaXplX3QgcmVnX2RlbWFuZDsK ICsgICAgICBzc2l6ZV90IGk7CiAgICAgICAgCiAtICAgICAgbGVuID0gVFlQRV9MRU5HVEggKHZh bHVlX3R5cGUgKGFyZ3NbYXJnbnVtXSkpOwotICAgICAgIHZhbCA9IChjaGFyICopIHZhbHVlX2Nv bnRlbnRzIChhcmdzW2FyZ251bV0pOworICAgICAgIHZhbCA9IHZhbHVlX2NvbnRlbnRzIChhcmdz W2FyZ251bV0pOwogKyAgICAgIGxlbiA9IFRZUEVfTEVOR1RIICh2YWx1ZV90eXBlIChhcmdzW2Fy Z251bV0pKTsKICAgICAgICAKICAgICAgICAvKiBIb3cgbWF5IHJlZ2lzdGVycyB3b3J0aCBvZiBz dG9yYWdlIGRvIHdlIG5lZWQgZm9yIHRoaXMgYXJndW1lbnQ/ICAqLwogICAgICAgIHJlZ19kZW1h bmQgPSAobGVuIC8gNCkgKyAobGVuICUgNCAhPSAwID8gMSA6IDApOwotSW5kZXg6IGdkYi03LjUu NTAuMjAxMzAzMTAvZ2RiL2g4MzAwLXRkZXAuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEt Y3ZzL2dkYi9oODMwMC10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMzEw Lm9yaWcvZ2RiL2g4MzAwLXRkZXAuYwkyMDEzLTAxLTAxIDA3OjMyOjQ0LjAwMDAwMDAwMCArMDEw MAotKysrIGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL2g4MzAwLXRkZXAuYwkyMDEzLTAzLTEwIDE2 OjQ0OjQyLjExODU5OTg0MSArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcv Z2RiL2g4MzAwLXRkZXAuYwkyMDEzLTA4LTAyIDE2OjQzOjAxLjE0NDY3NjExNiArMDIwMAorKysr IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9oODMwMC10ZGVwLmMJMjAxMy0wOC0wMiAxNjo0 MzowNC43MzA2ODEwMTQgKzAyMDAKIEBAIC02NDAsNyArNjQwLDcgQEAgaDgzMDBfcHVzaF9kdW1t eV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZwogIAkJICAgICAgIGludCBzdHJ1Y3RfcmV0dXJuLCBD T1JFX0FERFIgc3RydWN0X2FkZHIpCiAgewpAQCAtNDQxLDEwICs0NDEsMTAgQEAgSW5kZXg6IGdk Yi03LjUuNTAuMjAxMzAzMTAvZ2RiL2g4MzAwLXRkZXAuYwogIAogIAkgICAgICBmb3IgKG9mZnNl dCA9IDA7IG9mZnNldCA8IHBhZGRlZF9sZW47IG9mZnNldCArPSB3b3Jkc2l6ZSkKICAJCXsKLUlu ZGV4OiBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9ocHBhLXRkZXAuYworSW5kZXg6IGdkYi03LjYu NTAuMjAxMzA3MzEtY3ZzL2dkYi9ocHBhLXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUu NTAuMjAxMzAzMTAub3JpZy9nZGIvaHBwYS10ZGVwLmMJMjAxMy0wMy0wMSAxNjozODoyNC4wMDAw MDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9ocHBhLXRkZXAuYwkyMDEz LTAzLTEwIDE2OjQ0OjQyLjExOTU5OTg0MiArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEt Y3ZzLm9yaWcvZ2RiL2hwcGEtdGRlcC5jCTIwMTMtMDgtMDIgMTY6NDM6MDEuMTQ1Njc2MTE3ICsw MjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2hwcGEtdGRlcC5jCTIwMTMtMDgt MDIgMTY6NDM6MDQuNzMxNjgxMDE1ICswMjAwCiBAQCAtOTYxLDcgKzk2MSw3IEBAIGhwcGE2NF9w dXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICoKICAgICAgewogICAgICAgIHN0cnVjdCB2 YWx1ZSAqYXJnID0gYXJnc1tpXTsKQEAgLTQ2MywxMCArNDYzLDEwIEBAIEluZGV4OiBnZGItNy41 LjUwLjIwMTMwMzEwL2dkYi9ocHBhLXRkZXAuYwogICAgaW50IHJlZ251bSwgb2Zmc2V0OwogIAog ICAgaWYgKGxlbiA+IDE2KQotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL2kzODYtZGFy d2luLXRkZXAuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9pMzg2LWRhcndp bi10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMzEwLm9yaWcvZ2RiL2kz ODYtZGFyd2luLXRkZXAuYwkyMDEzLTAyLTEyIDIwOjAzOjU0LjAwMDAwMDAwMCArMDEwMAotKysr IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL2kzODYtZGFyd2luLXRkZXAuYwkyMDEzLTAzLTEwIDE2 OjQ0OjQyLjExOTU5OTg0MiArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcv Z2RiL2kzODYtZGFyd2luLXRkZXAuYwkyMDEzLTA4LTAyIDE2OjQzOjAxLjE0NTY3NjExNyArMDIw MAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9pMzg2LWRhcndpbi10ZGVwLmMJMjAx My0wOC0wMiAxNjo0MzowNC43MzE2ODEwMTUgKzAyMDAKIEBAIC0xNjYsNyArMTY2LDcgQEAgaTM4 Nl9kYXJ3aW5fcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYQogIAogICAgZm9yICh3cml0ZV9w YXNzID0gMDsgd3JpdGVfcGFzcyA8IDI7IHdyaXRlX3Bhc3MrKykKQEAgLTQ3NiwxMCArNDc2LDEw IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9pMzg2LWRhcndpbi10ZGVwLmMKICAg ICAgICBpbnQgbnVtX20xMjggPSAwOwogIAogICAgICAgIGlmIChzdHJ1Y3RfcmV0dXJuKQotSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL2kzODYtdGRlcC5jCitJbmRleDogZ2RiLTcuNi41 MC4yMDEzMDczMS1jdnMvZ2RiL2kzODYtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41 MC4yMDEzMDMxMC5vcmlnL2dkYi9pMzg2LXRkZXAuYwkyMDEzLTAzLTEwIDE2OjE2OjIzLjAwMDAw MDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL2kzODYtdGRlcC5jCTIwMTMt MDMtMTAgMTY6NDQ6NDIuMTIwNTk5ODQyICswMTAwCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1j dnMub3JpZy9nZGIvaTM4Ni10ZGVwLmMJMjAxMy0wOC0wMiAxNjo0MzowMS4xNDc2NzYxMjAgKzAy MDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvaTM4Ni10ZGVwLmMJMjAxMy0wOC0w MiAxNjo0MzowNC43MzM2ODEwMTggKzAyMDAKIEBAIC0yNDA3LDcgKzI0MDcsNyBAQCBpMzg2X3B1 c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmdkCiAgICBnZGJfYnl0ZSBidWZbNF07CiAg ICBpbnQgaTsKQEAgLTU0MywxMCArNTQzLDEwIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMzEw L2dkYi9pMzg2LXRkZXAuYwogIAogICAgaWYgKGkzODZfZnBfcmVnbnVtX3AgKGdldF9mcmFtZV9h cmNoIChmcmFtZSksIHJlZ251bSkpCiAgICAgIHsKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMzEw L2dkYi9pYTY0LXRkZXAuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9pYTY0 LXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAzMTAub3JpZy9nZGIvaWE2 NC10ZGVwLmMJMjAxMy0wMy0xMCAxNjoxNjoyMy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41 LjUwLjIwMTMwMzEwL2dkYi9pYTY0LXRkZXAuYwkyMDEzLTAzLTEwIDE2OjQ0OjQyLjEyMTU5OTg0 MyArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2lhNjQtdGRlcC5j CTIwMTMtMDgtMDIgMTY6NDM6MDEuMTQ4Njc2MTIxICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEz MDczMS1jdnMvZ2RiL2lhNjQtdGRlcC5jCTIwMTMtMDgtMDIgMTY6NDM6MDQuNzM0NjgxMDE5ICsw MjAwCiBAQCAtMzk3NCw4ICszOTc0LDEwIEBAIGlhNjRfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3Qg Z2RiYXJjaCAqZ2QKICAgIGludCBhcmdubzsKICAgIHN0cnVjdCB2YWx1ZSAqYXJnOwpAQCAtNTYw LDEwICs1NjAsMTAgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL2lhNjQtdGRlcC5j CiAgICBpbnQgZmxvYXRyZWc7CiAgICBVTE9OR0VTVCBic3A7CiAgICBDT1JFX0FERFIgZnVuY2Rl c2NhZGRyLCBwYywgZ2xvYmFsX3BvaW50ZXI7Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDMxMC9n ZGIvaXEyMDAwLXRkZXAuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9pcTIw MDAtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDMxMC5vcmlnL2dkYi9p cTIwMDAtdGRlcC5jCTIwMTMtMDMtMDEgMTY6Mzg6MjUuMDAwMDAwMDAwICswMTAwCi0rKysgZ2Ri LTcuNS41MC4yMDEzMDMxMC9nZGIvaXEyMDAwLXRkZXAuYwkyMDEzLTAzLTEwIDE2OjQ0OjQyLjEy MTU5OTg0MyArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL2lxMjAw MC10ZGVwLmMJMjAxMy0wOC0wMiAxNjo0MzowMS4xNDk2NzYxMjMgKzAyMDAKKysrKyBnZGItNy42 LjUwLjIwMTMwNzMxLWN2cy9nZGIvaXEyMDAwLXRkZXAuYwkyMDEzLTA4LTAyIDE2OjQzOjA0Ljcz NDY4MTAxOSArMDIwMAogQEAgLTY1NCw4ICs2NTQsOSBAQCBpcTIwMDBfcHVzaF9kdW1teV9jYWxs IChzdHJ1Y3QgZ2RiYXJjaCAqCiAgICBjb25zdCBiZmRfYnl0ZSAqdmFsOwogICAgYmZkX2J5dGUg YnVmWzRdOwpAQCAtNTc2LDExICs1NzYsMTEgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAv Z2RiL2lxMjAwMC10ZGVwLmMKICAgIC8qIFVzZWQgdG8gY29weSBzdHJ1Y3QgYXJndW1lbnRzIGlu dG8gdGhlIHN0YWNrLiAgKi8KICAgIENPUkVfQUREUiBzdHJ1Y3RfcHRyOwogIAotSW5kZXg6IGdk Yi03LjUuNTAuMjAxMzAzMTAvZ2RiL20zMnItdGRlcC5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEz MDczMS1jdnMvZ2RiL20zMnItdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEz MDMxMC5vcmlnL2dkYi9tMzJyLXRkZXAuYwkyMDEzLTAxLTAxIDA3OjMyOjQ2LjAwMDAwMDAwMCAr MDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL20zMnItdGRlcC5jCTIwMTMtMDMtMTAg MTY6NDQ6NDIuMTIxNTk5ODQzICswMTAwCi1AQCAtNjk1LDcgKzY5NSw3IEBAIG0zMnJfcHVzaF9k dW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2QKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2 cy5vcmlnL2dkYi9tMzJyLXRkZXAuYwkyMDEzLTA4LTAyIDE2OjQzOjAxLjE0OTY3NjEyMyArMDIw MAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9tMzJyLXRkZXAuYwkyMDEzLTA4LTAy IDE2OjQzOjA0LjczNDY4MTAxOSArMDIwMAorQEAgLTY4OSw3ICs2ODksNyBAQCBtMzJyX3B1c2hf ZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmdkCiAgICBDT1JFX0FERFIgcmVndmFsOwogICAg Z2RiX2J5dGUgKnZhbDsKICAgIGdkYl9ieXRlIHZhbGJ1ZltNQVhfUkVHSVNURVJfU0laRV07CkBA IC01ODksMTAgKzU4OSwxMCBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDMxMC9nZGIvbTMyci10 ZGVwLmMKICAKICAgIC8qIEZpcnN0IGZvcmNlIHNwIHRvIGEgNC1ieXRlIGFsaWdubWVudC4gICov CiAgICBzcCA9IHNwICYgfjM7Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDMxMC9nZGIvbTY4ay10 ZGVwLmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvbTY4ay10ZGVwLmMKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMzEwLm9yaWcvZ2RiL202OGstdGRlcC5jCTIw MTMtMDEtMDEgMDc6MzI6NDYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDMx MC9nZGIvbTY4ay10ZGVwLmMJMjAxMy0wMy0xMCAxNjo0NDo0Mi4xMjE1OTk4NDMgKzAxMDAKKy0t LSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9tNjhrLXRkZXAuYwkyMDEzLTA4LTAy IDE2OjQzOjAxLjE0OTY3NjEyMyArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dk Yi9tNjhrLXRkZXAuYwkyMDEzLTA4LTAyIDE2OjQzOjA0LjczNTY4MTAyMSArMDIwMAogQEAgLTM4 NCw3ICszODQsNyBAQCBtNjhrX3JlZ19zdHJ1Y3RfcmV0dXJuX3AgKHN0cnVjdCBnZGJhcmNoCiAg ewogICAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCk7 CkBAIC02MTUsMTAgKzYxNSwxMCBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDMxMC9nZGIvbTY4 ay10ZGVwLmMKICAKICAgICAgICAvKiBOb24tc2NhbGFycyBiaWdnZXIgdGhhbiA0IGJ5dGVzIGFy ZSBsZWZ0IGFsaWduZWQsIG90aGVycyBhcmUKICAJIHJpZ2h0IGFsaWduZWQuICAqLwotSW5kZXg6 IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL204OGstdGRlcC5jCitJbmRleDogZ2RiLTcuNi41MC4y MDEzMDczMS1jdnMvZ2RiL204OGstdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4y MDEzMDMxMC5vcmlnL2dkYi9tODhrLXRkZXAuYwkyMDEzLTAxLTAxIDA3OjMyOjQ3LjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL204OGstdGRlcC5jCTIwMTMtMDMt MTAgMTY6NDQ6NDIuMTIxNTk5ODQzICswMTAwCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMu b3JpZy9nZGIvbTg4ay10ZGVwLmMJMjAxMy0wOC0wMiAxNjo0MzowMS4xNTA2NzYxMjQgKzAyMDAK KysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvbTg4ay10ZGVwLmMJMjAxMy0wOC0wMiAx Njo0MzowNC43MzU2ODEwMjEgKzAyMDAKIEBAIC0yNjAsMTMgKzI2MCwxMyBAQCBtODhrX3N0b3Jl X2FyZ3VtZW50cyAoc3RydWN0IHJlZ2NhY2hlICpyCiAgewogICAgc3RydWN0IGdkYmFyY2ggKmdk YmFyY2ggPSBnZXRfcmVnY2FjaGVfYXJjaCAocmVnY2FjaGUpOwpAQCAtNjQ2LDExICs2NDYsMTEg QEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL204OGstdGRlcC5jCiAgCiAgICAgICAg aWYgKG04OGtfaW5fcmVnaXN0ZXJfcCAodHlwZSkpCiAgCXsKLUluZGV4OiBnZGItNy41LjUwLjIw MTMwMzEwL2dkYi9tZXAtdGRlcC5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2Ri L21lcC10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMzEwLm9yaWcvZ2Ri L21lcC10ZGVwLmMJMjAxMy0wMy0wMSAxNjozODoyNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGIt Ny41LjUwLjIwMTMwMzEwL2dkYi9tZXAtdGRlcC5jCTIwMTMtMDMtMTAgMTY6NDQ6NDIuMTIyNTk5 ODQzICswMTAwCi1AQCAtMjI3OSw3ICsyMjc5LDcgQEAgcHVzaF9sYXJnZV9hcmd1bWVudHMgKENP UkVfQUREUiBzcCwgaW50CistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvbWVw LXRkZXAuYwkyMDEzLTA4LTAyIDE2OjQzOjAxLjE1MDY3NjEyNCArMDIwMAorKysrIGdkYi03LjYu NTAuMjAxMzA3MzEtY3ZzL2dkYi9tZXAtdGRlcC5jCTIwMTMtMDgtMDIgMTY6NDM6MDQuNzM1Njgx MDIxICswMjAwCitAQCAtMjI3Miw3ICsyMjcyLDcgQEAgcHVzaF9sYXJnZV9hcmd1bWVudHMgKENP UkVfQUREUiBzcCwgaW50CiAgCiAgICBmb3IgKGkgPSAwOyBpIDwgYXJnYzsgaSsrKQogICAgICB7 CkBAIC02NTksMTEgKzY1OSwxMSBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDMxMC9nZGIvbWVw LXRkZXAuYwogIAogICAgICAgIGlmIChhcmdfbGVuID4gTUVQX0dQUl9TSVpFKQogICAgICAgICAg ewotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL21pcHMtdGRlcC5jCitJbmRleDogZ2Ri LTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL21pcHMtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuNS41MC4yMDEzMDMxMC5vcmlnL2dkYi9taXBzLXRkZXAuYwkyMDEzLTAyLTI0IDEzOjU0OjA0 LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL21pcHMtdGRlcC5j CTIwMTMtMDMtMTAgMTY6NDQ6NDIuMTIzNTk5ODQ0ICswMTAwCi1AQCAtMzk2LDcgKzM5Niw3IEBA IHN0YXRpYyB2b2lkCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvbWlwcy10 ZGVwLmMJMjAxMy0wOC0wMiAxNjo0MzowMS4xNTM2NzYxMjggKzAyMDAKKysrKyBnZGItNy42LjUw LjIwMTMwNzMxLWN2cy9nZGIvbWlwcy10ZGVwLmMJMjAxMy0wOC0wMiAxNjo0MzowNC43Mzc2ODEw MjMgKzAyMDAKK0BAIC00MDIsNyArNDAyLDcgQEAgc3RhdGljIHZvaWQKICBtaXBzX3hmZXJfcmVn aXN0ZXIgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hl LAogIAkJICAgIGludCByZWdfbnVtLCBpbnQgbGVuZ3RoLAogIAkJICAgIGVudW0gYmZkX2VuZGlh biBlbmRpYW4sIGdkYl9ieXRlICppbiwKQEAgLTY3Miw3ICs2NzIsNyBAQCBJbmRleDogZ2RiLTcu NS41MC4yMDEzMDMxMC9nZGIvbWlwcy10ZGVwLmMKICB7CiAgICBpbnQgcmVnX29mZnNldCA9IDA7 CiAgCi1AQCAtNDE5LDggKzQxOSw4IEBAIG1pcHNfeGZlcl9yZWdpc3RlciAoc3RydWN0IGdkYmFy Y2ggKmdkYmEKK0BAIC00MjUsOCArNDI1LDggQEAgbWlwc194ZmVyX3JlZ2lzdGVyIChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYQogICAgICB9CiAgICBpZiAobWlwc19kZWJ1ZykKICAgICAgZnByaW50Zl91 bmZpbHRlcmVkIChnZGJfc3RkZXJyLApAQCAtNjgzLDcgKzY4Myw3IEBAIEluZGV4OiBnZGItNy41 LjUwLjIwMTMwMzEwL2dkYi9taXBzLXRkZXAuYwogICAgaWYgKG1pcHNfZGVidWcgJiYgb3V0ICE9 IE5VTEwpCiAgICAgIHsKICAgICAgICBpbnQgaTsKLUBAIC00MzQ2LDEzICs0MzQ2LDEzIEBAIG1p cHNfZWFiaV9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmMKK0BAIC00MzQ1LDEzICs0MzQ1 LDEzIEBAIG1pcHNfZWFiaV9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmMKICAgICAgICBn ZGJfYnl0ZSB2YWxidWZbTUFYX1JFR0lTVEVSX1NJWkVdOwogICAgICAgIHN0cnVjdCB2YWx1ZSAq YXJnID0gYXJnc1thcmdudW1dOwogICAgICAgIHN0cnVjdCB0eXBlICphcmdfdHlwZSA9IGNoZWNr X3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZykpOwpAQCAtNzAwLDcgKzcwMCw3IEBAIEluZGV4OiBn ZGItNy41LjUwLjIwMTMwMzEwL2dkYi9taXBzLXRkZXAuYwogIAogICAgICAgIC8qIEZ1bmN0aW9u IHBvaW50ZXIgYXJndW1lbnRzIHRvIG1pcHMxNiBjb2RlIG5lZWQgdG8gYmUgbWFkZSBpbnRvCiAg ICAgICAgICAgbWlwczE2IHBvaW50ZXJzLiAgKi8KLUBAIC00NjM3LDcgKzQ2MzcsNyBAQCBtaXBz X2VhYmlfcmV0dXJuX3ZhbHVlIChzdHJ1Y3QgZ2RiYXJjaCAqCitAQCAtNDYzNiw3ICs0NjM2LDcg QEAgbWlwc19lYWJpX3JldHVybl92YWx1ZSAoc3RydWN0IGdkYmFyY2ggKgogIAogIHN0YXRpYyBp bnQKICBtaXBzX24zMm42NF9mcF9hcmdfY2h1bmtfcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gs IHN0cnVjdCB0eXBlICphcmdfdHlwZSwKQEAgLTcwOSw3ICs3MDksNyBAQCBJbmRleDogZ2RiLTcu NS41MC4yMDEzMDMxMC9nZGIvbWlwcy10ZGVwLmMKICB7CiAgICBpbnQgaTsKICAKLUBAIC00NjUy LDcgKzQ2NTIsNyBAQCBtaXBzX24zMm42NF9mcF9hcmdfY2h1bmtfcCAoc3RydWN0IGdkYmFyCitA QCAtNDY1MSw3ICs0NjUxLDcgQEAgbWlwc19uMzJuNjRfZnBfYXJnX2NodW5rX3AgKHN0cnVjdCBn ZGJhcgogIAogICAgZm9yIChpID0gMDsgaSA8IFRZUEVfTkZJRUxEUyAoYXJnX3R5cGUpOyBpKysp CiAgICAgIHsKQEAgLTcxOCw3ICs3MTgsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDMxMC9n ZGIvbWlwcy10ZGVwLmMKICAgICAgICBzdHJ1Y3QgdHlwZSAqZmllbGRfdHlwZTsKICAKICAgICAg ICAvKiBXZSdyZSBvbmx5IGxvb2tpbmcgYXQgbm9ybWFsIGZpZWxkcy4gICovCi1AQCAtNDY5NCw3 ICs0Njk0LDcgQEAgbWlwc19uMzJuNjRfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYQorQEAg LTQ2OTMsNyArNDY5Myw3IEBAIG1pcHNfbjMybjY0X3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdk YmEKICAgIGludCBhcmdyZWc7CiAgICBpbnQgZmxvYXRfYXJncmVnOwogICAgaW50IGFyZ251bTsK QEAgLTcyNyw3ICs3MjcsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDMxMC9nZGIvbWlwcy10 ZGVwLmMKICAgIGludCBzdGFja19vZmZzZXQgPSAwOwogICAgZW51bSBiZmRfZW5kaWFuIGJ5dGVf b3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpOwogICAgQ09SRV9BRERSIGZ1bmNf YWRkciA9IGZpbmRfZnVuY3Rpb25fYWRkciAoZnVuY3Rpb24sIE5VTEwpOwotQEAgLTUwNDUsMTEg KzUwNDUsMTEgQEAgbWlwc19uMzJuNjRfcmV0dXJuX3ZhbHVlIChzdHJ1Y3QgZ2RiYXJjaAorQEAg LTUwNDQsMTEgKzUwNDQsMTEgQEAgbWlwc19uMzJuNjRfcmV0dXJuX3ZhbHVlIChzdHJ1Y3QgZ2Ri YXJjaAogIAkJCQk6IE1JUFNfVjBfUkVHTlVNKTsKICAJICAgZmllbGQgPCBUWVBFX05GSUVMRFMg KHR5cGUpOyBmaWVsZCsrLCByZWdudW0gKz0gMikKICAJewpAQCAtNzQzLDcgKzc0Myw3IEBAIElu ZGV4OiBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9taXBzLXRkZXAuYwogIAkgIGlmIChUWVBFX0xF TkdUSCAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBmaWVsZCkpID09IDE2KQogIAkgICAgewogIAkg ICAgICAvKiBBIDE2LWJ5dGUgbG9uZyBkb3VibGUgZmllbGQgZ29lcyBpbiB0d28gY29uc2VjdXRp dmUKLUBAIC01MDkxLDggKzUwOTEsOCBAQCBtaXBzX24zMm42NF9yZXR1cm5fdmFsdWUgKHN0cnVj dCBnZGJhcmNoCitAQCAtNTA5MCw4ICs1MDkwLDggQEAgbWlwc19uMzJuNjRfcmV0dXJuX3ZhbHVl IChzdHJ1Y3QgZ2RiYXJjaAogIAkgIGlmIChvZmZzZXQgKyB4ZmVyID4gVFlQRV9MRU5HVEggKHR5 cGUpKQogIAkgICAgeGZlciA9IFRZUEVfTEVOR1RIICh0eXBlKSAtIG9mZnNldDsKICAJICBpZiAo bWlwc19kZWJ1ZykKQEAgLTc1NCw3ICs3NTQsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDMx MC9nZGIvbWlwcy10ZGVwLmMKICAJICBtaXBzX3hmZXJfcmVnaXN0ZXIgKGdkYmFyY2gsIHJlZ2Nh Y2hlLAogIAkJCSAgICAgIGdkYmFyY2hfbnVtX3JlZ3MgKGdkYmFyY2gpICsgcmVnbnVtLAogIAkJ CSAgICAgIHhmZXIsIEJGRF9FTkRJQU5fVU5LTk9XTiwgcmVhZGJ1Ziwgd3JpdGVidWYsCi1AQCAt NTE1MCw3ICs1MTUwLDcgQEAgbWlwc19vMzJfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJj aAorQEAgLTUxNDksNyArNTE0OSw3IEBAIG1pcHNfbzMyX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0 IGdkYmFyY2gKICAgIGludCBhcmdyZWc7CiAgICBpbnQgZmxvYXRfYXJncmVnOwogICAgaW50IGFy Z251bTsKQEAgLTc2Myw3ICs3NjMsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDMxMC9nZGIv bWlwcy10ZGVwLmMKICAgIGludCBzdGFja19vZmZzZXQgPSAwOwogICAgZW51bSBiZmRfZW5kaWFu IGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpOwogICAgQ09SRV9BRERS IGZ1bmNfYWRkciA9IGZpbmRfZnVuY3Rpb25fYWRkciAoZnVuY3Rpb24sIE5VTEwpOwotQEAgLTUy MTQsMTMgKzUyMTQsMTMgQEAgbWlwc19vMzJfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJj aAorQEAgLTUyMTMsMTMgKzUyMTMsMTMgQEAgbWlwc19vMzJfcHVzaF9kdW1teV9jYWxsIChzdHJ1 Y3QgZ2RiYXJjaAogICAgICAgIGNvbnN0IGdkYl9ieXRlICp2YWw7CiAgICAgICAgc3RydWN0IHZh bHVlICphcmcgPSBhcmdzW2FyZ251bV07CiAgICAgICAgc3RydWN0IHR5cGUgKmFyZ190eXBlID0g Y2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnKSk7CkBAIC03ODAsNyArNzgwLDcgQEAgSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL21pcHMtdGRlcC5jCiAgCiAgICAgICAgdmFsID0g dmFsdWVfY29udGVudHMgKGFyZyk7CiAgCi1AQCAtNTY3OCw4ICs1Njc4LDggQEAgbWlwc19vNjRf cHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaAorQEAgLTU2NzcsOCArNTY3Nyw4IEBAIG1p cHNfbzY0X3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2gKICAgIGludCBhcmdyZWc7CiAg ICBpbnQgZmxvYXRfYXJncmVnOwogICAgaW50IGFyZ251bTsKQEAgLTc5MSw3ICs3OTEsNyBAQCBJ bmRleDogZ2RiLTcuNS41MC4yMDEzMDMxMC9nZGIvbWlwcy10ZGVwLmMKICAgIGVudW0gYmZkX2Vu ZGlhbiBieXRlX29yZGVyID0gZ2RiYXJjaF9ieXRlX29yZGVyIChnZGJhcmNoKTsKICAgIENPUkVf QUREUiBmdW5jX2FkZHIgPSBmaW5kX2Z1bmN0aW9uX2FkZHIgKGZ1bmN0aW9uLCBOVUxMKTsKICAK LUBAIC01NzQwLDEzICs1NzQwLDEzIEBAIG1pcHNfbzY0X3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0 IGdkYmFyY2gKK0BAIC01NzM5LDEzICs1NzM5LDEzIEBAIG1pcHNfbzY0X3B1c2hfZHVtbXlfY2Fs bCAoc3RydWN0IGdkYmFyY2gKICAgICAgICBnZGJfYnl0ZSB2YWxidWZbTUFYX1JFR0lTVEVSX1NJ WkVdOwogICAgICAgIHN0cnVjdCB2YWx1ZSAqYXJnID0gYXJnc1thcmdudW1dOwogICAgICAgIHN0 cnVjdCB0eXBlICphcmdfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZykpOwpA QCAtODA4LDIzICs4MDgsMjMgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL21pcHMt dGRlcC5jCiAgCiAgICAgICAgdmFsID0gdmFsdWVfY29udGVudHMgKGFyZyk7CiAgCi1JbmRleDog Z2RiLTcuNS41MC4yMDEzMDMxMC9nZGIvbW4xMDMwMC10ZGVwLmMKK0luZGV4OiBnZGItNy42LjUw LjIwMTMwNzMxLWN2cy9nZGIvbW4xMDMwMC10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41 LjUwLjIwMTMwMzEwLm9yaWcvZ2RiL21uMTAzMDAtdGRlcC5jCTIwMTMtMDMtMDEgMTY6Mzg6MjUu MDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDMxMC9nZGIvbW4xMDMwMC10ZGVw LmMJMjAxMy0wMy0xMCAxNjo0NDo0Mi4xMjM1OTk4NDQgKzAxMDAKKy0tLSBnZGItNy42LjUwLjIw MTMwNzMxLWN2cy5vcmlnL2dkYi9tbjEwMzAwLXRkZXAuYwkyMDEzLTA4LTAyIDE2OjQzOjA0Ljcz NzY4MTAyMyArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9tbjEwMzAwLXRk ZXAuYwkyMDEzLTA4LTAyIDE2OjUwOjM0LjIxMjMyMDY5OCArMDIwMAogQEAgLTEyMjgsNyArMTIy OCw3IEBAIG1uMTAzMDBfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaAogICAgZW51bSBi ZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpOwogICAg Y29uc3QgaW50IHB1c2hfc2l6ZSA9IHJlZ2lzdGVyX3NpemUgKGdkYmFyY2gsIEVfUENfUkVHTlVN KTsKICAgIGludCByZWdzX3VzZWQ7CiAtICBpbnQgbGVuLCBhcmdfbGVuOyAKLSsgIExPTkdFU1Qg bGVuLCBhcmdfbGVuOworKyAgTE9OR0VTVCBsZW4sIGFyZ19sZW47IAogICAgaW50IHN0YWNrX29m ZnNldCA9IDA7CiAgICBpbnQgYXJnbnVtOwotICAgY2hhciAqdmFsLCB2YWxidWZbTUFYX1JFR0lT VEVSX1NJWkVdOwotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL210LXRkZXAuYworICAg Y29uc3QgZ2RiX2J5dGUgKnZhbDsKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIv bXQtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDMxMC5vcmlnL2dkYi9t dC10ZGVwLmMJMjAxMy0wMS0wMSAwNzozMjo0Ny4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41 LjUwLjIwMTMwMzEwL2dkYi9tdC10ZGVwLmMJMjAxMy0wMy0xMCAxNjo0NDo0Mi4xMjQ1OTk4NDQg KzAxMDAKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9tdC10ZGVwLmMJMjAx My0wOC0wMiAxNjo0MzowMS4xNTQ2NzYxMzAgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMx LWN2cy9nZGIvbXQtdGRlcC5jCTIwMTMtMDgtMDIgMTY6NDM6MDQuNzM3NjgxMDIzICswMjAwCiBA QCAtNzgzLDkgKzc4Myw5IEBAIG10X3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmdk YmEKICAgIGdkYl9ieXRlIGJ1ZltNVF9NQVhfU1RSVUNUX1NJWkVdOwogICAgaW50IGFyZ3JlZyA9 IE1UXzFTVF9BUkdSRUc7CkBAIC04MzcsMTAgKzgzNywxMCBAQCBJbmRleDogZ2RiLTcuNS41MC4y MDEzMDMxMC9nZGIvbXQtdGRlcC5jCiAgICBpbnQgaSwgajsKICAKICAgIC8qIEZpcnN0IGhhbmRs ZSBob3dldmVyIG1hbnkgYXJncyB3ZSBjYW4gZml0IGludG8gTVRfMVNUX0FSR1JFRyB0aHJ1Ci1J bmRleDogZ2RiLTcuNS41MC4yMDEzMDMxMC9nZGIvcHBjLXN5c3YtdGRlcC5jCitJbmRleDogZ2Ri LTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3BwYy1zeXN2LXRkZXAuYwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjUuNTAuMjAxMzAzMTAub3JpZy9nZGIvcHBjLXN5c3YtdGRlcC5jCTIwMTMtMDEtMjMg MjE6MDM6MTguMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDMxMC9nZGIvcHBj LXN5c3YtdGRlcC5jCTIwMTMtMDMtMTAgMTY6NDQ6NDIuMTI0NTk5ODQ0ICswMTAwCistLS0gZ2Ri LTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvcHBjLXN5c3YtdGRlcC5jCTIwMTMtMDgtMDIg MTY6NDM6MDEuMTU1Njc2MTMxICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2Ri L3BwYy1zeXN2LXRkZXAuYwkyMDEzLTA4LTAyIDE2OjQzOjA0LjczODY4MTAyNSArMDIwMAogQEAg LTY4LDcgKzY4LDcgQEAgcHBjX3N5c3ZfYWJpX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYgog ICAgZW51bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFy Y2gpOwogICAgaW50IG9wZW5jbF9hYmkgPSBwcGNfc3lzdl91c2Vfb3BlbmNsX2FiaSAodmFsdWVf dHlwZSAoZnVuY3Rpb24pKTsKQEAgLTg3MSw3ICs4NzEsNyBAQCBJbmRleDogZ2RiLTcuNS41MC4y MDEzMDMxMC9nZGIvcHBjLXN5c3YtdGRlcC5jCiAgCSAgY29uc3QgYmZkX2J5dGUgKnZhbCA9IHZh bHVlX2NvbnRlbnRzIChhcmcpOwogIAogIAkgIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVf Q09ERV9GTFQgJiYgbGVuIDw9IDgKLUBAIC0xNTU2LDE0ICsxNTU2LDE0IEBAIHBwYzY0X3N5c3Zf YWJpX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGcKK0BAIC0xNjEzLDE0ICsxNjEzLDE0IEBAIHBw YzY0X3N5c3ZfYWJpX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGcKICAJICAgIH0KICAJICBlbHNl CiAgCSAgICB7CkBAIC04ODgsNyArODg4LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAv Z2RiL3BwYy1zeXN2LXRkZXAuYwogIAkJICAgICAgaWYgKGxlbiA+IHRkZXAtPndvcmRzaXplKQog IAkJCWxlbiA9IHRkZXAtPndvcmRzaXplOwogIAkJICAgICAgbWVtc2V0IChyZWd2YWwsIDAsIHNp emVvZiByZWd2YWwpOwotQEAgLTE1OTEsNyArMTU5MSw3IEBAIHBwYzY0X3N5c3ZfYWJpX3B1c2hf ZHVtbXlfY2FsbCAoc3RydWN0IGcKK0BAIC0xNjQ4LDcgKzE2NDgsNyBAQCBwcGM2NF9zeXN2X2Fi aV9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnCiAgCQkgICAgIHJlZ2lzdGVyLiAgV29yayBhcm91 bmQgdGhpcyBieSBhbHdheXMgd3JpdGluZyB0aGUKICAJCSAgICAgdmFsdWUgdG8gbWVtb3J5LiAg Rm9ydHVuYXRlbHksIGRvaW5nIHRoaXMKICAJCSAgICAgc2ltcGxpZmllcyB0aGUgY29kZS4gICov CkBAIC04OTcsMTEgKzg5NywxMSBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDMxMC9nZGIvcHBj LXN5c3YtdGRlcC5jCiAgCQkgIGlmIChsZW4gPCB0ZGVwLT53b3Jkc2l6ZSkKICAJCSAgICB3cml0 ZV9tZW1vcnkgKGdwYXJhbSArIHRkZXAtPndvcmRzaXplIC0gbGVuLCB2YWwsIGxlbik7CiAgCQkg IGVsc2UKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9ybDc4LXRkZXAuYworSW5kZXg6 IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9ybDc4LXRkZXAuYwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjUuNTAuMjAxMzAzMTAub3JpZy9nZGIvcmw3OC10ZGVwLmMJMjAxMy0wMS0wMSAwNzoz Mjo1MC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9ybDc4LXRk ZXAuYwkyMDEzLTAzLTEwIDE2OjQ0OjQyLjEyNDU5OTg0NCArMDEwMAotQEAgLTEwMTksOCArMTAx OSw4IEBAIHJsNzhfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2QKKy0tLSBnZGIt Ny42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9ybDc4LXRkZXAuYwkyMDEzLTA4LTAyIDE2OjQz OjAxLjE1NTY3NjEzMSArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9ybDc4 LXRkZXAuYwkyMDEzLTA4LTAyIDE2OjQzOjA0LjczODY4MTAyNSArMDIwMAorQEAgLTEwMzAsOCAr MTAzMCw4IEBAIHJsNzhfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2QKICAgIGZv ciAoaSA9IG5hcmdzIC0gMTsgaSA+PSAwOyBpLS0pCiAgICAgIHsKICAgICAgICBzdHJ1Y3QgdHlw ZSAqdmFsdWVfdHlwZSA9IHZhbHVlX2VuY2xvc2luZ190eXBlIChhcmdzW2ldKTsKQEAgLTkxMiwx MSArOTEyLDExIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9ybDc4LXRkZXAuYwog IAogICAgICAgIHNwIC09IGNvbnRhaW5lcl9sZW47CiAgICAgICAgd3JpdGVfbWVtb3J5IChybDc4 X21ha2VfZGF0YV9hZGRyZXNzIChzcCksCi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDMxMC9nZGIv cnM2MDAwLWFpeC10ZGVwLmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvcnM2 MDAwLWFpeC10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMzEwLm9yaWcv Z2RiL3JzNjAwMC1haXgtdGRlcC5jCTIwMTMtMDEtMDEgMDc6MzI6NTAuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuNS41MC4yMDEzMDMxMC9nZGIvcnM2MDAwLWFpeC10ZGVwLmMJMjAxMy0wMy0x MCAxNjo0NDo0Mi4xMjU1OTk4NDUgKzAxMDAKLUBAIC0xOTgsOSArMTk4LDkgQEAgcnM2MDAwX3B1 c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKgorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEt Y3ZzLm9yaWcvZ2RiL3JzNjAwMC1haXgtdGRlcC5jCTIwMTMtMDgtMDIgMTY6NDM6MDEuMTU1Njc2 MTMxICswMjAwCisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3JzNjAwMC1haXgtdGRl cC5jCTIwMTMtMDgtMDIgMTY6NDM6MDQuNzM4NjgxMDI1ICswMjAwCitAQCAtMTk2LDkgKzE5Niw5 IEBAIHJzNjAwMF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICoKICAgIHN0cnVjdCBn ZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwogICAgZW51bSBiZmRf ZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpOwogICAgaW50 IGlpOwpAQCAtOTI4LDcgKzkyOCw3IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9y czYwMDAtYWl4LXRkZXAuYwogICAgZ2RiX2J5dGUgdG1wX2J1ZmZlcls1MF07CiAgICBpbnQgZl9h cmdubyA9IDA7CQkvKiBjdXJyZW50IGZsb2F0aW5nIHBvaW50IGFyZ25vICovCiAgICBpbnQgd29y ZHNpemUgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpLT53b3Jkc2l6ZTsKLUBAIC0zMjgsNyArMzI4 LDcgQEAgcmFuX291dF9vZl9yZWdpc3RlcnNfZm9yX2FyZ3VtZW50czoKK0BAIC0zMzEsNyArMzMx LDcgQEAgcmFuX291dF9vZl9yZWdpc3RlcnNfZm9yX2FyZ3VtZW50czoKICAKICAgIGlmICgoYXJn bm8gPCBuYXJncykgfHwgYXJnYnl0ZXMpCiAgICAgIHsKQEAgLTkzNywxMSArOTM3LDExIEBAIElu ZGV4OiBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9yczYwMDAtYWl4LXRkZXAuYwogIAogICAgICAg IGlmIChhcmdieXRlcykKICAJewotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL3MzOTAt dGRlcC5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3MzOTAtdGRlcC5jCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDMxMC5vcmlnL2dkYi9zMzkwLXRkZXAuYwky MDEzLTAxLTAxIDA3OjMyOjUwLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAz MTAvZ2RiL3MzOTAtdGRlcC5jCTIwMTMtMDMtMTAgMTY6NDQ6NDIuMTI1NTk5ODQ1ICswMTAwCi1A QCAtMjQ4Miw3ICsyNDgyLDcgQEAgaXNfZmxvYXRfbGlrZSAoc3RydWN0IHR5cGUgKnR5cGUpCist LS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvczM5MC10ZGVwLmMJMjAxMy0wOC0w MiAxNjo0MzowMS4xNTY2NzYxMzIgKzAyMDAKKysrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9n ZGIvczM5MC10ZGVwLmMJMjAxMy0wOC0wMiAxNjo0MzowNC43Mzk2ODEwMjYgKzAyMDAKK0BAIC0y NDgzLDcgKzI0ODMsNyBAQCBpc19mbG9hdF9saWtlIChzdHJ1Y3QgdHlwZSAqdHlwZSkKICAKICAK ICBzdGF0aWMgaW50CkBAIC05NTAsNyArOTUwLDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAz MTAvZ2RiL3MzOTAtdGRlcC5jCiAgewogICAgcmV0dXJuICgobiAmIChuIC0gMSkpID09IDApOwog IH0KLUBAIC0yNjY4LDcgKzI2NjgsNyBAQCBzMzkwX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdk YmFyY2ggKmdkCitAQCAtMjY2OSw3ICsyNjY5LDcgQEAgczM5MF9wdXNoX2R1bW15X2NhbGwgKHN0 cnVjdCBnZGJhcmNoICpnZAogICAgICAgIHsKICAgICAgICAgIHN0cnVjdCB2YWx1ZSAqYXJnID0g YXJnc1tpXTsKICAgICAgICAgIHN0cnVjdCB0eXBlICp0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFs dWVfdHlwZSAoYXJnKSk7CkBAIC05NTksMTAgKzk1OSwxMCBAQCBJbmRleDogZ2RiLTcuNS41MC4y MDEzMDMxMC9nZGIvczM5MC10ZGVwLmMKICAKICAJaWYgKHMzOTBfZnVuY3Rpb25fYXJnX3Bhc3Nf YnlfcmVmZXJlbmNlICh0eXBlKSkKICAJICB7Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDMxMC9n ZGIvc2NvcmUtdGRlcC5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3Njb3Jl LXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAzMTAub3JpZy9nZGIvc2Nv cmUtdGRlcC5jCTIwMTMtMDMtMDEgMTY6Mzg6MjYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu NS41MC4yMDEzMDMxMC9nZGIvc2NvcmUtdGRlcC5jCTIwMTMtMDMtMTAgMTY6NDQ6NDIuMTI1NTk5 ODQ1ICswMTAwCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvc2NvcmUtdGRl cC5jCTIwMTMtMDgtMDIgMTY6NDM6MDEuMTU3Njc2MTM0ICswMjAwCisrKysgZ2RiLTcuNi41MC4y MDEzMDczMS1jdnMvZ2RiL3Njb3JlLXRkZXAuYwkyMDEzLTA4LTAyIDE2OjQzOjA0LjczOTY4MTAy NiArMDIwMAogQEAgLTUxNSw3ICs1MTUsNyBAQCBzY29yZV9wdXNoX2R1bW15X2NhbGwgKHN0cnVj dCBnZGJhcmNoICpnCiAgICBlbnVtIGJmZF9lbmRpYW4gYnl0ZV9vcmRlciA9IGdkYmFyY2hfYnl0 ZV9vcmRlciAoZ2RiYXJjaCk7CiAgICBpbnQgYXJnbnVtOwpAQCAtOTcyLDEwICs5NzIsMTAgQEAg SW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL3Njb3JlLXRkZXAuYwogICAgQ09SRV9BRERS IHN0YWNrX29mZnNldCA9IDA7CiAgICBDT1JFX0FERFIgYWRkciA9IDA7CiAgCi1JbmRleDogZ2Ri LTcuNS41MC4yMDEzMDMxMC9nZGIvc2gtdGRlcC5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDcz MS1jdnMvZ2RiL3NoLXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAzMTAu b3JpZy9nZGIvc2gtdGRlcC5jCTIwMTMtMDEtMDEgMDc6MzI6NTAuMDAwMDAwMDAwICswMTAwCi0r KysgZ2RiLTcuNS41MC4yMDEzMDMxMC9nZGIvc2gtdGRlcC5jCTIwMTMtMDMtMTAgMTY6NDQ6NDIu MTI2NTk5ODQ1ICswMTAwCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvc2gt dGRlcC5jCTIwMTMtMDgtMDIgMTY6NDM6MDEuMTU3Njc2MTM0ICswMjAwCisrKysgZ2RiLTcuNi41 MC4yMDEzMDczMS1jdnMvZ2RiL3NoLXRkZXAuYwkyMDEzLTA4LTAyIDE2OjUxOjI5LjYwNDQwNDU1 MyArMDIwMAogQEAgLTgwNyw3ICs4MDcsNyBAQCBzaF9za2lwX3Byb2xvZ3VlIChzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjCiAgc3RhdGljIGludAogIHNoX3VzZV9zdHJ1Y3RfY29udmVudGlvbiAoaW50 IHJlbmVzYXNfYWJpLCBzdHJ1Y3QgdHlwZSAqdHlwZSkKQEAgLTk4OCwzNiArOTg4LDM2IEBAIElu ZGV4OiBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9zaC10ZGVwLmMKIEBAIC05MDksNyArOTA5LDcg QEAgc2hfZnJhbWVfYWxpZ24gKHN0cnVjdCBnZGJhcmNoICppZ25vcmUsCiAgCiAgLyogSGVscGVy IGZ1bmN0aW9uIHRvIGp1c3RpZnkgdmFsdWUgaW4gcmVnaXN0ZXIgYWNjb3JkaW5nIHRvIGVuZGlh bmVzcy4gICovCi0gc3RhdGljIGNoYXIgKgorIHN0YXRpYyBjb25zdCBnZGJfYnl0ZSAqCiAtc2hf anVzdGlmeV92YWx1ZV9pbl9yZWcgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgdmFs dWUgKnZhbCwgaW50IGxlbikKICtzaF9qdXN0aWZ5X3ZhbHVlX2luX3JlZyAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gsIHN0cnVjdCB2YWx1ZSAqdmFsLCBMT05HRVNUIGxlbikKICB7Ci0gICBzdGF0 aWMgY2hhciB2YWxidWZbNF07CisgICBzdGF0aWMgZ2RiX2J5dGUgdmFsYnVmWzRdOwogIAogQEAg LTEwNjksNyArMTA2OSw4IEBAIHNoX3B1c2hfZHVtbXlfY2FsbF9mcHUgKHN0cnVjdCBnZGJhcmNo ICoKICAgIHN0cnVjdCB0eXBlICp0eXBlOwogICAgQ09SRV9BRERSIHJlZ3ZhbDsKLSAgIGNoYXIg KnZhbDsKKyAgIGNvbnN0IGdkYl9ieXRlICp2YWw7CiAtICBpbnQgbGVuLCByZWdfc2l6ZSA9IDA7 CiArICBMT05HRVNUIGxlbjsKLSsgIHNzaXplX3QgcmVnX3NpemUgPSAwOworKyAgaW50IHJlZ19z aXplID0gMDsKICAgIGludCBwYXNzX29uX3N0YWNrID0gMDsKICAgIGludCB0cmVhdF9hc19mbHQ7 CiAgICBpbnQgbGFzdF9yZWdfYXJnID0gSU5UX01BWDsKIEBAIC0xMjEwLDcgKzEyMTEsOCBAQCBz aF9wdXNoX2R1bW15X2NhbGxfbm9mcHUgKHN0cnVjdCBnZGJhcmNoCiAgICBzdHJ1Y3QgdHlwZSAq dHlwZTsKICAgIENPUkVfQUREUiByZWd2YWw7Ci0gICBjaGFyICp2YWw7CisgICBjb25zdCBnZGJf Ynl0ZSAqdmFsOwogLSAgaW50IGxlbiwgcmVnX3NpemUgPSAwOwogKyAgTE9OR0VTVCBsZW47Ci0r ICBzc2l6ZV90IHJlZ19zaXplID0gMDsKKysgIGludCByZWdfc2l6ZSA9IDA7CiAgICBpbnQgcGFz c19vbl9zdGFjayA9IDA7CiAgICBpbnQgbGFzdF9yZWdfYXJnID0gSU5UX01BWDsKICAKLUluZGV4 OiBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9zaDY0LXRkZXAuYworSW5kZXg6IGdkYi03LjYuNTAu MjAxMzA3MzEtY3ZzL2dkYi9zaDY0LXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAu MjAxMzAzMTAub3JpZy9nZGIvc2g2NC10ZGVwLmMJMjAxMy0wMy0wMSAxNjozODoyNi4wMDAwMDAw MDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9zaDY0LXRkZXAuYwkyMDEzLTAz LTEwIDE2OjQ0OjQyLjEyNjU5OTg0NSArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3Zz Lm9yaWcvZ2RiL3NoNjQtdGRlcC5jCTIwMTMtMDgtMDIgMTY6NDM6MDEuMTU4Njc2MTM1ICswMjAw CisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3NoNjQtdGRlcC5jCTIwMTMtMDgtMDIg MTY6NTA6NDkuNzQwMzQ0MTI1ICswMjAwCiBAQCAtMTA1OCw3ICsxMDU4LDcgQEAgc2g2NF9wdXNo X2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnZAogIAkJICAgICAgQ09SRV9BRERSIHN0cnVj dF9hZGRyKQogIHsKQEAgLTEwMjksMTcgKzEwMjksMTcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAx MzAzMTAvZ2RiL3NoNjQtdGRlcC5jCiAgICBpbnQgZG91YmxlX2FyZ3JlZzsKIEBAIC0xMDY5LDcg KzEwNjksNyBAQCBzaDY0X3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmdkCiAgICBD T1JFX0FERFIgcmVndmFsOwotICAgY2hhciAqdmFsOwotICAgY2hhciB2YWxidWZbOF07CisgICBj b25zdCBnZGJfYnl0ZSAqdmFsOworICAgZ2RiX2J5dGUgdmFsYnVmWzhdOwogLSAgaW50IGxlbjsK ICsgIExPTkdFU1QgbGVuOwogICAgaW50IGFyZ3JlZ19zaXplOwogICAgaW50IGZwX2FyZ3NbMTJd OwogIAotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL3NwYXJjLXRkZXAuYworSW5kZXg6 IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9zcGFyYy10ZGVwLmMKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy41LjUwLjIwMTMwMzEwLm9yaWcvZ2RiL3NwYXJjLXRkZXAuYwkyMDEzLTAzLTEwIDE2 OjQ0OjMzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL3NwYXJj LXRkZXAuYwkyMDEzLTAzLTEwIDE2OjQ0OjQyLjEyNzU5OTg0NiArMDEwMAorLS0tIGdkYi03LjYu NTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2RiL3NwYXJjLXRkZXAuYwkyMDEzLTA4LTAyIDE2OjQzOjAx LjE1OTY3NjEzNiArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9zcGFyYy10 ZGVwLmMJMjAxMy0wOC0wMiAxNjo0MzowNC43NDA2ODEwMjcgKzAyMDAKIEBAIC00NzEsNyArNDcx LDcgQEAgc3BhcmMzMl9zdG9yZV9hcmd1bWVudHMgKHN0cnVjdCByZWdjYWNoZQogICAgZm9yIChp ID0gMDsgaSA8IG5hcmdzOyBpKyspCiAgICAgIHsKQEAgLTEwNDksMTAgKzEwNDksMTAgQEAgSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL3NwYXJjLXRkZXAuYwogIAogICAgICAgIGlmIChz cGFyY19zdHJ1Y3R1cmVfb3JfdW5pb25fcCAodHlwZSkKICAJICB8fCAoc3BhcmNfZmxvYXRpbmdf cCAodHlwZSkgJiYgbGVuID09IDE2KQotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL3Nw YXJjNjQtdGRlcC5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3NwYXJjNjQt dGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDMxMC5vcmlnL2dkYi9zcGFy YzY0LXRkZXAuYwkyMDEzLTAxLTAxIDA3OjMyOjUxLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjUuNTAuMjAxMzAzMTAvZ2RiL3NwYXJjNjQtdGRlcC5jCTIwMTMtMDMtMTAgMTY6NDQ6NDIuMTI3 NTk5ODQ2ICswMTAwCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvc3BhcmM2 NC10ZGVwLmMJMjAxMy0wOC0wMiAxNjo0MzowMS4xNTk2NzYxMzYgKzAyMDAKKysrKyBnZGItNy42 LjUwLjIwMTMwNzMxLWN2cy9nZGIvc3BhcmM2NC10ZGVwLmMJMjAxMy0wOC0wMiAxNjo0MzowNC43 NDE2ODEwMjkgKzAyMDAKIEBAIC02MzksNyArNjM5LDggQEAgc3BhcmM2NF8xNl9ieXRlX2FsaWdu X3AgKHN0cnVjdCB0eXBlICp0eQogIAogIHN0YXRpYyB2b2lkCkBAIC0xMTA4LDExICsxMTA4LDEx IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi9zcGFyYzY0LXRkZXAuYwogICAgICAg IGludCByZWdudW0gPSAtMTsKICAgICAgICBnZGJfYnl0ZSBidWZbMTZdOwogIAotSW5kZXg6IGdk Yi03LjUuNTAuMjAxMzAzMTAvZ2RiL3NwdS10ZGVwLmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMw NzMxLWN2cy9nZGIvc3B1LXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAz MTAub3JpZy9nZGIvc3B1LXRkZXAuYwkyMDEzLTAxLTAxIDA3OjMyOjUxLjAwMDAwMDAwMCArMDEw MAotKysrIGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL3NwdS10ZGVwLmMJMjAxMy0wMy0xMCAxNjo0 NDo0Mi4xMjc1OTk4NDYgKzAxMDAKLUBAIC0xMzczLDcgKzEzNzMsNyBAQCBzcHVfcHVzaF9kdW1t eV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMu b3JpZy9nZGIvc3B1LXRkZXAuYwkyMDEzLTA4LTAyIDE2OjQzOjAxLjE2MDY3NjEzOCArMDIwMAor KysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9zcHUtdGRlcC5jCTIwMTMtMDgtMDIgMTY6 NDM6MDQuNzQxNjgxMDI5ICswMjAwCitAQCAtMTM3Niw3ICsxMzc2LDcgQEAgc3B1X3B1c2hfZHVt bXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmdkYgogICAgICAgIHN0cnVjdCB2YWx1ZSAqYXJnID0g YXJnc1tpXTsKICAgICAgICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVl X3R5cGUgKGFyZykpOwogICAgICAgIGNvbnN0IGdkYl9ieXRlICpjb250ZW50cyA9IHZhbHVlX2Nv bnRlbnRzIChhcmcpOwpAQCAtMTEyMSw3ICsxMTIxLDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAx MzAzMTAvZ2RiL3NwdS10ZGVwLmMKICAKICAgICAgICAvKiBJZiB0aGUgYXJndW1lbnQgZG9lc24n dCB3aG9sbHkgZml0IGludG8gcmVnaXN0ZXJzLCBpdCBhbmQKICAJIGFsbCBzdWJzZXF1ZW50IGFy Z3VtZW50cyBnbyB0byB0aGUgc3RhY2suICAqLwotQEAgLTE0MDUsNyArMTQwNSw3IEBAIHNwdV9w dXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnZGIKK0BAIC0xNDA4LDcgKzE0MDgsNyBA QCBzcHVfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiCiAgCXsKICAJICBzdHJ1 Y3QgdmFsdWUgKmFyZyA9IGFyZ3NbaV07CiAgCSAgc3RydWN0IHR5cGUgKnR5cGUgPSBjaGVja190 eXBlZGVmICh2YWx1ZV90eXBlIChhcmcpKTsKQEAgLTExMzAsMTAgKzExMzAsMTAgQEAgSW5kZXg6 IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL3NwdS10ZGVwLmMKICAJICBpbnQgcHJlZmVycmVkX3Ns b3Q7CiAgCSAgCiAgCSAgaWYgKHNwdV9zY2FsYXJfdmFsdWVfcCAodHlwZSkpCi1JbmRleDogZ2Ri LTcuNS41MC4yMDEzMDMxMC9nZGIvdGljNngtdGRlcC5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEz MDczMS1jdnMvZ2RiL3RpYzZ4LXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAx MzAzMTAub3JpZy9nZGIvdGljNngtdGRlcC5jCTIwMTMtMDMtMDEgMTY6Mzg6MjcuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDMxMC9nZGIvdGljNngtdGRlcC5jCTIwMTMtMDMt MTAgMTY6NDQ6NDIuMTI4NTk5ODQ2ICswMTAwCistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMu b3JpZy9nZGIvdGljNngtdGRlcC5jCTIwMTMtMDgtMDIgMTY6NDM6MDEuMTYwNjc2MTM4ICswMjAw CisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3RpYzZ4LXRkZXAuYwkyMDEzLTA4LTAy IDE2OjQzOjA0Ljc0MjY4MTAzMCArMDIwMAogQEAgLTg5Niw3ICs4OTYsNyBAQCB0aWM2eF9wdXNo X2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnCiAgICBpbnQgYXJncmVnID0gMDsKICAgIGlu dCBhcmdudW07CkBAIC0xMTcxLDEwICsxMTcxLDEwIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMw MzEwL2dkYi90aWM2eC10ZGVwLmMKICAKICAJICBhZGRyID0gc3AgKyBzdGFja19vZmZzZXQ7CiAg CSAgd3JpdGVfbWVtb3J5IChhZGRyLCB2YWwsIGxlbik7Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEz MDMxMC9nZGIvdGlsZWd4LXRkZXAuYworSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dk Yi90aWxlZ3gtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDMxMC5vcmln L2dkYi90aWxlZ3gtdGRlcC5jCTIwMTMtMDMtMDIgMDI6MzQ6NDAuMDAwMDAwMDAwICswMTAwCi0r KysgZ2RiLTcuNS41MC4yMDEzMDMxMC9nZGIvdGlsZWd4LXRkZXAuYwkyMDEzLTAzLTEwIDE2OjQ1 OjMxLjg1NzYyOTEwMCArMDEwMAorLS0tIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzLm9yaWcvZ2Ri L3RpbGVneC10ZGVwLmMJMjAxMy0wOC0wMiAxNjo0MzowMS4xNjE2NzYxMzkgKzAyMDAKKysrKyBn ZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvdGlsZWd4LXRkZXAuYwkyMDEzLTA4LTAyIDE2OjQz OjA0Ljc0MjY4MTAzMCArMDIwMAogQEAgLTI5MSw3ICsyOTEsNyBAQCB0aWxlZ3hfcHVzaF9kdW1t eV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqCiAgICBDT1JFX0FERFIgc3RhY2tfZGVzdCA9IHNwOwog ICAgaW50IGFyZ3JlZyA9IFRJTEVHWF9SMF9SRUdOVU07CkBAIC0xMTg0LDExICsxMTg0LDExIEBA IEluZGV4OiBnZGItNy41LjUwLjIwMTMwMzEwL2dkYi90aWxlZ3gtdGRlcC5jCiAgICBzdGF0aWMg Y29uc3QgZ2RiX2J5dGUgZm91cl96ZXJvX3dvcmRzWzE2XSA9IHsgMCB9OwogIAogICAgLyogSWYg c3RydWN0X3JldHVybiBpcyAxLCB0aGVuIHRoZSBzdHJ1Y3QgcmV0dXJuIGFkZHJlc3Mgd2lsbAot SW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL3Y4NTAtdGRlcC5jCitJbmRleDogZ2RiLTcu Ni41MC4yMDEzMDczMS1jdnMvZ2RiL3Y4NTAtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu NS41MC4yMDEzMDMxMC5vcmlnL2dkYi92ODUwLXRkZXAuYwkyMDEzLTAzLTAyIDE5OjI2OjMwLjAw MDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL3Y4NTAtdGRlcC5jCTIw MTMtMDMtMTAgMTY6NDQ6NDIuMTI4NTk5ODQ2ICswMTAwCi1AQCAtODE3LDcgKzgxNyw3IEBAIHY4 NTBfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2QKKy0tLSBnZGItNy42LjUwLjIw MTMwNzMxLWN2cy5vcmlnL2dkYi92ODUwLXRkZXAuYwkyMDEzLTA4LTAyIDE2OjQzOjAxLjE2MTY3 NjEzOSArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi92ODUwLXRkZXAuYwky MDEzLTA4LTAyIDE2OjUyOjU1LjIxOTUzMTEwMSArMDIwMAorQEAgLTEwMjEsNyArMTAyMSw3IEBA IHY4NTBfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2QKICAgIGVudW0gYmZkX2Vu ZGlhbiBieXRlX29yZGVyID0gZ2RiYXJjaF9ieXRlX29yZGVyIChnZGJhcmNoKTsKICAgIGludCBh cmdyZWc7CiAgICBpbnQgYXJnbnVtOwpAQCAtMTE5Niw4ICsxMTk2LDggQEAgSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAzMTAvZ2RiL3Y4NTAtdGRlcC5jCiArICBMT05HRVNUIGxlbiA9IDA7CiAgICBp bnQgc3RhY2tfb2Zmc2V0OwogIAotICAgLyogVGhlIG9mZnNldCBvbnRvIHRoZSBzdGFjayBhdCB3 aGljaCB3ZSB3aWxsIHN0YXJ0IGNvcHlpbmcgcGFyYW1ldGVycwotQEAgLTg0Miw3ICs4NDIsNyBA QCB2ODUwX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmdkCisgICBpZiAoZ2RiYXJj aF90ZGVwIChnZGJhcmNoKS0+YWJpID09IFY4NTBfQUJJX1JIODUwKQorQEAgLTEwNDksNyArMTA0 OSw3IEBAIHY4NTBfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2QKICAgICAgIGlu IGZvdXIgcmVnaXN0ZXJzIGF2YWlsYWJsZS4gIExvb3AgdGhydSBhcmdzIGZyb20gZmlyc3QgdG8g bGFzdC4gICovCiAgICBmb3IgKGFyZ251bSA9IDA7IGFyZ251bSA8IG5hcmdzOyBhcmdudW0rKykK ICAgICAgewpAQCAtMTIwNiwxMCArMTIwNiwxMCBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDMx MC9nZGIvdjg1MC10ZGVwLmMKICAgICAgICBnZGJfYnl0ZSAqdmFsOwogICAgICAgIGdkYl9ieXRl IHZhbGJ1Zlt2ODUwX3JlZ19zaXplXTsKICAKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMzEwL2dk Yi92YXgtdGRlcC5jCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3ZheC10ZGVw LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjUwLjIwMTMwMzEwLm9yaWcvZ2RiL3ZheC10ZGVw LmMJMjAxMy0wMy0xMCAxNjo0NDozNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIw MTMwMzEwL2dkYi92YXgtdGRlcC5jCTIwMTMtMDMtMTAgMTY6NDQ6NDIuMTI4NTk5ODQ2ICswMTAw CistLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvdmF4LXRkZXAuYwkyMDEzLTA4 LTAyIDE2OjQzOjAxLjE2MTY3NjEzOSArMDIwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3Zz L2dkYi92YXgtdGRlcC5jCTIwMTMtMDgtMDIgMTY6NDM6MDQuNzQyNjgxMDMwICswMjAwCiBAQCAt MTE1LDcgKzExNSw3IEBAIHZheF9zdG9yZV9hcmd1bWVudHMgKHN0cnVjdCByZWdjYWNoZSAqcmUK ICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X3JlZ2NhY2hlX2FyY2ggKHJlZ2NhY2hl KTsKICAgIGVudW0gYmZkX2VuZGlhbiBieXRlX29yZGVyID0gZ2RiYXJjaF9ieXRlX29yZGVyIChn ZGJhcmNoKTsKQEAgLTEyMjgsMTAgKzEyMjgsMTAgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAz MTAvZ2RiL3ZheC10ZGVwLmMKICAKICAgICAgICBzcCAtPSAobGVuICsgMykgJiB+MzsKICAgICAg ICBjb3VudCArPSAobGVuICsgMykgLyA0OwotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAzMTAvZ2Ri L3hzdG9ybXkxNi10ZGVwLmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIveHN0 b3JteTE2LXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAzMTAub3JpZy9n ZGIveHN0b3JteTE2LXRkZXAuYwkyMDEzLTAzLTAxIDE2OjM4OjI3LjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL3hzdG9ybXkxNi10ZGVwLmMJMjAxMy0wMy0xMCAx Njo0NjowNS44ODg2NTMyMDEgKzAxMDAKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmln L2dkYi94c3Rvcm15MTYtdGRlcC5jCTIwMTMtMDgtMDIgMTY6NDM6MDEuMTYyNjc2MTQxICswMjAw CisrKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3hzdG9ybXkxNi10ZGVwLmMJMjAxMy0w OC0wMiAxNjo0MzowNC43NDM2ODEwMzIgKzAyMDAKIEBAIC0yMzUsOCArMjM1LDkgQEAgeHN0b3Jt eTE2X3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyYwogICAgZW51bSBiZmRfZW5kaWFuIGJ5 dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpOwogICAgQ09SRV9BRERSIHN0 YWNrX2Rlc3QgPSBzcDsKQEAgLTEyNDQsMTAgKzEyNDQsMTAgQEAgSW5kZXg6IGdkYi03LjUuNTAu MjAxMzAzMTAvZ2RiL3hzdG9ybXkxNi10ZGVwLmMKICAgIGNvbnN0IGdkYl9ieXRlICp2YWw7CiAg ICBnZGJfYnl0ZSBidWZbeHN0b3JteTE2X3BjX3NpemVdOwogIAotSW5kZXg6IGdkYi03LjUuNTAu MjAxMzAzMTAvZ2RiL3h0ZW5zYS10ZGVwLmMKK0luZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2 cy9nZGIveHRlbnNhLXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAzMTAu b3JpZy9nZGIveHRlbnNhLXRkZXAuYwkyMDEzLTAxLTAxIDA3OjQxOjI5LjAwMDAwMDAwMCArMDEw MAotKysrIGdkYi03LjUuNTAuMjAxMzAzMTAvZ2RiL3h0ZW5zYS10ZGVwLmMJMjAxMy0wMy0xMCAx Njo0NDo0Mi4xMjk1OTk4NDcgKzAxMDAKKy0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmln L2dkYi94dGVuc2EtdGRlcC5jCTIwMTMtMDgtMDIgMTY6NDM6MDEuMTYzNjc2MTQyICswMjAwCisr KysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3h0ZW5zYS10ZGVwLmMJMjAxMy0wOC0wMiAx Njo0MzowNC43NDM2ODEwMzIgKzAyMDAKIEBAIC0xNjUzLDggKzE2NTMsNyBAQCB4dGVuc2Ffc3Rv cmVfcmV0dXJuX3ZhbHVlIChzdHJ1Y3QgdHlwZSAqCiAgCiAgICAgICAgaWYgKGxlbiA+IChjYWxs c2l6ZSA+IDggPyA4IDogMTYpKQoKZGlmZiAtLWdpdCBhL2dkYi10ZXN0LXBpZDAtY29yZS5wYXRj aCBiL2dkYi10ZXN0LXBpZDAtY29yZS5wYXRjaAppbmRleCAxYmMyMjFiLi5jODY3NWEzIDEwMDY0 NAotLS0gYS9nZGItdGVzdC1waWQwLWNvcmUucGF0Y2gKKysrIGIvZ2RiLXRlc3QtcGlkMC1jb3Jl LnBhdGNoCkBAIC02LDggKzYsMTAgQEAgaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRj aGVzLzIwMTAtMDgvbXNnMDAwODUuaHRtbAogaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1j dnMvMjAxMC0wOC9tc2cwMDAyNi5odG1sCiAyZTViY2ZkZWYxZWMzODgzZDQ4YzNmODdhNGJlNWMw ZGZmMjVlMTdlCiAKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gv eDg2XzY0LXBpZDAtY29yZS5jb3JlLmJ6Mi51dQorSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEt Y3ZzL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXBpZDAtY29yZS5jb3JlLmJ6Mi51dQor PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCAr MDAwMAorKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gv eDg2XzY0LXBpZDAtY29yZS5jb3JlLmJ6Mi51dQkyMDEzLTA4LTAyIDIyOjE0OjUwLjc0ODk5MDg4 MyArMDIwMAogQEAgLTAsMCArMSwyMCBAQAogK2JlZ2luIDYwMCB4ODZfNjQtcGlkMC1jb3JlLmNv cmUuYnoyCiArTTBFSUguMyUhNjI5MzYyLENBPlAhJC8nX19fX19eKiNFWi1BIVNQMzZQJl86RzAj PTE0YGAwNEEmOCwnVQpAQCAtMjksOCArMzEsMTAgQEAgaHR0cDovL3NvdXJjZXdhcmUub3JnL21s L2dkYi1jdnMvMjAxMC0wOC9tc2cwMDAyNi5odG1sCiArNEIuWiEvLDAtSVpeV19RPVIxM0EwRCIs Q0E+UGAKICtgCiArZW5kCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5h cmNoL3g4Nl82NC1waWQwLWNvcmUuZXhwCitJbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMv Z2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtcGlkMC1jb3JlLmV4cAorPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdk Yi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXBpZDAt Y29yZS5leHAJMjAxMy0wOC0wMiAyMjoxNzozMC41NzUyMDkzODUgKzAyMDAKIEBAIC0wLDAgKzEs NDYgQEAKICsjIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIu CiArIyAKQEAgLTc3LDQgKzgxLDQgQEAgaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMv MjAxMC0wOC9tc2cwMDAyNi5odG1sCiArCiArIyBGb3JtZXIgY3Jhc2ggd2FzOgogKyMgdGhyZWFk LmM6ODg0OiBpbnRlcm5hbC1lcnJvcjogc3dpdGNoX3RvX3RocmVhZDogQXNzZXJ0aW9uIGBpbmYg IT0gTlVMTCcgZmFpbGVkLgotK2dkYl90ZXN0ICJjb3JlLWZpbGUgJHtjb3JlZmlsZX0iICJQcm9n cmFtIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMTEsIFNlZ21lbnRhdGlvbiBmYXVsdFxcLlxyXG4u KiIKKytnZGJfdGVzdCAiY29yZS1maWxlICR7Y29yZWZpbGV9IiAiUHJvZ3JhbSB0ZXJtaW5hdGVk IHdpdGggc2lnbmFsICgxMXxTSUdTRUdWKSwgU2VnbWVudGF0aW9uIGZhdWx0XFwuXHJcbi4qIgoK ZGlmZiAtLWdpdCBhL2dkYi11cHN0cmVhbS1mcmFtZWZpbHRlcnMtMW9mMi5wYXRjaCBiL2dkYi11 cHN0cmVhbS1mcmFtZWZpbHRlcnMtMW9mMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggODBhMGQ0My4uMDAwMDAwMAotLS0gYS9nZGItdXBzdHJlYW0tZnJhbWVmaWx0ZXJzLTFv ZjIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NTUxICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3 YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTMtMDUvbXNnMDAwODQuaHRtbAotCi0jIyMgc3JjL2dkYi9D aGFuZ2VMb2cJMjAxMy8wNS8wOSAxODowMzoyNwkxLjE1NTM5Ci0jIyMgc3JjL2dkYi9DaGFuZ2VM b2cJMjAxMy8wNS8xMCAxMDoyNjowMQkxLjE1NTQwCi0jIyAtMSwzICsxLDUyIEBACi0rMjAxMy0w NS0xMCAgUGhpbCBNdWxkb29uICA8cG11bGRvb25AcmVkaGF0LmNvbT4KLSsKLSsJKiBzdGFjay5j IChiYWNrdHJhY2VfY29tbWFuZF8xKTogQWRkICJuby1maWx0ZXJzIiwgYW5kIFB5dGhvbiBmcmFt ZQotKwlmaWx0ZXIgbG9naWMuCi0rCShiYWNrdHJhY2VfY29tbWFuZCk6IEFkZCAibm8tZmlsdGVy cyIgb3B0aW9uIHBhcnNpbmcuCi0rCShfaW5pdGlhbGl6ZV9zdGFjayk6IEFsdGVyIGhlbHAgdG8g cmVmbGVjdCAibm8tZmlsdGVycyIgb3B0aW9uLgotKwkqIE1ha2VmaWxlLmluIChTVUJESVJfUFlU SE9OX09CUyk6IEFkZCBweS1mcmFtZWZpbHRlci5vCi0rCShTVUJESVJfUFlUSE9OX1NSQ1MpOiBB ZGQgcHktZnJhbWVmaWx0ZXIuYwotKwkocHktZnJhbWUubyk6IEFkZCB0YXJnZXQKLSsJKiBkYXRh LWRpcmVjdG9yeS9NYWtlZmlsZS5pbiAoUFlUSE9OX0RJUik6IEFkZCBQeXRob24gZnJhbWUKLSsJ ZmlsdGVyIGZpbGVzLgotKwkqIHB5dGhvbi9weXRob24uaDogQWRkIG5ldyBmcmFtZSBmaWx0ZXIg Y29uc3RhbnRzLCBhbmQgZmxhZyBlbnVtLgotKwkoYXBwbHlfZnJhbWVfZmlsdGVyKTogQWRkIGRl ZmluaXRpb24uCi0rCSogcHl0aG9uL3B5dGhvbi5jIChhcHBseV9mcmFtZV9maWx0ZXIpOiBOZXcg bm9uLVB5dGhvbgotKwllbmFibGVkIGZ1bmN0aW9uLgotKwkqIHB5dGhvbi9weS11dGlscy5jIChw eV94ZGVjcmVmKTogTmV3IGZ1bmN0aW9uLgotKwkobWFrZV9jbGVhbnVwX3B5X3hkZWNyZWYpOiBE aXR0by4KLSsJKiBweXRob24vcHktb2JqZmlsZS5jOiBEZWNsYXJlIGZyYW1lX2ZpbHRlcnMgZGlj dGlvbmFyeS4KLSsJKG9iamZweV9kZWFsbG9jKTogQWRkIGZyYW1lX2ZpbHRlcnMgZGVhbGxvYy4K LSsJKG9iamZweV9uZXcpOiBJbml0aWFsaXplIGZyYW1lX2ZpbHRlcnMgYXR0cmlidXRlLgotKwko b2JqZmlsZV90b19vYmpmaWxlX29iamVjdCk6IERpdHRvLgotKwkob2JqZnB5X2dldF9mcmFtZV9m aWx0ZXJzKTogTmV3IGZ1bmN0aW9uLgotKwkob2JqZnB5X3NldF9mcmFtZV9maWx0ZXJzKTogTmV3 IGZ1bmN0aW9uLgotKwkqIHB5dGhvbi9weS1wcm9nc3BhY2UuYzogRGVjbGFyZSBmcmFtZV9maWx0 ZXJzIGRpY3Rpb25hcnkuCi0rCShwc3B5X2RlYWxsb2MpOiBBZGQgZnJhbWVfZmlsdGVycyBkZWFs bG9jLgotKwkocHNweV9uZXcpOiBJbml0aWFsaXplIGZyYW1lX2ZpbHRlcnMgYXR0cmlidXRlLgot KwkocHNwYWNlZV90b19wc3BhY2Vfb2JqZWN0KTogRGl0dG8uCi0rCShwc3B5X2dldF9mcmFtZV9m aWx0ZXJzKTogTmV3IGZ1bmN0aW9uLgotKwkocHNweV9zZXRfZnJhbWVfZmlsdGVycyk6IE5ldyBm dW5jdGlvbi4KLSsJKiBweXRob24vcHktZnJhbWVmaWx0ZXIuYzogTmV3IGZpbGUuCi0rCSogcHl0 aG9uL2xpYi9nZGIvY29tbWFuZC9mcmFtZV9maWx0ZXJzLnB5OiBOZXcgZmlsZS4KLSsJKiBweXRo b24vbGliL2dkYi9mcmFtZXMucHk6IE5ldyBmaWxlLgotKwkqIHB5dGhvbi9saWIvZ2RiL19faW5p dF9fLnB5OiBJbml0aWFsaXplIGdsb2JhbCBmcmFtZV9maWx0ZXJzCi0rCWRpY3Rpb25hcnkKLSsJ KiBweXRob24vbGliL2dkYi9GcmFtZURlY29yYXRvci5weTogTmV3IGZpbGUuCi0rCSogcHl0aG9u L2xpYi9nZGIvRnJhbWVJdGVyYXRvci5weTogTmV3IGZpbGUuCi0rCSogbWkvbWktY21kcy5jICht aV9jbWRzKTogQWRkIGZyYW1lIGZpbHRlcnMgY29tbWFuZC4KLSsJKiBtaS9taS1jbWRzLmg6IERl Y2xhcmUuCi0rCSogbWkvbWktY21kLXN0YWNrLmMgKG1pX2NtZF9zdGFja19saXN0X2ZyYW1lcyk6 IEFkZAotKwktLW5vLWZyYW1lLWZpbHRlciBsb2dpYywgYW5kIFB5dGhvbiBmcmFtZSBmaWx0ZXIg bG9naWMuCi0rCShzdGFja19lbmFibGVfZnJhbWVfZmlsdGVycyk6IE5ldyBmdW5jdGlvbi4KLSsJ KHBhcnNlX25vX2ZyYW1lX29wdGlvbik6IERpdHRvLgotKwkobWlfY21kX3N0YWNrX2xpc3RfZnJh bWVzKTogQWRkIC0tbm8tZnJhbWUtZmlsdGVyIGFuZCBQeXRob24gZnJhbWUKLSsJZmlsdGVyIGxv Z2ljLgotKwkobWlfY21kX3N0YWNrX2xpc3RfbG9jYWxzKTogRGl0dG8uCi0rCShtaV9jbWRfc3Rh Y2tfbGlzdF9hcmdzKTogRGl0dG8uCi0rCShtaV9jbWRfc3RhY2tfbGlzdF92YXJpYWJsZXMpOiBE aXR0by4KLSsJKiBORVdTOiBBZGQgZnJhbWUgZmlsdGVyIG5vdGUuCi0rCi0gMjAxMy0wNS0wOSAg RG91ZyBFdmFucyAgPGRqZUBnb29nbGUuY29tPgotIAotIAkqIHN5bWZpbGUuYyAoc3ltc19mcm9t X29iamZpbGVfMSk6IERlbGV0ZSBhcmdzIG9mZnNldHMsIG51bV9vZmZzZXRzLgotSW5kZXg6IGdk Yi03LjYvZ2RiL01ha2VmaWxlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dkYi9N YWtlZmlsZS5pbgkyMDEzLTA2LTEwIDE0OjMxOjAyLjcwNDA4NDY2MyArMDIwMAotKysrIGdkYi03 LjYvZ2RiL01ha2VmaWxlLmluCTIwMTMtMDYtMTAgMTQ6MzE6MDguMzUxMDgyNDQzICswMjAwCi1A QCAtMjg0LDYgKzI4NCw3IEBAIFNVQkRJUl9QWVRIT05fT0JTID0gXAotIAlweS1leGl0ZWRldmVu dC5vIFwKLSAJcHktZmluaXNoYnJlYWtwb2ludC5vIFwKLSAJcHktZnJhbWUubyBcCi0rCXB5LWZy YW1lZmlsdGVyLm8gXAotIAlweS1mdW5jdGlvbi5vIFwKLSAJcHktZ2RiLXJlYWRsaW5lLm8gXAot IAlweS1pbmZlcmlvci5vIFwKLUBAIC0zMTgsNiArMzE5LDcgQEAgU1VCRElSX1BZVEhPTl9TUkNT ID0gXAotIAlweXRob24vcHktZXhpdGVkZXZlbnQuYyBcCi0gCXB5dGhvbi9weS1maW5pc2hicmVh a3BvaW50LmMgXAotIAlweXRob24vcHktZnJhbWUuYyBcCi0rCXB5dGhvbi9weS1mcmFtZWZpbHRl ci5jIFwKLSAJcHl0aG9uL3B5LWZ1bmN0aW9uLmMgXAotIAlweXRob24vcHktZ2RiLXJlYWRsaW5l LmMgXAotIAlweXRob24vcHktaW5mZXJpb3IuYyBcCi1AQCAtMjE3NCw2ICsyMTc2LDEwIEBAIHB5 LWZyYW1lLm86ICQoc3JjZGlyKS9weXRob24vcHktZnJhbWUuYwotIAkkKENPTVBJTEUpICQoUFlU SE9OX0NGTEFHUykgJChzcmNkaXIpL3B5dGhvbi9weS1mcmFtZS5jCi0gCSQoUE9TVENPTVBJTEUp Ci0gCi0rcHktZnJhbWVmaWx0ZXIubzogJChzcmNkaXIpL3B5dGhvbi9weS1mcmFtZWZpbHRlci5j Ci0rCSQoQ09NUElMRSkgJChQWVRIT05fQ0ZMQUdTKSAkKHNyY2RpcikvcHl0aG9uL3B5LWZyYW1l ZmlsdGVyLmMKLSsJJChQT1NUQ09NUElMRSkKLSsKLSBweS1mdW5jdGlvbi5vOiAkKHNyY2Rpcikv cHl0aG9uL3B5LWZ1bmN0aW9uLmMKLSAJJChDT01QSUxFKSAkKFBZVEhPTl9DRkxBR1MpICQoc3Jj ZGlyKS9weXRob24vcHktZnVuY3Rpb24uYwotIAkkKFBPU1RDT01QSUxFKQotSW5kZXg6IGdkYi03 LjYvZ2RiL05FV1MKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL05FV1MJMjAxMy0w Ni0xMCAxNDozMTowOC4zNTMwODI0NDIgKzAyMDAKLSsrKyBnZGItNy42L2dkYi9ORVdTCTIwMTMt MDYtMTAgMTQ6MzE6MjEuMjMwMDc3MzE5ICswMjAwCi1AQCAtNCw2ICs0LDEwIEBACi0gKiBOZXds eSBpbnN0YWxsZWQgJHByZWZpeC9iaW4vZ2NvcmUgYWN0cyBhcyBhIHNoZWxsIGludGVyZmFjZSBm b3IgdGhlCi0gICBHREIgY29tbWFuZCBnY29yZS4KLSAKLSsqIFB5dGhvbiBzY3JpcHRpbmcKLSsK LSsgICoqIEZyYW1lIGZpbHRlcnMgYW5kIGZyYW1lIGRlY29yYXRvcnMgaGF2ZSBiZWVuIGFkZGVk LgotKwotICogTmV3IHJlbW90ZSBwYWNrZXRzCi0gCi0gcVhmZXI6bGlicmFyaWVzLXN2cjQ6cmVh ZCdzIGFubmV4Ci1JbmRleDogZ2RiLTcuNi9nZGIvc3RhY2suYwotPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjYub3JpZy9nZGIvc3RhY2suYwkyMDEzLTA2LTEwIDE0OjMxOjAyLjcwOTA4NDY2MSArMDIw MAotKysrIGdkYi03LjYvZ2RiL3N0YWNrLmMJMjAxMy0wNi0xMCAxNDozMTowOC4zNTQwODI0NDEg KzAyMDAKLUBAIC01NCw2ICs1NCw3IEBACi0gCi0gI2luY2x1ZGUgInBzeW10YWIuaCIKLSAjaW5j bHVkZSAic3ltZmlsZS5oIgotKyNpbmNsdWRlICJweXRob24vcHl0aG9uLmgiCi0gCi0gdm9pZCAo KmRlcHJlY2F0ZWRfc2VsZWN0ZWRfZnJhbWVfbGV2ZWxfY2hhbmdlZF9ob29rKSAoaW50KTsKLSAK LUBAIC0xNjU1LDEzICsxNjU2LDE1IEBAIGZyYW1lX2luZm8gKGNoYXIgKmFkZHJfZXhwLCBpbnQg ZnJvbV90dHkKLSAgICBmcmFtZXMuICAqLwotIAotIHN0YXRpYyB2b2lkCi0tYmFja3RyYWNlX2Nv bW1hbmRfMSAoY2hhciAqY291bnRfZXhwLCBpbnQgc2hvd19sb2NhbHMsIGludCBmcm9tX3R0eSkK LStiYWNrdHJhY2VfY29tbWFuZF8xIChjaGFyICpjb3VudF9leHAsIGludCBzaG93X2xvY2Fscywg aW50IG5vX2ZpbHRlcnMsCi0rCQkgICAgIGludCBmcm9tX3R0eSkKLSB7Ci0gICBzdHJ1Y3QgZnJh bWVfaW5mbyAqZmk7Ci0gICBpbnQgY291bnQ7Ci0gICBpbnQgaTsKLSAgIHN0cnVjdCBmcmFtZV9p bmZvICp0cmFpbGluZzsKLS0gIGludCB0cmFpbGluZ19sZXZlbDsKLSsgIGludCB0cmFpbGluZ19s ZXZlbCwgcHlfc3RhcnQgPSAwLCBweV9lbmQgPSAwOwotKyAgZW51bSBweV9idF9zdGF0dXMgcmVz dWx0ID0gUFlfQlRfRVJST1I7Ci0gCi0gICBpZiAoIXRhcmdldF9oYXNfc3RhY2spCi0gICAgIGVy cm9yIChfKCJObyBzdGFjay4iKSk7Ci1AQCAtMTY4MCw2ICsxNjgzLDcgQEAgYmFja3RyYWNlX2Nv bW1hbmRfMSAoY2hhciAqY291bnRfZXhwLCBpbgotIAl7Ci0gCSAgc3RydWN0IGZyYW1lX2luZm8g KmN1cnJlbnQ7Ci0gCi0rCSAgcHlfc3RhcnQgPSBjb3VudDsKLSAJICBjb3VudCA9IC1jb3VudDsK LSAKLSAJICBjdXJyZW50ID0gdHJhaWxpbmc7Ci1AQCAtMTcwMSw5ICsxNzA1LDE3IEBAIGJhY2t0 cmFjZV9jb21tYW5kXzEgKGNoYXIgKmNvdW50X2V4cCwgaW4KLSAKLSAJICBjb3VudCA9IC0xOwot IAl9Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgcHlfc3RhcnQgPSAwOwotKwkgIHB5X2VuZCA9IGNv dW50OwotKwl9Ci0gICAgIH0KLSAgIGVsc2UKLS0gICAgY291bnQgPSAtMTsKLSsgICAgewotKyAg ICAgIHB5X2VuZCA9IC0xOwotKyAgICAgIGNvdW50ID0gLTE7Ci0rICAgIH0KLSAKLSAgIGlmIChp bmZvX3ZlcmJvc2UpCi0gICAgIHsKLUBAIC0xNzIzLDE2ICsxNzM1LDQwIEBAIGJhY2t0cmFjZV9j b21tYW5kXzEgKGNoYXIgKmNvdW50X2V4cCwgaW4KLSAJfQotICAgICB9Ci0gCi0tICBmb3IgKGkg PSAwLCBmaSA9IHRyYWlsaW5nOyBmaSAmJiBjb3VudC0tOyBpKyssIGZpID0gZ2V0X3ByZXZfZnJh bWUgKGZpKSkKLSsgIGlmICghIG5vX2ZpbHRlcnMpCi0gICAgIHsKLS0gICAgICBRVUlUOwotKyAg ICAgIGludCBmbGFncyA9IFBSSU5UX0xFVkVMIHwgUFJJTlRfRlJBTUVfSU5GTyB8IFBSSU5UX0FS R1M7Ci0rICAgICAgZW51bSBweV9mcmFtZV9hcmdzIGFyZ190eXBlOwotIAotLSAgICAgIC8qIERv bid0IHVzZSBwcmludF9zdGFja19mcmFtZTsgaWYgYW4gZXJyb3IoKSBvY2N1cnMgaXQgcHJvYmFi bHkKLS0gICAgICAgICBtZWFucyBmdXJ0aGVyIGF0dGVtcHRzIHRvIGJhY2t0cmFjZSB3b3VsZCBm YWlsIChvbiB0aGUgb3RoZXIKLS0gICAgICAgICBoYW5kLCBwZXJoYXBzIHRoZSBjb2RlIGRvZXMg b3IgY291bGQgYmUgZml4ZWQgdG8gbWFrZSBzdXJlCi0tICAgICAgICAgdGhlIGZyYW1lLT5wcmV2 IGZpZWxkIGdldHMgc2V0IHRvIE5VTEwgaW4gdGhhdCBjYXNlKS4gICovCi0tICAgICAgcHJpbnRf ZnJhbWVfaW5mbyAoZmksIDEsIExPQ0FUSU9OLCAxKTsKLSAgICAgICBpZiAoc2hvd19sb2NhbHMp Ci0rCWZsYWdzIHw9IFBSSU5UX0xPQ0FMUzsKLSsKLSsgICAgICBpZiAoIXN0cmNtcCAocHJpbnRf ZnJhbWVfYXJndW1lbnRzLCAic2NhbGFycyIpKQotKwlhcmdfdHlwZSA9IENMSV9TQ0FMQVJfVkFM VUVTOwotKyAgICAgIGVsc2UgaWYgKCFzdHJjbXAgKHByaW50X2ZyYW1lX2FyZ3VtZW50cywgImFs bCIpKQotKwlhcmdfdHlwZSA9IENMSV9BTExfVkFMVUVTOwotKyAgICAgIGVsc2UKLSsJYXJnX3R5 cGUgPSBOT19WQUxVRVM7Ci0rCi0rICAgICAgcmVzdWx0ID0gYXBwbHlfZnJhbWVfZmlsdGVyIChn ZXRfY3VycmVudF9mcmFtZSAoKSwgZmxhZ3MsIGFyZ190eXBlLAotKwkJCQkgICBjdXJyZW50X3Vp b3V0LCBweV9zdGFydCwgcHlfZW5kKTsKLSsKLSsgICAgfQotKyAgLyogUnVuIHRoZSBpbmJ1aWx0 IGJhY2t0cmFjZSBpZiB0aGVyZSBhcmUgbm8gZmlsdGVycyByZWdpc3RlcmVkLCBvcgotKyAgICAg Im5vLWZpbHRlcnMiIGhhcyBiZWVuIHNwZWNpZmllZCBmcm9tIHRoZSBjb21tYW5kLiAgKi8KLSsg IGlmIChub19maWx0ZXJzIHx8ICByZXN1bHQgPT0gUFlfQlRfTk9fRklMVEVSUykKLSsgICAgewot KyAgICAgIGZvciAoaSA9IDAsIGZpID0gdHJhaWxpbmc7IGZpICYmIGNvdW50LS07IGkrKywgZmkg PSBnZXRfcHJldl9mcmFtZSAoZmkpKQotKwl7Ci0rCSAgUVVJVDsKLSsKLSsJICAvKiBEb24ndCB1 c2UgcHJpbnRfc3RhY2tfZnJhbWU7IGlmIGFuIGVycm9yKCkgb2NjdXJzIGl0IHByb2JhYmx5Ci0r CSAgICAgbWVhbnMgZnVydGhlciBhdHRlbXB0cyB0byBiYWNrdHJhY2Ugd291bGQgZmFpbCAob24g dGhlIG90aGVyCi0rCSAgICAgaGFuZCwgcGVyaGFwcyB0aGUgY29kZSBkb2VzIG9yIGNvdWxkIGJl IGZpeGVkIHRvIG1ha2Ugc3VyZQotKwkgICAgIHRoZSBmcmFtZS0+cHJldiBmaWVsZCBnZXRzIHNl dCB0byBOVUxMIGluIHRoYXQgY2FzZSkuICAqLwotKwotKwkgIHByaW50X2ZyYW1lX2luZm8gKGZp LCAxLCBMT0NBVElPTiwgMSk7Ci0rCSAgaWYgKHNob3dfbG9jYWxzKQotIAl7Ci0gCSAgc3RydWN0 IGZyYW1lX2lkIGZyYW1lX2lkID0gZ2V0X2ZyYW1lX2lkIChmaSk7Ci0gCi1AQCAtMTc0OCwyNCAr MTc4NCwyNSBAQCBiYWNrdHJhY2VfY29tbWFuZF8xIChjaGFyICpjb3VudF9leHAsIGluCi0gCSAg ICB9Ci0gCX0KLSAKLS0gICAgICAvKiBTYXZlIHRoZSBsYXN0IGZyYW1lIHRvIGNoZWNrIGZvciBl cnJvciBjb25kaXRpb25zLiAgKi8KLS0gICAgICB0cmFpbGluZyA9IGZpOwotLSAgICB9Ci0rCSAg LyogU2F2ZSB0aGUgbGFzdCBmcmFtZSB0byBjaGVjayBmb3IgZXJyb3IgY29uZGl0aW9ucy4gICov Ci0rCSAgdHJhaWxpbmcgPSBmaTsKLSsJfQotIAotLSAgLyogSWYgd2UndmUgc3RvcHBlZCBiZWZv cmUgdGhlIGVuZCwgbWVudGlvbiB0aGF0LiAgKi8KLS0gIGlmIChmaSAmJiBmcm9tX3R0eSkKLS0g ICAgcHJpbnRmX2ZpbHRlcmVkIChfKCIoTW9yZSBzdGFjayBmcmFtZXMgZm9sbG93Li4uKVxuIikp OwotKyAgICAgIC8qIElmIHdlJ3ZlIHN0b3BwZWQgYmVmb3JlIHRoZSBlbmQsIG1lbnRpb24gdGhh dC4gICovCi0rICAgICAgaWYgKGZpICYmIGZyb21fdHR5KQotKwlwcmludGZfZmlsdGVyZWQgKF8o IihNb3JlIHN0YWNrIGZyYW1lcyBmb2xsb3cuLi4pXG4iKSk7Ci0gCi0tICAvKiBJZiB3ZSd2ZSBy dW4gb3V0IG9mIGZyYW1lcywgYW5kIHRoZSByZWFzb24gYXBwZWFycyB0byBiZSBhbiBlcnJvcgot LSAgICAgY29uZGl0aW9uLCBwcmludCBpdC4gICovCi0tICBpZiAoZmkgPT0gTlVMTCAmJiB0cmFp bGluZyAhPSBOVUxMKQotLSAgICB7Ci0tICAgICAgZW51bSB1bndpbmRfc3RvcF9yZWFzb24gcmVh c29uOwotKyAgICAgIC8qIElmIHdlJ3ZlIHJ1biBvdXQgb2YgZnJhbWVzLCBhbmQgdGhlIHJlYXNv biBhcHBlYXJzIHRvIGJlIGFuIGVycm9yCi0rCSBjb25kaXRpb24sIHByaW50IGl0LiAgKi8KLSsg ICAgICBpZiAoZmkgPT0gTlVMTCAmJiB0cmFpbGluZyAhPSBOVUxMKQotKwl7Ci0rCSAgZW51bSB1 bndpbmRfc3RvcF9yZWFzb24gcmVhc29uOwotIAotLSAgICAgIHJlYXNvbiA9IGdldF9mcmFtZV91 bndpbmRfc3RvcF9yZWFzb24gKHRyYWlsaW5nKTsKLS0gICAgICBpZiAocmVhc29uID49IFVOV0lO RF9GSVJTVF9FUlJPUikKLS0JcHJpbnRmX2ZpbHRlcmVkIChfKCJCYWNrdHJhY2Ugc3RvcHBlZDog JXNcbiIpLAotLQkJCSBmcmFtZV9zdG9wX3JlYXNvbl9zdHJpbmcgKHJlYXNvbikpOwotKwkgIHJl YXNvbiA9IGdldF9mcmFtZV91bndpbmRfc3RvcF9yZWFzb24gKHRyYWlsaW5nKTsKLSsJICBpZiAo cmVhc29uID49IFVOV0lORF9GSVJTVF9FUlJPUikKLSsJICAgIHByaW50Zl9maWx0ZXJlZCAoXygi QmFja3RyYWNlIHN0b3BwZWQ6ICVzXG4iKSwKLSsJCQkgICAgIGZyYW1lX3N0b3BfcmVhc29uX3N0 cmluZyAocmVhc29uKSk7Ci0rCX0KLSAgICAgfQotIH0KLSAKLUBAIC0xNzczLDcgKzE4MTAsOCBA QCBzdGF0aWMgdm9pZAotIGJhY2t0cmFjZV9jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0 eSkKLSB7Ci0gICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwIChudWxs X2NsZWFudXAsIE5VTEwpOwotLSAgaW50IGZ1bGx0cmFjZV9hcmcgPSAtMSwgYXJnbGVuID0gMCwg YXJnYyA9IDA7Ci0rICBpbnQgZnVsbHRyYWNlX2FyZyA9IC0xLCBhcmdsZW4gPSAwLCBhcmdjID0g MCwgbm9fZmlsdGVycyAgPSAtMTsKLSsgIGludCB1c2VyX2FyZyA9IDA7Ci0gCi0gICBpZiAoYXJn KQotICAgICB7Ci1AQCAtMTc5MCwyNSArMTgyOCwzMSBAQCBiYWNrdHJhY2VfY29tbWFuZCAoY2hh ciAqYXJnLCBpbnQgZnJvbV90Ci0gCSAgZm9yIChqID0gMDsgaiA8IHN0cmxlbiAoYXJndltpXSk7 IGorKykKLSAJICAgIGFyZ3ZbaV1bal0gPSB0b2xvd2VyIChhcmd2W2ldW2pdKTsKLSAKLS0JICBp ZiAoZnVsbHRyYWNlX2FyZyA8IDAgJiYgc3Vic2V0X2NvbXBhcmUgKGFyZ3ZbaV0sICJmdWxsIikp Ci0tCSAgICBmdWxsdHJhY2VfYXJnID0gYXJnYzsKLSsJICBpZiAobm9fZmlsdGVycyA8IDAgJiYg c3Vic2V0X2NvbXBhcmUgKGFyZ3ZbaV0sICJuby1maWx0ZXJzIikpCi0rCSAgICBub19maWx0ZXJz ID0gYXJnYzsKLSAJICBlbHNlCi0gCSAgICB7Ci0tCSAgICAgIGFyZ2xlbiArPSBzdHJsZW4gKGFy Z3ZbaV0pOwotLQkgICAgICBhcmdjKys7Ci0rCSAgICAgIGlmIChmdWxsdHJhY2VfYXJnIDwgMCAm JiBzdWJzZXRfY29tcGFyZSAoYXJndltpXSwgImZ1bGwiKSkKLSsJCWZ1bGx0cmFjZV9hcmcgPSBh cmdjOwotKwkgICAgICBlbHNlCi0rCQl7Ci0rCQkgIHVzZXJfYXJnKys7Ci0rCQkgIGFyZ2xlbiAr PSBzdHJsZW4gKGFyZ3ZbaV0pOwotKwkJfQotIAkgICAgfQotKwkgIGFyZ2MrKzsKLSAJfQotLSAg ICAgIGFyZ2xlbiArPSBhcmdjOwotLSAgICAgIGlmIChmdWxsdHJhY2VfYXJnID49IDApCi0rICAg ICAgYXJnbGVuICs9IHVzZXJfYXJnOwotKyAgICAgIGlmIChmdWxsdHJhY2VfYXJnID49IDAgfHwg bm9fZmlsdGVycyA+PSAwKQotIAl7Ci0gCSAgaWYgKGFyZ2xlbiA+IDApCi0gCSAgICB7Ci0gCSAg ICAgIGFyZyA9IHhtYWxsb2MgKGFyZ2xlbiArIDEpOwotIAkgICAgICBtYWtlX2NsZWFudXAgKHhm cmVlLCBhcmcpOwotIAkgICAgICBhcmdbMF0gPSAwOwotLQkgICAgICBmb3IgKGkgPSAwOyBpIDwg KGFyZ2MgKyAxKTsgaSsrKQotKwkgICAgICBmb3IgKGkgPSAwOyBpIDwgYXJnYzsgaSsrKQotIAkJ ewotLQkJICBpZiAoaSAhPSBmdWxsdHJhY2VfYXJnKQotKwkJICBpZiAoaSAhPSBmdWxsdHJhY2Vf YXJnICYmIGkgIT0gbm9fZmlsdGVycykKLSAJCSAgICB7Ci0gCQkgICAgICBzdHJjYXQgKGFyZywg YXJndltpXSk7Ci0gCQkgICAgICBzdHJjYXQgKGFyZywgIiAiKTsKLUBAIC0xODIwLDcgKzE4NjQs OCBAQCBiYWNrdHJhY2VfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90Ci0gCX0KLSAgICAg fQotIAotLSAgYmFja3RyYWNlX2NvbW1hbmRfMSAoYXJnLCBmdWxsdHJhY2VfYXJnID49IDAgLyog c2hvd19sb2NhbHMgKi8sIGZyb21fdHR5KTsKLSsgIGJhY2t0cmFjZV9jb21tYW5kXzEgKGFyZywg ZnVsbHRyYWNlX2FyZyA+PSAwIC8qIHNob3dfbG9jYWxzICovLAotKwkJICAgICAgIG5vX2ZpbHRl cnMgPj0gMCAvKiBubyBmcmFtZS1maWx0ZXJzICovLCBmcm9tX3R0eSk7Ci0gCi0gICBkb19jbGVh bnVwcyAob2xkX2NoYWluKTsKLSB9Ci1AQCAtMTgyOCw3ICsxODczLDcgQEAgYmFja3RyYWNlX2Nv bW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdAotIHN0YXRpYyB2b2lkCi0gYmFja3RyYWNlX2Z1 bGxfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCi0gewotLSAgYmFja3RyYWNlX2Nv bW1hbmRfMSAoYXJnLCAxIC8qIHNob3dfbG9jYWxzICovLCBmcm9tX3R0eSk7Ci0rICBiYWNrdHJh Y2VfY29tbWFuZF8xIChhcmcsIDEgLyogc2hvd19sb2NhbHMgKi8sIDAsIGZyb21fdHR5KTsKLSB9 Ci0gDAotIAotQEAgLTI1NjIsNyArMjYwNyw5IEBAIEl0IGNhbiBiZSBhIHN0YWNrIGZyYW1lIG51 bWJlciBvciB0aGUgYWQKLSAgIGFkZF9jb20gKCJiYWNrdHJhY2UiLCBjbGFzc19zdGFjaywgYmFj a3RyYWNlX2NvbW1hbmQsIF8oIlwKLSBQcmludCBiYWNrdHJhY2Ugb2YgYWxsIHN0YWNrIGZyYW1l cywgb3IgaW5uZXJtb3N0IENPVU5UIGZyYW1lcy5cblwKLSBXaXRoIGEgbmVnYXRpdmUgYXJndW1l bnQsIHByaW50IG91dGVybW9zdCAtQ09VTlQgZnJhbWVzLlxuVXNlIG9mIHRoZSBcCi0tJ2Z1bGwn IHF1YWxpZmllciBhbHNvIHByaW50cyB0aGUgdmFsdWVzIG9mIHRoZSBsb2NhbCB2YXJpYWJsZXMu XG4iKSk7Ci0rJ2Z1bGwnIHF1YWxpZmllciBhbHNvIHByaW50cyB0aGUgdmFsdWVzIG9mIHRoZSBs b2NhbCB2YXJpYWJsZXMuXG5cCi0rVXNlIG9mIHRoZSAnbm8tZmlsdGVycycgcXVhbGlmaWVyIHBy b2hpYml0cyBmcmFtZSBmaWx0ZXJzIGZyb20gZXhlY3V0aW5nXG5cCi0rb24gdGhpcyBiYWNrdHJh Y2UuXG4iKSk7Ci0gICBhZGRfY29tX2FsaWFzICgiYnQiLCAiYmFja3RyYWNlIiwgY2xhc3Nfc3Rh Y2ssIDApOwotICAgaWYgKHhkYl9jb21tYW5kcykKLSAgICAgewotSW5kZXg6IGdkYi03LjYvZ2Ri L2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5vcmln L2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbgkyMDEzLTA2LTEwIDE0OjMxOjAyLjcxMDA4 NDY2MCArMDIwMAotKysrIGdkYi03LjYvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCTIw MTMtMDYtMTAgMTQ6MzE6MDguMzU1MDgyNDQxICswMjAwCi1AQCAtNTMsNyArNTMsMTEgQEAgUFlU SE9OX0RJUiA9IHB5dGhvbgotIFBZVEhPTl9JTlNUQUxMX0RJUiA9ICQoREVTVERJUikkKEdEQl9E QVRBRElSKS8kKFBZVEhPTl9ESVIpCi0gUFlUSE9OX0ZJTEVTID0gXAotIAlnZGIvX19pbml0X18u cHkgXAotKwlnZGIvZnJhbWVzLnB5IFwKLSsJZ2RiL0ZyYW1lSXRlcmF0b3IucHkgXAotKwlnZGIv RnJhbWVEZWNvcmF0b3IucHkgXAotIAlnZGIvY29tbWFuZC9fX2luaXRfXy5weSBcCi0rCWdkYi9j b21tYW5kL2ZyYW1lX2ZpbHRlcnMucHkgXAotIAlnZGIvY29tbWFuZC9pZ25vcmVfZXJyb3JzLnB5 IFwKLSAJZ2RiL2NvbW1hbmQvcGFob2xlLnB5IFwKLSAJZ2RiL2NvbW1hbmQvdHlwZV9wcmludGVy cy5weSBcCi1JbmRleDogZ2RiLTcuNi9nZGIvZG9jL2dkYi50ZXhpbmZvCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNi5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMy0wNi0xMCAxNDozMTowMi43 MjcwODQ2NTQgKzAyMDAKLSsrKyBnZGItNy42L2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMy0wNi0x MCAxNDozMTowOC4zNjQwODI0MzggKzAyMDAKLUBAIC02NDU5LDYgKzY0NTksNyBAQCBjdXJyZW50 bHkgZXhlY3V0aW5nIGZyYW1lIGFuZCBkZXNjcmliZXMKLSBAbWVudQotICogRnJhbWVzOjogICAg ICAgICAgICAgICAgICAgICAgU3RhY2sgZnJhbWVzCi0gKiBCYWNrdHJhY2U6OiAgICAgICAgICAg ICAgICAgICBCYWNrdHJhY2VzCi0rKiBGcmFtZSBGaWx0ZXIgTWFuYWdlbWVudDo6ICAgICBNYW5h Z2luZyBmcmFtZSBmaWx0ZXJzCi0gKiBTZWxlY3Rpb246OiAgICAgICAgICAgICAgICAgICBTZWxl Y3RpbmcgYSBmcmFtZQotICogRnJhbWUgSW5mbzo6ICAgICAgICAgICAgICAgICAgSW5mb3JtYXRp b24gb24gYSBmcmFtZQotIAotQEAgLTY1NDYsNiArNjU0Nyw3IEBAIGxpbmUgcGVyIGZyYW1lLCBm b3IgbWFueSBmcmFtZXMsIHN0YXJ0aW4KLSBmcmFtZSAoZnJhbWUgemVybyksIGZvbGxvd2VkIGJ5 IGl0cyBjYWxsZXIgKGZyYW1lIG9uZSksIGFuZCBvbiB1cCB0aGUKLSBzdGFjay4KLSAKLStAYW5j aG9ye2JhY2t0cmFjZS1jb21tYW5kfQotIEB0YWJsZSBAY29kZQotIEBraW5kZXggYmFja3RyYWNl Ci0gQGtpbmRleCBidCBAcnsoQGNvZGV7YmFja3RyYWNlfSl9Ci1AQCAtNjU3MSw2ICs2NTczLDE5 IEBAIFNpbWlsYXIsIGJ1dCBwcmludCBvbmx5IHRoZSBvdXRlcm1vc3QgQHYKLSBAaXRlbXggYnQg ZnVsbCAtQHZhcntufQotIFByaW50IHRoZSB2YWx1ZXMgb2YgdGhlIGxvY2FsIHZhcmlhYmxlcyBh bHNvLiAgQHZhcntufSBzcGVjaWZpZXMgdGhlCi0gbnVtYmVyIG9mIGZyYW1lcyB0byBwcmludCwg YXMgZGVzY3JpYmVkIGFib3ZlLgotKwotK0BpdGVtIGJhY2t0cmFjZSBuby1maWx0ZXJzCi0rQGl0 ZW14IGJ0IG5vLWZpbHRlcnMKLStAaXRlbXggYnQgbm8tZmlsdGVycyBAdmFye259Ci0rQGl0ZW14 IGJ0IG5vLWZpbHRlcnMgLUB2YXJ7bn0KLStAaXRlbXggYnQgbm8tZmlsdGVycyBmdWxsCi0rQGl0 ZW14IGJ0IG5vLWZpbHRlcnMgZnVsbCBAdmFye259Ci0rQGl0ZW14IGJ0IG5vLWZpbHRlcnMgZnVs bCAtQHZhcntufQotK0RvIG5vdCBydW4gUHl0aG9uIGZyYW1lIGZpbHRlcnMgb24gdGhpcyBiYWNr dHJhY2UuICBAeHJlZntGcmFtZQotK0ZpbHRlciBBUEl9LCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4g IEFkZGl0aW9uYWxseSB1c2UgQHJlZntkaXNhYmxlCi0rZnJhbWUtZmlsdGVyIGFsbH0gdG8gdHVy biBvZmYgYWxsIGZyYW1lIGZpbHRlcnMuICBUaGlzIGlzIG9ubHkKLStyZWxldmFudCB3aGVuIEB2 YWx1ZXtHREJOfSBoYXMgYmVlbiBjb25maWd1cmVkIHdpdGggQGNvZGV7UHl0aG9ufQotK3N1cHBv cnQuCi0gQGVuZCB0YWJsZQotIAotIEBraW5kZXggd2hlcmUKLUBAIC02NzIwLDYgKzY3MzUsMTQ5 IEBAIERpc3BsYXkgYW4gYWJzb2x1dGUgZmlsZW5hbWUuCi0gU2hvdyB0aGUgY3VycmVudCB3YXkg dG8gZGlzcGxheSBmaWxlbmFtZXMuCi0gQGVuZCB0YWJsZQotIAotK0Bub2RlIEZyYW1lIEZpbHRl ciBNYW5hZ2VtZW50Ci0rQHNlY3Rpb24gTWFuYWdlbWVudCBvZiBGcmFtZSBGaWx0ZXJzLgotK0Bj aW5kZXggbWFuYWdpbmcgZnJhbWUgZmlsdGVycwotKwotK0ZyYW1lIGZpbHRlcnMgYXJlIFB5dGhv biBiYXNlZCB1dGlsaXRpZXMgdG8gbWFuYWdlIGFuZCBkZWNvcmF0ZSB0aGUKLStvdXRwdXQgb2Yg ZnJhbWVzLiAgQHhyZWZ7RnJhbWUgRmlsdGVyIEFQSX0sIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9u LgotKwotK01hbmFnaW5nIGZyYW1lIGZpbHRlcnMgaXMgcGVyZm9ybWVkIGJ5IHNldmVyYWwgY29t bWFuZHMgYXZhaWxhYmxlCi0rd2l0aGluIEB2YWx1ZXtHREJOfSwgZGV0YWlsZWQgaGVyZS4KLSsK LStAdGFibGUgQGNvZGUKLStAa2luZGV4IGluZm8gZnJhbWUtZmlsdGVyCi0rQGl0ZW0gaW5mbyBm cmFtZS1maWx0ZXIKLStQcmludCBhIGxpc3Qgb2YgaW5zdGFsbGVkIGZyYW1lIGZpbHRlcnMgZnJv bSBhbGwgZGljdGlvbmFyaWVzLCBzaG93aW5nCi0rdGhlaXIgbmFtZSwgcHJpb3JpdHkgYW5kIGVu YWJsZWQgc3RhdHVzLgotKwotK0BraW5kZXggZGlzYWJsZSBmcmFtZS1maWx0ZXIKLStAYW5jaG9y e2Rpc2FibGUgZnJhbWUtZmlsdGVyIGFsbH0KLStAaXRlbSBkaXNhYmxlIGZyYW1lLWZpbHRlciBA dmFye2ZpbHRlci1kaWN0aW9uYXJ5fSBAdmFye2ZpbHRlci1uYW1lfQotK0Rpc2FibGUgYSBmcmFt ZSBmaWx0ZXIgaW4gdGhlIGRpY3Rpb25hcnkgbWF0Y2hpbmcKLStAdmFye2ZpbHRlci1kaWN0aW9u YXJ5fSwgb3IgQGNvZGV7YWxsfSwgYW5kIEB2YXJ7ZmlsdGVyLW5hbWV9LgotK0B2YXJ7ZmlsdGVy LWRpY3Rpb25hcnl9IG1heSBiZSBAY29kZXthbGx9LCBAY29kZXtnbG9iYWx9LAotK0Bjb2Rle3By b2dzcGFjZX0gb3IgdGhlIG5hbWUgb2YgdGhlIG9iamVjdCBmaWxlIHdoZXJlIHRoZSBmcmFtZSBm aWx0ZXIKLStkaWN0aW9uYXJ5IHJlc2lkZXMuICBXaGVuIEBjb2Rle2FsbH0gaXMgc3BlY2lmaWVk LCBhbGwgZnJhbWUgZmlsdGVycwotK2Fjcm9zcyBhbGwgZGljdGlvbmFyaWVzIGFyZSBkaXNhYmxl ZC4gIEB2YXJ7ZmlsdGVyLW5hbWV9IGlzIHRoZSBuYW1lCi0rb2YgdGhlIGZyYW1lIGZpbHRlciBh bmQgaXMgdXNlZCB3aGVuIEBjb2Rle2FsbH0gaXMgbm90IHRoZSBvcHRpb24gZm9yCi0rQHZhcntm aWx0ZXItZGljdGlvbmFyeX0uICBBIGRpc2FibGVkIGZyYW1lLWZpbHRlciBpcyBub3QgZGVsZXRl ZCwgaXQKLSttYXkgYmUgZW5hYmxlZCBhZ2FpbiBsYXRlci4KLSsKLStAa2luZGV4IGVuYWJsZSBm cmFtZS1maWx0ZXIKLStAaXRlbSBlbmFibGUgZnJhbWUtZmlsdGVyIEB2YXJ7ZmlsdGVyLWRpY3Rp b25hcnl9IEB2YXJ7ZmlsdGVyLW5hbWV9Ci0rRW5hYmxlIGEgZnJhbWUgZmlsdGVyIGluIHRoZSBk aWN0aW9uYXJ5IG1hdGNoaW5nCi0rQHZhcntmaWx0ZXItZGljdGlvbmFyeX0sIG9yIEBjb2Rle2Fs bH0sIGFuZCBAdmFye2ZpbHRlci1uYW1lfS4KLStAdmFye2ZpbHRlci1kaWN0aW9uYXJ5fSBtYXkg YmUgQGNvZGV7YWxsfSwgQGNvZGV7Z2xvYmFsfSwKLStAY29kZXtwcm9nc3BhY2V9IG9yIHRoZSBu YW1lIG9mIHRoZSBvYmplY3QgZmlsZSB3aGVyZSB0aGUgZnJhbWUgZmlsdGVyCi0rZGljdGlvbmFy eSByZXNpZGVzLiAgV2hlbiBAY29kZXthbGx9IGlzIHNwZWNpZmllZCwgYWxsIGZyYW1lIGZpbHRl cnMgYWNyb3NzCi0rYWxsIGRpY3Rpb25hcmllcyBhcmUgZW5hYmxlZC4gIEB2YXJ7ZmlsdGVyLW5h bWV9IGlzIHRoZSBuYW1lIG9mIHRoZSBmcmFtZQotK2ZpbHRlciBhbmQgaXMgdXNlZCB3aGVuIEBj b2Rle2FsbH0gaXMgbm90IHRoZSBvcHRpb24gZm9yCi0rQHZhcntmaWx0ZXItZGljdGlvbmFyeX0u Ci0rCi0rRXhhbXBsZToKLSsKLStAc21hbGxleGFtcGxlCi0rKGdkYikgaW5mbyBmcmFtZS1maWx0 ZXIKLSsKLStnbG9iYWwgZnJhbWUtZmlsdGVyczoKLSsgIFByaW9yaXR5ICBFbmFibGVkICBOYW1l Ci0rICAxMDAwICAgICAgTm8gICAgICAgUHJpbWFyeUZ1bmN0aW9uRmlsdGVyCi0rICAxMDAgICAg ICAgWWVzICAgICAgUmV2ZXJzZQotKwotK3Byb2dzcGFjZSAvYnVpbGQvdGVzdCBmcmFtZS1maWx0 ZXJzOgotKyAgUHJpb3JpdHkgIEVuYWJsZWQgIE5hbWUKLSsgIDEwMCAgICAgICBZZXMgICAgICBQ cm9nc3BhY2VGaWx0ZXIKLSsKLStvYmpmaWxlIC9idWlsZC90ZXN0IGZyYW1lLWZpbHRlcnM6Ci0r ICBQcmlvcml0eSAgRW5hYmxlZCAgTmFtZQotKyAgOTk5ICAgICAgIFllcyAgICAgIEJ1aWxkUHJv Z3JhIEZpbHRlcgotKwotKyhnZGIpIGRpc2FibGUgZnJhbWUtZmlsdGVyIC9idWlsZC90ZXN0IEJ1 aWxkUHJvZ3JhbUZpbHRlcgotKyhnZGIpIGluZm8gZnJhbWUtZmlsdGVyCi0rCi0rZ2xvYmFsIGZy YW1lLWZpbHRlcnM6Ci0rICBQcmlvcml0eSAgRW5hYmxlZCAgTmFtZQotKyAgMTAwMCAgICAgIE5v ICAgICAgIFByaW1hcnlGdW5jdGlvbkZpbHRlcgotKyAgMTAwICAgICAgIFllcyAgICAgIFJldmVy c2UKLSsKLStwcm9nc3BhY2UgL2J1aWxkL3Rlc3QgZnJhbWUtZmlsdGVyczoKLSsgIFByaW9yaXR5 ICBFbmFibGVkICBOYW1lCi0rICAxMDAgICAgICAgWWVzICAgICAgUHJvZ3NwYWNlRmlsdGVyCi0r Ci0rb2JqZmlsZSAvYnVpbGQvdGVzdCBmcmFtZS1maWx0ZXJzOgotKyAgUHJpb3JpdHkgIEVuYWJs ZWQgIE5hbWUKLSsgIDk5OSAgICAgICBObyAgICAgICBCdWlsZFByb2dyYW1GaWx0ZXIKLSsKLSso Z2RiKSBlbmFibGUgZnJhbWUtZmlsdGVyIGdsb2JhbCBQcmltYXJ5RnVuY3Rpb25GaWx0ZXIKLSso Z2RiKSBpbmZvIGZyYW1lLWZpbHRlcgotKwotK2dsb2JhbCBmcmFtZS1maWx0ZXJzOgotKyAgUHJp b3JpdHkgIEVuYWJsZWQgIE5hbWUKLSsgIDEwMDAgICAgICBZZXMgICAgICBQcmltYXJ5RnVuY3Rp b25GaWx0ZXIKLSsgIDEwMCAgICAgICBZZXMgICAgICBSZXZlcnNlCi0rCi0rcHJvZ3NwYWNlIC9i dWlsZC90ZXN0IGZyYW1lLWZpbHRlcnM6Ci0rICBQcmlvcml0eSAgRW5hYmxlZCAgTmFtZQotKyAg MTAwICAgICAgIFllcyAgICAgIFByb2dzcGFjZUZpbHRlcgotKwotK29iamZpbGUgL2J1aWxkL3Rl c3QgZnJhbWUtZmlsdGVyczoKLSsgIFByaW9yaXR5ICBFbmFibGVkICBOYW1lCi0rICA5OTkgICAg ICAgTm8gICAgICAgQnVpbGRQcm9ncmFtRmlsdGVyCi0rQGVuZCBzbWFsbGV4YW1wbGUKLSsKLStA a2luZGV4IHNldCBmcmFtZS1maWx0ZXIgcHJpb3JpdHkKLStAaXRlbSBzZXQgZnJhbWUtZmlsdGVy IHByaW9yaXR5IEB2YXJ7ZmlsdGVyLWRpY3Rpb25hcnl9IEB2YXJ7ZmlsdGVyLW5hbWV9IEB2YXJ7 cHJpb3JpdHl9Ci0rU2V0IHRoZSBAdmFye3ByaW9yaXR5fSBvZiBhIGZyYW1lIGZpbHRlciBpbiB0 aGUgZGljdGlvbmFyeSBtYXRjaGluZwotK0B2YXJ7ZmlsdGVyLWRpY3Rpb25hcnl9LCBhbmQgdGhl IGZyYW1lIGZpbHRlciBuYW1lIG1hdGNoaW5nCi0rQHZhcntmaWx0ZXItbmFtZX0uICBAdmFye2Zp bHRlci1kaWN0aW9uYXJ5fSBtYXkgYmUgQGNvZGV7Z2xvYmFsfSwKLStAY29kZXtwcm9nc3BhY2V9 IG9yIHRoZSBuYW1lIG9mIHRoZSBvYmplY3QgZmlsZSB3aGVyZSB0aGUgZnJhbWUgZmlsdGVyCi0r ZGljdGlvbmFyeSByZXNpZGVzLiAgQHZhcntwcmlvcml0eX0gaXMgYW4gaW50ZWdlci4KLSsKLStA a2luZGV4IHNob3cgZnJhbWUtZmlsdGVyIHByaW9yaXR5Ci0rQGl0ZW0gc2hvdyBmcmFtZS1maWx0 ZXIgcHJpb3JpdHkgQHZhcntmaWx0ZXItZGljdGlvbmFyeX0gQHZhcntmaWx0ZXItbmFtZX0KLStT aG93IHRoZSBAdmFye3ByaW9yaXR5fSBvZiBhIGZyYW1lIGZpbHRlciBpbiB0aGUgZGljdGlvbmFy eSBtYXRjaGluZwotK0B2YXJ7ZmlsdGVyLWRpY3Rpb25hcnl9LCBhbmQgdGhlIGZyYW1lIGZpbHRl ciBuYW1lIG1hdGNoaW5nCi0rQHZhcntmaWx0ZXItbmFtZX0uICBAdmFye2ZpbHRlci1kaWN0aW9u YXJ5fSBtYXkgYmUgQGNvZGV7Z2xvYmFsfSwKLStAY29kZXtwcm9nc3BhY2V9IG9yIHRoZSBuYW1l IG9mIHRoZSBvYmplY3QgZmlsZSB3aGVyZSB0aGUgZnJhbWUgZmlsdGVyCi0rZGljdGlvbmFyeSBy ZXNpZGVzLgotKwotK0V4YW1wbGU6Ci0rCi0rQHNtYWxsZXhhbXBsZQotKyhnZGIpIGluZm8gZnJh bWUtZmlsdGVyCi0rCi0rZ2xvYmFsIGZyYW1lLWZpbHRlcnM6Ci0rICBQcmlvcml0eSAgRW5hYmxl ZCAgTmFtZQotKyAgMTAwMCAgICAgIFllcyAgICAgIFByaW1hcnlGdW5jdGlvbkZpbHRlcgotKyAg MTAwICAgICAgIFllcyAgICAgIFJldmVyc2UKLSsKLStwcm9nc3BhY2UgL2J1aWxkL3Rlc3QgZnJh bWUtZmlsdGVyczoKLSsgIFByaW9yaXR5ICBFbmFibGVkICBOYW1lCi0rICAxMDAgICAgICAgWWVz ICAgICAgUHJvZ3NwYWNlRmlsdGVyCi0rCi0rb2JqZmlsZSAvYnVpbGQvdGVzdCBmcmFtZS1maWx0 ZXJzOgotKyAgUHJpb3JpdHkgIEVuYWJsZWQgIE5hbWUKLSsgIDk5OSAgICAgICBObyAgICAgICBC dWlsZFByb2dyYW1GaWx0ZXIKLSsKLSsoZ2RiKSBzZXQgZnJhbWUtZmlsdGVyIHByaW9yaXR5IGds b2JhbCBSZXZlcnNlIDUwCi0rKGdkYikgaW5mbyBmcmFtZS1maWx0ZXIKLSsKLStnbG9iYWwgZnJh bWUtZmlsdGVyczoKLSsgIFByaW9yaXR5ICBFbmFibGVkICBOYW1lCi0rICAxMDAwICAgICAgWWVz ICAgICAgUHJpbWFyeUZ1bmN0aW9uRmlsdGVyCi0rICA1MCAgICAgICAgWWVzICAgICAgUmV2ZXJz ZQotKwotK3Byb2dzcGFjZSAvYnVpbGQvdGVzdCBmcmFtZS1maWx0ZXJzOgotKyAgUHJpb3JpdHkg IEVuYWJsZWQgIE5hbWUKLSsgIDEwMCAgICAgICBZZXMgICAgICBQcm9nc3BhY2VGaWx0ZXIKLSsK LStvYmpmaWxlIC9idWlsZC90ZXN0IGZyYW1lLWZpbHRlcnM6Ci0rICBQcmlvcml0eSAgRW5hYmxl ZCAgTmFtZQotKyAgOTk5ICAgICAgIE5vICAgICAgIEJ1aWxkUHJvZ3JhbUZpbHRlcgotK0BlbmQg c21hbGxleGFtcGxlCi0rQGVuZCB0YWJsZQotKwotIEBub2RlIFNlbGVjdGlvbgotIEBzZWN0aW9u IFNlbGVjdGluZyBhIEZyYW1lCi0gCi1AQCAtMjMxMDAsNiArMjMyNTgsOSBAQCBzaXR1YXRpb24s IGEgUHl0aG9uIEBjb2Rle0tleWJvYXJkSW50ZXJyCi0gKiBTZWxlY3RpbmcgUHJldHR5LVByaW50 ZXJzOjogICBIb3cgR0RCIGNob29zZXMgYSBwcmV0dHktcHJpbnRlci4KLSAqIFdyaXRpbmcgYSBQ cmV0dHktUHJpbnRlcjo6ICAgIFdyaXRpbmcgYSBQcmV0dHktUHJpbnRlci4KLSAqIFR5cGUgUHJp bnRpbmcgQVBJOjoJCVByZXR0eS1wcmludGluZyB0eXBlcy4KLSsqIEZyYW1lIEZpbHRlciBBUEk6 OiAgICAgICAgICAgIEZpbHRlcmluZyBGcmFtZXMuCi0rKiBGcmFtZSBEZWNvcmF0b3IgQVBJOjog ICAgICAgICBEZWNvcmF0aW5nIEZyYW1lcy4KLSsqIFdyaXRpbmcgYSBGcmFtZSBGaWx0ZXI6OiAg ICAgIFdyaXRpbmcgYSBGcmFtZSBGaWx0ZXIuCi0gKiBJbmZlcmlvcnMgSW4gUHl0aG9uOjogICAg ICAgICBQeXRob24gcmVwcmVzZW50YXRpb24gb2YgaW5mZXJpb3JzIChwcm9jZXNzZXMpCi0gKiBF dmVudHMgSW4gUHl0aG9uOjogICAgICAgICAgICBMaXN0ZW5pbmcgZm9yIGV2ZW50cyBmcm9tIEB2 YWx1ZXtHREJOfS4KLSAqIFRocmVhZHMgSW4gUHl0aG9uOjogICAgICAgICAgIEFjY2Vzc2luZyBp bmZlcmlvciB0aHJlYWRzIGZyb20gUHl0aG9uLgotQEAgLTI0NDUwLDYgKzI0NjExLDYzNiBAQCBk b25lIHRoZW4gdHlwZSBwcmludGVycyB3b3VsZCBoYXZlIHRvIG1hCi0gb3JkZXIgdG8gYXZvaWQg aG9sZGluZyBpbmZvcm1hdGlvbiB0aGF0IGNvdWxkIGJlY29tZSBzdGFsZSBhcyB0aGUKLSBpbmZl cmlvciBjaGFuZ2VkLgotIAotK0Bub2RlIEZyYW1lIEZpbHRlciBBUEkKLStAc3Vic3Vic2VjdGlv biBGaWx0ZXJpbmcgRnJhbWVzLgotK0BjaW5kZXggZnJhbWUgZmlsdGVycyBhcGkKLSsKLStGcmFt ZSBmaWx0ZXJzIGFyZSBQeXRob24gb2JqZWN0cyB0aGF0IG1hbmlwdWxhdGUgdGhlIHZpc2liaWxp dHkgb2YgYQotK2ZyYW1lIG9yIGZyYW1lcyB3aGVuIGEgYmFja3RyYWNlIChAcHhyZWZ7QmFja3Ry YWNlfSkgaXMgcHJpbnRlZCBieQotK0B2YWx1ZXtHREJOfS4KLSsKLStPbmx5IGNvbW1hbmRzIHRo YXQgcHJpbnQgYSBiYWNrdHJhY2UsIG9yLCBpbiB0aGUgY2FzZSBvZiBAc2N7Z2RiL21pfQotK2Nv bW1hbmRzIChAcHhyZWZ7R0RCL01JfSksIHRob3NlIHRoYXQgcmV0dXJuIGEgY29sbGVjdGlvbiBv ZiBmcmFtZXMKLSthcmUgYWZmZWN0ZWQuICBUaGUgY29tbWFuZHMgdGhhdCB3b3JrIHdpdGggZnJh bWUgZmlsdGVycyBhcmU6Ci0rCi0rQGNvZGV7YmFja3RyYWNlfSAoQHB4cmVme2JhY2t0cmFjZS1j b21tYW5kLCwgVGhlIGJhY2t0cmFjZSBjb21tYW5kfSksCi0rQGNvZGV7LXN0YWNrLWxpc3QtZnJh bWVzfQotKyhAcHhyZWZ7LXN0YWNrLWxpc3QtZnJhbWVzLCwgVGhlIC1zdGFjay1saXN0LWZyYW1l cyBjb21tYW5kfSksCi0rQGNvZGV7LXN0YWNrLWxpc3QtdmFyaWFibGVzfSAoQHB4cmVmey1zdGFj ay1saXN0LXZhcmlhYmxlcywsIFRoZQotKy1zdGFjay1saXN0LXZhcmlhYmxlcyBjb21tYW5kfSks IEBjb2Rley1zdGFjay1saXN0LWFyZ3VtZW50c30KLStAcHhyZWZ7LXN0YWNrLWxpc3QtYXJndW1l bnRzLCwgVGhlIC1zdGFjay1saXN0LWFyZ3VtZW50cyBjb21tYW5kfSkgYW5kCi0rQGNvZGV7LXN0 YWNrLWxpc3QtbG9jYWxzfSAoQHB4cmVmey1zdGFjay1saXN0LWxvY2FscywsIFRoZQotKy1zdGFj ay1saXN0LWxvY2FscyBjb21tYW5kfSkuCi0rCi0rQSBmcmFtZSBmaWx0ZXIgd29ya3MgYnkgdGFr aW5nIGFuIGl0ZXJhdG9yIGFzIGFuIGFyZ3VtZW50LCBhcHBseWluZwotK2FjdGlvbnMgdG8gdGhl IGNvbnRlbnRzIG9mIHRoYXQgaXRlcmF0b3IsIGFuZCByZXR1cm5pbmcgYW5vdGhlcgotK2l0ZXJh dG9yIChvciwgcG9zc2libHksIHRoZSBzYW1lIGl0ZXJhdG9yIGl0IHdhcyBwcm92aWRlZCBpbiB0 aGUgY2FzZQotK3doZXJlIHRoZSBmaWx0ZXIgZG9lcyBub3QgcGVyZm9ybSBhbnkgb3BlcmF0aW9u cykuICBUeXBpY2FsbHksIGZyYW1lCi0rZmlsdGVycyB1dGlsaXplIHRvb2xzIHN1Y2ggYXMgdGhl IFB5dGhvbidzIEBjb2Rle2l0ZXJ0b29sc30gbW9kdWxlIHRvCi0rd29yayB3aXRoIGFuZCBjcmVh dGUgbmV3IGl0ZXJhdG9ycyBmcm9tIHRoZSBzb3VyY2UgaXRlcmF0b3IuCi0rUmVnYXJkbGVzcyBv ZiBob3cgYSBmaWx0ZXIgY2hvb3NlcyB0byBhcHBseSBhY3Rpb25zLCBpdCBtdXN0IG5vdCBhbHRl cgotK3RoZSB1bmRlcmx5aW5nIEB2YWx1ZXtHREJOfSBmcmFtZSBvciBmcmFtZXMsIG9yIGF0dGVt cHQgdG8gYWx0ZXIgdGhlCi0rY2FsbC1zdGFjayB3aXRoaW4gQHZhbHVle0dEQk59LiAgVGhpcyBw cmVzZXJ2ZXMgZGF0YSBpbnRlZ3JpdHkgd2l0aGluCi0rQHZhbHVle0dEQk59LiAgRnJhbWUgZmls dGVycyBhcmUgZXhlY3V0ZWQgb24gYSBwcmlvcml0eSBiYXNpcyBhbmQgY2FyZQotK3Nob3VsZCBi ZSB0YWtlbiB0aGF0IHNvbWUgZnJhbWUgZmlsdGVycyBtYXkgaGF2ZSBiZWVuIGV4ZWN1dGVkIGJl Zm9yZSwKLSthbmQgdGhhdCBzb21lIGZyYW1lIGZpbHRlcnMgd2lsbCBiZSBleGVjdXRlZCBhZnRl ci4KLSsKLStBbiBpbXBvcnRhbnQgY29uc2lkZXJhdGlvbiB3aGVuIGRlc2lnbmluZyBmcmFtZSBm aWx0ZXJzLCBhbmQgd2VsbAotK3dvcnRoIHJlZmxlY3RpbmcgdXBvbiwgaXMgdGhhdCBmcmFtZSBm aWx0ZXJzIHNob3VsZCBhdm9pZCB1bndpbmRpbmcKLSt0aGUgY2FsbCBzdGFjayBpZiBwb3NzaWJs ZS4gIFNvbWUgc3RhY2tzIGNhbiBydW4gdmVyeSBkZWVwLCBpbnRvIHRoZQotK3RlbnMgb2YgdGhv dXNhbmRzIGluIHNvbWUgY2FzZXMuICBUbyBzZWFyY2ggZXZlcnkgZnJhbWUgd2hlbiBhIGZyYW1l Ci0rZmlsdGVyIGV4ZWN1dGVzIG1heSBiZSB0b28gZXhwZW5zaXZlIGF0IHRoYXQgc3RlcC4gIFRo ZSBmcmFtZSBmaWx0ZXIKLStjYW5ub3Qga25vdyBob3cgbWFueSBmcmFtZXMgaXQgaGFzIHRvIGl0 ZXJhdGUgb3ZlciwgYW5kIGl0IG1heSBoYXZlIHRvCi0raXRlcmF0ZSB0aHJvdWdoIHRoZW0gYWxs LiAgVGhpcyBlbmRzIHVwIGR1cGxpY2F0aW5nIGVmZm9ydCBhcwotK0B2YWx1ZXtHREJOfSBwZXJm b3JtcyB0aGlzIGl0ZXJhdGlvbiB3aGVuIGl0IHByaW50cyB0aGUgZnJhbWVzLiAgSWYKLSt0aGUg ZmlsdGVyIGNhbiBkZWZlciB1bndpbmRpbmcgZnJhbWVzIHVudGlsIGZyYW1lIGRlY29yYXRvcnMg YXJlCi0rZXhlY3V0ZWQsIGFmdGVyIHRoZSBsYXN0IGZpbHRlciBoYXMgZXhlY3V0ZWQsIGl0IHNo b3VsZC4gIEB4cmVme0ZyYW1lCi0rRGVjb3JhdG9yIEFQSX0sIGZvciBtb3JlIGluZm9ybWF0aW9u IG9uIGRlY29yYXRvcnMuICBBbHNvLCB0aGVyZSBhcmUKLStleGFtcGxlcyBmb3IgYm90aCBmcmFt ZSBkZWNvcmF0b3JzIGFuZCBmaWx0ZXJzIGluIGxhdGVyIGNoYXB0ZXJzLgotK0B4cmVme1dyaXRp bmcgYSBGcmFtZSBGaWx0ZXJ9LCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSsKLStUaGUgUHl0aG9u IGRpY3Rpb25hcnkgQGNvZGV7Z2RiLmZyYW1lX2ZpbHRlcnN9IGNvbnRhaW5zIGtleS9vYmplY3QK LStwYWlyaW5ncyB0aGF0IGNvbXByaXNlIGEgZnJhbWUgZmlsdGVyLiAgRnJhbWUgZmlsdGVycyBp biB0aGlzCi0rZGljdGlvbmFyeSBhcmUgY2FsbGVkIEBjb2Rle2dsb2JhbH0gZnJhbWUgZmlsdGVy cywgYW5kIHRoZXkgYXJlCi0rYXZhaWxhYmxlIHdoZW4gZGVidWdnaW5nIGFsbCBpbmZlcmlvcnMu ICBUaGVzZSBmcmFtZSBmaWx0ZXJzIG11c3QKLStyZWdpc3RlciB3aXRoIHRoZSBkaWN0aW9uYXJ5 IGRpcmVjdGx5LiAgSW4gYWRkaXRpb24gdG8gdGhlCi0rQGNvZGV7Z2xvYmFsfSBkaWN0aW9uYXJ5 LCB0aGVyZSBhcmUgb3RoZXIgZGljdGlvbmFyaWVzIHRoYXQgYXJlIGxvYWRlZAotK3dpdGggZGlm ZmVyZW50IGluZmVyaW9ycyB2aWEgYXV0by1sb2FkaW5nIChAcHhyZWZ7UHl0aG9uCi0rQXV0by1s b2FkaW5nfSkuICBUaGUgdHdvIG90aGVyIGFyZWFzIHdoZXJlIGZyYW1lIGZpbHRlciBkaWN0aW9u YXJpZXMKLStjYW4gYmUgZm91bmQgYXJlOiBAY29kZXtnZGIuUHJvZ3NwYWNlfSB3aGljaCBjb250 YWlucyBhCi0rQGNvZGV7ZnJhbWVfZmlsdGVyc30gZGljdGlvbmFyeSBhdHRyaWJ1dGUsIGFuZCBl YWNoIEBjb2Rle2dkYi5PYmpmaWxlfQotK29iamVjdCB3aGljaCBhbHNvIGNvbnRhaW5zIGEgQGNv ZGV7ZnJhbWVfZmlsdGVyc30gZGljdGlvbmFyeQotK2F0dHJpYnV0ZS4KLSsKLStXaGVuIGEgY29t bWFuZCBpcyBleGVjdXRlZCBmcm9tIEB2YWx1ZXtHREJOfSB0aGF0IGlzIGNvbXBhdGlibGUgd2l0 aAotK2ZyYW1lIGZpbHRlcnMsIEB2YWx1ZXtHREJOfSBjb21iaW5lcyB0aGUgQGNvZGV7Z2xvYmFs fSwKLStAY29kZXtnZGIuUHJvZ3NwYWNlfSBhbmQgYWxsIEBjb2Rle2dkYi5PYmpmaWxlfSBkaWN0 aW9uYXJpZXMgY3VycmVudGx5Ci0rbG9hZGVkLiAgQWxsIG9mIHRoZSBAY29kZXtnZGIuT2JqZmls ZX0gZGljdGlvbmFyaWVzIGFyZSBjb21iaW5lZCwgYXMKLStzZXZlcmFsIGZyYW1lcywgYW5kIHRo dXMgc2V2ZXJhbCBvYmplY3QgZmlsZXMsIG1pZ2h0IGJlIGluIHVzZS4KLStAdmFsdWV7R0RCTn0g dGhlbiBwcnVuZXMgYW55IGZyYW1lIGZpbHRlciB3aG9zZSBAY29kZXtlbmFibGVkfQotK2F0dHJp YnV0ZSBpcyBAY29kZXtGYWxzZX0uICBUaGlzIHBydW5lZCBsaXN0IGlzIHRoZW4gc29ydGVkIGFj Y29yZGluZwotK3RvIHRoZSBAY29kZXtwcmlvcml0eX0gYXR0cmlidXRlIGluIGVhY2ggZmlsdGVy LgotKwotK09uY2UgdGhlIGRpY3Rpb25hcmllcyBhcmUgY29tYmluZWQsIHBydW5lZCBhbmQgc29y dGVkLCBAdmFsdWV7R0RCTn0KLStjcmVhdGVzIGFuIGl0ZXJhdG9yIHdoaWNoIHdyYXBzIGVhY2gg ZnJhbWUgaW4gdGhlIGNhbGwgc3RhY2sgaW4gYQotK0Bjb2Rle0ZyYW1lRGVjb3JhdG9yfSBvYmpl Y3QsIGFuZCBjYWxscyBlYWNoIGZpbHRlciBpbiBvcmRlci4gIFRoZQotK291dHB1dCBmcm9tIHRo ZSBwcmV2aW91cyBmaWx0ZXIgd2lsbCBhbHdheXMgYmUgdGhlIGlucHV0IHRvIHRoZSBuZXh0Ci0r ZmlsdGVyLCBhbmQgc28gb24uCi0rCi0rRnJhbWUgZmlsdGVycyBoYXZlIGEgbWFuZGF0b3J5IGlu dGVyZmFjZSB3aGljaCBlYWNoIGZyYW1lIGZpbHRlciBtdXN0Ci0raW1wbGVtZW50LCBkZWZpbmVk IGhlcmU6Ci0rCi0rQGRlZnVuIEZyYW1lRmlsdGVyLmZpbHRlciAoaXRlcmF0b3IpCi0rQHZhbHVl e0dEQk59IHdpbGwgY2FsbCB0aGlzIG1ldGhvZCBvbiBhIGZyYW1lIGZpbHRlciB3aGVuIGl0IGhh cwotK3JlYWNoZWQgdGhlIG9yZGVyIGluIHRoZSBwcmlvcml0eSBsaXN0IGZvciB0aGF0IGZpbHRl ci4KLSsKLStGb3IgZXhhbXBsZSwgaWYgdGhlcmUgYXJlIGZvdXIgZnJhbWUgZmlsdGVyczoKLSsK LStAc21hbGxleGFtcGxlCi0rTmFtZSAgICAgICAgIFByaW9yaXR5Ci0rCi0rRmlsdGVyMSAgICAg IDUKLStGaWx0ZXIyICAgICAgMTAKLStGaWx0ZXIzICAgICAgMTAwCi0rRmlsdGVyNCAgICAgIDEK LStAZW5kIHNtYWxsZXhhbXBsZQotKwotK1RoZSBvcmRlciB0aGF0IHRoZSBmcmFtZSBmaWx0ZXJz IHdpbGwgYmUgY2FsbGVkIGlzOgotKwotK0BzbWFsbGV4YW1wbGUKLStGaWx0ZXIzIC0+IEZpbHRl cjIgLT4gRmlsdGVyMSAtPiBGaWx0ZXI0Ci0rQGVuZCBzbWFsbGV4YW1wbGUKLSsKLStOb3RlIHRo YXQgdGhlIG91dHB1dCBmcm9tIEBjb2Rle0ZpbHRlcjN9IGlzIHBhc3NlZCB0byB0aGUgaW5wdXQg b2YKLStAY29kZXtGaWx0ZXIyfSwgYW5kIHNvIG9uLgotKwotK1RoaXMgQGNvZGV7ZmlsdGVyfSBt ZXRob2QgaXMgcGFzc2VkIGEgUHl0aG9uIGl0ZXJhdG9yLiAgVGhpcyBpdGVyYXRvcgotK2NvbnRh aW5zIGEgc2VxdWVuY2Ugb2YgZnJhbWUgZGVjb3JhdG9ycyB0aGF0IHdyYXAgZWFjaAotK0Bjb2Rl e2dkYi5GcmFtZX0sIG9yIGEgZnJhbWUgZGVjb3JhdG9yIHRoYXQgd3JhcHMgYW5vdGhlciBmcmFt ZQotK2RlY29yYXRvci4gIFRoZSBmaXJzdCBmaWx0ZXIgdGhhdCBpcyBleGVjdXRlZCBpbiB0aGUg c2VxdWVuY2Ugb2YgZnJhbWUKLStmaWx0ZXJzIHdpbGwgcmVjZWl2ZSBhbiBpdGVyYXRvciBlbnRp cmVseSBjb21wcmlzZWQgb2YgZGVmYXVsdAotK0Bjb2Rle0ZyYW1lRGVjb3JhdG9yfSBvYmplY3Rz LiAgSG93ZXZlciwgYWZ0ZXIgZWFjaCBmcmFtZSBmaWx0ZXIgaXMKLStleGVjdXRlZCwgdGhlIHBy ZXZpb3VzIGZyYW1lIGZpbHRlciBtYXkgaGF2ZSB3cmFwcGVkIHNvbWUgb3IgYWxsIG9mCi0rdGhl IGZyYW1lIGRlY29yYXRvcnMgd2l0aCB0aGVpciBvd24gZnJhbWUgZGVjb3JhdG9yLiAgQXMgZnJh bWUKLStkZWNvcmF0b3JzIG11c3QgYWxzbyBjb25mb3JtIHRvIGEgbWFuZGF0b3J5IGludGVyZmFj ZSwgdGhlc2UKLStkZWNvcmF0b3JzIGNhbiBiZSBhc3N1bWVkIHRvIGFjdCBpbiBhIHVuaWZvcm0g bWFubmVyIChAcHhyZWZ7RnJhbWUKLStEZWNvcmF0b3IgQVBJfSkuCi0rCi0rVGhpcyBtZXRob2Qg bXVzdCByZXR1cm4gYW4gb2JqZWN0IGNvbmZvcm1pbmcgdG8gdGhlIFB5dGhvbiBpdGVyYXRvcgot K3Byb3RvY29sLiAgRWFjaCBpdGVtIGluIHRoZSBpdGVyYXRvciBtdXN0IGJlIGFuIG9iamVjdCBj b25mb3JtaW5nIHRvCi0rdGhlIGZyYW1lIGRlY29yYXRvciBpbnRlcmZhY2UuICBJZiBhIGZyYW1l IGZpbHRlciBkb2VzIG5vdCB3aXNoIHRvCi0rcGVyZm9ybSBhbnkgb3BlcmF0aW9ucyBvbiB0aGlz IGl0ZXJhdG9yLCBpdCBzaG91bGQgcmV0dXJuIHRoYXQKLStpdGVyYXRvciB1bnRvdWNoZWQuCi0r Ci0rVGhpcyBtZXRob2QgaXMgbm90IG9wdGlvbmFsLiAgSWYgaXQgZG9lcyBub3QgZXhpc3QsIEB2 YWx1ZXtHREJOfSB3aWxsCi0rcmFpc2UgYW5kIHByaW50IGFuIGVycm9yLgotK0BlbmQgZGVmdW4K LSsKLStAZGVmdmFyIEZyYW1lRmlsdGVyLm5hbWUKLStUaGUgQGNvZGV7bmFtZX0gYXR0cmlidXRl IG11c3QgYmUgUHl0aG9uIHN0cmluZyB3aGljaCBjb250YWlucyB0aGUKLStuYW1lIG9mIHRoZSBm aWx0ZXIgZGlzcGxheWVkIGJ5IEB2YWx1ZXtHREJOfSAoQHB4cmVme0ZyYW1lIEZpbHRlcgotK01h bmFnZW1lbnR9KS4gIFRoaXMgYXR0cmlidXRlIG1heSBjb250YWluIGFueSBjb21iaW5hdGlvbiBv ZiBsZXR0ZXJzCi0rb3IgbnVtYmVycy4gIENhcmUgc2hvdWxkIGJlIHRha2VuIHRvIGVuc3VyZSB0 aGF0IGl0IGlzIHVuaXF1ZS4gIFRoaXMKLSthdHRyaWJ1dGUgaXMgbWFuZGF0b3J5LgotK0BlbmQg ZGVmdmFyCi0rCi0rQGRlZnZhciBGcmFtZUZpbHRlci5lbmFibGVkCi0rVGhlIEBjb2Rle2VuYWJs ZWR9IGF0dHJpYnV0ZSBtdXN0IGJlIFB5dGhvbiBib29sZWFuLiAgVGhpcyBhdHRyaWJ1dGUKLStp bmRpY2F0ZXMgdG8gQHZhbHVle0dEQk59IHdoZXRoZXIgdGhlIGZyYW1lIGZpbHRlciBpcyBlbmFi bGVkLCBhbmQKLStzaG91bGQgYmUgY29uc2lkZXJlZCB3aGVuIGZyYW1lIGZpbHRlcnMgYXJlIGV4 ZWN1dGVkLiAgSWYKLStAY29kZXtlbmFibGVkfSBpcyBAY29kZXtUcnVlfSwgdGhlbiB0aGUgZnJh bWUgZmlsdGVyIHdpbGwgYmUgZXhlY3V0ZWQKLSt3aGVuIGFueSBvZiB0aGUgYmFja3RyYWNlIGNv bW1hbmRzIGRldGFpbGVkIGVhcmxpZXIgaW4gdGhpcyBjaGFwdGVyCi0rYXJlIGV4ZWN1dGVkLiAg SWYgQGNvZGV7ZW5hYmxlZH0gaXMgQGNvZGV7RmFsc2V9LCB0aGVuIHRoZSBmcmFtZQotK2ZpbHRl ciB3aWxsIG5vdCBiZSBleGVjdXRlZC4gIFRoaXMgYXR0cmlidXRlIGlzIG1hbmRhdG9yeS4KLStA ZW5kIGRlZnZhcgotKwotK0BkZWZ2YXIgRnJhbWVGaWx0ZXIucHJpb3JpdHkKLStUaGUgQGNvZGV7 cHJpb3JpdHl9IGF0dHJpYnV0ZSBtdXN0IGJlIFB5dGhvbiBpbnRlZ2VyLiAgVGhpcyBhdHRyaWJ1 dGUKLStjb250cm9scyB0aGUgb3JkZXIgb2YgZXhlY3V0aW9uIGluIHJlbGF0aW9uIHRvIG90aGVy IGZyYW1lIGZpbHRlcnMuCi0rVGhlcmUgYXJlIG5vIGltcG9zZWQgbGltaXRzIG9uIHRoZSByYW5n ZSBvZiBAY29kZXtwcmlvcml0eX0gb3RoZXIgdGhhbgotK2l0IG11c3QgYmUgYSB2YWxpZCBpbnRl Z2VyLiAgVGhlIGhpZ2hlciB0aGUgQGNvZGV7cHJpb3JpdHl9IGF0dHJpYnV0ZSwKLSt0aGUgc29v bmVyIHRoZSBmcmFtZSBmaWx0ZXIgd2lsbCBiZSBleGVjdXRlZCBpbiByZWxhdGlvbiB0byBvdGhl cgotK2ZyYW1lIGZpbHRlcnMuICBBbHRob3VnaCBAY29kZXtwcmlvcml0eX0gY2FuIGJlIG5lZ2F0 aXZlLCBpdCBpcwotK3JlY29tbWVuZGVkIHByYWN0aWNlIHRvIGFzc3VtZSB6ZXJvIGlzIHRoZSBs b3dlc3QgcHJpb3JpdHkgdGhhdCBhCi0rZnJhbWUgZmlsdGVyIGNhbiBiZSBhc3NpZ25lZC4gIEZy YW1lIGZpbHRlcnMgdGhhdCBoYXZlIHRoZSBzYW1lCi0rcHJpb3JpdHkgYXJlIGV4ZWN1dGVkIGlu IHVuc29ydGVkIG9yZGVyIGluIHRoYXQgcHJpb3JpdHkgc2xvdC4gIFRoaXMKLSthdHRyaWJ1dGUg aXMgbWFuZGF0b3J5LgotK0BlbmQgZGVmdmFyCi0rCi0rQG5vZGUgRnJhbWUgRGVjb3JhdG9yIEFQ SQotK0BzdWJzdWJzZWN0aW9uIERlY29yYXRpbmcgRnJhbWVzLgotK0BjaW5kZXggZnJhbWUgZGVj b3JhdG9yIGFwaQotKwotK0ZyYW1lIGRlY29yYXRvcnMgYXJlIHNpc3RlciBvYmplY3RzIHRvIGZy YW1lIGZpbHRlcnMgKEBweHJlZntGcmFtZQotK0ZpbHRlciBBUEl9KS4gIEZyYW1lIGRlY29yYXRv cnMgYXJlIGFwcGxpZWQgYnkgYSBmcmFtZSBmaWx0ZXIgYW5kIGNhbgotK29ubHkgYmUgdXNlZCBp biBjb25qdW5jdGlvbiB3aXRoIGZyYW1lIGZpbHRlcnMuCi0rCi0rVGhlIHB1cnBvc2Ugb2YgYSBm cmFtZSBkZWNvcmF0b3IgaXMgdG8gY3VzdG9taXplIHRoZSBwcmludGVkIGNvbnRlbnQKLStvZiBl YWNoIEBjb2Rle2dkYi5GcmFtZX0gaW4gY29tbWFuZHMgd2hlcmUgZnJhbWUgZmlsdGVycyBhcmUg ZXhlY3V0ZWQuCi0rVGhpcyBjb25jZXB0IGlzIGNhbGxlZCBkZWNvcmF0aW5nIGEgZnJhbWUuICBG cmFtZSBkZWNvcmF0b3JzIGRlY29yYXRlCi0rYSBAY29kZXtnZGIuRnJhbWV9IHdpdGggUHl0aG9u IGNvZGUgY29udGFpbmVkIHdpdGhpbiBlYWNoIEFQSSBjYWxsLgotK1RoaXMgc2VwYXJhdGVzIHRo ZSBhY3R1YWwgZGF0YSBjb250YWluZWQgaW4gYSBAY29kZXtnZGIuRnJhbWV9IGZyb20KLSt0aGUg ZGVjb3JhdGVkIGRhdGEgcHJvZHVjZWQgYnkgYSBmcmFtZSBkZWNvcmF0b3IuICBUaGlzIGFic3Ry YWN0aW9uIGlzCi0rbmVjZXNzYXJ5IHRvIG1haW50YWluIGludGVncml0eSBvZiB0aGUgZGF0YSBj b250YWluZWQgaW4gZWFjaAotK0Bjb2Rle2dkYi5GcmFtZX0uCi0rCi0rRnJhbWUgZGVjb3JhdG9y cyBoYXZlIGEgbWFuZGF0b3J5IGludGVyZmFjZSwgZGVmaW5lZCBiZWxvdy4KLSsKLStAdmFsdWV7 R0RCTn0gYWxyZWFkeSBjb250YWlucyBhIGZyYW1lIGRlY29yYXRvciBjYWxsZWQKLStAY29kZXtG cmFtZURlY29yYXRvcn0uICBUaGlzIGNvbnRhaW5zIHN1YnN0YW50aWFsIGFtb3VudHMgb2YKLSti b2lsZXJwbGF0ZSBjb2RlIHRvIGRlY29yYXRlIHRoZSBjb250ZW50IG9mIGEgQGNvZGV7Z2RiLkZy YW1lfS4gIEl0IGlzCi0rcmVjb21tZW5kZWQgdGhhdCBvdGhlciBmcmFtZSBkZWNvcmF0b3JzIGlu aGVyaXQgYW5kIGV4dGVuZCB0aGlzCi0rb2JqZWN0LCBhbmQgb25seSB0byBvdmVycmlkZSB0aGUg bWV0aG9kcyBuZWVkZWQuCi0rCi0rQGRlZnVuIEZyYW1lRGVjb3JhdG9yLmVsaWRlZCAoc2VsZikK LSsKLStUaGUgQGNvZGV7ZWxpZGVkfSBtZXRob2QgZ3JvdXBzIGZyYW1lcyB0b2dldGhlciBpbiBh IGhpZXJhcmNoaWNhbAotK3N5c3RlbS4gIEFuIGV4YW1wbGUgd291bGQgYmUgYW4gaW50ZXJwcmV0 ZXIsIHdoZXJlIG11bHRpcGxlIGxvdy1sZXZlbAotK2ZyYW1lcyBtYWtlIHVwIGEgc2luZ2xlIGNh bGwgaW4gdGhlIGludGVycHJldGVkIGxhbmd1YWdlLiAgSW4gdGhpcwotK2V4YW1wbGUsIHRoZSBm cmFtZSBmaWx0ZXIgd291bGQgZWxpZGUgdGhlIGxvdy1sZXZlbCBmcmFtZXMgYW5kIHByZXNlbnQK LSthIHNpbmdsZSBoaWdoLWxldmVsIGZyYW1lLCByZXByZXNlbnRpbmcgdGhlIGNhbGwgaW4gdGhl IGludGVycHJldGVkCi0rbGFuZ3VhZ2UsIHRvIHRoZSB1c2VyLgotKwotK1RoZSBAY29kZXtlbGlk ZWR9IGZ1bmN0aW9uIG11c3QgcmV0dXJuIGFuIGl0ZXJhYmxlIGFuZCB0aGlzIGl0ZXJhYmxlCi0r bXVzdCBjb250YWluIHRoZSBmcmFtZXMgdGhhdCBhcmUgYmVpbmcgZWxpZGVkIHdyYXBwZWQgaW4g YSBzdWl0YWJsZQotK2ZyYW1lIGRlY29yYXRvci4gIElmIG5vIGZyYW1lcyBhcmUgYmVpbmcgZWxp ZGVkIHRoaXMgZnVuY3Rpb24gbWF5Ci0rcmV0dXJuIGFuIGVtcHR5IGl0ZXJhYmxlLCBvciBAY29k ZXtOb25lfS4gIEVsaWRlZCBmcmFtZXMgYXJlIGluZGVudGVkCi0rZnJvbSBub3JtYWwgZnJhbWVz IGluIGEgQGNvZGV7Q0xJfSBiYWNrdHJhY2UsIG9yIGluIHRoZSBjYXNlIG9mCi0rQGNvZGV7R0RC L01JfSwgYXJlIHBsYWNlZCBpbiB0aGUgQGNvZGV7Y2hpbGRyZW59IGZpZWxkIG9mIHRoZSBlbGlk aW5nCi0rZnJhbWUuCi0rCi0rSXQgaXMgdGhlIGZyYW1lIGZpbHRlcidzIHRhc2sgdG8gYWxzbyBm aWx0ZXIgb3V0IHRoZSBlbGlkZWQgZnJhbWVzIGZyb20KLSt0aGUgc291cmNlIGl0ZXJhdG9yLiAg VGhpcyB3aWxsIGF2b2lkIHByaW50aW5nIHRoZSBmcmFtZSB0d2ljZS4KLStAZW5kIGRlZnVuCi0r Ci0rQGRlZnVuIEZyYW1lRGVjb3JhdG9yLmZ1bmN0aW9uIChzZWxmKQotKwotK1RoaXMgbWV0aG9k IHJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uIGluIHRoZSBmcmFtZSB0aGF0IGlzIHRv Ci0rYmUgcHJpbnRlZC4KLSsKLStUaGlzIG1ldGhvZCBtdXN0IHJldHVybiBhIFB5dGhvbiBzdHJp bmcgZGVzY3JpYmluZyB0aGUgZnVuY3Rpb24sIG9yCi0rQGNvZGV7Tm9uZX0uCi0rCi0rSWYgdGhp cyBmdW5jdGlvbiByZXR1cm5zIEBjb2Rle05vbmV9LCBAdmFsdWV7R0RCTn0gd2lsbCBub3QgcHJp bnQgYW55Ci0rZGF0YSBmb3IgdGhpcyBmaWVsZC4KLStAZW5kIGRlZnVuCi0rCi0rQGRlZnVuIEZy YW1lRGVjb3JhdG9yLmFkZHJlc3MgKHNlbGYpCi0rCi0rVGhpcyBtZXRob2QgcmV0dXJucyB0aGUg YWRkcmVzcyBvZiB0aGUgZnJhbWUgdGhhdCBpcyB0byBiZSBwcmludGVkLgotKwotK1RoaXMgbWV0 aG9kIG11c3QgcmV0dXJuIGEgUHl0aG9uIG51bWVyaWMgaW50ZWdlciB0eXBlIG9mIHN1ZmZpY2ll bnQKLStzaXplIHRvIGRlc2NyaWJlIHRoZSBhZGRyZXNzIG9mIHRoZSBmcmFtZSwgb3IgQGNvZGV7 Tm9uZX0uCi0rCi0rSWYgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgQGNvZGV7Tm9uZX0sIEB2YWx1 ZXtHREJOfSB3aWxsIG5vdCBwcmludAotK2FueSBkYXRhIGZvciB0aGlzIGZpZWxkLgotK0BlbmQg ZGVmdW4KLSsKLStAZGVmdW4gRnJhbWVEZWNvcmF0b3IuZmlsZW5hbWUgKHNlbGYpCi0rCi0rVGhp cyBtZXRob2QgcmV0dXJucyB0aGUgZmlsZW5hbWUgYW5kIHBhdGggYXNzb2NpYXRlZCB3aXRoIHRo aXMgZnJhbWUuCi0rCi0rVGhpcyBtZXRob2QgbXVzdCByZXR1cm4gYSBQeXRob24gc3RyaW5nIGNv bnRhaW5pbmcgdGhlIGZpbGVuYW1lIGFuZAotK3RoZSBwYXRoIHRvIHRoZSBvYmplY3QgZmlsZSBi YWNraW5nIHRoZSBmcmFtZSwgb3IgQGNvZGV7Tm9uZX0uCi0rCi0rSWYgdGhpcyBmdW5jdGlvbiBy ZXR1cm5zIGEgQGNvZGV7Tm9uZX0sIEB2YWx1ZXtHREJOfSB3aWxsIG5vdCBwcmludAotK2FueSBk YXRhIGZvciB0aGlzIGZpZWxkLgotK0BlbmQgZGVmdW4KLSsKLStAZGVmdW4gRnJhbWVEZWNvcmF0 b3IubGluZSAoc2VsZik6Ci0rCi0rVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgbGluZSBudW1iZXIg YXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50Ci0rcG9zaXRpb24gd2l0aGluIHRoZSBmdW5jdGlv biBhZGRyZXNzZWQgYnkgdGhpcyBmcmFtZS4KLSsKLStUaGlzIG1ldGhvZCBtdXN0IHJldHVybiBh IFB5dGhvbiBpbnRlZ2VyIHR5cGUsIG9yIEBjb2Rle05vbmV9LgotKwotK0lmIHRoaXMgZnVuY3Rp b24gcmV0dXJucyBhIEBjb2Rle05vbmV9LCBAdmFsdWV7R0RCTn0gd2lsbCBub3QgcHJpbnQKLSth bnkgZGF0YSBmb3IgdGhpcyBmaWVsZC4KLStAZW5kIGRlZnVuCi0rCi0rQGRlZnVuIEZyYW1lRGVj b3JhdG9yLmZyYW1lX2FyZ3MgKHNlbGYpCi0rQGFuY2hvcntmcmFtZV9hcmdzfQotKwotK1RoaXMg bWV0aG9kIG11c3QgcmV0dXJuIGFuIGl0ZXJhYmxlLCBvciBAY29kZXtOb25lfS4gIFJldHVybmlu ZyBhbgotK2VtcHR5IGl0ZXJhYmxlLCBvciBAY29kZXtOb25lfSBtZWFucyBmcmFtZSBhcmd1bWVu dHMgd2lsbCBub3QgYmUKLStwcmludGVkIGZvciB0aGlzIGZyYW1lLiAgVGhpcyBpdGVyYWJsZSBt dXN0IGNvbnRhaW4gb2JqZWN0cyB0aGF0Ci0raW1wbGVtZW50IHR3byBtZXRob2RzLCBkZXNjcmli ZWQgaGVyZS4KLSsKLStUaGlzIG9iamVjdCBtdXN0IGltcGxlbWVudCBhIEBjb2Rle2FyZ3VtZW50 fSBtZXRob2Qgd2hpY2ggdGFrZXMgYQotK3NpbmdsZSBAY29kZXtzZWxmfSBwYXJhbWV0ZXIgYW5k IG11c3QgcmV0dXJuIGEgQGNvZGV7Z2RiLlN5bWJvbH0KLSsoQHB4cmVme1N5bWJvbHMgSW4gUHl0 aG9ufSksIG9yIGEgUHl0aG9uIHN0cmluZy4gIFRoZSBvYmplY3QgbXVzdCBhbHNvCi0raW1wbGVt ZW50IGEgQGNvZGV7dmFsdWV9IG1ldGhvZCB3aGljaCB0YWtlcyBhIHNpbmdsZSBAY29kZXtzZWxm fQotK3BhcmFtZXRlciBhbmQgbXVzdCByZXR1cm4gYSBAY29kZXtnZGIuVmFsdWV9IChAcHhyZWZ7 VmFsdWVzIEZyb20KLStJbmZlcmlvcn0pLCBhIFB5dGhvbiB2YWx1ZSwgb3IgQGNvZGV7Tm9uZX0u ICBJZiB0aGUgQGNvZGV7dmFsdWV9Ci0rbWV0aG9kIHJldHVybnMgQGNvZGV7Tm9uZX0sIGFuZCB0 aGUgQGNvZGV7YXJndW1lbnR9IG1ldGhvZCByZXR1cm5zIGEKLStAY29kZXtnZGIuU3ltYm9sfSwg QHZhbHVle0dEQk59IHdpbGwgbG9vay11cCBhbmQgcHJpbnQgdGhlIHZhbHVlIG9mCi0rdGhlIEBj b2Rle2dkYi5TeW1ib2x9IGF1dG9tYXRpY2FsbHkuCi0rCi0rQSBicmllZiBleGFtcGxlOgotKwot K0BzbWFsbGV4YW1wbGUKLStjbGFzcyBTeW1WYWx1ZVdyYXBwZXIoKToKLSsKLSsgICAgZGVmIF9f aW5pdF9fKHNlbGYsIHN5bWJvbCwgdmFsdWUpOgotKyAgICAgICAgc2VsZi5zeW0gPSBzeW1ib2wK LSsgICAgICAgIHNlbGYudmFsID0gdmFsdWUKLSsKLSsgICAgZGVmIHZhbHVlKHNlbGYpOgotKyAg ICAgICAgcmV0dXJuIHNlbGYudmFsCi0rCi0rICAgIGRlZiBzeW1ib2woc2VsZik6Ci0rICAgICAg ICByZXR1cm4gc2VsZi5zeW0KLSsKLStjbGFzcyBTb21lRnJhbWVEZWNvcmF0b3IoKQotKy4uLgot Ky4uLgotKyAgICBkZWYgZnJhbWVfYXJncyhzZWxmKToKLSsgICAgICAgIGFyZ3MgPSBbXQotKyAg ICAgICAgdHJ5OgotKyAgICAgICAgICAgIGJsb2NrID0gc2VsZi5pbmZlcmlvcl9mcmFtZS5ibG9j aygpCi0rICAgICAgICBleGNlcHQ6Ci0rICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSsKLSsgICAg ICAgICMgSXRlcmF0ZSBvdmVyIGFsbCBzeW1ib2xzIGluIGEgYmxvY2suICBPbmx5IGFkZAotKyAg ICAgICAgIyBzeW1ib2xzIHRoYXQgYXJlIGFyZ3VtZW50cy4KLSsgICAgICAgIGZvciBzeW0gaW4g YmxvY2s6Ci0rICAgICAgICAgICAgaWYgbm90IHN5bS5pc19hcmd1bWVudDoKLSsgICAgICAgICAg ICAgICAgY29udGludWUKLSsgICAgICAgICAgICBhcmdzLmFwcGVuZChTeW1WYWx1ZVdyYXBwZXIo c3ltLE5vbmUpKQotKwotKyAgICAgICAgIyBBZGQgZXhhbXBsZSBzeW50aGV0aWMgYXJndW1lbnQu Ci0rICAgICAgICBhcmdzLmFwcGVuZChTeW1WYWx1ZVdyYXBwZXIoYGBmb28nJywgNDIpKQotKwot KyAgICAgICAgcmV0dXJuIGFyZ3MKLStAZW5kIHNtYWxsZXhhbXBsZQotK0BlbmQgZGVmdW4KLSsK LStAZGVmdW4gRnJhbWVEZWNvcmF0b3IuZnJhbWVfbG9jYWxzIChzZWxmKQotKwotK1RoaXMgbWV0 aG9kIG11c3QgcmV0dXJuIGFuIGl0ZXJhYmxlIG9yIEBjb2Rle05vbmV9LiAgUmV0dXJuaW5nIGFu Ci0rZW1wdHkgaXRlcmFibGUsIG9yIEBjb2Rle05vbmV9IG1lYW5zIGZyYW1lIGxvY2FsIGFyZ3Vt ZW50cyB3aWxsIG5vdCBiZQotK3ByaW50ZWQgZm9yIHRoaXMgZnJhbWUuCi0rCi0rVGhlIG9iamVj dCBpbnRlcmZhY2UsIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgdmFyaW91cyBzdHJhdGVnaWVzIGZv cgotK3JlYWRpbmcgZnJhbWUgbG9jYWxzLCBhbmQgdGhlIGV4YW1wbGUgYXJlIGxhcmdlbHkgc2lt aWxhciB0byB0aG9zZQotK2Rlc2NyaWJlZCBpbiB0aGUgQGNvZGV7ZnJhbWVfYXJnc30gZnVuY3Rp b24sIChAcHhyZWZ7ZnJhbWVfYXJncywsVGhlCi0rZnJhbWUgZmlsdGVyIGZyYW1lX2FyZ3MgZnVu Y3Rpb259KS4gIEJlbG93IGlzIGEgbW9kaWZpZWQgZXhhbXBsZToKLSsKLStAc21hbGxleGFtcGxl Ci0rY2xhc3MgU29tZUZyYW1lRGVjb3JhdG9yKCkKLSsuLi4KLSsuLi4KLSsgICAgZGVmIGZyYW1l X2xvY2FscyhzZWxmKToKLSsgICAgICAgIHZhcnMgPSBbXQotKyAgICAgICAgdHJ5OgotKyAgICAg ICAgICAgIGJsb2NrID0gc2VsZi5pbmZlcmlvcl9mcmFtZS5ibG9jaygpCi0rICAgICAgICBleGNl cHQ6Ci0rICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSsKLSsgICAgICAgICMgSXRlcmF0ZSBvdmVy IGFsbCBzeW1ib2xzIGluIGEgYmxvY2suICBBZGQgYWxsCi0rICAgICAgICAjIHN5bWJvbHMsIGV4 Y2VwdCBhcmd1bWVudHMuCi0rICAgICAgICBmb3Igc3ltIGluIGJsb2NrOgotKyAgICAgICAgICAg IGlmIHN5bS5pc19hcmd1bWVudDoKLSsgICAgICAgICAgICAgICAgY29udGludWUKLSsgICAgICAg ICAgICB2YXJzLmFwcGVuZChTeW1WYWx1ZVdyYXBwZXIoc3ltLE5vbmUpKQotKwotKyAgICAgICAg IyBBZGQgYW4gZXhhbXBsZSBvZiBhIHN5bnRoZXRpYyBsb2NhbCB2YXJpYWJsZS4KLSsgICAgICAg IHZhcnMuYXBwZW5kKFN5bVZhbHVlV3JhcHBlcihgYGJhcicnLCA5OSkpCi0rCi0rICAgICAgICBy ZXR1cm4gdmFycwotK0BlbmQgc21hbGxleGFtcGxlCi0rQGVuZCBkZWZ1bgotKwotK0BkZWZ1biBG cmFtZURlY29yYXRvci5pbmZlcmlvcl9mcmFtZSAoc2VsZik6Ci0rCi0rVGhpcyBtZXRob2QgbXVz dCByZXR1cm4gdGhlIHVuZGVybHlpbmcgQGNvZGV7Z2RiLkZyYW1lfSB0aGF0IHRoaXMKLStmcmFt ZSBkZWNvcmF0b3IgaXMgZGVjb3JhdGluZy4gIEB2YWx1ZXtHREJOfSByZXF1aXJlcyB0aGUgdW5k ZXJseWluZwotK2ZyYW1lIGZvciBpbnRlcm5hbCBmcmFtZSBpbmZvcm1hdGlvbiB0byBkZXRlcm1p bmUgaG93IHRvIHByaW50IGNlcnRhaW4KLSt2YWx1ZXMgd2hlbiBwcmludGluZyBhIGZyYW1lLgot K0BlbmQgZGVmdW4KLSsKLStAbm9kZSBXcml0aW5nIGEgRnJhbWUgRmlsdGVyCi0rQHN1YnN1YnNl Y3Rpb24gV3JpdGluZyBhIEZyYW1lIEZpbHRlcgotK0BjaW5kZXggd3JpdGluZyBhIGZyYW1lIGZp bHRlcgotKwotK1RoZXJlIGFyZSB0aHJlZSBiYXNpYyBlbGVtZW50cyB0aGF0IGEgZnJhbWUgZmls dGVyIG11c3QgaW1wbGVtZW50OiBpdAotK211c3QgY29ycmVjdGx5IGltcGxlbWVudCB0aGUgZG9j dW1lbnRlZCBpbnRlcmZhY2UgKEBweHJlZntGcmFtZSBGaWx0ZXIKLStBUEl9KSwgaXQgbXVzdCBy ZWdpc3RlciBpdHNlbGYgd2l0aCBAdmFsdWV7R0RCTn0sIGFuZCBmaW5hbGx5LCBpdCBtdXN0Ci0r ZGVjaWRlIGlmIGl0IGlzIHRvIHdvcmsgb24gdGhlIGRhdGEgcHJvdmlkZWQgYnkgQHZhbHVle0dE Qk59LiAgSW4gYWxsCi0rY2FzZXMsIHdoZXRoZXIgaXQgd29ya3Mgb24gdGhlIGl0ZXJhdG9yIG9y IG5vdCwgZWFjaCBmcmFtZSBmaWx0ZXIgbXVzdAotK3JldHVybiBhbiBpdGVyYXRvci4gIEEgYmFy ZS1ib25lcyBmcmFtZSBmaWx0ZXIgZm9sbG93cyB0aGUgcGF0dGVybiBpbgotK3RoZSBmb2xsb3dp bmcgZXhhbXBsZS4KLSsKLStAc21hbGxleGFtcGxlCi0raW1wb3J0IGdkYgotKwotK2NsYXNzIEZy YW1lRmlsdGVyKCk6Ci0rCi0rICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSsgICAgICAgICMgRnJh bWUgZmlsdGVyIGF0dHJpYnV0ZSBjcmVhdGlvbi4KLSsgICAgICAgICMKLSsgICAgICAgICMgJ25h bWUnIGlzIHRoZSBuYW1lIG9mIHRoZSBmaWx0ZXIgdGhhdCBHREIgd2lsbCBkaXNwbGF5LgotKyAg ICAgICAgIwotKyAgICAgICAgIyAncHJpb3JpdHknIGlzIHRoZSBwcmlvcml0eSBvZiB0aGUgZmls dGVyIHJlbGF0aXZlIHRvIG90aGVyCi0rICAgICAgICAjIGZpbHRlcnMuCi0rICAgICAgICAjCi0r ICAgICAgICAjICdlbmFibGVkJyBpcyBhIGJvb2xlYW4gdGhhdCBpbmRpY2F0ZXMgd2hldGhlciB0 aGlzIGZpbHRlciBpcwotKyAgICAgICAgIyBlbmFibGVkIGFuZCBzaG91bGQgYmUgZXhlY3V0ZWQu Ci0rCi0rICAgICAgICBzZWxmLm5hbWUgPSAiRm9vIgotKyAgICAgICAgc2VsZi5wcmlvcml0eSA9 IDEwMAotKyAgICAgICAgc2VsZi5lbmFibGVkID0gVHJ1ZQotKwotKyAgICAgICAgIyBSZWdpc3Rl ciB0aGlzIGZyYW1lIGZpbHRlciB3aXRoIHRoZSBnbG9iYWwgZnJhbWVfZmlsdGVycwotKyAgICAg ICAgIyBkaWN0aW9uYXJ5LgotKyAgICAgICAgZ2RiLmZyYW1lX2ZpbHRlcnNbc2VsZi5uYW1lXSA9 IHNlbGYKLSsKLSsgICAgZGVmIGZpbHRlcihzZWxmLCBmcmFtZV9pdGVyKToKLSsgICAgICAgICMg SnVzdCByZXR1cm4gdGhlIGl0ZXJhdG9yLgotKyAgICAgICAgcmV0dXJuIGZyYW1lX2l0ZXIKLStA ZW5kIHNtYWxsZXhhbXBsZQotKwotK1RoZSBmcmFtZSBmaWx0ZXIgaW4gdGhlIGV4YW1wbGUgYWJv dmUgaW1wbGVtZW50cyB0aGUgdGhyZWUKLStyZXF1aXJlbWVudHMgZm9yIGFsbCBmcmFtZSBmaWx0 ZXJzLiAgSXQgaW1wbGVtZW50cyB0aGUgQVBJLCBzZWxmCi0rcmVnaXN0ZXJzLCBhbmQgbWFrZXMg YSBkZWNpc2lvbiBvbiB0aGUgaXRlcmF0b3IgKGluIHRoaXMgY2FzZSwgaXQganVzdAotK3JldHVy bnMgdGhlIGl0ZXJhdG9yIHVudG91Y2hlZCkuCi0rCi0rVGhlIGZpcnN0IHN0ZXAgaXMgYXR0cmli dXRlIGNyZWF0aW9uIGFuZCBhc3NpZ25tZW50LCBhbmQgYXMgc2hvd24gaW4KLSt0aGUgY29tbWVu dHMgdGhlIGZpbHRlciBhc3NpZ25zIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczogIEBjb2Rle25h bWV9LAotK0Bjb2Rle3ByaW9yaXR5fSBhbmQgd2hldGhlciB0aGUgZmlsdGVyIHNob3VsZCBiZSBl bmFibGVkIHdpdGggdGhlCi0rQGNvZGV7ZW5hYmxlZH0gYXR0cmlidXRlLgotKwotK1RoZSBzZWNv bmQgc3RlcCBpcyByZWdpc3RlcmluZyB0aGUgZnJhbWUgZmlsdGVyIHdpdGggdGhlIGRpY3Rpb25h cnkgb3IKLStkaWN0aW9uYXJpZXMgdGhhdCB0aGUgZnJhbWUgZmlsdGVyIGhhcyBpbnRlcmVzdCBp bi4gIEFzIHNob3duIGluIHRoZQotK2NvbW1lbnRzLCB0aGlzIGZpbHRlciBqdXN0IHJlZ2lzdGVy cyBpdHNlbGYgd2l0aCB0aGUgZ2xvYmFsIGRpY3Rpb25hcnkKLStAY29kZXtnZGIuZnJhbWVfZmls dGVyc30uICBBcyBub3RlZCBlYXJsaWVyLCBAY29kZXtnZGIuZnJhbWVfZmlsdGVyc30KLStpcyBh IGRpY3Rpb25hcnkgdGhhdCBpcyBpbml0aWFsaXplZCBpbiB0aGUgQGNvZGV7Z2RifSBtb2R1bGUg d2hlbgotK0B2YWx1ZXtHREJOfSBzdGFydHMuICBXaGF0IGRpY3Rpb25hcnkgYSBmaWx0ZXIgcmVn aXN0ZXJzIHdpdGggaXMgYW4KLStpbXBvcnRhbnQgY29uc2lkZXJhdGlvbi4gIEdlbmVyYWxseSwg aWYgYSBmaWx0ZXIgaXMgc3BlY2lmaWMgdG8gYSBzZXQKLStvZiBjb2RlLCBpdCBzaG91bGQgYmUg cmVnaXN0ZXJlZCBlaXRoZXIgaW4gdGhlIEBjb2Rle29iamZpbGV9IG9yCi0rQGNvZGV7cHJvZ3Nw YWNlfSBkaWN0aW9uYXJpZXMgYXMgdGhleSBhcmUgc3BlY2lmaWMgdG8gdGhlIHByb2dyYW0KLStj dXJyZW50bHkgbG9hZGVkIGluIEB2YWx1ZXtHREJOfS4gIFRoZSBnbG9iYWwgZGljdGlvbmFyeSBp cyBhbHdheXMKLStwcmVzZW50IGluIEB2YWx1ZXtHREJOfSBhbmQgaXMgbmV2ZXIgdW5sb2FkZWQu ICBBbnkgZmlsdGVycyByZWdpc3RlcmVkCi0rd2l0aCB0aGUgZ2xvYmFsIGRpY3Rpb25hcnkgd2ls bCBleGlzdCB1bnRpbCBAdmFsdWV7R0RCTn0gZXhpdHMuICBUbwotK2F2b2lkIGZpbHRlcnMgdGhh dCBtYXkgY29uZmxpY3QsIGl0IGlzIGdlbmVyYWxseSBiZXR0ZXIgdG8gcmVnaXN0ZXIKLStmcmFt ZSBmaWx0ZXJzIGFnYWluc3QgdGhlIGRpY3Rpb25hcmllcyB0aGF0IG1vcmUgY2xvc2VseSBhbGln biB3aXRoCi0rdGhlIHVzYWdlIG9mIHRoZSBmaWx0ZXIgY3VycmVudGx5IGluIHF1ZXN0aW9uLiAg QHhyZWZ7UHl0aG9uCi0rQXV0by1sb2FkaW5nfSwgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24gb24g YXV0by1sb2FkaW5nIFB5dGhvbiBzY3JpcHRzLgotKwotK0B2YWx1ZXtHREJOfSB0YWtlcyBhIGhh bmRzLW9mZiBhcHByb2FjaCB0byBmcmFtZSBmaWx0ZXIgcmVnaXN0cmF0aW9uLAotK3RoZXJlZm9y ZSBpdCBpcyB0aGUgZnJhbWUgZmlsdGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8gZW5zdXJlCi0rcmVn aXN0cmF0aW9uIGhhcyBvY2N1cnJlZCwgYW5kIHRoYXQgYW55IGV4Y2VwdGlvbnMgYXJlIGhhbmRs ZWQKLSthcHByb3ByaWF0ZWx5LiAgSW4gcGFydGljdWxhciwgeW91IG1heSB3aXNoIHRvIGhhbmRs ZSBleGNlcHRpb25zCi0rcmVsYXRpbmcgdG8gUHl0aG9uIGRpY3Rpb25hcnkga2V5IHVuaXF1ZW5l c3MuICBJdCBpcyBtYW5kYXRvcnkgdGhhdAotK3RoZSBkaWN0aW9uYXJ5IGtleSBpcyB0aGUgc2Ft ZSBhcyBmcmFtZSBmaWx0ZXIncyBAY29kZXtuYW1lfQotK2F0dHJpYnV0ZS4gIFdoZW4gYSB1c2Vy IG1hbmFnZXMgZnJhbWUgZmlsdGVycyAoQHB4cmVme0ZyYW1lIEZpbHRlcgotK01hbmFnZW1lbnR9 KSwgdGhlIG5hbWVzIEB2YWx1ZXtHREJOfSB3aWxsIGRpc3BsYXkgYXJlIHRob3NlIGNvbnRhaW5l ZAotK2luIHRoZSBAY29kZXtuYW1lfSBhdHRyaWJ1dGUuCi0rCi0rVGhlIGZpbmFsIHN0ZXAgb2Yg dGhpcyBleGFtcGxlIGlzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUKLStAY29kZXtmaWx0ZXJ9 IG1ldGhvZC4gIEFzIHNob3duIGluIHRoZSBleGFtcGxlIGNvbW1lbnRzLCB3ZSBkZWZpbmUgdGhl Ci0rQGNvZGV7ZmlsdGVyfSBtZXRob2QgYW5kIG5vdGUgdGhhdCB0aGUgbWV0aG9kIG11c3QgdGFr ZSBhbiBpdGVyYXRvciwKLSthbmQgYWxzbyBtdXN0IHJldHVybiBhbiBpdGVyYXRvci4gIEluIHRo aXMgYmFyZS1ib25lcyBleGFtcGxlLCB0aGUKLStmcmFtZSBmaWx0ZXIgaXMgbm90IHZlcnkgdXNl ZnVsIGFzIGl0IGp1c3QgcmV0dXJucyB0aGUgaXRlcmF0b3IKLSt1bnRvdWNoZWQuICBIb3dldmVy IHRoaXMgaXMgYSB2YWxpZCBvcGVyYXRpb24gZm9yIGZyYW1lIGZpbHRlcnMgdGhhdAotK2hhdmUg dGhlIEBjb2Rle2VuYWJsZWR9IGF0dHJpYnV0ZSBzZXQsIGJ1dCBkZWNpZGUgbm90IHRvIG9wZXJh dGUgb24KLSthbnkgZnJhbWVzLgotKwotK0luIHRoZSBuZXh0IGV4YW1wbGUsIHRoZSBmcmFtZSBm aWx0ZXIgb3BlcmF0ZXMgb24gYWxsIGZyYW1lcyBhbmQKLSt1dGlsaXplcyBhIGZyYW1lIGRlY29y YXRvciB0byBwZXJmb3JtIHNvbWUgd29yayBvbiB0aGUgZnJhbWVzLgotK0B4cmVme0ZyYW1lIERl Y29yYXRvciBBUEl9LCBmb3IgZnVydGhlciBpbmZvcm1hdGlvbiBvbiB0aGUgZnJhbWUKLStkZWNv cmF0b3IgaW50ZXJmYWNlLgotKwotK1RoaXMgZXhhbXBsZSB3b3JrcyBvbiBpbmxpbmVkIGZyYW1l cy4gIEl0IGhpZ2hsaWdodHMgZnJhbWVzIHdoaWNoIGFyZQotK2lubGluZWQgYnkgdGFnZ2luZyB0 aGVtIHdpdGggYW4gYGBbaW5saW5lZF0nJyB0YWcuICBCeSBhcHBseWluZyBhCi0rZnJhbWUgZGVj b3JhdG9yIHRvIGFsbCBmcmFtZXMgd2l0aCB0aGUgUHl0aG9uIEBjb2Rle2l0ZXJ0b29scyBpbWFw fQotK21ldGhvZCwgdGhlIGV4YW1wbGUgZGVmZXJzIGFjdGlvbnMgdG8gdGhlIGZyYW1lIGRlY29y YXRvci4gIEZyYW1lCi0rZGVjb3JhdG9ycyBhcmUgb25seSBwcm9jZXNzZWQgd2hlbiBAdmFsdWV7 R0RCTn0gcHJpbnRzIHRoZSBiYWNrdHJhY2UuCi0rCi0rVGhpcyBpbnRyb2R1Y2VzIGEgbmV3IGRl Y2lzaW9uIG1ha2luZyB0b3BpYzogd2hldGhlciB0byBwZXJmb3JtCi0rZGVjaXNpb24gbWFraW5n IG9wZXJhdGlvbnMgYXQgdGhlIGZpbHRlcmluZyBzdGVwLCBvciBhdCB0aGUgcHJpbnRpbmcKLStz dGVwLiAgSW4gdGhpcyBleGFtcGxlJ3MgYXBwcm9hY2gsIGl0IGRvZXMgbm90IHBlcmZvcm0gYW55 IGZpbHRlcmluZwotK2RlY2lzaW9ucyBhdCB0aGUgZmlsdGVyaW5nIHN0ZXAgYmV5b25kIG1hcHBp bmcgYSBmcmFtZSBkZWNvcmF0b3IgdG8KLStlYWNoIGZyYW1lLiAgVGhpcyBhbGxvd3MgdGhlIGFj dHVhbCBkZWNpc2lvbiBtYWtpbmcgdG8gYmUgcGVyZm9ybWVkCi0rd2hlbiBlYWNoIGZyYW1lIGlz IHByaW50ZWQuICBUaGlzIGlzIGFuIGltcG9ydGFudCBjb25zaWRlcmF0aW9uLCBhbmQKLSt3ZWxs IHdvcnRoIHJlZmxlY3RpbmcgdXBvbiB3aGVuIGRlc2lnbmluZyBhIGZyYW1lIGZpbHRlci4gIEFu IGlzc3VlCi0rdGhhdCBmcmFtZSBmaWx0ZXJzIHNob3VsZCBhdm9pZCBpcyB1bndpbmRpbmcgdGhl IHN0YWNrIGlmIHBvc3NpYmxlLgotK1NvbWUgc3RhY2tzIGNhbiBydW4gdmVyeSBkZWVwLCBpbnRv IHRoZSB0ZW5zIG9mIHRob3VzYW5kcyBpbiBzb21lCi0rY2FzZXMuICBUbyBzZWFyY2ggZXZlcnkg ZnJhbWUgdG8gZGV0ZXJtaW5lIGlmIGl0IGlzIGlubGluZWQgYWhlYWQgb2YKLSt0aW1lIG1heSBi ZSB0b28gZXhwZW5zaXZlIGF0IHRoZSBmaWx0ZXJpbmcgc3RlcC4gIFRoZSBmcmFtZSBmaWx0ZXIK LStjYW5ub3Qga25vdyBob3cgbWFueSBmcmFtZXMgaXQgaGFzIHRvIGl0ZXJhdGUgb3ZlciwgYW5k IGl0IHdvdWxkIGhhdmUKLSt0byBpdGVyYXRlIHRocm91Z2ggdGhlbSBhbGwuICBUaGlzIGVuZHMg dXAgZHVwbGljYXRpbmcgZWZmb3J0IGFzCi0rQHZhbHVle0dEQk59IHBlcmZvcm1zIHRoaXMgaXRl cmF0aW9uIHdoZW4gaXQgcHJpbnRzIHRoZSBmcmFtZXMuCi0rCi0rSW4gdGhpcyBleGFtcGxlIGRl Y2lzaW9uIG1ha2luZyBjYW4gYmUgZGVmZXJyZWQgdG8gdGhlIHByaW50aW5nIHN0ZXAuCi0rQXMg ZWFjaCBmcmFtZSBpcyBwcmludGVkLCB0aGUgZnJhbWUgZGVjb3JhdG9yIGNhbiBleGFtaW5lIGVh Y2ggZnJhbWUKLStpbiB0dXJuIHdoZW4gQHZhbHVle0dEQk59IGl0ZXJhdGVzLiAgRnJvbSBhIHBl cmZvcm1hbmNlIHZpZXdwb2ludCwKLSt0aGlzIGlzIHRoZSBtb3N0IGFwcHJvcHJpYXRlIGRlY2lz aW9uIHRvIG1ha2UgYXMgaXQgYXZvaWRzIGR1cGxpY2F0aW5nCi0rdGhlIGVmZm9ydCB0aGF0IHRo ZSBwcmludGluZyBzdGVwIHdvdWxkIHVuZGVydGFrZSBhbnl3YXkuICBBbHNvLCBpZgotK3RoZXJl IGFyZSBtYW55IGZyYW1lIGZpbHRlcnMgdW53aW5kaW5nIHRoZSBzdGFjayBkdXJpbmcgZmlsdGVy aW5nLCBpdAotK2NhbiBzdWJzdGFudGlhbGx5IGRlbGF5IHRoZSBwcmludGluZyBvZiB0aGUgYmFj a3RyYWNlIHdoaWNoIHdpbGwKLStyZXN1bHQgaW4gbGFyZ2UgbWVtb3J5IHVzYWdlLCBhbmQgYSBw b29yIHVzZXIgZXhwZXJpZW5jZS4KLSsKLStAc21hbGxleGFtcGxlCi0rY2xhc3MgSW5saW5lRmls dGVyKCk6Ci0rCi0rICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSsgICAgICAgIHNlbGYubmFtZSA9 ICJJbmxpbmVkRnJhbWVGaWx0ZXIiCi0rICAgICAgICBzZWxmLnByaW9yaXR5ID0gMTAwCi0rICAg ICAgICBzZWxmLmVuYWJsZWQgPSBUcnVlCi0rICAgICAgICBnZGIuZnJhbWVfZmlsdGVyc1tzZWxm Lm5hbWVdID0gc2VsZgotKwotKyAgICBkZWYgZmlsdGVyKHNlbGYsIGZyYW1lX2l0ZXIpOgotKyAg ICAgICAgZnJhbWVfaXRlciA9IGl0ZXJ0b29scy5pbWFwKElubGluZWRGcmFtZURlY29yYXRvciwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZV9pdGVyKQotKyAgICAg ICAgcmV0dXJuIGZyYW1lX2l0ZXIKLStAZW5kIHNtYWxsZXhhbXBsZQotKwotK1RoaXMgZnJhbWUg ZmlsdGVyIGlzIHNvbWV3aGF0IHNpbWlsYXIgdG8gdGhlIGVhcmxpZXIgZXhhbXBsZSwgZXhjZXB0 Ci0rdGhhdCB0aGUgQGNvZGV7ZmlsdGVyfSBtZXRob2QgYXBwbGllcyBhIGZyYW1lIGRlY29yYXRv ciBvYmplY3QgY2FsbGVkCi0rQGNvZGV7SW5saW5lZEZyYW1lRGVjb3JhdG9yfSB0byBlYWNoIGVs ZW1lbnQgaW4gdGhlIGl0ZXJhdG9yLiAgVGhlCi0rQGNvZGV7aW1hcH0gUHl0aG9uIG1ldGhvZCBp cyBsaWdodC13ZWlnaHQuICBJdCBkb2VzIG5vdCBwcm9hY3RpdmVseQotK2l0ZXJhdGUgb3ZlciB0 aGUgaXRlcmF0b3IsIGJ1dCByYXRoZXIgY3JlYXRlcyBhIG5ldyBpdGVyYXRvciB3aGljaAotK3dy YXBzIHRoZSBleGlzdGluZyBvbmUuCi0rCi0rQmVsb3cgaXMgdGhlIGZyYW1lIGRlY29yYXRvciBm b3IgdGhpcyBleGFtcGxlLgotKwotK0BzbWFsbGV4YW1wbGUKLStjbGFzcyBJbmxpbmVkRnJhbWVE ZWNvcmF0b3IoRnJhbWVEZWNvcmF0b3IpOgotKwotKyAgICBkZWYgX19pbml0X18oc2VsZiwgZm9i aik6Ci0rICAgICAgICBzdXBlcihJbmxpbmVkRnJhbWVEZWNvcmF0b3IsIHNlbGYpLl9faW5pdF9f KGZvYmopCi0rCi0rICAgIGRlZiBmdW5jdGlvbihzZWxmKToKLSsgICAgICAgIGZyYW1lID0gZm9i ai5pbmZlcmlvcl9mcmFtZSgpCi0rICAgICAgICBuYW1lID0gc3RyKGZyYW1lLm5hbWUoKSkKLSsK LSsgICAgICAgIGlmIGZyYW1lLnR5cGUoKSA9PSBnZGIuSU5MSU5FX0ZSQU1FOgotKyAgICAgICAg ICAgIG5hbWUgPSBuYW1lICsgIiBbaW5saW5lZF0iCi0rCi0rICAgICAgICByZXR1cm4gbmFtZQot K0BlbmQgc21hbGxleGFtcGxlCi0rCi0rVGhpcyBmcmFtZSBkZWNvcmF0b3Igb25seSBkZWZpbmVz IGFuZCBvdmVycmlkZXMgdGhlIEBjb2Rle2Z1bmN0aW9ufQotK21ldGhvZC4gIEl0IGxldHMgdGhl IHN1cHBsaWVkIEBjb2Rle0ZyYW1lRGVjb3JhdG9yfSwgd2hpY2ggaXMgc2hpcHBlZAotK3dpdGgg QHZhbHVle0dEQk59LCBwZXJmb3JtIHRoZSBvdGhlciB3b3JrIGFzc29jaWF0ZWQgd2l0aCBwcmlu dGluZwotK3RoaXMgZnJhbWUuCi0rCi0rVGhlIGNvbWJpbmF0aW9uIG9mIHRoZXNlIHR3byBvYmpl Y3RzIGNyZWF0ZSB0aGlzIG91dHB1dCBmcm9tIGEKLStiYWNrdHJhY2U6Ci0rCi0rQHNtYWxsZXhh bXBsZQotKyMwICAweDAwNDAwNGUwIGluIGJhciAoKSBhdCBpbmxpbmUuYzoxMQotKyMxICAweDAw NDAwNTY2IGluIG1heCBbaW5saW5lZF0gKGI9NiwgYT0xMikgYXQgaW5saW5lLmM6MjEKLSsjMiAg MHgwMDQwMDU2NiBpbiBtYWluICgpIGF0IGlubGluZS5jOjMxCi0rQGVuZCBzbWFsbGV4YW1wbGUK LSsKLStTbyBpbiB0aGUgY2FzZSBvZiB0aGlzIGV4YW1wbGUsIGEgZnJhbWUgZGVjb3JhdG9yIGlz IGFwcGxpZWQgdG8gYWxsCi0rZnJhbWVzLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhleSBtYXkg YmUgaW5saW5lZCBvciBub3QuICBBcwotK0B2YWx1ZXtHREJOfSBpdGVyYXRlcyBvdmVyIHRoZSBp dGVyYXRvciBwcm9kdWNlZCBieSB0aGUgZnJhbWUgZmlsdGVycywKLStAdmFsdWV7R0RCTn0gZXhl Y3V0ZXMgZWFjaCBmcmFtZSBkZWNvcmF0b3Igd2hpY2ggdGhlbiBtYWtlcyBhIGRlY2lzaW9uCi0r b24gd2hhdCB0byBwcmludCBpbiB0aGUgQGNvZGV7ZnVuY3Rpb259IGNhbGxiYWNrLiAgVXNpbmcg YSBzdHJhdGVneQotK2xpa2UgdGhpcyBpcyBhIHdheSB0byBkZWZlciBkZWNpc2lvbnMgb24gdGhl IGZyYW1lIGNvbnRlbnQgdG8gcHJpbnRpbmcKLSt0aW1lLgotKwotK0BzdWJoZWFkaW5nIEVsaWRp bmcgRnJhbWVzCi0rCi0rSXQgbWlnaHQgYmUgdGhhdCB0aGUgYWJvdmUgZXhhbXBsZSBpcyBub3Qg ZGVzaXJhYmxlIGZvciByZXByZXNlbnRpbmcKLStpbmxpbmVkIGZyYW1lcywgYW5kIGEgaGllcmFy Y2hpY2FsIGFwcHJvYWNoIG1heSBiZSBwcmVmZXJyZWQuICBJZiB3ZQotK3dhbnQgdG8gaGllcmFy Y2hpY2FsbHkgcmVwcmVzZW50IGZyYW1lcywgdGhlIEBjb2Rle2VsaWRlZH0gZnJhbWUKLStkZWNv cmF0b3IgaW50ZXJmYWNlIG1pZ2h0IGJlIHByZWZlcmFibGUuCi0rCi0rVGhpcyBleGFtcGxlIGFw cHJvYWNoZXMgdGhlIGlzc3VlIHdpdGggdGhlIEBjb2Rle2VsaWRlZH0gbWV0aG9kLiAgVGhpcwot K2V4YW1wbGUgaXMgcXVpdGUgbG9uZywgYnV0IHZlcnkgc2ltcGxpc3RpYy4gIEl0IGlzIG91dC1v Zi1zY29wZSBmb3IKLSt0aGlzIHNlY3Rpb24gdG8gd3JpdGUgYSBjb21wbGV0ZSBleGFtcGxlIHRo YXQgY29tcHJlaGVuc2l2ZWx5IGNvdmVycwotK2FsbCBhcHByb2FjaGVzIG9mIGZpbmRpbmcgYW5k IHByaW50aW5nIGlubGluZWQgZnJhbWVzLiAgSG93ZXZlciwgdGhpcwotK2V4YW1wbGUgaWxsdXN0 cmF0ZXMgdGhlIGFwcHJvYWNoIGFuIGF1dGhvciBtaWdodCB1c2UuCi0rCi0rVGhpcyBleGFtcGxl IGNvbXByaXNlcyBvZiB0aHJlZSBzZWN0aW9ucy4KLSsKLStAc21hbGxleGFtcGxlCi0rY2xhc3Mg SW5saW5lRnJhbWVGaWx0ZXIoKToKLSsKLSsgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotKyAgICAg ICAgc2VsZi5uYW1lID0gIklubGluZWRGcmFtZUZpbHRlciIKLSsgICAgICAgIHNlbGYucHJpb3Jp dHkgPSAxMDAKLSsgICAgICAgIHNlbGYuZW5hYmxlZCA9IFRydWUKLSsgICAgICAgIGdkYi5mcmFt ZV9maWx0ZXJzW3NlbGYubmFtZV0gPSBzZWxmCi0rCi0rICAgIGRlZiBmaWx0ZXIoc2VsZiwgZnJh bWVfaXRlcik6Ci0rICAgICAgICByZXR1cm4gRWxpZGluZ0lubGluZUl0ZXJhdG9yKGZyYW1lX2l0 ZXIpCi0rQGVuZCBzbWFsbGV4YW1wbGUKLSsKLStUaGlzIGZyYW1lIGZpbHRlciBpcyB2ZXJ5IHNp bWlsYXIgdG8gdGhlIG90aGVyIGV4YW1wbGVzLiAgVGhlIG9ubHkKLStkaWZmZXJlbmNlIGlzIHRo aXMgZnJhbWUgZmlsdGVyIGlzIHdyYXBwaW5nIHRoZSBpdGVyYXRvciBwcm92aWRlZCB0bwotK2l0 IChAY29kZXtmcmFtZV9pdGVyfSkgd2l0aCBhIGN1c3RvbSBpdGVyYXRvciBjYWxsZWQKLStAY29k ZXtFbGlkaW5nSW5saW5lSXRlcmF0b3J9LiAgVGhpcyBhZ2FpbiBkZWZlcnMgYWN0aW9ucyB0byB3 aGVuCi0rQHZhbHVle0dEQk59IHByaW50cyB0aGUgYmFja3RyYWNlLCBhcyB0aGUgaXRlcmF0b3Ig aXMgbm90IHRyYXZlcnNlZAotK3VudGlsIHByaW50aW5nLgotKwotK1RoZSBpdGVyYXRvciBmb3Ig dGhpcyBleGFtcGxlIGlzIGFzIGZvbGxvd3MuICBJdCBpcyBpbiB0aGlzIHNlY3Rpb24gb2YKLSt0 aGUgZXhhbXBsZSB3aGVyZSBkZWNpc2lvbnMgYXJlIG1hZGUgb24gdGhlIGNvbnRlbnQgb2YgdGhl IGJhY2t0cmFjZS4KLSsKLStAc21hbGxleGFtcGxlCi0rY2xhc3MgRWxpZGluZ0lubGluZUl0ZXJh dG9yOgotKyAgICBkZWYgX19pbml0X18oc2VsZiwgaWkpOgotKyAgICAgICAgc2VsZi5pbnB1dF9p dGVyYXRvciA9IGlpCi0rCi0rICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKLSsgICAgICAgIHJldHVy biBzZWxmCi0rCi0rICAgIGRlZiBuZXh0KHNlbGYpOgotKyAgICAgICAgZnJhbWUgPSBuZXh0KHNl bGYuaW5wdXRfaXRlcmF0b3IpCi0rCi0rICAgICAgICBpZiBmcmFtZS5pbmZlcmlvcl9mcmFtZSgp LnR5cGUoKSAhPSBnZGIuSU5MSU5FX0ZSQU1FOgotKyAgICAgICAgICAgIHJldHVybiBmcmFtZQot KwotKyAgICAgICAgdHJ5OgotKyAgICAgICAgICAgIGVsaWRpbmdfZnJhbWUgPSBuZXh0KHNlbGYu aW5wdXRfaXRlcmF0b3IpCi0rICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKLSsgICAgICAg ICAgICByZXR1cm4gZnJhbWUKLSsgICAgICAgIHJldHVybiBFbGlkaW5nRnJhbWVEZWNvcmF0b3Io ZWxpZGluZ19mcmFtZSwgW2ZyYW1lXSkKLStAZW5kIHNtYWxsZXhhbXBsZQotKwotK1RoaXMgaXRl cmF0b3IgaW1wbGVtZW50cyB0aGUgUHl0aG9uIGl0ZXJhdG9yIHByb3RvY29sLiAgV2hlbiB0aGUK LStAY29kZXtuZXh0fSBmdW5jdGlvbiBpcyBjYWxsZWQgKHdoZW4gQHZhbHVle0dEQk59IHByaW50 cyBlYWNoIGZyYW1lKSwKLSt0aGUgaXRlcmF0b3IgY2hlY2tzIGlmIHRoaXMgZnJhbWUgZGVjb3Jh dG9yLCBAY29kZXtmcmFtZX0sIGlzIHdyYXBwaW5nCi0rYW4gaW5saW5lZCBmcmFtZS4gIElmIGl0 IGlzIG5vdCwgaXQgcmV0dXJucyB0aGUgZXhpc3RpbmcgZnJhbWUgZGVjb3JhdG9yCi0rdW50b3Vj aGVkLiAgSWYgaXQgaXMgd3JhcHBpbmcgYW4gaW5saW5lZCBmcmFtZSwgaXQgYXNzdW1lcyB0aGF0 IHRoZQotK2lubGluZWQgZnJhbWUgd2FzIGNvbnRhaW5lZCB3aXRoaW4gdGhlIG5leHQgb2xkZXN0 IGZyYW1lLAotK0Bjb2Rle2VsaWRpbmdfZnJhbWV9LCB3aGljaCBpdCBmZXRjaGVzLiAgSXQgdGhl biBjcmVhdGVzIGFuZCByZXR1cm5zIGEKLStmcmFtZSBkZWNvcmF0b3IsIEBjb2Rle0VsaWRpbmdG cmFtZURlY29yYXRvcn0sIHdoaWNoIGNvbnRhaW5zIGJvdGggdGhlCi0rZWxpZGVkIGZyYW1lLCBh bmQgdGhlIGVsaWRpbmcgZnJhbWUuCi0rCi0rQHNtYWxsZXhhbXBsZQotK2NsYXNzIEVsaWRpbmdJ bmxpbmVEZWNvcmF0b3IoRnJhbWVEZWNvcmF0b3IpOgotKwotKyAgICBkZWYgX19pbml0X18oc2Vs ZiwgZnJhbWUsIGVsaWRlZF9mcmFtZXMpOgotKyAgICAgICAgc3VwZXIoRWxpZGluZ0lubGluZURl Y29yYXRvciwgc2VsZikuX19pbml0X18oZnJhbWUpCi0rICAgICAgICBzZWxmLmZyYW1lID0gZnJh bWUKLSsgICAgICAgIHNlbGYuZWxpZGVkX2ZyYW1lcyA9IGVsaWRlZF9mcmFtZXMKLSsKLSsgICAg ZGVmIGVsaWRlZChzZWxmKToKLSsgICAgICAgIHJldHVybiBpdGVyKHNlbGYuZWxpZGVkX2ZyYW1l cykKLStAZW5kIHNtYWxsZXhhbXBsZQotKwotK1RoaXMgZnJhbWUgZGVjb3JhdG9yIG92ZXJyaWRl cyBvbmUgZnVuY3Rpb24gYW5kIHJldHVybnMgdGhlIGlubGluZWQKLStmcmFtZSBpbiB0aGUgQGNv ZGV7ZWxpZGVkfSBtZXRob2QuICBBcyBiZWZvcmUgaXQgbGV0cwotK0Bjb2Rle0ZyYW1lRGVjb3Jh dG9yfSBkbyB0aGUgcmVzdCBvZiB0aGUgd29yayBpbnZvbHZlZCBpbiBwcmludGluZwotK3RoaXMg ZnJhbWUuICBUaGlzIHByb2R1Y2VzIHRoZSBmb2xsb3dpbmcgb3V0cHV0LgotKwotK0BzbWFsbGV4 YW1wbGUKLSsjMCAgMHgwMDQwMDRlMCBpbiBiYXIgKCkgYXQgaW5saW5lLmM6MTEKLSsjMiAgMHgw MDQwMDUyOSBpbiBtYWluICgpIGF0IGlubGluZS5jOjI1Ci0rICAgICMxICAweDAwNDAwNTI5IGlu IG1heCAoYj02LCBhPTEyKSBhdCBpbmxpbmUuYzoxNQotK0BlbmQgc21hbGxleGFtcGxlCi0rCi0r SW4gdGhhdCBvdXRwdXQsIEBjb2Rle21heH0gd2hpY2ggaGFzIGJlZW4gaW5saW5lZCBpbnRvIEBj b2Rle21haW59IGlzCi0rcHJpbnRlZCBoaWVyYXJjaGljYWxseS4gIEFub3RoZXIgYXBwcm9hY2gg d291bGQgYmUgdG8gY29tYmluZSB0aGUKLStAY29kZXtmdW5jdGlvbn0gbWV0aG9kLCBhbmQgdGhl IEBjb2Rle2VsaWRlZH0gbWV0aG9kIHRvIGJvdGggcHJpbnQgYQotK21hcmtlciBpbiB0aGUgaW5s aW5lZCBmcmFtZSwgYW5kIGFsc28gc2hvdyB0aGUgaGllcmFyY2hpY2FsCi0rcmVsYXRpb25zaGlw LgotKwotIEBub2RlIEluZmVyaW9ycyBJbiBQeXRob24KLSBAc3Vic3Vic2VjdGlvbiBJbmZlcmlv cnMgSW4gUHl0aG9uCi0gQGNpbmRleCBpbmZlcmlvcnMgaW4gUHl0aG9uCi1AQCAtMjUyODAsNiAr MjYwNzEsMTEgQEAgVGhlIEBjb2Rle3R5cGVfcHJpbnRlcnN9IGF0dHJpYnV0ZSBpcyBhCi0gQHhy ZWZ7VHlwZSBQcmludGluZyBBUEl9LCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSBAZW5kIGRlZnZh cgotIAotK0BkZWZ2YXIgUHJvZ3NwYWNlLmZyYW1lX2ZpbHRlcnMKLStUaGUgQGNvZGV7ZnJhbWVf ZmlsdGVyc30gYXR0cmlidXRlIGlzIGEgZGljdGlvbmFyeSBvZiBmcmFtZSBmaWx0ZXIKLStvYmpl Y3RzLiAgQHhyZWZ7RnJhbWUgRmlsdGVyIEFQSX0sIGZvciBtb3JlIGluZm9ybWF0aW9uLgotK0Bl bmQgZGVmdmFyCi0rCi0gQG5vZGUgT2JqZmlsZXMgSW4gUHl0aG9uCi0gQHN1YnN1YnNlY3Rpb24g T2JqZmlsZXMgSW4gUHl0aG9uCi0gCi1AQCAtMjUzMzAsNiArMjYxMjYsMTEgQEAgVGhlIEBjb2Rl e3R5cGVfcHJpbnRlcnN9IGF0dHJpYnV0ZSBpcyBhCi0gQHhyZWZ7VHlwZSBQcmludGluZyBBUEl9 LCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSBAZW5kIGRlZnZhcgotIAotK0BkZWZ2YXIgT2JqZmls ZS5mcmFtZV9maWx0ZXJzCi0rVGhlIEBjb2Rle2ZyYW1lX2ZpbHRlcnN9IGF0dHJpYnV0ZSBpcyBh IGRpY3Rpb25hcnkgb2YgZnJhbWUgZmlsdGVyCi0rb2JqZWN0cy4gIEB4cmVme0ZyYW1lIEZpbHRl ciBBUEl9LCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLStAZW5kIGRlZnZhcgotKwotIEEgQGNvZGV7 Z2RiLk9iamZpbGV9IG9iamVjdCBoYXMgdGhlIGZvbGxvd2luZyBtZXRob2RzOgotIAotIEBkZWZ1 biBPYmpmaWxlLmlzX3ZhbGlkICgpCi1AQCAtMjYzNDgsNyArMjcxNDksNyBAQCBObyAgICAgbXkt Zm9vLXByZXR0eS1wcmludGVycy5weQotIFdoZW4gcmVhZGluZyBhbiBhdXRvLWxvYWRlZCBmaWxl LCBAdmFsdWV7R0RCTn0gc2V0cyB0aGUKLSBAZGZue2N1cnJlbnQgb2JqZmlsZX0uICBUaGlzIGlz IGF2YWlsYWJsZSB2aWEgdGhlIEBjb2Rle2dkYi5jdXJyZW50X29iamZpbGV9Ci0gZnVuY3Rpb24g KEBweHJlZntPYmpmaWxlcyBJbiBQeXRob259KS4gIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3IKLS1y ZWdpc3RlcmluZyBvYmpmaWxlLXNwZWNpZmljIHByZXR0eS1wcmludGVycy4KLStyZWdpc3Rlcmlu ZyBvYmpmaWxlLXNwZWNpZmljIHByZXR0eS1wcmludGVycyBhbmQgZnJhbWUtZmlsdGVycy4KLSAK LSBAbWVudQotICogb2JqZmlsZS1nZGIucHkgZmlsZTo6ICAgICAgICAgIFRoZSBAZmlsZXtAdmFy e29iamZpbGV9LWdkYi5weX0gZmlsZQotQEAgLTMwMjE5LDYgKzMxMDIwLDIyIEBAIElzIHRoaXMg Z29pbmcgYXdheT8/Pz8KLSBAbm9kZSBHREIvTUkgU3RhY2sgTWFuaXB1bGF0aW9uCi0gQHNlY3Rp b24gQHNje2dkYi9taX0gU3RhY2sgTWFuaXB1bGF0aW9uIENvbW1hbmRzCi0gCi0rQHN1YmhlYWRp bmcgVGhlIEBjb2Rley1lbmFibGUtZnJhbWUtZmlsdGVyc30gQ29tbWFuZAotK0BmaW5kZXggLWVu YWJsZS1mcmFtZS1maWx0ZXJzCi0rCi0rQHNtYWxsZXhhbXBsZQotKy1lbmFibGUtZnJhbWUtZmls dGVycwotK0BlbmQgc21hbGxleGFtcGxlCi0rCi0rQHZhbHVle0dEQk59IGFsbG93cyBQeXRob24t YmFzZWQgZnJhbWUgZmlsdGVycyB0byBhZmZlY3QgdGhlIG91dHB1dCBvZgotK3RoZSBNSSBjb21t YW5kcyByZWxhdGluZyB0byBzdGFjayB0cmFjZXMuICBBcyB0aGVyZSBpcyBubyB3YXkgdG8KLStp bXBsZW1lbnQgdGhpcyBpbiBhIGZ1bGx5IGJhY2t3YXJkLWNvbXBhdGlibGUgd2F5LCBhIGZyb250 IGVuZCBtdXN0Ci0rcmVxdWVzdCB0aGF0IHRoaXMgZnVuY3Rpb25hbGl0eSBiZSBlbmFibGVkLgot KwotK09uY2UgZW5hYmxlZCwgdGhpcyBmZWF0dXJlIGNhbm5vdCBiZSBkaXNhYmxlZC4KLSsKLStO b3RlIHRoYXQgaWYgUHl0aG9uIHN1cHBvcnQgaGFzIG5vdCBiZWVuIGNvbXBpbGVkIGludG8gQHZh bHVle0dEQk59LAotK3RoaXMgY29tbWFuZCB3aWxsIHN0aWxsIHN1Y2NlZWQgKGFuZCBkbyBub3Ro aW5nKS4KLSAKLSBAc3ViaGVhZGluZyBUaGUgQGNvZGV7LXN0YWNrLWluZm8tZnJhbWV9IENvbW1h bmQKLSBAZmluZGV4IC1zdGFjay1pbmZvLWZyYW1lCi1AQCAtMzAyODYsMTMgKzMxMTAzLDE0IEBA IEZvciBhIHN0YWNrIHdpdGggZnJhbWUgbGV2ZWxzIDAgdGhyb3VnaAotIChnZGIpCi0gQGVuZCBz bWFsbGV4YW1wbGUKLSAKLStAYW5jaG9yey1zdGFjay1saXN0LWFyZ3VtZW50c30KLSBAc3ViaGVh ZGluZyBUaGUgQGNvZGV7LXN0YWNrLWxpc3QtYXJndW1lbnRzfSBDb21tYW5kCi0gQGZpbmRleCAt c3RhY2stbGlzdC1hcmd1bWVudHMKLSAKLSBAc3Vic3ViaGVhZGluZyBTeW5vcHNpcwotIAotIEBz bWFsbGV4YW1wbGUKLS0gLXN0YWNrLWxpc3QtYXJndW1lbnRzIEB2YXJ7cHJpbnQtdmFsdWVzfQot KyAtc3RhY2stbGlzdC1hcmd1bWVudHMgWyAtLW5vLWZyYW1lLWZpbHRlcnMgXSBAdmFye3ByaW50 LXZhbHVlc30KLSAgICAgWyBAdmFye2xvdy1mcmFtZX0gQHZhcntoaWdoLWZyYW1lfSBdCi0gQGVu ZCBzbWFsbGV4YW1wbGUKLSAKLUBAIC0zMDMwOSw3ICszMTEyNyw5IEBAIElmIEB2YXJ7cHJpbnQt dmFsdWVzfSBpcyAwIG9yIEBjb2Rley0tbm8KLSB0aGUgdmFyaWFibGVzOyBpZiBpdCBpcyAxIG9y IEBjb2Rley0tYWxsLXZhbHVlc30sIHByaW50IGFsc28gdGhlaXIKLSB2YWx1ZXM7IGFuZCBpZiBp dCBpcyAyIG9yIEBjb2Rley0tc2ltcGxlLXZhbHVlc30sIHByaW50IHRoZSBuYW1lLAotIHR5cGUg YW5kIHZhbHVlIGZvciBzaW1wbGUgZGF0YSB0eXBlcywgYW5kIHRoZSBuYW1lIGFuZCB0eXBlIGZv ciBhcnJheXMsCi0tc3RydWN0dXJlcyBhbmQgdW5pb25zLgotK3N0cnVjdHVyZXMgYW5kIHVuaW9u cy4gIElmIHRoZSBvcHRpb24gQGNvZGV7LS1uby1mcmFtZS1maWx0ZXJzfSBpcwotK3N1cHBsaWVk LCB0aGVuIFB5dGhvbiBmcmFtZSBmaWx0ZXJzIHdpbGwgbm90IGJlIGV4ZWN1dGVkLgotKwotIAot IFVzZSBvZiB0aGlzIGNvbW1hbmQgdG8gb2J0YWluIGFyZ3VtZW50cyBpbiBhIHNpbmdsZSBmcmFt ZSBpcwotIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgdGhlIEBzYW1wey1zdGFjay1saXN0LXZhcmlh Ymxlc30gY29tbWFuZC4KLUBAIC0zMDM4MCwxMyArMzEyMDAsMTQgQEAgYXJncz1bQHtuYW1lPSJp bnRhcmciLHZhbHVlPSIyIkB9LAotIEBjIEBzdWJoZWFkaW5nIC1zdGFjay1saXN0LWV4Y2VwdGlv bi1oYW5kbGVycwotIAotIAotK0BhbmNob3J7LXN0YWNrLWxpc3QtZnJhbWVzfQotIEBzdWJoZWFk aW5nIFRoZSBAY29kZXstc3RhY2stbGlzdC1mcmFtZXN9IENvbW1hbmQKLSBAZmluZGV4IC1zdGFj ay1saXN0LWZyYW1lcwotIAotIEBzdWJzdWJoZWFkaW5nIFN5bm9wc2lzCi0gCi0gQHNtYWxsZXhh bXBsZQotLSAtc3RhY2stbGlzdC1mcmFtZXMgWyBAdmFye2xvdy1mcmFtZX0gQHZhcntoaWdoLWZy YW1lfSBdCi0rIC1zdGFjay1saXN0LWZyYW1lcyBbIC0tbm8tZnJhbWUtZmlsdGVycyBAdmFye2xv dy1mcmFtZX0gQHZhcntoaWdoLWZyYW1lfSBdCi0gQGVuZCBzbWFsbGV4YW1wbGUKLSAKLSBMaXN0 IHRoZSBmcmFtZXMgY3VycmVudGx5IG9uIHRoZSBzdGFjay4gIEZvciBlYWNoIGZyYW1lIGl0IGRp c3BsYXlzIHRoZQotQEAgLTMwNDE2LDcgKzMxMjM3LDkgQEAgbGV2ZWxzIGFyZSBiZXR3ZWVuIHRo ZSB0d28gYXJndW1lbnRzIChpbgotIGFyZSBlcXVhbCwgaXQgc2hvd3MgdGhlIHNpbmdsZSBmcmFt ZSBhdCB0aGUgY29ycmVzcG9uZGluZyBsZXZlbC4gIEl0IGlzCi0gYW4gZXJyb3IgaWYgQHZhcnts b3ctZnJhbWV9IGlzIGxhcmdlciB0aGFuIHRoZSBhY3R1YWwgbnVtYmVyIG9mCi0gZnJhbWVzLiAg T24gdGhlIG90aGVyIGhhbmQsIEB2YXJ7aGlnaC1mcmFtZX0gbWF5IGJlIGxhcmdlciB0aGFuIHRo ZQotLWFjdHVhbCBudW1iZXIgb2YgZnJhbWVzLCBpbiB3aGljaCBjYXNlIG9ubHkgZXhpc3Rpbmcg ZnJhbWVzIHdpbGwgYmUgcmV0dXJuZWQuCi0rYWN0dWFsIG51bWJlciBvZiBmcmFtZXMsIGluIHdo aWNoIGNhc2Ugb25seSBleGlzdGluZyBmcmFtZXMgd2lsbCBiZQotK3JldHVybmVkLiAgSWYgdGhl IG9wdGlvbiBAY29kZXstLW5vLWZyYW1lLWZpbHRlcnN9IGlzIHN1cHBsaWVkLCB0aGVuCi0rUHl0 aG9uIGZyYW1lIGZpbHRlcnMgd2lsbCBub3QgYmUgZXhlY3V0ZWQuCi0gCi0gQHN1YnN1YmhlYWRp bmcgQHZhbHVle0dEQk59IENvbW1hbmQKLSAKLUBAIC0zMDQ4NiwxMSArMzEzMDksMTIgQEAgU2hv dyBhIHNpbmdsZSBmcmFtZToKLSAKLSBAc3ViaGVhZGluZyBUaGUgQGNvZGV7LXN0YWNrLWxpc3Qt bG9jYWxzfSBDb21tYW5kCi0gQGZpbmRleCAtc3RhY2stbGlzdC1sb2NhbHMKLStAYW5jaG9yey1z dGFjay1saXN0LWxvY2Fsc30KLSAKLSBAc3Vic3ViaGVhZGluZyBTeW5vcHNpcwotIAotIEBzbWFs bGV4YW1wbGUKLS0gLXN0YWNrLWxpc3QtbG9jYWxzIEB2YXJ7cHJpbnQtdmFsdWVzfQotKyAtc3Rh Y2stbGlzdC1sb2NhbHMgWyAtLW5vLWZyYW1lLWZpbHRlcnMgXSBAdmFye3ByaW50LXZhbHVlc30K LSBAZW5kIHNtYWxsZXhhbXBsZQotIAotIERpc3BsYXkgdGhlIGxvY2FsIHZhcmlhYmxlIG5hbWVz IGZvciB0aGUgc2VsZWN0ZWQgZnJhbWUuICBJZgotQEAgLTMwNTAxLDcgKzMxMzI1LDggQEAgdHlw ZSBhbmQgdmFsdWUgZm9yIHNpbXBsZSBkYXRhIHR5cGVzLCBhbgotIHN0cnVjdHVyZXMgYW5kIHVu aW9ucy4gIEluIHRoaXMgbGFzdCBjYXNlLCBhIGZyb250ZW5kIGNhbiBpbW1lZGlhdGVseQotIGRp c3BsYXkgdGhlIHZhbHVlIG9mIHNpbXBsZSBkYXRhIHR5cGVzIGFuZCBjcmVhdGUgdmFyaWFibGUg b2JqZWN0cyBmb3IKLSBvdGhlciBkYXRhIHR5cGVzIHdoZW4gdGhlIHVzZXIgd2lzaGVzIHRvIGV4 cGxvcmUgdGhlaXIgdmFsdWVzIGluCi0tbW9yZSBkZXRhaWwuCi0rbW9yZSBkZXRhaWwuICBJZiB0 aGUgb3B0aW9uIEBjb2Rley0tbm8tZnJhbWUtZmlsdGVyc30gaXMgc3VwcGxpZWQsIHRoZW4KLStQ eXRob24gZnJhbWUgZmlsdGVycyB3aWxsIG5vdCBiZSBleGVjdXRlZC4KLSAKLSBUaGlzIGNvbW1h bmQgaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiB0aGUKLSBAc2FtcHstc3RhY2stbGlzdC12YXJp YWJsZXN9IGNvbW1hbmQuCi1AQCAtMzA1MjYsMTMgKzMxMzUxLDE0IEBAIFRoaXMgY29tbWFuZCBp cyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIHQKLSAoZ2RiKQotIEBlbmQgc21hbGxleGFtcGxlCi0g Ci0rQGFuY2hvcnstc3RhY2stbGlzdC12YXJpYWJsZXN9Ci0gQHN1YmhlYWRpbmcgVGhlIEBjb2Rl ey1zdGFjay1saXN0LXZhcmlhYmxlc30gQ29tbWFuZAotIEBmaW5kZXggLXN0YWNrLWxpc3QtdmFy aWFibGVzCi0gCi0gQHN1YnN1YmhlYWRpbmcgU3lub3BzaXMKLSAKLSBAc21hbGxleGFtcGxlCi0t IC1zdGFjay1saXN0LXZhcmlhYmxlcyBAdmFye3ByaW50LXZhbHVlc30KLSsgLXN0YWNrLWxpc3Qt dmFyaWFibGVzIFsgLS1uby1mcmFtZS1maWx0ZXJzIF0gQHZhcntwcmludC12YWx1ZXN9Ci0gQGVu ZCBzbWFsbGV4YW1wbGUKLSAKLSBEaXNwbGF5IHRoZSBuYW1lcyBvZiBsb2NhbCB2YXJpYWJsZXMg YW5kIGZ1bmN0aW9uIGFyZ3VtZW50cyBmb3IgdGhlIHNlbGVjdGVkIGZyYW1lLiAgSWYKLUBAIC0z MDU0MCw3ICszMTM2Niw4IEBAIERpc3BsYXkgdGhlIG5hbWVzIG9mIGxvY2FsIHZhcmlhYmxlcyBh bmQKLSB0aGUgdmFyaWFibGVzOyBpZiBpdCBpcyAxIG9yIEBjb2Rley0tYWxsLXZhbHVlc30sIHBy aW50IGFsc28gdGhlaXIKLSB2YWx1ZXM7IGFuZCBpZiBpdCBpcyAyIG9yIEBjb2Rley0tc2ltcGxl LXZhbHVlc30sIHByaW50IHRoZSBuYW1lLAotIHR5cGUgYW5kIHZhbHVlIGZvciBzaW1wbGUgZGF0 YSB0eXBlcywgYW5kIHRoZSBuYW1lIGFuZCB0eXBlIGZvciBhcnJheXMsCi0tc3RydWN0dXJlcyBh bmQgdW5pb25zLiAgCi0rc3RydWN0dXJlcyBhbmQgdW5pb25zLiAgSWYgdGhlIG9wdGlvbiBAY29k ZXstLW5vLWZyYW1lLWZpbHRlcnN9IGlzCi0rc3VwcGxpZWQsIHRoZW4gUHl0aG9uIGZyYW1lIGZp bHRlcnMgd2lsbCBub3QgYmUgZXhlY3V0ZWQuCi0gCi0gQHN1YnN1YmhlYWRpbmcgRXhhbXBsZQot IAotSW5kZXg6IGdkYi03LjYvZ2RiL21pL21pLWNtZC1zdGFjay5jCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNi5vcmlnL2dkYi9taS9taS1jbWQtc3RhY2suYwkyMDEzLTA2LTEwIDE0OjMxOjAyLjcz MDA4NDY1MiArMDIwMAotKysrIGdkYi03LjYvZ2RiL21pL21pLWNtZC1zdGFjay5jCTIwMTMtMDYt MTAgMTQ6MzE6MDguMzY1MDgyNDM3ICswMjAwCi1AQCAtMzEsNiArMzEsMTAgQEAKLSAjaW5jbHVk ZSAibGFuZ3VhZ2UuaCIKLSAjaW5jbHVkZSAidmFscHJpbnQuaCIKLSAjaW5jbHVkZSAiZXhjZXB0 aW9ucy5oIgotKyNpbmNsdWRlICJ1dGlscy5oIgotKyNpbmNsdWRlICJtaS1nZXRvcHQuaCIKLSsj aW5jbHVkZSAicHl0aG9uL3B5dGhvbi5oIgotKyNpbmNsdWRlIDxjdHlwZS5oPgotIAotIGVudW0g d2hhdF90b19saXN0IHsgbG9jYWxzLCBhcmd1bWVudHMsIGFsbCB9OwotIAotQEAgLTM4LDYgKzQy LDI4IEBAIHN0YXRpYyB2b2lkIGxpc3RfYXJnc19vcl9sb2NhbHMgKGVudW0gd2gKLSAJCQkJIGVu dW0gcHJpbnRfdmFsdWVzIHZhbHVlcywKLSAJCQkJIHN0cnVjdCBmcmFtZV9pbmZvICpmaSk7Ci0g Ci0rLyogVHJ1ZSBpZiB3ZSB3YW50IHRvIGFsbG93IFB5dGhvbi1iYXNlZCBmcmFtZSBmaWx0ZXJz LiAgKi8KLStzdGF0aWMgaW50IGZyYW1lX2ZpbHRlcnMgPSAwOwotKwotK3ZvaWQKLSttaV9jbWRf ZW5hYmxlX2ZyYW1lX2ZpbHRlcnMgKGNoYXIgKmNvbW1hbmQsIGNoYXIgKiphcmd2LCBpbnQgYXJn YykKLSt7Ci0rICBpZiAoYXJnYyAhPSAwKQotKyAgICBlcnJvciAoXygiLWVuYWJsZS1mcmFtZS1m aWx0ZXJzOiBubyBhcmd1bWVudHMgYWxsb3dlZCIpKTsKLSsgIGZyYW1lX2ZpbHRlcnMgPSAxOwot K30KLSsKLSsvKiBQYXJzZSB0aGUgLS1uby1mcmFtZS1maWx0ZXJzIG9wdGlvbiBpbiBjb21tYW5k cyB3aGVyZSB3ZSBjYW5ub3QgdXNlCi0rICAgbWlfZ2V0b3B0LiAqLwotK3N0YXRpYyBpbnQKLStw YXJzZV9ub19mcmFtZXNfb3B0aW9uIChjb25zdCBjaGFyICphcmcpCi0rewotKyAgaWYgKGFyZyAm JiAoc3RyY21wIChhcmcsICItLW5vLWZyYW1lLWZpbHRlcnMiKSA9PSAwKSkKLSsgICAgcmV0dXJu IDE7Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci0rCi0gLyogUHJpbnQgYSBsaXN0IG9mIHRoZSBzdGFj ayBmcmFtZXMuICBBcmdzIGNhbiBiZSBub25lLCBpbiB3aGljaCBjYXNlCi0gICAgd2Ugd2FudCB0 byBwcmludCB0aGUgd2hvbGUgYmFja3RyYWNlLCBvciBhIHBhaXIgb2YgbnVtYmVycwotICAgIHNw ZWNpZnlpbmcgdGhlIGZyYW1lIG51bWJlcnMgYXQgd2hpY2ggdG8gc3RhcnQgYW5kIHN0b3AgdGhl Ci1AQCAtNTIsMTQgKzc4LDQ2IEBAIG1pX2NtZF9zdGFja19saXN0X2ZyYW1lcyAoY2hhciAqY29t bWFuZCwKLSAgIGludCBpOwotICAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBfc3RhY2s7Ci0gICBz dHJ1Y3QgZnJhbWVfaW5mbyAqZmk7Ci0rICBlbnVtIHB5X2J0X3N0YXR1cyByZXN1bHQgPSBQWV9C VF9FUlJPUjsKLSsgIGludCByYXdfYXJnID0gMDsKLSsgIGludCBvaW5kID0gMDsKLSsgIGVudW0g b3B0Ci0rICAgIHsKLSsgICAgICBOT19GUkFNRV9GSUxURVJTCi0rICAgIH07Ci0rICBzdGF0aWMg Y29uc3Qgc3RydWN0IG1pX29wdCBvcHRzW10gPQotKyAgICB7Ci0rICAgICAgeyItbm8tZnJhbWUt ZmlsdGVycyIsIE5PX0ZSQU1FX0ZJTFRFUlMsIDB9LAotKyAgICAgIHsgMCwgMCwgMCB9Ci0rICAg IH07Ci0rCi0rICAvKiBQYXJzZSBhcmd1bWVudHMuICBJbiB0aGlzIGluc3RhbmNlIHdlIGFyZSBq dXN0IGxvb2tpbmcgZm9yCi0rICAgICAtLW5vLWZyYW1lLWZpbHRlcnMuICAqLwotKyAgd2hpbGUg KDEpCi0rICAgIHsKLSsgICAgICBjaGFyICpvYXJnOwotKyAgICAgIGludCBvcHQgPSBtaV9nZXRv cHQgKCItc3RhY2stbGlzdC1mcmFtZXMiLCBhcmdjLCBhcmd2LAotKwkJCSAgIG9wdHMsICZvaW5k LCAmb2FyZyk7Ci0rICAgICAgaWYgKG9wdCA8IDApCi0rCWJyZWFrOwotKyAgICAgIHN3aXRjaCAo KGVudW0gb3B0KSBvcHQpCi0rCXsKLSsJY2FzZSBOT19GUkFNRV9GSUxURVJTOgotKwkgIHJhd19h cmcgPSBvaW5kOwotKwkgIGJyZWFrOwotKwl9Ci0rICAgIH0KLSAKLS0gIGlmIChhcmdjID4gMiB8 fCBhcmdjID09IDEpCi0tICAgIGVycm9yIChfKCItc3RhY2stbGlzdC1mcmFtZXM6IFVzYWdlOiBb RlJBTUVfTE9XIEZSQU1FX0hJR0hdIikpOwotKyAgLyogQWZ0ZXIgdGhlIGxhc3Qgb3B0aW9uIGlz IHBhcnNlZCwgdGhlcmUgc2hvdWxkIGVpdGhlciBiZSBsb3cgLQotKyAgICAgaGlnaCByYW5nZSwg b3Igbm8gZnVydGhlciBhcmd1bWVudHMuICAqLwotKyAgaWYgKChhcmdjIC0gb2luZCAhPSAwKSAm JiAoYXJnYyAtIG9pbmQgIT0gMikpCi0rICAgIGVycm9yIChfKCItc3RhY2stbGlzdC1mcmFtZXM6 IFVzYWdlOiBbLS1uby1mcmFtZS1maWx0ZXJzXSBbRlJBTUVfTE9XIEZSQU1FX0hJR0hdIikpOwot IAotLSAgaWYgKGFyZ2MgPT0gMikKLSsgIC8qIElmIHRoZXJlIGlzIGEgcmFuZ2UsIHNldCBpdC4g ICovCi0rICBpZiAoYXJnYyAtIG9pbmQgPT0gMikKLSAgICAgewotLSAgICAgIGZyYW1lX2xvdyA9 IGF0b2kgKGFyZ3ZbMF0pOwotLSAgICAgIGZyYW1lX2hpZ2ggPSBhdG9pIChhcmd2WzFdKTsKLSsg ICAgICBmcmFtZV9sb3cgPSBhdG9pIChhcmd2WzAgKyBvaW5kXSk7Ci0rICAgICAgZnJhbWVfaGln aCA9IGF0b2kgKGFyZ3ZbMSArIG9pbmRdKTsKLSAgICAgfQotICAgZWxzZQotICAgICB7Ci1AQCAt ODEsMTYgKzEzOSwzNyBAQCBtaV9jbWRfc3RhY2tfbGlzdF9mcmFtZXMgKGNoYXIgKmNvbW1hbmQs Ci0gCi0gICBjbGVhbnVwX3N0YWNrID0gbWFrZV9jbGVhbnVwX3VpX291dF9saXN0X2JlZ2luX2Vu ZCAoY3VycmVudF91aW91dCwgInN0YWNrIik7Ci0gCi0tICAvKiBOb3cgbGV0J3MgcHJpbnQgdGhl IGZyYW1lcyB1cCB0byBmcmFtZV9oaWdoLCBvciB1bnRpbCB0aGVyZSBhcmUKLS0gICAgIGZyYW1l cyBpbiB0aGUgc3RhY2suICAqLwotLSAgZm9yICg7Ci0tICAgICAgIGZpICYmIChpIDw9IGZyYW1l X2hpZ2ggfHwgZnJhbWVfaGlnaCA9PSAtMSk7Ci0tICAgICAgIGkrKywgZmkgPSBnZXRfcHJldl9m cmFtZSAoZmkpKQotKyAgaWYgKCEgcmF3X2FyZyAmJiBmcmFtZV9maWx0ZXJzKQotICAgICB7Ci0t ICAgICAgUVVJVDsKLS0gICAgICAvKiBQcmludCB0aGUgbG9jYXRpb24gYW5kIHRoZSBhZGRyZXNz IGFsd2F5cywgZXZlbiBmb3IgbGV2ZWwgMC4KLS0gICAgICAgICBJZiBhcmdzIGlzIDAsIGRvbid0 IHByaW50IHRoZSBhcmd1bWVudHMuICAqLwotLSAgICAgIHByaW50X2ZyYW1lX2luZm8gKGZpLCAx LCBMT0NfQU5EX0FERFJFU1MsIDAgLyogYXJncyAqLyApOwotKyAgICAgIGludCBmbGFncyA9IFBS SU5UX0xFVkVMIHwgUFJJTlRfRlJBTUVfSU5GTzsKLSsgICAgICBpbnQgcHlfZnJhbWVfbG93ID0g ZnJhbWVfbG93OwotKwotKyAgICAgIC8qIFdlIGNhbm5vdCBwYXNzIC0xIHRvIGZyYW1lX2xvdywg YXMgdGhhdCB3b3VsZCBzaWduaWZ5IGEKLSsgICAgICByZWxhdGl2ZSBiYWNrdHJhY2UgZnJvbSB0 aGUgdGFpbCBvZiB0aGUgc3RhY2suICBTbywgaW4gdGhlIGNhc2UKLSsgICAgICBvZiBmcmFtZV9s b3cgPT0gLTEsIGFzc2lnbiBhbmQgaW5jcmVtZW50IGl0LiAgKi8KLSsgICAgICBpZiAocHlfZnJh bWVfbG93ID09IC0xKQotKwlweV9mcmFtZV9sb3crKzsKLSsKLSsgICAgICByZXN1bHQgPSBhcHBs eV9mcmFtZV9maWx0ZXIgKGdldF9jdXJyZW50X2ZyYW1lICgpLCBmbGFncywKLSsJCQkJICAgTk9f VkFMVUVTLCAgY3VycmVudF91aW91dCwKLSsJCQkJICAgcHlfZnJhbWVfbG93LCBmcmFtZV9oaWdo KTsKLSsgICAgfQotKwotKyAgLyogUnVuIHRoZSBpbmJ1aWx0IGJhY2t0cmFjZSBpZiB0aGVyZSBh cmUgbm8gZmlsdGVycyByZWdpc3RlcmVkLCBvcgotKyAgICAgaWYgIi0tbm8tZnJhbWUtZmlsdGVy cyIgaGFzIGJlZW4gc3BlY2lmaWVkIGZyb20gdGhlIGNvbW1hbmQuICAqLwotKyAgaWYgKCEgZnJh bWVfZmlsdGVycyB8fCByYXdfYXJnICB8fCByZXN1bHQgPT0gUFlfQlRfTk9fRklMVEVSUykKLSsg ICAgewotKyAgICAgIC8qIE5vdyBsZXQncyBwcmludCB0aGUgZnJhbWVzIHVwIHRvIGZyYW1lX2hp Z2gsIG9yIHVudGlsIHRoZXJlIGFyZQotKwkgZnJhbWVzIGluIHRoZSBzdGFjay4gICovCi0rICAg ICAgZm9yICg7Ci0rCSAgIGZpICYmIChpIDw9IGZyYW1lX2hpZ2ggfHwgZnJhbWVfaGlnaCA9PSAt MSk7Ci0rCSAgIGkrKywgZmkgPSBnZXRfcHJldl9mcmFtZSAoZmkpKQotKwl7Ci0rCSAgUVVJVDsK LSsJICAvKiBQcmludCB0aGUgbG9jYXRpb24gYW5kIHRoZSBhZGRyZXNzIGFsd2F5cywgZXZlbiBm b3IgbGV2ZWwgMC4KLSsJICAgICBJZiBhcmdzIGlzIDAsIGRvbid0IHByaW50IHRoZSBhcmd1bWVu dHMuICAqLwotKwkgIHByaW50X2ZyYW1lX2luZm8gKGZpLCAxLCBMT0NfQU5EX0FERFJFU1MsIDAg LyogYXJncyAqLyApOwotKwl9Ci0gICAgIH0KLSAKLSAgIGRvX2NsZWFudXBzIChjbGVhbnVwX3N0 YWNrKTsKLUBAIC0xNDcsMTMgKzIyNiwzNCBAQCB2b2lkCi0gbWlfY21kX3N0YWNrX2xpc3RfbG9j YWxzIChjaGFyICpjb21tYW5kLCBjaGFyICoqYXJndiwgaW50IGFyZ2MpCi0gewotICAgc3RydWN0 IGZyYW1lX2luZm8gKmZyYW1lOwotKyAgaW50IHJhd19hcmcgPSAwOwotKyAgZW51bSBweV9idF9z dGF0dXMgcmVzdWx0ID0gUFlfQlRfRVJST1I7Ci0rICBpbnQgcHJpbnRfdmFsdWU7Ci0rCi0rICBp ZiAoYXJnYyA+IDApCi0rICAgIHJhd19hcmcgPSBwYXJzZV9ub19mcmFtZXNfb3B0aW9uIChhcmd2 WzBdKTsKLSsKLSsgIGlmIChhcmdjIDwgMSB8fCBhcmdjID4gMiB8fCAoYXJnYyA9PSAyICYmICEg cmF3X2FyZykKLSsgICAgICB8fCAoYXJnYyA9PSAxICYmIHJhd19hcmcpKQotKyAgICBlcnJvciAo XygiLXN0YWNrLWxpc3QtbG9jYWxzOiBVc2FnZTogWy0tbm8tZnJhbWUtZmlsdGVyc10gUFJJTlRf VkFMVUVTIikpOwotIAotLSAgaWYgKGFyZ2MgIT0gMSkKLS0gICAgZXJyb3IgKF8oIi1zdGFjay1s aXN0LWxvY2FsczogVXNhZ2U6IFBSSU5UX1ZBTFVFUyIpKTsKLS0KLS0gICBmcmFtZSA9IGdldF9z ZWxlY3RlZF9mcmFtZSAoTlVMTCk7Ci0rICBmcmFtZSA9IGdldF9zZWxlY3RlZF9mcmFtZSAoTlVM TCk7Ci0rICBwcmludF92YWx1ZSA9IHBhcnNlX3ByaW50X3ZhbHVlcyAoYXJndltyYXdfYXJnXSk7 Ci0gCi0tICAgbGlzdF9hcmdzX29yX2xvY2FscyAobG9jYWxzLCBwYXJzZV9wcmludF92YWx1ZXMg KGFyZ3ZbMF0pLCBmcmFtZSk7Ci0rICAgaWYgKCEgcmF3X2FyZyAmJiBmcmFtZV9maWx0ZXJzKQot KyAgICAgewotKyAgICAgICBpbnQgZmxhZ3MgPSBQUklOVF9MRVZFTCB8IFBSSU5UX0xPQ0FMUzsK LSsKLSsgICAgICAgcmVzdWx0ID0gYXBwbHlfZnJhbWVfZmlsdGVyIChmcmFtZSwgZmxhZ3MsIHBy aW50X3ZhbHVlLAotKwkJCQkgICAgY3VycmVudF91aW91dCwgMCwgMCk7Ci0rICAgICB9Ci0rCi0r ICAgLyogUnVuIHRoZSBpbmJ1aWx0IGJhY2t0cmFjZSBpZiB0aGVyZSBhcmUgbm8gZmlsdGVycyBy ZWdpc3RlcmVkLCBvcgotKyAgICAgIGlmICItLW5vLWZyYW1lLWZpbHRlcnMiIGhhcyBiZWVuIHNw ZWNpZmllZCBmcm9tIHRoZSBjb21tYW5kLiAgKi8KLSsgICBpZiAoISBmcmFtZV9maWx0ZXJzIHx8 IHJhd19hcmcgIHx8IHJlc3VsdCA9PSBQWV9CVF9OT19GSUxURVJTKQotKyAgICAgewotKyAgICAg ICBsaXN0X2FyZ3Nfb3JfbG9jYWxzIChsb2NhbHMsIHByaW50X3ZhbHVlLCBmcmFtZSk7Ci0rICAg ICB9Ci0gfQotIAotIC8qIFByaW50IGEgbGlzdCBvZiB0aGUgYXJndW1lbnRzIGZvciB0aGUgY3Vy cmVudCBmcmFtZS4gIFdpdGggYXJndW1lbnQKLUBAIC0xNzAsMTUgKzI3MCwyMCBAQCBtaV9jbWRf c3RhY2tfbGlzdF9hcmdzIChjaGFyICpjb21tYW5kLCBjCi0gICBzdHJ1Y3QgY2xlYW51cCAqY2xl YW51cF9zdGFja19hcmdzOwotICAgZW51bSBwcmludF92YWx1ZXMgcHJpbnRfdmFsdWVzOwotICAg c3RydWN0IHVpX291dCAqdWlvdXQgPSBjdXJyZW50X3Vpb3V0OwotKyAgaW50IHJhd19hcmcgPSAw OwotKyAgZW51bSBweV9idF9zdGF0dXMgcmVzdWx0ID0gUFlfQlRfRVJST1I7Ci0gCi0tICBpZiAo YXJnYyA8IDEgfHwgYXJnYyA+IDMgfHwgYXJnYyA9PSAyKQotLSAgICBlcnJvciAoXygiLXN0YWNr LWxpc3QtYXJndW1lbnRzOiBVc2FnZTogIgotLQkgICAgICJQUklOVF9WQUxVRVMgW0ZSQU1FX0xP VyBGUkFNRV9ISUdIXSIpKTsKLSsgIGlmIChhcmdjID4gMCkKLSsgICAgcmF3X2FyZyA9IHBhcnNl X25vX2ZyYW1lc19vcHRpb24gKGFyZ3ZbMF0pOwotIAotLSAgaWYgKGFyZ2MgPT0gMykKLSsgIGlm IChhcmdjIDwgMSB8fCAoYXJnYyA+IDMgJiYgISByYXdfYXJnKSB8fCAoYXJnYyA9PSAyICYmICEg cmF3X2FyZykpCi0rICAgIGVycm9yIChfKCItc3RhY2stbGlzdC1hcmd1bWVudHM6IFVzYWdlOiAi IFwKLSsJICAgICAiWy0tbm8tZnJhbWUtZmlsdGVyc10gUFJJTlRfVkFMVUVTIFtGUkFNRV9MT1cg RlJBTUVfSElHSF0iKSk7Ci0rCi0rICBpZiAoYXJnYyA+PSAzKQotICAgICB7Ci0tICAgICAgZnJh bWVfbG93ID0gYXRvaSAoYXJndlsxXSk7Ci0tICAgICAgZnJhbWVfaGlnaCA9IGF0b2kgKGFyZ3Zb Ml0pOwotKyAgICAgIGZyYW1lX2xvdyA9IGF0b2kgKGFyZ3ZbMSArIHJhd19hcmddKTsKLSsgICAg ICBmcmFtZV9oaWdoID0gYXRvaSAoYXJndlsyICsgcmF3X2FyZ10pOwotICAgICB9Ci0gICBlbHNl Ci0gICAgIHsKLUBAIC0xODgsNyArMjkzLDcgQEAgbWlfY21kX3N0YWNrX2xpc3RfYXJncyAoY2hh ciAqY29tbWFuZCwgYwotICAgICAgIGZyYW1lX2hpZ2ggPSAtMTsKLSAgICAgfQotIAotLSAgcHJp bnRfdmFsdWVzID0gcGFyc2VfcHJpbnRfdmFsdWVzIChhcmd2WzBdKTsKLSsgIHByaW50X3ZhbHVl cyA9IHBhcnNlX3ByaW50X3ZhbHVlcyAoYXJndltyYXdfYXJnXSk7Ci0gCi0gICAvKiBMZXQncyBw b3NpdGlvbiBmaSBvbiB0aGUgZnJhbWUgYXQgd2hpY2ggdG8gc3RhcnQgdGhlCi0gICAgICBkaXNw bGF5LiBDb3VsZCBiZSB0aGUgaW5uZXJtb3N0IGZyYW1lIGlmIHRoZSB3aG9sZSBzdGFjayBuZWVk cwotQEAgLTIwMywyMSArMzA4LDQxIEBAIG1pX2NtZF9zdGFja19saXN0X2FyZ3MgKGNoYXIgKmNv bW1hbmQsIGMKLSAgIGNsZWFudXBfc3RhY2tfYXJncwotICAgICA9IG1ha2VfY2xlYW51cF91aV9v dXRfbGlzdF9iZWdpbl9lbmQgKHVpb3V0LCAic3RhY2stYXJncyIpOwotIAotLSAgLyogTm93IGxl dCdzIHByaW50IHRoZSBmcmFtZXMgdXAgdG8gZnJhbWVfaGlnaCwgb3IgdW50aWwgdGhlcmUgYXJl Ci0tICAgICBmcmFtZXMgaW4gdGhlIHN0YWNrLiAgKi8KLS0gIGZvciAoOwotLSAgICAgICBmaSAm JiAoaSA8PSBmcmFtZV9oaWdoIHx8IGZyYW1lX2hpZ2ggPT0gLTEpOwotLSAgICAgICBpKyssIGZp ID0gZ2V0X3ByZXZfZnJhbWUgKGZpKSkKLSsgIGlmICghIHJhd19hcmcgJiYgZnJhbWVfZmlsdGVy cykKLSAgICAgewotLSAgICAgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwX2ZyYW1lOwotKyAgICAg IGludCBmbGFncyA9IFBSSU5UX0xFVkVMIHwgUFJJTlRfQVJHUzsKLSsgICAgICBpbnQgcHlfZnJh bWVfbG93ID0gZnJhbWVfbG93OwotIAotLSAgICAgIFFVSVQ7Ci0tICAgICAgY2xlYW51cF9mcmFt ZSA9IG1ha2VfY2xlYW51cF91aV9vdXRfdHVwbGVfYmVnaW5fZW5kICh1aW91dCwgImZyYW1lIik7 Ci0tICAgICAgdWlfb3V0X2ZpZWxkX2ludCAodWlvdXQsICJsZXZlbCIsIGkpOwotLSAgICAgIGxp c3RfYXJnc19vcl9sb2NhbHMgKGFyZ3VtZW50cywgcHJpbnRfdmFsdWVzLCBmaSk7Ci0tICAgICAg ZG9fY2xlYW51cHMgKGNsZWFudXBfZnJhbWUpOwotKyAgICAgIC8qIFdlIGNhbm5vdCBwYXNzIC0x IHRvIGZyYW1lX2xvdywgYXMgdGhhdCB3b3VsZCBzaWduaWZ5IGEKLSsgICAgICByZWxhdGl2ZSBi YWNrdHJhY2UgZnJvbSB0aGUgdGFpbCBvZiB0aGUgc3RhY2suICBTbywgaW4gdGhlIGNhc2UKLSsg ICAgICBvZiBmcmFtZV9sb3cgPT0gLTEsIGFzc2lnbiBhbmQgaW5jcmVtZW50IGl0LiAgKi8KLSsg ICAgICBpZiAocHlfZnJhbWVfbG93ID09IC0xKQotKwlweV9mcmFtZV9sb3crKzsKLSsKLSsgICAg ICByZXN1bHQgPSBhcHBseV9mcmFtZV9maWx0ZXIgKGdldF9jdXJyZW50X2ZyYW1lICgpLCBmbGFn cywKLSsJCQkJICAgcHJpbnRfdmFsdWVzLCBjdXJyZW50X3Vpb3V0LAotKwkJCQkgICBweV9mcmFt ZV9sb3csIGZyYW1lX2hpZ2gpOwotICAgICB9Ci0gCi0rICAgICAvKiBSdW4gdGhlIGluYnVpbHQg YmFja3RyYWNlIGlmIHRoZXJlIGFyZSBubyBmaWx0ZXJzIHJlZ2lzdGVyZWQsIG9yCi0rICAgICAg aWYgIi0tbm8tZnJhbWUtZmlsdGVycyIgaGFzIGJlZW4gc3BlY2lmaWVkIGZyb20gdGhlIGNvbW1h bmQuICAqLwotKyAgIGlmICghIGZyYW1lX2ZpbHRlcnMgfHwgcmF3X2FyZyAgfHwgcmVzdWx0ID09 IFBZX0JUX05PX0ZJTFRFUlMpCi0rICAgICB7Ci0rICAgICAgLyogTm93IGxldCdzIHByaW50IHRo ZSBmcmFtZXMgdXAgdG8gZnJhbWVfaGlnaCwgb3IgdW50aWwgdGhlcmUgYXJlCi0rCSBmcmFtZXMg aW4gdGhlIHN0YWNrLiAgKi8KLSsgICAgICBmb3IgKDsKLSsJICAgZmkgJiYgKGkgPD0gZnJhbWVf aGlnaCB8fCBmcmFtZV9oaWdoID09IC0xKTsKLSsJICAgaSsrLCBmaSA9IGdldF9wcmV2X2ZyYW1l IChmaSkpCi0rCXsKLSsJICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cF9mcmFtZTsKLSsKLSsJICBR VUlUOwotKwkgIGNsZWFudXBfZnJhbWUgPSBtYWtlX2NsZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2lu X2VuZCAodWlvdXQsICJmcmFtZSIpOwotKwkgIHVpX291dF9maWVsZF9pbnQgKHVpb3V0LCAibGV2 ZWwiLCBpKTsKLSsJICBsaXN0X2FyZ3Nfb3JfbG9jYWxzIChhcmd1bWVudHMsIHByaW50X3ZhbHVl cywgZmkpOwotKwkgIGRvX2NsZWFudXBzIChjbGVhbnVwX2ZyYW1lKTsKLSsJfQotKyAgICB9Ci0g ICBkb19jbGVhbnVwcyAoY2xlYW51cF9zdGFja19hcmdzKTsKLSB9Ci0gCi1AQCAtMjMwLDEzICsz NTUsMzUgQEAgdm9pZAotIG1pX2NtZF9zdGFja19saXN0X3ZhcmlhYmxlcyAoY2hhciAqY29tbWFu ZCwgY2hhciAqKmFyZ3YsIGludCBhcmdjKQotIHsKLSAgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFt ZTsKLSsgIGludCByYXdfYXJnID0gMDsKLSsgIGVudW0gcHlfYnRfc3RhdHVzIHJlc3VsdCA9IFBZ X0JUX0VSUk9SOwotKyAgaW50IHByaW50X3ZhbHVlOwotKwotKyAgaWYgKGFyZ2MgPiAwKQotKyAg ICByYXdfYXJnID0gcGFyc2Vfbm9fZnJhbWVzX29wdGlvbiAoYXJndlswXSk7Ci0rCi0rICBpZiAo YXJnYyA8IDEgfHwgYXJnYyA+IDIgfHwgKGFyZ2MgPT0gMiAmJiAhIHJhd19hcmcpCi0rICAgICAg fHwgKGFyZ2MgPT0gMSAmJiByYXdfYXJnKSkKLSsgICAgZXJyb3IgKF8oIi1zdGFjay1saXN0LXZh cmlhYmxlczogVXNhZ2U6ICIgXAotKwkgICAgICJbLS1uby1mcmFtZS1maWx0ZXJzXSBQUklOVF9W QUxVRVMiKSk7Ci0gCi0tICBpZiAoYXJnYyAhPSAxKQotLSAgICBlcnJvciAoXygiVXNhZ2U6IFBS SU5UX1ZBTFVFUyIpKTsKLS0KLS0gIGZyYW1lID0gZ2V0X3NlbGVjdGVkX2ZyYW1lIChOVUxMKTsK LSsgICBmcmFtZSA9IGdldF9zZWxlY3RlZF9mcmFtZSAoTlVMTCk7Ci0rICAgcHJpbnRfdmFsdWUg PSBwYXJzZV9wcmludF92YWx1ZXMgKGFyZ3ZbcmF3X2FyZ10pOwotIAotLSAgbGlzdF9hcmdzX29y X2xvY2FscyAoYWxsLCBwYXJzZV9wcmludF92YWx1ZXMgKGFyZ3ZbMF0pLCBmcmFtZSk7Ci0rICAg aWYgKCEgcmF3X2FyZyAmJiBmcmFtZV9maWx0ZXJzKQotKyAgICAgewotKyAgICAgICBpbnQgZmxh Z3MgPSBQUklOVF9MRVZFTCB8IFBSSU5UX0FSR1MgfCBQUklOVF9MT0NBTFM7Ci0rCi0rICAgICAg IHJlc3VsdCA9IGFwcGx5X2ZyYW1lX2ZpbHRlciAoZnJhbWUsIGZsYWdzLCBwcmludF92YWx1ZSwK LSsJCQkJICAgIGN1cnJlbnRfdWlvdXQsIDAsIDApOwotKyAgICAgfQotKwotKyAgIC8qIFJ1biB0 aGUgaW5idWlsdCBiYWNrdHJhY2UgaWYgdGhlcmUgYXJlIG5vIGZpbHRlcnMgcmVnaXN0ZXJlZCwg b3IKLSsgICAgICBpZiAiLS1uby1mcmFtZS1maWx0ZXJzIiBoYXMgYmVlbiBzcGVjaWZpZWQgZnJv bSB0aGUgY29tbWFuZC4gICovCi0rICAgaWYgKCEgZnJhbWVfZmlsdGVycyB8fCByYXdfYXJnICB8 fCByZXN1bHQgPT0gUFlfQlRfTk9fRklMVEVSUykKLSsgICAgIHsKLSsgICAgICAgbGlzdF9hcmdz X29yX2xvY2FscyAoYWxsLCBwcmludF92YWx1ZSwgZnJhbWUpOwotKyAgICAgfQotIH0KLSAKLSAv KiBQcmludCBzaW5nbGUgbG9jYWwgb3IgYXJndW1lbnQuICBBUkcgbXVzdCBiZSBhbHJlYWR5IHJl YWQgaW4uICBGb3IKLUluZGV4OiBnZGItNy42L2dkYi9taS9taS1jbWRzLmMKLT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy42Lm9yaWcvZ2RiL21pL21pLWNtZHMuYwkyMDEzLTA2LTEwIDE0OjMxOjAyLjcz MDA4NDY1MiArMDIwMAotKysrIGdkYi03LjYvZ2RiL21pL21pLWNtZHMuYwkyMDEzLTA2LTEwIDE0 OjMxOjA4LjM2NTA4MjQzNyArMDIwMAotQEAgLTg2LDYgKzg2LDcgQEAgc3RhdGljIHN0cnVjdCBt aV9jbWQgbWlfY21kc1tdID0KLSAJCSBtaV9jbWRfZGF0YV93cml0ZV9yZWdpc3Rlcl92YWx1ZXMp LAotICAgREVGX01JX0NNRF9NSSAoImVuYWJsZS10aW1pbmdzIiwgbWlfY21kX2VuYWJsZV90aW1p bmdzKSwKLSAgIERFRl9NSV9DTURfTUkgKCJlbmFibGUtcHJldHR5LXByaW50aW5nIiwgbWlfY21k X2VuYWJsZV9wcmV0dHlfcHJpbnRpbmcpLAotKyAgREVGX01JX0NNRF9NSSAoImVuYWJsZS1mcmFt ZS1maWx0ZXJzIiwgbWlfY21kX2VuYWJsZV9mcmFtZV9maWx0ZXJzKSwKLSAgIERFRl9NSV9DTURf TUkgKCJlbnZpcm9ubWVudC1jZCIsIG1pX2NtZF9lbnZfY2QpLAotICAgREVGX01JX0NNRF9NSSAo ImVudmlyb25tZW50LWRpcmVjdG9yeSIsIG1pX2NtZF9lbnZfZGlyKSwKLSAgIERFRl9NSV9DTURf TUkgKCJlbnZpcm9ubWVudC1wYXRoIiwgbWlfY21kX2Vudl9wYXRoKSwKLUluZGV4OiBnZGItNy42 L2dkYi9taS9taS1jbWRzLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL21pL21p LWNtZHMuaAkyMDEzLTA2LTEwIDE0OjMxOjAyLjczMDA4NDY1MiArMDIwMAotKysrIGdkYi03LjYv Z2RiL21pL21pLWNtZHMuaAkyMDEzLTA2LTEwIDE0OjMxOjA4LjM2NTA4MjQzNyArMDIwMAotQEAg LTExOCw2ICsxMTgsNyBAQCBleHRlcm4gbWlfY21kX2FyZ3ZfZnR5cGUgbWlfY21kX3Zhcl9zaG93 Ci0gZXh0ZXJuIG1pX2NtZF9hcmd2X2Z0eXBlIG1pX2NtZF92YXJfc2hvd19mb3JtYXQ7Ci0gZXh0 ZXJuIG1pX2NtZF9hcmd2X2Z0eXBlIG1pX2NtZF92YXJfdXBkYXRlOwotIGV4dGVybiBtaV9jbWRf YXJndl9mdHlwZSBtaV9jbWRfZW5hYmxlX3ByZXR0eV9wcmludGluZzsKLStleHRlcm4gbWlfY21k X2FyZ3ZfZnR5cGUgbWlfY21kX2VuYWJsZV9mcmFtZV9maWx0ZXJzOwotIGV4dGVybiBtaV9jbWRf YXJndl9mdHlwZSBtaV9jbWRfdmFyX3NldF91cGRhdGVfcmFuZ2U7Ci0gCi0gLyogRGVzY3JpcHRp b24gb2YgYSBzaW5nbGUgY29tbWFuZC4gICovCi1JbmRleDogZ2RiLTcuNi9nZGIvcHl0aG9uL3B5 LWZyYW1lZmlsdGVyLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDow MDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy42L2dkYi9weXRob24vcHktZnJhbWVmaWx0 ZXIuYwkyMDEzLTA2LTEwIDE0OjMxOjA4LjM2NjA4MjQzNyArMDIwMAotQEAgLTAsMCArMSwxNTI4 IEBACi0rLyogUHl0aG9uIGZyYW1lIGZpbHRlcnMKLSsKLSsgICBDb3B5cmlnaHQgKEMpIDIwMTMg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQg b2YgR0RCLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws Ci0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsK LSsjaW5jbHVkZSAiZGVmcy5oIgotKyNpbmNsdWRlICJvYmpmaWxlcy5oIgotKyNpbmNsdWRlICJz eW10YWIuaCIKLSsjaW5jbHVkZSAibGFuZ3VhZ2UuaCIKLSsjaW5jbHVkZSAiZXhjZXB0aW9ucy5o IgotKyNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCi0rI2luY2x1ZGUgInB5dGhvbi5oIgotKyNpbmNs dWRlICJ1aS1vdXQuaCIKLSsjaW5jbHVkZSAidmFscHJpbnQuaCIKLSsjaW5jbHVkZSAiYW5ub3Rh dGUuaCIKLSsjaW5jbHVkZSAiaGFzaHRhYi5oIgotKyNpbmNsdWRlICJkZW1hbmdsZS5oIgotKyNp bmNsdWRlICJtaS9taS1jbWRzLmgiCi0rI2luY2x1ZGUgInB5dGhvbi1pbnRlcm5hbC5oIgotKwot K2VudW0gbWlfcHJpbnRfdHlwZXMKLSt7Ci0rICBNSV9QUklOVF9BUkdTLAotKyAgTUlfUFJJTlRf TE9DQUxTCi0rfTsKLSsKLSsvKiBIZWxwZXIgIGZ1bmN0aW9uICB0byAgZXh0cmFjdCAgYSAgc3lt Ym9sLCBhICBuYW1lICBhbmQgIGEgIGxhbmd1YWdlCi0rICAgZGVmaW5pdGlvbiBmcm9tIGEgUHl0 aG9uIG9iamVjdCB0aGF0IGNvbmZvcm1zIHRvIHRoZSAiU3ltYm9sIFZhbHVlIgotKyAgIGludGVy ZmFjZS4gIE9CSiAgaXMgdGhlIFB5dGhvbiAgb2JqZWN0IHRvIGV4dHJhY3QgdGhlICB2YWx1ZXMg ZnJvbS4KLSsgICBOQU1FIGlzIGEgIHBhc3MtdGhyb3VnaCBhcmd1bWVudCB3aGVyZSB0aGUgbmFt ZSBvZiAgdGhlIHN5bWJvbCB3aWxsCi0rICAgYmUgd3JpdHRlbi4gIE5BTUUgaXMgYWxsb2NhdGVk IGluICB0aGlzIGZ1bmN0aW9uLCBidXQgdGhlIGNhbGxlciBpcwotKyAgIHJlc3BvbnNpYmxlIGZv ciBjbGVhbiB1cC4gIFNZTSBpcyBhIHBhc3MtdGhyb3VnaCBhcmd1bWVudCB3aGVyZSB0aGUKLSsg ICBzeW1ib2wgd2lsbCBiZSB3cml0dGVuLiAgSW4gdGhlIGNhc2Ugb2YgdGhlIEFQSSByZXR1cm5p bmcgYSBzdHJpbmcsCi0rICAgdGhpcyB3aWxsIGJlIHNldCB0byBOVUxMLiAgTEFOR1VBR0UgaXMg YWxzbyBhIHBhc3MtdGhyb3VnaCBhcmd1bWVudAotKyAgIGRlbm90aW5nIHRoZSBsYW5ndWFnZSBh dHRyaWJ1dGVkIHRvIHRoZSBTeW1ib2wuICBJbiB0aGUgY2FzZSBvZiBTWU0KLSsgICBiZWluZyAg TlVMTCwgdGhpcyAgd2lsbCBiZSAgc2V0IHRvICB0aGUgY3VycmVudCAgbGFuZ3VhZ2UuICBSZXR1 cm5zCi0rICAgUFlfQlRfRVJST1Igb24gZXJyb3Igd2l0aCB0aGUgYXBwcm9wcmlhdGUgUHl0aG9u IGV4Y2VwdGlvbiBzZXQsIGFuZAotKyAgIFBZX0JUX09LIG9uIHN1Y2Nlc3MuICAqLwotKwotK3N0 YXRpYyBlbnVtIHB5X2J0X3N0YXR1cwotK2V4dHJhY3Rfc3ltIChQeU9iamVjdCAqb2JqLCBjaGFy ICoqbmFtZSwgc3RydWN0IHN5bWJvbCAqKnN5bSwKLSsJICAgICBjb25zdCBzdHJ1Y3QgbGFuZ3Vh Z2VfZGVmbiAqKmxhbmd1YWdlKQotK3sKLSsgIFB5T2JqZWN0ICpyZXN1bHQgPSBQeU9iamVjdF9D YWxsTWV0aG9kIChvYmosICJzeW1ib2wiLCBOVUxMKTsKLSsKLSsgIGlmIChyZXN1bHQgPT0gTlVM TCkKLSsgICAgcmV0dXJuIFBZX0JUX0VSUk9SOwotKwotKyAgLyogRm9yICdzeW1ib2wnIGNhbGxi YWNrLCB0aGUgZnVuY3Rpb24gY2FuIHJldHVybiBhIHN5bWJvbCBvciBhCi0rICAgICBzdHJpbmcu ICAqLwotKyAgaWYgKGdkYnB5X2lzX3N0cmluZyAocmVzdWx0KSkKLSsgICAgewotKyAgICAgICpu YW1lID0gcHl0aG9uX3N0cmluZ190b19ob3N0X3N0cmluZyAocmVzdWx0KTsKLSsgICAgICBQeV9E RUNSRUYgKHJlc3VsdCk7Ci0rCi0rICAgICAgaWYgKCpuYW1lID09IE5VTEwpCi0rCXJldHVybiBQ WV9CVF9FUlJPUjsKLSsgICAgICAvKiBJZiB0aGUgQVBJIHJldHVybnMgYSBzdHJpbmcgKGFuZCBu b3QgYSBzeW1ib2wpLCB0aGVuIHRoZXJlIGlzCi0rCW5vIHN5bWJvbCBkZXJpdmVkIGxhbmd1YWdl IGF2YWlsYWJsZSBhbmQgdGhlIGZyYW1lIGZpbHRlciBoYXMKLSsJZWl0aGVyIG92ZXJyaWRkZW4g dGhlIHN5bWJvbCB3aXRoIGEgc3RyaW5nLCBvciBzdXBwbGllZCBhCi0rCWVudGlyZWx5IHN5bnRo ZXRpYyBzeW1ib2wvdmFsdWUgcGFpcmluZy4gIEluIHRoYXQgY2FzZSwgdXNlCi0rCXB5dGhvbl9s YW5ndWFnZS4gICovCi0rICAgICAgKmxhbmd1YWdlID0gcHl0aG9uX2xhbmd1YWdlOwotKyAgICAg ICpzeW0gPSBOVUxMOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICAvKiBUaGlzIHR5 cGUgY2hlY2tzICdyZXN1bHQnIGR1cmluZyB0aGUgY29udmVyc2lvbiBzbyB3ZQotKwkganVzdCBj YWxsIGl0IHVuY29uZGl0aW9uYWxseSBhbmQgY2hlY2sgdGhlIHJldHVybi4gICovCi0rICAgICAg KnN5bSA9IHN5bWJvbF9vYmplY3RfdG9fc3ltYm9sIChyZXN1bHQpOwotKwotKyAgICAgIFB5X0RF Q1JFRiAocmVzdWx0KTsKLSsKLSsgICAgICBpZiAoKnN5bSA9PSBOVUxMKQotKwl7Ci0rCSAgUHlF cnJfU2V0U3RyaW5nIChQeUV4Y19SdW50aW1lRXJyb3IsCi0rCQkJICAgXygiVW5leHBlY3RlZCB2 YWx1ZS4gIEV4cGVjdGluZyBhICIKLSsJCQkgICAgICJnZGIuU3ltYm9sIG9yIGEgUHl0aG9uIHN0 cmluZy4iKSk7Ci0rCSAgcmV0dXJuIFBZX0JUX0VSUk9SOwotKwl9Ci0rCi0rICAgICAgLyogRHVw bGljYXRlIHRoZSBzeW1ib2wgbmFtZSwgc28gdGhlIGNhbGxlciBoYXMgY29uc2lzdGVuY3kKLSsJ IGluIGdhcmJhZ2UgY29sbGVjdGlvbi4gICovCi0rICAgICAgKm5hbWUgPSB4c3RyZHVwIChTWU1C T0xfUFJJTlRfTkFNRSAoKnN5bSkpOwotKwotKyAgICAgIC8qIElmIGEgc3ltYm9sIGlzIHNwZWNp ZmllZCBhdHRlbXB0IHRvIGRldGVybWluZSB0aGUgbGFuZ3VhZ2UKLSsJIGZyb20gdGhlIHN5bWJv bC4gIElmIG1vZGUgaXMgbm90ICJhdXRvIiwgdGhlbiB0aGUgbGFuZ3VhZ2UKLSsJIGhhcyBiZWVu IGV4cGxpY2l0bHkgc2V0LCB1c2UgdGhhdC4gICovCi0rICAgICAgaWYgKGxhbmd1YWdlX21vZGUg PT0gbGFuZ3VhZ2VfbW9kZV9hdXRvKQotKwkqbGFuZ3VhZ2UgPSBsYW5ndWFnZV9kZWYgKFNZTUJP TF9MQU5HVUFHRSAoKnN5bSkpOwotKyAgICAgIGVsc2UKLSsJKmxhbmd1YWdlID0gY3VycmVudF9s YW5ndWFnZTsKLSsgICAgfQotKwotKyAgcmV0dXJuIFBZX0JUX09LOwotK30KLSsKLSsvKiBIZWxw ZXIgZnVuY3Rpb24gdG8gZXh0cmFjdCBhIHZhbHVlIGZyb20gYW4gb2JqZWN0IHRoYXQgY29uZm9y bXMgdG8KLSsgICB0aGUgIlN5bWJvbCBWYWx1ZSIgaW50ZXJmYWNlLiAgT0JKIGlzIHRoZSBQeXRo b24gb2JqZWN0IHRvIGV4dHJhY3QKLSsgICB0aGUgdmFsdWUgZnJvbS4gIFZBTFVFIGlzIGEgcGFz cy10aHJvdWdoIGFyZ3VtZW50IHdoZXJlIHRoZSB2YWx1ZQotKyAgIHdpbGwgYmUgd3JpdHRlbi4g IElmIHRoZSBvYmplY3QgZG9lcyBub3QgaGF2ZSB0aGUgdmFsdWUgYXR0cmlidXRlLAotKyAgIG9y IHByb3ZpZGVzIHRoZSBQeXRob24gTm9uZSBmb3IgYSB2YWx1ZSwgVkFMVUUgd2lsbCBiZSBzZXQg dG8gTlVMTAotKyAgIGFuZCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGFzIHN1Y2Nlc3NmdWwu ICBSZXR1cm5zIFBZX0JUX0VSUk9SCi0rICAgb24gZXJyb3Igd2l0aCB0aGUgYXBwcm9wcmlhdGUg UHl0aG9uIGV4Y2VwdGlvbiBzZXQsIGFuZCBQWV9CVF9PSyBvbgotKyAgIHN1Y2Nlc3MuICAqLwot KwotK3N0YXRpYyBlbnVtIHB5X2J0X3N0YXR1cwotK2V4dHJhY3RfdmFsdWUgKFB5T2JqZWN0ICpv YmosIHN0cnVjdCB2YWx1ZSAqKnZhbHVlKQotK3sKLSsgIGlmIChQeU9iamVjdF9IYXNBdHRyU3Ry aW5nIChvYmosICJ2YWx1ZSIpKQotKyAgICB7Ci0rICAgICAgUHlPYmplY3QgKnZyZXN1bHQgPSBQ eU9iamVjdF9DYWxsTWV0aG9kIChvYmosICJ2YWx1ZSIsIE5VTEwpOwotKwotKyAgICAgIGlmICh2 cmVzdWx0ID09IE5VTEwpCi0rCXJldHVybiBQWV9CVF9FUlJPUjsKLSsKLSsgICAgICAvKiBUaGUg UHl0aG9uIGNvZGUgaGFzIHJldHVybmVkICdOb25lJyBmb3IgYSB2YWx1ZSwgc28gd2Ugc2V0Ci0r CSB2YWx1ZSB0byBOVUxMLiAgVGhpcyBmbGFncyB0aGF0IEdEQiBzaG91bGQgcmVhZCB0aGUKLSsJ IHZhbHVlLiAgKi8KLSsgICAgICBpZiAodnJlc3VsdCA9PSBQeV9Ob25lKQotKwl7Ci0rCSAgUHlf REVDUkVGICh2cmVzdWx0KTsKLSsJICAqdmFsdWUgPSBOVUxMOwotKwkgIHJldHVybiBQWV9CVF9P SzsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgICp2YWx1ZSA9IGNvbnZlcnRfdmFsdWVfZnJv bV9weXRob24gKHZyZXN1bHQpOwotKwkgIFB5X0RFQ1JFRiAodnJlc3VsdCk7Ci0rCi0rCSAgaWYg KCp2YWx1ZSA9PSBOVUxMKQotKwkgICAgcmV0dXJuIFBZX0JUX0VSUk9SOwotKwotKwkgIHJldHVy biBQWV9CVF9PSzsKLSsJfQotKyAgICB9Ci0rICBlbHNlCi0rICAgICp2YWx1ZSA9IE5VTEw7Ci0r Ci0rICByZXR1cm4gUFlfQlRfT0s7Ci0rfQotKwotKy8qIE1JIHByaW50cyBvbmx5IGNlcnRhaW4g dmFsdWVzIGFjY29yZGluZyB0byB0aGUgdHlwZSBvZiBzeW1ib2wgYW5kCi0rICAgYWxzbyB3aGF0 IHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQuICBTWU0gaXMgdGhlIHN5bWJvbCB0byBjaGVjaywgYW5k Ci0rICAgTUlfUFJJTlRfVFlQRVMgaXMgYW4gZW51bSBzcGVjaWZ5aW5nIHdoYXQgdGhlIHVzZXIg d2FudHMgZW1pdHRlZAotKyAgIGZvciB0aGUgTUkgY29tbWFuZCBpbiBxdWVzdGlvbi4gICovCi0r c3RhdGljIGludAotK21pX3Nob3VsZF9wcmludCAoc3RydWN0IHN5bWJvbCAqc3ltLCBlbnVtIG1p X3ByaW50X3R5cGVzIHR5cGUpCi0rewotKyAgaW50IHByaW50X21lID0gMDsKLSsKLSsgIHN3aXRj aCAoU1lNQk9MX0NMQVNTIChzeW0pKQotKyAgICB7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgIGNhc2Ug TE9DX1VOREVGOgkvKiBjYXRjaGVzIGVycm9ycyAgICAgICAgKi8KLSsgICAgY2FzZSBMT0NfQ09O U1Q6CS8qIGNvbnN0YW50ICAgICAgICAgICAgICAqLwotKyAgICBjYXNlIExPQ19UWVBFREVGOgkv KiBsb2NhbCB0eXBlZGVmICAgICAgICAgKi8KLSsgICAgY2FzZSBMT0NfTEFCRUw6CS8qIGxvY2Fs IGxhYmVsICAgICAgICAgICAqLwotKyAgICBjYXNlIExPQ19CTE9DSzoJLyogbG9jYWwgZnVuY3Rp b24gICAgICAgICovCi0rICAgIGNhc2UgTE9DX0NPTlNUX0JZVEVTOgkvKiBsb2MuIGJ5dGUgc2Vx LiAgICAgICAgKi8KLSsgICAgY2FzZSBMT0NfVU5SRVNPTFZFRDoJLyogdW5yZXNvbHZlZCBzdGF0 aWMgICAgICovCi0rICAgIGNhc2UgTE9DX09QVElNSVpFRF9PVVQ6CS8qIG9wdGltaXplZCBvdXQg ICAgICAgICAqLwotKyAgICAgIHByaW50X21lID0gMDsKLSsgICAgICBicmVhazsKLSsKLSsgICAg Y2FzZSBMT0NfQVJHOgkvKiBhcmd1bWVudCAgICAgICAgICAgICAgKi8KLSsgICAgY2FzZSBMT0Nf UkVGX0FSRzoJLyogcmVmZXJlbmNlIGFyZyAgICAgICAgICovCi0rICAgIGNhc2UgTE9DX1JFR1BB Uk1fQUREUjoJLyogaW5kaXJlY3QgcmVnaXN0ZXIgYXJnICovCi0rICAgIGNhc2UgTE9DX0xPQ0FM OgkvKiBzdGFjayBsb2NhbCAgICAgICAgICAgKi8KLSsgICAgY2FzZSBMT0NfU1RBVElDOgkvKiBz dGF0aWMgICAgICAgICAgICAgICAgKi8KLSsgICAgY2FzZSBMT0NfUkVHSVNURVI6CS8qIHJlZ2lz dGVyICAgICAgICAgICAgICAqLwotKyAgICBjYXNlIExPQ19DT01QVVRFRDoJLyogY29tcHV0ZWQg bG9jYXRpb24gICAgICovCi0rICAgICAgaWYgKHR5cGUgPT0gTUlfUFJJTlRfTE9DQUxTKQotKwlw cmludF9tZSA9ICEgU1lNQk9MX0lTX0FSR1VNRU5UIChzeW0pOwotKyAgICAgIGVsc2UKLSsJcHJp bnRfbWUgPSBTWU1CT0xfSVNfQVJHVU1FTlQgKHN5bSk7Ci0rICAgIH0KLSsgIHJldHVybiBwcmlu dF9tZTsKLSt9Ci0rCi0rLyogSGVscGVyIGZ1bmN0aW9uIHdoaWNoIG91dHB1dHMgYSB0eXBlIG5h bWUgZXh0cmFjdGVkIGZyb20gVkFMIHRvIGEKLSsgICAidHlwZSIgZmllbGQgaW4gdGhlIG91dHB1 dCBzdHJlYW0gT1VULiAgT1VUIGlzIHRoZSB1aS1vdXQgc3RydWN0dXJlCi0rICAgdGhlIHR5cGUg bmFtZSB3aWxsIGJlIG91dHB1dCB0b28sIGFuZCBWQUwgaXMgdGhlIHZhbHVlIHRoYXQgdGhlCi0r ICAgdHlwZSB3aWxsIGJlIGV4dHJhY3RlZCBmcm9tLiAgUmV0dXJucyBQWV9CVF9FUlJPUiBvbiBl cnJvciwgd2l0aAotKyAgIGFueSBHREIgZXhjZXB0aW9ucyBjb252ZXJ0ZWQgdG8gYSBQeXRob24g ZXhjZXB0aW9uLCBvciBQWV9CVF9PSyBvbgotKyAgIHN1Y2Nlc3MuICAqLwotKwotK3N0YXRpYyBl bnVtIHB5X2J0X3N0YXR1cwotK3B5X3ByaW50X3R5cGUgKHN0cnVjdCB1aV9vdXQgKm91dCwgc3Ry dWN0IHZhbHVlICp2YWwpCi0rewotKyAgdm9sYXRpbGUgc3RydWN0IGdkYl9leGNlcHRpb24gZXhj ZXB0OwotKwotKyAgVFJZX0NBVENIIChleGNlcHQsIFJFVFVSTl9NQVNLX0FMTCkKLSsgICAgewot KyAgICAgIHN0cnVjdCB0eXBlICp0eXBlOwotKyAgICAgIHN0cnVjdCB1aV9maWxlICpzdGI7Ci0r ICAgICAgc3RydWN0IGNsZWFudXAgKmNsZWFudXA7Ci0rCi0rICAgICAgc3RiID0gbWVtX2ZpbGVv cGVuICgpOwotKyAgICAgIGNsZWFudXAgPSBtYWtlX2NsZWFudXBfdWlfZmlsZV9kZWxldGUgKHN0 Yik7Ci0rICAgICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKHZhbCkpOwotKyAg ICAgIHR5cGVfcHJpbnQgKHZhbHVlX3R5cGUgKHZhbCksICIiLCBzdGIsIC0xKTsKLSsgICAgICB1 aV9vdXRfZmllbGRfc3RyZWFtIChvdXQsICJ0eXBlIiwgc3RiKTsKLSsgICAgICBkb19jbGVhbnVw cyAoY2xlYW51cCk7Ci0rICAgIH0KLSsgIGlmIChleGNlcHQucmVhc29uIDwgMCkKLSsgICAgewot KyAgICAgIGdkYnB5X2NvbnZlcnRfZXhjZXB0aW9uIChleGNlcHQpOwotKyAgICAgIHJldHVybiBQ WV9CVF9FUlJPUjsKLSsgICAgfQotKwotKyAgcmV0dXJuIFBZX0JUX09LOwotK30KLSsKLSsvKiBI ZWxwZXIgZnVuY3Rpb24gd2hpY2ggb3V0cHV0cyBhIHZhbHVlIHRvIGFuIG91dHB1dCBmaWVsZCBp biBhCi0rICAgc3RyZWFtLiAgT1VUIGlzIHRoZSB1aS1vdXQgc3RydWN0dXJlIHRoZSB2YWx1ZSB3 aWxsIGJlIG91dHB1dCB0bywKLSsgICBWQUwgaXMgdGhlIHZhbHVlIHRoYXQgd2lsbCBiZSBwcmlu dGVkLCBPUFRTIGNvbnRhaW5zIHRoZSB2YWx1ZQotKyAgIHByaW50aW5nIG9wdGlvbnMsIEFSR1Nf VFlQRSBpcyBhbiBlbnVtZXJhdG9yIGRlc2NyaWJpbmcgdGhlCi0rICAgYXJndW1lbnQgZm9ybWF0 LCBhbmQgTEFOR1VBR0UgaXMgdGhlIGxhbmd1YWdlX2RlZm4gdGhhdCB0aGUgdmFsdWUKLSsgICB3 aWxsIGJlIHByaW50ZWQgd2l0aC4gIFJldHVybnMgUFlfQlRfRVJST1Igb24gZXJyb3IsIHdpdGgg YW55IEdEQgotKyAgIGV4Y2VwdGlvbnMgY29udmVydGVkIHRvIGEgUHl0aG9uIGV4Y2VwdGlvbiwg b3IgUFlfQlRfT0sgb24KLSsgICBzdWNjZXNzLiAqLwotKwotK3N0YXRpYyBlbnVtIHB5X2J0X3N0 YXR1cwotK3B5X3ByaW50X3ZhbHVlIChzdHJ1Y3QgdWlfb3V0ICpvdXQsIHN0cnVjdCB2YWx1ZSAq dmFsLAotKwkJY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdHMsCi0rCQlpbnQg aW5kZW50LAotKwkJZW51bSBweV9mcmFtZV9hcmdzIGFyZ3NfdHlwZSwKLSsJCWNvbnN0IHN0cnVj dCBsYW5ndWFnZV9kZWZuICpsYW5ndWFnZSkKLSt7Ci0rICBpbnQgc2hvdWxkX3ByaW50ID0gMDsK LSsgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGV4Y2VwdDsKLSsgIGludCBsb2NhbF9p bmRlbnQgPSAoNCAqIGluZGVudCk7Ci0rCi0rICAvKiBOZXZlciBzZXQgYW4gaW5kZW50IGxldmVs IGZvciBjb21tb25fdmFsX3ByaW50IGlmIE1JLiAgKi8KLSsgIGlmICh1aV9vdXRfaXNfbWlfbGlr ZV9wIChvdXQpKQotKyAgICBsb2NhbF9pbmRlbnQgPSAwOwotKwotKyAgLyogTUkgZG9lcyBub3Qg cHJpbnQgY2VydGFpbiB2YWx1ZXMsIGRpZmZlcmVudGlhdGVkIGJ5IHR5cGUsCi0rICAgICBkZXBl bmRpbmcgb24gd2hhdCBBUkdTX1RZUEUgaW5kaWNhdGVzLiAgVGVzdCB0eXBlIGFnYWluc3Qgb3B0 aW9uLgotKyAgICAgRm9yIENMSSBwcmludCBhbGwgdmFsdWVzLiAgKi8KLSsgIGlmIChhcmdzX3R5 cGUgPT0gTUlfUFJJTlRfU0lNUExFX1ZBTFVFUwotKyAgICAgIHx8IGFyZ3NfdHlwZSA9PSBNSV9Q UklOVF9BTExfVkFMVUVTKQotKyAgICB7Ci0rICAgICAgc3RydWN0IHR5cGUgKnR5cGUgPSBOVUxM OwotKwotKyAgICAgIFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19BTEwpCi0rCXsKLSsJ ICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAodmFsKSk7Ci0rCX0KLSsgICAgICBp ZiAoZXhjZXB0LnJlYXNvbiA8IDApCi0rCXsKLSsJICBnZGJweV9jb252ZXJ0X2V4Y2VwdGlvbiAo ZXhjZXB0KTsKLSsJICByZXR1cm4gUFlfQlRfRVJST1I7Ci0rCX0KLSsKLSsgICAgICBpZiAoYXJn c190eXBlID09IE1JX1BSSU5UX0FMTF9WQUxVRVMpCi0rCXNob3VsZF9wcmludCA9IDE7Ci0rICAg ICAgZWxzZSBpZiAoYXJnc190eXBlID09IE1JX1BSSU5UX1NJTVBMRV9WQUxVRVMKLSsJICAgICAg ICYmIFRZUEVfQ09ERSAodHlwZSkgIT0gVFlQRV9DT0RFX0FSUkFZCi0rCSAgICAgICAmJiBUWVBF X0NPREUgKHR5cGUpICE9IFRZUEVfQ09ERV9TVFJVQ1QKLSsJICAgICAgICYmIFRZUEVfQ09ERSAo dHlwZSkgIT0gVFlQRV9DT0RFX1VOSU9OKQotKwlzaG91bGRfcHJpbnQgPSAxOwotKyAgICB9Ci0r ICBlbHNlIGlmIChhcmdzX3R5cGUgIT0gTk9fVkFMVUVTKQotKyAgICBzaG91bGRfcHJpbnQgPSAx OwotKwotKyAgaWYgKHNob3VsZF9wcmludCkKLSsgICAgewotKyAgICAgIFRSWV9DQVRDSCAoZXhj ZXB0LCBSRVRVUk5fTUFTS19BTEwpCi0rCXsKLSsJICBzdHJ1Y3QgdWlfZmlsZSAqc3RiOwotKwkg IHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwOwotKwotKwkgIHN0YiA9IG1lbV9maWxlb3BlbiAoKTsK LSsJICBjbGVhbnVwID0gbWFrZV9jbGVhbnVwX3VpX2ZpbGVfZGVsZXRlIChzdGIpOwotKwkgIGNv bW1vbl92YWxfcHJpbnQgKHZhbCwgc3RiLCBpbmRlbnQsIG9wdHMsIGxhbmd1YWdlKTsKLSsJICB1 aV9vdXRfZmllbGRfc3RyZWFtIChvdXQsICJ2YWx1ZSIsIHN0Yik7Ci0rCSAgZG9fY2xlYW51cHMg KGNsZWFudXApOwotKwl9Ci0rICAgICAgaWYgKGV4Y2VwdC5yZWFzb24gPCAwKQotKwl7Ci0rCSAg Z2RicHlfY29udmVydF9leGNlcHRpb24gKGV4Y2VwdCk7Ci0rCSAgcmV0dXJuIFBZX0JUX0VSUk9S OwotKwl9Ci0rICAgIH0KLSsKLSsgIHJldHVybiBQWV9CVF9PSzsKLSt9Ci0rCi0rLyogSGVscGVy IGZ1bmN0aW9uIHRvIGNhbGwgYSBQeXRob24gbWV0aG9kIGFuZCBleHRyYWN0IGFuIGl0ZXJhdG9y Ci0rICAgZnJvbSB0aGUgcmVzdWx0LiAgSWYgdGhlIGZ1bmN0aW9uIHJldHVybnMgYW55dGhpbmcg YnV0IGFuIGl0ZXJhdG9yCi0rICAgdGhlIGV4Y2VwdGlvbiBpcyBwcmVzZXJ2ZWQgYW5kIE5VTEwg aXMgcmV0dXJuZWQuICBGSUxURVIgaXMgdGhlCi0rICAgUHl0aG9uIG9iamVjdCB0byBjYWxsLCBh bmQgRlVOQyBpcyB0aGUgbmFtZSBvZiB0aGUgbWV0aG9kLiAgUmV0dXJucwotKyAgIGEgUHlPYmpl Y3QsIG9yIE5VTEwgb24gZXJyb3Igd2l0aCB0aGUgYXBwcm9wcmlhdGUgZXhjZXB0aW9uIHNldC4K LSsgICBUaGlzIGZ1bmN0aW9uIGNhbiByZXR1cm4gYW4gaXRlcmF0b3IsIG9yIE5VTEwuICAqLwot KwotK3N0YXRpYyBQeU9iamVjdCAqCi0rZ2V0X3B5X2l0ZXJfZnJvbV9mdW5jIChQeU9iamVjdCAq ZmlsdGVyLCBjaGFyICpmdW5jKQotK3sKLSsgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nIChm aWx0ZXIsIGZ1bmMpKQotKyAgICB7Ci0rICAgICAgUHlPYmplY3QgKnJlc3VsdCA9IFB5T2JqZWN0 X0NhbGxNZXRob2QgKGZpbHRlciwgZnVuYywgTlVMTCk7Ci0rCi0rICAgICAgaWYgKHJlc3VsdCAh PSBOVUxMKQotKwl7Ci0rCSAgaWYgKHJlc3VsdCA9PSBQeV9Ob25lKQotKwkgICAgewotKwkgICAg ICByZXR1cm4gcmVzdWx0OwotKwkgICAgfQotKwkgIGVsc2UKLSsJICAgIHsKLSsJICAgICAgUHlP YmplY3QgKml0ZXJhdG9yID0gUHlPYmplY3RfR2V0SXRlciAocmVzdWx0KTsKLSsKLSsJICAgICAg UHlfREVDUkVGIChyZXN1bHQpOwotKwkgICAgICByZXR1cm4gaXRlcmF0b3I7Ci0rCSAgICB9Ci0r CX0KLSsgICAgfQotKyAgZWxzZQotKyAgICBQeV9SRVRVUk5fTk9ORTsKLSsKLSsgIHJldHVybiBO VUxMOwotK30KLSsKLSsvKiAgSGVscGVyIGZ1bmN0aW9uIHRvIG91dHB1dCBhIHNpbmdsZSBmcmFt ZSBhcmd1bWVudCBhbmQgdmFsdWUgdG8gYW4KLSsgICAgb3V0cHV0IHN0cmVhbS4gIFRoaXMgZnVu Y3Rpb24gd2lsbCBhY2NvdW50IGZvciBlbnRyeSB2YWx1ZXMgaWYgdGhlCi0rICAgIEZWIHBhcmFt ZXRlciBpcyBwb3B1bGF0ZWQsIHRoZSBmcmFtZSBhcmd1bWVudCBoYXMgZW50cnkgdmFsdWVzCi0r ICAgIGFzc29jaWF0ZWQgd2l0aCB0aGVtLCBhbmQgdGhlIGFwcHJvcHJpYXRlICJzZXQgZW50cnkt dmFsdWUiCi0rICAgIG9wdGlvbnMgYXJlIHNldC4gIFdpbGwgb3V0cHV0IGluIENMSSBvciBNSSBs aWtlIGZvcm1hdCBkZXBlbmRpbmcKLSsgICAgb24gdGhlIHR5cGUgb2Ygb3V0cHV0IHN0cmVhbSBk ZXRlY3RlZC4gIE9VVCBpcyB0aGUgb3V0cHV0IHN0cmVhbSwKLSsgICAgU1lNX05BTUUgaXMgdGhl IG5hbWUgb2YgdGhlIHN5bWJvbC4gIElmIFNZTV9OQU1FIGlzIHBvcHVsYXRlZCB0aGVuCi0rICAg IGl0IG11c3QgaGF2ZSBhbiBhY2NvbXBhbnlpbmcgdmFsdWUgaW4gdGhlIHBhcmFtZXRlciBGVi4g IEZBIGlzIGEKLSsgICAgZnJhbWUgYXJndW1lbnQgc3RydWN0dXJlLiAgSWYgRkEgaXMgcG9wdWxh dGVkLCBib3RoIFNZTV9OQU1FIGFuZAotKyAgICBGViBhcmUgaWdub3JlZC4gIE9QVFMgY29udGFp bnMgdGhlIHZhbHVlIHByaW50aW5nIG9wdGlvbnMsCi0rICAgIEFSR1NfVFlQRSBpcyBhbiBlbnVt ZXJhdG9yIGRlc2NyaWJpbmcgdGhlIGFyZ3VtZW50IGZvcm1hdCwKLSsgICAgUFJJTlRfQVJHU19G SUVMRCBpcyBhIGZsYWcgd2hpY2ggaW5kaWNhdGVzIGlmIHdlIG91dHB1dCAiQVJHUz0xIgotKyAg ICBpbiBNSSBvdXRwdXQgaW4gY29tbWFuZHMgd2hlcmUgYm90aCBhcmd1bWVudHMgYW5kIGxvY2Fs cyBhcmUKLSsgICAgcHJpbnRlZC4gIFJldHVybnMgUFlfQlRfRVJST1Igb24gZXJyb3IsIHdpdGgg YW55IEdEQiBleGNlcHRpb25zCi0rICAgIGNvbnZlcnRlZCB0byBhIFB5dGhvbiBleGNlcHRpb24s IG9yIFBZX0JUX09LIG9uIHN1Y2Nlc3MuICAqLwotKwotK3N0YXRpYyBlbnVtIHB5X2J0X3N0YXR1 cwotK3B5X3ByaW50X3NpbmdsZV9hcmcgKHN0cnVjdCB1aV9vdXQgKm91dCwKLSsJCSAgICAgY29u c3QgY2hhciAqc3ltX25hbWUsCi0rCQkgICAgIHN0cnVjdCBmcmFtZV9hcmcgKmZhLAotKwkJICAg ICBzdHJ1Y3QgdmFsdWUgKmZ2LAotKwkJICAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0 aW9ucyAqb3B0cywKLSsJCSAgICAgZW51bSBweV9mcmFtZV9hcmdzIGFyZ3NfdHlwZSwKLSsJCSAg ICAgaW50IHByaW50X2FyZ3NfZmllbGQsCi0rCQkgICAgIGNvbnN0IHN0cnVjdCBsYW5ndWFnZV9k ZWZuICpsYW5ndWFnZSkKLSt7Ci0rICBzdHJ1Y3QgdmFsdWUgKnZhbDsKLSsgIHZvbGF0aWxlIHN0 cnVjdCBnZGJfZXhjZXB0aW9uIGV4Y2VwdDsKLSsKLSsgIGlmIChmYSAhPSBOVUxMKQotKyAgICB7 Ci0rICAgICAgbGFuZ3VhZ2UgPSBsYW5ndWFnZV9kZWYgKFNZTUJPTF9MQU5HVUFHRSAoZmEtPnN5 bSkpOwotKyAgICAgIHZhbCA9IGZhLT52YWw7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgdmFsID0g ZnY7Ci0rCi0rICBUUllfQ0FUQ0ggKGV4Y2VwdCwgUkVUVVJOX01BU0tfQUxMKQotKyAgICB7Ci0r ICAgICAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBzID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFu dXAsIE5VTEwpOwotKwotKyAgICAgIC8qICBNSSBoYXMgdmFyeWluZyBydWxlcyBmb3IgdHVwbGVz LCBidXQgZ2VuZXJhbGx5IGlmIHRoZXJlIGlzIG9ubHkKLSsgICAgICBvbmUgZWxlbWVudCBpbiBl YWNoIGl0ZW0gaW4gdGhlIGxpc3QsIGRvIG5vdCBzdGFydCBhIHR1cGxlLiAgVGhlCi0rICAgICAg ZXhjZXB0aW9uIGlzIC1zdGFjay1saXN0LXZhcmlhYmxlcyB3aGljaCBlbWl0cyBhbiBBUkdTPSIx IiBmaWVsZAotKyAgICAgIGlmIHRoZSB2YWx1ZSBpcyBhIGZyYW1lIGFyZ3VtZW50LiAgVGhpcyBp cyBkZW5vdGVkIGluIHRoaXMKLSsgICAgICBmdW5jdGlvbiB3aXRoIFBSSU5UX0FSR1NfRklFTEQg d2hpY2ggaXMgZmxhZyBmcm9tIHRoZSBjYWxsZXIgdG8KLSsgICAgICBlbWl0IHRoZSBBUkdTIGZp ZWxkLiAgKi8KLSsgICAgICBpZiAodWlfb3V0X2lzX21pX2xpa2VfcCAob3V0KSkKLSsJewotKwkg IGlmIChwcmludF9hcmdzX2ZpZWxkIHx8IGFyZ3NfdHlwZSAhPSBOT19WQUxVRVMpCi0rCSAgICBt YWtlX2NsZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAob3V0LCBOVUxMKTsKLSsJfQotKwot KyAgICAgIGFubm90YXRlX2FyZ19iZWdpbiAoKTsKLSsKLSsgICAgICAvKiBJZiBmcmFtZSBhcmd1 bWVudCBpcyBwb3B1bGF0ZWQsIGNoZWNrIGZvciBlbnRyeS12YWx1ZXMgYW5kIHRoZQotKwkgZW50 cnkgdmFsdWUgb3B0aW9ucy4gICovCi0rICAgICAgaWYgKGZhICE9IE5VTEwpCi0rCXsKLSsJICBz dHJ1Y3QgdWlfZmlsZSAqc3RiOwotKwotKwkgIHN0YiA9IG1lbV9maWxlb3BlbiAoKTsKLSsJICBt YWtlX2NsZWFudXBfdWlfZmlsZV9kZWxldGUgKHN0Yik7Ci0rCSAgZnByaW50Zl9zeW1ib2xfZmls dGVyZWQgKHN0YiwgU1lNQk9MX1BSSU5UX05BTUUgKGZhLT5zeW0pLAotKwkJCQkgICBTWU1CT0xf TEFOR1VBR0UgKGZhLT5zeW0pLAotKwkJCQkgICBETUdMX1BBUkFNUyB8IERNR0xfQU5TSSk7Ci0r CSAgaWYgKGZhLT5lbnRyeV9raW5kID09IHByaW50X2VudHJ5X3ZhbHVlc19jb21wYWN0KQotKwkg ICAgewotKwkgICAgICBmcHV0c19maWx0ZXJlZCAoIj0iLCBzdGIpOwotKwotKwkgICAgICBmcHJp bnRmX3N5bWJvbF9maWx0ZXJlZCAoc3RiLCBTWU1CT0xfUFJJTlRfTkFNRSAoZmEtPnN5bSksCi0r CQkJCSAgICAgICBTWU1CT0xfTEFOR1VBR0UgKGZhLT5zeW0pLAotKwkJCQkgICAgICAgRE1HTF9Q QVJBTVMgfCBETUdMX0FOU0kpOwotKwkgICAgfQotKwkgIGlmIChmYS0+ZW50cnlfa2luZCA9PSBw cmludF9lbnRyeV92YWx1ZXNfb25seQotKwkgICAgICB8fCBmYS0+ZW50cnlfa2luZCA9PSBwcmlu dF9lbnRyeV92YWx1ZXNfY29tcGFjdCkKLSsJICAgIHsKLSsJICAgICAgZnB1dHNfZmlsdGVyZWQg KCJAZW50cnkiLCBzdGIpOwotKwkgICAgfQotKwkgIHVpX291dF9maWVsZF9zdHJlYW0gKG91dCwg Im5hbWUiLCBzdGIpOwotKwl9Ci0rICAgICAgZWxzZQotKwkvKiBPdGhlcndpc2UsIGp1c3Qgb3V0 cHV0IHRoZSBuYW1lLiAgKi8KLSsJdWlfb3V0X2ZpZWxkX3N0cmluZyAob3V0LCAibmFtZSIsIHN5 bV9uYW1lKTsKLSsKLSsgICAgICBhbm5vdGF0ZV9hcmdfbmFtZV9lbmQgKCk7Ci0rCi0rICAgICAg aWYgKCEgdWlfb3V0X2lzX21pX2xpa2VfcCAob3V0KSkKLSsJdWlfb3V0X3RleHQgKG91dCwgIj0i KTsKLSsKLSsgICAgICBpZiAocHJpbnRfYXJnc19maWVsZCkKLSsJdWlfb3V0X2ZpZWxkX2ludCAo b3V0LCAiYXJnIiwgMSk7Ci0rCi0rICAgICAgLyogRm9yIE1JIHByaW50IHRoZSB0eXBlLCBidXQg b25seSBmb3Igc2ltcGxlIHZhbHVlcy4gIFRoaXMgc2VlbXMKLSsJIHdlaXJkLCBidXQgdGhpcyBp cyBob3cgTUkgY2hvb3NlIHRvIGZvcm1hdCB0aGUgdmFyaW91cyBvdXRwdXQKLSsJIHR5cGVzLiAg Ki8KLSsgICAgICBpZiAoYXJnc190eXBlID09IE1JX1BSSU5UX1NJTVBMRV9WQUxVRVMpCi0rCXsK LSsJICBpZiAocHlfcHJpbnRfdHlwZSAob3V0LCB2YWwpID09IFBZX0JUX0VSUk9SKQotKwkgICAg ewotKwkgICAgICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOwotKwkgICAgICBnb3RvIGVycm9yOwot KwkgICAgfQotKwl9Ci0rCi0rICAgICAgYW5ub3RhdGVfYXJnX3ZhbHVlICh2YWx1ZV90eXBlICh2 YWwpKTsKLSsKLSsgICAgICAvKiBJZiB0aGUgb3V0cHV0IGlzIHRvIHRoZSBDTEksIGFuZCB0aGUg dXNlciBvcHRpb24gInNldCBwcmludAotKwkgZnJhbWUtYXJndW1lbnRzIiBpcyBzZXQgdG8gbm9u ZSwganVzdCBvdXRwdXQgIi4uLiIuICAqLwotKyAgICAgIGlmICghIHVpX291dF9pc19taV9saWtl X3AgKG91dCkgJiYgYXJnc190eXBlID09IE5PX1ZBTFVFUykKLSsJdWlfb3V0X2ZpZWxkX3N0cmlu ZyAob3V0LCAidmFsdWUiLCAiLi4uIik7Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgLyogT3RoZXJ3 aXNlLCBwcmludCB0aGUgdmFsdWUgZm9yIGJvdGggTUkgYW5kIHRoZSBDTEksIGV4Y2VwdAotKwkg ICAgIGZvciB0aGUgY2FzZSBvZiBNSV9QUklOVF9OT19WQUxVRVMuICAqLwotKwkgIGlmIChhcmdz X3R5cGUgIT0gTk9fVkFMVUVTKQotKwkgICAgewotKwkgICAgICBpZiAocHlfcHJpbnRfdmFsdWUg KG91dCwgdmFsLCBvcHRzLCAwLCBhcmdzX3R5cGUsIGxhbmd1YWdlKQotKwkJICA9PSBQWV9CVF9F UlJPUikKLSsJCXsKLSsJCSAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKLSsJCSAgZ290byBlcnJv cjsKLSsJCX0KLSsJICAgIH0KLSsJfQotKwotKyAgICAgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7 Ci0rICAgIH0KLSsgIGlmIChleGNlcHQucmVhc29uIDwgMCkKLSsgICAgewotKyAgICAgIGdkYnB5 X2NvbnZlcnRfZXhjZXB0aW9uIChleGNlcHQpOwotKyAgICAgIGdvdG8gZXJyb3I7Ci0rICAgIH0K LSsKLSsgIHJldHVybiBQWV9CVF9PSzsKLSsKLSsgZXJyb3I6Ci0rICByZXR1cm4gUFlfQlRfRVJS T1I7Ci0rfQotKwotKy8qIEhlbHBlciBmdW5jdGlvbiB0byBsb29wIG92ZXIgZnJhbWUgYXJndW1l bnRzIHByb3ZpZGVkIGJ5IHRoZQotKyAgICJmcmFtZV9hcmd1bWVudHMiIFB5dGhvbiBBUEkuICBF bGVtZW50cyBpbiB0aGUgaXRlcmF0b3IgbXVzdAotKyAgIGNvbmZvcm0gdG8gdGhlICJTeW1ib2wg VmFsdWUiIGludGVyZmFjZS4gIElURVIgaXMgdGhlIFB5dGhvbgotKyAgIGl0ZXJhYmxlIG9iamVj dCwgT1VUIGlzIHRoZSBvdXRwdXQgc3RyZWFtLCBBUkdTX1RZUEUgaXMgYW4KLSsgICBlbnVtZXJh dG9yIGRlc2NyaWJpbmcgdGhlIGFyZ3VtZW50IGZvcm1hdCwgUFJJTlRfQVJHU19GSUVMRCBpcyBh Ci0rICAgZmxhZyB3aGljaCBpbmRpY2F0ZXMgaWYgd2Ugb3V0cHV0ICJBUkdTPTEiIGluIE1JIG91 dHB1dCBpbiBjb21tYW5kcwotKyAgIHdoZXJlIGJvdGggYXJndW1lbnRzIGFuZCBsb2NhbHMgYXJl IHByaW50ZWQsIGFuZCBGUkFNRSBpcyB0aGUKLSsgICBiYWNraW5nIGZyYW1lLiAgUmV0dXJucyBQ WV9CVF9FUlJPUiBvbiBlcnJvciwgd2l0aCBhbnkgR0RCCi0rICAgZXhjZXB0aW9ucyBjb252ZXJ0 ZWQgdG8gYSBQeXRob24gZXhjZXB0aW9uLCBvciBQWV9CVF9PSyBvbgotKyAgIHN1Y2Nlc3MuICAq LwotKwotK3N0YXRpYyBlbnVtIHB5X2J0X3N0YXR1cwotK2VudW1lcmF0ZV9hcmdzIChQeU9iamVj dCAqaXRlciwKLSsJCXN0cnVjdCB1aV9vdXQgKm91dCwKLSsJCWVudW0gcHlfZnJhbWVfYXJncyBh cmdzX3R5cGUsCi0rCQlpbnQgcHJpbnRfYXJnc19maWVsZCwKLSsJCXN0cnVjdCBmcmFtZV9pbmZv ICpmcmFtZSkKLSt7Ci0rICBQeU9iamVjdCAqaXRlbTsKLSsgIHN0cnVjdCB2YWx1ZV9wcmludF9v cHRpb25zIG9wdHM7Ci0rICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBleGNlcHQ7Ci0r Ci0rICBnZXRfdXNlcl9wcmludF9vcHRpb25zICgmb3B0cyk7Ci0rCi0rICBpZiAoYXJnc190eXBl ID09IENMSV9TQ0FMQVJfVkFMVUVTKQotKyAgICB7Ci0rICAgICAgLyogVHJ1ZSBpbiAic3VtbWFy eSIgbW9kZSwgZmFsc2Ugb3RoZXJ3aXNlLiAgKi8KLSsgICAgICBvcHRzLnN1bW1hcnkgPSAxOwot KyAgICB9Ci0rCi0rICBvcHRzLmRlcmVmX3JlZiA9IDE7Ci0rCi0rICBUUllfQ0FUQ0ggKGV4Y2Vw dCwgUkVUVVJOX01BU0tfQUxMKQotKyAgICB7Ci0rICAgICAgYW5ub3RhdGVfZnJhbWVfYXJncyAo KTsKLSsgICAgfQotKyAgaWYgKGV4Y2VwdC5yZWFzb24gPCAwKQotKyAgICB7Ci0rICAgICAgZ2Ri cHlfY29udmVydF9leGNlcHRpb24gKGV4Y2VwdCk7Ci0rICAgICAgZ290byBlcnJvcjsKLSsgICAg fQotKwotKyAgLyogIENvbGxlY3QgdGhlIGZpcnN0IGFyZ3VtZW50IG91dHNpZGUgb2YgdGhlIGxv b3AsIHNvIG91dHB1dCBvZgotKyAgICAgIGNvbW1hcyBpbiB0aGUgYXJndW1lbnQgb3V0cHV0IGlz IGNvcnJlY3QuICBBdCB0aGUgZW5kIG9mIHRoZQotKyAgICAgIGxvb3AgYmxvY2sgY29sbGVjdCBh bm90aGVyIGl0ZW0gZnJvbSB0aGUgaXRlcmF0b3IsIGFuZCwgaWYgaXQgaXMKLSsgICAgICBub3Qg bnVsbCBlbWl0IGEgY29tbWEuICAqLwotKyAgaXRlbSA9IFB5SXRlcl9OZXh0IChpdGVyKTsKLSsg IGlmIChpdGVtID09IE5VTEwgJiYgUHlFcnJfT2NjdXJyZWQgKCkpCi0rICAgIGdvdG8gZXJyb3I7 Ci0rCi0rICB3aGlsZSAoaXRlbSkKLSsgICAgewotKyAgICAgIGNvbnN0IHN0cnVjdCBsYW5ndWFn ZV9kZWZuICpsYW5ndWFnZTsKLSsgICAgICBjaGFyICpzeW1fbmFtZTsKLSsgICAgICBzdHJ1Y3Qg c3ltYm9sICpzeW07Ci0rICAgICAgc3RydWN0IHZhbHVlICp2YWw7Ci0rICAgICAgZW51bSBweV9i dF9zdGF0dXMgc3VjY2VzcyA9IFBZX0JUX0VSUk9SOwotKwotKyAgICAgIHN1Y2Nlc3MgPSBleHRy YWN0X3N5bSAoaXRlbSwgJnN5bV9uYW1lLCAmc3ltLCAmbGFuZ3VhZ2UpOwotKyAgICAgIGlmIChz dWNjZXNzID09IFBZX0JUX0VSUk9SKQotKwl7Ci0rCSAgUHlfREVDUkVGIChpdGVtKTsKLSsJICBn b3RvIGVycm9yOwotKwl9Ci0rCi0rICAgICAgc3VjY2VzcyA9IGV4dHJhY3RfdmFsdWUgKGl0ZW0s ICZ2YWwpOwotKyAgICAgIGlmIChzdWNjZXNzID09IFBZX0JUX0VSUk9SKQotKwl7Ci0rCSAgeGZy ZWUgKHN5bV9uYW1lKTsKLSsJICBQeV9ERUNSRUYgKGl0ZW0pOwotKwkgIGdvdG8gZXJyb3I7Ci0r CX0KLSsKLSsgICAgICBQeV9ERUNSRUYgKGl0ZW0pOwotKyAgICAgIGl0ZW0gPSBOVUxMOwotKwot KyAgICAgIGlmIChzeW0gJiYgdWlfb3V0X2lzX21pX2xpa2VfcCAob3V0KQotKwkgICYmICEgbWlf c2hvdWxkX3ByaW50IChzeW0sIE1JX1BSSU5UX0FSR1MpKQotKwl7Ci0rCSAgeGZyZWUgKHN5bV9u YW1lKTsKLSsJICBjb250aW51ZTsKLSsJfQotKwotKyAgICAgIC8qIElmIHRoZSBvYmplY3QgZGlk IG5vdCBwcm92aWRlIGEgdmFsdWUsIHJlYWQgaXQgdXNpbmcKLSsJIHJlYWRfZnJhbWVfYXJncyBh bmQgYWNjb3VudCBmb3IgZW50cnkgdmFsdWVzLCBpZiBhbnkuICAqLwotKyAgICAgIGlmICh2YWwg PT0gTlVMTCkKLSsJewotKwkgIHN0cnVjdCBmcmFtZV9hcmcgYXJnLCBlbnRyeWFyZzsKLSsKLSsJ ICAvKiBJZiB0aGVyZSBpcyBubyB2YWx1ZSwgYW5kIGFsc28gbm8gc3ltYm9sLCBzZXQgZXJyb3Ig YW5kCi0rCSAgICAgZXhpdC4gICovCi0rCSAgaWYgKHN5bSA9PSBOVUxMKQotKwkgICAgewotKwkg ICAgICBQeUVycl9TZXRTdHJpbmcgKFB5RXhjX1J1bnRpbWVFcnJvciwKLSsJCQkgICAgICAgXygi Tm8gc3ltYm9sIG9yIHZhbHVlIHByb3ZpZGVkLiIpKTsKLSsJICAgICAgeGZyZWUgKHN5bV9uYW1l KTsKLSsJICAgICAgZ290byBlcnJvcjsKLSsJICAgIH0KLSsKLSsJICBUUllfQ0FUQ0ggKGV4Y2Vw dCwgUkVUVVJOX01BU0tfQUxMKQotKwkgICAgewotKwkgICAgICByZWFkX2ZyYW1lX2FyZyAoc3lt LCBmcmFtZSwgJmFyZywgJmVudHJ5YXJnKTsKLSsJICAgIH0KLSsJICBpZiAoZXhjZXB0LnJlYXNv biA8IDApCi0rCSAgICB7Ci0rCSAgICAgIHhmcmVlIChzeW1fbmFtZSk7Ci0rCSAgICAgIGdkYnB5 X2NvbnZlcnRfZXhjZXB0aW9uIChleGNlcHQpOwotKwkgICAgICBnb3RvIGVycm9yOwotKwkgICAg fQotKwotKwkgIC8qIFRoZSBvYmplY3QgaGFzIG5vdCBwcm92aWRlZCBhIHZhbHVlLCBzbyB0aGlz IGlzIGEgZnJhbWUKLSsJICAgICBhcmd1bWVudCB0byBiZSByZWFkIGJ5IEdEQi4gIEluIHRoaXMg Y2FzZSB3ZSBoYXZlIHRvCi0rCSAgICAgYWNjb3VudCBmb3IgZW50cnktdmFsdWVzLiAgKi8KLSsK LSsJICBpZiAoYXJnLmVudHJ5X2tpbmQgIT0gcHJpbnRfZW50cnlfdmFsdWVzX29ubHkpCi0rCSAg ICB7Ci0rCSAgICAgIGlmIChweV9wcmludF9zaW5nbGVfYXJnIChvdXQsIE5VTEwsICZhcmcsCi0r CQkJCSAgICAgICBOVUxMLCAmb3B0cywKLSsJCQkJICAgICAgIGFyZ3NfdHlwZSwKLSsJCQkJICAg ICAgIHByaW50X2FyZ3NfZmllbGQsCi0rCQkJCSAgICAgICBOVUxMKSA9PSBQWV9CVF9FUlJPUikK LSsJCXsKLSsJCSAgeGZyZWUgKGFyZy5lcnJvcik7Ci0rCQkgIHhmcmVlIChlbnRyeWFyZy5lcnJv cik7Ci0rCQkgIHhmcmVlIChzeW1fbmFtZSk7Ci0rCQkgIGdvdG8gZXJyb3I7Ci0rCQl9Ci0rCSAg ICB9Ci0rCi0rCSAgaWYgKGVudHJ5YXJnLmVudHJ5X2tpbmQgIT0gcHJpbnRfZW50cnlfdmFsdWVz X25vKQotKwkgICAgewotKwkgICAgICBpZiAoYXJnLmVudHJ5X2tpbmQgIT0gcHJpbnRfZW50cnlf dmFsdWVzX29ubHkpCi0rCQl7Ci0rCQkgIFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19B TEwpCi0rCQkgICAgewotKwkJICAgICAgdWlfb3V0X3RleHQgKG91dCwgIiwgIik7Ci0rCQkgICAg ICB1aV9vdXRfd3JhcF9oaW50IChvdXQsICIgICAgIik7Ci0rCQkgICAgfQotKwkJICBpZiAoZXhj ZXB0LnJlYXNvbiA8IDApCi0rCQkgICAgewotKwkJICAgICAgeGZyZWUgKGFyZy5lcnJvcik7Ci0r CQkgICAgICB4ZnJlZSAoZW50cnlhcmcuZXJyb3IpOwotKwkJICAgICAgeGZyZWUgKHN5bV9uYW1l KTsKLSsJCSAgICAgIGdkYnB5X2NvbnZlcnRfZXhjZXB0aW9uIChleGNlcHQpOwotKwkJICAgICAg Z290byBlcnJvcjsKLSsJCSAgICB9Ci0rCQl9Ci0rCi0rCSAgICAgIGlmIChweV9wcmludF9zaW5n bGVfYXJnIChvdXQsIE5VTEwsICZlbnRyeWFyZywgTlVMTCwKLSsJCQkJICAgICAgJm9wdHMsIGFy Z3NfdHlwZSwKLSsJCQkJICAgICAgcHJpbnRfYXJnc19maWVsZCwgTlVMTCkgPT0gUFlfQlRfRVJS T1IpCi0rCQl7Ci0rCQkgICAgICB4ZnJlZSAoYXJnLmVycm9yKTsKLSsJCSAgICAgIHhmcmVlIChl bnRyeWFyZy5lcnJvcik7Ci0rCQkgICAgICB4ZnJlZSAoc3ltX25hbWUpOwotKwkJICAgICAgZ290 byBlcnJvcjsKLSsJCX0KLSsJICAgIH0KLSsKLSsJICB4ZnJlZSAoYXJnLmVycm9yKTsKLSsJICB4 ZnJlZSAoZW50cnlhcmcuZXJyb3IpOwotKwl9Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgLyogSWYg dGhlIG9iamVjdCBoYXMgcHJvdmlkZWQgYSB2YWx1ZSwgd2UganVzdCBwcmludCB0aGF0LiAgKi8K LSsJICBpZiAodmFsICE9IE5VTEwpCi0rCSAgICB7Ci0rCSAgICAgIGlmIChweV9wcmludF9zaW5n bGVfYXJnIChvdXQsIHN5bV9uYW1lLCBOVUxMLCB2YWwsICZvcHRzLAotKwkJCQkgICAgICAgYXJn c190eXBlLCBwcmludF9hcmdzX2ZpZWxkLAotKwkJCQkgICAgICAgbGFuZ3VhZ2UpID09IFBZX0JU X0VSUk9SKQotKwkJewotKwkJICB4ZnJlZSAoc3ltX25hbWUpOwotKwkJICBnb3RvIGVycm9yOwot KwkJfQotKwkgICAgfQotKwl9Ci0rCi0rICAgICAgeGZyZWUgKHN5bV9uYW1lKTsKLSsKLSsgICAg ICAvKiBDb2xsZWN0IHRoZSBuZXh0IGl0ZW0gZnJvbSB0aGUgaXRlcmF0b3IuICBJZgotKwkgdGhp cyBpcyB0aGUgbGFzdCBpdGVtLCBkbyBub3QgcHJpbnQgdGhlCi0rCSBjb21tYS4gICovCi0rICAg ICAgaXRlbSA9IFB5SXRlcl9OZXh0IChpdGVyKTsKLSsgICAgICBpZiAoaXRlbSAhPSBOVUxMKQot Kwl7Ci0rCSAgVFJZX0NBVENIIChleGNlcHQsIFJFVFVSTl9NQVNLX0FMTCkKLSsJICAgIHsKLSsJ ICAgICAgdWlfb3V0X3RleHQgKG91dCwgIiwgIik7Ci0rCSAgICB9Ci0rCSAgaWYgKGV4Y2VwdC5y ZWFzb24gPCAwKQotKwkgICAgewotKwkgICAgICBQeV9ERUNSRUYgKGl0ZW0pOwotKwkgICAgICBn ZGJweV9jb252ZXJ0X2V4Y2VwdGlvbiAoZXhjZXB0KTsKLSsJICAgICAgZ290byBlcnJvcjsKLSsJ ICAgIH0KLSsJfQotKyAgICAgIGVsc2UgaWYgKFB5RXJyX09jY3VycmVkICgpKQotKwlnb3RvIGVy cm9yOwotKwotKyAgICAgIFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19BTEwpCi0rCXsK LSsJICBhbm5vdGF0ZV9hcmdfZW5kICgpOwotKwl9Ci0rICAgICAgaWYgKGV4Y2VwdC5yZWFzb24g PCAwKQotKwl7Ci0rCSAgUHlfREVDUkVGIChpdGVtKTsKLSsJICBnZGJweV9jb252ZXJ0X2V4Y2Vw dGlvbiAoZXhjZXB0KTsKLSsJICBnb3RvIGVycm9yOwotKwl9Ci0rICAgIH0KLSsKLSsgIHJldHVy biBQWV9CVF9PSzsKLSsKLSsgZXJyb3I6Ci0rICByZXR1cm4gUFlfQlRfRVJST1I7Ci0rfQotKwot KwotKy8qIEhlbHBlciBmdW5jdGlvbiB0byBsb29wIG92ZXIgdmFyaWFibGVzIHByb3ZpZGVkIGJ5 IHRoZQotKyAgICJmcmFtZV9sb2NhbHMiIFB5dGhvbiBBUEkuICBFbGVtZW50cyBpbiB0aGUgaXRl cmFibGUgbXVzdCBjb25mb3JtCi0rICAgdG8gdGhlICJTeW1ib2wgVmFsdWUiIGludGVyZmFjZS4g IElURVIgaXMgdGhlIFB5dGhvbiBpdGVyYWJsZQotKyAgIG9iamVjdCwgT1VUIGlzIHRoZSBvdXRw dXQgc3RyZWFtLCBJTkRFTlQgaXMgd2hldGhlciB3ZSBzaG91bGQKLSsgICBpbmRlbnQgdGhlIG91 dHB1dCAoZm9yIENMSSksIEFSR1NfVFlQRSBpcyBhbiBlbnVtZXJhdG9yIGRlc2NyaWJpbmcKLSsg ICB0aGUgYXJndW1lbnQgZm9ybWF0LCBQUklOVF9BUkdTX0ZJRUxEIGlzIGZsYWcgd2hpY2ggaW5k aWNhdGVzCi0rICAgd2hldGhlciB0byBvdXRwdXQgdGhlIEFSR1MgZmllbGQgaW4gdGhlIGNhc2Ug b2YKLSsgICAtc3RhY2stbGlzdC12YXJpYWJsZXMgYW5kIEZSQU1FIGlzIHRoZSBiYWNraW5nIGZy YW1lLiAgUmV0dXJucwotKyAgIFBZX0JUX0VSUk9SIG9uIGVycm9yLCB3aXRoIGFueSBHREIgZXhj ZXB0aW9ucyBjb252ZXJ0ZWQgdG8gYSBQeXRob24KLSsgICBleGNlcHRpb24sIG9yIFBZX0JUX09L IG9uIHN1Y2Nlc3MuICAqLwotKwotK3N0YXRpYyBlbnVtIHB5X2J0X3N0YXR1cwotK2VudW1lcmF0 ZV9sb2NhbHMgKFB5T2JqZWN0ICppdGVyLAotKwkJICBzdHJ1Y3QgdWlfb3V0ICpvdXQsCi0rCQkg IGludCBpbmRlbnQsCi0rCQkgIGVudW0gcHlfZnJhbWVfYXJncyBhcmdzX3R5cGUsCi0rCQkgIGlu dCBwcmludF9hcmdzX2ZpZWxkLAotKwkJICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCi0rewot KyAgUHlPYmplY3QgKml0ZW07Ci0rICBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRzOwot KwotKyAgZ2V0X3VzZXJfcHJpbnRfb3B0aW9ucyAoJm9wdHMpOwotKyAgb3B0cy5kZXJlZl9yZWYg PSAxOwotKwotKyAgd2hpbGUgKChpdGVtID0gUHlJdGVyX05leHQgKGl0ZXIpKSkKLSsgICAgewot KyAgICAgIGNvbnN0IHN0cnVjdCBsYW5ndWFnZV9kZWZuICpsYW5ndWFnZTsKLSsgICAgICBjaGFy ICpzeW1fbmFtZTsKLSsgICAgICBzdHJ1Y3QgdmFsdWUgKnZhbDsKLSsgICAgICBlbnVtIHB5X2J0 X3N0YXR1cyAgc3VjY2VzcyA9IFBZX0JUX0VSUk9SOwotKyAgICAgIHN0cnVjdCBzeW1ib2wgKnN5 bTsKLSsgICAgICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBleGNlcHQ7Ci0rICAgICAg aW50IGxvY2FsX2luZGVudCA9IDggKyAoOCAqIGluZGVudCk7Ci0rICAgICAgc3RydWN0IGNsZWFu dXAgKmxvY2Fsc19jbGVhbnVwczsKLSsKLSsgICAgICBsb2NhbHNfY2xlYW51cHMgPSBtYWtlX2Ns ZWFudXBfcHlfZGVjcmVmIChpdGVtKTsKLSsKLSsgICAgICBzdWNjZXNzID0gZXh0cmFjdF9zeW0g KGl0ZW0sICZzeW1fbmFtZSwgJnN5bSwgJmxhbmd1YWdlKTsKLSsgICAgICBpZiAoc3VjY2VzcyA9 PSBQWV9CVF9FUlJPUikKLSsJewotKwkgIGRvX2NsZWFudXBzIChsb2NhbHNfY2xlYW51cHMpOwot KwkgIGdvdG8gZXJyb3I7Ci0rCX0KLSsKLSsgICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCBzeW1f bmFtZSk7Ci0rCi0rICAgICAgc3VjY2VzcyA9IGV4dHJhY3RfdmFsdWUgKGl0ZW0sICZ2YWwpOwot KyAgICAgIGlmIChzdWNjZXNzID09IFBZX0JUX0VSUk9SKQotKwl7Ci0rCSAgZG9fY2xlYW51cHMg KGxvY2Fsc19jbGVhbnVwcyk7Ci0rCSAgZ290byBlcnJvcjsKLSsJfQotKwotKyAgICAgIGlmIChz eW0gIT0gTlVMTCAmJiB1aV9vdXRfaXNfbWlfbGlrZV9wIChvdXQpCi0rCSAgJiYgISBtaV9zaG91 bGRfcHJpbnQgKHN5bSwgTUlfUFJJTlRfTE9DQUxTKSkKLSsJewotKwkgIGRvX2NsZWFudXBzIChs b2NhbHNfY2xlYW51cHMpOwotKwkgIGNvbnRpbnVlOwotKwl9Ci0rCi0rICAgICAgLyogSWYgdGhl IG9iamVjdCBkaWQgbm90IHByb3ZpZGUgYSB2YWx1ZSwgcmVhZCBpdC4gICovCi0rICAgICAgaWYg KHZhbCA9PSBOVUxMKQotKwl7Ci0rCSAgVFJZX0NBVENIIChleGNlcHQsIFJFVFVSTl9NQVNLX0FM TCkKLSsJICAgIHsKLSsJICAgICAgdmFsID0gcmVhZF92YXJfdmFsdWUgKHN5bSwgZnJhbWUpOwot KwkgICAgfQotKwkgIGlmIChleGNlcHQucmVhc29uIDwgMCkKLSsJICAgIHsKLSsJICAgICAgZ2Ri cHlfY29udmVydF9leGNlcHRpb24gKGV4Y2VwdCk7Ci0rCSAgICAgIGRvX2NsZWFudXBzIChsb2Nh bHNfY2xlYW51cHMpOwotKwkgICAgICBnb3RvIGVycm9yOwotKwkgICAgfQotKwl9Ci0rCi0rICAg ICAgLyogV2l0aCBQUklOVF9OT19WQUxVRVMsIE1JIGRvZXMgbm90IGVtaXQgYSB0dXBsZSBub3Jt YWxseSBhcwotKwkgZWFjaCBvdXRwdXQgY29udGFpbnMgb25seSBvbmUgZmllbGQuICBUaGUgZXhj ZXB0aW9uIGlzCi0rCSAtc3RhY2stbGlzdC12YXJpYWJsZXMsIHdoaWNoIGFsd2F5cyBwcm92aWRl cyBhIHR1cGxlLiAgKi8KLSsgICAgICBpZiAodWlfb3V0X2lzX21pX2xpa2VfcCAob3V0KSkKLSsJ ewotKwkgIGlmIChwcmludF9hcmdzX2ZpZWxkIHx8IGFyZ3NfdHlwZSAhPSBOT19WQUxVRVMpCi0r CSAgICBtYWtlX2NsZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAob3V0LCBOVUxMKTsKLSsJ fQotKyAgICAgIFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19BTEwpCi0rCXsKLSsJICBp ZiAoISB1aV9vdXRfaXNfbWlfbGlrZV9wIChvdXQpKQotKwkgICAgewotKwkgICAgICAvKiBJZiB0 aGUgb3V0cHV0IGlzIG5vdCBNSSB3ZSBpbmRlbnQgbG9jYWxzLiAgKi8KLSsJICAgICAgdWlfb3V0 X3NwYWNlcyAob3V0LCBsb2NhbF9pbmRlbnQpOwotKwkgICAgfQotKwotKwkgIHVpX291dF9maWVs ZF9zdHJpbmcgKG91dCwgIm5hbWUiLCBzeW1fbmFtZSk7Ci0rCi0rCSAgaWYgKCEgdWlfb3V0X2lz X21pX2xpa2VfcCAob3V0KSkKLSsJICAgIHVpX291dF90ZXh0IChvdXQsICIgPSAiKTsKLSsJfQot KyAgICAgIGlmIChleGNlcHQucmVhc29uIDwgMCkKLSsJewotKwkgIGdkYnB5X2NvbnZlcnRfZXhj ZXB0aW9uIChleGNlcHQpOwotKwkgIGRvX2NsZWFudXBzIChsb2NhbHNfY2xlYW51cHMpOwotKwkg IGdvdG8gZXJyb3I7Ci0rCX0KLSsKLSsgICAgICBpZiAoYXJnc190eXBlID09IE1JX1BSSU5UX1NJ TVBMRV9WQUxVRVMpCi0rCXsKLSsJICBpZiAocHlfcHJpbnRfdHlwZSAob3V0LCB2YWwpID09IFBZ X0JUX0VSUk9SKQotKwkgICAgewotKwkgICAgICBkb19jbGVhbnVwcyAobG9jYWxzX2NsZWFudXBz KTsKLSsJICAgICAgZ290byBlcnJvcjsKLSsJICAgIH0KLSsJfQotKwotKyAgICAgIC8qIENMSSBh bHdheXMgcHJpbnRzIHZhbHVlcyBmb3IgbG9jYWxzLiAgTUkgdXNlcyB0aGUKLSsJIHNpbXBsZS9u by9hbGwgc3lzdGVtLiAgKi8KLSsgICAgICBpZiAoISB1aV9vdXRfaXNfbWlfbGlrZV9wIChvdXQp KQotKwl7Ci0rCSAgaW50IHZhbF9pbmRlbnQgPSAoaW5kZW50ICsgMSkgKiA0OwotKwotKwkgIGlm IChweV9wcmludF92YWx1ZSAob3V0LCB2YWwsICZvcHRzLCB2YWxfaW5kZW50LCBhcmdzX3R5cGUs Ci0rCQkJICAgICAgbGFuZ3VhZ2UpID09ICBQWV9CVF9FUlJPUikKLSsJICAgIHsKLSsJICAgICAg ZG9fY2xlYW51cHMgKGxvY2Fsc19jbGVhbnVwcyk7Ci0rCSAgICAgIGdvdG8gZXJyb3I7Ci0rCSAg ICB9Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICBpZiAoYXJnc190eXBlICE9IE5PX1ZBTFVF UykKLSsJICAgIHsKLSsJICAgICAgaWYgKHB5X3ByaW50X3ZhbHVlIChvdXQsIHZhbCwgJm9wdHMs IDAsIGFyZ3NfdHlwZSwKLSsJCQkJICBsYW5ndWFnZSkgPT0gIFBZX0JUX0VSUk9SKQotKwkJewot KwkJICBkb19jbGVhbnVwcyAobG9jYWxzX2NsZWFudXBzKTsKLSsJCSAgZ290byBlcnJvcjsKLSsJ CX0KLSsJICAgIH0KLSsJfQotKwotKyAgICAgIGRvX2NsZWFudXBzIChsb2NhbHNfY2xlYW51cHMp OwotKwotKyAgICAgIFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19BTEwpCi0rCXsKLSsJ ICB1aV9vdXRfdGV4dCAob3V0LCAiXG4iKTsKLSsJfQotKyAgICAgIGlmIChleGNlcHQucmVhc29u IDwgMCkKLSsJewotKwkgIGdkYnB5X2NvbnZlcnRfZXhjZXB0aW9uIChleGNlcHQpOwotKwkgIGdv dG8gZXJyb3I7Ci0rCX0KLSsgICAgfQotKwotKyAgaWYgKGl0ZW0gPT0gTlVMTCAmJiBQeUVycl9P Y2N1cnJlZCAoKSkKLSsgICAgZ290byBlcnJvcjsKLSsKLSsgIHJldHVybiBQWV9CVF9PSzsKLSsK LSsgZXJyb3I6Ci0rICByZXR1cm4gUFlfQlRfRVJST1I7Ci0rfQotKwotKy8qICBIZWxwZXIgZnVu Y3Rpb24gZm9yIC1zdGFjay1saXN0LXZhcmlhYmxlcy4gIFJldHVybnMgUFlfQlRfRVJST1Igb24K LSsgICAgZXJyb3IsIG9yIFBZX0JUX09LIG9uIHN1Y2Nlc3MuICAqLwotKwotK3N0YXRpYyBlbnVt IHB5X2J0X3N0YXR1cwotK3B5X21pX3ByaW50X3ZhcmlhYmxlcyAoUHlPYmplY3QgKmZpbHRlciwg c3RydWN0IHVpX291dCAqb3V0LAotKwkJICAgICAgIHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25z ICpvcHRzLAotKwkJICAgICAgIGVudW0gcHlfZnJhbWVfYXJncyBhcmdzX3R5cGUsCi0rCQkgICAg ICAgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQotK3sKLSsgIHN0cnVjdCBjbGVhbnVwICpvbGRf Y2hhaW47Ci0rICBQeU9iamVjdCAqYXJnc19pdGVyOwotKyAgUHlPYmplY3QgKmxvY2Fsc19pdGVy OwotKwotKyAgYXJnc19pdGVyID0gZ2V0X3B5X2l0ZXJfZnJvbV9mdW5jIChmaWx0ZXIsICJmcmFt ZV9hcmdzIik7Ci0rICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXBfcHlfeGRlY3JlZiAoYXJnc19p dGVyKTsKLSsgIGlmIChhcmdzX2l0ZXIgPT0gTlVMTCkKLSsgICAgZ290byBlcnJvcjsKLSsKLSsg IGxvY2Fsc19pdGVyID0gZ2V0X3B5X2l0ZXJfZnJvbV9mdW5jIChmaWx0ZXIsICJmcmFtZV9sb2Nh bHMiKTsKLSsgIGlmIChsb2NhbHNfaXRlciA9PSBOVUxMKQotKyAgICBnb3RvIGVycm9yOwotKwot KyAgbWFrZV9jbGVhbnVwX3B5X2RlY3JlZiAobG9jYWxzX2l0ZXIpOwotKyAgbWFrZV9jbGVhbnVw X3VpX291dF9saXN0X2JlZ2luX2VuZCAob3V0LCAidmFyaWFibGVzIik7Ci0rCi0rICBpZiAoYXJn c19pdGVyICE9IFB5X05vbmUpCi0rICAgIGlmIChlbnVtZXJhdGVfYXJncyAoYXJnc19pdGVyLCBv dXQsIGFyZ3NfdHlwZSwgMSwgZnJhbWUpID09IFBZX0JUX0VSUk9SKQotKyAgICAgIGdvdG8gZXJy b3I7Ci0rCi0rICBpZiAobG9jYWxzX2l0ZXIgIT0gUHlfTm9uZSkKLSsgICAgaWYgKGVudW1lcmF0 ZV9sb2NhbHMgKGxvY2Fsc19pdGVyLCBvdXQsIDEsIGFyZ3NfdHlwZSwgMSwgZnJhbWUpCi0rCT09 IFBZX0JUX0VSUk9SKQotKyAgICAgIGdvdG8gZXJyb3I7Ci0rCi0rICBkb19jbGVhbnVwcyAob2xk X2NoYWluKTsKLSsgIHJldHVybiBQWV9CVF9PSzsKLSsKLSsgZXJyb3I6Ci0rICBkb19jbGVhbnVw cyAob2xkX2NoYWluKTsKLSsgIHJldHVybiBQWV9CVF9FUlJPUjsKLSt9Ci0rCi0rLyogSGVscGVy IGZ1bmN0aW9uIGZvciBwcmludGluZyBsb2NhbHMuICBUaGlzIGZ1bmN0aW9uIGxhcmdlbHkganVz dAotKyAgIGNyZWF0ZXMgdGhlIHdyYXBwaW5nIHR1cGxlLCBhbmQgY2FsbHMgZW51bWVyYXRlX2xv Y2Fscy4gIFJldHVybnMKLSsgICBQWV9CVF9FUlJPUiBvbiBlcnJvciwgb3IgUFlfQlRfT0sgb24g c3VjY2Vzcy4qLwotKwotK3N0YXRpYyBlbnVtIHB5X2J0X3N0YXR1cwotK3B5X3ByaW50X2xvY2Fs cyAoUHlPYmplY3QgKmZpbHRlciwKLSsJCSBzdHJ1Y3QgdWlfb3V0ICpvdXQsCi0rCQkgZW51bSBw eV9mcmFtZV9hcmdzIGFyZ3NfdHlwZSwKLSsJCSBpbnQgaW5kZW50LAotKwkJIHN0cnVjdCBmcmFt ZV9pbmZvICpmcmFtZSkKLSt7Ci0rICBQeU9iamVjdCAqbG9jYWxzX2l0ZXIgPSBnZXRfcHlfaXRl cl9mcm9tX2Z1bmMgKGZpbHRlciwKLSsJCQkJCQkgImZyYW1lX2xvY2FscyIpOwotKyAgc3RydWN0 IGNsZWFudXAgKm9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cF9weV94ZGVjcmVmIChsb2NhbHNfaXRl cik7Ci0rCi0rICBpZiAobG9jYWxzX2l0ZXIgPT0gTlVMTCkKLSsgICAgZ290byBsb2NhbHNfZXJy b3I7Ci0rCi0rICBtYWtlX2NsZWFudXBfdWlfb3V0X2xpc3RfYmVnaW5fZW5kIChvdXQsICJsb2Nh bHMiKTsKLSsKLSsgIGlmIChsb2NhbHNfaXRlciAhPSBQeV9Ob25lKQotKyAgICBpZiAoZW51bWVy YXRlX2xvY2FscyAobG9jYWxzX2l0ZXIsIG91dCwgaW5kZW50LCBhcmdzX3R5cGUsCi0rCQkJICAw LCBmcmFtZSkgPT0gUFlfQlRfRVJST1IpCi0rICAgICAgZ290byBsb2NhbHNfZXJyb3I7Ci0rCi0r ICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKLSsgIHJldHVybiBQWV9CVF9PSzs7Ci0rCi0rIGxv Y2Fsc19lcnJvcjoKLSsgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwotKyAgcmV0dXJuIFBZX0JU X0VSUk9SOwotK30KLSsKLSsvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHByaW50aW5nIGZyYW1lIGFy Z3VtZW50cy4gIFRoaXMgZnVuY3Rpb24KLSsgICBsYXJnZWx5IGp1c3QgY3JlYXRlcyB0aGUgd3Jh cHBpbmcgdHVwbGUsIGFuZCBjYWxscyBlbnVtZXJhdGVfYXJncy4KLSsgICBSZXR1cm5zIFBZX0JU X0VSUk9SIG9uIGVycm9yLCB3aXRoIGFueSBHREIgZXhjZXB0aW9ucyBjb252ZXJ0ZWQgdG8KLSsg ICBhIFB5dGhvbiBleGNlcHRpb24sIG9yIFBZX0JUX09LIG9uIHN1Y2Nlc3MuICAqLwotKwotK3N0 YXRpYyBlbnVtIHB5X2J0X3N0YXR1cwotK3B5X3ByaW50X2FyZ3MgKFB5T2JqZWN0ICpmaWx0ZXIs Ci0rCSAgICAgICBzdHJ1Y3QgdWlfb3V0ICpvdXQsCi0rCSAgICAgICBlbnVtIHB5X2ZyYW1lX2Fy Z3MgYXJnc190eXBlLAotKwkgICAgICAgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQotK3sKLSsg IFB5T2JqZWN0ICphcmdzX2l0ZXIgID0gZ2V0X3B5X2l0ZXJfZnJvbV9mdW5jIChmaWx0ZXIsICJm cmFtZV9hcmdzIik7Ci0rICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluID0gbWFrZV9jbGVhbnVw X3B5X3hkZWNyZWYgKGFyZ3NfaXRlcik7Ci0rICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlv biBleGNlcHQ7Ci0rCi0rICBpZiAoYXJnc19pdGVyID09IE5VTEwpCi0rICAgIGdvdG8gYXJnc19l cnJvcjsKLSsKLSsgIG1ha2VfY2xlYW51cF91aV9vdXRfbGlzdF9iZWdpbl9lbmQgKG91dCwgImFy Z3MiKTsKLSsKLSsgIFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19BTEwpCi0rICAgIHsK LSsgICAgICBhbm5vdGF0ZV9mcmFtZV9hcmdzICgpOwotKyAgICAgIGlmICghIHVpX291dF9pc19t aV9saWtlX3AgKG91dCkpCi0rCXVpX291dF90ZXh0IChvdXQsICIgKCIpOwotKyAgICB9Ci0rICBp ZiAoZXhjZXB0LnJlYXNvbiA8IDApCi0rICAgIHsKLSsgICAgICBnZGJweV9jb252ZXJ0X2V4Y2Vw dGlvbiAoZXhjZXB0KTsKLSsgICAgICBnb3RvIGFyZ3NfZXJyb3I7Ci0rICAgIH0KLSsKLSsgIGlm IChhcmdzX2l0ZXIgIT0gUHlfTm9uZSkKLSsgICAgaWYgKGVudW1lcmF0ZV9hcmdzIChhcmdzX2l0 ZXIsIG91dCwgYXJnc190eXBlLCAwLCBmcmFtZSkgPT0gUFlfQlRfRVJST1IpCi0rICAgICAgZ290 byBhcmdzX2Vycm9yOwotKwotKyAgVFJZX0NBVENIIChleGNlcHQsIFJFVFVSTl9NQVNLX0FMTCkK LSsgICAgewotKyAgICAgIGlmICghIHVpX291dF9pc19taV9saWtlX3AgKG91dCkpCi0rCXVpX291 dF90ZXh0IChvdXQsICIpIik7Ci0rICAgIH0KLSsgIGlmIChleGNlcHQucmVhc29uIDwgMCkKLSsg ICAgewotKyAgICAgIGdkYnB5X2NvbnZlcnRfZXhjZXB0aW9uIChleGNlcHQpOwotKyAgICAgIGdv dG8gYXJnc19lcnJvcjsKLSsgICAgfQotKwotKyAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7Ci0r ICByZXR1cm4gUFlfQlRfT0s7Ci0rCi0rIGFyZ3NfZXJyb3I6Ci0rICBkb19jbGVhbnVwcyAob2xk X2NoYWluKTsKLSsgIHJldHVybiBQWV9CVF9FUlJPUjsKLSt9Ci0rCi0rLyogIFByaW50IGEgc2lu Z2xlIGZyYW1lIHRvIHRoZSBkZXNpZ25hdGVkIG91dHB1dCBzdHJlYW0sIGRldGVjdGluZwotKyAg ICB3aGV0aGVyIHRoZSBvdXRwdXQgaXMgTUkgb3IgY29uc29sZSwgYW5kIGZvcm1hdHRpbmcgdGhl IG91dHB1dAotKyAgICBhY2NvcmRpbmcgdG8gdGhlIGNvbnZlbnRpb25zIG9mIHRoYXQgcHJvdG9j b2wuICBGSUxURVIgaXMgdGhlCi0rICAgIGZyYW1lLWZpbHRlciBhc3NvY2lhdGVkIHdpdGggdGhp cyBmcmFtZS4gIEZMQUdTIGlzIGFuIGludGVnZXIKLSsgICAgZGVzY3JpYmluZyB0aGUgdmFyaW91 cyBwcmludCBvcHRpb25zLiAgVGhlIEZMQUdTIHZhcmlhYmxlcyBpcwotKyAgICBkZXNjcmliZWQg aW4gImFwcGx5X2ZyYW1lX2ZpbHRlciIgZnVuY3Rpb24uICBBUkdTX1RZUEUgaXMgYW4KLSsgICAg ZW51bWVyYXRvciBkZXNjcmliaW5nIHRoZSBhcmd1bWVudCBmb3JtYXQuICBPVVQgaXMgdGhlIG91 dHB1dAotKyAgICBzdHJlYW0gdG8gcHJpbnQsIElOREVOVCBpcyB0aGUgbGV2ZWwgb2YgaW5kZW50 aW9uIGZvciB0aGlzIGZyYW1lCi0rICAgIChpbiB0aGUgY2FzZSBvZiBlbGlkZWQgZnJhbWVzKSwg YW5kIExFVkVMU19QUklOVEVEIGlzIGEgaGFzaC10YWJsZQotKyAgICBjb250YWluaW5nIGFsbCB0 aGUgZnJhbWVzIGxldmVsIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gcHJpbnRlZC4KLSsgICAgSWYg YSBmcmFtZSBsZXZlbCBoYXMgYmVlbiBwcmludGVkLCBkbyBub3QgcHJpbnQgaXQgYWdhaW4gKGlu IHRoZQotKyAgICBjYXNlIG9mIGVsaWRlZCBmcmFtZXMpLiAgUmV0dXJucyBQWV9CVF9FUlJPUiBv biBlcnJvciwgd2l0aCBhbnkKLSsgICAgR0RCIGV4Y2VwdGlvbnMgY29udmVydGVkIHRvIGEgUHl0 aG9uIGV4Y2VwdGlvbiwgb3IgUFlfQlRfQ09NUExFVEVECi0rICAgIG9uIHN1Y2Nlc3MuICAqLwot KwotK3N0YXRpYyBlbnVtIHB5X2J0X3N0YXR1cwotK3B5X3ByaW50X2ZyYW1lIChQeU9iamVjdCAq ZmlsdGVyLCBpbnQgZmxhZ3MsIGVudW0gcHlfZnJhbWVfYXJncyBhcmdzX3R5cGUsCi0rCQlzdHJ1 Y3QgdWlfb3V0ICpvdXQsIGludCBpbmRlbnQsIGh0YWJfdCBsZXZlbHNfcHJpbnRlZCkKLSt7Ci0r ICBpbnQgaGFzX2FkZHIgPSAwOwotKyAgQ09SRV9BRERSIGFkZHJlc3MgPSAwOwotKyAgc3RydWN0 IGdkYmFyY2ggKmdkYmFyY2ggPSBOVUxMOwotKyAgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lID0g TlVMTDsKLSsgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwX3N0YWNrID0gbWFrZV9jbGVhbnVwIChu dWxsX2NsZWFudXAsIE5VTEwpOwotKyAgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgb3B0czsK LSsgIFB5T2JqZWN0ICpweV9pbmZfZnJhbWUsICplbGlkZWQ7Ci0rICBpbnQgcHJpbnRfbGV2ZWws IHByaW50X2ZyYW1lX2luZm8sIHByaW50X2FyZ3MsIHByaW50X2xvY2FsczsKLSsgIHZvbGF0aWxl IHN0cnVjdCBnZGJfZXhjZXB0aW9uIGV4Y2VwdDsKLSsKLSsgIC8qIEV4dHJhY3QgcHJpbnQgc2V0 dGluZ3MgZnJvbSBGTEFHUy4gICovCi0rICBwcmludF9sZXZlbCA9IChmbGFncyAmIFBSSU5UX0xF VkVMKSA/IDEgOiAwOwotKyAgcHJpbnRfZnJhbWVfaW5mbyA9IChmbGFncyAmIFBSSU5UX0ZSQU1F X0lORk8pID8gMSA6IDA7Ci0rICBwcmludF9hcmdzID0gKGZsYWdzICYgUFJJTlRfQVJHUykgPyAx IDogMDsKLSsgIHByaW50X2xvY2FscyA9IChmbGFncyAmIFBSSU5UX0xPQ0FMUykgPyAxIDogMDsK LSsKLSsgIGdldF91c2VyX3ByaW50X29wdGlvbnMgKCZvcHRzKTsKLSsKLSsgIC8qIEdldCB0aGUg dW5kZXJseWluZyBmcmFtZS4gIFRoaXMgaXMgbmVlZGVkIHRvIGRldGVybWluZSBHREIKLSsgIGFy Y2hpdGVjdHVyZSwgYW5kIGFsc28sIGluIHRoZSBjYXNlcyBvZiBmcmFtZSB2YXJpYWJsZXMvYXJn dW1lbnRzIHRvCi0rICByZWFkIHRoZW0gaWYgdGhleSByZXR1cm5lZCBmaWx0ZXIgb2JqZWN0IHJl cXVpcmVzIHVzIHRvIGRvIHNvLiAgKi8KLSsgIHB5X2luZl9mcmFtZSA9IFB5T2JqZWN0X0NhbGxN ZXRob2QgKGZpbHRlciwgImluZmVyaW9yX2ZyYW1lIiwgTlVMTCk7Ci0rICBpZiAocHlfaW5mX2Zy YW1lID09IE5VTEwpCi0rICAgIGdvdG8gZXJyb3I7Ci0rCi0rICBmcmFtZSA9IGZyYW1lX29iamVj dF90b19mcmFtZV9pbmZvIChweV9pbmZfZnJhbWUpOzsKLSsKLSsgIFB5X0RFQ1JFRiAocHlfaW5m X2ZyYW1lKTsKLSsKLSsgIGlmIChmcmFtZSA9PSBOVUxMKQotKyAgICBnb3RvIGVycm9yOwotKwot KyAgVFJZX0NBVENIIChleGNlcHQsIFJFVFVSTl9NQVNLX0FMTCkKLSsgICAgewotKyAgICAgIGdk YmFyY2ggPSBnZXRfZnJhbWVfYXJjaCAoZnJhbWUpOwotKyAgICB9Ci0rICBpZiAoZXhjZXB0LnJl YXNvbiA8IDApCi0rICAgIHsKLSsgICAgICBnZGJweV9jb252ZXJ0X2V4Y2VwdGlvbiAoZXhjZXB0 KTsKLSsgICAgICBnb3RvIGVycm9yOwotKyAgICB9Ci0rCi0rCi0rICAvKiBzdGFjay1saXN0LXZh cmlhYmxlcy4gICovCi0rICBpZiAocHJpbnRfbG9jYWxzICYmIHByaW50X2FyZ3MgJiYgISBwcmlu dF9mcmFtZV9pbmZvKQotKyAgICB7Ci0rICAgICAgaWYgKHB5X21pX3ByaW50X3ZhcmlhYmxlcyAo ZmlsdGVyLCBvdXQsICZvcHRzLAotKwkJCQkgYXJnc190eXBlLCBmcmFtZSkgPT0gUFlfQlRfRVJS T1IpCi0rCWdvdG8gZXJyb3I7Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgZG9fY2xlYW51cHMgKGNs ZWFudXBfc3RhY2spOwotKwkgIHJldHVybiBQWV9CVF9DT01QTEVURUQ7Ci0rCX0KLSsgICAgfQot KwotKyAgLyogLXN0YWNrLWxpc3QtbG9jYWxzIGRvZXMgbm90IHJlcXVpcmUgYQotKyAgICAgd3Jh cHBpbmcgZnJhbWUgYXR0cmlidXRlLiAgKi8KLSsgIGlmIChwcmludF9mcmFtZV9pbmZvIHx8IChw cmludF9hcmdzICYmICEgcHJpbnRfbG9jYWxzKSkKLSsgICAgbWFrZV9jbGVhbnVwX3VpX291dF90 dXBsZV9iZWdpbl9lbmQgKG91dCwgImZyYW1lIik7Ci0rCi0rICBpZiAocHJpbnRfZnJhbWVfaW5m bykKLSsgICAgewotKyAgICAgIC8qIEVsaWRlZCBmcmFtZXMgYXJlIGFsc28gcHJpbnRlZCB3aXRo IHRoaXMgZnVuY3Rpb24gKHJlY3Vyc2l2ZWx5KQotKwkgYW5kIGFyZSBwcmludGVkIHdpdGggaW5k ZW50aW9uLiAgKi8KLSsgICAgICBpZiAoaW5kZW50ID4gMCkKLSsJewotKwlUUllfQ0FUQ0ggKGV4 Y2VwdCwgUkVUVVJOX01BU0tfQUxMKQotKwkgIHsKLSsJICAgIHVpX291dF9zcGFjZXMgKG91dCwg aW5kZW50KjQpOwotKwkgIH0KLSsJaWYgKGV4Y2VwdC5yZWFzb24gPCAwKQotKwkgIHsKLSsJICAg IGdkYnB5X2NvbnZlcnRfZXhjZXB0aW9uIChleGNlcHQpOwotKwkgICAgZ290byBlcnJvcjsKLSsJ ICB9Ci0rCX0KLSsKLSsgICAgICAvKiBUaGUgYWRkcmVzcyBpcyByZXF1aXJlZCBmb3IgZnJhbWUg YW5ub3RhdGlvbnMsIGFuZCBhbHNvIGZvcgotKwkgYWRkcmVzcyBwcmludGluZy4gICovCi0rICAg ICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcgKGZpbHRlciwgImFkZHJlc3MiKSkKLSsJewot KwkgIFB5T2JqZWN0ICpwYWRkciA9IFB5T2JqZWN0X0NhbGxNZXRob2QgKGZpbHRlciwgImFkZHJl c3MiLCBOVUxMKTsKLSsJICBpZiAocGFkZHIgIT0gTlVMTCkKLSsJICAgIHsKLSsJICAgICAgaWYg KHBhZGRyICE9IFB5X05vbmUpCi0rCQl7Ci0rCQkgIGFkZHJlc3MgPSBQeUxvbmdfQXNMb25nIChw YWRkcik7Ci0rCQkgIGhhc19hZGRyID0gMTsKLSsJCX0KLSsJICAgICAgUHlfREVDUkVGIChwYWRk cik7Ci0rCSAgICB9Ci0rCSAgZWxzZQotKwkgICAgZ290byBlcnJvcjsKLSsJfQotKyAgICB9Ci0r Ci0rICAvKiBQcmludCBmcmFtZSBsZXZlbC4gIE1JIGRvZXMgbm90IHJlcXVpcmUgdGhlIGxldmVs IGlmCi0rICAgICBsb2NhbHMvdmFyaWFibGVzIG9ubHkgYXJlIGJlaW5nIHByaW50ZWQuICAqLwot KyAgaWYgKChwcmludF9mcmFtZV9pbmZvIHx8IHByaW50X2FyZ3MpICYmIHByaW50X2xldmVsKQot KyAgICB7Ci0rICAgICAgc3RydWN0IGZyYW1lX2luZm8gKipzbG90OwotKyAgICAgIGludCBsZXZl bDsKLSsgICAgICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBleGNlcHQ7Ci0rCi0rICAg ICAgc2xvdCA9IChzdHJ1Y3QgZnJhbWVfaW5mbyAqKikgaHRhYl9maW5kX3Nsb3QgKGxldmVsc19w cmludGVkLAotKwkJCQkJCSAgICBmcmFtZSwgSU5TRVJUKTsKLSsgICAgICBUUllfQ0FUQ0ggKGV4 Y2VwdCwgUkVUVVJOX01BU0tfQUxMKQotKwl7Ci0rCSAgbGV2ZWwgPSBmcmFtZV9yZWxhdGl2ZV9s ZXZlbCAoZnJhbWUpOwotKwotKwkgIC8qIENoZWNrIGlmIHRoaXMgZnJhbWUgaGFzIGFscmVhZHkg YmVlbiBwcmludGVkICh0aGVyZSBhcmUgY2FzZXMKLSsJICAgICB3aGVyZSBlbGlkZWQgc3ludGhl dGljIGR1bW15LWZyYW1lcyBoYXZlIHRvICdib3Jyb3cnIHRoZSBmcmFtZQotKwkgICAgIGFyY2hp dGVjdHVyZSBmcm9tIHRoZSBlbGlkaW5nIGZyYW1lLiAgSWYgdGhhdCBpcyB0aGUgY2FzZSwgZG8K LSsJICAgICBub3QgcHJpbnQgJ2xldmVsJywgYnV0IHByaW50IHNwYWNlcy4gICovCi0rCSAgaWYg KCpzbG90ID09IGZyYW1lKQotKwkgICAgdWlfb3V0X2ZpZWxkX3NraXAgKG91dCwgImxldmVsIik7 Ci0rCSAgZWxzZQotKwkgICAgewotKwkgICAgICAqc2xvdCA9IGZyYW1lOwotKwkgICAgICBhbm5v dGF0ZV9mcmFtZV9iZWdpbiAocHJpbnRfbGV2ZWwgPyBsZXZlbCA6IDAsCi0rCQkJCSAgICBnZGJh cmNoLCBhZGRyZXNzKTsKLSsJICAgICAgdWlfb3V0X3RleHQgKG91dCwgIiMiKTsKLSsJICAgICAg dWlfb3V0X2ZpZWxkX2ZtdF9pbnQgKG91dCwgMiwgdWlfbGVmdCwgImxldmVsIiwKLSsJCQkJICAg IGxldmVsKTsKLSsJICAgIH0KLSsJfQotKyAgICAgIGlmIChleGNlcHQucmVhc29uIDwgMCkKLSsJ ewotKwkgIGdkYnB5X2NvbnZlcnRfZXhjZXB0aW9uIChleGNlcHQpOwotKwkgIGdvdG8gZXJyb3I7 Ci0rCX0KLSsgICAgfQotKwotKyAgaWYgKHByaW50X2ZyYW1lX2luZm8pCi0rICAgIHsKLSsgICAg ICAvKiBQcmludCBhZGRyZXNzIHRvIHRoZSBhZGRyZXNzIGZpZWxkLiAgSWYgYW4gYWRkcmVzcyBp cyBub3QgcHJvdmlkZWQsCi0rCSBwcmludCBub3RoaW5nLiAgKi8KLSsgICAgICBpZiAob3B0cy5h ZGRyZXNzcHJpbnQgJiYgaGFzX2FkZHIpCi0rCXsKLSsJICBUUllfQ0FUQ0ggKGV4Y2VwdCwgUkVU VVJOX01BU0tfQUxMKQotKwkgICAgewotKwkgICAgICBhbm5vdGF0ZV9mcmFtZV9hZGRyZXNzICgp OwotKwkgICAgICB1aV9vdXRfZmllbGRfY29yZV9hZGRyIChvdXQsICJhZGRyIiwgZ2RiYXJjaCwg YWRkcmVzcyk7Ci0rCSAgICAgIGFubm90YXRlX2ZyYW1lX2FkZHJlc3NfZW5kICgpOwotKwkgICAg ICB1aV9vdXRfdGV4dCAob3V0LCAiIGluICIpOwotKwkgICAgfQotKwkgIGlmIChleGNlcHQucmVh c29uIDwgMCkKLSsJICAgIHsKLSsJICAgICAgZ2RicHlfY29udmVydF9leGNlcHRpb24gKGV4Y2Vw dCk7Ci0rCSAgICAgIGdvdG8gZXJyb3I7Ci0rCSAgICB9Ci0rCX0KLSsKLSsgICAgICAvKiBQcmlu dCBmcmFtZSBmdW5jdGlvbiBuYW1lLiAgKi8KLSsgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0 cmluZyAoZmlsdGVyLCAiZnVuY3Rpb24iKSkKLSsJewotKwkgIFB5T2JqZWN0ICpweV9mdW5jID0g UHlPYmplY3RfQ2FsbE1ldGhvZCAoZmlsdGVyLCAiZnVuY3Rpb24iLCBOVUxMKTsKLSsKLSsJICBp ZiAocHlfZnVuYyAhPSBOVUxMKQotKwkgICAgewotKwkgICAgICBjb25zdCBjaGFyICpmdW5jdGlv biA9IE5VTEw7Ci0rCi0rCSAgICAgIGlmIChnZGJweV9pc19zdHJpbmcgKHB5X2Z1bmMpKQotKwkJ ewotKwkJICBmdW5jdGlvbiA9IFB5U3RyaW5nX0FzU3RyaW5nIChweV9mdW5jKTsKLSsKLSsJCSAg aWYgKGZ1bmN0aW9uID09IE5VTEwpCi0rCQkgICAgewotKwkJICAgICAgUHlfREVDUkVGIChweV9m dW5jKTsKLSsJCSAgICAgIGdvdG8gZXJyb3I7Ci0rCQkgICAgfQotKwkJfQotKwkgICAgICBlbHNl IGlmIChQeUxvbmdfQ2hlY2sgKHB5X2Z1bmMpKQotKwkJewotKwkJICBDT1JFX0FERFIgYWRkciA9 IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcgKHB5X2Z1bmMpOwotKwkJICBzdHJ1Y3QgbWluaW1h bF9zeW1ib2wgKm1zeW1ib2w7Ci0rCi0rCQkgIGlmIChQeUVycl9PY2N1cnJlZCAoKSkKLSsJCSAg ICBnb3RvIGVycm9yOwotKwotKwkJICBtc3ltYm9sID0gbG9va3VwX21pbmltYWxfc3ltYm9sX2J5 X3BjIChhZGRyKTsKLSsJCSAgaWYgKG1zeW1ib2wgIT0gTlVMTCkKLSsJCSAgICBmdW5jdGlvbiA9 IFNZTUJPTF9QUklOVF9OQU1FIChtc3ltYm9sKTsKLSsJCX0KLSsJICAgICAgZWxzZSBpZiAocHlf ZnVuYyAhPSBQeV9Ob25lKQotKwkJewotKwkJICBQeUVycl9TZXRTdHJpbmcgKFB5RXhjX1J1bnRp bWVFcnJvciwKLSsJCQkJICAgXygiRnJhbWVEZWNvcmF0b3IuZnVuY3Rpb246IGV4cGVjdGluZyBh ICIgXAotKwkJCQkgICAgICJTdHJpbmcsIGludGVnZXIgb3IgTm9uZS4iKSk7Ci0rCQkgIFB5X0RF Q1JFRiAocHlfZnVuYyk7Ci0rCQkgIGdvdG8gZXJyb3I7Ci0rCQl9Ci0rCi0rCi0rCSAgICAgIFRS WV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19BTEwpCi0rCQl7Ci0rCQkgIGFubm90YXRlX2Zy YW1lX2Z1bmN0aW9uX25hbWUgKCk7Ci0rCQkgIGlmIChmdW5jdGlvbiA9PSBOVUxMKQotKwkJICAg IHVpX291dF9maWVsZF9za2lwIChvdXQsICJmdW5jIik7Ci0rCQkgIGVsc2UKLSsJCSAgICB1aV9v dXRfZmllbGRfc3RyaW5nIChvdXQsICJmdW5jIiwgZnVuY3Rpb24pOwotKwkJfQotKwkgICAgICBp ZiAoZXhjZXB0LnJlYXNvbiA8IDApCi0rCQl7Ci0rCQkgIFB5X0RFQ1JFRiAocHlfZnVuYyk7Ci0r CQkgIGdkYnB5X2NvbnZlcnRfZXhjZXB0aW9uIChleGNlcHQpOwotKwkJICBnb3RvIGVycm9yOwot KwkJfQotKwkgICAgfQotKwkgIFB5X0RFQ1JFRiAocHlfZnVuYyk7Ci0rCX0KLSsgICAgICBlbHNl Ci0rCWdvdG8gZXJyb3I7Ci0rICAgIH0KLSsKLSsKLSsgIC8qIEZyYW1lIGFyZ3VtZW50cy4gIENo ZWNrIHRoZSByZXN1bHQsIGFuZCBlcnJvciBpZiBzb21ldGhpbmcgd2VudAotKyAgICAgd3Jvbmcu ICAqLwotKyAgaWYgKHByaW50X2FyZ3MpCi0rICAgIHsKLSsgICAgICBpZiAocHlfcHJpbnRfYXJn cyAoZmlsdGVyLCBvdXQsIGFyZ3NfdHlwZSwgZnJhbWUpID09IFBZX0JUX0VSUk9SKQotKwlnb3Rv IGVycm9yOwotKyAgICB9Ci0rCi0rICAvKiBGaWxlIG5hbWUvc291cmNlL2xpbmUgbnVtYmVyIGlu Zm9ybWF0aW9uLiAgKi8KLSsgIGlmIChwcmludF9mcmFtZV9pbmZvKQotKyAgICB7Ci0rICAgICAg VFJZX0NBVENIIChleGNlcHQsIFJFVFVSTl9NQVNLX0FMTCkKLSsJewotKwkgIGFubm90YXRlX2Zy YW1lX3NvdXJjZV9iZWdpbiAoKTsKLSsJfQotKyAgICAgIGlmIChleGNlcHQucmVhc29uIDwgMCkK LSsJewotKwkgIGdkYnB5X2NvbnZlcnRfZXhjZXB0aW9uIChleGNlcHQpOwotKwkgIGdvdG8gZXJy b3I7Ci0rCX0KLSsKLSsgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyAoZmlsdGVyLCAi ZmlsZW5hbWUiKSkKLSsJewotKwkgIFB5T2JqZWN0ICpweV9mbiA9IFB5T2JqZWN0X0NhbGxNZXRo b2QgKGZpbHRlciwgImZpbGVuYW1lIiwKLSsJCQkJCQkgTlVMTCk7Ci0rCSAgaWYgKHB5X2ZuICE9 IE5VTEwpCi0rCSAgICB7Ci0rCSAgICAgIGlmIChweV9mbiAhPSBQeV9Ob25lKQotKwkJewotKwkJ ICBjaGFyICpmaWxlbmFtZSA9IFB5U3RyaW5nX0FzU3RyaW5nIChweV9mbik7Ci0rCi0rCQkgIGlm IChmaWxlbmFtZSA9PSBOVUxMKQotKwkJICAgIHsKLSsJCSAgICAgIFB5X0RFQ1JFRiAocHlfZm4p OwotKwkJICAgICAgZ290byBlcnJvcjsKLSsJCSAgICB9Ci0rCQkgIFRSWV9DQVRDSCAoZXhjZXB0 LCBSRVRVUk5fTUFTS19BTEwpCi0rCQkgICAgewotKwkJICAgICAgdWlfb3V0X3dyYXBfaGludCAo b3V0LCAiICAgIik7Ci0rCQkgICAgICB1aV9vdXRfdGV4dCAob3V0LCAiIGF0ICIpOwotKwkJICAg ICAgYW5ub3RhdGVfZnJhbWVfc291cmNlX2ZpbGUgKCk7Ci0rCQkgICAgICB1aV9vdXRfZmllbGRf c3RyaW5nIChvdXQsICJmaWxlIiwgZmlsZW5hbWUpOwotKwkJICAgICAgYW5ub3RhdGVfZnJhbWVf c291cmNlX2ZpbGVfZW5kICgpOwotKwkJICAgIH0KLSsJCSAgaWYgKGV4Y2VwdC5yZWFzb24gPCAw KQotKwkJICAgIHsKLSsJCSAgICAgIFB5X0RFQ1JFRiAocHlfZm4pOwotKwkJICAgICAgZ2RicHlf Y29udmVydF9leGNlcHRpb24gKGV4Y2VwdCk7Ci0rCQkgICAgICBnb3RvIGVycm9yOwotKwkJICAg IH0KLSsJCX0KLSsJICAgICAgUHlfREVDUkVGIChweV9mbik7Ci0rCSAgICB9Ci0rCSAgZWxzZQot KwkgICAgZ290byBlcnJvcjsKLSsJfQotKwotKyAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3Ry aW5nIChmaWx0ZXIsICJsaW5lIikpCi0rCXsKLSsJICBQeU9iamVjdCAqcHlfbGluZSA9IFB5T2Jq ZWN0X0NhbGxNZXRob2QgKGZpbHRlciwgImxpbmUiLCBOVUxMKTsKLSsJICBpbnQgbGluZTsKLSsK LSsJICBpZiAocHlfbGluZSAhPSBOVUxMKQotKwkgICAgewotKwkgICAgICBpZiAocHlfbGluZSAh PSBQeV9Ob25lKQotKwkJewotKwkJICBsaW5lID0gUHlMb25nX0FzTG9uZyAocHlfbGluZSk7Ci0r CQkgIFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19BTEwpCi0rCQkgICAgewotKwkJICAg ICAgdWlfb3V0X3RleHQgKG91dCwgIjoiKTsKLSsJCSAgICAgIGFubm90YXRlX2ZyYW1lX3NvdXJj ZV9saW5lICgpOwotKwkJICAgICAgdWlfb3V0X2ZpZWxkX2ludCAob3V0LCAibGluZSIsIGxpbmUp OwotKwkJICAgIH0KLSsJCSAgaWYgKGV4Y2VwdC5yZWFzb24gPCAwKQotKwkJICAgIHsKLSsJCSAg ICAgIFB5X0RFQ1JFRiAocHlfbGluZSk7Ci0rCQkgICAgICBnZGJweV9jb252ZXJ0X2V4Y2VwdGlv biAoZXhjZXB0KTsKLSsJCSAgICAgIGdvdG8gZXJyb3I7Ci0rCQkgICAgfQotKwkJfQotKwkgICAg ICBQeV9ERUNSRUYgKHB5X2xpbmUpOwotKwkgICAgfQotKwkgIGVsc2UKLSsJICAgIGdvdG8gZXJy b3I7Ci0rCX0KLSsgICAgfQotKwotKyAgLyogRm9yIE1JIHdlIG5lZWQgdG8gZGVhbCB3aXRoIHRo ZSAiY2hpbGRyZW4iIGxpc3QgcG9wdWxhdGlvbiBvZgotKyAgICAgZWxpZGVkIGZyYW1lcywgc28g aWYgTUkgb3V0cHV0IGRldGVjdGVkIGRvIG5vdCBzZW5kIG5ld2xpbmUuICAqLwotKyAgaWYgKCEg dWlfb3V0X2lzX21pX2xpa2VfcCAob3V0KSkKLSsgICAgewotKyAgICAgIFRSWV9DQVRDSCAoZXhj ZXB0LCBSRVRVUk5fTUFTS19BTEwpCi0rCXsKLSsJICBhbm5vdGF0ZV9mcmFtZV9lbmQgKCk7Ci0r CSAgdWlfb3V0X3RleHQgKG91dCwgIlxuIik7Ci0rCX0KLSsgICAgICBpZiAoZXhjZXB0LnJlYXNv biA8IDApCi0rCXsKLSsJICBnZGJweV9jb252ZXJ0X2V4Y2VwdGlvbiAoZXhjZXB0KTsKLSsJICBn b3RvIGVycm9yOwotKwl9Ci0rICAgIH0KLSsKLSsgIGlmIChwcmludF9sb2NhbHMpCi0rICAgIHsK LSsgICAgICBpZiAocHlfcHJpbnRfbG9jYWxzIChmaWx0ZXIsIG91dCwgYXJnc190eXBlLCBpbmRl bnQsCi0rCQkJICAgZnJhbWUpID09IFBZX0JUX0VSUk9SKQotKwlnb3RvIGVycm9yOwotKyAgICB9 Ci0rCi0rICAvKiBGaW5hbGx5IHJlY3Vyc2l2ZWx5IHByaW50IGVsaWRlZCBmcmFtZXMsIGlmIGFu eS4gICovCi0rICBlbGlkZWQgID0gZ2V0X3B5X2l0ZXJfZnJvbV9mdW5jIChmaWx0ZXIsICJlbGlk ZWQiKTsKLSsgIGlmIChlbGlkZWQgPT0gTlVMTCkKLSsgICAgZ290byBlcnJvcjsKLSsKLSsgIG1h a2VfY2xlYW51cF9weV9kZWNyZWYgKGVsaWRlZCk7Ci0rICBpZiAoZWxpZGVkICE9IFB5X05vbmUp Ci0rICAgIHsKLSsgICAgICBQeU9iamVjdCAqaXRlbTsKLSsKLSsgICAgICBtYWtlX2NsZWFudXBf dWlfb3V0X2xpc3RfYmVnaW5fZW5kIChvdXQsICJjaGlsZHJlbiIpOwotKwotKyAgICAgIGlmICgh IHVpX291dF9pc19taV9saWtlX3AgKG91dCkpCi0rCWluZGVudCsrOwotKwotKyAgICAgIHdoaWxl ICgoaXRlbSA9IFB5SXRlcl9OZXh0IChlbGlkZWQpKSkKLSsJewotKwkgIGVudW0gcHlfYnRfc3Rh dHVzIHN1Y2Nlc3MgPSBweV9wcmludF9mcmFtZSAoaXRlbSwgZmxhZ3MsCi0rCQkJCQkJICAgICAg YXJnc190eXBlLCBvdXQsCi0rCQkJCQkJICAgICAgaW5kZW50LAotKwkJCQkJCSAgICAgIGxldmVs c19wcmludGVkKTsKLSsKLSsJICBpZiAoc3VjY2VzcyA9PSBQWV9CVF9FUlJPUikKLSsJICAgIHsK LSsJICAgICAgUHlfREVDUkVGIChpdGVtKTsKLSsJICAgICAgZ290byBlcnJvcjsKLSsJICAgIH0K LSsKLSsJICBQeV9ERUNSRUYgKGl0ZW0pOwotKwl9Ci0rICAgICAgaWYgKGl0ZW0gPT0gTlVMTCAm JiBQeUVycl9PY2N1cnJlZCAoKSkKLSsJZ290byBlcnJvcjsKLSsgICAgfQotKwotKwotKyAgZG9f Y2xlYW51cHMgKGNsZWFudXBfc3RhY2spOwotKyAgcmV0dXJuIFBZX0JUX0NPTVBMRVRFRDsKLSsK LSsgZXJyb3I6Ci0rICBkb19jbGVhbnVwcyAoY2xlYW51cF9zdGFjayk7Ci0rICByZXR1cm4gUFlf QlRfRVJST1I7Ci0rfQotKwotKy8qIEhlbHBlciBmdW5jdGlvbiB0byBpbml0aWF0ZSBmcmFtZSBm aWx0ZXIgaW52b2NhdGlvbiBhdCBzdGFydGluZwotKyAgIGZyYW1lIEZSQU1FLiAgKi8KLSsKLStz dGF0aWMgUHlPYmplY3QgKgotK2Jvb3RzdHJhcF9weXRob25fZnJhbWVfZmlsdGVycyAoc3RydWN0 IGZyYW1lX2luZm8gKmZyYW1lLAotKwkJCQlpbnQgZnJhbWVfbG93LCBpbnQgZnJhbWVfaGlnaCkK LSt7Ci0rICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cHMgPQotKyAgICBtYWtlX2NsZWFudXAgKG51 bGxfY2xlYW51cCwgTlVMTCk7Ci0rICBQeU9iamVjdCAqbW9kdWxlLCAqc29ydF9mdW5jLCAqaXRl cmFibGUsICpmcmFtZV9vYmosICppdGVyYXRvcjsKLSsgIFB5T2JqZWN0ICpweV9mcmFtZV9sb3cs ICpweV9mcmFtZV9oaWdoOwotKwotKyAgZnJhbWVfb2JqID0gZnJhbWVfaW5mb190b19mcmFtZV9v YmplY3QgKGZyYW1lKTsKLSsgIGlmIChmcmFtZV9vYmogPT0gTlVMTCkKLSsgICAgZ290byBlcnJv cjsKLSsgIG1ha2VfY2xlYW51cF9weV9kZWNyZWYgKGZyYW1lX29iaik7Ci0rCi0rICBtb2R1bGUg PSBQeUltcG9ydF9JbXBvcnRNb2R1bGUgKCJnZGIuZnJhbWVzIik7Ci0rICBpZiAobW9kdWxlID09 IE5VTEwpCi0rICAgIGdvdG8gZXJyb3I7Ci0rICBtYWtlX2NsZWFudXBfcHlfZGVjcmVmIChtb2R1 bGUpOwotKwotKyAgc29ydF9mdW5jID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyAobW9kdWxlLCAi ZXhlY3V0ZV9mcmFtZV9maWx0ZXJzIik7Ci0rICBpZiAoc29ydF9mdW5jID09IE5VTEwpCi0rICAg IGdvdG8gZXJyb3I7Ci0rICBtYWtlX2NsZWFudXBfcHlfZGVjcmVmIChzb3J0X2Z1bmMpOwotKwot KyAgcHlfZnJhbWVfbG93ID0gUHlJbnRfRnJvbUxvbmcgKGZyYW1lX2xvdyk7Ci0rICBpZiAocHlf ZnJhbWVfbG93ID09IE5VTEwpCi0rICAgIGdvdG8gZXJyb3I7Ci0rICBtYWtlX2NsZWFudXBfcHlf ZGVjcmVmIChweV9mcmFtZV9sb3cpOwotKwotKyAgcHlfZnJhbWVfaGlnaCA9IFB5SW50X0Zyb21M b25nIChmcmFtZV9oaWdoKTsKLSsgIGlmIChweV9mcmFtZV9oaWdoID09IE5VTEwpCi0rICAgIGdv dG8gZXJyb3I7Ci0rICBtYWtlX2NsZWFudXBfcHlfZGVjcmVmIChweV9mcmFtZV9oaWdoKTsKLSsK LSsgIGl0ZXJhYmxlID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyAoc29ydF9mdW5jLCBm cmFtZV9vYmosCi0rCQkJCQkgICBweV9mcmFtZV9sb3csCi0rCQkJCQkgICBweV9mcmFtZV9oaWdo LAotKwkJCQkJICAgTlVMTCk7Ci0rICBpZiAoaXRlcmFibGUgPT0gTlVMTCkKLSsgICAgZ290byBl cnJvcjsKLSsKLSsgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7Ci0rCi0rICBpZiAoaXRlcmFibGUg IT0gUHlfTm9uZSkKLSsgICAgewotKyAgICAgIGl0ZXJhdG9yID0gUHlPYmplY3RfR2V0SXRlciAo aXRlcmFibGUpOwotKyAgICAgIFB5X0RFQ1JFRiAoaXRlcmFibGUpOwotKyAgICB9Ci0rICBlbHNl Ci0rICAgIHsKLSsgICAgICByZXR1cm4gaXRlcmFibGU7Ci0rICAgIH0KLSsKLSsgIHJldHVybiBp dGVyYXRvcjsKLSsKLSsgZXJyb3I6Ci0rICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOwotKyAgcmV0 dXJuIE5VTEw7Ci0rfQotKwotKy8qICBUaGlzIGlzIHRoZSBvbmx5IHB1YmxpY2x5IGV4cG9ydGVk IGZ1bmN0aW9uIGluIHRoaXMgZmlsZS4gIEZSQU1FCi0rICAgIGlzIHRoZSBzb3VyY2UgZnJhbWUg dG8gc3RhcnQgZnJhbWUtZmlsdGVyIGludm9jYXRpb24uICBGTEFHUyBpcyBhbgotKyAgICBpbnRl Z2VyIGhvbGRpbmcgdGhlIGZsYWdzIGZvciBwcmludGluZy4gIFRoZSBmb2xsb3dpbmcgZWxlbWVu dHMgb2YKLSsgICAgdGhlIEZSQU1FX0ZJTFRFUl9GTEFHUyBlbnVtIGRlbm90ZXMgdGhlIG1ha2Ut dXAgb2YgRkxBR1M6Ci0rICAgIFBSSU5UX0xFVkVMIGlzIGEgZmxhZyBpbmRpY2F0aW5nIHdoZXRo ZXIgdG8gcHJpbnQgdGhlIGZyYW1lJ3MKLSsgICAgcmVsYXRpdmUgbGV2ZWwgaW4gdGhlIG91dHB1 dC4gIFBSSU5UX0ZSQU1FX0lORk8gaXMgYSBmbGFnIHRoYXQKLSsgICAgaW5kaWNhdGVzIHdoZXRo ZXIgdGhpcyBmdW5jdGlvbiBzaG91bGQgcHJpbnQgdGhlIGZyYW1lCi0rICAgIGluZm9ybWF0aW9u LCBQUklOVF9BUkdTIGlzIGEgZmxhZyB0aGF0IGluZGljYXRlcyB3aGV0aGVyIHRvIHByaW50Ci0r ICAgIGZyYW1lIGFyZ3VtZW50cywgYW5kIFBSSU5UX0xPQ0FMUywgbGlrZXdpc2UsIHdpdGggZnJh bWUgbG9jYWwKLSsgICAgdmFyaWFibGVzLiAgQVJHU19UWVBFIGlzIGFuIGVudW1lcmF0b3IgZGVz Y3JpYmluZyB0aGUgYXJndW1lbnQKLSsgICAgZm9ybWF0LCBPVVQgaXMgdGhlIG91dHB1dCBzdHJl YW0gdG8gcHJpbnQuICBGUkFNRV9MT1cgaXMgdGhlCi0rICAgIGJlZ2lubmluZyBvZiB0aGUgc2xp Y2Ugb2YgZnJhbWVzIHRvIHByaW50LCBhbmQgRlJBTUVfSElHSCBpcyB0aGUKLSsgICAgdXBwZXIg bGltaXQgb2YgdGhlIGZyYW1lcyB0byBjb3VudC4gIFJldHVybnMgUFlfQlRfRVJST1Igb24gZXJy b3IsCi0rICAgIG9yIFBZX0JUX0NPTVBMRVRFRCBvbiBzdWNjZXNzLiovCi0rCi0rZW51bSBweV9i dF9zdGF0dXMKLSthcHBseV9mcmFtZV9maWx0ZXIgKHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwg aW50IGZsYWdzLAotKwkJICAgIGVudW0gcHlfZnJhbWVfYXJncyBhcmdzX3R5cGUsCi0rCQkgICAg c3RydWN0IHVpX291dCAqb3V0LCBpbnQgZnJhbWVfbG93LAotKwkJICAgIGludCBmcmFtZV9oaWdo KQotKwotK3sKLSsgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gTlVMTDsKLSsgIHN0cnVjdCBj bGVhbnVwICpjbGVhbnVwczsKLSsgIGVudW0gcHlfYnRfc3RhdHVzIHN1Y2Nlc3MgPSBQWV9CVF9F UlJPUjsKLSsgIFB5T2JqZWN0ICppdGVyYWJsZTsKLSsgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhj ZXB0aW9uIGV4Y2VwdDsKLSsgIFB5T2JqZWN0ICppdGVtOwotKyAgaHRhYl90IGxldmVsc19wcmlu dGVkOwotKwotKyAgY2xlYW51cHMgPSBlbnN1cmVfcHl0aG9uX2VudiAoZ2RiYXJjaCwgY3VycmVu dF9sYW5ndWFnZSk7Ci0rCi0rICBUUllfQ0FUQ0ggKGV4Y2VwdCwgUkVUVVJOX01BU0tfQUxMKQot KyAgICB7Ci0rICAgICAgZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoIChmcmFtZSk7Ci0rICAgIH0K LSsgIGlmIChleGNlcHQucmVhc29uIDwgMCkKLSsgICAgewotKyAgICAgIGdkYnB5X2NvbnZlcnRf ZXhjZXB0aW9uIChleGNlcHQpOwotKyAgICAgIGdvdG8gZXJyb3I7Ci0rICAgIH0KLSsKLSsgIGl0 ZXJhYmxlID0gYm9vdHN0cmFwX3B5dGhvbl9mcmFtZV9maWx0ZXJzIChmcmFtZSwgZnJhbWVfbG93 LCBmcmFtZV9oaWdoKTsKLSsKLSsgIGlmIChpdGVyYWJsZSA9PSBOVUxMKQotKyAgICBnb3RvIGVy cm9yOwotKwotKyAgLyogSWYgaXRlcmFibGUgaXMgTm9uZSwgdGhlbiB0aGVyZSBhcmUgbm8gZnJh bWUgZmlsdGVycyByZWdpc3RlcmVkLgotKyAgICAgSWYgdGhpcyBpcyB0aGUgY2FzZSwgZGVmZXIg dG8gZGVmYXVsdCBHREIgcHJpbnRpbmcgcm91dGluZXMgaW4gTUkKLSsgICAgIGFuZCBDTEkuICAq LwotKyAgbWFrZV9jbGVhbnVwX3B5X2RlY3JlZiAoaXRlcmFibGUpOwotKyAgaWYgKGl0ZXJhYmxl ID09IFB5X05vbmUpCi0rICAgIHsKLSsgICAgICBzdWNjZXNzID0gUFlfQlRfTk9fRklMVEVSUzsK LSsgICAgICBnb3RvIGRvbmU7Ci0rICAgIH0KLSsKLSsgIGxldmVsc19wcmludGVkID0gaHRhYl9j cmVhdGUgKDIwLAotKwkJCQlodGFiX2hhc2hfcG9pbnRlciwKLSsJCQkJaHRhYl9lcV9wb2ludGVy LAotKwkJCQlOVUxMKTsKLSsgIG1ha2VfY2xlYW51cF9odGFiX2RlbGV0ZSAobGV2ZWxzX3ByaW50 ZWQpOwotKwotKyAgd2hpbGUgKChpdGVtID0gUHlJdGVyX05leHQgKGl0ZXJhYmxlKSkpCi0rICAg IHsKLSsgICAgICBzdWNjZXNzID0gcHlfcHJpbnRfZnJhbWUgKGl0ZW0sIGZsYWdzLCBhcmdzX3R5 cGUsIG91dCwgMCwKLSsJCQkJbGV2ZWxzX3ByaW50ZWQpOwotKwotKyAgICAgIC8qIERvIG5vdCBl eGl0IG9uIGVycm9yIHByaW50aW5nIGEgc2luZ2xlIGZyYW1lLiAgUHJpbnQgdGhlCi0rCSBlcnJv ciBhbmQgY29udGludWUgd2l0aCBvdGhlciBmcmFtZXMuICAqLwotKyAgICAgIGlmIChzdWNjZXNz ID09IFBZX0JUX0VSUk9SKQotKwlnZGJweV9wcmludF9zdGFjayAoKTsKLSsKLSsgICAgICBQeV9E RUNSRUYgKGl0ZW0pOwotKyAgICB9Ci0rCi0rICBpZiAoaXRlbSA9PSBOVUxMICYmIFB5RXJyX09j Y3VycmVkICgpKQotKyAgICBnb3RvIGVycm9yOwotKwotKyBkb25lOgotKyAgZG9fY2xlYW51cHMg KGNsZWFudXBzKTsKLSsgIHJldHVybiBzdWNjZXNzOwotKwotKyBlcnJvcjoKLSsgIGdkYnB5X3By aW50X3N0YWNrICgpOwotKyAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKLSsgIHJldHVybiBQWV9C VF9FUlJPUjsKLSt9Ci1JbmRleDogZ2RiLTcuNi9nZGIvcHl0aG9uL3B5LW9iamZpbGUuYwotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvcHl0aG9uL3B5LW9iamZpbGUuYwkyMDEzLTA2 LTEwIDE0OjMxOjAyLjczMTA4NDY1MiArMDIwMAotKysrIGdkYi03LjYvZ2RiL3B5dGhvbi9weS1v YmpmaWxlLmMJMjAxMy0wNi0xMCAxNDozMTowOC4zNjYwODI0MzcgKzAyMDAKLUBAIC0zMyw2ICsz Myw4IEBAIHR5cGVkZWYgc3RydWN0Ci0gICAvKiBUaGUgcHJldHR5LXByaW50ZXIgbGlzdCBvZiBm dW5jdGlvbnMuICAqLwotICAgUHlPYmplY3QgKnByaW50ZXJzOwotIAotKyAgLyogVGhlIGZyYW1l IGZpbHRlciBsaXN0IG9mIGZ1bmN0aW9ucy4gICovCi0rICBQeU9iamVjdCAqZnJhbWVfZmlsdGVy czsKLSAgIC8qIFRoZSB0eXBlLXByaW50ZXIgbGlzdC4gICovCi0gICBQeU9iamVjdCAqdHlwZV9w cmludGVyczsKLSB9IG9iamZpbGVfb2JqZWN0OwotQEAgLTYxLDYgKzYzLDcgQEAgb2JqZnB5X2Rl YWxsb2MgKFB5T2JqZWN0ICpvKQotICAgb2JqZmlsZV9vYmplY3QgKnNlbGYgPSAob2JqZmlsZV9v YmplY3QgKikgbzsKLSAKLSAgIFB5X1hERUNSRUYgKHNlbGYtPnByaW50ZXJzKTsKLSsgIFB5X1hE RUNSRUYgKHNlbGYtPmZyYW1lX2ZpbHRlcnMpOwotICAgUHlfWERFQ1JFRiAoc2VsZi0+dHlwZV9w cmludGVycyk7Ci0gICBQeV9UWVBFIChzZWxmKS0+dHBfZnJlZSAoc2VsZik7Ci0gfQotQEAgLTgx LDYgKzg0LDEzIEBAIG9iamZweV9uZXcgKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QKLSAJ ICByZXR1cm4gTlVMTDsKLSAJfQotIAotKyAgICAgIHNlbGYtPmZyYW1lX2ZpbHRlcnMgPSBQeURp Y3RfTmV3ICgpOwotKyAgICAgIGlmICghc2VsZi0+ZnJhbWVfZmlsdGVycykKLSsJewotKwkgIFB5 X0RFQ1JFRiAoc2VsZik7Ci0rCSAgcmV0dXJuIE5VTEw7Ci0rCX0KLSsKLSAgICAgICBzZWxmLT50 eXBlX3ByaW50ZXJzID0gUHlMaXN0X05ldyAoMCk7Ci0gICAgICAgaWYgKCFzZWxmLT50eXBlX3By aW50ZXJzKQotIAl7Ci1AQCAtMTI5LDYgKzEzOSw0NyBAQCBvYmpmcHlfc2V0X3ByaW50ZXJzIChQ eU9iamVjdCAqbywgUHlPYmplCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0rLyogUmV0dXJuIHRoZSBQ eXRob24gZGljdGlvbmFyeSBhdHRyaWJ1dGUgY29udGFpbmluZyBmcmFtZSBmaWx0ZXJzIGZvcgot KyAgIHRoaXMgb2JqZWN0IGZpbGUuICAqLwotK1B5T2JqZWN0ICoKLStvYmpmcHlfZ2V0X2ZyYW1l X2ZpbHRlcnMgKFB5T2JqZWN0ICpvLCB2b2lkICppZ25vcmUpCi0rewotKyAgb2JqZmlsZV9vYmpl Y3QgKnNlbGYgPSAob2JqZmlsZV9vYmplY3QgKikgbzsKLSsKLSsgIFB5X0lOQ1JFRiAoc2VsZi0+ ZnJhbWVfZmlsdGVycyk7Ci0rICByZXR1cm4gc2VsZi0+ZnJhbWVfZmlsdGVyczsKLSt9Ci0rCi0r LyogU2V0IHRoaXMgb2JqZWN0IGZpbGUncyBmcmFtZSBmaWx0ZXJzIGRpY3Rpb25hcnkgdG8gRklM VEVSUy4gICovCi0rc3RhdGljIGludAotK29iamZweV9zZXRfZnJhbWVfZmlsdGVycyAoUHlPYmpl Y3QgKm8sIFB5T2JqZWN0ICpmaWx0ZXJzLCB2b2lkICppZ25vcmUpCi0rewotKyAgUHlPYmplY3Qg KnRtcDsKLSsgIG9iamZpbGVfb2JqZWN0ICpzZWxmID0gKG9iamZpbGVfb2JqZWN0ICopIG87Ci0r Ci0rICBpZiAoISBmaWx0ZXJzKQotKyAgICB7Ci0rICAgICAgUHlFcnJfU2V0U3RyaW5nIChQeUV4 Y19UeXBlRXJyb3IsCi0rCQkgICAgICAgXygiQ2Fubm90IGRlbGV0ZSB0aGUgZnJhbWUgZmlsdGVy cyBhdHRyaWJ1dGUuIikpOwotKyAgICAgIHJldHVybiAtMTsKLSsgICAgfQotKwotKyAgaWYgKCEg UHlEaWN0X0NoZWNrIChmaWx0ZXJzKSkKLSsgICAgewotKyAgICAgIFB5RXJyX1NldFN0cmluZyAo UHlFeGNfVHlwZUVycm9yLAotKwkJICAgICAgIF8oIlRoZSBmcmFtZV9maWx0ZXJzIGF0dHJpYnV0 ZSBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKSk7Ci0rICAgICAgcmV0dXJuIC0xOwotKyAgICB9Ci0r Ci0rICAvKiBUYWtlIGNhcmUgaW4gY2FzZSB0aGUgTEhTIGFuZCBSSFMgYXJlIHJlbGF0ZWQgc29t ZWhvdy4gICovCi0rICB0bXAgPSBzZWxmLT5mcmFtZV9maWx0ZXJzOwotKyAgUHlfSU5DUkVGIChm aWx0ZXJzKTsKLSsgIHNlbGYtPmZyYW1lX2ZpbHRlcnMgPSBmaWx0ZXJzOwotKyAgUHlfWERFQ1JF RiAodG1wKTsKLSsKLSsgIHJldHVybiAwOwotK30KLSsKLSAvKiBHZXQgdGhlICd0eXBlX3ByaW50 ZXJzJyBhdHRyaWJ1dGUuICAqLwotIAotIHN0YXRpYyBQeU9iamVjdCAqCi1AQCAtMjI1LDYgKzI3 NiwxMyBAQCBvYmpmaWxlX3RvX29iamZpbGVfb2JqZWN0IChzdHJ1Y3Qgb2JqZmlsCi0gCSAgICAg IHJldHVybiBOVUxMOwotIAkgICAgfQotIAotKwkgIG9iamVjdC0+ZnJhbWVfZmlsdGVycyA9IFB5 RGljdF9OZXcgKCk7Ci0rCSAgaWYgKCFvYmplY3QtPmZyYW1lX2ZpbHRlcnMpCi0rCSAgICB7Ci0r CSAgICAgIFB5X0RFQ1JFRiAob2JqZWN0KTsKLSsJICAgICAgcmV0dXJuIE5VTEw7Ci0rCSAgICB9 Ci0rCi0gCSAgb2JqZWN0LT50eXBlX3ByaW50ZXJzID0gUHlMaXN0X05ldyAoMCk7Ci0gCSAgaWYg KCFvYmplY3QtPnR5cGVfcHJpbnRlcnMpCi0gCSAgICB7Ci1AQCAtMjcwLDYgKzMyOCw4IEBAIHN0 YXRpYyBQeUdldFNldERlZiBvYmpmaWxlX2dldHNldFtdID0KLSAgICAgIlRoZSBvYmpmaWxlJ3Mg ZmlsZW5hbWUsIG9yIE5vbmUuIiwgTlVMTCB9LAotICAgeyAicHJldHR5X3ByaW50ZXJzIiwgb2Jq ZnB5X2dldF9wcmludGVycywgb2JqZnB5X3NldF9wcmludGVycywKLSAgICAgIlByZXR0eSBwcmlu dGVycy4iLCBOVUxMIH0sCi0rICB7ICJmcmFtZV9maWx0ZXJzIiwgb2JqZnB5X2dldF9mcmFtZV9m aWx0ZXJzLAotKyAgICBvYmpmcHlfc2V0X2ZyYW1lX2ZpbHRlcnMsICJGcmFtZSBGaWx0ZXJzLiIs IE5VTEwgfSwKLSAgIHsgInR5cGVfcHJpbnRlcnMiLCBvYmpmcHlfZ2V0X3R5cGVfcHJpbnRlcnMs IG9iamZweV9zZXRfdHlwZV9wcmludGVycywKLSAgICAgIlR5cGUgcHJpbnRlcnMuIiwgTlVMTCB9 LAotICAgeyBOVUxMIH0KLUluZGV4OiBnZGItNy42L2dkYi9weXRob24vcHktcHJvZ3NwYWNlLmMK LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL3B5dGhvbi9weS1wcm9nc3BhY2UuYwky MDEzLTA2LTEwIDE0OjMxOjAyLjczMTA4NDY1MiArMDIwMAotKysrIGdkYi03LjYvZ2RiL3B5dGhv bi9weS1wcm9nc3BhY2UuYwkyMDEzLTA2LTEwIDE0OjMxOjA4LjM2NjA4MjQzNyArMDIwMAotQEAg LTM1LDYgKzM1LDggQEAgdHlwZWRlZiBzdHJ1Y3QKLSAgIC8qIFRoZSBwcmV0dHktcHJpbnRlciBs aXN0IG9mIGZ1bmN0aW9ucy4gICovCi0gICBQeU9iamVjdCAqcHJpbnRlcnM7Ci0gCi0rICAvKiBU aGUgZnJhbWUgZmlsdGVyIGxpc3Qgb2YgZnVuY3Rpb25zLiAgKi8KLSsgIFB5T2JqZWN0ICpmcmFt ZV9maWx0ZXJzOwotICAgLyogVGhlIHR5cGUtcHJpbnRlciBsaXN0LiAgKi8KLSAgIFB5T2JqZWN0 ICp0eXBlX3ByaW50ZXJzOwotIH0gcHNwYWNlX29iamVjdDsKLUBAIC02OSw2ICs3MSw3IEBAIHBz cHlfZGVhbGxvYyAoUHlPYmplY3QgKnNlbGYpCi0gICBwc3BhY2Vfb2JqZWN0ICpwc19zZWxmID0g KHBzcGFjZV9vYmplY3QgKikgc2VsZjsKLSAKLSAgIFB5X1hERUNSRUYgKHBzX3NlbGYtPnByaW50 ZXJzKTsKLSsgIFB5X1hERUNSRUYgKHBzX3NlbGYtPmZyYW1lX2ZpbHRlcnMpOwotICAgUHlfWERF Q1JFRiAocHNfc2VsZi0+dHlwZV9wcmludGVycyk7Ci0gICBQeV9UWVBFIChzZWxmKS0+dHBfZnJl ZSAoc2VsZik7Ci0gfQotQEAgLTg5LDYgKzkyLDEzIEBAIHBzcHlfbmV3IChQeVR5cGVPYmplY3Qg KnR5cGUsIFB5T2JqZWN0ICoKLSAJICByZXR1cm4gTlVMTDsKLSAJfQotIAotKyAgICAgIHNlbGYt PmZyYW1lX2ZpbHRlcnMgPSBQeURpY3RfTmV3ICgpOwotKyAgICAgIGlmICghc2VsZi0+ZnJhbWVf ZmlsdGVycykKLSsJewotKwkgIFB5X0RFQ1JFRiAoc2VsZik7Ci0rCSAgcmV0dXJuIE5VTEw7Ci0r CX0KLSsKLSAgICAgICBzZWxmLT50eXBlX3ByaW50ZXJzID0gUHlMaXN0X05ldyAoMCk7Ci0gICAg ICAgaWYgKCFzZWxmLT50eXBlX3ByaW50ZXJzKQotIAl7Ci1AQCAtMTM3LDYgKzE0Nyw0NyBAQCBw c3B5X3NldF9wcmludGVycyAoUHlPYmplY3QgKm8sIFB5T2JqZWN0Ci0gICByZXR1cm4gMDsKLSB9 Ci0gCi0rLyogUmV0dXJuIHRoZSBQeXRob24gZGljdGlvbmFyeSBhdHRyaWJ1dGUgY29udGFpbmlu ZyBmcmFtZSBmaWx0ZXJzIGZvcgotKyAgIHRoaXMgcHJvZ3JhbSBzcGFjZS4gICovCi0rUHlPYmpl Y3QgKgotK3BzcHlfZ2V0X2ZyYW1lX2ZpbHRlcnMgKFB5T2JqZWN0ICpvLCB2b2lkICppZ25vcmUp Ci0rewotKyAgcHNwYWNlX29iamVjdCAqc2VsZiA9IChwc3BhY2Vfb2JqZWN0ICopIG87Ci0rCi0r ICBQeV9JTkNSRUYgKHNlbGYtPmZyYW1lX2ZpbHRlcnMpOwotKyAgcmV0dXJuIHNlbGYtPmZyYW1l X2ZpbHRlcnM7Ci0rfQotKwotKy8qIFNldCB0aGlzIG9iamVjdCBmaWxlJ3MgZnJhbWUgZmlsdGVy cyBkaWN0aW9uYXJ5IHRvIEZJTFRFUlMuICAqLwotK3N0YXRpYyBpbnQKLStwc3B5X3NldF9mcmFt ZV9maWx0ZXJzIChQeU9iamVjdCAqbywgUHlPYmplY3QgKmZyYW1lLCB2b2lkICppZ25vcmUpCi0r ewotKyAgUHlPYmplY3QgKnRtcDsKLSsgIHBzcGFjZV9vYmplY3QgKnNlbGYgPSAocHNwYWNlX29i amVjdCAqKSBvOwotKwotKyAgaWYgKCEgZnJhbWUpCi0rICAgIHsKLSsgICAgICBQeUVycl9TZXRT dHJpbmcgKFB5RXhjX1R5cGVFcnJvciwKLSsJCSAgICAgICAiY2Fubm90IGRlbGV0ZSB0aGUgZnJh bWUgZmlsdGVyIGF0dHJpYnV0ZSIpOwotKyAgICAgIHJldHVybiAtMTsKLSsgICAgfQotKwotKyAg aWYgKCEgUHlEaWN0X0NoZWNrIChmcmFtZSkpCi0rICAgIHsKLSsgICAgICBQeUVycl9TZXRTdHJp bmcgKFB5RXhjX1R5cGVFcnJvciwKLSsJCSAgICAgICAidGhlIGZyYW1lIGZpbHRlciBhdHRyaWJ1 dGUgbXVzdCBiZSBhIGRpY3Rpb25hcnkiKTsKLSsgICAgICByZXR1cm4gLTE7Ci0rICAgIH0KLSsK LSsgIC8qIFRha2UgY2FyZSBpbiBjYXNlIHRoZSBMSFMgYW5kIFJIUyBhcmUgcmVsYXRlZCBzb21l aG93LiAgKi8KLSsgIHRtcCA9IHNlbGYtPmZyYW1lX2ZpbHRlcnM7Ci0rICBQeV9JTkNSRUYgKGZy YW1lKTsKLSsgIHNlbGYtPmZyYW1lX2ZpbHRlcnMgPSBmcmFtZTsKLSsgIFB5X1hERUNSRUYgKHRt cCk7Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci0rCi0gLyogR2V0IHRoZSAndHlwZV9wcmludGVycycg YXR0cmlidXRlLiAgKi8KLSAKLSBzdGF0aWMgUHlPYmplY3QgKgotQEAgLTIyMSw2ICsyNzIsMTMg QEAgcHNwYWNlX3RvX3BzcGFjZV9vYmplY3QgKHN0cnVjdCBwcm9ncmFtXwotIAkgICAgICByZXR1 cm4gTlVMTDsKLSAJICAgIH0KLSAKLSsJICBvYmplY3QtPmZyYW1lX2ZpbHRlcnMgPSBQeURpY3Rf TmV3ICgpOwotKwkgIGlmICghb2JqZWN0LT5mcmFtZV9maWx0ZXJzKQotKwkgICAgewotKwkgICAg ICBQeV9ERUNSRUYgKG9iamVjdCk7Ci0rCSAgICAgIHJldHVybiBOVUxMOwotKwkgICAgfQotKwot IAkgIG9iamVjdC0+dHlwZV9wcmludGVycyA9IFB5TGlzdF9OZXcgKDApOwotIAkgIGlmICghb2Jq ZWN0LT50eXBlX3ByaW50ZXJzKQotIAkgICAgewotQEAgLTI1Nyw2ICszMTUsOCBAQCBzdGF0aWMg UHlHZXRTZXREZWYgcHNwYWNlX2dldHNldFtdID0KLSAgICAgIlRoZSBwcm9nc3BhY2UncyBtYWlu IGZpbGVuYW1lLCBvciBOb25lLiIsIE5VTEwgfSwKLSAgIHsgInByZXR0eV9wcmludGVycyIsIHBz cHlfZ2V0X3ByaW50ZXJzLCBwc3B5X3NldF9wcmludGVycywKLSAgICAgIlByZXR0eSBwcmludGVy cy4iLCBOVUxMIH0sCi0rICB7ICJmcmFtZV9maWx0ZXJzIiwgcHNweV9nZXRfZnJhbWVfZmlsdGVy cywgcHNweV9zZXRfZnJhbWVfZmlsdGVycywKLSsgICAgIkZyYW1lIGZpbHRlcnMuIiwgTlVMTCB9 LAotICAgeyAidHlwZV9wcmludGVycyIsIHBzcHlfZ2V0X3R5cGVfcHJpbnRlcnMsIHBzcHlfc2V0 X3R5cGVfcHJpbnRlcnMsCi0gICAgICJUeXBlIHByaW50ZXJzLiIsIE5VTEwgfSwKLSAgIHsgTlVM TCB9Ci1JbmRleDogZ2RiLTcuNi9nZGIvcHl0aG9uL3B5LXV0aWxzLmMKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy42Lm9yaWcvZ2RiL3B5dGhvbi9weS11dGlscy5jCTIwMTMtMDYtMTAgMTQ6MzE6MDIu NzMyMDg0NjUyICswMjAwCi0rKysgZ2RiLTcuNi9nZGIvcHl0aG9uL3B5LXV0aWxzLmMJMjAxMy0w Ni0xMCAxNDozMTowOC4zNjYwODI0MzcgKzAyMDAKLUBAIC00OCw2ICs0OCwyOCBAQCBtYWtlX2Ns ZWFudXBfcHlfZGVjcmVmIChQeU9iamVjdCAqcHkpCi0gICByZXR1cm4gbWFrZV9jbGVhbnVwIChw eV9kZWNyZWYsICh2b2lkICopIHB5KTsKLSB9Ci0gCi0rLyogVGhpcyBpcyBhIGNsZWFudXAgZnVu Y3Rpb24gd2hpY2ggZGVjcmVtZW50cyB0aGUgcmVmY291bnQgb24gYQotKyAgIFB5dGhvbiBvYmpl Y3QuICBUaGlzIGZ1bmN0aW9uIGFjY291bnRzIGFwcHJvcHJpYXRlbHkgZm9yIE5VTEwKLSsgICBy ZWZlcmVuY2VzLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3B5X3hkZWNyZWYgKHZvaWQgKnApCi0r ewotKyAgUHlPYmplY3QgKnB5ID0gcDsKLSsKLSsgIFB5X1hERUNSRUYgKHB5KTsKLSt9Ci0rCi0r LyogUmV0dXJuIGEgbmV3IGNsZWFudXAgd2hpY2ggd2lsbCBkZWNyZW1lbnQgdGhlIFB5dGhvbiBv YmplY3QncwotKyAgIHJlZmNvdW50IHdoZW4gcnVuLiAgQWNjb3VudCBmb3IgYW5kIG9wZXJhdGUg b24gTlVMTCByZWZlcmVuY2VzCi0rICAgY29ycmVjdGx5LiAgKi8KLSsKLStzdHJ1Y3QgY2xlYW51 cCAqCi0rbWFrZV9jbGVhbnVwX3B5X3hkZWNyZWYgKFB5T2JqZWN0ICpweSkKLSt7Ci0rICByZXR1 cm4gbWFrZV9jbGVhbnVwIChweV94ZGVjcmVmLCBweSk7Ci0rfQotKwotIC8qIENvbnZlcnRzIGEg UHl0aG9uIDgtYml0IHN0cmluZyB0byBhIHVuaWNvZGUgc3RyaW5nIG9iamVjdC4gIEFzc3VtZXMg dGhlCi0gICAgOC1iaXQgc3RyaW5nIGlzIGluIHRoZSBob3N0IGNoYXJzZXQuICBJZiBhbiBlcnJv ciBvY2N1cnMgZHVyaW5nIGNvbnZlcnNpb24sCi0gICAgcmV0dXJucyBOVUxMIHdpdGggYSBweXRo b24gZXhjZXB0aW9uIHNldC4KLUluZGV4OiBnZGItNy42L2dkYi9weXRob24vcHl0aG9uLWludGVy bmFsLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL3B5dGhvbi9weXRob24taW50 ZXJuYWwuaAkyMDEzLTA2LTEwIDE0OjMxOjAyLjczMjA4NDY1MiArMDIwMAotKysrIGdkYi03LjYv Z2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwuaAkyMDEzLTA2LTEwIDE0OjMxOjA4LjM2NzA4MjQz NiArMDIwMAotQEAgLTI1MSw5ICsyNTEsMTEgQEAgUHlPYmplY3QgKmZyYW1lX2luZm9fdG9fZnJh bWVfb2JqZWN0IChzdAotIAotIFB5T2JqZWN0ICpwc3BhY2VfdG9fcHNwYWNlX29iamVjdCAoc3Ry dWN0IHByb2dyYW1fc3BhY2UgKik7Ci0gUHlPYmplY3QgKnBzcHlfZ2V0X3ByaW50ZXJzIChQeU9i amVjdCAqLCB2b2lkICopOwotK1B5T2JqZWN0ICpwc3B5X2dldF9mcmFtZV9maWx0ZXJzIChQeU9i amVjdCAqLCB2b2lkICopOwotIAotIFB5T2JqZWN0ICpvYmpmaWxlX3RvX29iamZpbGVfb2JqZWN0 IChzdHJ1Y3Qgb2JqZmlsZSAqKTsKLSBQeU9iamVjdCAqb2JqZnB5X2dldF9wcmludGVycyAoUHlP YmplY3QgKiwgdm9pZCAqKTsKLStQeU9iamVjdCAqb2JqZnB5X2dldF9mcmFtZV9maWx0ZXJzIChQ eU9iamVjdCAqLCB2b2lkICopOwotIAotIFB5T2JqZWN0ICpnZGJhcmNoX3RvX2FyY2hfb2JqZWN0 IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCk7Ci0gCi1AQCAtMzA0LDYgKzMwNiw3IEBAIHZvaWQg Z2RicHlfaW5pdGlhbGl6ZV9uZXdfb2JqZmlsZV9ldmVudAotIHZvaWQgZ2RicHlfaW5pdGlhbGl6 ZV9hcmNoICh2b2lkKTsKLSAKLSBzdHJ1Y3QgY2xlYW51cCAqbWFrZV9jbGVhbnVwX3B5X2RlY3Jl ZiAoUHlPYmplY3QgKnB5KTsKLStzdHJ1Y3QgY2xlYW51cCAqbWFrZV9jbGVhbnVwX3B5X3hkZWNy ZWYgKFB5T2JqZWN0ICpweSk7Ci0gCi0gc3RydWN0IGNsZWFudXAgKmVuc3VyZV9weXRob25fZW52 IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSAJCQkJICAgY29uc3Qgc3RydWN0IGxhbmd1YWdl X2RlZm4gKmxhbmd1YWdlKTsKLUluZGV4OiBnZGItNy42L2dkYi9weXRob24vcHl0aG9uLmMKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL3B5dGhvbi9weXRob24uYwkyMDEzLTA2LTEw IDE0OjMxOjAyLjczMjA4NDY1MiArMDIwMAotKysrIGdkYi03LjYvZ2RiL3B5dGhvbi9weXRob24u YwkyMDEzLTA2LTEwIDE0OjMxOjA4LjM2NzA4MjQzNiArMDIwMAotQEAgLTE0NDIsNiArMTQ0Miwx NSBAQCBmcmVlX3R5cGVfcHJpbnRlcnMgKHZvaWQgKmFyZykKLSB7Ci0gfQotIAotK2VudW0gcHlf YnRfc3RhdHVzCi0rYXBwbHlfZnJhbWVfZmlsdGVyIChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUs IGludCBmbGFncywKLSsJCSAgICBlbnVtIHB5X2ZyYW1lX2FyZ3MgYXJnc190eXBlLAotKwkJICAg IHN0cnVjdCB1aV9vdXQgKm91dCwgaW50IGZyYW1lX2xvdywKLSsJCSAgICBpbnQgZnJhbWVfaGln aCkKLSt7Ci0rICByZXR1cm4gUFlfQlRfTk9fRklMVEVSUzsKLSt9Ci0rCi0gI2VuZGlmIC8qIEhB VkVfUFlUSE9OICovCi0gCi0gDAotSW5kZXg6IGdkYi03LjYvZ2RiL3B5dGhvbi9weXRob24uaAot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvcHl0aG9uL3B5dGhvbi5oCTIwMTMtMDYt MTAgMTQ6MzE6MDIuNzMyMDg0NjUyICswMjAwCi0rKysgZ2RiLTcuNi9nZGIvcHl0aG9uL3B5dGhv bi5oCTIwMTMtMDYtMTAgMTQ6MzE6MDguMzY3MDgyNDM2ICswMjAwCi1AQCAtMjEsNiArMjEsNyBA QAotICNkZWZpbmUgR0RCX1BZVEhPTl9ICi0gCi0gI2luY2x1ZGUgInZhbHVlLmgiCi0rI2luY2x1 ZGUgIm1pL21pLWNtZHMuaCIKLSAKLSBzdHJ1Y3QgYnJlYWtwb2ludF9vYmplY3Q7Ci0gCi1AQCAt MjgsNiArMjksNjYgQEAgc3RydWN0IGJyZWFrcG9pbnRfb2JqZWN0OwotICAgIEUuZy4gV2hlbiB0 aGUgcHJvZ3JhbSBsb2FkcyBsaWJmb28uc28sIGxvb2sgZm9yIGxpYmZvby1nZGIucHkuICAqLwot ICNkZWZpbmUgR0RCUFlfQVVUT19GSUxFX05BTUUgIi1nZGIucHkiCi0gCi0rLyogUHl0aG9uIGZy YW1lLWZpbHRlciBzdGF0dXMgcmV0dXJuIHZhbHVlcy4gICovCi0rZW51bSBweV9idF9zdGF0dXMK LSsgIHsKLSsgICAgLyogUmV0dXJuIHdoZW4gYW4gZXJyb3IgaGFzIG9jY3VycmVkIGluIHByb2Nl c3NpbmcgZnJhbWUgZmlsdGVycywKLSsgICAgICAgb3Igd2hlbiBwcmludGluZyB0aGUgc3RhY2su ICAqLwotKyAgICBQWV9CVF9FUlJPUiA9IC0xLAotKwotKyAgICAvKiBSZXR1cm4gZnJvbSBpbnRl cm5hbCByb3V0aW5lcyB0byBpbmRpY2F0ZSB0aGF0IHRoZSBmdW5jdGlvbgotKyAgICAgICBzdWNj ZWVkZWQuICAqLwotKyAgICBQWV9CVF9PSyA9IDEsCi0rCi0rICAgIC8qIFJldHVybiB3aGVuIHRo ZSBmcmFtZSBmaWx0ZXIgcHJvY2VzcyBpcyBjb21wbGV0ZSwgYW5kIGFsbAotKyAgICAgICBvcGVy YXRpb25zIGhhdmUgc3VjY2VlZGVkLiAgKi8KLSsgICAgUFlfQlRfQ09NUExFVEVEID0gMiwKLSsK LSsgICAgLyogUmV0dXJuIHdoZW4gdGhlIGZyYW1lIGZpbHRlciBwcm9jZXNzIGlzIGNvbXBsZXRl LCBidXQgdGhlcmUKLSsgICAgICAgd2VyZSBubyBmaWx0ZXIgcmVnaXN0ZXJlZCBhbmQgZW5hYmxl ZCB0byBwcm9jZXNzLiAqLwotKyAgICBQWV9CVF9OT19GSUxURVJTID0gMwotKyAgfTsKLSsKLSsv KiBGbGFncyB0byBwYXNzIHRvIGFwcGx5X2ZyYW1lX2ZpbHRlci4gICovCi0rCi0rZW51bSBmcmFt ZV9maWx0ZXJfZmxhZ3MKLSsgIHsKLSsgICAgLyogU2V0IHRoaXMgZmxhZyBpZiBmcmFtZSBsZXZl bCBpcyB0byBiZSBwcmludGVkLiAgKi8KLSsgICAgUFJJTlRfTEVWRUwgPSAxLAotKwotKyAgICAv KiBTZXQgdGhpcyBmbGFnIGlmIGZyYW1lIGluZm9ybWF0aW9uIGlzIHRvIGJlIHByaW50ZWQuICAq LwotKyAgICBQUklOVF9GUkFNRV9JTkZPID0gMiwKLSsKLSsgICAgLyogU2V0IHRoaXMgZmxhZyBp ZiBmcmFtZSBhcmd1bWVudHMgYXJlIHRvIGJlIHByaW50ZWQuICAqLwotKyAgICBQUklOVF9BUkdT ID0gNCwKLSsKLSsgICAgLyogU2V0IHRoaXMgZmxhZyBpZiBmcmFtZSBsb2NhbHMgYXJlIHRvIGJl IHByaW50ZWQuICAqLwotKyAgICBQUklOVF9MT0NBTFMgPSA4LAotKyAgfTsKLSsKLSsvKiBBIGNo b2ljZSBvZiB0aGUgZGlmZmVyZW50IGZyYW1lIGFyZ3VtZW50IHByaW50aW5nIHN0cmF0ZWdpZXMg dGhhdAotKyAgIGNhbiBvY2N1ciBpbiBkaWZmZXJlbnQgY2FzZXMgb2YgZnJhbWUgZmlsdGVyIGlu c3RhbnRpYXRpb24uICAqLwotK3R5cGVkZWYgZW51bSBweV9mcmFtZV9hcmdzCi0rewotKyAgLyog UHJpbnQgbm8gdmFsdWVzIGZvciBhcmd1bWVudHMgd2hlbiBpbnZva2VkIGZyb20gdGhlIE1JLiAq LwotKyAgTk9fVkFMVUVTID0gUFJJTlRfTk9fVkFMVUVTLAotKwotKyAgTUlfUFJJTlRfQUxMX1ZB TFVFUyA9IFBSSU5UX0FMTF9WQUxVRVMsCi0rCi0rICAvKiBQcmludCBvbmx5IHNpbXBsZSB2YWx1 ZXMgKHdoYXQgTUkgZGVmaW5lcyBhcyAic2ltcGxlIikgZm9yCi0rICAgICBhcmd1bWVudHMgd2hl biBpbnZva2VkIGZyb20gdGhlIE1JLiAqLwotKyAgTUlfUFJJTlRfU0lNUExFX1ZBTFVFUyA9IFBS SU5UX1NJTVBMRV9WQUxVRVMsCi0rCi0rCi0rICAvKiBQcmludCBvbmx5IHNjYWxhciB2YWx1ZXMg Zm9yIGFyZ3VtZW50cyB3aGVuIGludm9rZWQgZnJvbSB0aGUKLSsgICAgIENMSS4gKi8KLSsgIENM SV9TQ0FMQVJfVkFMVUVTLAotKwotKyAgLyogUHJpbnQgYWxsIHZhbHVlcyBmb3IgYXJndW1lbnRz IHdoZW4gaW52b2tlZCBmcm9tIHRoZQotKyAgICAgQ0xJLiAqLwotKyAgQ0xJX0FMTF9WQUxVRVMK LSt9IHB5X2ZyYW1lX2FyZ3M7Ci0rCi0gZXh0ZXJuIHZvaWQgZmluaXNoX3B5dGhvbl9pbml0aWFs aXphdGlvbiAodm9pZCk7Ci0gCi0gdm9pZCBldmFsX3B5dGhvbl9mcm9tX2NvbnRyb2xfY29tbWFu ZCAoc3RydWN0IGNvbW1hbmRfbGluZSAqKTsKLUBAIC00Myw2ICsxMDQsMTEgQEAgaW50IGFwcGx5 X3ZhbF9wcmV0dHlfcHJpbnRlciAoc3RydWN0IHR5cAotIAkJCSAgICAgIGNvbnN0IHN0cnVjdCB2 YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zLAotIAkJCSAgICAgIGNvbnN0IHN0cnVjdCBsYW5n dWFnZV9kZWZuICpsYW5ndWFnZSk7Ci0gCi0rZW51bSBweV9idF9zdGF0dXMgYXBwbHlfZnJhbWVf ZmlsdGVyIChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsIGludCBmbGFncywKLSsJCQkJICAgICAg ZW51bSBweV9mcmFtZV9hcmdzIGFyZ3NfdHlwZSwKLSsJCQkJICAgICAgc3RydWN0IHVpX291dCAq b3V0LCBpbnQgZnJhbWVfbG93LAotKwkJCQkgICAgICBpbnQgZnJhbWVfaGlnaCk7Ci0rCi0gdm9p ZCBwcmVzZXJ2ZV9weXRob25fdmFsdWVzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgaHRhYl90 IGNvcGllZF90eXBlcyk7Ci0gCi0gdm9pZCBnZGJweV9sb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2Jq ZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOwotSW5kZXg6IGdkYi03LjYvZ2RiL3B5dGhv bi9saWIvZ2RiL0ZyYW1lRGVjb3JhdG9yLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5 NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNi9nZGIvcHl0aG9u L2xpYi9nZGIvRnJhbWVEZWNvcmF0b3IucHkJMjAxMy0wNi0xMCAxNDozMTowOC4zNjcwODI0MzYg KzAyMDAKLUBAIC0wLDAgKzEsMjg1IEBACi0rIyBDb3B5cmlnaHQgKEMpIDIwMTMgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK LSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMK LSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgot KwotK2ltcG9ydCBnZGIKLSsKLStjbGFzcyBGcmFtZURlY29yYXRvcihvYmplY3QpOgotKyAgICAi IiJCYXNpYyBpbXBsZW1lbnRhdGlvbiBvZiBhIEZyYW1lIERlY29yYXRvciIiIgotKwotKyAgICAi IiIgVGhpcyBiYXNlIGZyYW1lIGRlY29yYXRvciBkZWNvcmF0ZXMgYSBmcmFtZSBvciBhbm90aGVy IGZyYW1lCi0rICAgIGRlY29yYXRvciwgYW5kIHByb3ZpZGVzIGNvbnZlbmllbmNlIG1ldGhvZHMu ICBJZiB0aGlzIG9iamVjdCBpcwotKyAgICB3cmFwcGluZyBhIGZyYW1lIGRlY29yYXRvciwgZGVm ZXIgdG8gdGhhdCB3cmFwcGVkIG9iamVjdCdzIG1ldGhvZAotKyAgICBpZiBpdCBoYXMgb25lLiAg VGhpcyBhbGxvd3MgZm9yIGZyYW1lIGRlY29yYXRvcnMgdGhhdCBoYXZlCi0rICAgIHN1Yi1jbGFz c2VkIEZyYW1lRGVjb3JhdG9yIG9iamVjdCwgYnV0IGFsc28gd3JhcCBvdGhlciBmcmFtZQotKyAg ICBkZWNvcmF0b3JzIG9uIHRoZSBzYW1lIGZyYW1lIHRvIGNvcnJlY3RseSBleGVjdXRlLgotKwot KyAgICBFLmcKLSsKLSsgICAgSWYgdGhlIHJlc3VsdCBvZiBmcmFtZSBmaWx0ZXJzIHJ1bm5pbmcg bWVhbnMgd2UgaGF2ZSBvbmUgZ2RiLkZyYW1lCi0rICAgIHdyYXBwZWQgYnkgbXVsdGlwbGUgZnJh bWUgZGVjb3JhdG9ycywgYWxsIHN1Yi1jbGFzc2VkIGZyb20KLSsgICAgRnJhbWVEZWNvcmF0b3Is IHRoZSByZXN1bHRpbmcgaGllcmFyY2h5IHdpbGwgYmU6Ci0rCi0rICAgIERlY29yYXRvcjEKLSsg ICAgICAtLSAod3JhcHMpIERlY29yYXRvcjIKLSsgICAgICAgIC0tICh3cmFwcykgRnJhbWVEZWNv cmF0b3IKLSsgICAgICAgICAgLS0gKHdyYXBzKSBnZGIuRnJhbWUKLSsKLSsgICAgSW4gdGhpcyBj YXNlIHdlIGhhdmUgdHdvIGZyYW1lIGRlY29yYXRvcnMsIGJvdGggb2Ygd2hpY2ggYXJlCi0rICAg IHN1Yi1jbGFzc2VkIGZyb20gRnJhbWVEZWNvcmF0b3IuICBJZiBEZWNvcmF0b3IxIGp1c3Qgb3Zl cnJpZGVzIHRoZQotKyAgICAnZnVuY3Rpb24nIG1ldGhvZCwgdGhlbiBhbGwgb2YgdGhlIG90aGVy IG1ldGhvZHMgYXJlIGNhcnJpZWQgb3V0Ci0rICAgIGJ5IHRoZSBzdXBlci1jbGFzcyBGcmFtZURl Y29yYXRvci4gIEJ1dCBEZWNvcmF0b3IyIG1heSBoYXZlCi0rICAgIG92ZXJyaWRlbiBvdGhlciBt ZXRob2RzLCBzbyBGcmFtZURlY29yYXRvciB3aWxsIGxvb2sgYXQgdGhlCi0rICAgICdiYXNlJyBw YXJhbWV0ZXIgYW5kIGRlZmVyIHRvIHRoYXQgY2xhc3MncyBtZXRob2RzLiAgQW5kIHNvIG9uLAot KyAgICBkb3duIHRoZSBjaGFpbi4iIiIKLSsKLSsgICAgIyAnYmFzZScgY2FuIHJlZmVyIHRvIGEg Z2RiLkZyYW1lIG9yIGFub3RoZXIgZnJhbWUgZGVjb3JhdG9yLiAgSW4KLSsgICAgIyB0aGUgbGF0 dGVyIGNhc2UsIHRoZSBjaGlsZCBjbGFzcyB3aWxsIGhhdmUgY2FsbGVkIHRoZSBzdXBlcgotKyAg ICAjIG1ldGhvZCBhbmQgX2Jhc2Ugd2lsbCBiZSBhbiBvYmplY3QgY29uZm9ybWluZyB0byB0aGUg RnJhbWUgRmlsdGVyCi0rICAgICMgY2xhc3MuCi0rICAgIGRlZiBfX2luaXRfXyhzZWxmLCBiYXNl KToKLSsgICAgICAgIHNlbGYuX2Jhc2UgPSBiYXNlCi0rCi0rICAgIEBzdGF0aWNtZXRob2QKLSsg ICAgZGVmIF9pc19saW1pdGVkX2ZyYW1lKGZyYW1lKToKLSsgICAgICAgICIiIkludGVybmFsIHV0 aWxpdHkgdG8gZGV0ZXJtaW5lIGlmIHRoZSBmcmFtZSBpcyBzcGVjaWFsIG9yCi0rICAgICAgICBs aW1pdGVkLiIiIgotKyAgICAgICAgc2FsID0gZnJhbWUuZmluZF9zYWwoKQotKwotKyAgICAgICAg aWYgKG5vdCBzYWwuc3ltdGFiIG9yIG5vdCBzYWwuc3ltdGFiLmZpbGVuYW1lCi0rICAgICAgICAg ICAgb3IgZnJhbWUudHlwZSgpID09IGdkYi5EVU1NWV9GUkFNRQotKyAgICAgICAgICAgIG9yIGZy YW1lLnR5cGUoKSA9PSBnZGIuU0lHVFJBTVBfRlJBTUUpOgotKwotKyAgICAgICAgICAgIHJldHVy biBUcnVlCi0rCi0rICAgICAgICByZXR1cm4gRmFsc2UKLSsKLSsgICAgZGVmIGVsaWRlZChzZWxm KToKLSsgICAgICAgICIiIlJldHVybiBhbnkgZWxpZGVkIGZyYW1lcyB0aGF0IHRoaXMgY2xhc3Mg bWlnaHQgYmUKLSsgICAgICAgIHdyYXBwaW5nLCBvciBOb25lLiIiIgotKyAgICAgICAgaWYgaGFz YXR0cihzZWxmLl9iYXNlLCAiZWxpZGVkIik6Ci0rICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2Jh c2UuZWxpZGVkKCkKLSsKLSsgICAgICAgIHJldHVybiBOb25lCi0rCi0rICAgIGRlZiBmdW5jdGlv bihzZWxmKToKLSsgICAgICAgICIiIiBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGZyYW1lJ3MgZnVu Y3Rpb24gb3IgYW4gYWRkcmVzcyBvZgotKyAgICAgICAgdGhlIGZ1bmN0aW9uIG9mIHRoZSBmcmFt ZS4gIEZpcnN0IGRldGVybWluZSBpZiB0aGlzIGlzIGEKLSsgICAgICAgIHNwZWNpYWwgZnJhbWUu ICBJZiBub3QsIHRyeSB0byBkZXRlcm1pbmUgZmlsZW5hbWUgZnJvbSBHREIncwotKyAgICAgICAg ZnJhbWUgaW50ZXJuYWwgZnVuY3Rpb24gQVBJLiAgRmluYWxseSwgaWYgYSBuYW1lIGNhbm5vdCBi ZQotKyAgICAgICAgZGV0ZXJtaW5lZCByZXR1cm4gdGhlIGFkZHJlc3MuICBJZiB0aGlzIGZ1bmN0 aW9uIHJldHVybnMgYW4KLSsgICAgICAgIGFkZHJlc3MsIEdEQiB3aWxsIGF0dGVtcHQgdG8gZGV0 ZXJtaW5lIHRoZSBmdW5jdGlvbiBuYW1lIGZyb20KLSsgICAgICAgIGl0cyBpbnRlcm5hbCBtaW5p bWFsIHN5bWJvbHMgc3RvcmUgKGZvciBleGFtcGxlLCBmb3IgaW5mZXJpb3JzCi0rICAgICAgICB3 aXRob3V0IGRlYnVnLWluZm8pLiIiIgotKwotKyAgICAgICAgIyBCb3RoIGdkYi5GcmFtZSwgYW5k IEZyYW1lRGVjb3JhdG9yIGhhdmUgYSBtZXRob2QgY2FsbGVkCi0rICAgICAgICAjICJmdW5jdGlv biIsIHNvIGRldGVybWluZSB3aGljaCBvYmplY3QgdGhpcyBpcy4KLSsgICAgICAgIGlmIG5vdCBp c2luc3RhbmNlKHNlbGYuX2Jhc2UsIGdkYi5GcmFtZSk6Ci0rICAgICAgICAgICAgaWYgaGFzYXR0 cihzZWxmLl9iYXNlLCAiZnVuY3Rpb24iKToKLSsgICAgICAgICAgICAgICAgIyBJZiBpdCBpcyBu b3QgYSBnZGIuRnJhbWUsIGFuZCB0aGVyZSBpcyBhbHJlYWR5IGEKLSsgICAgICAgICAgICAgICAg IyAiZnVuY3Rpb24iIG1ldGhvZCwgdXNlIHRoYXQuCi0rICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLl9iYXNlLmZ1bmN0aW9uKCkKLSsKLSsgICAgICAgIGZyYW1lID0gc2VsZi5pbmZlcmlvcl9m cmFtZSgpCi0rCi0rICAgICAgICBpZiBmcmFtZS50eXBlKCkgPT0gZ2RiLkRVTU1ZX0ZSQU1FOgot KyAgICAgICAgICAgIHJldHVybiAiPGZ1bmN0aW9uIGNhbGxlZCBmcm9tIGdkYj4iCi0rICAgICAg ICBlbGlmIGZyYW1lLnR5cGUoKSA9PSBnZGIuU0lHVFJBTVBfRlJBTUU6Ci0rICAgICAgICAgICAg cmV0dXJuICI8c2lnbmFsIGhhbmRsZXIgY2FsbGVkPiIKLSsKLSsgICAgICAgIGZ1bmMgPSBmcmFt ZS5mdW5jdGlvbigpCi0rCi0rICAgICAgICAjIElmIHdlIGNhbm5vdCBkZXRlcm1pbmUgdGhlIGZ1 bmN0aW9uIG5hbWUsIHJldHVybiB0aGUKLSsgICAgICAgICMgYWRkcmVzcy4gIElmIEdEQiBkZXRl Y3RzIGFuIGludGVnZXIgdmFsdWUgZnJvbSB0aGlzIGZ1bmN0aW9uCi0rICAgICAgICAjIGl0IHdp bGwgYXR0ZW1wdCB0byBmaW5kIHRoZSBmdW5jdGlvbiBuYW1lIGZyb20gbWluaW1hbAotKyAgICAg ICAgIyBzeW1ib2xzIHZpYSBpdHMgb3duIGludGVybmFsIGZ1bmN0aW9ucy4KLSsgICAgICAgIGlm IGZ1bmMgPT0gTm9uZToKLSsgICAgICAgICAgICBwYyA9IGZyYW1lLnBjKCkKLSsgICAgICAgICAg ICByZXR1cm4gcGMKLSsKLSsgICAgICAgIHJldHVybiBzdHIoZnVuYykKLSsKLSsgICAgZGVmIGFk ZHJlc3Moc2VsZik6Ci0rICAgICAgICAiIiIgUmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBmcmFt ZSdzIHBjIiIiCi0rCi0rICAgICAgICBpZiBoYXNhdHRyKHNlbGYuX2Jhc2UsICJhZGRyZXNzIik6 Ci0rICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2Jhc2UuYWRkcmVzcygpCi0rCi0rICAgICAgICBm cmFtZSA9IHNlbGYuaW5mZXJpb3JfZnJhbWUoKQotKyAgICAgICAgcmV0dXJuIGZyYW1lLnBjKCkK LSsKLSsgICAgZGVmIGZpbGVuYW1lKHNlbGYpOgotKyAgICAgICAgIiIiIFJldHVybiB0aGUgZmls ZW5hbWUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZnJhbWUsIGRldGVjdGluZwotKyAgICAgICAgYW5k IHJldHVybmluZyB0aGUgYXBwcm9wcmlhdGUgbGlicmFyeSBuYW1lIGlzIHRoaXMgaXMgYSBzaGFy ZWQKLSsgICAgICAgIGxpYnJhcnkuIiIiCi0rCi0rICAgICAgICBpZiBoYXNhdHRyKHNlbGYuX2Jh c2UsICJmaWxlbmFtZSIpOgotKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9iYXNlLmZpbGVuYW1l KCkKLSsKLSsgICAgICAgIGZyYW1lID0gc2VsZi5pbmZlcmlvcl9mcmFtZSgpCi0rICAgICAgICBz YWwgPSBmcmFtZS5maW5kX3NhbCgpCi0rICAgICAgICBpZiBub3Qgc2FsLnN5bXRhYiBvciBub3Qg c2FsLnN5bXRhYi5maWxlbmFtZToKLSsgICAgICAgICAgICBwYyA9IGZyYW1lLnBjKCkKLSsgICAg ICAgICAgICByZXR1cm4gZ2RiLnNvbGliX25hbWUocGMpCi0rICAgICAgICBlbHNlOgotKyAgICAg ICAgICAgIHJldHVybiBzYWwuc3ltdGFiLmZpbGVuYW1lCi0rCi0rICAgIGRlZiBmcmFtZV9hcmdz KHNlbGYpOgotKyAgICAgICAgIiIiIFJldHVybiBhbiBpdGVyYWJsZSBvZiBmcmFtZSBhcmd1bWVu dHMgZm9yIHRoaXMgZnJhbWUsIGlmCi0rICAgICAgICBhbnkuICBUaGUgaXRlcmFibGUgb2JqZWN0 IGNvbnRhaW5zIG9iamVjdHMgY29uZm9ybWluZyB3aXRoIHRoZQotKyAgICAgICAgU3ltYm9sL1Zh bHVlIGludGVyZmFjZS4gIElmIHRoZXJlIGFyZSBubyBmcmFtZSBhcmd1bWVudHMsIG9yCi0rICAg ICAgICBpZiB0aGlzIGZyYW1lIGlzIGRlZW1lZCB0byBiZSBhIHNwZWNpYWwgY2FzZSwgcmV0dXJu IE5vbmUuIiIiCi0rCi0rICAgICAgICBpZiBoYXNhdHRyKHNlbGYuX2Jhc2UsICJmcmFtZV9hcmdz Iik6Ci0rICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2Jhc2UuZnJhbWVfYXJncygpCi0rCi0rICAg ICAgICBmcmFtZSA9IHNlbGYuaW5mZXJpb3JfZnJhbWUoKQotKyAgICAgICAgaWYgc2VsZi5faXNf bGltaXRlZF9mcmFtZShmcmFtZSk6Ci0rICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSsKLSsgICAg ICAgIGFyZ3MgPSBGcmFtZVZhcnMoZnJhbWUpCi0rICAgICAgICByZXR1cm4gYXJncy5mZXRjaF9m cmFtZV9hcmdzKCkKLSsKLSsgICAgZGVmIGZyYW1lX2xvY2FscyhzZWxmKToKLSsgICAgICAgICIi IiBSZXR1cm4gYW4gaXRlcmFibGUgb2YgbG9jYWwgdmFyaWFibGVzIGZvciB0aGlzIGZyYW1lLCBp ZgotKyAgICAgICAgYW55LiAgVGhlIGl0ZXJhYmxlIG9iamVjdCBjb250YWlucyBvYmplY3RzIGNv bmZvcm1pbmcgd2l0aCB0aGUKLSsgICAgICAgIFN5bWJvbC9WYWx1ZSBpbnRlcmZhY2UuICBJZiB0 aGVyZSBhcmUgbm8gZnJhbWUgbG9jYWxzLCBvciBpZgotKyAgICAgICAgdGhpcyBmcmFtZSBpcyBk ZWVtZWQgdG8gYmUgYSBzcGVjaWFsIGNhc2UsIHJldHVybiBOb25lLiIiIgotKwotKyAgICAgICAg aWYgaGFzYXR0cihzZWxmLl9iYXNlLCAiZnJhbWVfbG9jYWxzIik6Ci0rICAgICAgICAgICAgcmV0 dXJuIHNlbGYuX2Jhc2UuZnJhbWVfbG9jYWxzKCkKLSsKLSsgICAgICAgIGZyYW1lID0gc2VsZi5p bmZlcmlvcl9mcmFtZSgpCi0rICAgICAgICBpZiBzZWxmLl9pc19saW1pdGVkX2ZyYW1lKGZyYW1l KToKLSsgICAgICAgICAgICByZXR1cm4gTm9uZQotKwotKyAgICAgICAgYXJncyA9IEZyYW1lVmFy cyhmcmFtZSkKLSsgICAgICAgIHJldHVybiBhcmdzLmZldGNoX2ZyYW1lX2xvY2FscygpCi0rCi0r ICAgIGRlZiBsaW5lKHNlbGYpOgotKyAgICAgICAgIiIiIFJldHVybiBsaW5lIG51bWJlciBpbmZv cm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIGZyYW1lJ3MKLSsgICAgICAgIHBjLiAgSWYgc3lt Ym9sIHRhYmxlL2xpbmUgaW5mb3JtYXRpb24gZG9lcyBub3QgZXhpc3QsIG9yIGlmCi0rICAgICAg ICB0aGlzIGZyYW1lIGlzIGRlZW1lZCB0byBiZSBhIHNwZWNpYWwgY2FzZSwgcmV0dXJuIE5vbmUi IiIKLSsKLSsgICAgICAgIGlmIGhhc2F0dHIoc2VsZi5fYmFzZSwgImxpbmUiKToKLSsgICAgICAg ICAgICByZXR1cm4gc2VsZi5fYmFzZS5saW5lKCkKLSsKLSsgICAgICAgIGZyYW1lID0gc2VsZi5p bmZlcmlvcl9mcmFtZSgpCi0rICAgICAgICBpZiBzZWxmLl9pc19saW1pdGVkX2ZyYW1lKGZyYW1l KToKLSsgICAgICAgICAgICByZXR1cm4gTm9uZQotKwotKyAgICAgICAgc2FsID0gZnJhbWUuZmlu ZF9zYWwoKQotKyAgICAgICAgaWYgKHNhbCk6Ci0rICAgICAgICAgICAgcmV0dXJuIHNhbC5saW5l Ci0rICAgICAgICBlbHNlOgotKyAgICAgICAgICAgIHJldHVybiBOb25lCi0rCi0rICAgIGRlZiBp bmZlcmlvcl9mcmFtZShzZWxmKToKLSsgICAgICAgICIiIiBSZXR1cm4gdGhlIGdkYi5GcmFtZSB1 bmRlcnBpbm5pbmcgdGhpcyBmcmFtZSBkZWNvcmF0b3IuIiIiCi0rCi0rICAgICAgICAjIElmICdi YXNlJyBpcyBhIGZyYW1lIGRlY29yYXRvciwgd2Ugd2FudCB0byBjYWxsIGl0cyBpbmZlcmlvcgot KyAgICAgICAgIyBmcmFtZSBtZXRob2QuICBJZiAnX2Jhc2UnIGlzIGEgZ2RiLkZyYW1lLCBqdXN0 IHJldHVybiB0aGF0LgotKyAgICAgICAgaWYgaGFzYXR0cihzZWxmLl9iYXNlLCAiaW5mZXJpb3Jf ZnJhbWUiKToKLSsgICAgICAgICAgICByZXR1cm4gc2VsZi5fYmFzZS5pbmZlcmlvcl9mcmFtZSgp Ci0rICAgICAgICByZXR1cm4gc2VsZi5fYmFzZQotKwotK2NsYXNzIFN5bVZhbHVlV3JhcHBlcihv YmplY3QpOgotKyAgICAiIiJBIGNvbnRhaW5lciBjbGFzcyBjb25mb3JtaW5nIHRvIHRoZSBTeW1i b2wvVmFsdWUgaW50ZXJmYWNlCi0rICAgIHdoaWNoIGhvbGRzIGZyYW1lIGxvY2FscyBvciBmcmFt ZSBhcmd1bWVudHMuIiIiCi0rICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzeW1ib2wsIHZhbHVlKToK LSsgICAgICAgIHNlbGYuc3ltID0gc3ltYm9sCi0rICAgICAgICBzZWxmLnZhbCA9IHZhbHVlCi0r Ci0rICAgIGRlZiB2YWx1ZShzZWxmKToKLSsgICAgICAgICIiIiBSZXR1cm4gdGhlIHZhbHVlIGFz c29jaWF0ZWQgd2l0aCB0aGlzIHN5bWJvbCwgb3IgTm9uZSIiIgotKyAgICAgICAgcmV0dXJuIHNl bGYudmFsCi0rCi0rICAgIGRlZiBzeW1ib2woc2VsZik6Ci0rICAgICAgICAiIiIgUmV0dXJuIHRo ZSBzeW1ib2wsIG9yIFB5dGhvbiB0ZXh0LCBhc3NvY2lhdGVkIHdpdGggdGhpcwotKyAgICAgICAg c3ltYm9sLCBvciBOb25lIiIiCi0rICAgICAgICByZXR1cm4gc2VsZi5zeW0KLSsKLStjbGFzcyBG cmFtZVZhcnMob2JqZWN0KToKLSsKLSsgICAgIiIiVXRpbGl0eSBjbGFzcyB0byBmZXRjaCBhbmQg c3RvcmUgZnJhbWUgbG9jYWwgdmFyaWFibGVzLCBvcgotKyAgICBmcmFtZSBhcmd1bWVudHMuIiIi Ci0rCi0rICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmcmFtZSk6Ci0rICAgICAgICBzZWxmLmZyYW1l ID0gZnJhbWUKLSsgICAgICAgIHNlbGYuc3ltYm9sX2NsYXNzID0gewotKyAgICAgICAgICAgIGdk Yi5TWU1CT0xfTE9DX1NUQVRJQzogVHJ1ZSwKLSsgICAgICAgICAgICBnZGIuU1lNQk9MX0xPQ19S RUdJU1RFUjogVHJ1ZSwKLSsgICAgICAgICAgICBnZGIuU1lNQk9MX0xPQ19BUkc6IFRydWUsCi0r ICAgICAgICAgICAgZ2RiLlNZTUJPTF9MT0NfUkVGX0FSRzogVHJ1ZSwKLSsgICAgICAgICAgICBn ZGIuU1lNQk9MX0xPQ19MT0NBTDogVHJ1ZSwKLSsJICAgIGdkYi5TWU1CT0xfTE9DX1JFR1BBUk1f QUREUjogVHJ1ZSwKLSsJICAgIGdkYi5TWU1CT0xfTE9DX0NPTVBVVEVEOiBUcnVlCi0rICAgICAg ICAgICAgfQotKwotKyAgICBkZWYgZmV0Y2hfYihzZWxmLCBzeW0pOgotKyAgICAgICAgIiIiIExv Y2FsIHV0aWxpdHkgbWV0aG9kIHRvIGRldGVybWluZSBpZiBhY2NvcmRpbmcgdG8gU3ltYm9sCi0r ICAgICAgICB0eXBlIHdoZXRoZXIgaXQgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSBpdGVyYXRv ci4gIE5vdCBhbGwKLSsgICAgICAgIHN5bWJvbHMgYXJlIGZldGNoZWQsIGFuZCBvbmx5IHN5bWJv bHMgdGhhdCByZXR1cm4KLSsgICAgICAgIFRydWUgZnJvbSB0aGlzIG1ldGhvZCBzaG91bGQgYmUg ZmV0Y2hlZC4iIiIKLSsKLSsgICAgICAgICMgU1lNIG1heSBiZSBhIHN0cmluZyBpbnN0ZWFkIG9m IGEgc3ltYm9sIGluIHRoZSBjYXNlIG9mCi0rICAgICAgICAjIHN5bnRoZXRpYyBsb2NhbCBhcmd1 bWVudHMgb3IgbG9jYWxzLiAgSWYgdGhhdCBpcyB0aGUgY2FzZSwKLSsgICAgICAgICMgYWx3YXlz IGZldGNoLgotKyAgICAgICAgaWYgaXNpbnN0YW5jZShzeW0sIGJhc2VzdHJpbmcpOgotKyAgICAg ICAgICAgIHJldHVybiBUcnVlCi0rCi0rICAgICAgICBzeW1fdHlwZSA9IHN5bS5hZGRyX2NsYXNz Ci0rCi0rICAgICAgICByZXR1cm4gc2VsZi5zeW1ib2xfY2xhc3MuZ2V0KHN5bV90eXBlLCBGYWxz ZSkKLSsKLSsgICAgZGVmIGZldGNoX2ZyYW1lX2xvY2FscyhzZWxmKToKLSsgICAgICAgICIiIlB1 YmxpYyB1dGlsaXR5IG1ldGhvZCB0byBmZXRjaCBmcmFtZSBsb2NhbCB2YXJpYWJsZXMgZm9yCi0r ICAgICAgICB0aGUgc3RvcmVkIGZyYW1lLiAgRnJhbWUgYXJndW1lbnRzIGFyZSBub3QgZmV0Y2hl ZC4gIElmIHRoZXJlCi0rICAgICAgICBhcmUgbm8gZnJhbWUgbG9jYWwgdmFyaWFibGVzLCByZXR1 cm4gYW4gZW1wdHkgbGlzdC4iIiIKLSsgICAgICAgIGx2YXJzID0gW10KLSsKLSsgICAgICAgIGJs b2NrID0gc2VsZi5mcmFtZS5ibG9jaygpCi0rCi0rICAgICAgICB3aGlsZSBibG9jayAhPSBOb25l OgotKyAgICAgICAgICAgIGlmIGJsb2NrLmlzX2dsb2JhbCBvciBibG9jay5pc19zdGF0aWM6Ci0r ICAgICAgICAgICAgICAgIGJyZWFrCi0rICAgICAgICAgICAgZm9yIHN5bSBpbiBibG9jazoKLSsg ICAgICAgICAgICAgICAgaWYgc3ltLmlzX2FyZ3VtZW50OgotKyAgICAgICAgICAgICAgICAgICAg Y29udGludWU7Ci0rICAgICAgICAgICAgICAgIGlmIHNlbGYuZmV0Y2hfYihzeW0pOgotKyAgICAg ICAgICAgICAgICAgICAgbHZhcnMuYXBwZW5kKFN5bVZhbHVlV3JhcHBlcihzeW0sIE5vbmUpKQot KwotKyAgICAgICAgICAgIGJsb2NrID0gYmxvY2suc3VwZXJibG9jawotKwotKyAgICAgICAgcmV0 dXJuIGx2YXJzCi0rCi0rICAgIGRlZiBmZXRjaF9mcmFtZV9hcmdzKHNlbGYpOgotKyAgICAgICAg IiIiUHVibGljIHV0aWxpdHkgbWV0aG9kIHRvIGZldGNoIGZyYW1lIGFyZ3VtZW50cyBmb3IgdGhl Ci0rICAgICAgICBzdG9yZWQgZnJhbWUuICBGcmFtZSBhcmd1bWVudHMgYXJlIHRoZSBvbmx5IHR5 cGUgZmV0Y2hlZC4gIElmCi0rICAgICAgICB0aGVyZSBhcmUgbm8gZnJhbWUgYXJndW1lbnQgdmFy aWFibGVzLCByZXR1cm4gYW4gZW1wdHkgbGlzdC4iIiIKLSsKLSsgICAgICAgIGFyZ3MgPSBbXQot KyAgICAgICAgYmxvY2sgPSBzZWxmLmZyYW1lLmJsb2NrKCkKLSsgICAgICAgIHdoaWxlIGJsb2Nr ICE9IE5vbmU6Ci0rICAgICAgICAgICAgaWYgYmxvY2suZnVuY3Rpb24gIT0gTm9uZToKLSsgICAg ICAgICAgICAgICAgYnJlYWsKLSsgICAgICAgICAgICBibG9jayA9IGJsb2NrLnN1cGVyYmxvY2sK LSsKLSsgICAgICAgIGlmIGJsb2NrICE9IE5vbmU6Ci0rICAgICAgICAgICAgZm9yIHN5bSBpbiBi bG9jazoKLSsgICAgICAgICAgICAgICAgaWYgbm90IHN5bS5pc19hcmd1bWVudDoKLSsgICAgICAg ICAgICAgICAgICAgIGNvbnRpbnVlOwotKyAgICAgICAgICAgICAgICBhcmdzLmFwcGVuZChTeW1W YWx1ZVdyYXBwZXIoc3ltLCBOb25lKSkKLSsKLSsgICAgICAgIHJldHVybiBhcmdzCi1JbmRleDog Z2RiLTcuNi9nZGIvcHl0aG9uL2xpYi9nZGIvRnJhbWVJdGVyYXRvci5weQotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdk Yi03LjYvZ2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1lSXRlcmF0b3IucHkJMjAxMy0wNi0xMCAxNDoz MTowOC4zNjcwODI0MzYgKzAyMDAKLUBAIC0wLDAgKzEsNDUgQEAKLSsjIENvcHlyaWdodCAoQykg MjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0r IyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCi0rCi0raW1wb3J0IGdkYgotK2ltcG9ydCBpdGVydG9vbHMKLSsKLStjbGFz cyBGcmFtZUl0ZXJhdG9yKG9iamVjdCk6Ci0rICAgICIiIkEgZ2RiLkZyYW1lIGl0ZXJhdG9yLiAg SXRlcmF0ZXMgb3ZlciBnZGIuRnJhbWVzIG9yIG9iamVjdHMgdGhhdAotKyAgICBjb25mb3JtIHRv IHRoYXQgaW50ZXJmYWNlLiIiIgotKwotKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnJhbWVfb2Jq KToKLSsgICAgICAgICIiIkluaXRpYWxpemUgYSBGcmFtZUl0ZXJhdG9yLgotKwotKyAgICAgICAg QXJndW1lbnRzOgotKyAgICAgICAgICAgIGZyYW1lX29iaiB0aGUgc3RhcnRpbmcgZnJhbWUuIiIi Ci0rCi0rICAgICAgICBzdXBlcihGcmFtZUl0ZXJhdG9yLCBzZWxmKS5fX2luaXRfXygpCi0rICAg ICAgICBzZWxmLmZyYW1lID0gZnJhbWVfb2JqCi0rCi0rICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToK LSsgICAgICAgIHJldHVybiBzZWxmCi0rCi0rICAgIGRlZiBuZXh0KHNlbGYpOgotKyAgICAgICAg IiIibmV4dCBpbXBsZW1lbnRhdGlvbi4KLSsKLSsgICAgICAgIFJldHVybnM6Ci0rICAgICAgICAg ICAgVGhlIG5leHQgb2xkZXN0IGZyYW1lLiIiIgotKwotKyAgICAgICAgcmVzdWx0ID0gc2VsZi5m cmFtZQotKyAgICAgICAgaWYgcmVzdWx0IGlzIE5vbmU6Ci0rICAgICAgICAgICAgcmFpc2UgU3Rv cEl0ZXJhdGlvbgotKyAgICAgICAgc2VsZi5mcmFtZSA9IHJlc3VsdC5vbGRlcigpCi0rICAgICAg ICByZXR1cm4gcmVzdWx0Ci1JbmRleDogZ2RiLTcuNi9nZGIvcHl0aG9uL2xpYi9nZGIvZnJhbWVz LnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAw MDAwICswMDAwCi0rKysgZ2RiLTcuNi9nZGIvcHl0aG9uL2xpYi9nZGIvZnJhbWVzLnB5CTIwMTMt MDYtMTAgMTQ6MzE6MDguMzY4MDgyNDM2ICswMjAwCi1AQCAtMCwwICsxLDIyOSBAQAotKyMgRnJh bWUtZmlsdGVyIGNvbW1hbmRzLgotKyMgQ29weXJpZ2h0IChDKSAyMDEzIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsi IiJJbnRlcm5hbCBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCBmcmFtZS1maWx0ZXJzLiIiIgot KwotK2ltcG9ydCBnZGIKLStmcm9tIGdkYi5GcmFtZUl0ZXJhdG9yIGltcG9ydCBGcmFtZUl0ZXJh dG9yCi0rZnJvbSBnZGIuRnJhbWVEZWNvcmF0b3IgaW1wb3J0IEZyYW1lRGVjb3JhdG9yCi0raW1w b3J0IGl0ZXJ0b29scwotK2ltcG9ydCBjb2xsZWN0aW9ucwotKwotK2RlZiBnZXRfcHJpb3JpdHko ZmlsdGVyX2l0ZW0pOgotKyAgICAiIiIgSW50ZXJuYWwgd29ya2VyIGZ1bmN0aW9uIHRvIHJldHVy biB0aGUgZnJhbWUtZmlsdGVyJ3MgcHJpb3JpdHkKLSsgICAgZnJvbSBhIGZyYW1lIGZpbHRlciBv YmplY3QuICBUaGlzIGlzIGEgZmFpbCBmcmVlIGZ1bmN0aW9uIGFzIGl0IGlzCi0rICAgIHVzZWQg aW4gc29ydGluZyBhbmQgZmlsdGVyaW5nLiAgSWYgYSBiYWRseSBpbXBsZW1lbnRlZCBmcmFtZQot KyAgICBmaWx0ZXIgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBwcmlvcml0eSBhdHRyaWJ1dGUsIHJl dHVybiB6ZXJvCi0rICAgIChvdGhlcndpc2Ugc29ydGluZy9maWx0ZXJpbmcgd2lsbCBmYWlsIGFu ZCBwcmV2ZW50IG90aGVyIGZyYW1lCi0rICAgIGZpbHRlcnMgZnJvbSBleGVjdXRpbmcpLgotKwot KyAgICBBcmd1bWVudHM6Ci0rICAgICAgICBmaWx0ZXJfaXRlbTogQW4gb2JqZWN0IGNvbmZvcm1p bmcgdG8gdGhlIGZyYW1lIGZpbHRlcgotKyAgICAgICAgICAgICAgICAgICAgIGludGVyZmFjZS4K LSsKLSsgICAgUmV0dXJuczoKLSsgICAgICAgIFRoZSBwcmlvcml0eSBvZiB0aGUgZnJhbWUgZmls dGVyIGZyb20gdGhlICJwcmlvcml0eSIKLSsgICAgICAgIGF0dHJpYnV0ZSwgb3IgemVyby4KLSsg ICAgIiIiCi0rICAgICMgRG8gbm90IGZhaWwgaGVyZSwgYXMgdGhlIHNvcnQgd2lsbCBmYWlsLiAg SWYgYSBmaWx0ZXIgaGFzIG5vdAotKyAgICAjIChpbmNvcnJlY3RseSkgc2V0IGEgcHJpb3JpdHks IHNldCBpdCB0byB6ZXJvLgotKyAgICByZXR1cm4gZ2V0YXR0cihmaWx0ZXJfaXRlbSwgInByaW9y aXR5IiwgMCkKLSsKLStkZWYgc2V0X3ByaW9yaXR5KGZpbHRlcl9pdGVtLCBwcmlvcml0eSk6Ci0r ICAgICIiIiBJbnRlcm5hbCB3b3JrZXIgZnVuY3Rpb24gdG8gc2V0IHRoZSBmcmFtZS1maWx0ZXIn cyBwcmlvcml0eS4KLSsKLSsgICAgQXJndW1lbnRzOgotKyAgICAgICAgZmlsdGVyX2l0ZW06IEFu IG9iamVjdCBjb25mb3JtaW5nIHRvIHRoZSBmcmFtZSBmaWx0ZXIKLSsgICAgICAgICAgICAgICAg ICAgICBpbnRlcmZhY2UuCi0rICAgICAgICBwcmlvcml0eTogVGhlIHByaW9yaXR5IHRvIGFzc2ln biBhcyBhbiBpbnRlZ2VyLgotKyAgICAiIiIKLSsKLSsgICAgZmlsdGVyX2l0ZW0ucHJpb3JpdHkg PSBwcmlvcml0eQotKwotK2RlZiBnZXRfZW5hYmxlZChmaWx0ZXJfaXRlbSk6Ci0rICAgICIiIiBJ bnRlcm5hbCB3b3JrZXIgZnVuY3Rpb24gdG8gcmV0dXJuIGEgZmlsdGVyJ3MgZW5hYmxlZCBzdGF0 ZQotKyAgICBmcm9tIGEgZnJhbWUgZmlsdGVyIG9iamVjdC4gIFRoaXMgaXMgYSBmYWlsIGZyZWUg ZnVuY3Rpb24gYXMgaXQgaXMKLSsgICAgdXNlZCBpbiBzb3J0aW5nIGFuZCBmaWx0ZXJpbmcuICBJ ZiBhIGJhZGx5IGltcGxlbWVudGVkIGZyYW1lCi0rICAgIGZpbHRlciBkb2VzIG5vdCBpbXBsZW1l bnQgdGhlIGVuYWJsZWQgYXR0cmlidXRlLCByZXR1cm4gRmFsc2UKLSsgICAgKG90aGVyd2lzZSBz b3J0aW5nL2ZpbHRlcmluZyB3aWxsIGZhaWwgYW5kIHByZXZlbnQgb3RoZXIgZnJhbWUKLSsgICAg ZmlsdGVycyBmcm9tIGV4ZWN1dGluZykuCi0rCi0rICAgIEFyZ3VtZW50czoKLSsgICAgICAgIGZp bHRlcl9pdGVtOiBBbiBvYmplY3QgY29uZm9ybWluZyB0byB0aGUgZnJhbWUgZmlsdGVyCi0rICAg ICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlLgotKwotKyAgICBSZXR1cm5zOgotKyAgICAgICAg VGhlIGVuYWJsZWQgc3RhdGUgb2YgdGhlIGZyYW1lIGZpbHRlciBmcm9tIHRoZSAiZW5hYmxlZCIK LSsgICAgICAgIGF0dHJpYnV0ZSwgb3IgRmFsc2UuCi0rICAgICIiIgotKwotKyAgICAjIElmIHRo ZSBmaWx0ZXIgY2xhc3MgaXMgYmFkbHkgaW1wbGVtZW50ZWQgd2hlbiBjYWxsZWQgZnJvbSB0aGUK LSsgICAgIyBQeXRob24gZmlsdGVyIGNvbW1hbmQsIGRvIG5vdCBjZWFzZSBmaWx0ZXIgb3BlcmF0 aW9ucywganVzdCBzZXQKLSsgICAgIyBlbmFibGVkIHRvIEZhbHNlLgotKyAgICByZXR1cm4gZ2V0 YXR0cihmaWx0ZXJfaXRlbSwgImVuYWJsZWQiLCBGYWxzZSkKLSsKLStkZWYgc2V0X2VuYWJsZWQo ZmlsdGVyX2l0ZW0sIHN0YXRlKToKLSsgICAgIiIiIEludGVybmFsIFdvcmtlciBmdW5jdGlvbiB0 byBzZXQgdGhlIGZyYW1lLWZpbHRlcidzIGVuYWJsZWQKLSsgICAgc3RhdGUuCi0rCi0rICAgIEFy Z3VtZW50czoKLSsgICAgICAgIGZpbHRlcl9pdGVtOiBBbiBvYmplY3QgY29uZm9ybWluZyB0byB0 aGUgZnJhbWUgZmlsdGVyCi0rICAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlLgotKyAgICAg ICAgc3RhdGU6IFRydWUgb3IgRmFsc2UsIGRlcGVuZGluZyBvbiBkZXNpcmVkIHN0YXRlLgotKyAg ICAiIiIKLSsKLSsgICAgZmlsdGVyX2l0ZW0uZW5hYmxlZCA9IHN0YXRlCi0rCi0rZGVmIHJldHVy bl9saXN0KG5hbWUpOgotKyAgICAiIiIgSW50ZXJuYWwgV29ya2VyIGZ1bmN0aW9uIHRvIHJldHVy biB0aGUgZnJhbWUgZmlsdGVyCi0rICAgIGRpY3Rpb25hcnksIGRlcGVuZGluZyBvbiB0aGUgbmFt ZSBzdXBwbGllZCBhcyBhbiBhcmd1bWVudC4gIElmIHRoZQotKyAgICBuYW1lIGlzIG5vdCAiYWxs IiwgImdsb2JhbCIgb3IgInByb2dzcGFjZSIsIGl0IGlzIGFzc3VtZWQgdG8gbmFtZQotKyAgICBh biBvYmplY3QtZmlsZS4KLSsKLSsgICAgQXJndW1lbnRzOgotKyAgICAgICAgbmFtZTogVGhlIG5h bWUgb2YgdGhlIGxpc3QsIGFzIHNwZWNpZmllZCBieSBHREIgdXNlciBjb21tYW5kcy4KLSsKLSsg ICAgUmV0dXJuczoKLSsgICAgICAgIEEgZGljdGlvbmFyeSBvYmplY3QgZm9yIGEgc2luZ2xlIHNw ZWNpZmllZCBkaWN0aW9uYXJ5LCBvciBhCi0rICAgICAgICBsaXN0IGNvbnRhaW5pbmcgYWxsIHRo ZSBpdGVtcyBmb3IgImFsbCIKLSsKLSsgICAgUmFpc2VzOgotKyAgICAgICAgZ2RiLkdkYkVycm9y OiAgQSBkaWN0aW9uYXJ5IG9mIHRoYXQgbmFtZSBjYW5ub3QgYmUgZm91bmQuCi0rICAgICIiIgot KwotKyAgICAjIElmIGFsbCBkaWN0aW9uYXJpZXMgYXJlIHdhbnRlZCBpbiB0aGUgY2FzZSBvZiAi YWxsIiB3ZQotKyAgICAjIGNhbm5vdCByZXR1cm4gYSBjb21iaW5lZCBkaWN0aW9uYXJ5IGFzIGtl eXMoKSBtYXkgY2xhc2ggaW4KLSsgICAgIyBiZXR3ZWVuIGRpZmZlcmVudCBkaWN0aW9uYXJpZXMu ICBBcyB3ZSBqdXN0IHdhbnQgYWxsIHRoZSBmcmFtZQotKyAgICAjIGZpbHRlcnMgdG8gZW5hYmxl L2Rpc2FibGUgdGhlbSBhbGwsIGp1c3QgcmV0dXJuIHRoZSBjb21iaW5lZAotKyAgICAjIGl0ZW1z KCkgYXMgYSBsaXN0LgotKyAgICBpZiBuYW1lID09ICJhbGwiOgotKyAgICAgICAgYWxsX2RpY3Rz ID0gZ2RiLmZyYW1lX2ZpbHRlcnMudmFsdWVzKCkKLSsgICAgICAgIGFsbF9kaWN0cyA9IGFsbF9k aWN0cyArIGdkYi5jdXJyZW50X3Byb2dzcGFjZSgpLmZyYW1lX2ZpbHRlcnMudmFsdWVzKCkKLSsg ICAgICAgIGZvciBvYmpmaWxlIGluIGdkYi5vYmpmaWxlcygpOgotKyAgICAgICAgICAgIGFsbF9k aWN0cyA9IGFsbF9kaWN0cyArIG9iamZpbGUuZnJhbWVfZmlsdGVycy52YWx1ZXMoKQotKyAgICAg ICAgICAgIHJldHVybiBhbGxfZGljdHMKLSsKLSsgICAgaWYgbmFtZSA9PSAiZ2xvYmFsIjoKLSsg ICAgICAgIHJldHVybiBnZGIuZnJhbWVfZmlsdGVycwotKyAgICBlbHNlOgotKyAgICAgICAgaWYg bmFtZSA9PSAicHJvZ3NwYWNlIjoKLSsgICAgICAgICAgICBjcCA9IGdkYi5jdXJyZW50X3Byb2dz cGFjZSgpCi0rICAgICAgICAgICAgcmV0dXJuIGNwLmZyYW1lX2ZpbHRlcnMKLSsgICAgICAgIGVs c2U6Ci0rICAgICAgICAgICAgZm9yIG9iamZpbGUgaW4gZ2RiLm9iamZpbGVzKCk6Ci0rICAgICAg ICAgICAgICAgIGlmIG5hbWUgPT0gb2JqZmlsZS5maWxlbmFtZToKLSsgICAgICAgICAgICAgICAg ICAgIHJldHVybiBvYmpmaWxlLmZyYW1lX2ZpbHRlcnMKLSsKLSsgICAgbXNnID0gIkNhbm5vdCBm aW5kIGZyYW1lLWZpbHRlciBkaWN0aW9uYXJ5IGZvciAnIiArIG5hbWUgKyAiJyIKLSsgICAgcmFp c2UgZ2RiLkdkYkVycm9yKG1zZykKLSsKLStkZWYgX3NvcnRfbGlzdCgpOgotKyAgICAiIiIgSW50 ZXJuYWwgV29ya2VyIGZ1bmN0aW9uIHRvIG1lcmdlIGFsbCBrbm93biBmcmFtZS1maWx0ZXIKLSsg ICAgbGlzdHMsIHBydW5lIGFueSBmaWx0ZXJzIHdpdGggdGhlIHN0YXRlIHNldCB0byAiZGlzYWJs ZWQiLCBhbmQKLSsgICAgc29ydCB0aGUgbGlzdCBvbiB0aGUgZnJhbWUtZmlsdGVyJ3MgInByaW9y aXR5IiBhdHRyaWJ1dGUuCi0rCi0rICAgIFJldHVybnM6Ci0rICAgICAgICBzb3J0ZWRfbGlzdDog QSBzb3J0ZWQsIHBydW5lZCBsaXN0IG9mIGZyYW1lIGZpbHRlcnMgdG8KLSsgICAgICAgICAgICAg ICAgICAgICBleGVjdXRlLgotKyAgICAiIiIKLSsKLSsgICAgYWxsX2ZpbHRlcnMgPSBbXQotKyAg ICBmb3Igb2JqZmlsZSBpbiBnZGIub2JqZmlsZXMoKToKLSsgICAgICAgIGFsbF9maWx0ZXJzID0g YWxsX2ZpbHRlcnMgKyBvYmpmaWxlLmZyYW1lX2ZpbHRlcnMudmFsdWVzKCkKLSsgICAgY3AgPSBn ZGIuY3VycmVudF9wcm9nc3BhY2UoKQotKwotKyAgICBhbGxfZmlsdGVycyA9IGFsbF9maWx0ZXJz ICsgY3AuZnJhbWVfZmlsdGVycy52YWx1ZXMoKQotKyAgICBhbGxfZmlsdGVycyA9IGFsbF9maWx0 ZXJzICsgZ2RiLmZyYW1lX2ZpbHRlcnMudmFsdWVzKCkKLSsKLSsgICAgc29ydGVkX2ZyYW1lX2Zp bHRlcnMgPSBzb3J0ZWQoYWxsX2ZpbHRlcnMsIGtleSA9IGdldF9wcmlvcml0eSwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2ZXJzZSA9IFRydWUpCi0rCi0rICAgIHNvcnRl ZF9mcmFtZV9maWx0ZXJzID0gZmlsdGVyKGdldF9lbmFibGVkLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzb3J0ZWRfZnJhbWVfZmlsdGVycykKLSsKLSsgICAgcmV0dXJuIHNv cnRlZF9mcmFtZV9maWx0ZXJzCi0rCi0rZGVmIGV4ZWN1dGVfZnJhbWVfZmlsdGVycyhmcmFtZSwg ZnJhbWVfbG93LCBmcmFtZV9oaWdoKToKLSsgICAgIiIiIEludGVybmFsIGZ1bmN0aW9uIGNhbGxl ZCBmcm9tIEdEQiB0aGF0IHdpbGwgZXhlY3V0ZSB0aGUgY2hhaW4KLSsgICAgb2YgZnJhbWUgZmls dGVycy4gIEVhY2ggZmlsdGVyIGlzIGV4ZWN1dGVkIGluIHByaW9yaXR5IG9yZGVyLgotKyAgICBB ZnRlciB0aGUgZXhlY3V0aW9uIGNvbXBsZXRlcywgc2xpY2UgdGhlIGl0ZXJhdG9yIHRvIGZyYW1l X2xvdyAtCi0rICAgIGZyYW1lX2hpZ2ggcmFuZ2UuCi0rCi0rICAgIEFyZ3VtZW50czoKLSsgICAg ICAgIGZyYW1lOiBUaGUgaW5pdGlhbCBmcmFtZS4KLSsKLSsgICAgICAgIGZyYW1lX2xvdzogVGhl IGxvdyByYW5nZSBvZiB0aGUgc2xpY2UuICBJZiB0aGlzIGlzIGEgbmVnYXRpdmUKLSsgICAgICAg IGludGVnZXIgdGhlbiBpdCBpbmRpY2F0ZXMgYSBiYWNrd2FyZCBzbGljZSAoaWUgYnQgLTQpIHdo aWNoCi0rICAgICAgICBjb3VudHMgYmFja3dhcmQgZnJvbSB0aGUgbGFzdCBmcmFtZSBpbiB0aGUg YmFja3RyYWNlLgotKwotKyAgICAgICAgZnJhbWVfaGlnaDogVGhlIGhpZ2ggcmFuZ2Ugb2YgdGhl IHNsaWNlLiAgSWYgdGhpcyBpcyAtMSB0aGVuCi0rICAgICAgICBpdCBpbmRpY2F0ZXMgYWxsIGZy YW1lcyB1bnRpbCB0aGUgZW5kIG9mIHRoZSBzdGFjayBmcm9tCi0rICAgICAgICBmcmFtZV9sb3cu Ci0rCi0rICAgIFJldHVybnM6Ci0rICAgICAgICBmcmFtZV9pdGVyYXRvcjogVGhlIHNsaWNlZCBp dGVyYXRvciBhZnRlciBhbGwgZnJhbWUKLSsgICAgICAgIGZpbHRlcnMgaGF2ZSBoYWQgYSBjaGFu Z2UgdG8gZXhlY3V0ZSwgb3IgTm9uZSBpZiBubyBmcmFtZQotKyAgICAgICAgZmlsdGVycyBhcmUg cmVnaXN0ZXJlZC4KLSsgICAgIiIiCi0rCi0rICAgICMgR2V0IGEgc29ydGVkIGxpc3Qgb2YgZnJh bWUgZmlsdGVycy4KLSsgICAgc29ydGVkX2xpc3QgPSBfc29ydF9saXN0KCkKLSsKLSsgICAgIyBD aGVjayB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBmcmFtZS1maWx0ZXJzLiAgSWYgbm90LCBqdXN0 Ci0rICAgICMgcmV0dXJuIE5vbmUgYW5kIGxldCBkZWZhdWx0IGJhY2t0cmFjZSBwcmludGluZyBv Y2N1ci4KLSsgICAgaWYgbGVuKHNvcnRlZF9saXN0KSA9PSAwOgotKyAgICAgICAgcmV0dXJuIE5v bmUKLSsKLSsgICAgZnJhbWVfaXRlcmF0b3IgPSBGcmFtZUl0ZXJhdG9yKGZyYW1lKQotKwotKyAg ICAjIEFwcGx5IGEgYmFzaWMgZnJhbWUgZGVjb3JhdG9yIHRvIGFsbCBnZGIuRnJhbWVzLiAgVGhp cyB1bmlmaWVzIHRoZQotKyAgICAjIGludGVyZmFjZS4KLSsgICAgZnJhbWVfaXRlcmF0b3IgPSBp dGVydG9vbHMuaW1hcChGcmFtZURlY29yYXRvciwgZnJhbWVfaXRlcmF0b3IpCi0rCi0rICAgIGZv ciBmZiBpbiBzb3J0ZWRfbGlzdDoKLSsgICAgICAgIGZyYW1lX2l0ZXJhdG9yID0gZmYuZmlsdGVy KGZyYW1lX2l0ZXJhdG9yKQotKwotKyAgICAjIFNsaWNpbmcKLSsKLSsgICAgIyBJcyB0aGlzIGEg c2xpY2UgZnJvbSB0aGUgZW5kIG9mIHRoZSBiYWNrdHJhY2UsIGllIGJ0IC0yPwotKyAgICBpZiBm cmFtZV9sb3cgPCAwOgotKyAgICAgICAgY291bnQgPSAwCi0rICAgICAgICBzbGljZV9sZW5ndGgg PSBhYnMoZnJhbWVfbG93KQotKyAgICAgICAgIyBXZSBjYW5ub3QgdXNlIE1BWExFTiBhcmd1bWVu dCBmb3IgZGVxdWUgYXMgaXQgaXMgMi42IG9ud2FyZHMKLSsgICAgICAgICMgYW5kIHNvbWUgR0RC IHZlcnNpb25zIG1pZ2h0IGJlIDwgMi42LgotKyAgICAgICAgc2xpY2VkID0gY29sbGVjdGlvbnMu ZGVxdWUoKQotKwotKyAgICAgICAgZm9yIGZyYW1lX2l0ZW0gaW4gZnJhbWVfaXRlcmF0b3I6Ci0r ICAgICAgICAgICAgaWYgY291bnQgPj0gc2xpY2VfbGVuZ3RoOgotKyAgICAgICAgICAgICAgICBz bGljZWQucG9wbGVmdCgpOwotKyAgICAgICAgICAgIGNvdW50ID0gY291bnQgKyAxCi0rICAgICAg ICAgICAgc2xpY2VkLmFwcGVuZChmcmFtZV9pdGVtKQotKwotKyAgICAgICAgcmV0dXJuIGl0ZXIo c2xpY2VkKQotKwotKyAgICAjIC0xIGZvciBmcmFtZV9oaWdoIG1lYW5zIHVudGlsIHRoZSBlbmQg b2YgdGhlIGJhY2t0cmFjZS4gIFNldCB0bwotKyAgICAjIE5vbmUgaWYgdGhhdCBpcyB0aGUgY2Fz ZSwgdG8gaW5kaWNhdGUgdG8gaXRlcnRvb2xzLmlzbGljZSB0bwotKyAgICAjIHNsaWNlIHRvIHRo ZSBlbmQgb2YgdGhlIGl0ZXJhdG9yLgotKyAgICBpZiBmcmFtZV9oaWdoID09IC0xOgotKyAgICAg ICAgZnJhbWVfaGlnaCA9IE5vbmUKLSsgICAgZWxzZToKLSsgICAgICAgICMgQXMgZnJhbWVzIHN0 YXJ0IGZyb20gMCwgYWRkIG9uZSB0byBmcmFtZV9oaWdoIHNvIGlzbGljZQotKyAgICAgICAgIyBj b3JyZWN0bHkgZmluZHMgdGhlIGVuZAotKyAgICAgICAgZnJhbWVfaGlnaCA9IGZyYW1lX2hpZ2gg KyAxOwotKwotKyAgICBzbGljZWQgPSBpdGVydG9vbHMuaXNsaWNlKGZyYW1lX2l0ZXJhdG9yLCBm cmFtZV9sb3csIGZyYW1lX2hpZ2gpCi0rCi0rICAgIHJldHVybiBzbGljZWQKLUluZGV4OiBnZGIt Ny42L2dkYi9weXRob24vbGliL2dkYi9fX2luaXRfXy5weQotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjYub3JpZy9nZGIvcHl0aG9uL2xpYi9nZGIvX19pbml0X18ucHkJMjAxMy0wNi0xMCAxNDozMTow Mi43MzMwODQ2NTEgKzAyMDAKLSsrKyBnZGItNy42L2dkYi9weXRob24vbGliL2dkYi9fX2luaXRf Xy5weQkyMDEzLTA2LTEwIDE0OjMxOjA4LjM2ODA4MjQzNiArMDIwMAotQEAgLTY3LDYgKzY3LDgg QEAgcHJldHR5X3ByaW50ZXJzID0gW10KLSAKLSAjIEluaXRpYWwgdHlwZSBwcmludGVycy4KLSB0 eXBlX3ByaW50ZXJzID0gW10KLSsjIEluaXRpYWwgZnJhbWUgZmlsdGVycy4KLStmcmFtZV9maWx0 ZXJzID0ge30KLSAKLSAjIENvbnZlbmllbmNlIHZhcmlhYmxlIHRvIEdEQidzIHB5dGhvbiBkaXJl Y3RvcnkKLSBQWVRIT05ESVIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKF9fZmls ZV9fKSkKLUluZGV4OiBnZGItNy42L2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL2ZyYW1lX2Zp bHRlcnMucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4w MDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy42L2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL2Zy YW1lX2ZpbHRlcnMucHkJMjAxMy0wNi0xMCAxNDozMTowOC4zNjgwODI0MzYgKzAyMDAKLUBAIC0w LDAgKzEsNDYxIEBACi0rIyBGcmFtZS1maWx0ZXIgY29tbWFuZHMuCi0rIyBDb3B5cmlnaHQgKEMp IDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQot KyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsj IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LgotKwotKyIiIkdEQiBjb21tYW5kcyBmb3Igd29ya2luZyB3aXRoIGZyYW1l LWZpbHRlcnMuIiIiCi0rCi0raW1wb3J0IGdkYgotK2ltcG9ydCBjb3B5Ci0rZnJvbSBnZGIuRnJh bWVJdGVyYXRvciBpbXBvcnQgRnJhbWVJdGVyYXRvcgotK2Zyb20gZ2RiLkZyYW1lRGVjb3JhdG9y IGltcG9ydCBGcmFtZURlY29yYXRvcgotK2ltcG9ydCBnZGIuZnJhbWVzCi0raW1wb3J0IGl0ZXJ0 b29scwotKwotKyMgR0RCIENvbW1hbmRzLgotK2NsYXNzIFNldEZpbHRlclByZWZpeENtZChnZGIu Q29tbWFuZCk6Ci0rICAgICIiIlByZWZpeCBjb21tYW5kIGZvciAnc2V0JyBmcmFtZS1maWx0ZXIg cmVsYXRlZCBvcGVyYXRpb25zLiIiIgotKwotKyAgICBkZWYgX19pbml0X18oc2VsZik6Ci0rICAg ICAgICBzdXBlcihTZXRGaWx0ZXJQcmVmaXhDbWQsIHNlbGYpLl9faW5pdF9fKCJzZXQgZnJhbWUt ZmlsdGVyIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ2RiLkNPTU1BTkRfT0JTQ1VSRSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZ2RiLkNPTVBMRVRFX05PTkUsIFRydWUpCi0rCi0rY2xhc3MgU2hv d0ZpbHRlclByZWZpeENtZChnZGIuQ29tbWFuZCk6Ci0rICAgICIiIlByZWZpeCBjb21tYW5kIGZv ciAnc2hvdycgZnJhbWUtZmlsdGVyIHJlbGF0ZWQgb3BlcmF0aW9ucy4iIiIKLSsgICAgZGVmIF9f aW5pdF9fKHNlbGYpOgotKyAgICAgICAgc3VwZXIoU2hvd0ZpbHRlclByZWZpeENtZCwgc2VsZiku X19pbml0X18oInNob3cgZnJhbWUtZmlsdGVyIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGdkYi5DT01NQU5EX09CU0NVUkUsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NUExFVEVfTk9O RSwgVHJ1ZSkKLStjbGFzcyBJbmZvRnJhbWVGaWx0ZXIoZ2RiLkNvbW1hbmQpOgotKyAgICAiIiJM aXN0IGFsbCByZWdpc3RlcmVkIFB5dGhvbiBmcmFtZS1maWx0ZXJzLgotKwotKyAgICBVc2FnZTog aW5mbyBmcmFtZS1maWx0ZXJzCi0rICAgICIiIgotKwotKyAgICBkZWYgX19pbml0X18oc2VsZik6 Ci0rICAgICAgICBzdXBlcihJbmZvRnJhbWVGaWx0ZXIsIHNlbGYpLl9faW5pdF9fKCJpbmZvIGZy YW1lLWZpbHRlciIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGdkYi5DT01NQU5EX0RBVEEpCi0rICAgIEBzdGF0aWNtZXRob2QKLSsgICAgZGVmIGVuYWJs ZWRfc3RyaW5nKHN0YXRlKToKLSsgICAgICAgICIiIlJldHVybiAiWWVzIiBpZiBmaWx0ZXIgaXMg ZW5hYmxlZCwgb3RoZXJ3aXNlICJObyIuIiIiCi0rICAgICAgICBpZiBzdGF0ZToKLSsgICAgICAg ICAgICByZXR1cm4gIlllcyIKLSsgICAgICAgIGVsc2U6Ci0rICAgICAgICAgICAgcmV0dXJuICJO byIKLSsKLSsgICAgZGVmIGxpc3RfZnJhbWVfZmlsdGVycyhzZWxmLCBmcmFtZV9maWx0ZXJzKToK LSsgICAgICAgICIiIiBJbnRlcm5hbCB3b3JrZXIgZnVuY3Rpb24gdG8gbGlzdCBhbmQgcHJpbnQg ZnJhbWUgZmlsdGVycwotKyAgICAgICAgaW4gYSBkaWN0aW9uYXJ5LgotKwotKyAgICAgICAgQXJn dW1lbnRzOgotKyAgICAgICAgICAgZnJhbWVfZmlsdGVyczogVGhlIG5hbWUgb2YgdGhlIGRpY3Rp b25hcnksIGFzCi0rICAgICAgICAgICBzcGVjaWZpZWQgYnkgR0RCIHVzZXIgY29tbWFuZHMuCi0r ICAgICAgICAiIiIKLSsKLSsgICAgICAgIHNvcnRlZF9mcmFtZV9maWx0ZXJzID0gc29ydGVkKGZy YW1lX2ZpbHRlcnMuaXRlbXMoKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGtleT1sYW1iZGEgaTogZ2RiLmZyYW1lcy5nZXRfcHJpb3JpdHkoaVsxXSksCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXZlcnNlPVRydWUpCi0rCi0rICAgICAg ICBpZiBsZW4oc29ydGVkX2ZyYW1lX2ZpbHRlcnMpID09IDA6Ci0rICAgICAgICAgICAgcHJpbnQo IiAgTm8gZnJhbWUgZmlsdGVycyByZWdpc3RlcmVkLiIpCi0rICAgICAgICBlbHNlOgotKyAgICAg ICAgICAgIHByaW50KCIgIFByaW9yaXR5ICBFbmFibGVkICBOYW1lIikKLSsgICAgICAgICAgICBm b3IgZnJhbWVfZmlsdGVyIGluIHNvcnRlZF9mcmFtZV9maWx0ZXJzOgotKyAgICAgICAgICAgICAg ICBuYW1lID0gZnJhbWVfZmlsdGVyWzBdCi0rICAgICAgICAgICAgICAgIHRyeToKLSsgICAgICAg ICAgICAgICAgICAgIHByaW9yaXR5ID0gJ3s6PDh9Jy5mb3JtYXQoCi0rICAgICAgICAgICAgICAg ICAgICAgICAgc3RyKGdkYi5mcmFtZXMuZ2V0X3ByaW9yaXR5KGZyYW1lX2ZpbHRlclsxXSkpKQot KyAgICAgICAgICAgICAgICAgICAgZW5hYmxlZCA9ICd7Ojw3fScuZm9ybWF0KAotKyAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGYuZW5hYmxlZF9zdHJpbmcoZ2RiLmZyYW1lcy5nZXRfZW5hYmxl ZChmcmFtZV9maWx0ZXJbMV0pKSkKLSsgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBh cyBlOgotKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAgRXJyb3IgcHJpbnRpbmcgZmlsdGVy ICciK25hbWUrIic6ICIrc3RyKGUpKQotKyAgICAgICAgICAgICAgICBlbHNlOgotKyAgICAgICAg ICAgICAgICAgICAgcHJpbnQoIiAgJXMgICVzICAlcyIgJSAocHJpb3JpdHksIGVuYWJsZWQsIG5h bWUpKQotKwotKyAgICBkZWYgcHJpbnRfbGlzdChzZWxmLCB0aXRsZSwgZmlsdGVyX2xpc3QsIGJs YW5rX2xpbmUpOgotKyAgICAgICAgcHJpbnQodGl0bGUpCi0rICAgICAgICBzZWxmLmxpc3RfZnJh bWVfZmlsdGVycyhmaWx0ZXJfbGlzdCkKLSsgICAgICAgIGlmIGJsYW5rX2xpbmU6Ci0rICAgICAg ICAgICAgcHJpbnQoIiIpCi0rCi0rICAgIGRlZiBpbnZva2Uoc2VsZiwgYXJnLCBmcm9tX3R0eSk6 Ci0rICAgICAgICBzZWxmLnByaW50X2xpc3QoImdsb2JhbCBmcmFtZS1maWx0ZXJzOiIsIGdkYi5m cmFtZV9maWx0ZXJzLCBUcnVlKQotKwotKyAgICAgICAgY3AgPSBnZGIuY3VycmVudF9wcm9nc3Bh Y2UoKQotKyAgICAgICAgc2VsZi5wcmludF9saXN0KCJwcm9nc3BhY2UgJXMgZnJhbWUtZmlsdGVy czoiICUgY3AuZmlsZW5hbWUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgY3AuZnJhbWVfZmls dGVycywgVHJ1ZSkKLSsKLSsgICAgICAgIGZvciBvYmpmaWxlIGluIGdkYi5vYmpmaWxlcygpOgot KyAgICAgICAgICAgIHNlbGYucHJpbnRfbGlzdCgib2JqZmlsZSAlcyBmcmFtZS1maWx0ZXJzOiIg JSBvYmpmaWxlLmZpbGVuYW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmpmaWxl LmZyYW1lX2ZpbHRlcnMsIEZhbHNlKQotKwotKyMgSW50ZXJuYWwgZW5hYmxlL2Rpc2FibGUgZnVu Y3Rpb25zLgotKwotK2RlZiBfZW5hYmxlX3BhcnNlX2FyZyhjbWRfbmFtZSwgYXJnKToKLSsgICAg IiIiIEludGVybmFsIHdvcmtlciBmdW5jdGlvbiB0byB0YWtlIGFuIGFyZ3VtZW50IGZyb20KLSsg ICAgZW5hYmxlL2Rpc2FibGUgYW5kIHJldHVybiBhIHR1cGxlIG9mIGFyZ3VtZW50cy4KLSsKLSsg ICAgQXJndW1lbnRzOgotKyAgICAgICAgY21kX25hbWU6IE5hbWUgb2YgdGhlIGNvbW1hbmQgaW52 b2tpbmcgdGhpcyBmdW5jdGlvbi4KLSsgICAgICAgIGFyZ3M6IFRoZSBhcmd1bWVudCBhcyBhIHN0 cmluZy4KLSsKLSsgICAgUmV0dXJuczoKLSsgICAgICAgIEEgdHVwbGUgY29udGFpbmluZyB0aGUg ZGljdGlvbmFyeSwgYW5kIHRoZSBhcmd1bWVudCwgb3IganVzdAotKyAgICAgICAgdGhlIGRpY3Rp b25hcnkgaW4gdGhlIGNhc2Ugb2YgImFsbCIuCi0rICAgICIiIgotKwotKyAgICBhcmd2ID0gZ2Ri LnN0cmluZ190b19hcmd2KGFyZyk7Ci0rICAgIGFyZ2MgPSBsZW4oYXJndikKLSsgICAgaWYgYXJn dlswXSA9PSAiYWxsIiBhbmQgYXJnYyA+IDE6Ci0rICAgICAgICByYWlzZSBnZGIuR2RiRXJyb3Io Y21kX25hbWUgKyAiOiB3aXRoICdhbGwnICIgXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg InlvdSBtYXkgbm90IHNwZWNpZnkgYSBmaWx0ZXIuIikKLSsgICAgZWxzZToKLSsgICAgICAgIGlm IGFyZ3ZbMF0gIT0gImFsbCIgYW5kIGFyZ2MgIT0gMjoKLSsgICAgICAgICAgICByYWlzZSBnZGIu R2RiRXJyb3IoY21kX25hbWUgKyAiIHRha2VzIGV4YWN0bHkgdHdvIGFyZ3VtZW50cy4iKQotKwot KyAgICByZXR1cm4gYXJndgotKwotK2RlZiBfZG9fZW5hYmxlX2ZyYW1lX2ZpbHRlcihjb21tYW5k X3R1cGxlLCBmbGFnKToKLSsgICAgIiIiV29ya2VyIGZvciBlbmFibGluZy9kaXNhYmxpbmcgZnJh bWVfZmlsdGVycy4KLSsKLSsgICAgQXJndW1lbnRzOgotKyAgICAgICAgY29tbWFuZF90eXBlOiBB IHR1cGxlIHdpdGggdGhlIGZpcnN0IGVsZW1lbnQgYmVpbmcgdGhlCi0rICAgICAgICAgICAgICAg ICAgICAgIGZyYW1lIGZpbHRlciBkaWN0aW9uYXJ5LCBhbmQgdGhlIHNlY29uZCBiZWluZwotKyAg ICAgICAgICAgICAgICAgICAgICB0aGUgZnJhbWUgZmlsdGVyIG5hbWUuCi0rICAgICAgICBmbGFn OiBUcnVlIGZvciBFbmFibGUsIEZhbHNlIGZvciBEaXNhYmxlLgotKyAgICAiIiIKLSsKLSsgICAg bGlzdF9vcCA9IGNvbW1hbmRfdHVwbGVbMF0KLSsgICAgb3BfbGlzdCA9IGdkYi5mcmFtZXMucmV0 dXJuX2xpc3QobGlzdF9vcCkKLSsKLSsgICAgaWYgbGlzdF9vcCA9PSAiYWxsIjoKLSsgICAgICAg IGZvciBpdGVtIGluIG9wX2xpc3Q6Ci0rICAgICAgICAgICAgZ2RiLmZyYW1lcy5zZXRfZW5hYmxl ZChpdGVtLCBmbGFnKQotKyAgICBlbHNlOgotKyAgICAgICAgZnJhbWVfZmlsdGVyID0gY29tbWFu ZF90dXBsZVsxXQotKyAgICAgICAgdHJ5OgotKyAgICAgICAgICAgIGZmID0gb3BfbGlzdFtmcmFt ZV9maWx0ZXJdCi0rICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0rICAgICAgICAgICAgbXNnID0g ImZyYW1lLWZpbHRlciAnIiArIHN0cihuYW1lKSArICInIG5vdCBmb3VuZC4iCi0rICAgICAgICAg ICAgcmFpc2UgZ2RiLkdkYkVycm9yKG1zZykKLSsKLSsgICAgICAgIGdkYi5mcmFtZXMuc2V0X2Vu YWJsZWQoZmYsIGZsYWcpCi0rCi0rZGVmIF9jb21wbGV0ZV9mcmFtZV9maWx0ZXJfbGlzdCh0ZXh0 LCB3b3JkLCBhbGxfZmxhZyk6Ci0rICAgICIiIldvcmtlciBmb3IgZnJhbWUgZmlsdGVyIGRpY3Rp b25hcnkgbmFtZSBjb21wbGV0aW9uLgotKwotKyAgICBBcmd1bWVudHM6Ci0rICAgICAgICB0ZXh0 OiBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBjb21tYW5kIGxpbmUuCi0rICAgICAgICB3b3JkOiBUaGUg bW9zdCByZWNlbnQgd29yZCBvZiB0aGUgY29tbWFuZCBsaW5lLgotKyAgICAgICAgYWxsX2ZsYWc6 IFdoZXRoZXIgdG8gaW5jbHVkZSB0aGUgd29yZCAiYWxsIiBpbiBjb21wbGV0aW9uLgotKwotKyAg ICBSZXR1cm5zOgotKyAgICAgICAgQSBsaXN0IG9mIHN1Z2dlc3RlZCBmcmFtZSBmaWx0ZXIgZGlj dGlvbmFyeSBuYW1lIGNvbXBsZXRpb25zCi0rICAgICAgICBmcm9tIHRleHQvd29yZCBhbmFseXNp cy4gIFRoaXMgbGlzdCBjYW4gYmUgZW1wdHkgd2hlbiB0aGVyZQotKyAgICAgICAgYXJlIG5vIHN1 Z2dlc3Rpb25zIGZvciBjb21wbGV0aW9uLgotKyAgICAgICAgIiIiCi0rICAgIGlmIGFsbF9mbGFn ID09IFRydWU6Ci0rICAgICAgICBmaWx0ZXJfbG9jYXRpb25zID0gWyJhbGwiLCAiZ2xvYmFsIiwg InByb2dzcGFjZSJdCi0rICAgIGVsc2U6Ci0rICAgICAgICBmaWx0ZXJfbG9jYXRpb25zID0gWyJn bG9iYWwiLCAicHJvZ3NwYWNlIl0KLSsgICAgZm9yIG9iamZpbGUgaW4gZ2RiLm9iamZpbGVzKCk6 Ci0rICAgICAgICBmaWx0ZXJfbG9jYXRpb25zLmFwcGVuZChvYmpmaWxlLmZpbGVuYW1lKQotKwot KyAgICAjIElmIHRoZSB1c2VyIGp1c3QgYXNrZWQgZm9yIGNvbXBsZXRpb25zIHdpdGggbm8gY29t cGxldGlvbgotKyAgICAjIGhpbnRzLCBqdXN0IHJldHVybiBhbGwgdGhlIGZyYW1lIGZpbHRlciBk aWN0aW9uYXJpZXMgd2Uga25vdwotKyAgICAjIGFib3V0LgotKyAgICBpZiAodGV4dCA9PSAiIik6 Ci0rICAgICAgICByZXR1cm4gZmlsdGVyX2xvY2F0aW9ucwotKwotKyAgICAjIE90aGVyd2lzZSBm aWx0ZXIgb24gd2hhdCB3ZSBrbm93LgotKyAgICBmbGlzdCA9IGZpbHRlcihsYW1iZGEgeCx5PXRl eHQ6eC5zdGFydHN3aXRoKHkpLCBmaWx0ZXJfbG9jYXRpb25zKQotKwotKyAgICAjIElmIHdlIG9u bHkgaGF2ZSBvbmUgY29tcGxldGlvbiwgY29tcGxldGUgaXQgYW5kIHJldHVybiBpdC4KLSsgICAg aWYgbGVuKGZsaXN0KSA9PSAxOgotKyAgICAgICAgZmxpc3RbMF0gPSBmbGlzdFswXVtsZW4odGV4 dCktbGVuKHdvcmQpOl0KLSsKLSsgICAgIyBPdGhlcndpc2UsIHJldHVybiBhbiBlbXB0eSBsaXN0 LCBvciBhIGxpc3Qgb2YgZnJhbWUgZmlsdGVyCi0rICAgICMgZGljdGlvbmFyaWVzIHRoYXQgdGhl IHByZXZpb3VzIGZpbHRlciBvcGVyYXRpb24gcmV0dXJuZWQuCi0rICAgIHJldHVybiBmbGlzdAot KwotK2RlZiBfY29tcGxldGVfZnJhbWVfZmlsdGVyX25hbWUod29yZCwgcHJpbnRlcl9kaWN0KToK LSsgICAgIiIiV29ya2VyIGZvciBmcmFtZSBmaWx0ZXIgbmFtZSBjb21wbGV0aW9uLgotKwotKyAg ICBBcmd1bWVudHM6Ci0rCi0rICAgICAgICB3b3JkOiBUaGUgbW9zdCByZWNlbnQgd29yZCBvZiB0 aGUgY29tbWFuZCBsaW5lLgotKwotKyAgICAgICAgcHJpbnRlcl9kaWN0OiBUaGUgZnJhbWUgZmls dGVyIGRpY3Rpb25hcnkgdG8gc2VhcmNoIGZvciBmcmFtZQotKyAgICAgICAgZmlsdGVyIG5hbWUg Y29tcGxldGlvbnMuCi0rCi0rICAgICAgICBSZXR1cm5zOiBBIGxpc3Qgb2Ygc3VnZ2VzdGVkIGZy YW1lIGZpbHRlciBuYW1lIGNvbXBsZXRpb25zCi0rICAgICAgICBmcm9tIHdvcmQgYW5hbHlzaXMg b2YgdGhlIGZyYW1lIGZpbHRlciBkaWN0aW9uYXJ5LiAgVGhpcyBsaXN0Ci0rICAgICAgICBjYW4g YmUgZW1wdHkgd2hlbiB0aGVyZSBhcmUgbm8gc3VnZ2VzdGlvbnMgZm9yIGNvbXBsZXRpb24uCi0r ICAgICIiIgotKwotKyAgICBwcmludGVyX2tleXMgPSBwcmludGVyX2RpY3Qua2V5cygpCi0rICAg IGlmICh3b3JkID09ICIiKToKLSsgICAgICAgIHJldHVybiBwcmludGVyX2tleXMKLSsKLSsgICAg Zmxpc3QgPSBmaWx0ZXIobGFtYmRhIHgseT13b3JkOnguc3RhcnRzd2l0aCh5KSwgcHJpbnRlcl9r ZXlzKQotKyAgICByZXR1cm4gZmxpc3QKLSsKLStjbGFzcyBFbmFibGVGcmFtZUZpbHRlcihnZGIu Q29tbWFuZCk6Ci0rICAgICIiIkdEQiBjb21tYW5kIHRvIGRpc2FibGUgdGhlIHNwZWNpZmllZCBm cmFtZS1maWx0ZXIuCi0rCi0rICAgIFVzYWdlOiBlbmFibGUgZnJhbWUtZmlsdGVyIGVuYWJsZSBE SUNUSU9OQVJZIFtOQU1FXQotKwotKyAgICBESUNUSU9OQVJZIGlzIHRoZSBuYW1lIG9mIHRoZSBm cmFtZSBmaWx0ZXIgZGljdGlvbmFyeSBvbiB3aGljaCB0bwotKyAgICBvcGVyYXRlLiAgSWYgZGlj dGlvbmFyeSBpcyBzZXQgdG8gImFsbCIsIHBlcmZvcm0gb3BlcmF0aW9ucyBvbiBhbGwKLSsgICAg ZGljdGlvbmFyaWVzLiAgTmFtZWQgZGljdGlvbmFyaWVzIGFyZTogImdsb2JhbCIgZm9yIHRoZSBn bG9iYWwKLSsgICAgZnJhbWUgZmlsdGVyIGRpY3Rpb25hcnksICJwcm9nc3BhY2UiIGZvciB0aGUg cHJvZ3JhbSBzcGFjZSdzIGZyYW1lCi0rICAgIGZpbHRlciBkaWN0aW9uYXJ5LiAgSWYgZWl0aGVy IGFsbCwgb3IgdGhlIHR3byBuYW1lZCBkaWN0aW9uYXJpZXMKLSsgICAgYXJlIG5vdCBzcGVjaWZp ZWQsIHRoZSBkaWN0aW9uYXJ5IG5hbWUgaXMgYXNzdW1lZCB0byBiZSB0aGUgbmFtZQotKyAgICBv ZiB0aGUgb2JqZWN0LWZpbGUgbmFtZS4KLSsKLSsgICAgTkFNRSBtYXRjaGVzIHRoZSBuYW1lIG9m IHRoZSBmcmFtZS1maWx0ZXIgdG8gb3BlcmF0ZSBvbi4gIElmCi0rICAgIERJQ1RJT05BUlkgaXMg ImFsbCIsIE5BTUUgaXMgaWdub3JlZC4KLSsgICAgIiIiCi0rICAgIGRlZiBfX2luaXRfXyhzZWxm KToKLSsgICAgICAgIHN1cGVyKEVuYWJsZUZyYW1lRmlsdGVyLCBzZWxmKS5fX2luaXRfXygiZW5h YmxlIGZyYW1lLWZpbHRlciIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGdkYi5DT01NQU5EX0RBVEEpCi0rICAgIGRlZiBjb21wbGV0ZShzZWxmLCB0 ZXh0LCB3b3JkKToKLSsgICAgICAgICIiIkNvbXBsZXRpb24gZnVuY3Rpb24gZm9yIGJvdGggZnJh bWUgZmlsdGVyIGRpY3Rpb25hcnksIGFuZAotKyAgICAgICAgZnJhbWUgZmlsdGVyIG5hbWUuIiIi Ci0rICAgICAgICBpZiB0ZXh0LmNvdW50KCIgIikgPT0gMDoKLSsgICAgICAgICAgICByZXR1cm4g X2NvbXBsZXRlX2ZyYW1lX2ZpbHRlcl9saXN0KHRleHQsIHdvcmQsIFRydWUpCi0rICAgICAgICBl bHNlOgotKyAgICAgICAgICAgIHByaW50ZXJfbGlzdCA9IGdkYi5mcmFtZXMucmV0dXJuX2xpc3Qo dGV4dC5zcGxpdCgpWzBdLnJzdHJpcCgpKQotKyAgICAgICAgICAgIHJldHVybiBfY29tcGxldGVf ZnJhbWVfZmlsdGVyX25hbWUod29yZCwgcHJpbnRlcl9saXN0KQotKwotKyAgICBkZWYgaW52b2tl KHNlbGYsIGFyZywgZnJvbV90dHkpOgotKyAgICAgICAgY29tbWFuZF90dXBsZSA9IF9lbmFibGVf cGFyc2VfYXJnKCJlbmFibGUgZnJhbWUtZmlsdGVyIiwgYXJnKQotKyAgICAgICAgX2RvX2VuYWJs ZV9mcmFtZV9maWx0ZXIoY29tbWFuZF90dXBsZSwgVHJ1ZSkKLSsKLSsKLStjbGFzcyBEaXNhYmxl RnJhbWVGaWx0ZXIoZ2RiLkNvbW1hbmQpOgotKyAgICAiIiJHREIgY29tbWFuZCB0byBkaXNhYmxl IHRoZSBzcGVjaWZpZWQgZnJhbWUtZmlsdGVyLgotKwotKyAgICBVc2FnZTogZGlzYWJsZSBmcmFt ZS1maWx0ZXIgZGlzYWJsZSBESUNUSU9OQVJZIFtOQU1FXQotKwotKyAgICBESUNUSU9OQVJZIGlz IHRoZSBuYW1lIG9mIHRoZSBmcmFtZSBmaWx0ZXIgZGljdGlvbmFyeSBvbiB3aGljaCB0bwotKyAg ICBvcGVyYXRlLiAgSWYgZGljdGlvbmFyeSBpcyBzZXQgdG8gImFsbCIsIHBlcmZvcm0gb3BlcmF0 aW9ucyBvbiBhbGwKLSsgICAgZGljdGlvbmFyaWVzLiAgTmFtZWQgZGljdGlvbmFyaWVzIGFyZTog Imdsb2JhbCIgZm9yIHRoZSBnbG9iYWwKLSsgICAgZnJhbWUgZmlsdGVyIGRpY3Rpb25hcnksICJw cm9nc3BhY2UiIGZvciB0aGUgcHJvZ3JhbSBzcGFjZSdzIGZyYW1lCi0rICAgIGZpbHRlciBkaWN0 aW9uYXJ5LiAgSWYgZWl0aGVyIGFsbCwgb3IgdGhlIHR3byBuYW1lZCBkaWN0aW9uYXJpZXMKLSsg ICAgYXJlIG5vdCBzcGVjaWZpZWQsIHRoZSBkaWN0aW9uYXJ5IG5hbWUgaXMgYXNzdW1lZCB0byBi ZSB0aGUgbmFtZQotKyAgICBvZiB0aGUgb2JqZWN0LWZpbGUgbmFtZS4KLSsKLSsgICAgTkFNRSBt YXRjaGVzIHRoZSBuYW1lIG9mIHRoZSBmcmFtZS1maWx0ZXIgdG8gb3BlcmF0ZSBvbi4gIElmCi0r ICAgIERJQ1RJT05BUlkgaXMgImFsbCIsIE5BTUUgaXMgaWdub3JlZC4KLSsgICAgIiIiCi0rICAg IGRlZiBfX2luaXRfXyhzZWxmKToKLSsgICAgICAgIHN1cGVyKERpc2FibGVGcmFtZUZpbHRlciwg c2VsZikuX19pbml0X18oImRpc2FibGUgZnJhbWUtZmlsdGVyIiwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYi5DT01NQU5EX0RBVEEpCi0rCi0r ICAgIGRlZiBjb21wbGV0ZShzZWxmLCB0ZXh0LCB3b3JkKToKLSsgICAgICAgICIiIkNvbXBsZXRp b24gZnVuY3Rpb24gZm9yIGJvdGggZnJhbWUgZmlsdGVyIGRpY3Rpb25hcnksIGFuZAotKyAgICAg ICAgZnJhbWUgZmlsdGVyIG5hbWUuIiIiCi0rICAgICAgICBpZiB0ZXh0LmNvdW50KCIgIikgPT0g MDoKLSsgICAgICAgICAgICByZXR1cm4gX2NvbXBsZXRlX2ZyYW1lX2ZpbHRlcl9saXN0KHRleHQs IHdvcmQsIFRydWUpCi0rICAgICAgICBlbHNlOgotKyAgICAgICAgICAgIHByaW50ZXJfbGlzdCA9 IGdkYi5mcmFtZXMucmV0dXJuX2xpc3QodGV4dC5zcGxpdCgpWzBdLnJzdHJpcCgpKQotKyAgICAg ICAgICAgIHJldHVybiBfY29tcGxldGVfZnJhbWVfZmlsdGVyX25hbWUod29yZCwgcHJpbnRlcl9s aXN0KQotKwotKyAgICBkZWYgaW52b2tlKHNlbGYsIGFyZywgZnJvbV90dHkpOgotKyAgICAgICAg Y29tbWFuZF90dXBsZSA9IF9lbmFibGVfcGFyc2VfYXJnKCJkaXNhYmxlIGZyYW1lLWZpbHRlciIs IGFyZykKLSsgICAgICAgIF9kb19lbmFibGVfZnJhbWVfZmlsdGVyKGNvbW1hbmRfdHVwbGUsIEZh bHNlKQotKwotK2NsYXNzIFNldEZyYW1lRmlsdGVyUHJpb3JpdHkoZ2RiLkNvbW1hbmQpOgotKyAg ICAiIiJHREIgY29tbWFuZCB0byBzZXQgdGhlIHByaW9yaXR5IG9mIHRoZSBzcGVjaWZpZWQgZnJh bWUtZmlsdGVyLgotKwotKyAgICBVc2FnZTogc2V0IGZyYW1lLWZpbHRlciBwcmlvcml0eSBESUNU SU9OQVJZIE5BTUUgUFJJT1JJVFkKLSsKLSsgICAgRElDVElPTkFSWSBpcyB0aGUgbmFtZSBvZiB0 aGUgZnJhbWUgZmlsdGVyIGRpY3Rpb25hcnkgb24gd2hpY2ggdG8KLSsgICAgb3BlcmF0ZS4gIE5h bWVkIGRpY3Rpb25hcmllcyBhcmU6ICJnbG9iYWwiIGZvciB0aGUgZ2xvYmFsIGZyYW1lCi0rICAg IGZpbHRlciBkaWN0aW9uYXJ5LCAicHJvZ3NwYWNlIiBmb3IgdGhlIHByb2dyYW0gc3BhY2UncyBm cmFtZWZpbHRlcgotKyAgICBkaWN0aW9uYXJ5LiAgSWYgZWl0aGVyIG9mIHRoZXNlIHR3byBhcmUg bm90IHNwZWNpZmllZCwgdGhlCi0rICAgIGRpY3Rpb25hcnkgbmFtZSBpcyBhc3N1bWVkIHRvIGJl IHRoZSBuYW1lIG9mIHRoZSBvYmplY3QtZmlsZSBuYW1lLgotKwotKyAgICBOQU1FIG1hdGNoZXMg dGhlIG5hbWUgb2YgdGhlIGZyYW1lIGZpbHRlciB0byBvcGVyYXRlIG9uLgotKwotKyAgICBQUklP UklUWSBpcyB0aGUgYW4gaW50ZWdlciB0byBhc3NpZ24gdGhlIG5ldyBwcmlvcml0eSB0byB0aGUg ZnJhbWUKLSsgICAgZmlsdGVyLgotKyAgICAiIiIKLSsKLSsgICAgZGVmIF9faW5pdF9fKHNlbGYp OgotKyAgICAgICAgc3VwZXIoU2V0RnJhbWVGaWx0ZXJQcmlvcml0eSwgc2VsZikuX19pbml0X18o InNldCBmcmFtZS1maWx0ZXIgIiBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAicHJpb3JpdHkiLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiLkNPTU1BTkRfREFUQSkKLSsKLSsgICAg ZGVmIF9wYXJzZV9wcmlfYXJnKHNlbGYsIGFyZyk6Ci0rICAgICAgICAiIiJJbnRlcm5hbCB3b3Jr ZXIgdG8gcGFyc2UgYSBwcmlvcml0eSBmcm9tIGEgdHVwbGUuCi0rCi0rICAgICAgICBBcmd1bWVu dHM6Ci0rICAgICAgICAgICAgYXJnOiBUdXBsZSB3aGljaCBjb250YWlucyB0aGUgYXJndW1lbnRz IGZyb20gdGhlIGNvbW1hbmQuCi0rCi0rICAgICAgICBSZXR1cm5zOgotKyAgICAgICAgICAgIEEg dHVwbGUgY29udGFpbmluZyB0aGUgZGljdGlvbmFyeSwgbmFtZSBhbmQgcHJpb3JpdHkgZnJvbQot KyAgICAgICAgICAgIHRoZSBhcmd1bWVudHMuCi0rCi0rICAgICAgICBSYWlzZXM6Ci0rICAgICAg ICAgICAgZ2RiLkdkYkVycm9yOiBBbiBlcnJvciBwYXJzaW5nIHRoZSBhcmd1bWVudHMuCi0rICAg ICAgICAiIiIKLSsKLSsgICAgICAgIGFyZ3YgPSBnZGIuc3RyaW5nX3RvX2FyZ3YoYXJnKTsKLSsg ICAgICAgIGFyZ2MgPSBsZW4oYXJndikKLSsgICAgICAgIGlmIGFyZ2MgIT0gMzoKLSsgICAgICAg ICAgICBwcmludCgic2V0IGZyYW1lLWZpbHRlciBwcmlvcml0eSAiIFwKLSsgICAgICAgICAgICAg ICAgICAidGFrZXMgZXhhY3RseSB0aHJlZSBhcmd1bWVudHMuIikKLSsgICAgICAgICAgICByZXR1 cm4gTm9uZQotKwotKyAgICAgICAgcmV0dXJuIGFyZ3YKLSsKLSsgICAgZGVmIF9zZXRfZmlsdGVy X3ByaW9yaXR5KHNlbGYsIGNvbW1hbmRfdHVwbGUpOgotKyAgICAgICAgIiIiSW50ZXJuYWwgd29y a2VyIGZvciBzZXR0aW5nIHByaW9yaXR5IG9mIGZyYW1lLWZpbHRlcnMsIGJ5Ci0rICAgICAgICBw YXJzaW5nIGEgdHVwbGUgYW5kIGNhbGxpbmcgX3NldF9wcmlvcml0eSB3aXRoIHRoZSBwYXJzZWQK LSsgICAgICAgIHR1cGxlLgotKwotKyAgICAgICAgQXJndW1lbnRzOgotKyAgICAgICAgICAgIGNv bW1hbmRfdHVwbGU6IFR1cGxlIHdoaWNoIGNvbnRhaW5zIHRoZSBhcmd1bWVudHMgZnJvbSB0aGUK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kLgotKyAgICAgICAgIiIiCi0rCi0r ICAgICAgICBsaXN0X29wID0gY29tbWFuZF90dXBsZVswXQotKyAgICAgICAgZnJhbWVfZmlsdGVy ID0gY29tbWFuZF90dXBsZVsxXQotKyAgICAgICAgcHJpb3JpdHkgPSBjb21tYW5kX3R1cGxlWzJd Ci0rCi0rICAgICAgICBvcF9saXN0ID0gZ2RiLmZyYW1lcy5yZXR1cm5fbGlzdChsaXN0X29wKQot KwotKyAgICAgICAgdHJ5OgotKyAgICAgICAgICAgIGZmID0gb3BfbGlzdFtmcmFtZV9maWx0ZXJd Ci0rICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0rICAgICAgICAgICAgbXNnID0gImZyYW1lLWZp bHRlciAnIiArIHN0cihuYW1lKSArICInIG5vdCBmb3VuZC4iCi0rICAgICAgICAgICAgcmFpc2Ug Z2RiLkdkYkVycm9yKG1zZykKLSsKLSsgICAgICAgIGdkYi5mcmFtZXMuc2V0X3ByaW9yaXR5KGZm LCBwcmlvcml0eSkKLSsKLSsgICAgZGVmIGNvbXBsZXRlKHNlbGYsIHRleHQsIHdvcmQpOgotKyAg ICAgICAgIiIiQ29tcGxldGlvbiBmdW5jdGlvbiBmb3IgYm90aCBmcmFtZSBmaWx0ZXIgZGljdGlv bmFyeSwgYW5kCi0rICAgICAgICBmcmFtZSBmaWx0ZXIgbmFtZS4iIiIKLSsgICAgICAgIGlmIHRl eHQuY291bnQoIiAiKSA9PSAwOgotKyAgICAgICAgICAgIHJldHVybiBfY29tcGxldGVfZnJhbWVf ZmlsdGVyX2xpc3QodGV4dCwgd29yZCwgRmFsc2UpCi0rICAgICAgICBlbHNlOgotKyAgICAgICAg ICAgIHByaW50ZXJfbGlzdCA9IGdkYi5mcmFtZXMucmV0dXJuX2xpc3QodGV4dC5zcGxpdCgpWzBd LnJzdHJpcCgpKQotKyAgICAgICAgICAgIHJldHVybiBfY29tcGxldGVfZnJhbWVfZmlsdGVyX25h bWUod29yZCwgcHJpbnRlcl9saXN0KQotKwotKyAgICBkZWYgaW52b2tlKHNlbGYsIGFyZywgZnJv bV90dHkpOgotKyAgICAgICAgY29tbWFuZF90dXBsZSA9IHNlbGYuX3BhcnNlX3ByaV9hcmcoYXJn KQotKyAgICAgICAgaWYgY29tbWFuZF90dXBsZSAhPSBOb25lOgotKyAgICAgICAgICAgIHNlbGYu X3NldF9maWx0ZXJfcHJpb3JpdHkoY29tbWFuZF90dXBsZSkKLSsKLStjbGFzcyBTaG93RnJhbWVG aWx0ZXJQcmlvcml0eShnZGIuQ29tbWFuZCk6Ci0rICAgICIiIkdEQiBjb21tYW5kIHRvIHNob3cg dGhlIHByaW9yaXR5IG9mIHRoZSBzcGVjaWZpZWQgZnJhbWUtZmlsdGVyLgotKwotKyAgICBVc2Fn ZTogc2hvdyBmcmFtZS1maWx0ZXIgcHJpb3JpdHkgRElDVElPTkFSWSBOQU1FCi0rCi0rICAgIERJ Q1RJT05BUlkgaXMgdGhlIG5hbWUgb2YgdGhlIGZyYW1lIGZpbHRlciBkaWN0aW9uYXJ5IG9uIHdo aWNoIHRvCi0rICAgIG9wZXJhdGUuICBOYW1lZCBkaWN0aW9uYXJpZXMgYXJlOiAiZ2xvYmFsIiBm b3IgdGhlIGdsb2JhbCBmcmFtZQotKyAgICBmaWx0ZXIgZGljdGlvbmFyeSwgInByb2dzcGFjZSIg Zm9yIHRoZSBwcm9ncmFtIHNwYWNlJ3MgZnJhbWVmaWx0ZXIKLSsgICAgZGljdGlvbmFyeS4gIElm IGVpdGhlciBvZiB0aGVzZSB0d28gYXJlIG5vdCBzcGVjaWZpZWQsIHRoZQotKyAgICBkaWN0aW9u YXJ5IG5hbWUgaXMgYXNzdW1lZCB0byBiZSB0aGUgbmFtZSBvZiB0aGUgb2JqZWN0LWZpbGUgbmFt ZS4KLSsKLSsgICAgTkFNRSBtYXRjaGVzIHRoZSBuYW1lIG9mIHRoZSBmcmFtZS1maWx0ZXIgdG8g b3BlcmF0ZSBvbi4KLSsgICAgIiIiCi0rCi0rICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSsgICAg ICAgIHN1cGVyKFNob3dGcmFtZUZpbHRlclByaW9yaXR5LCBzZWxmKS5fX2luaXRfXygic2hvdyBm cmFtZS1maWx0ZXIgIiBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgInByaW9yaXR5IiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NTUFORF9EQVRBKQotKwotKyAgICBkZWYg X3BhcnNlX3ByaV9hcmcoc2VsZiwgYXJnKToKLSsgICAgICAgICIiIkludGVybmFsIHdvcmtlciB0 byBwYXJzZSBhIGRpY3Rpb25hcnkgYW5kIG5hbWUgZnJvbSBhCi0rICAgICAgICB0dXBsZS4KLSsK LSsgICAgICAgIEFyZ3VtZW50czoKLSsgICAgICAgICAgICBhcmc6IFR1cGxlIHdoaWNoIGNvbnRh aW5zIHRoZSBhcmd1bWVudHMgZnJvbSB0aGUgY29tbWFuZC4KLSsKLSsgICAgICAgIFJldHVybnM6 Ci0rICAgICAgICAgICAgQSB0dXBsZSBjb250YWluaW5nIHRoZSBkaWN0aW9uYXJ5LCAgYW5kIGZy YW1lIGZpbHRlciBuYW1lLgotKwotKyAgICAgICAgUmFpc2VzOgotKyAgICAgICAgICAgIGdkYi5H ZGJFcnJvcjogQW4gZXJyb3IgcGFyc2luZyB0aGUgYXJndW1lbnRzLgotKyAgICAgICAgIiIiCi0r Ci0rICAgICAgICBhcmd2ID0gZ2RiLnN0cmluZ190b19hcmd2KGFyZyk7Ci0rICAgICAgICBhcmdj ID0gbGVuKGFyZ3YpCi0rICAgICAgICBpZiBhcmdjICE9IDI6Ci0rICAgICAgICAgICAgcHJpbnQo InNob3cgZnJhbWUtZmlsdGVyIHByaW9yaXR5ICIgXAotKyAgICAgICAgICAgICAgICAgICJ0YWtl cyBleGFjdGx5IHR3byBhcmd1bWVudHMuIikKLSsgICAgICAgICAgICByZXR1cm4gTm9uZQotKwot KyAgICAgICAgcmV0dXJuIGFyZ3YKLSsKLSsgICAgZGVmIGdldF9maWx0ZXJfcHJpb3JpdHkoc2Vs ZiwgZnJhbWVfZmlsdGVycywgbmFtZSk6Ci0rICAgICAgICAiIiJXb3JrZXIgZm9yIHJldHJpZXZp bmcgdGhlIHByaW9yaXR5IG9mIGZyYW1lX2ZpbHRlcnMuCi0rCi0rICAgICAgICBBcmd1bWVudHM6 Ci0rICAgICAgICAgICAgZnJhbWVfZmlsdGVyczogTmFtZSBvZiBmcmFtZSBmaWx0ZXIgZGljdGlv bmFyeS4KLSsgICAgICAgICAgICBuYW1lOiBvYmplY3QgdG8gc2VsZWN0IHByaW50ZXJzLgotKwot KyAgICAgICAgUmV0dXJuczoKLSsgICAgICAgICAgICBUaGUgcHJpb3JpdHkgb2YgdGhlIGZyYW1l IGZpbHRlci4KLSsKLSsgICAgICAgIFJhaXNlczoKLSsgICAgICAgICAgICBnZGIuR2RiRXJyb3I6 IEEgZnJhbWUgZmlsdGVyIGNhbm5vdCBiZSBmb3VuZC4KLSsgICAgICAgICIiIgotKwotKyAgICAg ICAgb3BfbGlzdCA9IGdkYi5mcmFtZXMucmV0dXJuX2xpc3QoZnJhbWVfZmlsdGVycykKLSsKLSsg ICAgICAgIHRyeToKLSsgICAgICAgICAgICBmZiA9IG9wX2xpc3RbbmFtZV0KLSsgICAgICAgIGV4 Y2VwdCBLZXlFcnJvcjoKLSsgICAgICAgICAgICBtc2cgPSAiZnJhbWUtZmlsdGVyICciICsgc3Ry KG5hbWUpICsgIicgbm90IGZvdW5kLiIKLSsgICAgICAgICAgICByYWlzZSBnZGIuR2RiRXJyb3Io bXNnKQotKwotKyAgICAgICAgcmV0dXJuIGdkYi5mcmFtZXMuZ2V0X3ByaW9yaXR5KGZmKQotKwot KyAgICBkZWYgY29tcGxldGUoc2VsZiwgdGV4dCwgd29yZCk6Ci0rICAgICAgICAiIiJDb21wbGV0 aW9uIGZ1bmN0aW9uIGZvciBib3RoIGZyYW1lIGZpbHRlciBkaWN0aW9uYXJ5LCBhbmQKLSsgICAg ICAgIGZyYW1lIGZpbHRlciBuYW1lLiIiIgotKwotKyAgICAgICAgaWYgdGV4dC5jb3VudCgiICIp ID09IDA6Ci0rICAgICAgICAgICAgcmV0dXJuIF9jb21wbGV0ZV9mcmFtZV9maWx0ZXJfbGlzdCh0 ZXh0LCB3b3JkLCBGYWxzZSkKLSsgICAgICAgIGVsc2U6Ci0rICAgICAgICAgICAgcHJpbnRlcl9s aXN0ID0gZnJhbWUuX3JldHVybl9saXN0KHRleHQuc3BsaXQoKVswXS5yc3RyaXAoKSkKLSsgICAg ICAgICAgICByZXR1cm4gX2NvbXBsZXRlX2ZyYW1lX2ZpbHRlcl9uYW1lKHdvcmQsIHByaW50ZXJf bGlzdCkKLSsKLSsgICAgZGVmIGludm9rZShzZWxmLCBhcmcsIGZyb21fdHR5KToKLSsgICAgICAg IGNvbW1hbmRfdHVwbGUgPSBzZWxmLl9wYXJzZV9wcmlfYXJnKGFyZykKLSsgICAgICAgIGlmIGNv bW1hbmRfdHVwbGUgPT0gTm9uZToKLSsgICAgICAgICAgICByZXR1cm4KLSsgICAgICAgIGZpbHRl cl9uYW1lID0gY29tbWFuZF90dXBsZVsxXQotKyAgICAgICAgbGlzdF9uYW1lID0gY29tbWFuZF90 dXBsZVswXQotKyAgICAgICAgdHJ5OgotKyAgICAgICAgICAgIHByaW9yaXR5ID0gc2VsZi5nZXRf ZmlsdGVyX3ByaW9yaXR5KGxpc3RfbmFtZSwgZmlsdGVyX25hbWUpOwotKyAgICAgICAgZXhjZXB0 IEV4Y2VwdGlvbiBhcyBlOgotKyAgICAgICAgICAgIHByaW50KCJFcnJvciBwcmludGluZyBmaWx0 ZXIgcHJpb3JpdHkgZm9yICciK25hbWUrIic6IitzdHIoZSkpCi0rICAgICAgICBlbHNlOgotKyAg ICAgICAgICAgIHByaW50KCJQcmlvcml0eSBvZiBmaWx0ZXIgJyIgKyBmaWx0ZXJfbmFtZSArICIn IGluIGxpc3QgJyIgXAotKyAgICAgICAgICAgICAgICArIGxpc3RfbmFtZSArICInIGlzOiAiICsg c3RyKHByaW9yaXR5KSkKLSsKLSsjIFJlZ2lzdGVyIGNvbW1hbmRzCi0rU2V0RmlsdGVyUHJlZml4 Q21kKCkKLStTaG93RmlsdGVyUHJlZml4Q21kKCkKLStJbmZvRnJhbWVGaWx0ZXIoKQotK0VuYWJs ZUZyYW1lRmlsdGVyKCkKLStEaXNhYmxlRnJhbWVGaWx0ZXIoKQotK1NldEZyYW1lRmlsdGVyUHJp b3JpdHkoKQotK1Nob3dGcmFtZUZpbHRlclByaW9yaXR5KCkKLUluZGV4OiBnZGItNy42L2dkYi90 ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZWZpbHRlci1nZGIucHkuaW4KLT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBn ZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZWZpbHRlci1nZGIucHkuaW4J MjAxMy0wNi0xMCAxNDozMTowOC4zNjgwODI0MzYgKzAyMDAKLUBAIC0wLDAgKzEsNDggQEAKLSsj IENvcHlyaWdodCAoQykgMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsj IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0r IyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0 aGUgR0RCIHRlc3RzdWl0ZS4gIEl0IHRlc3RzIFB5dGhvbi1iYXNlZAotKyMgZnJhbWUtZmlsdGVy cy4KLStpbXBvcnQgZ2RiCi0raW1wb3J0IGl0ZXJ0b29scwotK2Zyb20gZ2RiLkZyYW1lRGVjb3Jh dG9yIGltcG9ydCBGcmFtZURlY29yYXRvcgotKwotKwotK2NsYXNzIEZyYW1lT2JqRmlsZSAoKToK LSsKLSsgICAgZGVmIF9faW5pdF9fIChzZWxmKToKLSsgICAgICAgIHNlbGYubmFtZSA9ICJGaWx0 ZXIxIgotKyAgICAgICAgc2VsZi5wcmlvcml0eSA9IDEKLSsgICAgICAgIHNlbGYuZW5hYmxlZCA9 IEZhbHNlCi0rICAgICAgICBnZGIuY3VycmVudF9wcm9nc3BhY2UoKS5mcmFtZV9maWx0ZXJzIFsi UHJvZ3NwYWNlIiArIHNlbGYubmFtZV0gPSBzZWxmCi0rICAgICAgICBnZGIuY3VycmVudF9vYmpm aWxlKCkuZnJhbWVfZmlsdGVycyBbIk9iamVjdEZpbGUiICsgc2VsZi5uYW1lXSA9IHNlbGYKLSsK LSsgICAgZGVmIGZpbHRlciAoc2VsZiwgZnJhbWVfaXRlcik6Ci0rICAgICAgICByZXR1cm4gZnJh bWVfaXRlcgotKwotK2NsYXNzIEZyYW1lT2JqRmlsZTIgKCk6Ci0rCi0rICAgIGRlZiBfX2luaXRf XyAoc2VsZik6Ci0rICAgICAgICBzZWxmLm5hbWUgPSAiRmlsdGVyMiIKLSsgICAgICAgIHNlbGYu cHJpb3JpdHkgPSAxMDAKLSsgICAgICAgIHNlbGYuZW5hYmxlZCA9IFRydWUKLSsgICAgICAgIGdk Yi5jdXJyZW50X3Byb2dzcGFjZSgpLmZyYW1lX2ZpbHRlcnMgWyJQcm9nc3BhY2UiICsgc2VsZi5u YW1lXSA9IHNlbGYKLSsgICAgICAgIGdkYi5jdXJyZW50X29iamZpbGUoKS5mcmFtZV9maWx0ZXJz IFsiT2JqZWN0RmlsZSIgKyBzZWxmLm5hbWVdID0gc2VsZgotKwotKyAgICBkZWYgZmlsdGVyIChz ZWxmLCBmcmFtZV9pdGVyKToKLSsgICAgICAgIHJldHVybiBmcmFtZV9pdGVyCi0rCi0rRnJhbWVP YmpGaWxlKCkKLStGcmFtZU9iakZpbGUyKCkKLUluZGV4OiBnZGItNy42L2dkYi90ZXN0c3VpdGUv Z2RiLnB5dGhvbi9weS1mcmFtZWZpbHRlci1taS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxs CTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNi9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vcHktZnJhbWVmaWx0ZXItbWkuYwkyMDEzLTA2LTEwIDE0OjMxOjA4 LjM2ODA4MjQzNiArMDIwMAotQEAgLTAsMCArMSwxMzggQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlz IHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDEzIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAg IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rCi0rdm9pZCBmdW5j YSh2b2lkKTsKLStpbnQgY291bnQgPSAwOwotKwotK3R5cGVkZWYgc3RydWN0Ci0rewotKyAgY2hh ciAqbm90aGluZzsKLSsgIGludCBmOwotKyAgc2hvcnQgczsKLSt9IGZvb2JhcjsKLSsKLSt2b2lk IGVuZF9mdW5jIChpbnQgZm9vLCBjaGFyICpiYXIsIGZvb2JhciAqZmIsIGZvb2JhciBiZikKLSt7 Ci0rICBjb25zdCBjaGFyICpzdHIgPSAiVGhlIEVuZCI7Ci0rICBjb25zdCBjaGFyICpzdDIgPSAi SXMgTmVhciI7Ci0rICBpbnQgYiA9IDEyOwotKyAgc2hvcnQgYyA9IDU7Ci0rICB7Ci0rICAgIGlu dCBkID0gMTU7Ci0rICAgIGludCBlID0gMTQ7Ci0rICAgIGNvbnN0IGNoYXIgKmZvbyA9ICJJbnNp ZGUgYmxvY2siOwotKyAgICB7Ci0rICAgICAgaW50IGYgPSA0MjsKLSsgICAgICBpbnQgZyA9IDE5 OwotKyAgICAgIGNvbnN0IGNoYXIgKmJhciA9ICJJbnNpZGUgYmxvY2sgeDIiOwotKyAgICAgIHsK LSsJc2hvcnQgaCA9IDk7Ci0rCWggPSBoICsxOyAgLyogSW5uZXIgdGVzdCBicmVha3BvaW50ICAq LwotKyAgICAgIH0KLSsgICAgfQotKyAgfQotKwotKyAgcmV0dXJuOyAvKiBCYWNrdHJhY2UgZW5k IGJyZWFrcG9pbnQgKi8KLSt9Ci0rCi0rdm9pZCBmdW5jYihpbnQgaikKLSt7Ci0rICBzdHJ1Y3Qg Zm9vCi0rICB7Ci0rICAgIGludCBhOwotKyAgICBpbnQgYjsKLSsgIH07Ci0rCi0rICBzdHJ1Y3Qg Zm9vIGJhcjsKLSsKLSsgIGJhci5hID0gNDI7Ci0rICBiYXIuYiA9IDg0OwotKwotKyAgZnVuY2Eo KTsKLSsgIHJldHVybjsKLSt9Ci0rCi0rdm9pZCBmdW5jYSh2b2lkKQotK3sKLSsgIGZvb2JhciBm YjsKLSsgIGZvb2JhciAqYmY7Ci0rCi0rICBpZiAoY291bnQgPCAxMCkKLSsgICAgewotKyAgICAg IGNvdW50Kys7Ci0rICAgICAgZnVuY2IoY291bnQpOwotKyAgICB9Ci0rCi0rICBmYi5ub3RoaW5n ID0gIkZvbyBCYXIiOwotKyAgZmIuZiA9IDQyOwotKyAgZmIucyA9IDE5OwotKwotKyAgYmYgPSBt YWxsb2MgKHNpemVvZiAoZm9vYmFyKSk7Ci0rICBiZi0+bm90aGluZyA9IG1hbGxvYyAoMTI4KTsK LSsgIGJmLT5ub3RoaW5nID0gIkJhciBGb28iOwotKyAgYmYtPmYgPSAyNDsKLSsgIGJmLT5zID0g OTE7Ci0rCi0rICBlbmRfZnVuYygyMSwgIlBhcmFtIiwgYmYsIGZiKTsKLSsgIGZyZWUgKGJmLT5u b3RoaW5nKTsKLSsgIGZyZWUgKGJmKTsKLSsgIHJldHVybjsKLSt9Ci0rCi0rCi0rdm9pZCBmdW5j MSh2b2lkKQotK3sKLSsgIGZ1bmNhKCk7Ci0rICByZXR1cm47Ci0rfQotKwotK2ludCBmdW5jMih2 b2lkKQotK3sKLSsgIGZ1bmMxKCk7Ci0rICByZXR1cm4gMTsKLSt9Ci0rCi0rdm9pZCBmdW5jMyhp bnQgaSkKLSt7Ci0rICBmdW5jMigpOwotKwotKyAgcmV0dXJuOwotK30KLSsKLStpbnQgZnVuYzQo aW50IGopCi0rewotKyAgZnVuYzMoaik7Ci0rCi0rICByZXR1cm4gMjsKLSt9Ci0rCi0raW50IGZ1 bmM1KGludCBmLCBpbnQgZCkKLSt7Ci0rICBpbnQgaSA9IDA7Ci0rICBjaGFyICpyYW5kb20gPSAi cmFuZG9tIjsKLSsgIGk9aStmOwotKwotKyAgZnVuYzQoaSk7Ci0rICByZXR1cm4gaTsKLSt9Ci0r Ci0rbWFpbigpCi0rewotKyAgZnVuYzUoMyw1KTsKLSt9Ci1JbmRleDogZ2RiLTcuNi9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vcHktZnJhbWVmaWx0ZXItbWkuZXhwCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g L2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcu Ni9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWVmaWx0ZXItbWkuZXhwCTIwMTMtMDYt MTAgMTQ6MzE6MDguMzY4MDgyNDM2ICswMjAwCi1AQCAtMCwwICsxLDE3OSBAQAotKyMgQ29weXJp Z2h0IChDKSAyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHREIg dGVzdHN1aXRlLiAgSXQgdGVzdHMgUHl0aG9uLWJhc2VkCi0rIyBmcmFtZS1maWx0ZXJzLgotK2xv YWRfbGliIG1pLXN1cHBvcnQuZXhwCi0rbG9hZF9saWIgZ2RiLXB5dGhvbi5leHAKLSsKLStzZXQg TUlGTEFHUyAiLWk9bWkyIgotKwotK2dkYl9leGl0Ci0raWYgW21pX2dkYl9zdGFydF0gewotKyAg ICBjb250aW51ZQotK30KLSsKLStzdGFuZGFyZF90ZXN0ZmlsZSBweS1mcmFtZWZpbHRlci1taS5j Ci0rc2V0IHB5ZmlsZSBweS1mcmFtZWZpbHRlci5weQotKwotK2lmICB7IFtnZGJfY29tcGlsZSAi JHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7 ZGVidWcgYWRkaXRpb25hbF9mbGFncz0tRE1JfV0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICR7 dGVzdGZpbGV9LmV4cAotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rbWlfZGVsZXRlX2JyZWFrcG9p bnRzCi0rbWlfZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rbWlfZ2RiX2xv YWQgJHtiaW5maWxlfQotKwotK2lmIHtbbHNlYXJjaCAtZXhhY3QgW21pX2dldF9mZWF0dXJlc10g cHl0aG9uXSA8IDB9IHsKLSsgICAgdW5zdXBwb3J0ZWQgInB5dGhvbiBzdXBwb3J0IGlzIGRpc2Fi bGVkIgotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rbWlfcnVudG8gbWFpbgotKwotK3NldCByZW1v dGVfcHl0aG9uX2ZpbGUgW3JlbW90ZV9kb3dubG9hZCBob3N0ICR7c3JjZGlyfS8ke3N1YmRpcn0v JHtweWZpbGV9XQotKwotK21pX2dkYl90ZXN0ICJweXRob24gZXhlY2ZpbGUgKCcke3JlbW90ZV9w eXRob25fZmlsZX0nKSIgIi4qXFxeZG9uZS4iIFwKLSsgICAgIkxvYWQgcHl0aG9uIGZpbGUiCi0r Ci0rIyBNdWx0aXBsZSBibG9ja3MgdGVzdAotK21pX2NvbnRpbnVlX3RvX2xpbmUgW2dkYl9nZXRf bGluZV9udW1iZXIge0lubmVyIHRlc3QgYnJlYWtwb2ludH0gJHtzcmNmaWxlfV0gXAotKyAgInN0 ZXAgdG8gYnJlYWtwb2ludCIKLSsKLSttaV9nZGJfdGVzdCAiLXN0YWNrLWxpc3QtbG9jYWxzIC0t YWxsLXZhbHVlcyIgXAotKyAgICAiXFxeZG9uZSxsb2NhbHM9XFxcW3tuYW1lPVwiaFwiLHZhbHVl PVwiOVwifSx7bmFtZT1cImZcIix2YWx1ZT1cIjQyXCJ9LHtuYW1lPVwiZ1wiLHZhbHVlPVwiMTlc In0se25hbWU9XCJiYXJcIix2YWx1ZT1cIiRoZXggXFxcXFwiSW5zaWRlIGJsb2NrIHgyXFxcXFwi XCJ9LHtuYW1lPVwiZFwiLHZhbHVlPVwiMTVcIn0se25hbWU9XCJlXCIsdmFsdWU9XCIxNFwifSx7 bmFtZT1cImZvb1wiLHZhbHVlPVwiJGhleCBcXFxcXCJJbnNpZGUgYmxvY2tcXFxcXCJcIn0se25h bWU9XCJzdHJcIix2YWx1ZT1cIiRoZXggXFxcXFwiVGhlIEVuZFxcXFxcIlwifSx7bmFtZT1cInN0 MlwiLHZhbHVlPVwiJGhleCBcXFxcXCJJcyBOZWFyXFxcXFwiXCJ9LHtuYW1lPVwiYlwiLHZhbHVl PVwiMTJcIn0se25hbWU9XCJjXCIsdmFsdWU9XCI1XCJ9XFxcXSIgXAotKyAgICAic3RhY2stbGlz dC1sb2NhbHMgLS1hbGwtdmFsdWVzIgotKwotK21pX2dkYl90ZXN0ICItZW5hYmxlLWZyYW1lLWZp bHRlcnMiICIuKlxcXmRvbmUuIiAiZW5hYmxlIGZyYW1lIGZpbHRlcnMiCi0rbWlfZ2RiX3Rlc3Qg Ii1zdGFjay1saXN0LWxvY2FscyAtLWFsbC12YWx1ZXMiIFwKLSsgICAgIlxcXmRvbmUsbG9jYWxz PVxcXFt7bmFtZT1cImhcIix2YWx1ZT1cIjlcIn0se25hbWU9XCJmXCIsdmFsdWU9XCI0MlwifSx7 bmFtZT1cImdcIix2YWx1ZT1cIjE5XCJ9LHtuYW1lPVwiYmFyXCIsdmFsdWU9XCIkaGV4IFxcXFxc Ikluc2lkZSBibG9jayB4MlxcXFxcIlwifSx7bmFtZT1cImRcIix2YWx1ZT1cIjE1XCJ9LHtuYW1l PVwiZVwiLHZhbHVlPVwiMTRcIn0se25hbWU9XCJmb29cIix2YWx1ZT1cIiRoZXggXFxcXFwiSW5z aWRlIGJsb2NrXFxcXFwiXCJ9LHtuYW1lPVwic3RyXCIsdmFsdWU9XCIkaGV4IFxcXFxcIlRoZSBF bmRcXFxcXCJcIn0se25hbWU9XCJzdDJcIix2YWx1ZT1cIiRoZXggXFxcXFwiSXMgTmVhclxcXFxc IlwifSx7bmFtZT1cImJcIix2YWx1ZT1cIjEyXCJ9LHtuYW1lPVwiY1wiLHZhbHVlPVwiNVwifVxc XF0iIFwKLSsgICAgInN0YWNrLWxpc3QtbG9jYWxzIC0tYWxsLXZhbHVlcyBmcmFtZSBmaWx0ZXJz IGVuYWJsZWQiCi0rCi0rbWlfY29udGludWVfdG9fbGluZSBbZ2RiX2dldF9saW5lX251bWJlciB7 QmFja3RyYWNlIGVuZCBicmVha3BvaW50fSAke3NyY2ZpbGV9XSBcCi0rICAic3RlcCB0byBicmVh a3BvaW50IgotKwotK21pX2dkYl90ZXN0ICItc3RhY2stbGlzdC1mcmFtZXMiIFwKLSsgICAgIlxc XmRvbmUsc3RhY2s9XFxcW2ZyYW1lPXtsZXZlbD1cIjBcIixhZGRyPVwiJGhleFwiLGZ1bmM9XCJj bnVmX2RuZVwiLip9LGZyYW1lPXtsZXZlbD1cIjFcIixhZGRyPVwiJGhleFwiLGZ1bmM9XCJhY251 ZlwiLip9LGZyYW1lPXtsZXZlbD1cIjJcIixhZGRyPVwiJGhleFwiLGZ1bmM9XCJiY251ZlwiLip9 LGZyYW1lPXtsZXZlbD1cIjNcIixhZGRyPVwiJGhleFwiLGZ1bmM9XCJhY251ZlwiLip9LGZyYW1l PXtsZXZlbD1cIjIyXCIsYWRkcj1cIiRoZXhcIixmdW5jPVwiMWNudWZcIi4qLGNoaWxkcmVuPVxc XFtmcmFtZT17bGV2ZWw9XCIyM1wiLGFkZHI9XCIkaGV4XCIsZnVuYz1cImZ1bmMyXCIuKn1cXFxd fSxmcmFtZT17bGV2ZWw9XCIyNFwiLGFkZHI9XCIkaGV4XCIsZnVuYz1cIjNjbnVmXCIuKn0sZnJh bWU9e2xldmVsPVwiMjdcIixhZGRyPVwiJGhleFwiLGZ1bmM9XCJuaWFtXCIuKn1cXFxdLioiIFwK LSsgICAgImZpbHRlcmVkIHN0YWNrIGxpc3RpbmciCi0rbWlfZ2RiX3Rlc3QgIi1zdGFjay1saXN0 LWZyYW1lcyAwIDMiIFwKLSsgICAgIlxcXmRvbmUsc3RhY2s9XFxcW2ZyYW1lPXtsZXZlbD1cIjBc IixhZGRyPVwiJGhleFwiLGZ1bmM9XCJjbnVmX2RuZVwiLip9LGZyYW1lPXtsZXZlbD1cIjFcIixh ZGRyPVwiJGhleFwiLGZ1bmM9XCJhY251ZlwiLip9LGZyYW1lPXtsZXZlbD1cIjJcIixhZGRyPVwi JGhleFwiLGZ1bmM9XCJiY251ZlwiLip9LGZyYW1lPXtsZXZlbD1cIjNcIixhZGRyPVwiJGhleFwi LGZ1bmM9XCJhY251ZlwiLip9XFxcXSIgXAotKyAgICAiZmlsdGVyZWQgc3RhY2sgbGlzdCAwIDMi Ci0rbWlfZ2RiX3Rlc3QgIi1zdGFjay1saXN0LWZyYW1lcyAyMiAyNCIgXAotKyAgICAiXFxeZG9u ZSxzdGFjaz1cXFxbZnJhbWU9e2xldmVsPVwiMjJcIixhZGRyPVwiJGhleFwiLGZ1bmM9XCIxY251 ZlwiLiosY2hpbGRyZW49XFxcW2ZyYW1lPXtsZXZlbD1cIjIzXCIsYWRkcj1cIiRoZXhcIixmdW5j PVwiZnVuYzJcIi4qfVxcXF19LGZyYW1lPXtsZXZlbD1cIjI0XCIsYWRkcj1cIiRoZXhcIixmdW5j PVwiM2NudWZcIi4qfVxcXF0iIFwKLSsgICAgImZpbHRlcmVkIHN0YWNrIGxpc3QgMjIgMjQiCi0r Ci0rI3N0YWNrIGxpc3QgYXJndW1lbnRzCi0rCi0rCi0rbWlfZ2RiX3Rlc3QgIi1zdGFjay1saXN0 LWFyZ3VtZW50cyAwIiBcCi0rICAgICJcXF5kb25lLHN0YWNrLWFyZ3M9XFxcW2ZyYW1lPXtsZXZl bD1cIjBcIixhcmdzPVxcXFtuYW1lPVwiZm9vXCIsbmFtZT1cImJhclwiLG5hbWU9XCJmYlwiLG5h bWU9XCJiZlwiXFxcXX0sZnJhbWU9e2xldmVsPVwiMVwiLGFyZ3M9XFxcW1xcXF19LGZyYW1lPXts ZXZlbD1cIjJcIixhcmdzPVxcXFtuYW1lPVwialwiXFxcXX0sLipmcmFtZT17bGV2ZWw9XCIyMlwi LGFyZ3M9XFxcW1xcXF0sY2hpbGRyZW49XFxcW2ZyYW1lPXtsZXZlbD1cIjIzXCIsYXJncz1cXFxb XFxcXX1cXFxdfSwuKmZyYW1lPXtsZXZlbD1cIjI2XCIsYXJncz1cXFxbbmFtZT1cImZcIixuYW1l PVwiZFwiXFxcXX0sZnJhbWU9e2xldmVsPVwiMjdcIixhcmdzPVxcXFtcXFxdfVxcXF0iIFwKLSsg ICAgInN0YWNrLWxpc3QtYXJndW1lbnRzIDAiCi0rCi0rbWlfZ2RiX3Rlc3QgIi1zdGFjay1saXN0 LWFyZ3VtZW50cyAtLW5vLWZyYW1lLWZpbHRlcnMgMCIgXAotKyAgICAiXFxeZG9uZSxzdGFjay1h cmdzPVxcXFtmcmFtZT17bGV2ZWw9XCIwXCIsYXJncz1cXFxbbmFtZT1cImZvb1wiLG5hbWU9XCJi YXJcIixuYW1lPVwiZmJcIixuYW1lPVwiYmZcIlxcXF19LGZyYW1lPXtsZXZlbD1cIjFcIixhcmdz PVxcXFtcXFxdfSxmcmFtZT17bGV2ZWw9XCIyXCIsYXJncz1cXFxbbmFtZT1cImpcIlxcXF19LC4q ZnJhbWU9e2xldmVsPVwiMjJcIixhcmdzPVxcXFtcXFxdfSxmcmFtZT17bGV2ZWw9XCIyM1wiLGFy Z3M9XFxcW1xcXF19LC4qZnJhbWU9e2xldmVsPVwiMjZcIixhcmdzPVxcXFtuYW1lPVwiZlwiLG5h bWU9XCJkXCJcXFxdfSxmcmFtZT17bGV2ZWw9XCIyN1wiLGFyZ3M9XFxcW1xcXF19XFxcXSIgXAot KyAgICAic3RhY2stbGlzdC1hcmd1bWVudHMgLS1uby1mcmFtZS1maWx0ZXJzIDAiCi0rCi0rbWlf Z2RiX3Rlc3QgIi1zdGFjay1saXN0LWFyZ3VtZW50cyAwIDAgMyIgXAotKyAgICAiXFxeZG9uZSxz dGFjay1hcmdzPVxcXFtmcmFtZT17bGV2ZWw9XCIwXCIsYXJncz1cXFxbbmFtZT1cImZvb1wiLG5h bWU9XCJiYXJcIixuYW1lPVwiZmJcIixuYW1lPVwiYmZcIlxcXF19LGZyYW1lPXtsZXZlbD1cIjFc IixhcmdzPVxcXFtcXFxdfSxmcmFtZT17bGV2ZWw9XCIyXCIsYXJncz1cXFxbbmFtZT1cImpcIlxc XF19LGZyYW1lPXtsZXZlbD1cIjNcIixhcmdzPVxcXFtcXFxdfVxcXF0iIFwKLSsgICAgInN0YWNr LWxpc3QtYXJndW1lbnRzIDAgMCAzIgotKwotK21pX2dkYl90ZXN0ICItc3RhY2stbGlzdC1hcmd1 bWVudHMgMCAyMiAyNyIgXAotKyAgICAiXFxeZG9uZSxzdGFjay1hcmdzPVxcXFtmcmFtZT17bGV2 ZWw9XCIyMlwiLGFyZ3M9XFxcW1xcXF0sY2hpbGRyZW49XFxcW2ZyYW1lPXtsZXZlbD1cIjIzXCIs YXJncz1cXFxbXFxcXX1cXFxdfSwuKmZyYW1lPXtsZXZlbD1cIjI2XCIsYXJncz1cXFxbbmFtZT1c ImZcIixuYW1lPVwiZFwiXFxcXX0sZnJhbWU9e2xldmVsPVwiMjdcIixhcmdzPVxcXFtcXFxdfVxc XF0iIFwKLSsgICAgInN0YWNrLWxpc3QtYXJndW1lbnRzIDAgMjIgMjciCi0rCi0rbWlfZ2RiX3Rl c3QgIi1zdGFjay1saXN0LWFyZ3VtZW50cyAxIiBcCi0rICAgICJcXF5kb25lLHN0YWNrLWFyZ3M9 XFxcW2ZyYW1lPXtsZXZlbD1cIjBcIixhcmdzPVxcXFt7bmFtZT1cImZvb1wiLHZhbHVlPVwiMjFc In0se25hbWU9XCJiYXJcIix2YWx1ZT1cIiRoZXggXFxcXFwiUGFyYW1cXFxcXCJcIn0se25hbWU9 XCJmYlwiLHZhbHVlPVwiJGhleFwifSx7bmFtZT1cImJmXCIsdmFsdWU9XCJ7bm90aGluZyA9ICRo ZXggXFxcXFwiRm9vIEJhclxcXFxcIiwgZiA9IDQyLCBzID0gMTl9XCJ9XFxcXX0sZnJhbWU9e2xl dmVsPVwiMVwiLGFyZ3M9XFxcW1xcXF19LGZyYW1lPXtsZXZlbD1cIjJcIixhcmdzPVxcXFt7bmFt ZT1cImpcIix2YWx1ZT1cIjEwXCJ9XFxcXX0sLipmcmFtZT17bGV2ZWw9XCIyMlwiLGFyZ3M9XFxc W1xcXF0sY2hpbGRyZW49XFxcW2ZyYW1lPXtsZXZlbD1cIjIzXCIsYXJncz1cXFxbXFxcXX1cXFxd fSwuKmZyYW1lPXtsZXZlbD1cIjI2XCIsYXJncz1cXFxbe25hbWU9XCJmXCIsdmFsdWU9XCIzXCJ9 LHtuYW1lPVwiZFwiLHZhbHVlPVwiNVwifVxcXF19LGZyYW1lPXtsZXZlbD1cIjI3XCIsYXJncz1c XFxbXFxcXX1cXFxdIiBcCi0rICAgICJzdGFjay1saXN0LWFyZ3VtZW50cyAxIgotKwotK21pX2dk Yl90ZXN0ICItc3RhY2stbGlzdC1hcmd1bWVudHMgLS1uby1mcmFtZS1maWx0ZXJzIDEiIFwKLSsg ICAgIlxcXmRvbmUsc3RhY2stYXJncz1cXFxbZnJhbWU9e2xldmVsPVwiMFwiLGFyZ3M9XFxcW3tu YW1lPVwiZm9vXCIsdmFsdWU9XCIyMVwifSx7bmFtZT1cImJhclwiLHZhbHVlPVwiJGhleCBcXFxc XCJQYXJhbVxcXFxcIlwifSx7bmFtZT1cImZiXCIsdmFsdWU9XCIkaGV4XCJ9LHtuYW1lPVwiYmZc Iix2YWx1ZT1cIntub3RoaW5nID0gJGhleCBcXFxcXCJGb28gQmFyXFxcXFwiLCBmID0gNDIsIHMg PSAxOX1cIn1cXFxdfSxmcmFtZT17bGV2ZWw9XCIxXCIsYXJncz1cXFxbXFxcXX0sZnJhbWU9e2xl dmVsPVwiMlwiLGFyZ3M9XFxcW3tuYW1lPVwialwiLHZhbHVlPVwiMTBcIn1cXFxdfSwuKmZyYW1l PXtsZXZlbD1cIjIyXCIsYXJncz1cXFxbXFxcXX0sZnJhbWU9e2xldmVsPVwiMjNcIixhcmdzPVxc XFtcXFxdfSwuKmZyYW1lPXtsZXZlbD1cIjI2XCIsYXJncz1cXFxbe25hbWU9XCJmXCIsdmFsdWU9 XCIzXCJ9LHtuYW1lPVwiZFwiLHZhbHVlPVwiNVwifVxcXF19LGZyYW1lPXtsZXZlbD1cIjI3XCIs YXJncz1cXFxbXFxcXX1cXFxdIiBcCi0rICAgICJzdGFjay1saXN0LWFyZ3VtZW50cyAtLW5vLWZy YW1lLWZpbHRlcnMgMSIKLSsKLSsKLSttaV9nZGJfdGVzdCAiLXN0YWNrLWxpc3QtYXJndW1lbnRz IDEgMCAzIiBcCi0rICAgICJcXF5kb25lLHN0YWNrLWFyZ3M9XFxcW2ZyYW1lPXtsZXZlbD1cIjBc IixhcmdzPVxcXFt7bmFtZT1cImZvb1wiLHZhbHVlPVwiMjFcIn0se25hbWU9XCJiYXJcIix2YWx1 ZT1cIiRoZXggXFxcXFwiUGFyYW1cXFxcXCJcIn0se25hbWU9XCJmYlwiLHZhbHVlPVwiJGhleFwi fSx7bmFtZT1cImJmXCIsdmFsdWU9XCJ7bm90aGluZyA9ICRoZXggXFxcXFwiRm9vIEJhclxcXFxc IiwgZiA9IDQyLCBzID0gMTl9XCJ9XFxcXX0sZnJhbWU9e2xldmVsPVwiMVwiLGFyZ3M9XFxcW1xc XF19LGZyYW1lPXtsZXZlbD1cIjJcIixhcmdzPVxcXFt7bmFtZT1cImpcIix2YWx1ZT1cIjEwXCJ9 XFxcXX0sZnJhbWU9e2xldmVsPVwiM1wiLGFyZ3M9XFxcW1xcXF19XFxcXSIgXAotKyAgICAic3Rh Y2stbGlzdC1hcmd1bWVudHMgMSAwIDMiCi0rCi0rbWlfZ2RiX3Rlc3QgIi1zdGFjay1saXN0LWFy Z3VtZW50cyAxIDIyIDI3IiBcCi0rICAgICJcXF5kb25lLHN0YWNrLWFyZ3M9XFxcW2ZyYW1lPXts ZXZlbD1cIjIyXCIsYXJncz1cXFxbXFxcXSxjaGlsZHJlbj1cXFxbZnJhbWU9e2xldmVsPVwiMjNc IixhcmdzPVxcXFtcXFxdfVxcXF19LC4qZnJhbWU9e2xldmVsPVwiMjZcIixhcmdzPVxcXFt7bmFt ZT1cImZcIix2YWx1ZT1cIjNcIn0se25hbWU9XCJkXCIsdmFsdWU9XCI1XCJ9XFxcXX0sZnJhbWU9 e2xldmVsPVwiMjdcIixhcmdzPVxcXFtcXFxdfVxcXF0iIFwKLSsgICAgInN0YWNrLWxpc3QtYXJn dW1lbnRzIDEgMjIgMjciCi0rCi0rbWlfZ2RiX3Rlc3QgIi1zdGFjay1saXN0LWFyZ3VtZW50cyAy IiBcCi0rICAgICJcXF5kb25lLHN0YWNrLWFyZ3M9XFxcW2ZyYW1lPXtsZXZlbD1cIjBcIixhcmdz PVxcXFt7bmFtZT1cImZvb1wiLHR5cGU9XCJpbnRcIix2YWx1ZT1cIjIxXCJ9LHtuYW1lPVwiYmFy XCIsdHlwZT1cImNoYXIgXFxcKlwiLHZhbHVlPVwiJGhleCBcXFxcXCJQYXJhbVxcXFxcIlwifSx7 bmFtZT1cImZiXCIsdHlwZT1cImZvb2JhciBcXFwqXCIsdmFsdWU9XCIkaGV4XCJ9LHtuYW1lPVwi YmZcIix0eXBlPVwiZm9vYmFyXCJcfVxcXF19LGZyYW1lPXtsZXZlbD1cIjFcIixhcmdzPVxcXFtc XFxdfSxmcmFtZT17bGV2ZWw9XCIyXCIsYXJncz1cXFxbe25hbWU9XCJqXCIsdHlwZT1cImludFwi LHZhbHVlPVwiMTBcIn1cXFxdfSwuKmZyYW1lPXtsZXZlbD1cIjIyXCIsYXJncz1cXFxbXFxcXSxj aGlsZHJlbj1cXFxbZnJhbWU9e2xldmVsPVwiMjNcIixhcmdzPVxcXFtcXFxdfVxcXF19LC4qZnJh bWU9e2xldmVsPVwiMjZcIixhcmdzPVxcXFt7bmFtZT1cImZcIix0eXBlPVwiaW50XCIsdmFsdWU9 XCIzXCJ9LHtuYW1lPVwiZFwiLHR5cGU9XCJpbnRcIix2YWx1ZT1cIjVcIn1cXFxdfSxmcmFtZT17 bGV2ZWw9XCIyN1wiLGFyZ3M9XFxcW1xcXF19XFxcXSIgXAotKyAgICAic3RhY2stbGlzdC1hcmd1 bWVudHMgMiIKLSsKLSttaV9nZGJfdGVzdCAiLXN0YWNrLWxpc3QtYXJndW1lbnRzIC0tbm8tZnJh bWUtZmlsdGVycyAyIiBcCi0rICAgICJcXF5kb25lLHN0YWNrLWFyZ3M9XFxcW2ZyYW1lPXtsZXZl bD1cIjBcIixhcmdzPVxcXFt7bmFtZT1cImZvb1wiLHR5cGU9XCJpbnRcIix2YWx1ZT1cIjIxXCJ9 LHtuYW1lPVwiYmFyXCIsdHlwZT1cImNoYXIgXFxcKlwiLHZhbHVlPVwiJGhleCBcXFxcXCJQYXJh bVxcXFxcIlwifSx7bmFtZT1cImZiXCIsdHlwZT1cImZvb2JhciBcXFwqXCIsdmFsdWU9XCIkaGV4 XCJ9LHtuYW1lPVwiYmZcIix0eXBlPVwiZm9vYmFyXCJ9XFxcXX0sZnJhbWU9e2xldmVsPVwiMVwi LGFyZ3M9XFxcW1xcXF19LGZyYW1lPXtsZXZlbD1cIjJcIixhcmdzPVxcXFt7bmFtZT1cImpcIix0 eXBlPVwiaW50XCIsdmFsdWU9XCIxMFwifVxcXF19LC4qZnJhbWU9e2xldmVsPVwiMjJcIixhcmdz PVxcXFtcXFxdfSwuKmZyYW1lPXtsZXZlbD1cIjI2XCIsYXJncz1cXFxbe25hbWU9XCJmXCIsdHlw ZT1cImludFwiLHZhbHVlPVwiM1wifSx7bmFtZT1cImRcIix0eXBlPVwiaW50XCIsdmFsdWU9XCI1 XCJ9XFxcXX0sZnJhbWU9e2xldmVsPVwiMjdcIixhcmdzPVxcXFtcXFxdfVxcXF0iIFwKLSsgICAg InN0YWNrLWxpc3QtYXJndW1lbnRzIC0tbm8tZnJhbWUtZmlsdGVycyAyIgotKwotKwotK21pX2dk Yl90ZXN0ICItc3RhY2stbGlzdC1hcmd1bWVudHMgMiAwIDMiIFwKLSsgICAgIlxcXmRvbmUsc3Rh Y2stYXJncz1cXFxbZnJhbWU9e2xldmVsPVwiMFwiLGFyZ3M9XFxcW3tuYW1lPVwiZm9vXCIsdHlw ZT1cImludFwiLHZhbHVlPVwiMjFcIn0se25hbWU9XCJiYXJcIix0eXBlPVwiY2hhciBcXFwqXCIs dmFsdWU9XCIkaGV4IFxcXFxcIlBhcmFtXFxcXFwiXCJ9LHtuYW1lPVwiZmJcIix0eXBlPVwiZm9v YmFyIFxcXCpcIix2YWx1ZT1cIiRoZXhcIn0se25hbWU9XCJiZlwiLHR5cGU9XCJmb29iYXJcIn1c XFxdfSxmcmFtZT17bGV2ZWw9XCIxXCIsYXJncz1cXFxbXFxcXX0sZnJhbWU9e2xldmVsPVwiMlwi LGFyZ3M9XFxcW3tuYW1lPVwialwiLHR5cGU9XCJpbnRcIix2YWx1ZT1cIjEwXCJ9XFxcXX0sZnJh bWU9e2xldmVsPVwiM1wiLGFyZ3M9XFxcW1xcXF19XFxcXSIgXAotKyAgICAic3RhY2stbGlzdC1h cmd1bWVudHMgMiAwIDMiCi0rCi0rbWlfZ2RiX3Rlc3QgIi1zdGFjay1saXN0LWFyZ3VtZW50cyAy IDIyIDI3IiBcCi0rICAgICJcXF5kb25lLHN0YWNrLWFyZ3M9XFxcW2ZyYW1lPXtsZXZlbD1cIjIy XCIsYXJncz1cXFxbXFxcXSxjaGlsZHJlbj1cXFxbZnJhbWU9e2xldmVsPVwiMjNcIixhcmdzPVxc XFtcXFxdfVxcXF19LC4qZnJhbWU9e2xldmVsPVwiMjZcIixhcmdzPVxcXFt7bmFtZT1cImZcIix0 eXBlPVwiaW50XCIsdmFsdWU9XCIzXCJ9LHtuYW1lPVwiZFwiLHR5cGU9XCJpbnRcIix2YWx1ZT1c IjVcIn1cXFxdfSxmcmFtZT17bGV2ZWw9XCIyN1wiLGFyZ3M9XFxcW1xcXF19XFxcXSIgXAotKyAg ICAic3RhY2stbGlzdC1hcmd1bWVudHMgMiAyMiAyNyIKLSsKLSttaV9nZGJfdGVzdCAiLXN0YWNr LWxpc3QtYXJndW1lbnRzIC0tbm8tZnJhbWUtZmlsdGVycyAyIDIyIDI3IiBcCi0rICAgICJcXF5k b25lLHN0YWNrLWFyZ3M9XFxcW2ZyYW1lPXtsZXZlbD1cIjIyXCIsYXJncz1cXFxbXFxcXX0sZnJh bWU9e2xldmVsPVwiMjNcIixhcmdzPVxcXFtcXFxdfSwuKmZyYW1lPXtsZXZlbD1cIjI2XCIsYXJn cz1cXFxbe25hbWU9XCJmXCIsdHlwZT1cImludFwiLHZhbHVlPVwiM1wifSx7bmFtZT1cImRcIix0 eXBlPVwiaW50XCIsdmFsdWU9XCI1XCJ9XFxcXX0sZnJhbWU9e2xldmVsPVwiMjdcIixhcmdzPVxc XFtcXFxdfVxcXF0iIFwKLSsgICAgInN0YWNrLWxpc3QtYXJndW1lbnRzIC0tbm8tZnJhbWUtZmls dGVycyAyIDIyIDI3IgotKwotKyNzdGFjay1saXN0LWxvY2FscwotK21pX2dkYl90ZXN0ICItc3Rh Y2stbGlzdC1sb2NhbHMgLS1uby1mcmFtZS1maWx0ZXJzIDAiIFwKLSsgICAgIlxcXmRvbmUsbG9j YWxzPVxcXFtuYW1lPVwic3RyXCIsbmFtZT1cInN0MlwiLG5hbWU9XCJiXCIsbmFtZT1cImNcIlxc XF0iIFwKLSsgICAgInN0YWNrLWxpc3QtbG9jYWxzIC0tbm8tZnJhbWUtZmlsdGVycyAwIgotKwot K21pX2dkYl90ZXN0ICItc3RhY2stbGlzdC1sb2NhbHMgLS1uby1mcmFtZS1maWx0ZXJzIDEiIFwK LSsgICAgIlxcXmRvbmUsbG9jYWxzPVxcXFt7bmFtZT1cInN0clwiLHZhbHVlPVwiJGhleCBcXFxc XCJUaGUgRW5kXFxcXFwiXCJ9LHtuYW1lPVwic3QyXCIsdmFsdWU9XCIkaGV4IFxcXFxcIklzIE5l YXJcXFxcXCJcIn0se25hbWU9XCJiXCIsdmFsdWU9XCIxMlwifSx7bmFtZT1cImNcIix2YWx1ZT1c IjVcIn1cXFxdIiBcCi0rICAgICJzdGFjay1saXN0LWxvY2FscyAtLW5vLWZyYW1lLWZpbHRlcnMg MSIKLSsKLSttaV9nZGJfdGVzdCAiLXN0YWNrLWxpc3QtbG9jYWxzIC0tbm8tZnJhbWUtZmlsdGVy cyAyIiBcCi0rICAgICJcXF5kb25lLGxvY2Fscz1cXFxbe25hbWU9XCJzdHJcIix0eXBlPVwiY29u c3QgY2hhciBcXFwqXCIsdmFsdWU9XCIkaGV4IFxcXFxcIlRoZSBFbmRcXFxcXCJcIn0se25hbWU9 XCJzdDJcIix0eXBlPVwiY29uc3QgY2hhciBcXFwqXCIsdmFsdWU9XCIkaGV4IFxcXFxcIklzIE5l YXJcXFxcXCJcIn0se25hbWU9XCJiXCIsdHlwZT1cImludFwiLHZhbHVlPVwiMTJcIn0se25hbWU9 XCJjXCIsdHlwZT1cInNob3J0XCIsdmFsdWU9XCI1XCJ9XFxcXSIgXAotKyAgICAic3RhY2stbGlz dC1sb2NhbHMgLS1uby1mcmFtZS1maWx0ZXJzIDIiCi0rCi0rbWlfZ2RiX3Rlc3QgIi1zdGFjay1s aXN0LWxvY2FscyAtLW5vLWZyYW1lLWZpbHRlcnMgLS1uby12YWx1ZXMiIFwKLSsgICAgIlxcXmRv bmUsbG9jYWxzPVxcXFtuYW1lPVwic3RyXCIsbmFtZT1cInN0MlwiLG5hbWU9XCJiXCIsbmFtZT1c ImNcIlxcXF0iIFwKLSsgICAgInN0YWNrLWxpc3QtbG9jYWxzIC0tbm8tZnJhbWUtZmlsdGVycyAt LW5vLXZhbHVlcyIKLSsKLSttaV9nZGJfdGVzdCAiLXN0YWNrLWxpc3QtbG9jYWxzIC0tbm8tZnJh bWUtZmlsdGVycyAtLWFsbC12YWx1ZXMiIFwKLSsgICAgIlxcXmRvbmUsbG9jYWxzPVxcXFt7bmFt ZT1cInN0clwiLHZhbHVlPVwiJGhleCBcXFxcXCJUaGUgRW5kXFxcXFwiXCJ9LHtuYW1lPVwic3Qy XCIsdmFsdWU9XCIkaGV4IFxcXFxcIklzIE5lYXJcXFxcXCJcIn0se25hbWU9XCJiXCIsdmFsdWU9 XCIxMlwifSx7bmFtZT1cImNcIix2YWx1ZT1cIjVcIn1cXFxdIiBcCi0rICAgICJzdGFjay1saXN0 LWxvY2FscyAtLW5vLWZyYW1lLWZpbHRlcnMgLS1hbGwtdmFsdWVzIgotKwotK21pX2dkYl90ZXN0 ICItc3RhY2stbGlzdC1sb2NhbHMgLS1uby1mcmFtZS1maWx0ZXJzIC0tc2ltcGxlLXZhbHVlcyIg XAotKyAgICAiXFxeZG9uZSxsb2NhbHM9XFxcW3tuYW1lPVwic3RyXCIsdHlwZT1cImNvbnN0IGNo YXIgXFxcKlwiLHZhbHVlPVwiJGhleCBcXFxcXCJUaGUgRW5kXFxcXFwiXCJ9LHtuYW1lPVwic3Qy XCIsdHlwZT1cImNvbnN0IGNoYXIgXFxcKlwiLHZhbHVlPVwiJGhleCBcXFxcXCJJcyBOZWFyXFxc XFwiXCJ9LHtuYW1lPVwiYlwiLHR5cGU9XCJpbnRcIix2YWx1ZT1cIjEyXCJ9LHtuYW1lPVwiY1wi LHR5cGU9XCJzaG9ydFwiLHZhbHVlPVwiNVwifVxcXF0iIFwKLSsgICAgInN0YWNrLWxpc3QtbG9j YWxzIC0tbm8tZnJhbWUtZmlsdGVycyAtLXNpbXBsZS12YWx1ZXMiCi0rCi0rbWlfZ2RiX3Rlc3Qg Ii1zdGFjay1saXN0LWxvY2FscyAwIiBcCi0rICAgICJcXF5kb25lLGxvY2Fscz1cXFxbbmFtZT1c InN0clwiLG5hbWU9XCJzdDJcIixuYW1lPVwiYlwiLG5hbWU9XCJjXCJcXFxdIiBcCi0rICAgICJz dGFjay1saXN0LWxvY2FscyAwIgotKwotK21pX2dkYl90ZXN0ICItc3RhY2stbGlzdC1sb2NhbHMg MSIgXAotKyAgICAiXFxeZG9uZSxsb2NhbHM9XFxcW3tuYW1lPVwic3RyXCIsdmFsdWU9XCIkaGV4 IFxcXFxcIlRoZSBFbmRcXFxcXCJcIn0se25hbWU9XCJzdDJcIix2YWx1ZT1cIiRoZXggXFxcXFwi SXMgTmVhclxcXFxcIlwifSx7bmFtZT1cImJcIix2YWx1ZT1cIjEyXCJ9LHtuYW1lPVwiY1wiLHZh bHVlPVwiNVwifVxcXF0iIFwKLSsgICAgInN0YWNrLWxpc3QtbG9jYWxzIDEiCi0rCi0rbWlfZ2Ri X3Rlc3QgIi1zdGFjay1saXN0LWxvY2FscyAyIiBcCi0rICAgICJcXF5kb25lLGxvY2Fscz1cXFxb e25hbWU9XCJzdHJcIix0eXBlPVwiY29uc3QgY2hhciBcXFwqXCIsdmFsdWU9XCIkaGV4IFxcXFxc IlRoZSBFbmRcXFxcXCJcIn0se25hbWU9XCJzdDJcIix0eXBlPVwiY29uc3QgY2hhciBcXFwqXCIs dmFsdWU9XCIkaGV4IFxcXFxcIklzIE5lYXJcXFxcXCJcIn0se25hbWU9XCJiXCIsdHlwZT1cImlu dFwiLHZhbHVlPVwiMTJcIn0se25hbWU9XCJjXCIsdHlwZT1cInNob3J0XCIsdmFsdWU9XCI1XCJ9 XFxcXSIgXAotKyAgICAic3RhY2stbGlzdC1sb2NhbHMgMiIKLSsKLSsjIHN0YWNrLWxpc3QtdmFy aWFibGVzCi0rbWlfZ2RiX3Rlc3QgIi1zdGFjay1saXN0LXZhcmlhYmxlcyAtLW5vLWZyYW1lLWZp bHRlcnMgMCIgXAotKyAgICAiXFxeZG9uZSx2YXJpYWJsZXM9XFxcW3tuYW1lPVwiZm9vXCIsYXJn PVwiMVwifSx7bmFtZT1cImJhclwiLGFyZz1cIjFcIn0se25hbWU9XCJmYlwiLGFyZz1cIjFcIn0s e25hbWU9XCJiZlwiLGFyZz1cIjFcIn0se25hbWU9XCJzdHJcIn0se25hbWU9XCJzdDJcIn0se25h bWU9XCJiXCJ9LHtuYW1lPVwiY1wifVxcXF0iIFwKLSsgICAgInN0YWNrLWxpc3QtdmFyaWFibGVz IC0tbm8tZnJhbWUtZmlsdGVycyAwIgotKwotK21pX2dkYl90ZXN0ICItc3RhY2stbGlzdC12YXJp YWJsZXMgMCIgXAotKyAgICAiXFxeZG9uZSx2YXJpYWJsZXM9XFxcW3tuYW1lPVwiZm9vXCIsYXJn PVwiMVwifSx7bmFtZT1cImJhclwiLGFyZz1cIjFcIn0se25hbWU9XCJmYlwiLGFyZz1cIjFcIn0s e25hbWU9XCJiZlwiLGFyZz1cIjFcIn0se25hbWU9XCJzdHJcIn0se25hbWU9XCJzdDJcIn0se25h bWU9XCJiXCJ9LHtuYW1lPVwiY1wifVxcXF0iIFwKLSsgICAgInN0YWNrLWxpc3QtdmFyaWFibGVz IDAiCi1JbmRleDogZ2RiLTcuNi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWVmaWx0 ZXIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAw MDAwMCArMDAwMAotKysrIGdkYi03LjYvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZyYW1l ZmlsdGVyLmMJMjAxMy0wNi0xMCAxNDozMTowOC4zNjkwODI0MzYgKzAyMDAKLUBAIC0wLDAgKzEs MTU1IEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dl ci4KLSsKLSsgICBDb3B5cmlnaHQgMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K LSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2luY2x1 ZGUgPHN0ZGxpYi5oPgotKwotK3ZvaWQgZnVuY2Eodm9pZCk7Ci0raW50IGNvdW50ID0gMDsKLSsK LSt0eXBlZGVmIHN0cnVjdAotK3sKLSsgIGNoYXIgKm5vdGhpbmc7Ci0rICBpbnQgZjsKLSsgIHNo b3J0IHM7Ci0rfSBmb29iYXI7Ci0rCi0rdm9pZCBlbmRfZnVuYyAoaW50IGZvbywgY2hhciAqYmFy LCBmb29iYXIgKmZiLCBmb29iYXIgYmYpCi0rewotKyAgY29uc3QgY2hhciAqc3RyID0gIlRoZSBF bmQiOwotKyAgY29uc3QgY2hhciAqc3QyID0gIklzIE5lYXIiOwotKyAgaW50IGIgPSAxMjsKLSsg IHNob3J0IGMgPSA1OwotKwotKyAgewotKyAgICBpbnQgZCA9IDE1OwotKyAgICBpbnQgZSA9IDE0 OwotKyAgICBjb25zdCBjaGFyICpmb28gPSAiSW5zaWRlIGJsb2NrIjsKLSsgICAgewotKyAgICAg IGludCBmID0gNDI7Ci0rICAgICAgaW50IGcgPSAxOTsKLSsgICAgICBjb25zdCBjaGFyICpiYXIg PSAiSW5zaWRlIGJsb2NrIHgyIjsKLSsgICAgICB7Ci0rCXNob3J0IGggPSA5OwotKwloID0gaCAr MTsgIC8qIElubmVyIHRlc3QgYnJlYWtwb2ludCAgKi8KLSsgICAgICB9Ci0rICAgIH0KLSsgIH0K LSsKLSsgIHJldHVybjsgLyogQmFja3RyYWNlIGVuZCBicmVha3BvaW50ICovCi0rfQotKwotK3Zv aWQgZnVuY2IoaW50IGopCi0rewotKyAgc3RydWN0IGZvbwotKyAgewotKyAgICBpbnQgYTsKLSsg ICAgaW50IGI7Ci0rICB9OwotKwotKyAgc3RydWN0IGZvbyBiYXI7Ci0rCi0rICBiYXIuYSA9IDQy OwotKyAgYmFyLmIgPSA4NDsKLSsKLSsgIGZ1bmNhKCk7Ci0rICByZXR1cm47Ci0rfQotKwotK3Zv aWQgZnVuY2Eodm9pZCkKLSt7Ci0rICBmb29iYXIgZmI7Ci0rICBmb29iYXIgKmJmID0gTlVMTDsK LSsKLSsgIGlmIChjb3VudCA8IDEwKQotKyAgICB7Ci0rICAgICAgY291bnQrKzsKLSsgICAgICBm dW5jYihjb3VudCk7Ci0rICAgIH0KLSsKLSsgIGZiLm5vdGhpbmcgPSAiRm9vIEJhciI7Ci0rICBm Yi5mID0gNDI7Ci0rICBmYi5zID0gMTk7Ci0rCi0rICBiZiA9IGFsbG9jYSAoc2l6ZW9mIChmb29i YXIpKTsKLSsgIGJmLT5ub3RoaW5nID0gYWxsb2NhICgxMjgpOwotKyAgYmYtPm5vdGhpbmcgPSAi QmFyIEZvbyI7Ci0rICBiZi0+ZiA9IDI0OwotKyAgYmYtPnMgPSA5MTsKLSsKLSsgIGVuZF9mdW5j KDIxLCAiUGFyYW0iLCBiZiwgZmIpOwotKyAgcmV0dXJuOwotK30KLSsKLSsKLSt2b2lkIGZ1bmMx KHZvaWQpCi0rewotKyAgZnVuY2EoKTsKLSsgIHJldHVybjsKLSt9Ci0rCi0raW50IGZ1bmMyKGlu dCBmKQotK3sKLSsgIGludCBjOwotKyAgY29uc3QgY2hhciAqZWxpZGVkID0gIkVsaWRlZCBmcmFt ZSI7Ci0rICBmb29iYXIgZmI7Ci0rICBmb29iYXIgKmJmID0gTlVMTDsKLSsKLSsgIGZiLm5vdGhp bmcgPSAiRWxpZGVkIEZvbyBCYXIiOwotKyAgZmIuZiA9IDg0OwotKyAgZmIucyA9IDM4OwotKwot KyAgYmYgPSBhbGxvY2EgKHNpemVvZiAoZm9vYmFyKSk7Ci0rICBiZi0+bm90aGluZyA9IGFsbG9j YSAoMTI4KTsKLSsgIGJmLT5ub3RoaW5nID0gIkVsaWRlZCBCYXIgRm9vIjsKLSsgIGJmLT5mID0g NDg7Ci0rICBiZi0+cyA9IDE4MjsKLSsKLSsgIGZ1bmMxKCk7Ci0rICByZXR1cm4gMTsKLSt9Ci0r Ci0rdm9pZCBmdW5jMyhpbnQgaSkKLSt7Ci0rICBmdW5jMihpKTsKLSsKLSsgIHJldHVybjsKLSt9 Ci0rCi0raW50IGZ1bmM0KGludCBqKQotK3sKLSsgIGZ1bmMzKGopOwotKwotKyAgcmV0dXJuIDI7 Ci0rfQotKwotK2ludCBmdW5jNShpbnQgZiwgaW50IGQpCi0rewotKyAgaW50IGkgPSAwOwotKyAg Y2hhciAqcmFuZG9tID0gInJhbmRvbSI7Ci0rICBpPWkrZjsKLSsKLSsgIGZ1bmM0KGkpOwotKyAg cmV0dXJuIGk7Ci0rfQotKwotK21haW4oKQotK3sKLSsgIGludCB6ID0gMzI7Ci0rICBpbnQgeSA9 IDQ0OwotKyAgY29uc3QgY2hhciAqZm9vMSA9ICJUZXN0IjsKLSsgIGZ1bmM1KDMsNSk7Ci0rfQot SW5kZXg6IGdkYi03LjYvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZyYW1lZmlsdGVyLmV4 cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAw MCArMDAwMAotKysrIGdkYi03LjYvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZyYW1lZmls dGVyLmV4cAkyMDEzLTA2LTEwIDE0OjMxOjA4LjM2OTA4MjQzNiArMDIwMAotQEAgLTAsMCArMSwy MzkgQEAKLSsjIENvcHlyaWdodCAoQykgMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rIyBUaGlzIGZpbGUgaXMg cGFydCBvZiB0aGUgR0RCIHRlc3RzdWl0ZS4gIEl0IHRlc3RzIFB5dGhvbi1iYXNlZAotKyMgZnJh bWUtZmlsdGVycy4KLSsKLStsb2FkX2xpYiBnZGItcHl0aG9uLmV4cAotKwotK3N0YW5kYXJkX3Rl c3RmaWxlCi0rCi0rIyBXZSBjYW5ub3QgdXNlIHByZXBhcmVfZm9yX3Rlc3RpbmcgYXMgd2UgaGF2 ZSB0byBzZXQgdGhlIHNhZmUtcGF0Y2gKLSsjIHRvIGNoZWNrIG9iamZpbGUgYW5kIHByb2dzcGFj ZSBwcmludGVycy4KLStpZiB7W2J1aWxkX2V4ZWN1dGFibGUgJHRlc3RmaWxlLmV4cCAkdGVzdGZp bGUgJHNyY2ZpbGUgZGVidWddID09IC0xfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLSsjIFN0 YXJ0IHdpdGggYSBmcmVzaCBnZGIuCi0rZ2RiX2V4aXQKLStnZGJfc3RhcnQKLSsKLSsjIFNraXAg YWxsIHRlc3RzIGlmIFB5dGhvbiBzY3JpcHRpbmcgaXMgbm90IGVuYWJsZWQuCi0raWYgeyBbc2tp cF9weXRob25fdGVzdHNdIH0geyBjb250aW51ZSB9Ci0rCi0rIyBNYWtlIHRoZSAtZ2RiLnB5IHNj cmlwdCBhdmFpbGFibGUgdG8gZ2RiLCBpdCBpcyBhdXRvbWFnaWNhbGx5IGxvYWRlZCBieSBnZGIu Ci0rIyBDYXJlIGlzIHRha2VuIHRvIHB1dCBpdCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhl IGJpbmFyeSBzbyB0aGF0Ci0rIyBnZGIgd2lsbCBmaW5kIGl0LgotK3NldCByZW1vdGVfb2JqX3B5 dGhvbl9maWxlIFwKLSsgICAgW3JlbW90ZV9kb3dubG9hZCBcCi0rCSBob3N0ICR7c3JjZGlyfS8k e3N1YmRpcn0vJHt0ZXN0ZmlsZX0tZ2RiLnB5LmluIFwKLSsJICR7c3ViZGlyfS8ke3Rlc3RmaWxl fS1nZGIucHldCi0rCi0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2Ri X3Rlc3Rfbm9fb3V0cHV0ICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCAke3JlbW90ZV9vYmpfcHl0 aG9uX2ZpbGV9IiBcCi0rICAgICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCIKLStnZGJfbG9hZCAk e2JpbmZpbGV9Ci0rIyBWZXJpZnkgZ2RiIGxvYWRlZCB0aGUgc2NyaXB0LgotK2dkYl90ZXN0ICJp bmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIgIlllcy4qLyR7dGVzdGZpbGV9LWdkYi5weS4q IiBcCi0rICAgICJUZXN0IGF1dG8tbG9hZCBoYWQgbG9hZGVkIHB5dGhvbiBzY3JpcHRzIgotKwot K2lmICFbcnVudG9fbWFpbl0gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJy ZWFrcG9pbnQiCi0rICAgIHJldHVybgotK30KLStnZGJfdGVzdF9ub19vdXRwdXQgInNldCBweXRo b24gcHJpbnQtc3RhY2sgZnVsbCIgXAotKyAgICAiU2V0IHB5dGhvbiBwcmludC1zdGFjayB0byBm dWxsIgotKwotKyMgTG9hZCBnbG9iYWwgZnJhbWUtZmlsdGVycwotK3NldCByZW1vdGVfcHl0aG9u X2ZpbGUgW3JlbW90ZV9kb3dubG9hZCBob3N0ICR7c3JjZGlyfS8ke3N1YmRpcn0vJHt0ZXN0Zmls ZX0ucHldCi0rZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJweXRob24gZXhlY2ZpbGUgKCcke3JlbW90ZV9w eXRob25fZmlsZX0nKSIgXAotKyAgICAiTG9hZCBweXRob24gZmlsZSIKLSsKLStnZGJfYnJlYWtw b2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiQmFja3RyYWNlIGVuZCBicmVha3BvaW50Il0KLStn ZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiSW5uZXIgdGVzdCBicmVha3BvaW50 Il0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiSW5uZXIgdGVzdCBicmVha3BvaW50Igot KwotKyMgVGVzdCBtdWx0aXBsZSBsb2NhbCBibG9ja3MuCi0rZ2RiX3Rlc3QgImJ0IGZ1bGwgbm8t ZmlsdGVycyIgXAotKyAgICAiLiojMC4qZW5kX2Z1bmMuKmggPSA5LipmID0gNDIuKmcgPSAxOS4q YmFyID0gJGhleCBcIkluc2lkZSBibG9jayB4MlwiLipkID0gMTUuKmUgPSAxNC4qZm9vID0gJGhl eCBcIkluc2lkZSBibG9ja1wiLipzdHIgPSAkaGV4IFwiVGhlIEVuZFwiLipzdDIgPSAkaGV4IFwi SXMgTmVhclwiLipiID0gMTIuKmMgPSA1LioiIFwKLSsgICAgImJ0IGZ1bGwgbm8tZmlsdGVycyIK LStnZGJfdGVzdCAiYnQgZnVsbCIgXAotKyAgICAiLiojMC4qY251Zl9kbmUuKmggPSA5LipmID0g NDIuKmcgPSAxOS4qYmFyID0gJGhleCBcIkluc2lkZSBibG9jayB4MlwiLipkID0gMTUuKmUgPSAx NC4qZm9vID0gJGhleCBcIkluc2lkZSBibG9ja1wiLipzdHIgPSAkaGV4IFwiVGhlIEVuZFwiLipz dDIgPSAkaGV4IFwiSXMgTmVhclwiLipiID0gMTIuKmMgPSA1LioiIFwKLSsgICAgImJ0IGZ1bGwg d2l0aCBmaWx0ZXJzIgotKwotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJCYWNrdHJhY2Ug ZW5kIGJyZWFrcG9pbnQiCi0rCi0rIyBUZXN0IHNldC9zaG93Ci0rZ2RiX3Rlc3QgImluZm8gZnJh bWUtZmlsdGVyIiBcCi0rICAgICIuKjkwMC4qWWVzLipFbGlkZXIuKjEwMC4qWWVzLipSZXZlcnNl LioxMC4qLipOby4qT2JqZWN0LioxLioiIFwKLSsgICAgImluZm8gZnJhbWUgZmlsdGVyIGJlZm9y ZSBzZXR0aW5nIHByaW9yaXR5IgotK2dkYl90ZXN0ICJzaG93IGZyYW1lLWZpbHRlciBwcmlvcml0 eSBnbG9iYWwgRWxpZGVyIiBcCi0rICAgICJQcmlvcml0eSBvZiBmaWx0ZXIgJ0VsaWRlcicgaW4g bGlzdCAnZ2xvYmFsJyBpczogOTAwIiBcCi0rICAgICJzaG93IGZyYW1lLWZpbHRlciBwcmlvcml0 eSBnbG9iYWwgRWxpZGVyIGJlZm9yZSBzZXR0aW5nIgotK2dkYl90ZXN0X25vX291dHB1dCAgInNl dCBmcmFtZS1maWx0ZXIgcHJpb3JpdHkgZ2xvYmFsIEVsaWRlciAxMDAwIiBcCi0rICAgICJzZXQg ZnJhbWUtZmlsdGVyIHByaW90aXkgZ2xvYmFsIEVsaWRlciAxMDAwIgotK2dkYl90ZXN0ICJzaG93 IGZyYW1lLWZpbHRlciBwcmlvcml0eSBnbG9iYWwgRWxpZGVyIiBcCi0rICAgICAgICAiUHJpb3Jp dHkgb2YgZmlsdGVyICdFbGlkZXInIGluIGxpc3QgJ2dsb2JhbCcgaXM6IDEwMDAiIFwKLSsgICAg ICAgICJzaG93IGZyYW1lLWZpbHRlciBwcmlvcml0eSBnbG9iYWwgRWxpZGVyIGFmdGVyIHNldHRp bmciCi0rZ2RiX3Rlc3QgImluZm8gZnJhbWUtZmlsdGVyIiBcCi0rICAgICIuKjEwMDAuKlllcy4q RWxpZGVyLioxMDAuKlllcy4qUmV2ZXJzZS4qMTAuKi4qTm8uKk9iamVjdC4qMS4qIiBcCi0rICAg ICJpbmZvIGZyYW1lIGZpbHRlciBhZnRlciBzZXR0aW5nIHByaW9yaXR5IgotKwotKyMgVGVzdCBl bmFibGUvZGlzYWJsZQotK2dkYl90ZXN0ICJpbmZvIGZyYW1lLWZpbHRlciIgXAotKyAgICAiLiox MDAwLipZZXMuKkVsaWRlci4qMTAwLipZZXMuKlJldmVyc2UuKjEwLiouKk5vLipPYmplY3QuKjEu KiIgXAotKyAgICAiaW5mbyBmcmFtZSBmaWx0ZXIgYmVmb3JlIGRpc2FibGUgZnJhbWUgZmlsdGVy IgotK2dkYl90ZXN0X25vX291dHB1dCAgImRpc2FibGUgZnJhbWUtZmlsdGVyIGdsb2JhbCBFbGlk ZXIiIFwKLSsgICAgImRpc2FibGUgZnJhbWUtZmlsdGVyIGdsb2JhbCBFbGlkZXIiCi0rZ2RiX3Rl c3QgImluZm8gZnJhbWUtZmlsdGVyIiBcCi0rICAgICIuKjEwMDAuKk5vLipFbGlkZXIuKjEwMC4q WWVzLipSZXZlcnNlLioxMC4qLipOby4qT2JqZWN0LioxLioiIFwKLSsgICAgImluZm8gZnJhbWUg ZmlsdGVyIGFmdGVyIGRpc2FibGUgZnJhbWUgZmlsdGVyIgotK2dkYl90ZXN0X25vX291dHB1dCAg ImVuYWJsZSBmcmFtZS1maWx0ZXIgZ2xvYmFsIEVsaWRlciIgXAotKyAgICAiZW5hYmxlIGZyYW1l LWZpbHRlciBnbG9iYWwgRWxpZGVyIgotK2dkYl90ZXN0ICJpbmZvIGZyYW1lLWZpbHRlciIgXAot KyAgICAiLioxMDAwLipZZXMuKkVsaWRlci4qMTAwLipZZXMuKlJldmVyc2UuKjEwLiouKk5vLipP YmplY3QuKjEuKiIgXAotKyAgICAiaW5mbyBmcmFtZSBmaWx0ZXIgYWZ0ZXIgcmVlbmFibGluZyBm cmFtZSBmaWx0ZXIiCi0rCi0rIyBUZXN0IG5vLWZpbHRlcnMKLStnZGJfdGVzdCAiYnQgbm8tZmls dGVycyIgXAotKyAgICAiLiojMC4qZW5kX2Z1bmMuKiMyMi4qaW4gZnVuYzEuKiMyNy4qaW4gbWFp biBcXChcXCkuKiIgXAotKyAgICAiYnQgbm8tZmlsdGVycyIKLSsKLSsjIFRlc3QgcmV2ZXJzZQot K2dkYl90ZXN0ICJidCIgXAotKyAgICAiLiojMC4qY251Zl9kbmUuKiMyMi4qaW4gMWNudWYuKiMy Ny4qaW4gbmlhbSBcXChcXCkuKiIgXAotKyAgICAiYnQgd2l0aCBmcmFtZSBmaWx0ZXJzIgotKwot KyMgRGlzYWJsZSBSZXZlcnNlCi0rZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJkaXNhYmxlIGZyYW1lLWZp bHRlciBnbG9iYWwgUmV2ZXJzZSIgXAotKyAgICAiZGlzYWJsZSBmcmFtZS1maWx0ZXIgZ2xvYmFs IFJldmVyc2UiCi0rZ2RiX3Rlc3QgImJ0IiBcCi0rICAgICIuKiMwLiplbmRfZnVuYy4qIzIyLipp biBmdW5jMS4qIzI3LippbiBtYWluIFxcKFxcKS4qIiBcCi0rICAgICJidCB3aXRoIGZyYW1lLWZp bHRlciBSZXZlcnNlIGRpc2FibGVkIgotK2dkYl90ZXN0ICJidCAtMiIgXAotKyAgICAiLiojMjYu KmZ1bmM1LiojMjcuKmluIG1haW4gXFwoXFwpLioiIFwKLSsgICAgImJ0IC0yIHdpdGggZnJhbWUt ZmlsdGVyIFJldmVyc2UgZGlzYWJsZWQiCi0rZ2RiX3Rlc3QgImJ0IDMiIFwKLSsgICAgIi4qIzAu KmVuZF9mdW5jLiojMS4qaW4gZnVuY2EgXFwoXFwpLiojMi4qaW4gZnVuY2IgXFwoaj0xMFxcKS4q IiBcCi0rICAgICJidCAzIHdpdGggZnJhbWUtZmlsdGVyIFJldmVyc2UgZGlzYWJsZWQiCi0rZ2Ri X3Rlc3QgImJ0IG5vLWZpbHRlciBmdWxsIiBcCi0rICAgICIuKiMwLiplbmRfZnVuYy4qc3RyID0g JGhleCBcIlRoZSBFbmRcIi4qc3QyID0gJGhleCBcIklzIE5lYXJcIi4qYiA9IDEyLipjID0gNS4q IzEuKmluIGZ1bmNhIFxcKFxcKS4qIzIuKmluIGZ1bmNiIFxcKGo9MTBcXCkuKmJhciA9IFx7YSA9 IDQyLCBiID0gODRcfS4qIiBcCi0rICAgICJidCBuby1maWx0ZXJzIGZ1bGwgd2l0aCBSZXZlcnNl IGRpc2FibGVkIgotK2dkYl90ZXN0ICJidCBmdWxsIiBcCi0rICAgICIuKiMwLiplbmRfZnVuYy4q c3RyID0gJGhleCBcIlRoZSBFbmRcIi4qc3QyID0gJGhleCBcIklzIE5lYXJcIi4qYiA9IDEyLipj ID0gNS4qIzEuKmluIGZ1bmNhIFxcKFxcKS4qIzIuKmluIGZ1bmNiIFxcKGo9MTBcXCkuKmJhciA9 IFx7YSA9IDQyLCBiID0gODRcfS4qIzIyLippbiBmdW5jMSBcXChcXCkuKiMyMy4qaW4gZnVuYzIg XFwoZj0zXFwpLiplbGlkZWQgPSAkaGV4IFwiRWxpZGVkIGZyYW1lXCIuKmZiID0gXHtub3RoaW5n ID0gJGhleCBcIkVsaWRlZCBGb28gQmFyXCIsIGYgPSA4NCwgcyA9IDM4XH0uKmJmID0gJGhleC4q IiBcCi0rICAgICJidCBmdWxsIHdpdGggUmV2ZXJzZSBkaXNhYmxlZCIKLSsKLSsjIFRlc3Qgc2V0 IHByaW50IGZyYW1lLWFyZ3VtZW50cwotKyMgbm9uZQotK2dkYl90ZXN0X25vX291dHB1dCAic2V0 IHByaW50IGZyYW1lLWFyZ3VtZW50cyBub25lIiBcCi0rICAgICJ0dXJuIG9mZiBmcmFtZSBhcmd1 bWVudHMiCi0rZ2RiX3Rlc3QgImJ0IG5vLWZpbHRlciAxIiBcCi0rICAgICIjMC4qZW5kX2Z1bmMg XFwoZm9vPVwuXC5cLiwgYmFyPVwuXC5cLiwgZmI9XC5cLlwuLCBiZj1cLlwuXC5cXCkgYXQgLipw eS1mcmFtZWZpbHRlci5jLioiIFwKLSsgICAgImJ0IG5vLWZpbHRlciAxIG5vIGFyZ3MiCi0rZ2Ri X3Rlc3QgImJ0IDEiIFwKLSsgICAgIiMwLiplbmRfZnVuYyBcXChmb289XC5cLlwuLCBiYXI9XC5c LlwuLCBmYj1cLlwuXC4sIGJmPVwuXC5cLlxcKSBhdCAuKnB5LWZyYW1lZmlsdGVyLmMuKiIgXAot KyAgICAiYnQgMSBubyBhcmdzIgotKwotKyMgc2NhbGFycwotK2dkYl90ZXN0X25vX291dHB1dCAi c2V0IHByaW50IGZyYW1lLWFyZ3VtZW50cyBzY2FsYXJzIiBcCi0rICAgICJ0dXJuIGZyYW1lIGFy Z3VtZW50cyB0byBzY2FsYXJzIG9ubHkiCi0rZ2RiX3Rlc3QgImJ0IG5vLWZpbHRlciAxIiBcCi0r ICAgICIjMC4qZW5kX2Z1bmMgXFwoZm9vPTIxLCBiYXI9JGhleCBcIlBhcmFtXCIsIGZiPSRoZXgs IGJmPVwuXC5cLlxcKSBhdCAuKnB5LWZyYW1lZmlsdGVyLmMuKiIgXAotKyAgICAiYnQgbm8tZmls dGVyIDEgc2NhbGFycyIKLStnZGJfdGVzdCAiYnQgMSIgXAotKyAgICAiIzAuKmVuZF9mdW5jIFxc KGZvbz0yMSwgYmFyPSRoZXggXCJQYXJhbVwiLCBmYj0kaGV4LCBiZj1cLlwuXC5cXCkgYXQgLipw eS1mcmFtZWZpbHRlci5jLioiIFwKLSsgICAgImJ0IDEgc2NhbGFycyIKLSsKLSsjIGFsbAotK2dk Yl90ZXN0X25vX291dHB1dCAic2V0IHByaW50IGZyYW1lLWFyZ3VtZW50cyBhbGwiIFwKLSsgICAg InR1cm4gb24gZnJhbWUgYXJndW1lbnRzIgotK2dkYl90ZXN0ICJidCBuby1maWx0ZXIgMSIgXAot KyAgICAiIzAuKmVuZF9mdW5jIFxcKGZvbz0yMSwgYmFyPSRoZXggXCJQYXJhbVwiLCBmYj0kaGV4 LCBiZj1ce25vdGhpbmcgPSAkaGV4IFwiRm9vIEJhclwiLCBmID0gNDIsIHMgPSAxOVx9XFwpIGF0 IC4qcHktZnJhbWVmaWx0ZXIuYy4qIiBcCi0rICAgICJidCBuby1maWx0ZXIgMSBhbGwgYXJncyIK LStnZGJfdGVzdCAiYnQgMSIgXAotKyAgICAiIzAuKmVuZF9mdW5jIFxcKGZvbz0yMSwgYmFyPSRo ZXggXCJQYXJhbVwiLCBmYj0kaGV4LCBiZj1ce25vdGhpbmcgPSAkaGV4IFwiRm9vIEJhclwiLCBm ID0gNDIsIHMgPSAxOVx9XFwpIGF0IC4qcHktZnJhbWVmaWx0ZXIuYy4qIiBcCi0rICAgICJidCAx IGFsbCBhcmdzIgotKwotKyMgc2V0IHByaW50IGFkZHJlc3Mgb2ZmCi0rZ2RiX3Rlc3Rfbm9fb3V0 cHV0ICJzZXQgcHJpbnQgYWRkcmVzcyBvZmYiIFwKLSsgICAgIlR1cm4gb2ZmIGFkZHJlc3MgcHJp bnRpbmciCi0rZ2RiX3Rlc3QgImJ0IG5vLWZpbHRlciAxIiBcCi0rICAgICIjMCAgZW5kX2Z1bmMg XFwoZm9vPTIxLCBiYXI9XCJQYXJhbVwiLCBmYj0sIGJmPVx7bm90aGluZyA9IFwiRm9vIEJhclwi LCBmID0gNDIsIHMgPSAxOVx9XFwpIGF0IC4qcHktZnJhbWVmaWx0ZXIuYy4qIiBcCi0rICAgICJi dCBuby1maWx0ZXIgMSBubyBhZGRyZXNzIgotK2dkYl90ZXN0ICJidCAxIiBcCi0rICAgICIjMCAg ZW5kX2Z1bmMgXFwoZm9vPTIxLCBiYXI9XCJQYXJhbVwiLCBmYj0sIGJmPVx7bm90aGluZyA9IFwi Rm9vIEJhclwiLCBmID0gNDIsIHMgPSAxOVx9XFwpIGF0IC4qcHktZnJhbWVmaWx0ZXIuYy4qIiBc Ci0rICAgICJidCAxIG5vIGFkZHJlc3NzIgotKwotK3JlbW90ZV9maWxlIGhvc3QgZGVsZXRlICR7 cmVtb3RlX3B5dGhvbl9maWxlfQotKwotKyMgVGVzdCB3aXRoIG5vIGRlYnVnaW5mbwotKwotKyMg V2UgY2Fubm90IHVzZSBwcmVwYXJlX2Zvcl90ZXN0aW5nIGFzIHdlIGhhdmUgdG8gc2V0IHRoZSBz YWZlLXBhdGNoCi0rIyB0byBjaGVjayBvYmpmaWxlIGFuZCBwcm9nc3BhY2UgcHJpbnRlcnMuCi0r aWYge1tidWlsZF9leGVjdXRhYmxlICR0ZXN0ZmlsZS5leHAgJHRlc3RmaWxlICRzcmNmaWxlIHtu b2RlYnVnfV0gPT0gLTF9IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotKyMgU3RhcnQgd2l0aCBh IGZyZXNoIGdkYi4KLStnZGJfZXhpdAotK2dkYl9zdGFydAotKwotKyMgU2tpcCBhbGwgdGVzdHMg aWYgUHl0aG9uIHNjcmlwdGluZyBpcyBub3QgZW5hYmxlZC4KLStpZiB7IFtza2lwX3B5dGhvbl90 ZXN0c10gfSB7IGNvbnRpbnVlIH0KLSsKLSsjIE1ha2UgdGhlIC1nZGIucHkgc2NyaXB0IGF2YWls YWJsZSB0byBnZGIsIGl0IGlzIGF1dG9tYWdpY2FsbHkgbG9hZGVkIGJ5IGdkYi4KLSsjIENhcmUg aXMgdGFrZW4gdG8gcHV0IGl0IGluIHRoZSBzYW1lIGRpcmVjdG9yeSBhcyB0aGUgYmluYXJ5IHNv IHRoYXQKLSsjIGdkYiB3aWxsIGZpbmQgaXQuCi0rc2V0IHJlbW90ZV9vYmpfcHl0aG9uX2ZpbGUg XAotKyAgICBbcmVtb3RlX2Rvd25sb2FkIFwKLSsJIGhvc3QgJHtzcmNkaXJ9LyR7c3ViZGlyfS8k e3Rlc3RmaWxlfS1nZGIucHkuaW4gXAotKwkgJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LWdkYi5weV0K LSsKLStnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLStnZGJfdGVzdF9ub19v dXRwdXQgInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoICR7cmVtb3RlX29ial9weXRob25fZmlsZX0i IFwKLSsgICAgInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIGZvciBubyBkZWJ1ZyBpbmZvIgotK2dk Yl9sb2FkICR7YmluZmlsZX0KLSsKLSsjIFZlcmlmeSBnZGIgbG9hZGVkIHRoZSBzY3JpcHQuCi0r Z2RiX3Rlc3QgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIiAiWWVzLiovJHt0ZXN0Zmls ZX0tZ2RiLnB5LioiIFwKLSsgICAgIlNldCBhdXRvbG9hZCBwYXRoIGZvciBubyBkZWJ1ZyBpbmZv IHRlc3RzIgotK2lmICFbcnVudG9fbWFpbl0gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291bGRuJ3Qg cnVuIHRvIGJyZWFrcG9pbnQiCi0rICAgIHJldHVybgotK30KLSsKLStnZGJfdGVzdF9ub19vdXRw dXQgInNldCBweXRob24gcHJpbnQtc3RhY2sgZnVsbCIgXAotKyAgICAic2V0IHB5dGhvbiBwcmlu dC1zdGFjayBmdWxsIGZvciBubyBkZWJ1Z2luZm8gdGVzdHMiCi0rCi0rIyBMb2FkIGdsb2JhbCBm cmFtZS1maWx0ZXJzCi0rc2V0IHJlbW90ZV9weXRob25fZmlsZSBbcmVtb3RlX2Rvd25sb2FkIGhv c3QgJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS5weV0KLStnZGJfdGVzdF9ub19vdXRw dXQgInB5dGhvbiBleGVjZmlsZSAoJyR7cmVtb3RlX3B5dGhvbl9maWxlfScpIiBcCi0rICAgICJM b2FkIHB5dGhvbiBmaWxlIGZvciBubyBkZWJ1Z2luZm8gdGVzdHMiCi0rCi0rIyBEaXNhYmxlIFJl dmVyc2UKLStnZGJfdGVzdF9ub19vdXRwdXQgImRpc2FibGUgZnJhbWUtZmlsdGVyIGdsb2JhbCBS ZXZlcnNlIiBcCi0rICAgICJkaXNhYmxlIGZyYW1lLWZpbHRlciBnbG92YWwgUmV2ZXJzZSBmb3Ig bm8gZGVidWdpbmZvIgotK2dkYl90ZXN0ICJidCIgXAotKyAgICAiLiojMC4uKmluIG1haW4gXFwo XFwpLioiIFwKLSsgICAgImJ0IGZvciBubyBkZWJ1Z2luZm8iCi0rZ2RiX3Rlc3QgImJ0IGZ1bGwi IFwKLSsgICAgIi4qIzAuLippbiBtYWluIFxcKFxcKS4qIiBcCi0rICAgICJidCBmdWxsIGZvciBu byBkZWJ1Z2luZm8iCi0rZ2RiX3Rlc3QgImJ0IG5vLWZpbHRlcnMiIFwKLSsgICAgIi4qIzAuLipp biBtYWluIFxcKFxcKS4qIiBcCi0rICAgICJidCBubyBmaWx0ZXJzIGZvciBubyBkZWJ1Z2luZm8i Ci0rZ2RiX3Rlc3QgImJ0IG5vLWZpbHRlcnMgZnVsbCIgXAotKyAgICAiLiojMC4uKmluIG1haW4g XFwoXFwpLioiIFwKLSsgICAgImJ0IG5vLWZpbHRlcnMgZnVsbCBubyBkZWJ1Z2luZm8iCi1JbmRl eDogZ2RiLTcuNi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWVmaWx0ZXIucHkKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAw MDAKLSsrKyBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZWZpbHRlci5w eQkyMDEzLTA2LTEwIDE0OjMxOjA4LjM2OTA4MjQzNiArMDIwMAotQEAgLTAsMCArMSwxMTcgQEAK LSsjIENvcHlyaWdodCAoQykgMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsK LSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsj Ci0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rIyBUaGlzIGZpbGUgaXMgcGFydCBv ZiB0aGUgR0RCIHRlc3RzdWl0ZS4gIEl0IHRlc3RzIFB5dGhvbi1iYXNlZAotKyMgZnJhbWUtZmls dGVycy4KLStpbXBvcnQgZ2RiCi0raW1wb3J0IGl0ZXJ0b29scwotK2Zyb20gZ2RiLkZyYW1lRGVj b3JhdG9yIGltcG9ydCBGcmFtZURlY29yYXRvcgotK2ltcG9ydCBjb3B5Ci0rCi0rY2xhc3MgUmV2 ZXJzZV9GdW5jdGlvbiAoRnJhbWVEZWNvcmF0b3IpOgotKwotKyAgICBkZWYgX19pbml0X18oc2Vs ZiwgZm9iaik6Ci0rICAgICAgICBzdXBlcihSZXZlcnNlX0Z1bmN0aW9uLCBzZWxmKS5fX2luaXRf Xyhmb2JqKQotKyAgICAgICAgc2VsZi5mb2JqID0gZm9iagotKwotKyAgICBkZWYgZnVuY3Rpb24g KHNlbGYpOgotKyAgICAgICAgZm5hbWUgPSBzdHIgKHNlbGYuZm9iai5mdW5jdGlvbigpKQotKyAg ICAgICAgaWYgKGZuYW1lID09IE5vbmUgb3IgZm5hbWUgPT0gIiIpOgotKyAgICAgICAgICAgIHJl dHVybiBOb25lCi0rICAgICAgICBlbHNlOgotKyAgICAgICAgICAgIGZuYW1lID0gZm5hbWVbOjot MV0KLSsgICAgICAgIHJldHVybiBmbmFtZQotKwotK2NsYXNzIER1bW15IChGcmFtZURlY29yYXRv cik6Ci0rCi0rICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmb2JqKToKLSsgICAgICAgIHN1cGVyKER1 bW15LCBzZWxmKS5fX2luaXRfXyhmb2JqKQotKyAgICAgICAgc2VsZi5mb2JqID0gZm9iagotKwot KyAgICBkZWYgZnVuY3Rpb24gKHNlbGYpOgotKyAgICAgICAgcmV0dXJuICJEdW1teSBmdW5jdGlv biIKLSsKLSsgICAgZGVmIGFkZHJlc3MgKHNlbGYpOgotKyAgICAgICAgcmV0dXJuIDB4MTIzCi0r Ci0rICAgIGRlZiBmaWxlbmFtZSAoc2VsZik6Ci0rICAgICAgICByZXR1cm4gIkR1bW15IGZpbGVu YW1lIgotKwotKyAgICBkZWYgZnJhbWVfYXJncyAoc2VsZik6Ci0rICAgICAgICByZXR1cm4gWygi Rm9vIixnZGIuVmFsdWUoMTIpKSwoIkJhciIsIlN0dWZmIiksICgiRm9vQmFyIiw0MildCi0rCi0r ICAgIGRlZiBmcmFtZV9sb2NhbHMgKHNlbGYpOgotKyAgICAgICAgcmV0dXJuIFtdCi0rCi0rICAg IGRlZiBsaW5lIChzZWxmKToKLSsgICAgICAgIHJldHVybiAwCi0rCi0rICAgIGRlZiBlbGlkZWQg KHNlbGYpOgotKyAgICAgICAgcmV0dXJuIE5vbmUKLSsKLStjbGFzcyBGcmFtZUZpbHRlciAoKToK LSsKLSsgICAgZGVmIF9faW5pdF9fIChzZWxmKToKLSsgICAgICAgIHNlbGYubmFtZSA9ICJSZXZl cnNlIgotKyAgICAgICAgc2VsZi5wcmlvcml0eSA9IDEwMAotKyAgICAgICAgc2VsZi5lbmFibGVk ID0gVHJ1ZQotKyAgICAgICAgZ2RiLmZyYW1lX2ZpbHRlcnMgW3NlbGYubmFtZV0gPSBzZWxmCi0r Ci0rICAgIGRlZiBmaWx0ZXIgKHNlbGYsIGZyYW1lX2l0ZXIpOgotKyAgICAgICAgZnJhbWVfaXRl ciA9IGl0ZXJ0b29scy5pbWFwIChSZXZlcnNlX0Z1bmN0aW9uLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBmcmFtZV9pdGVyKQotKyAgICAgICAgcmV0dXJuIGZyYW1lX2l0 ZXIKLSsKLStjbGFzcyBFbGlkaW5nRnJhbWVEZWNvcmF0b3IoRnJhbWVEZWNvcmF0b3IpOgotKwot KyAgICBkZWYgX19pbml0X18oc2VsZiwgZnJhbWUsIGVsaWRlZF9mcmFtZXMpOgotKyAgICAgICAg c3VwZXIoRWxpZGluZ0ZyYW1lRGVjb3JhdG9yLCBzZWxmKS5fX2luaXRfXyhmcmFtZSkKLSsgICAg ICAgIHNlbGYuZWxpZGVkX2ZyYW1lcyA9IGVsaWRlZF9mcmFtZXMKLSsKLSsgICAgZGVmIGVsaWRl ZChzZWxmKToKLSsgICAgICAgIHJldHVybiBpdGVyKHNlbGYuZWxpZGVkX2ZyYW1lcykKLSsKLStj bGFzcyBFbGlkaW5nSXRlcmF0b3I6Ci0rICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpaSk6Ci0rICAg ICAgICBzZWxmLmlucHV0X2l0ZXJhdG9yID0gaWkKLSsKLSsgICAgZGVmIF9faXRlcl9fKHNlbGYp OgotKyAgICAgICAgcmV0dXJuIHNlbGYKLSsKLSsgICAgZGVmIG5leHQoc2VsZik6Ci0rICAgICAg ICBmcmFtZSA9IG5leHQoc2VsZi5pbnB1dF9pdGVyYXRvcikKLSsgICAgICAgIGlmIHN0cihmcmFt ZS5mdW5jdGlvbigpKSAhPSAnZnVuYzEnOgotKyAgICAgICAgICAgIHJldHVybiBmcmFtZQotKwot KyAgICAgICAgIyBTdXBwb3NlIHdlIHdhbnQgdG8gcmV0dXJuIHRoZSAnZnVuYzEnIGZyYW1lIGJ1 dCBlbGlkZSB0aGUKLSsgICAgICAgICMgbmV4dCBmcmFtZS4gIEUuZy4sIGlmIGNhbGwgaW4gb3Vy IGludGVycHJldGVyIGxhbmd1YWdlIHRha2VzCi0rICAgICAgICAjIHR3byBDIGZyYW1lcyB0byBp bXBsZW1lbnQsIGFuZCB0aGUgZmlyc3Qgb25lIHdlIHNlZSBpcyB0aGUKLSsgICAgICAgICMgInNl bnRpbmVsIi4KLSsgICAgICAgIGVsaWRlZCA9IG5leHQoc2VsZi5pbnB1dF9pdGVyYXRvcikKLSsg ICAgICAgIHJldHVybiBFbGlkaW5nRnJhbWVEZWNvcmF0b3IoZnJhbWUsIFtlbGlkZWRdKQotKwot K2NsYXNzIEZyYW1lRWxpZGVyICgpOgotKwotKyAgICBkZWYgX19pbml0X18gKHNlbGYpOgotKyAg ICAgICAgc2VsZi5uYW1lID0gIkVsaWRlciIKLSsgICAgICAgIHNlbGYucHJpb3JpdHkgPSA5MDAK LSsgICAgICAgIHNlbGYuZW5hYmxlZCA9IFRydWUKLSsgICAgICAgIGdkYi5mcmFtZV9maWx0ZXJz IFtzZWxmLm5hbWVdID0gc2VsZgotKwotKyAgICBkZWYgZmlsdGVyIChzZWxmLCBmcmFtZV9pdGVy KToKLSsgICAgICAgIHJldHVybiBFbGlkaW5nSXRlcmF0b3IgKGZyYW1lX2l0ZXIpCi0rCi0rRnJh bWVGaWx0ZXIoKQotK0ZyYW1lRWxpZGVyKCkKCmRpZmYgLS1naXQgYS9nZGItdXBzdHJlYW0tZnJh bWVmaWx0ZXJzLTJvZjIucGF0Y2ggYi9nZGItdXBzdHJlYW0tZnJhbWVmaWx0ZXJzLTJvZjIucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0NDZlZjYuLjAwMDAwMDAKLS0tIGEv Z2RiLXVwc3RyZWFtLWZyYW1lZmlsdGVycy0yb2YyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs MTc1ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTMtMDUvbXNn MDAxNDEuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMy8wNS8xNyAwNjo1ODozMwkx LjE1NTY1Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMy8wNS8xNyAwODozNDoxOAkxLjE1NTY2 Ci0jIyAtMSwzICsxLDE4IEBACi0rMjAxMy0wNS0xNyAgUGhpbCBNdWxkb29uICA8cG11bGRvb25A cmVkaGF0LmNvbT4KLSsKLSsJKiBmcmFtZS5jIChmcmFtZV9zdGFzaCk6IENvbnZlcnQgdG8gaHRh Yi4KLSsJKGZyYW1lX2FkZHJfaGFzaCk6IE5ldyBmdW5jdGlvbi4KLSsJKGZyYW1lX2FkZHJfaGFz aF9lcSk6IE5ldyBmdW5jdGlvbi4KLSsJKGZyYW1lX3N0YXNoX2NyZWF0ZSk6IENvbnZlcnQgZnVu Y3Rpb24gdG8gY3JlYXRlCi0rCWEgaGFzaCB0YWJsZS4KLSsJKGZyYW1lX3N0YXNoX2FkZCk6IENv bnZlcnQgZnVuY3Rpb24gdG8gYWRkIGFuIGVudHJ5IHRvIGEgaGFzaAotKwl0YWJsZS4KLSsJKGZy YW1lX3N0YXNoX2ZpbmQpOiBDb252ZXJ0IGZ1bmN0aW9uIHRvIHNlYXJjaCB0aGUgaGFzaCB0YWJs ZS4KLSsJKGZyYW1lX3N0YXNoX2ludmFsaWRhdGUpOiBDb252ZXJ0IGZ1bmN0aW9uIHRvIGVtcHR5 IHRoZSBoYXNoCi0rCXRhYmxlLgotKwkoZ2V0X2ZyYW1lX2lkKTogT25seSBhZGQgdG8gc3Rhc2gg aWYgYSBmcmFtZV9pZCBpcyBjcmVhdGVkLgotKwkoX2luaXRpYWxpemVfZnJhbWUpOiBDYWxsIGZy YW1lX3N0YXNoX2NyZWF0ZS4KLSsKLSAyMDEzLTA1LTE2ICBZdWUgTHUgIDxoYWNrbHUubmV3Ym9y bkBnbWFpbC5jb20+ICAodGlueSBjaGFuZ2UpCi0gCi0gCSogY29uZmlndXJlLmFjOiBFbnN1cmUg TUlHIGlzIGF2YWlsYWJsZSB3aGVuIGJ1aWxkaW5nIGZvciBHTlUgSHVyZAotLS0tIHNyYy9nZGIv ZnJhbWUuYwkyMDEzLzA0LzEwIDE1OjExOjExCTEuMzE3Ci0rKysgc3JjL2dkYi9mcmFtZS5jCTIw MTMvMDUvMTcgMDg6MzQ6MTgJMS4zMTgKLUBAIC00Myw2ICs0Myw3IEBACi0gI2luY2x1ZGUgImJs b2NrLmgiCi0gI2luY2x1ZGUgImlubGluZS1mcmFtZS5oIgotICNpbmNsdWRlICJ0cmFjZXBvaW50 LmgiCi0rI2luY2x1ZGUgImhhc2h0YWIuaCIKLSAKLSBzdGF0aWMgc3RydWN0IGZyYW1lX2luZm8g KmdldF9wcmV2X2ZyYW1lXzEgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lKTsKLSBzdGF0 aWMgc3RydWN0IGZyYW1lX2luZm8gKmdldF9wcmV2X2ZyYW1lX3JhdyAoc3RydWN0IGZyYW1lX2lu Zm8gKnRoaXNfZnJhbWUpOwotQEAgLTEyOCwzOCArMTI5LDEwNyBAQAotICAgZW51bSB1bndpbmRf c3RvcF9yZWFzb24gc3RvcF9yZWFzb247Ci0gfTsKLSAKLS0vKiBBIGZyYW1lIHN0YXNoIHVzZWQg dG8gc3BlZWQgdXAgZnJhbWUgbG9va3Vwcy4gICovCi0rLyogQSBmcmFtZSBzdGFzaCB1c2VkIHRv IHNwZWVkIHVwIGZyYW1lIGxvb2t1cHMuICBDcmVhdGUgYSBoYXNoIHRhYmxlCi0rICAgdG8gc3Rh c2ggZnJhbWVzIHByZXZpb3VzbHkgYWNjZXNzZWQgZnJvbSB0aGUgZnJhbWUgY2FjaGUgZm9yCi0r ICAgcXVpY2tlciBzdWJzZXF1ZW50IHJldHJpZXZhbC4gIFRoZSBoYXNoIHRhYmxlIGlzIGVtcHRp ZWQgd2hlbmV2ZXIKLSsgICB0aGUgZnJhbWUgY2FjaGUgaXMgaW52YWxpZGF0ZWQuICAqLwotKwot K3N0YXRpYyBodGFiX3QgZnJhbWVfc3Rhc2g7Ci0rCi0rLyogSW50ZXJuYWwgZnVuY3Rpb24gdG8g Y2FsY3VsYXRlIGEgaGFzaCBmcm9tIHRoZSBmcmFtZV9pZCBhZGRyZXNzZXMsCi0rICAgdXNpbmcg YXMgbWFueSB2YWxpZCBhZGRyZXNzZXMgYXMgcG9zc2libGUuICBGcmFtZXMgYmVsb3cgbGV2ZWwg MAotKyAgIGFyZSBub3Qgc3RvcmVkIGluIHRoZSBoYXNoIHRhYmxlLiAgKi8KLSsKLStzdGF0aWMg aGFzaHZhbF90Ci0rZnJhbWVfYWRkcl9oYXNoIChjb25zdCB2b2lkICphcCkKLSt7Ci0rICBjb25z dCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUgPSBhcDsKLSsgIGNvbnN0IHN0cnVjdCBmcmFtZV9p ZCBmX2lkID0gZnJhbWUtPnRoaXNfaWQudmFsdWU7Ci0rICBoYXNodmFsX3QgaGFzaCA9IDA7Ci0r Ci0rICBnZGJfYXNzZXJ0IChmX2lkLnN0YWNrX2FkZHJfcCB8fCBmX2lkLmNvZGVfYWRkcl9wCi0r CSAgICAgIHx8IGZfaWQuc3BlY2lhbF9hZGRyX3ApOwotKwotKyAgaWYgKGZfaWQuc3RhY2tfYWRk cl9wKQotKyAgICBoYXNoID0gaXRlcmF0aXZlX2hhc2ggKCZmX2lkLnN0YWNrX2FkZHIsCi0rCQkJ ICAgc2l6ZW9mIChmX2lkLnN0YWNrX2FkZHIpLCBoYXNoKTsKLSsgIGlmIChmX2lkLmNvZGVfYWRk cl9wKQotKyAgICBoYXNoID0gaXRlcmF0aXZlX2hhc2ggKCZmX2lkLmNvZGVfYWRkciwKLSsJCQkg ICBzaXplb2YgKGZfaWQuY29kZV9hZGRyKSwgaGFzaCk7Ci0rICBpZiAoZl9pZC5zcGVjaWFsX2Fk ZHJfcCkKLSsgICAgaGFzaCA9IGl0ZXJhdGl2ZV9oYXNoICgmZl9pZC5zcGVjaWFsX2FkZHIsCi0r CQkJICAgc2l6ZW9mIChmX2lkLnNwZWNpYWxfYWRkciksIGhhc2gpOwotIAotLS8qIFdlIGN1cnJl bnRseSBvbmx5IHN0YXNoIG9uZSBmcmFtZSBhdCBhIHRpbWUsIGFzIHRoaXMgc2VlbXMgdG8gYmUK LS0gICBzdWZmaWNpZW50IGZvciBub3cuICAqLwotLXN0YXRpYyBzdHJ1Y3QgZnJhbWVfaW5mbyAq ZnJhbWVfc3Rhc2ggPSBOVUxMOwotKyAgcmV0dXJuIGhhc2g7Ci0rfQotKwotKy8qIEludGVybmFs IGVxdWFsaXR5IGZ1bmN0aW9uIGZvciB0aGUgaGFzaCB0YWJsZS4gIFRoaXMgZnVuY3Rpb24KLSsg ICBkZWZlcnMgZXF1YWxpdHkgb3BlcmF0aW9ucyB0byBmcmFtZV9pZF9lcS4gICovCi0rCi0rc3Rh dGljIGludAotK2ZyYW1lX2FkZHJfaGFzaF9lcSAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAq YikKLSt7Ci0rICBjb25zdCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZl9lbnRyeSA9IGE7Ci0rICBjb25z dCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZl9lbGVtZW50ID0gYjsKLSAKLS0vKiBBZGQgdGhlIGZvbGxv d2luZyBGUkFNRSB0byB0aGUgZnJhbWUgc3Rhc2guICAqLwotKyAgcmV0dXJuIGZyYW1lX2lkX2Vx IChmX2VudHJ5LT50aGlzX2lkLnZhbHVlLAotKwkJICAgICAgZl9lbGVtZW50LT50aGlzX2lkLnZh bHVlKTsKLSt9Ci0rCi0rLyogSW50ZXJuYWwgZnVuY3Rpb24gdG8gY3JlYXRlIHRoZSBmcmFtZV9z dGFzaCBoYXNoIHRhYmxlLiAgMTAwIHNlZW1zCi0rICAgdG8gYmUgYSBnb29kIGNvbXByb21pc2Ug dG8gc3RhcnQgdGhlIGhhc2ggdGFibGUgYXQuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rZnJhbWVf c3Rhc2hfY3JlYXRlICh2b2lkKQotK3sKLSsgIGZyYW1lX3N0YXNoID0gaHRhYl9jcmVhdGUgKDEw MCwKLSsJCQkgICAgIGZyYW1lX2FkZHJfaGFzaCwKLSsJCQkgICAgIGZyYW1lX2FkZHJfaGFzaF9l cSwKLSsJCQkgICAgIE5VTEwpOwotK30KLSsKLSsvKiBJbnRlcm5hbCBmdW5jdGlvbiB0byBhZGQg YSBmcmFtZSB0byB0aGUgZnJhbWVfc3Rhc2ggaGFzaCB0YWJsZS4gIERvCi0rICAgbm90IHN0b3Jl IGZyYW1lcyBiZWxvdyAwIGFzIHRoZXkgbWF5IG5vdCBoYXZlIGFueSBhZGRyZXNzZXMgdG8KLSsg ICBjYWxjdWxhdGUgYSBoYXNoLiAgKi8KLSAKLSBzdGF0aWMgdm9pZAotIGZyYW1lX3N0YXNoX2Fk ZCAoc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQotIHsKLS0gIGZyYW1lX3N0YXNoID0gZnJhbWU7 Ci0rICAvKiBEbyBub3Qgc3Rhc2ggZnJhbWVzIGJlbG93IGxldmVsIDAuICAqLwotKyAgaWYgKGZy YW1lLT5sZXZlbCA+PSAwKQotKyAgICB7Ci0rICAgICAgc3RydWN0IGZyYW1lX2luZm8gKipzbG90 OwotKwotKyAgICAgIHNsb3QgPSAoc3RydWN0IGZyYW1lX2luZm8gKiopIGh0YWJfZmluZF9zbG90 IChmcmFtZV9zdGFzaCwKLSsJCQkJCQkgICAgZnJhbWUsCi0rCQkJCQkJICAgIElOU0VSVCk7Ci0r ICAgICAgKnNsb3QgPSBmcmFtZTsKLSsgICAgfQotIH0KLSAKLS0vKiBTZWFyY2ggdGhlIGZyYW1l IHN0YXNoIGZvciBhbiBlbnRyeSB3aXRoIHRoZSBnaXZlbiBmcmFtZSBJRC4KLS0gICBJZiBmb3Vu ZCwgcmV0dXJuIHRoYXQgZnJhbWUuICBPdGhlcndpc2UgcmV0dXJuIE5VTEwuICAqLwotKy8qIElu dGVybmFsIGZ1bmN0aW9uIHRvIHNlYXJjaCB0aGUgZnJhbWUgc3Rhc2ggZm9yIGFuIGVudHJ5IHdp dGggdGhlCi0rICAgZ2l2ZW4gZnJhbWUgSUQuICBJZiBmb3VuZCwgcmV0dXJuIHRoYXQgZnJhbWUu ICBPdGhlcndpc2UgcmV0dXJuCi0rICAgTlVMTC4gICovCi0gCi0gc3RhdGljIHN0cnVjdCBmcmFt ZV9pbmZvICoKLSBmcmFtZV9zdGFzaF9maW5kIChzdHJ1Y3QgZnJhbWVfaWQgaWQpCi0gewotLSAg aWYgKGZyYW1lX3N0YXNoICYmIGZyYW1lX2lkX2VxIChmcmFtZV9zdGFzaC0+dGhpc19pZC52YWx1 ZSwgaWQpKQotLSAgICByZXR1cm4gZnJhbWVfc3Rhc2g7Ci0rICBzdHJ1Y3QgZnJhbWVfaW5mbyBk dW1teTsKLSsgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZTsKLSAKLS0gIHJldHVybiBOVUxMOwot KyAgZHVtbXkudGhpc19pZC52YWx1ZSA9IGlkOwotKyAgZnJhbWUgPSBodGFiX2ZpbmQgKGZyYW1l X3N0YXNoLCAmZHVtbXkpOwotKyAgcmV0dXJuIGZyYW1lOwotIH0KLSAKLS0vKiBJbnZhbGlkYXRl IHRoZSBmcmFtZSBzdGFzaCBieSByZW1vdmluZyBhbGwgZW50cmllcyBpbiBpdC4gICovCi0rLyog SW50ZXJuYWwgZnVuY3Rpb24gdG8gaW52YWxpZGF0ZSB0aGUgZnJhbWUgc3Rhc2ggYnkgcmVtb3Zp bmcgYWxsCi0rICAgZW50cmllcyBpbiBpdC4gIFRoaXMgb25seSBvY2N1cnMgd2hlbiB0aGUgZnJh bWUgY2FjaGUgaXMKLSsgICBpbnZhbGlkYXRlZC4gICovCi0gCi0gc3RhdGljIHZvaWQKLSBmcmFt ZV9zdGFzaF9pbnZhbGlkYXRlICh2b2lkKQotIHsKLS0gIGZyYW1lX3N0YXNoID0gTlVMTDsKLSsg IGh0YWJfZW1wdHkgKGZyYW1lX3N0YXNoKTsKLSB9Ci0gCi0gLyogRmxhZyB0byBjb250cm9sIGRl YnVnZ2luZy4gICovCi1AQCAtMzQ1LDEwICs0MTUsOSBAQAotIAkgIGZwcmludF9mcmFtZV9pZCAo Z2RiX3N0ZGxvZywgZmktPnRoaXNfaWQudmFsdWUpOwotIAkgIGZwcmludGZfdW5maWx0ZXJlZCAo Z2RiX3N0ZGxvZywgIiB9XG4iKTsKLSAJfQotKyAgICAgIGZyYW1lX3N0YXNoX2FkZCAoZmkpOwot ICAgICB9Ci0gCi0tICBmcmFtZV9zdGFzaF9hZGQgKGZpKTsKLS0KLSAgIHJldHVybiBmaS0+dGhp c19pZC52YWx1ZTsKLSB9Ci0gCi1AQCAtMjQ1MSw2ICsyNTIwLDggQEAKLSB7Ci0gICBvYnN0YWNr X2luaXQgKCZmcmFtZV9jYWNoZV9vYnN0YWNrKTsKLSAKLSsgIGZyYW1lX3N0YXNoX2NyZWF0ZSAo KTsKLSsKLSAgIG9ic2VydmVyX2F0dGFjaF90YXJnZXRfY2hhbmdlZCAoZnJhbWVfb2JzZXJ2ZXJf dGFyZ2V0X2NoYW5nZWQpOwotIAotICAgYWRkX3ByZWZpeF9jbWQgKCJiYWNrdHJhY2UiLCBjbGFz c19tYWludGVuYW5jZSwgc2V0X2JhY2t0cmFjZV9jbWQsIF8oIlwKCmRpZmYgLS1naXQgYS9nZGIt dXBzdHJlYW0tbWFuLWdjb3JlLTFvZjIucGF0Y2ggYi9nZGItdXBzdHJlYW0tbWFuLWdjb3JlLTFv ZjIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwMjU1ZjMuLjAwMDAwMDAK LS0tIGEvZ2RiLXVwc3RyZWFtLW1hbi1nY29yZS0xb2YyLnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsNjkwICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTMtMDQv bXNnMDAxMDkuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMy8wNC8xMSAxMzoxNDow NAkxLjE1Mzk3Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMy8wNC8xMSAxNDoxMzo0MgkxLjE1 Mzk4Ci0jIyAtMSw0ICsxLDI4IEBACi0gMjAxMy0wNC0xMSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4u a3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwkgICAgUGVkcm8gQWx2ZXMgIDxwYWx2ZXNAcmVkaGF0 LmNvbT4KLSsKLSsJKiBNYWtlZmlsZS5pbiAoSEFWRV9OQVRJVkVfR0NPUkVfVEFSR0VUKTogTmV3 LgotKwkoZ2VuZXJhdGVkX2ZpbGVzKTogQWRkIGdjb3JlLgotKwkoaW5zdGFsbC1vbmx5LCB1bmlu c3RhbGwpOiBBZGQgZ2NvcmUgaWYgSEFWRV9OQVRJVkVfR0NPUkVfVEFSR0VUIG9yCi0rCUhBVkVf TkFUSVZFX0dDT1JFX0hPU1QuCi0rCShnY29yZSk6IE5ldy4KLSsJKiBORVdTIChDaGFuZ2VzIHNp bmNlIEdEQiA3LjYpOiBNZW50aW9uIG5ld2x5IGluc3RhbGxlZCBnY29yZS4KLSsJKiBjb25maWcv YWxwaGEvYWxwaGEtb3NmMy5taCwgY29uZmlnL2kzODYvZmJzZC5taCwKLSsJY29uZmlnL2kzODYv ZmJzZDY0Lm1oLCBjb25maWcvaTM4Ni9pMzg2Z251Lm1oLCBjb25maWcvaTM4Ni9pMzg2c29sMi5t aCwKLSsJY29uZmlnL2kzODYvc29sMi02NC5taCwgY29uZmlnL21pcHMvaXJpeDUubWgsIGNvbmZp Zy9taXBzL2lyaXg2Lm1oLAotKwljb25maWcvcG93ZXJwYy9mYnNkLm1oLCBjb25maWcvc3BhcmMv ZmJzZC5taCwgY29uZmlnL3NwYXJjL3NvbDIubWg6Ci0rCUFkZCBIQVZFX05BVElWRV9HQ09SRV9I T1NULgotKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KLSsJKiBjb25maWd1cmUuYWMgKEhBVkVf TkFUSVZFX0dDT1JFX1RBUkdFVCk6IE5ldywgc2V0IGl0LCBBQ19TVUJTVCBpdC4KLSsJTmV3IEFD X1NVQlNUIGZpciBHREJfVFJBTlNGT1JNX05BTUUgYW5kIEdDT1JFX1RSQU5TRk9STV9OQU1FLiAg TmV3Ci0rCUFDX0NPTkZJR19GSUxFUyBmb3IgZ2NvcmUuCi0rCSogY29uZmlndXJlLnRndDogQWRk IGdkYl9oYXZlX2djb3JlIHRvIHRoZSBpbml0aWFsIGNvbW1lbnQuICBTZXQKLSsJZ2RiX2hhdmVf Z2NvcmUuCi0rCSogZ2RiX2djb3JlLnNoOiBSZW5hbWUgdG8gLi4uCi0rCSogZ2NvcmUuaW46IC4u LiBoZXJlLiAgUmVtb3ZlIGdjb3JlLnNoIGNvbW1lbnQuICBVc2UgR0RCX1RSQU5TRk9STV9OQU1F Ci0rCWFuZCBHQ09SRV9UUkFOU0ZPUk1fTkFNRSBzdWJzdGl0dXRpb25zLgotKwotKzIwMTMtMDQt MTEgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSAKLSAJKiBy ZW1vdGUuYyAodW5wdXNoX2FuZF9wZXJyb3IpOiBBZGQgb3V0cHV0IG1lc3NhZ2UgZmluYWwgZG90 LgotIAotIyMjIHNyYy9nZGIvZG9jL0NoYW5nZUxvZwkyMDEzLzA0LzEwIDE1OjExOjEyCTEuMTQ0 MAotIyMjIHNyYy9nZGIvZG9jL0NoYW5nZUxvZwkyMDEzLzA0LzExIDE0OjEzOjQ0CTEuMTQ0MQot IyMgLTEsMyArMSwxMyBAQAotKzIwMTMtMDQtMTEgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRv Y2h2aWxAcmVkaGF0LmNvbT4KLSsKLSsJKiBNYWtlZmlsZS5pbiAoTUFOMVMpOiBBZGQgZ2NvcmUu MS4KLSsJUmVtb3ZlICJIb3N0LCB0YXJnZXQsIGFuZCBzaXRlIHNwZWNpZmljIE1ha2VmaWxlIGZy YWdtZW50cyIgY29tbWVudC4KLSsJKEBob3N0X21ha2VmaWxlX2ZyYWdALCBIQVZFX05BVElWRV9H Q09SRV9UQVJHRVQpOiBOZXcuCi0rCShpbnN0YWxsLW1hbjEsIHVuaW5zdGFsbC1tYW4xKTogQ29u ZGl0aW9uYWxpemUgZ2NvcmUuMS4KLSsJKGdjb3JlLjEpOiBOZXcuCi0rCSogZ2RiLnRleGluZm8g KE1hbiBQYWdlcyk6IEFkZCBnY29yZSBtYW4uCi0rCShnY29yZSBtYW4pOiBOZXcgbm9kZS4KLSsK LSAyMDEzLTA0LTEwICBQZWRybyBBbHZlcyAgPHBhbHZlc0ByZWRoYXQuY29tPgotIAotIAkqIGdk Yi50ZXhpbmZvIChQcm9jZXNzIFJlY29yZCBhbmQgUmVwbGF5KTogRG9jdW1lbnQgdGhhdCAic2V0 Ci1JbmRleDogZ2RiLTcuNi9nZGIvZ2NvcmUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJ MTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy42L2dkYi9nY29y ZS5pbgkyMDEzLTA0LTI2IDE1OjMzOjAxLjE3MTA0OTI0NyArMDIwMAotQEAgLTAsMCArMSw2OSBA QAotKyMhL2Jpbi9zaAotKwotKyMgICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxMyBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQot KyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwot KyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0r Ci0rIwotKyMgU2NyaXB0IHRvIGdlbmVyYXRlIGEgY29yZSBmaWxlIG9mIGEgcnVubmluZyBwcm9n cmFtLgotKyMgSXQgc3RhcnRzIHVwIGdkYiwgYXR0YWNoZXMgdG8gdGhlIGdpdmVuIFBJRCBhbmQg aW52b2tlcyB0aGUgZ2NvcmUgY29tbWFuZC4KLSsjCi0rCi0raWYgWyAiJCMiIC1lcSAiMCIgXQot K3RoZW4KLSsgICAgZWNobyAidXNhZ2U6ICBAR0NPUkVfVFJBTlNGT1JNX05BTUVAIFstbyBmaWxl bmFtZV0gcGlkIgotKyAgICBleGl0IDIKLStmaQotKwotKyMgTmVlZCB0byBjaGVjayBmb3IgLW8g b3B0aW9uLCBidXQgc2V0IGRlZmF1bHQgYmFzZW5hbWUgdG8gImNvcmUiLgotK25hbWU9Y29yZQot KwotK2lmIFsgIiQxIiA9ICItbyIgXQotK3RoZW4KLSsgICAgaWYgWyAiJCMiIC1sdCAiMyIgXQot KyAgICB0aGVuCi0rCSMgTm90IGVub3VnaCBhcmd1bWVudHMuCi0rCWVjaG8gInVzYWdlOiAgQEdD T1JFX1RSQU5TRk9STV9OQU1FQCBbLW8gZmlsZW5hbWVdIHBpZCIKLSsJZXhpdCAyCi0rICAgIGZp Ci0rICAgIG5hbWU9JDIKLSsKLSsgICAgIyBTaGlmdCBvdmVyIHRvIHN0YXJ0IG9mIHBpZCBsaXN0 Ci0rICAgIHNoaWZ0OyBzaGlmdAotK2ZpCi0rCi0rIyBJbml0aWFsaXNlIHJldHVybiBjb2RlLgot K3JjPTAKLSsKLSsjIExvb3AgdGhyb3VnaCBwaWRzCi0rZm9yIHBpZCBpbiAkKgotK2RvCi0rCSMg YDwvZGV2L251bGwnIHRvIGF2b2lkIHRvdWNoaW5nIGludGVyYWN0aXZlIHRlcm1pbmFsIGlmIGl0 IGlzCi0rCSMgYXZhaWxhYmxlIGJ1dCBub3QgYWNjZXNzaWJsZSBhcyBHREIgd291bGQgZ2V0IHN0 b3BwZWQgb24gU0lHVFRJTi4KLSsJQEdEQl9UUkFOU0ZPUk1fTkFNRUAgPC9kZXYvbnVsbCAtLW54 IC0tYmF0Y2ggXAotKwkgICAgLWV4ICJzZXQgcGFnaW5hdGlvbiBvZmYiIC1leCAic2V0IGhlaWdo dCAwIiAtZXggInNldCB3aWR0aCAwIiBcCi0rCSAgICAtZXggImF0dGFjaCAkcGlkIiAtZXggImdj b3JlICRuYW1lLiRwaWQiIC1leCBkZXRhY2ggLWV4IHF1aXQKLSsKLSsJaWYgWyAtciAkbmFtZS4k cGlkIF0gOyB0aGVuIAotKwkgICAgcmM9MAotKwllbHNlCi0rCSAgICBlY2hvICJAR0NPUkVfVFJB TlNGT1JNX05BTUVAOiBmYWlsZWQgdG8gY3JlYXRlICRuYW1lLiRwaWQiCi0rCSAgICByYz0xCi0r CSAgICBicmVhawotKwlmaQotKwotKwotK2RvbmUKLSsKLStleGl0ICRyYwotSW5kZXg6IGdkYi03 LjYvZ2RiL2dkYl9nY29yZS5zaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvZ2Ri X2djb3JlLnNoCTIwMTMtMDEtMDEgMDc6MzI6NDIuMDAwMDAwMDAwICswMTAwCi0rKysgL2Rldi9u dWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi1AQCAtMSw3MCArMCwwIEBA Ci0tIyEvYmluL3NoCi0tCi0tIyAgIENvcHlyaWdodCAoQykgMjAwMy0yMDEzIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgotLQotLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0jIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0t IyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgotLSMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0jCi0t IyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKLS0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCi0tIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgotLSMKLS0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tIyBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLS0K LS0jCi0tIyBnY29yZS5zaAotLSMgU2NyaXB0IHRvIGdlbmVyYXRlIGEgY29yZSBmaWxlIG9mIGEg cnVubmluZyBwcm9ncmFtLgotLSMgSXQgc3RhcnRzIHVwIGdkYiwgYXR0YWNoZXMgdG8gdGhlIGdp dmVuIFBJRCBhbmQgaW52b2tlcyB0aGUgZ2NvcmUgY29tbWFuZC4KLS0jCi0tCi0taWYgWyAiJCMi IC1lcSAiMCIgXQotLXRoZW4KLS0gICAgZWNobyAidXNhZ2U6ICBnY29yZSBbLW8gZmlsZW5hbWVd IHBpZCIKLS0gICAgZXhpdCAyCi0tZmkKLS0KLS0jIE5lZWQgdG8gY2hlY2sgZm9yIC1vIG9wdGlv biwgYnV0IHNldCBkZWZhdWx0IGJhc2VuYW1lIHRvICJjb3JlIi4KLS1uYW1lPWNvcmUKLS0KLS1p ZiBbICIkMSIgPSAiLW8iIF0KLS10aGVuCi0tICAgIGlmIFsgIiQjIiAtbHQgIjMiIF0KLS0gICAg dGhlbgotLQkjIE5vdCBlbm91Z2ggYXJndW1lbnRzLgotLQllY2hvICJ1c2FnZTogIGdjb3JlIFst byBmaWxlbmFtZV0gcGlkIgotLQlleGl0IDIKLS0gICAgZmkKLS0gICAgbmFtZT0kMgotLQotLSAg ICAjIFNoaWZ0IG92ZXIgdG8gc3RhcnQgb2YgcGlkIGxpc3QKLS0gICAgc2hpZnQ7IHNoaWZ0Ci0t ZmkKLS0KLS0jIEluaXRpYWxpc2UgcmV0dXJuIGNvZGUuCi0tcmM9MAotLQotLSMgTG9vcCB0aHJv dWdoIHBpZHMKLS1mb3IgcGlkIGluICQqCi0tZG8KLS0JIyBgPC9kZXYvbnVsbCcgdG8gYXZvaWQg dG91Y2hpbmcgaW50ZXJhY3RpdmUgdGVybWluYWwgaWYgaXQgaXMKLS0JIyBhdmFpbGFibGUgYnV0 IG5vdCBhY2Nlc3NpYmxlIGFzIEdEQiB3b3VsZCBnZXQgc3RvcHBlZCBvbiBTSUdUVElOLgotLQln ZGIgPC9kZXYvbnVsbCAtLW54IC0tYmF0Y2ggXAotLQkgICAgLWV4ICJzZXQgcGFnaW5hdGlvbiBv ZmYiIC1leCAic2V0IGhlaWdodCAwIiAtZXggInNldCB3aWR0aCAwIiBcCi0tCSAgICAtZXggImF0 dGFjaCAkcGlkIiAtZXggImdjb3JlICRuYW1lLiRwaWQiIC1leCBkZXRhY2ggLWV4IHF1aXQKLS0K LS0JaWYgWyAtciAkbmFtZS4kcGlkIF0gOyB0aGVuIAotLQkgICAgcmM9MAotLQllbHNlCi0tCSAg ICBlY2hvIGdjb3JlOiBmYWlsZWQgdG8gY3JlYXRlICRuYW1lLiRwaWQKLS0JICAgIHJjPTEKLS0J ICAgIGJyZWFrCi0tCWZpCi0tCi0tCi0tZG9uZQotLQotLWV4aXQgJHJjCi1JbmRleDogZ2RiLTcu Ni9nZGIvTWFrZWZpbGUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL01ha2Vm aWxlLmluCTIwMTMtMDQtMjYgMTU6MzI6NTguMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNi9n ZGIvTWFrZWZpbGUuaW4JMjAxMy0wNC0yNiAxNTozMzowMS4xNzIwNDkyNDYgKzAyMDAKLUBAIC00 MTQsNiArNDE0LDcgQEAgQ09ORklHX0FMTD0gQENPTkZJR19BTExACi0gQ09ORklHX0NMRUFOPSBA Q09ORklHX0NMRUFOQAotIENPTkZJR19JTlNUQUxMID0gQENPTkZJR19JTlNUQUxMQAotIENPTkZJ R19VTklOU1RBTEwgPSBAQ09ORklHX1VOSU5TVEFMTEAKLStIQVZFX05BVElWRV9HQ09SRV9UQVJH RVQgPSBASEFWRV9OQVRJVkVfR0NPUkVfVEFSR0VUQAotIAotICMgLUkuIGZvciBjb25maWcgZmls ZXMuCi0gIyAtSSQoc3JjZGlyKSBmb3IgZ2RiIGludGVybmFsIGhlYWRlcnMuCi1AQCAtOTYzLDcg Kzk2NCw3IEBAIERJU1RTVFVGRiA9ICQoWVlGSUxFUykKLSAKLSAjIEFsbCBnZW5lcmF0ZWQgZmls ZXMgd2hpY2ggY2FuIGJlIGluY2x1ZGVkIGJ5IGFub3RoZXIgZmlsZS4KLSBnZW5lcmF0ZWRfZmls ZXMgPSBjb25maWcuaCBvYnNlcnZlci5oIG9ic2VydmVyLmluYyBhZGEtbGV4LmMgaml0LXJlYWRl ci5oIFwKLS0JJChHTlVMSUJfSCkgJChOQVRfR0VORVJBVEVEX0ZJTEVTKQotKwkkKEdOVUxJQl9I KSAkKE5BVF9HRU5FUkFURURfRklMRVMpIGdjb3JlCi0gCi0gLmMubzoKLSAJJChDT01QSUxFKSAk PAotQEAgLTEwMzksNiArMTA0MCwxOSBAQCBpbnN0YWxsLW9ubHk6ICQoQ09ORklHX0lOU1RBTEwp Ci0gCQkJJChERVNURElSKSQoYmluZGlyKS8kJHRyYW5zZm9ybWVkX25hbWUkKEVYRUVYVCkgOyBc Ci0gCQkkKFNIRUxMKSAkKHNyY2RpcikvLi4vbWtpbnN0YWxsZGlycyAkKERFU1RESVIpJChpbmNs dWRlZGlyKS9nZGIgOyBcCi0gCQkkKElOU1RBTExfREFUQSkgaml0LXJlYWRlci5oICQoREVTVERJ UikkKGluY2x1ZGVkaXIpL2dkYi9qaXQtcmVhZGVyLmgKLSsJaWYgdGVzdCAieCQoSEFWRV9OQVRJ VkVfR0NPUkVfVEFSR0VUKSQoSEFWRV9OQVRJVkVfR0NPUkVfSE9TVCkiICE9IHg7IFwKLSsJdGhl biBcCi0rCSAgdHJhbnNmb3JtZWRfbmFtZT1gdD0nJChwcm9ncmFtX3RyYW5zZm9ybV9uYW1lKSc7 IFwKLSsJCQkgICAgZWNobyBnY29yZSB8IHNlZCAtZSAiJCR0ImAgOyBcCi0rCQkgIGlmIHRlc3Qg IngkJHRyYW5zZm9ybWVkX25hbWUiID0geDsgdGhlbiBcCi0rCQkgICAgdHJhbnNmb3JtZWRfbmFt ZT1nY29yZSA7IFwKLSsJCSAgZWxzZSBcCi0rCQkgICAgdHJ1ZSA7IFwKLSsJCSAgZmkgOyBcCi0r CQkgICQoU0hFTEwpICQoc3JjZGlyKS8uLi9ta2luc3RhbGxkaXJzICQoREVTVERJUikkKGJpbmRp cikgOyBcCi0rCQkgICQoSU5TVEFMTF9QUk9HUkFNKSBnY29yZSBcCi0rCQkJICAkKERFU1RESVIp JChiaW5kaXIpLyQkdHJhbnNmb3JtZWRfbmFtZTsgXAotKwlmaQotIAlAJChNQUtFKSBETz1pbnN0 YWxsICJET0RJUlM9JChTVUJESVJTKSIgJChGTEFHU19UT19QQVNTKSBzdWJkaXJfZG8KLSAKLSBp bnN0YWxsLXB5dGhvbjoKLUBAIC0xMDU0LDYgKzEwNjgsMTcgQEAgdW5pbnN0YWxsOiBmb3JjZSAk KENPTkZJR19VTklOU1RBTEwpCi0gCQlmaSA7IFwKLSAJCXJtIC1mICQoREVTVERJUikkKGJpbmRp cikvJCR0cmFuc2Zvcm1lZF9uYW1lJChFWEVFWFQpIFwKLSAJCSAgICAgICQoREVTVERJUikkKG1h bjFkaXIpLyQkdHJhbnNmb3JtZWRfbmFtZS4xCi0rCWlmIHRlc3QgIngkKEhBVkVfTkFUSVZFX0dD T1JFX1RBUkdFVCkkKEhBVkVfTkFUSVZFX0dDT1JFX0hPU1QpIiAhPSB4OyBcCi0rCXRoZW4gXAot KwkgIHRyYW5zZm9ybWVkX25hbWU9YHQ9JyQocHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSknOyBcCi0r CQkJICAgIGVjaG8gZ2NvcmUgfCBzZWQgLWUgIiQkdCJgIDsgXAotKwkJICBpZiB0ZXN0ICJ4JCR0 cmFuc2Zvcm1lZF9uYW1lIiA9IHg7IHRoZW4gXAotKwkJICAgIHRyYW5zZm9ybWVkX25hbWU9Z2Nv cmUgOyBcCi0rCQkgIGVsc2UgXAotKwkJICAgIHRydWUgOyBcCi0rCQkgIGZpIDsgXAotKwkJICBy bSAtZiAkKERFU1RESVIpJChiaW5kaXIpLyQkdHJhbnNmb3JtZWRfbmFtZTsgXAotKwlmaQotIAlA JChNQUtFKSBETz11bmluc3RhbGwgIkRPRElSUz0kKFNVQkRJUlMpIiAkKEZMQUdTX1RPX1BBU1Mp IHN1YmRpcl9kbwotIAotICMgVGhlIEMrKyBuYW1lIHBhcnNlciBjYW4gYmUgYnVpbHQgc3RhbmRh bG9uZSBmb3IgdGVzdGluZy4KLUBAIC0xMjk4LDYgKzEzMjMsOSBAQCBkYXRhLWRpcmVjdG9yeS9N YWtlZmlsZTogZGF0YS1kaXJlY3RvcnkvCi0gaml0LXJlYWRlci5oOiAkKHNyY2Rpcikvaml0LXJl YWRlci5pbgotIAkkKFNIRUxMKSBjb25maWcuc3RhdHVzICRACi0gCi0rZ2NvcmU6ICQoc3JjZGly KS9nY29yZS5pbgotKwkkKFNIRUxMKSBjb25maWcuc3RhdHVzICRACi0rCi0gY29uZmlnLmg6IHN0 YW1wLWggOyBAdHJ1ZQotIHN0YW1wLWg6ICQoc3JjZGlyKS9jb25maWcuaW4gY29uZmlnLnN0YXR1 cwotIAlDT05GSUdfSEVBREVSUz1jb25maWcuaDpjb25maWcuaW4gXAotSW5kZXg6IGdkYi03LjYv Z2RiL05FV1MKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL05FV1MJMjAxMy0wNC0y NiAxMzo0MzozMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy42L2dkYi9ORVdTCTIwMTMtMDQt MjYgMTU6MzM6MTkuNzg0MDMyNDA0ICswMjAwCi1AQCAtMSw2ICsxLDkgQEAKLSAJCVdoYXQgaGFz IGNoYW5nZWQgaW4gR0RCPwotIAkgICAgIChPcmdhbml6ZWQgcmVsZWFzZSBieSByZWxlYXNlKQot IAotKyogTmV3bHkgaW5zdGFsbGVkICRwcmVmaXgvYmluL2djb3JlIGFjdHMgYXMgYSBzaGVsbCBp bnRlcmZhY2UgZm9yIHRoZQotKyAgR0RCIGNvbW1hbmQgZ2NvcmUuCi0rCi0gKioqIENoYW5nZXMg aW4gR0RCIDcuNgotIAotICogVGFyZ2V0IHJlY29yZCBoYXMgYmVlbiByZW5hbWVkIHRvIHJlY29y ZC1mdWxsLgotSW5kZXg6IGdkYi03LjYvZ2RiL2NvbmZpZ3VyZQotPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjYub3JpZy9nZGIvY29uZmlndXJlCTIwMTMtMDMtMTIgMjM6MjU6MzIuMDAwMDAwMDAwICsw MTAwCi0rKysgZ2RiLTcuNi9nZGIvY29uZmlndXJlCTIwMTMtMDQtMjYgMTU6MzM6MDEuMTc5MDQ5 MjQwICswMjAwCi1AQCAtNTkxLDYgKzU5MSw4IEBAIGFjX2luY2x1ZGVzX2RlZmF1bHQ9IlwKLSBl bmFibGVfb3B0aW9uX2NoZWNraW5nPW5vCi0gYWNfc3Vic3RfdmFycz0nTFRMSUJPQkpTCi0gTElC T0JKUwotK0dDT1JFX1RSQU5TRk9STV9OQU1FCi0rR0RCX1RSQU5TRk9STV9OQU1FCi0gR0RCX05N X0ZJTEUKLSBmcmFncwotIHRhcmdldF9zdWJkaXIKLUBAIC02ODEsNiArNjgzLDcgQEAgQVdLCi0g UkVQT1JUX0JVR1NfVEVYSQotIFJFUE9SVF9CVUdTX1RPCi0gUEtHVkVSU0lPTgotK0hBVkVfTkFU SVZFX0dDT1JFX1RBUkdFVAotIFRBUkdFVF9PQlMKLSBzdWJkaXJzCi0gR0RCX0RBVEFESVIKLUBA IC01MDc1LDYgKzUwNzgsNyBAQCBmaQotIAotIFRBUkdFVF9PQlM9Ci0gYWxsX3RhcmdldHM9Ci0r SEFWRV9OQVRJVkVfR0NPUkVfVEFSR0VUPQotIAotIGZvciB0YXJnX2FsaWFzIGluIGBlY2hvICR0 YXJnZXRfYWxpYXMgJGVuYWJsZV90YXJnZXRzIHwgc2VkICdzLywvIC9nJ2AKLSBkbwotQEAgLTUx MDksNiArNTExMywxMiBAQCBmaQotICAgICBpZiB0ZXN0IHgke3dhbnQ2NH0gPSB4ZmFsc2U7IHRo ZW4KLSAgICAgICAuICR7c3JjZGlyfS8uLi9iZmQvY29uZmlnLmJmZAotICAgICBmaQotKwotKyAg ICAjIENoZWNrIHdoZXRoZXIgdGhpcyB0YXJnZXQgaXMgbmF0aXZlIGFuZCBzdXBwb3J0cyBnY29y ZS4KLSsgICAgaWYgdGVzdCAkZ2RiX25hdGl2ZSA9IHllcyAtYSAiJHRhcmdfYWxpYXMiID0gIiR0 YXJnZXRfYWxpYXMiIFwKLSsgICAgICAgJiYgJGdkYl9oYXZlX2djb3JlOyB0aGVuCi0rICAgICAg SEFWRV9OQVRJVkVfR0NPUkVfVEFSR0VUPTEKLSsgICAgZmkKLSAgIGZpCi0gZG9uZQotIAotQEAg LTUxNzEsNiArNTE4MSw3IEBAIGZpCi0gCi0gCi0gCi0rCi0gIyBGb3Igb3RoZXIgc2V0dGluZ3Ms IG9ubHkgdGhlIG1haW4gdGFyZ2V0IGNvdW50cy4KLSBnZGJfc2ltPQotIGdkYl9vc2FiaT0KLUBA IC0xNDEzMSw2ICsxNDE0MiwyMSBAQCBhY19jb25maWdfbGlua3M9IiRhY19jb25maWdfbGlua3Mg JGFjX2NvCi0gJGFzX2VjaG8gIiNkZWZpbmUgR0RCX0RFRkFVTFRfSE9TVF9DSEFSU0VUIFwiVVRG LThcIiIgPj5jb25mZGVmcy5oCi0gCi0gCi0rIyBVbmRvIHRoZSAkZWNfc2NyaXB0IGVzY2FwaW5n IHN1aXRhYmxlIGZvciBNYWtlZmlsZS4KLSt0cmFuc2Zvcm09YGVjaG8gIiRwcm9ncmFtX3RyYW5z Zm9ybV9uYW1lIiB8IHNlZCAtZSAncy9cXCRcXCQvXFwkL2cnYAotK0dEQl9UUkFOU0ZPUk1fTkFN RT1gZWNobyBnZGIgfCBzZWQgLWUgIiR0cmFuc2Zvcm0iYAotK2lmIHRlc3QgIngkR0RCX1RSQU5T Rk9STV9OQU1FIiA9IHg7IHRoZW4KLSsgIEdEQl9UUkFOU0ZPUk1fTkFNRT1nZGIKLStmaQotKwot K0dDT1JFX1RSQU5TRk9STV9OQU1FPWBlY2hvIGdjb3JlIHwgc2VkIC1lICIkdHJhbnNmb3JtImAK LStpZiB0ZXN0ICJ4JEdDT1JFX1RSQU5TRk9STV9OQU1FIiA9IHg7IHRoZW4KLSsgIEdDT1JFX1RS QU5TRk9STV9OQU1FPWdjb3JlCi0rZmkKLSsKLSthY19jb25maWdfZmlsZXM9IiRhY19jb25maWdf ZmlsZXMgZ2NvcmUiCi0rCi0rCi0gYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIE1h a2VmaWxlIGdkYi1nZGIuZ2RiIGRvYy9NYWtlZmlsZSBkYXRhLWRpcmVjdG9yeS9NYWtlZmlsZSIK LSAKLSBhY19jb25maWdfY29tbWFuZHM9IiRhY19jb25maWdfY29tbWFuZHMgZGVmYXVsdCIKLUBA IC0xNDg0MSw2ICsxNDg2Nyw3IEBAIGRvCi0gICAgICJkZXBkaXIiKSBDT05GSUdfQ09NTUFORFM9 IiRDT05GSUdfQ09NTUFORFMgZGVwZGlyIiA7OwotICAgICAiaml0LXJlYWRlci5oIikgQ09ORklH X0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGppdC1yZWFkZXIuaDpqaXQtcmVhZGVyLmluIiA7OwotICAg ICAiJGFjX2NvbmZpZ19saW5rc18xIikgQ09ORklHX0xJTktTPSIkQ09ORklHX0xJTktTICRhY19j b25maWdfbGlua3NfMSIgOzsKLSsgICAgImdjb3JlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJ TEVTIGdjb3JlIiA7OwotICAgICAiTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklM RVMgTWFrZWZpbGUiIDs7Ci0gICAgICJnZGItZ2RiLmdkYiIpIENPTkZJR19GSUxFUz0iJENPTkZJ R19GSUxFUyBnZGItZ2RiLmdkYiIgOzsKLSAgICAgImRvYy9NYWtlZmlsZSIpIENPTkZJR19GSUxF Uz0iJENPTkZJR19GSUxFUyBkb2MvTWFrZWZpbGUiIDs7Ci1AQCAtMTU0NjIsNiArMTU0ODksNyBA QCAkYXNfZWNobyAiJGFzX21lOiBleGVjdXRpbmcgJGFjX2ZpbGUgY29tCi0gCi0gICBjYXNlICRh Y19maWxlJGFjX21vZGUgaW4KLSAgICAgImRlcGRpciI6QykgJFNIRUxMICRhY19hdXhfZGlyL21r aW5zdGFsbGRpcnMgJERFUERJUiA7OwotKyAgICAiZ2NvcmUiOkYpIGNobW9kICt4IGdjb3JlIDs7 Ci0gICAgICJkZWZhdWx0IjpDKQotIGNhc2UgeCRDT05GSUdfSEVBREVSUyBpbgotIHhjb25maWcu aDpjb25maWcuaW4pCi1JbmRleDogZ2RiLTcuNi9nZGIvY29uZmlndXJlLmFjCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNi5vcmlnL2dkYi9jb25maWd1cmUuYWMJMjAxMy0wMy0xMiAyMzoyNTozMi4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy42L2dkYi9jb25maWd1cmUuYWMJMjAxMy0wNC0yNiAx NTozMzowMS4xODAwNDkyMzkgKzAyMDAKLUBAIC0yMDMsNiArMjAzLDcgQEAgZmkKLSAKLSBUQVJH RVRfT0JTPQotIGFsbF90YXJnZXRzPQotK0hBVkVfTkFUSVZFX0dDT1JFX1RBUkdFVD0KLSAKLSBm b3IgdGFyZ19hbGlhcyBpbiBgZWNobyAkdGFyZ2V0X2FsaWFzICRlbmFibGVfdGFyZ2V0cyB8IHNl ZCAncy8sLyAvZydgCi0gZG8KLUBAIC0yMzYsNiArMjM3LDEyIEBAIGRvCi0gICAgIGlmIHRlc3Qg eCR7d2FudDY0fSA9IHhmYWxzZTsgdGhlbgotICAgICAgIC4gJHtzcmNkaXJ9Ly4uL2JmZC9jb25m aWcuYmZkCi0gICAgIGZpCi0rCi0rICAgICMgQ2hlY2sgd2hldGhlciB0aGlzIHRhcmdldCBpcyBu YXRpdmUgYW5kIHN1cHBvcnRzIGdjb3JlLgotKyAgICBpZiB0ZXN0ICRnZGJfbmF0aXZlID0geWVz IC1hICIkdGFyZ19hbGlhcyIgPSAiJHRhcmdldF9hbGlhcyIgXAotKyAgICAgICAmJiAkZ2RiX2hh dmVfZ2NvcmU7IHRoZW4KLSsgICAgICBIQVZFX05BVElWRV9HQ09SRV9UQVJHRVQ9MQotKyAgICBm aQotICAgZmkKLSBkb25lCi0gCi1AQCAtMjY0LDYgKzI3MSw3IEBAIGlmIHRlc3QgeCR7YWxsX3Rh cmdldHN9ID0geHRydWU7IHRoZW4KLSBmaQotIAotIEFDX1NVQlNUKFRBUkdFVF9PQlMpCi0rQUNf U1VCU1QoSEFWRV9OQVRJVkVfR0NPUkVfVEFSR0VUKQotIAotICMgRm9yIG90aGVyIHNldHRpbmdz LCBvbmx5IHRoZSBtYWluIHRhcmdldCBjb3VudHMuCi0gZ2RiX3NpbT0KLUBAIC0yMzQ5LDYgKzIz NTcsMjAgQEAgZG5sICBBdCB0aGUgbW9tZW50LCB3ZSBqdXN0IGFzc3VtZSBpdCdzCi0gQUNfREVG SU5FKEdEQl9ERUZBVUxUX0hPU1RfQ0hBUlNFVCwgIlVURi04IiwKLSAgICAgICAgICAgW0RlZmlu ZSB0byBiZSBhIHN0cmluZyBuYW1pbmcgdGhlIGRlZmF1bHQgaG9zdCBjaGFyYWN0ZXIgc2V0Ll0p Ci0gCi0rIyBVbmRvIHRoZSAkZWNfc2NyaXB0IGVzY2FwaW5nIHN1aXRhYmxlIGZvciBNYWtlZmls ZS4KLSt0cmFuc2Zvcm09YGVjaG8gIiRwcm9ncmFtX3RyYW5zZm9ybV9uYW1lIiB8IHNlZCAtZSAn cy9bXFwkXVtcXCRdL1xcJC9nJ2AKLStHREJfVFJBTlNGT1JNX05BTUU9YGVjaG8gZ2RiIHwgc2Vk IC1lICIkdHJhbnNmb3JtImAKLStpZiB0ZXN0ICJ4JEdEQl9UUkFOU0ZPUk1fTkFNRSIgPSB4OyB0 aGVuCi0rICBHREJfVFJBTlNGT1JNX05BTUU9Z2RiCi0rZmkKLStBQ19TVUJTVChHREJfVFJBTlNG T1JNX05BTUUpCi0rR0NPUkVfVFJBTlNGT1JNX05BTUU9YGVjaG8gZ2NvcmUgfCBzZWQgLWUgIiR0 cmFuc2Zvcm0iYAotK2lmIHRlc3QgIngkR0NPUkVfVFJBTlNGT1JNX05BTUUiID0geDsgdGhlbgot KyAgR0NPUkVfVFJBTlNGT1JNX05BTUU9Z2NvcmUKLStmaQotK0FDX1NVQlNUKEdDT1JFX1RSQU5T Rk9STV9OQU1FKQotK0FDX0NPTkZJR19GSUxFUyhbZ2NvcmVdLCBbY2htb2QgK3ggZ2NvcmVdKQot KwotIEFDX09VVFBVVChNYWtlZmlsZSBnZGItZ2RiLmdkYiBkb2MvTWFrZWZpbGUgZGF0YS1kaXJl Y3RvcnkvTWFrZWZpbGUsCi0gWwotIGNhc2UgeCRDT05GSUdfSEVBREVSUyBpbgotSW5kZXg6IGdk Yi03LjYvZ2RiL2NvbmZpZ3VyZS50Z3QKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2Ri L2NvbmZpZ3VyZS50Z3QJMjAxMy0wMy0wNSAxNDozNzoxMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBn ZGItNy42L2dkYi9jb25maWd1cmUudGd0CTIwMTMtMDQtMjYgMTU6MzM6MDEuMTgwMDQ5MjM5ICsw MjAwCi1AQCAtNiw2ICs2LDcgQEAKLSAjICBnZGJfc2ltCQlzaW11bGF0b3IgbGlicmFyeSBmb3Ig dGFyZ2V0Ci0gIyAgZ2RiX29zYWJpCQlkZWZhdWx0IE9TIEFCSSB0byB1c2Ugd2l0aCB0YXJnZXQK LSAjICBidWlsZF9nZGJzZXJ2ZXIJc2V0IHRvICJ5ZXMiIGlmIGdkYnNlcnZlciBzdXBwb3J0cyB0 YXJnZXQKLSsjICBnZGJfaGF2ZV9nY29yZQlzZXQgdG8gInRydWUiLyJmYWxzZSIgaWYgdGhpcyB0 YXJnZXQgY2FuIHJ1biBnY29yZQotIAotICMgTk9URTogRXZlcnkgZmlsZSBhZGRlZCB0byBhIGdk Yl90YXJnZXRfb2JzIHZhcmlhYmxlIGZvciBhbnkgdGFyZ2V0IGhlcmUKLSAjICAgICAgIG11c3Qg YWxzbyBiZSBhZGRlZCB0byBlaXRoZXIgQUxMX1RBUkdFVF9PQlMgb3IgQUxMXzY0X1RBUkdFVF9P QlMKLUBAIC03MDMsMyArNzA0LDE0IEBAIG02OCotKi1vcGVuYnNkKiB8IG04OCotKi1vcGVuYnNk KiB8IHZheC0KLSAqLSotc3ltYmlhbmVsZiopCi0gCQlnZGJfb3NhYmk9R0RCX09TQUJJX1NZTUJJ QU4gOzsKLSBlc2FjCi0rCi0rIyBDaGVjayB3aGV0aGVyIHRoaXMgdGFyZ2V0IHN1cHBvcnRzIGdj b3JlLgotKyMgU3VjaCB0YXJnZXQgaGFzIHRvIGNhbGwgc2V0X2dkYmFyY2hfZmluZF9tZW1vcnlf cmVnaW9ucy4KLStjYXNlICIgJHtnZGJfdGFyZ2V0X29ic30gIiBpbgotKyAgKiIgbGludXgtdGRl cC5vICIqKQotKyAgICBnZGJfaGF2ZV9nY29yZT10cnVlCi0rICAgIDs7Ci0rICAqKQotKyAgICBn ZGJfaGF2ZV9nY29yZT1mYWxzZQotKyAgICA7OwotK2VzYWMKLUluZGV4OiBnZGItNy42L2dkYi9j b25maWcvYWxwaGEvYWxwaGEtb3NmMy5taAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9n ZGIvY29uZmlnL2FscGhhL2FscGhhLW9zZjMubWgJMjAxMi0wMS0xMCAxNzozMDo0NC4wMDAwMDAw MDAgKzAxMDAKLSsrKyBnZGItNy42L2dkYi9jb25maWcvYWxwaGEvYWxwaGEtb3NmMy5taAkyMDEz LTA0LTI2IDE1OjMzOjAxLjE4MTA0OTIzOCArMDIwMAotQEAgLTMsNCArMyw1IEBAIE5BVF9GSUxF PSBubS1vc2YzLmgKLSBOQVRERVBGSUxFUz0gYWxwaGEtbmF0Lm8gZm9yay1jaGlsZC5vIFwKLSAJ c29saWItb3NmLm8gcHJvY2ZzLm8gcHJvYy1hcGkubyBwcm9jLWV2ZW50cy5vIHByb2MtZmxhZ3Mu byBcCi0gCXByb2Mtd2h5Lm8gZGVjLXRocmVhZC5vCi0rSEFWRV9OQVRJVkVfR0NPUkVfSE9TVCA9 IDEKLSBOQVRfQ0xJQlM9IC1scHRocmVhZGRlYnVnCi1JbmRleDogZ2RiLTcuNi9nZGIvY29uZmln L2kzODYvZmJzZC5taAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvY29uZmlnL2kz ODYvZmJzZC5taAkyMDA5LTEwLTI2IDE5OjI4OjEzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjYvZ2RiL2NvbmZpZy9pMzg2L2Zic2QubWgJMjAxMy0wNC0yNiAxNTozMzowMS4xODEwNDkyMzgg KzAyMDAKLUBAIC0zLDUgKzMsNiBAQCBOQVRERVBGSUxFUz0gZm9yay1jaGlsZC5vIGluZi1wdHJh Y2UubyBcCi0gCWZic2QtbmF0Lm8gaTM4Ni1uYXQubyBpMzg2YnNkLW5hdC5vIGkzODZmYnNkLW5h dC5vIFwKLSAJYnNkLWt2bS5vCi0gTkFUX0ZJTEU9IG5tLWZic2QuaAotK0hBVkVfTkFUSVZFX0dD T1JFX0hPU1QgPSAxCi0gCi0gTE9BRExJQkVTPSAtbGt2bQotSW5kZXg6IGdkYi03LjYvZ2RiL2Nv bmZpZy9pMzg2L2Zic2Q2NC5taAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvY29u ZmlnL2kzODYvZmJzZDY0Lm1oCTIwMTItMDItMDkgMTc6MDY6NDQuMDAwMDAwMDAwICswMTAwCi0r KysgZ2RiLTcuNi9nZGIvY29uZmlnL2kzODYvZmJzZDY0Lm1oCTIwMTMtMDQtMjYgMTU6MzM6MDEu MTgxMDQ5MjM4ICswMjAwCi1AQCAtMiw1ICsyLDYgQEAKLSBOQVRERVBGSUxFUz0gZm9yay1jaGls ZC5vIGluZi1wdHJhY2UubyBcCi0gCWZic2QtbmF0Lm8gYW1kNjQtbmF0Lm8gYW1kNjRic2QtbmF0 Lm8gYW1kNjRmYnNkLW5hdC5vIFwKLSAJYnNkLWt2bS5vIGkzODYtbmF0Lm8KLStIQVZFX05BVElW RV9HQ09SRV9IT1NUID0gMQotIAotIExPQURMSUJFUz0gLWxrdm0KLUluZGV4OiBnZGItNy42L2dk Yi9jb25maWcvaTM4Ni9pMzg2Z251Lm1oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dk Yi9jb25maWcvaTM4Ni9pMzg2Z251Lm1oCTIwMTItMDEtMTAgMTc6MzA6NDQuMDAwMDAwMDAwICsw MTAwCi0rKysgZ2RiLTcuNi9nZGIvY29uZmlnL2kzODYvaTM4NmdudS5taAkyMDEzLTA0LTI2IDE1 OjMzOjAxLjE4MTA0OTIzOCArMDIwMAotQEAgLTIsNiArMiw3IEBACi0gTkFUREVQRklMRVM9IGkz ODZnbnUtbmF0Lm8gZ251LW5hdC5vIGNvcmUtcmVnc2V0Lm8gZm9yay1jaGlsZC5vIFwKLSAJICAg ICBub3RpZnlfUy5vIHByb2Nlc3NfcmVwbHlfUy5vIG1zZ19yZXBseV9TLm8gXAotIAkgICAgIG1z Z19VLm8gZXhjX3JlcXVlc3RfVS5vIGV4Y19yZXF1ZXN0X1MubwotK0hBVkVfTkFUSVZFX0dDT1JF X0hPU1QgPSAxCi0gCi0gTkFUX0ZJTEU9IG5tLWkzODZnbnUuaAotIE1IX0NGTEFHUyA9IC1EX0dO VV9TT1VSQ0UKLUluZGV4OiBnZGItNy42L2dkYi9jb25maWcvaTM4Ni9pMzg2c29sMi5taAotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvY29uZmlnL2kzODYvaTM4NnNvbDIubWgJMjAx MC0wNC0yNiAxNTo1Mzo1Ni4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy42L2dkYi9jb25maWcv aTM4Ni9pMzg2c29sMi5taAkyMDEzLTA0LTI2IDE1OjMzOjAxLjE4MTA0OTIzOCArMDIwMAotQEAg LTEsMyArMSw0IEBACi0gIyBIb3N0OiBTb2xhcmlzIHg4NgotIE5BVERFUEZJTEVTPSBmb3JrLWNo aWxkLm8gaTM4NnY0LW5hdC5vIGkzODYtc29sMi1uYXQubyBcCi0gCXByb2Nmcy5vIHByb2MtYXBp Lm8gcHJvYy1ldmVudHMubyBwcm9jLWZsYWdzLm8gcHJvYy13aHkubwotK0hBVkVfTkFUSVZFX0dD T1JFX0hPU1QgPSAxCi1JbmRleDogZ2RiLTcuNi9nZGIvY29uZmlnL2kzODYvc29sMi02NC5taAot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvY29uZmlnL2kzODYvc29sMi02NC5taAky MDEwLTA0LTI2IDE1OjUzOjU3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjYvZ2RiL2NvbmZp Zy9pMzg2L3NvbDItNjQubWgJMjAxMy0wNC0yNiAxNTozMzowMS4xODIwNDkyMzcgKzAyMDAKLUBA IC0xLDMgKzEsNCBAQAotICMgSG9zdDogU29sYXJpcyB4ODZfNjQKLSBOQVRERVBGSUxFUz0gZm9y ay1jaGlsZC5vIGFtZDY0LW5hdC5vIGkzODZ2NC1uYXQubyBpMzg2LXNvbDItbmF0Lm8gXAotIAlw cm9jZnMubyBwcm9jLWFwaS5vIHByb2MtZXZlbnRzLm8gcHJvYy1mbGFncy5vIHByb2Mtd2h5Lm8K LStIQVZFX05BVElWRV9HQ09SRV9IT1NUID0gMQotSW5kZXg6IGdkYi03LjYvZ2RiL2NvbmZpZy9t aXBzL2lyaXg1Lm1oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dkYi9jb25maWcvbWlw cy9pcml4NS5taAkyMDEyLTAxLTEwIDE3OjMwOjQ1LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjYvZ2RiL2NvbmZpZy9taXBzL2lyaXg1Lm1oCTIwMTMtMDQtMjYgMTU6MzM6MDEuMTgyMDQ5MjM3 ICswMjAwCi1AQCAtMSwzICsxLDQgQEAKLSAjIEhvc3Q6IFNHSSBJcmlzIHJ1bm5pbmcgaXJpeCA1 LngKLSBOQVRERVBGSUxFUz0gZm9yay1jaGlsZC5vIGlyaXg1LW5hdC5vIHByb2Nmcy5vIFwKLSAJ cHJvYy1hcGkubyBwcm9jLWV2ZW50cy5vIHByb2MtZmxhZ3MubyBwcm9jLXdoeS5vCi0rSEFWRV9O QVRJVkVfR0NPUkVfSE9TVCA9IDEKLUluZGV4OiBnZGItNy42L2dkYi9jb25maWcvbWlwcy9pcml4 Ni5taAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvY29uZmlnL21pcHMvaXJpeDYu bWgJMjAxMi0wMS0xMCAxNzozMDo0NS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy42L2dkYi9j b25maWcvbWlwcy9pcml4Ni5taAkyMDEzLTA0LTI2IDE1OjMzOjAxLjE4MjA0OTIzNyArMDIwMAot QEAgLTEsMyArMSw0IEBACi0gIyBIb3N0OiBTR0kgSXJpcyBydW5uaW5nIGlyaXggNi54Ci0gTkFU REVQRklMRVM9IGZvcmstY2hpbGQubyBpcml4NS1uYXQubyBwcm9jZnMubyBcCi0gCXByb2MtYXBp Lm8gcHJvYy1ldmVudHMubyBwcm9jLWZsYWdzLm8gcHJvYy13aHkubwotK0hBVkVfTkFUSVZFX0dD T1JFX0hPU1QgPSAxCi1JbmRleDogZ2RiLTcuNi9nZGIvY29uZmlnL3Bvd2VycGMvZmJzZC5taAot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvY29uZmlnL3Bvd2VycGMvZmJzZC5taAky MDEzLTAyLTA0IDIxOjQ4OjUzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjYvZ2RiL2NvbmZp Zy9wb3dlcnBjL2Zic2QubWgJMjAxMy0wNC0yNiAxNTozMzowMS4xODIwNDkyMzcgKzAyMDAKLUBA IC0xOCw2ICsxOCw3IEBACi0gIyAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotIAotIE5BVERFUEZJTEVTPSBm YnNkLW5hdC5vIGZvcmstY2hpbGQubyBpbmYtcHRyYWNlLm8gcHBjZmJzZC1uYXQubyBic2Qta3Zt Lm8KLStIQVZFX05BVElWRV9HQ09SRV9IT1NUID0gMQotIAotIExPQURMSUJFUz0gLWxrdm0KLSAK LUluZGV4OiBnZGItNy42L2dkYi9jb25maWcvc3BhcmMvZmJzZC5taAotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjYub3JpZy9nZGIvY29uZmlnL3NwYXJjL2Zic2QubWgJMjAwOS0xMC0yNiAxOToyODox NS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy42L2dkYi9jb25maWcvc3BhcmMvZmJzZC5taAky MDEzLTA0LTI2IDE1OjMzOjAxLjE4MjA0OTIzNyArMDIwMAotQEAgLTIsNSArMiw2IEBACi0gTkFU REVQRklMRVM9IGZvcmstY2hpbGQubyBpbmYtcHRyYWNlLm8gXAotIAlmYnNkLW5hdC5vIHNwYXJj LW5hdC5vIHNwYXJjNjQtbmF0Lm8gc3BhcmM2NGZic2QtbmF0Lm8gXAotIAlic2Qta3ZtLm8KLStI QVZFX05BVElWRV9HQ09SRV9IT1NUID0gMQotIAotIExPQURMSUJFUz0gLWxrdm0KLUluZGV4OiBn ZGItNy42L2dkYi9jb25maWcvc3BhcmMvc29sMi5taAotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYu b3JpZy9nZGIvY29uZmlnL3NwYXJjL3NvbDIubWgJMjAxMi0wMS0xMCAxNzozMDo0OS4wMDAwMDAw MDAgKzAxMDAKLSsrKyBnZGItNy42L2dkYi9jb25maWcvc3BhcmMvc29sMi5taAkyMDEzLTA0LTI2 IDE1OjMzOjAxLjE4MjA0OTIzNyArMDIwMAotQEAgLTMsMyArMyw0IEBAIE5BVF9GSUxFPSBubS1z b2wyLmgKLSBOQVRERVBGSUxFUz0gc3BhcmMtc29sMi1uYXQubyBcCi0gCWNvcmUtcmVnc2V0Lm8g Zm9yay1jaGlsZC5vIFwKLSAJcHJvY2ZzLm8gcHJvYy1hcGkubyBwcm9jLWV2ZW50cy5vIHByb2Mt ZmxhZ3MubyBwcm9jLXdoeS5vCi0rSEFWRV9OQVRJVkVfR0NPUkVfSE9TVCA9IDEKLUluZGV4OiBn ZGItNy42L2dkYi9kb2MvTWFrZWZpbGUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcv Z2RiL2RvYy9NYWtlZmlsZS5pbgkyMDEzLTA0LTI2IDE1OjMyOjU4LjAwMDAwMDAwMCArMDIwMAot KysrIGdkYi03LjYvZ2RiL2RvYy9NYWtlZmlsZS5pbgkyMDEzLTA0LTI2IDE1OjMzOjAxLjE4MzA0 OTIzNSArMDIwMAotQEAgLTE3NywxMSArMTc3LDE1IEBAIFBPRDJNQU41ID0gcG9kMm1hbiAtLWNl bnRlcj0iR05VIERldmVsb3AKLSAJCSAgIC0tcmVsZWFzZT0iZ2RiLWBzZWQgcSAkKHNyY2Rpcikv Li4vdmVyc2lvbi5pbmAiIC0tc2VjdGlvbj01Ci0gCi0gIyBMaXN0IG9mIG1hbiBwYWdlcyBnZW5l cmF0ZWQgZnJvbSBnZGIudGV4aQotLU1BTjFTID0gZ2RiLjEgZ2Ric2VydmVyLjEKLStNQU4xUyA9 IGdkYi4xIGdkYnNlcnZlci4xIGdjb3JlLjEKLSBNQU41UyA9IGdkYmluaXQuNQotIE1BTlMgPSAk KE1BTjFTKSAkKE1BTjVTKQotIAotLSMjIyMgSG9zdCwgdGFyZ2V0LCBhbmQgc2l0ZSBzcGVjaWZp YyBNYWtlZmlsZSBmcmFnbWVudHMgY29tZSBpbiBoZXJlLgotKyMgSG9zdC1kZXBlbmRlbnQgbWFr ZWZpbGUgZnJhZ21lbnQgY29tZXMgaW4gaGVyZS4KLStAaG9zdF9tYWtlZmlsZV9mcmFnQAotKyMg RW5kIG9mIGhvc3QtZGVwZW5kZW50IG1ha2VmaWxlIGZyYWdtZW50Ci0rSEFWRV9OQVRJVkVfR0NP UkVfVEFSR0VUID0gQEhBVkVfTkFUSVZFX0dDT1JFX1RBUkdFVEAKLSsKLSAjIyMKLSAKLSBhbGw6 Ci1AQCAtMjY5LDYgKzI3MywxMCBAQCBpbnN0YWxsLW1hbjogaW5zdGFsbC1tYW4xIGluc3RhbGwt bWFuNQotIGluc3RhbGwtbWFuMTogJChNQU4xUykKLSAJdGVzdCAteiAiJChtYW4xZGlyKSIgfHwg JChta2luc3RhbGxkaXJzKSAiJChERVNURElSKSQobWFuMWRpcikiCi0gCUBsaXN0PSckKE1BTjFT KSc7IGZvciBwIGluICQkbGlzdDsgZG8gXAotKwkgIGlmIHRlc3QgIngkKEhBVkVfTkFUSVZFX0dD T1JFX1RBUkdFVCkkKEhBVkVfTkFUSVZFX0dDT1JFX0hPU1QpIiA9IHggXAotKwkJICAtYSAiJCRw IiA9IGdjb3JlLjE7IHRoZW4gXAotKwkgICAgY29udGludWU7IFwKLSsJICBmaTsgXAotIAkgIGlm IHRlc3QgLWYgIiQkcCI7IHRoZW4gZD07IGVsc2UgZD0iJChzcmNkaXIpLyI7IGZpOyBcCi0gCSAg Zj1gZWNobyAkJHAgfCBzZWQgLWUgJ3N8Xi4qL3x8J2A7IFwKLSAJICBlY2hvICIgJChJTlNUQUxM X0RBVEEpICckJGQkJHAnICckKERFU1RESVIpJChtYW4xZGlyKS8kJGYnIjsgXAotQEAgLTI4OCw3 ICsyOTYsMTMgQEAgdW5pbnN0YWxsLW1hbjogdW5pbnN0YWxsLW1hbjEgdW5pbnN0YWxsLQotIAot IHVuaW5zdGFsbC1tYW4xOgotIAlAdGVzdCAtbiAiJChtYW4xZGlyKSIgfHwgZXhpdCAwOyBcCi0t CWZpbGVzPWB7IGwyPSckKE1BTjFTKSc7IGZvciBpIGluICQkbDI7IGRvIGVjaG8gIiQkaSI7IGRv bmUgfCBcCi0rCWZpbGVzPWB7IGwyPSckKE1BTjFTKSc7IGZvciBpIGluICQkbDI7IGRvIFwKLSsJ ICBpZiB0ZXN0ICJ4JChIQVZFX05BVElWRV9HQ09SRV9UQVJHRVQpJChIQVZFX05BVElWRV9HQ09S RV9IT1NUKSIgPSB4IFwKLSsJCSAgLWEgIiQkaSIgPSBnY29yZS4xOyB0aGVuIFwKLSsJICAgIGNv bnRpbnVlOyBcCi0rCSAgZmk7IFwKLSsJICBlY2hvICIkJGkiOyBcCi0rCWRvbmUgfCBcCi0gCSAg c2VkIC1uICcvXC4xW2Etel0qJCQvcCc7IFwKLSAJfSB8IHNlZCAtZSAncywuKi8sLDtoO3MsLipc LiwsO3MsXlteMV1bMC05YS16XSokJCwxLDt4JyBcCi0gCSAgICAgIC1lICdzLFwuWzAtOWEtel0q JCQsLDskKHRyYW5zZm9ybSk7RztzLFxuLC4sJ2A7IFwKLUBAIC02MDUsNiArNjE5LDEzIEBAIGdk YnNlcnZlci4xOiAkKEdEQl9ET0NfRklMRVMpCi0gCQltdiAtZiAkQC5UJCQkJCAkQCkgfHwgKHJt IC1mICRALlQkJCQkICYmIGV4aXQgMSkKLSAJcm0gLWYgZ2Ric2VydmVyLnBvZAotIAotK2djb3Jl LjE6ICQoR0RCX0RPQ19GSUxFUykKLSsJdG91Y2ggJEAKLSsJLSQoVEVYSTJQT0QpICQoTUFOQ09O RikgLURnY29yZSA8ICQoc3JjZGlyKS9nZGIudGV4aW5mbyA+IGdjb3JlLnBvZAotKwktKCQoUE9E Mk1BTjEpIGdjb3JlLnBvZCB8IHNlZCAtZSAnL14uaWYgbiAubmEvZCcgPiAkQC5UJCQkJCAmJiBc Ci0rCQltdiAtZiAkQC5UJCQkJCAkQCkgfHwgKHJtIC1mICRALlQkJCQkICYmIGV4aXQgMSkKLSsJ cm0gLWYgZ2NvcmUucG9kCi0rCi0gZ2RiaW5pdC41OiAkKEdEQl9ET0NfRklMRVMpCi0gCXRvdWNo ICRACi0gCS0kKFRFWEkyUE9EKSAkKE1BTkNPTkYpIC1EZ2RiaW5pdCA8ICQoc3JjZGlyKS9nZGIu dGV4aW5mbyA+IGdkYmluaXQucG9kCi1JbmRleDogZ2RiLTcuNi9nZGIvZG9jL2dkYi50ZXhpbmZv Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMy0w NC0yNiAxNTozMjo1OC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy42L2dkYi9kb2MvZ2RiLnRl eGluZm8JMjAxMy0wNC0yNiAxNTozMzowMS4xOTEwNDkyMjkgKzAyMDAKLUBAIC00MTcwOSw2ICs0 MTcwOSw3IEBAIHN3aXRjaCAoZGllLT50YWcpCi0gQG1lbnUKLSAqIGdkYiBtYW46OiAgICAgICAg ICAgICAgICAgICAgIFRoZSBHTlUgRGVidWdnZXIgbWFuIHBhZ2UKLSAqIGdkYnNlcnZlciBtYW46 OiAgICAgICAgICAgICAgIFJlbW90ZSBTZXJ2ZXIgZm9yIHRoZSBHTlUgRGVidWdnZXIgbWFuIHBh Z2UKLSsqIGdjb3JlIG1hbjo6ICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlIGEgY29yZSBmaWxl IG9mIGEgcnVubmluZyBwcm9ncmFtCi0gKiBnZGJpbml0IG1hbjo6ICAgICAgICAgICAgICAgICBn ZGJpbml0IHNjcmlwdHMKLSBAZW5kIG1lbnUKLSAKLUBAIC00MjIzMCw2ICs0MjIzMSw1MyBAQCBp bmZvIGdkYgotIHNob3VsZCBnaXZlIHlvdSBhY2Nlc3MgdG8gdGhlIGNvbXBsZXRlIG1hbnVhbC4K LSAKLSBAY2l0ZXtVc2luZyBHREI6IEEgR3VpZGUgdG8gdGhlIEdOVSBTb3VyY2UtTGV2ZWwgRGVi dWdnZXJ9LAotK1JpY2hhcmQgTS4gU3RhbGxtYW4gYW5kIFJvbGFuZCBILiBQZXNjaCwgSnVseSAx OTkxLgotK0BlbmQgaWZzZXQKLStAYyBtYW4gZW5kCi0rCi0rQG5vZGUgZ2NvcmUgbWFuCi0rQGhl YWRpbmcgZ2NvcmUKLSsKLStAYyBtYW4gdGl0bGUgZ2NvcmUgR2VuZXJhdGUgYSBjb3JlIGZpbGUg b2YgYSBydW5uaW5nIHByb2dyYW0KLSsKLStAZm9ybWF0Ci0rQGMgbWFuIGJlZ2luIFNZTk9QU0lT IGdjb3JlCi0rZ2NvcmUgWy1vIEB2YXJ7ZmlsZW5hbWV9XSBAdmFye3BpZH0KLStAYyBtYW4gZW5k Ci0rQGVuZCBmb3JtYXQKLSsKLStAYyBtYW4gYmVnaW4gREVTQ1JJUFRJT04gZ2NvcmUKLStHZW5l cmF0ZSBhIGNvcmUgZHVtcCBvZiBhIHJ1bm5pbmcgcHJvZ3JhbSB3aXRoIHByb2Nlc3MgSUQgQHZh cntwaWR9LgotK1Byb2R1Y2VkIGZpbGUgaXMgZXF1aXZhbGVudCB0byBhIGtlcm5lbCBwcm9kdWNl ZCBjb3JlIGZpbGUgYXMgaWYgdGhlIHByb2Nlc3MKLStjcmFzaGVkIChhbmQgaWYgQGtiZHt1bGlt aXQgLWN9IHdlcmUgdXNlZCB0byBzZXQgdXAgYW4gYXBwcm9wcmlhdGUgY29yZSBkdW1wCi0rbGlt aXQpLiAgVW5saWtlIGFmdGVyIGEgY3Jhc2gsIGFmdGVyIEBjb21tYW5ke2djb3JlfSB0aGUgcHJv Z3JhbSByZW1haW5zCi0rcnVubmluZyB3aXRob3V0IGFueSBjaGFuZ2UuCi0rQGMgbWFuIGVuZAot KwotK0BjIG1hbiBiZWdpbiBPUFRJT05TIGdjb3JlCi0rQHRhYmxlIEBlbnYKLStAaXRlbSAtbyBA dmFye2ZpbGVuYW1lfQotK1RoZSBvcHRpb25hbCBhcmd1bWVudAotK0B2YXJ7ZmlsZW5hbWV9IHNw ZWNpZmllcyB0aGUgZmlsZSBuYW1lIHdoZXJlIHRvIHB1dCB0aGUgY29yZSBkdW1wLgotK0lmIG5v dCBzcGVjaWZpZWQsIHRoZSBmaWxlIG5hbWUgZGVmYXVsdHMgdG8gQGZpbGV7Y29yZS5AdmFye3Bp ZH19LAotK3doZXJlIEB2YXJ7cGlkfSBpcyB0aGUgcnVubmluZyBwcm9ncmFtIHByb2Nlc3MgSUQu Ci0rQGVuZCB0YWJsZQotK0BjIG1hbiBlbmQKLSsKLStAYyBtYW4gYmVnaW4gU0VFQUxTTyBnY29y ZQotK0BpZnNldCBtYW4KLStUaGUgZnVsbCBkb2N1bWVudGF0aW9uIGZvciBAdmFsdWV7R0RCTn0g aXMgbWFpbnRhaW5lZCBhcyBhIFRleGluZm8gbWFudWFsLgotK0lmIHRoZSBAY29kZXtpbmZvfSBh bmQgQGNvZGV7Z2RifSBwcm9ncmFtcyBhbmQgQHZhbHVle0dEQk59J3MgVGV4aW5mbwotK2RvY3Vt ZW50YXRpb24gYXJlIHByb3Blcmx5IGluc3RhbGxlZCBhdCB5b3VyIHNpdGUsIHRoZSBjb21tYW5k Ci0rCi0rQHNtYWxsZXhhbXBsZQotK2luZm8gZ2RiCi0rQGVuZCBzbWFsbGV4YW1wbGUKLSsKLStA bm9pbmRlbnQKLStzaG91bGQgZ2l2ZSB5b3UgYWNjZXNzIHRvIHRoZSBjb21wbGV0ZSBtYW51YWwu Ci0rCi0rQGNpdGV7VXNpbmcgR0RCOiBBIEd1aWRlIHRvIHRoZSBHTlUgU291cmNlLUxldmVsIERl YnVnZ2VyfSwKLSBSaWNoYXJkIE0uIFN0YWxsbWFuIGFuZCBSb2xhbmQgSC4gUGVzY2gsIEp1bHkg MTk5MS4KLSBAZW5kIGlmc2V0Ci0gQGMgbWFuIGVuZAoKZGlmZiAtLWdpdCBhL2dkYi11cHN0cmVh bS1tYW4tZ2NvcmUtMm9mMi5wYXRjaCBiL2dkYi11cHN0cmVhbS1tYW4tZ2NvcmUtMm9mMi5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZThiNmNlMS4uMDAwMDAwMAotLS0gYS9n ZGItdXBzdHJlYW0tbWFuLWdjb3JlLTJvZjIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyAr MCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEzLTA0L21zZzAwMTEw Lmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTMvMDQvMTEgMTQ6MTM6NDIJMS4xNTM5 OAotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTMvMDQvMTEgMTY6NTM6MDEJMS4xNTM5OQotIyMg LTIyLDYgKzIyLDkgQEAKLSAJKiBnY29yZS5pbjogLi4uIGhlcmUuICBSZW1vdmUgZ2NvcmUuc2gg Y29tbWVudC4gIFVzZSBHREJfVFJBTlNGT1JNX05BTUUKLSAJYW5kIEdDT1JFX1RSQU5TRk9STV9O QU1FIHN1YnN0aXR1dGlvbnMuCi0gCi0rCUZpeCBwYXJzaW5nIHRhYnMgaW4gJHtnZGJfdGFyZ2V0 X29ic30uCi0rCSogY29uZmlndXJlLnRndCAoZ2RiX2hhdmVfZ2NvcmUpOiBSZXBsYWNlIGNhc2Ug d2l0aCBmb3IgYW5kIGlmLgotKwotIDIwMTMtMDQtMTEgIEphbiBLcmF0b2NodmlsICA8amFuLmty YXRvY2h2aWxAcmVkaGF0LmNvbT4KLSAKLSAJKiByZW1vdGUuYyAodW5wdXNoX2FuZF9wZXJyb3Ip OiBBZGQgb3V0cHV0IG1lc3NhZ2UgZmluYWwgZG90LgotLS0tIHNyYy9nZGIvY29uZmlndXJlLnRn dAkyMDEzLzA0LzExIDE0OjEzOjQzCTEuMjczCi0rKysgc3JjL2dkYi9jb25maWd1cmUudGd0CTIw MTMvMDQvMTEgMTY6NTM6MDEJMS4yNzQKLUBAIC03MDcsMTEgKzcwNyw5IEBACi0gCi0gIyBDaGVj ayB3aGV0aGVyIHRoaXMgdGFyZ2V0IHN1cHBvcnRzIGdjb3JlLgotICMgU3VjaCB0YXJnZXQgaGFz IHRvIGNhbGwgc2V0X2dkYmFyY2hfZmluZF9tZW1vcnlfcmVnaW9ucy4KLS1jYXNlICIgJHtnZGJf dGFyZ2V0X29ic30gIiBpbgotLSAgKiIgbGludXgtdGRlcC5vICIqKQotK2dkYl9oYXZlX2djb3Jl PWZhbHNlCi0rZm9yIHQgaW4geCAke2dkYl90YXJnZXRfb2JzfTsgZG8KLSsgIGlmIHRlc3QgIiR0 IiA9IGxpbnV4LXRkZXAubzsgdGhlbgotICAgICBnZGJfaGF2ZV9nY29yZT10cnVlCi0tICAgIDs7 Ci0tICAqKQotLSAgICBnZGJfaGF2ZV9nY29yZT1mYWxzZQotLSAgICA7OwotLWVzYWMKLSsgIGZp Ci0rZG9uZQoKZGlmZiAtLWdpdCBhL2dkYi11cHN0cmVhbS5wYXRjaCBiL2dkYi11cHN0cmVhbS5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQ3NjY1Yy4uMDAwMDAwMAotLS0g YS9nZGItdXBzdHJlYW0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzQzICswLDAgQEAKLWh0 dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTMtMDQvbXNnMDAwNTYuaHRtbAotCi0j IyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMy8wNC8wNSAxOToxNzoxNQkxLjE1MzcwCi0jIyMgc3Jj L2dkYi9DaGFuZ2VMb2cJMjAxMy8wNC8wNSAyMDowMTozMgkxLjE1MzcxCi0jIyAtMSw1ICsxLDEy IEBACi0gMjAxMy0wNC0wNSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQu Y29tPgotIAotKwlDb252ZXJ0IG1hbiBwYWdlcyB0byB0ZXhpbmZvLCBuZXcgZ2RiaW5pdC41IHRl eGluZm8gcGFnZS4KLSsJKiBNYWtlZmlsZS5pbiAoZ2RiLnopOiBSZW1vdmUuCi0rCShpbnN0YWxs LW9ubHkpOiBSZW1vdmUgJChtYW4xZGlyKSBhbmQgZ2RiLjEgaW5zdGFsbGF0aW9uLgotKwkqIGdk Yi4xOiBSZW1vdmUuCi0rCi0rMjAxMy0wNC0wNSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPgotKwotIAlGaXggY29tcGF0aWJpbGl0eSB3aXRoIExpbnV4IGtlcm5l bCAzLjguMy4KLSAJKiBsaW51eC10ZGVwLmMgKGxpbnV4X2ZpbmRfbWVtb3J5X3JlZ2lvbnNfZnVs bCk6IE1vdmUgdmFyaWFibGUgbnVtYmVyCi0gCXRvIG1vcmUgaW5uZXIgYmxvY2suICBSZW1vdmUg cGFyc2luZyBvZiBOVU1CRVIgZnJvbSBvdXRlciBibG9jay4KLS0tLSBzcmMvZ2RiL01ha2VmaWxl LmluCTIwMTMvMDQvMDUgMTM6MjQ6MjQJMS4xMjQ2Ci0rKysgc3JjL2dkYi9NYWtlZmlsZS5pbgky MDEzLzA0LzA1IDIwOjAxOjMzCTEuMTI0NwotQEAgLTEwMTksMTEgKzEwMTksNiBAQAotIGluZm8g aW5zdGFsbC1pbmZvIGNsZWFuLWluZm8gZHZpIHBkZiBpbnN0YWxsLXBkZiBodG1sIGluc3RhbGwt aHRtbDogZm9yY2UKLSAJQCQoTUFLRSkgJChGTEFHU19UT19QQVNTKSBETz0kQCAiRE9ESVJTPSQo U1VCRElSUykiIHN1YmRpcl9kbwotIAotLWdkYi56OmdkYi4xCi0tCW5yb2ZmIC1tYW4gJChzcmNk aXIpL2dkYi4xIHwgY29sIC1iID4gZ2RiLnQKLS0JcGFjayBnZGIudCA7IHJtIC1mIGdkYi50Ci0t CW12IGdkYi50LnogZ2RiLnoKLS0KLSAjIFRyYWRpdGlvbmFsbHkgImluc3RhbGwiIGRlcGVuZHMg b24gImFsbCIuICBCdXQgaXQgbWF5IGJlIHVzZWZ1bAotICMgbm90IHRvOyBmb3IgZXhhbXBsZSwg aWYgdGhlIHVzZXIgaGFzIG1hZGUgc29tZSB0cml2aWFsIGNoYW5nZSB0byBhCi0gIyBzb3VyY2Ug ZmlsZSBhbmQgZG9lc24ndCBjYXJlIGFib3V0IHJlYnVpbGRpbmcgb3IganVzdCB3YW50cyB0byBz YXZlIHRoZQotQEAgLTEwNDMsMTAgKzEwMzgsNiBAQAotIAkJJChTSEVMTCkgJChzcmNkaXIpLy4u L21raW5zdGFsbGRpcnMgJChERVNURElSKSQoYmluZGlyKSA7IFwKLSAJCSQoSU5TVEFMTF9QUk9H UkFNKSBnZGIkKEVYRUVYVCkgXAotIAkJCSQoREVTVERJUikkKGJpbmRpcikvJCR0cmFuc2Zvcm1l ZF9uYW1lJChFWEVFWFQpIDsgXAotLQkJJChTSEVMTCkgJChzcmNkaXIpLy4uL21raW5zdGFsbGRp cnMgXAotLQkJCSQoREVTVERJUikkKG1hbjFkaXIpIDsgXAotLQkJJChJTlNUQUxMX0RBVEEpICQo c3JjZGlyKS9nZGIuMSBcCi0tCQkJJChERVNURElSKSQobWFuMWRpcikvJCR0cmFuc2Zvcm1lZF9u YW1lLjEgOyBcCi0gCQkkKFNIRUxMKSAkKHNyY2RpcikvLi4vbWtpbnN0YWxsZGlycyAkKERFU1RE SVIpJChpbmNsdWRlZGlyKS9nZGIgOyBcCi0gCQkkKElOU1RBTExfREFUQSkgaml0LXJlYWRlci5o ICQoREVTVERJUikkKGluY2x1ZGVkaXIpL2dkYi9qaXQtcmVhZGVyLmgKLSAJQCQoTUFLRSkgRE89 aW5zdGFsbCAiRE9ESVJTPSQoU1VCRElSUykiICQoRkxBR1NfVE9fUEFTUykgc3ViZGlyX2RvCi0j IyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTMvMDQvMDIgMTc6NTI6MDgJMS4xNDMyCi0jIyMg c3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTMvMDQvMDUgMjA6MDE6MzMJMS4xNDMzCi0jIyAtMSwz ICsxLDIyIEBACi0rMjAxMy0wNC0wNSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEBy ZWRoYXQuY29tPgotKwotKwlDb252ZXJ0IG1hbiBwYWdlcyB0byB0ZXhpbmZvLCBuZXcgZ2RiaW5p dC41IHRleGluZm8gcGFnZS4KLSsJKiBNYWtlZmlsZS5pbiAobWFuZGlyLCBtYW4xZGlyLCBtYW41 ZGlyLCBTWVNURU1fR0RCSU5JVCwgTUFOQ09ORiwKLSsJKFRFWEkyUE9ELCBQT0QyTUFOMSwgUE9E Mk1BTjUsIE1BTjFTLCBNQU41UywgTUFOUywgbWFuKTogTmV3LgotKwkoZGlzdHN0dWZmKTogQWRk IG1hbi4KLSsJKGluc3RhbGwtbWFuLCBpbnN0YWxsLW1hbjEsIGluc3RhbGwtbWFuNSwgdW5pbnN0 YWxsLW1hbiwgdW5pbnN0YWxsLW1hbjEpCi0rCSh1bmluc3RhbGwtbWFuNSk6IE5ldy4KLSsJKFNU QUdFU1RVRkYpOiBBZGQgKi4xIGFuZCAqLjUuCi0rCShHREJ2bi50ZXhpKTogQWRkIFNZU1RFTV9H REJJTklULgotKwkoZ2RiLjEsIGdkYnNlcnZlci4xLCBnZGJpbml0LjUpOiBOZXcuCi0rCShtYWlu dGFpbmVyLWNsZWFuIHJlYWxjbGVhbik6IEFkZCAkKE1BTlMpLgotKwkoaW5zdGFsbCk6IEFkZCBp bnN0YWxsLW1hbi4KLSsJKHVuaW5zdGFsbCk6IEFkZCB1bmluc3RhbGwtbWFuLgotKwkqIGdkYi50 ZXhpbmZvIChAaW5jbHVkZSBnZGItY2ZnLnRleGkpOiBXcmFwIGl0IGJ5IEBjIG1hbiBiZWdpbiBJ TkNMVURFLgotKwkoQGNvcHlpbmcpOiBXcmFwIGl0IGJ5IEBjIG1hbiBiZWdpbiBDT1BZUklHSFQu Ci0rCShUb3ApOiBBZGQgTWFuIFBhZ2VzLgotKwkoTWFuIFBhZ2VzLCBnZGIgbWFuLCBnZGJzZXJ2 ZXIgbWFuLCBnZGJpbml0IG1hbik6IE5ldy4KLSsKLSAyMDEzLTA0LTAyICBQZWRybyBBbHZlcyAg PHBhbHZlc0ByZWRoYXQuY29tPgotIAotIAkqIGdkYi50ZXhpbmZvIChEZWJ1Z2dpbmcgT3V0cHV0 KTogRG9jdW1lbnQgInNldC9zaG93IGRlYnVnCi0tLS0gc3JjL2dkYi9kb2MvTWFrZWZpbGUuaW4J MjAxMy8wMS8wMSAwNjozMjo1NgkxLjU3Ci0rKysgc3JjL2dkYi9kb2MvTWFrZWZpbGUuaW4JMjAx My8wNC8wNSAyMDowMTozMwkxLjU4Ci1AQCAtMjYsNiArMjYsOSBAQAotIGRvY2RpciA9IEBkb2Nk aXJACi0gcGRmZGlyID0gQHBkZmRpckAKLSBodG1sZGlyID0gQGh0bWxkaXJACi0rbWFuZGlyID0g QG1hbmRpckAKLSttYW4xZGlyID0gJChtYW5kaXIpL21hbjEKLSttYW41ZGlyID0gJChtYW5kaXIp L21hbjUKLSAKLSBTSEVMTCA9IEBTSEVMTEAKLSAKLUBAIC0zNSw2ICszOCw4IEBACi0gSU5TVEFM TF9QUk9HUkFNID0gQElOU1RBTExfUFJPR1JBTUAKLSBJTlNUQUxMX0RBVEEgPSBASU5TVEFMTF9E QVRBQAotIAotK1NZU1RFTV9HREJJTklUID0gQFNZU1RFTV9HREJJTklUQAotKwotIG1raW5zdGFs bGRpcnMgPSAkKFNIRUxMKSAkKHNyY2RpcikvLi4vLi4vbWtpbnN0YWxsZGlycwotIAotICMgbWFp biBHREIgc291cmNlIGRpcmVjdG9yeQotQEAgLTE2MCw2ICsxNjUsMjIgQEAKLSAJJChBTk5PVEFU RV9ET0NfU09VUkNFX0lOQ0xVREVTKSBcCi0gCSQoQU5OT1RBVEVfRE9DX0JVSUxEX0lOQ0xVREVT KQotIAotKyMgT3B0aW9ucyB0byBleHRyYWN0IHRoZSBtYW4gcGFnZSBmcm9tIGdkYi50ZXhpbmZv Ci0rTUFOQ09ORiA9IC1EbWFuCi0rCi0rVEVYSTJQT0QgPSBwZXJsICQoc3JjZGlyKS8uLi8uLi9l dGMvdGV4aTJwb2QucGwgXAotKwkJJChNQUtFSU5GT0ZMQUdTKSAkKE1BS0VJTkZPX0VYVFJBX0ZM QUdTKQotKwotK1BPRDJNQU4xID0gcG9kMm1hbiAtLWNlbnRlcj0iR05VIERldmVsb3BtZW50IFRv b2xzIiBcCi0rCQkgICAtLXJlbGVhc2U9ImdkYi0kKFZFUlNJT04pIiAtLXNlY3Rpb249MQotK1BP RDJNQU41ID0gcG9kMm1hbiAtLWNlbnRlcj0iR05VIERldmVsb3BtZW50IFRvb2xzIiBcCi0rCQkg ICAtLXJlbGVhc2U9ImdkYi0kKFZFUlNJT04pIiAtLXNlY3Rpb249NQotKwotKyMgTGlzdCBvZiBt YW4gcGFnZXMgZ2VuZXJhdGVkIGZyb20gZ2RiLnRleGkKLStNQU4xUyA9IGdkYi4xIGdkYnNlcnZl ci4xCi0rTUFONVMgPSBnZGJpbml0LjUKLStNQU5TID0gJChNQU4xUykgJChNQU41UykKLSsKLSAj IyMjIEhvc3QsIHRhcmdldCwgYW5kIHNpdGUgc3BlY2lmaWMgTWFrZWZpbGUgZnJhZ21lbnRzIGNv bWUgaW4gaGVyZS4KLSAjIyMKLSAKLUBAIC0xNzAsOCArMTkxLDkgQEAKLSBwczogZ2RiLnBzIGdk YmludC5wcyBzdGFicy5wcyByZWZjYXJkLnBzIGFubm90YXRlLnBzCi0gaHRtbDogJChIVE1MRklM RVMpCi0gcGRmOiAkKFBERkZJTEVTKQotK21hbjogJChNQU5TKQotIGFsbC1kb2M6IGluZm8gZHZp IHBzICMgcGRmCi0tZGlzdHN0dWZmOiBpbmZvCi0rZGlzdHN0dWZmOiBpbmZvIG1hbgotIAlybSAt ZiBnZGItY2ZnLnRleGkgR0RCdm4udGV4aQotIAotIGluc3RhbGwtaW5mbzogJChJTkZPX0RFUFMp Ci1AQCAtMjQyLDcgKzI2NCw0OSBAQAotIAkgICQoSU5TVEFMTF9EQVRBKSAiJCRkJCRwIiAiJChE RVNURElSKSQocGRmZGlyKS8kJGYiOyBcCi0gCWRvbmUKLSAKLS1TVEFHRVNUVUZGID0gKi5pbmZv KiBnZGItYWxsLnRleGkgR0RCdm4udGV4aSAqLnBzICouZHZpICoucGRmCi0raW5zdGFsbC1tYW46 IGluc3RhbGwtbWFuMSBpbnN0YWxsLW1hbjUKLSsKLStpbnN0YWxsLW1hbjE6ICQoTUFOMVMpCi0r CXRlc3QgLXogIiQobWFuMWRpcikiIHx8ICQobWtpbnN0YWxsZGlycykgIiQoREVTVERJUikkKG1h bjFkaXIpIgotKwlAbGlzdD0nJChNQU5TKSc7IGZvciBwIGluICQkbGlzdDsgZG8gXAotKwkgIGlm IHRlc3QgLWYgIiQkcCI7IHRoZW4gZD07IGVsc2UgZD0iJChzcmNkaXIpLyI7IGZpOyBcCi0rCSAg Zj1gZWNobyAkJHAgfCBzZWQgLWUgJ3N8Xi4qL3x8J2A7IFwKLSsJICBlY2hvICIgJChJTlNUQUxM X0RBVEEpICckJGQkJHAnICckKERFU1RESVIpJChtYW4xZGlyKS8kJGYnIjsgXAotKwkgICQoSU5T VEFMTF9EQVRBKSAiJCRkJCRwIiAiJChERVNURElSKSQobWFuMWRpcikvJCRmIjsgXAotKwlkb25l Ci0rCi0raW5zdGFsbC1tYW41OiAkKE1BTjVTKQotKwl0ZXN0IC16ICIkKG1hbjVkaXIpIiB8fCAk KG1raW5zdGFsbGRpcnMpICIkKERFU1RESVIpJChtYW41ZGlyKSIKLSsJQGxpc3Q9JyQoTUFOUykn OyBmb3IgcCBpbiAkJGxpc3Q7IGRvIFwKLSsJICBpZiB0ZXN0IC1mICIkJHAiOyB0aGVuIGQ9OyBl bHNlIGQ9IiQoc3JjZGlyKS8iOyBmaTsgXAotKwkgIGY9YGVjaG8gJCRwIHwgc2VkIC1lICdzfF4u Ki98fCdgOyBcCi0rCSAgZWNobyAiICQoSU5TVEFMTF9EQVRBKSAnJCRkJCRwJyAnJChERVNURElS KSQobWFuNWRpcikvJCRmJyI7IFwKLSsJICAkKElOU1RBTExfREFUQSkgIiQkZCQkcCIgIiQoREVT VERJUikkKG1hbjVkaXIpLyQkZiI7IFwKLSsJZG9uZQotKwotK3VuaW5zdGFsbC1tYW46IHVuaW5z dGFsbC1tYW4xIHVuaW5zdGFsbC1tYW41Ci0rCi0rdW5pbnN0YWxsLW1hbjE6Ci0rCUB0ZXN0IC1u ICIkKG1hbjFkaXIpIiB8fCBleGl0IDA7IFwKLSsJZmlsZXM9YHsgbDI9JyQoTUFOUyknOyBmb3Ig aSBpbiAkJGwyOyBkbyBlY2hvICIkJGkiOyBkb25lIHwgXAotKwkgIHNlZCAtbiAnL1wuMVthLXpd KiQkL3AnOyBcCi0rCX0gfCBzZWQgLWUgJ3MsLiovLCw7aDtzLC4qXC4sLDtzLF5bXjFdWzAtOWEt el0qJCQsMSw7eCcgXAotKwkgICAgICAtZSAncyxcLlswLTlhLXpdKiQkLCw7JCh0cmFuc2Zvcm0p O0c7cyxcbiwuLCdgOyBcCi0rCXRlc3QgLXogIiQkZmlsZXMiIHx8IHsgXAotKwkgIGVjaG8gIiAo IGNkICckKERFU1RESVIpJChtYW4xZGlyKScgJiYgcm0gLWYiICQkZmlsZXMgIikiOyBcCi0rCSAg Y2QgIiQoREVTVERJUikkKG1hbjFkaXIpIiAmJiBybSAtZiAkJGZpbGVzOyB9Ci0rCi0rdW5pbnN0 YWxsLW1hbjU6Ci0rCUB0ZXN0IC1uICIkKG1hbjVkaXIpIiB8fCBleGl0IDA7IFwKLSsJZmlsZXM9 YHsgbDI9JyQoTUFOUyknOyBmb3IgaSBpbiAkJGwyOyBkbyBlY2hvICIkJGkiOyBkb25lIHwgXAot KwkgIHNlZCAtbiAnL1wuNVthLXpdKiQkL3AnOyBcCi0rCX0gfCBzZWQgLWUgJ3MsLiovLCw7aDtz LC4qXC4sLDtzLF5bXjVdWzAtOWEtel0qJCQsNSw7eCcgXAotKwkgICAgICAtZSAncyxcLlswLTlh LXpdKiQkLCw7JCh0cmFuc2Zvcm0pO0c7cyxcbiwuLCdgOyBcCi0rCXRlc3QgLXogIiQkZmlsZXMi IHx8IHsgXAotKwkgIGVjaG8gIiAoIGNkICckKERFU1RESVIpJChtYW41ZGlyKScgJiYgcm0gLWYi ICQkZmlsZXMgIikiOyBcCi0rCSAgY2QgIiQoREVTVERJUikkKG1hbjVkaXIpIiAmJiBybSAtZiAk JGZpbGVzOyB9Ci0rCi0rU1RBR0VTVFVGRiA9ICouaW5mbyogZ2RiLWFsbC50ZXhpIEdEQnZuLnRl eGkgKi5wcyAqLmR2aSAqLnBkZiAqLjEgKi41Ci0gCi0gIyBDb3B5IHRoZSBvYmplY3QgZmlsZXMg ZnJvbSBhIHBhcnRpY3VsYXIgc3RhZ2UgaW50byBhIHN1YmRpcmVjdG9yeS4KLSBzdGFnZTE6IGZv cmNlCi1AQCAtMzEzLDYgKzM3Nyw5IEBACi0gCWlmIHRlc3QgLXogIiQoUkVBRExJTkVfVEVYSV9J TkNGTEFHKSI7IHRoZW4gXAotIAkgIGVjaG8gIkBzZXQgU1lTVEVNX1JFQURMSU5FIiA+PiAuL0dE QnZuLm5ldzsgXAotIAlmaQotKwlpZiBbIC1uICIkKFNZU1RFTV9HREJJTklUKSIgXTsgdGhlbiBc Ci0rCSAgZWNobyAiQHNldCBTWVNURU1fR0RCSU5JVCAkKFNZU1RFTV9HREJJTklUKSIgPj4gLi9H REJ2bi5uZXc7IFwKLSsJZmkKLSAJbXYgR0RCdm4ubmV3IEdEQnZuLnRleGkKLSAKLSAjIFVwZGF0 ZWQgYXRvbWljYWxseQotQEAgLTUyMyw2ICs1OTAsMjggQEAKLSBhbm5vdGF0ZS9pbmRleC5odG1s OiAkKEFOTk9UQVRFX0RPQ19GSUxFUykKLSAJJChNQUtFSFRNTCkgJChNQUtFSFRNTEZMQUdTKSAt SSAkKHNyY2RpcikgJChzcmNkaXIpL2Fubm90YXRlLnRleGluZm8KLSAKLSsjIE1hbiBwYWdlcwot K2dkYi4xOiAkKEdEQl9ET0NfRklMRVMpCi0rCXRvdWNoICRACi0rCS0kKFRFWEkyUE9EKSAkKE1B TkNPTkYpIC1EZ2RiIDwgZ2RiLnRleGluZm8gPiBnZGIucG9kCi0rCS0oJChQT0QyTUFOMSkgZ2Ri LnBvZCB8IHNlZCAtZSAnL14uaWYgbiAubmEvZCcgPiAkQC5UJCQkJCAmJiBcCi0rCQltdiAtZiAk QC5UJCQkJCAkQCkgfHwgKHJtIC1mICRALlQkJCQkICYmIGV4aXQgMSkKLSsJcm0gLWYgZ2RiLnBv ZAotKwotK2dkYnNlcnZlci4xOiAkKEdEQl9ET0NfRklMRVMpCi0rCXRvdWNoICRACi0rCS0kKFRF WEkyUE9EKSAkKE1BTkNPTkYpIC1EZ2Ric2VydmVyIDwgZ2RiLnRleGluZm8gPiBnZGJzZXJ2ZXIu cG9kCi0rCS0oJChQT0QyTUFOMSkgZ2Ric2VydmVyLnBvZCB8IHNlZCAtZSAnL14uaWYgbiAubmEv ZCcgPiAkQC5UJCQkJCAmJiBcCi0rCQltdiAtZiAkQC5UJCQkJCAkQCkgfHwgKHJtIC1mICRALlQk JCQkICYmIGV4aXQgMSkKLSsJcm0gLWYgZ2Ric2VydmVyLnBvZAotKwotK2dkYmluaXQuNTogJChH REJfRE9DX0ZJTEVTKQotKwl0b3VjaCAkQAotKwktJChURVhJMlBPRCkgJChNQU5DT05GKSAtRGdk YmluaXQgPCBnZGIudGV4aW5mbyA+IGdkYmluaXQucG9kCi0rCS0oJChQT0QyTUFONSkgZ2RiaW5p dC5wb2QgfCBzZWQgLWUgJy9eLmlmIG4gLm5hL2QnID4gJEAuVCQkJCQgJiYgXAotKwkJbXYgLWYg JEAuVCQkJCQgJEApIHx8IChybSAtZiAkQC5UJCQkJCAmJiBleGl0IDEpCi0rCXJtIC1mIGdkYmlu aXQucG9kCi0rCi0gZm9yY2U6Ci0gCi0gTWFrZWZpbGU6IE1ha2VmaWxlLmluICQoaG9zdF9tYWtl ZmlsZV9mcmFnKSAuLi9jb25maWcuc3RhdHVzCi1AQCAtNTUxLDggKzY0MCw4IEBACi0gIyAiY2xl YW4iIG9yICJkaXN0Y2xlYW4iLiAgVXNlIG1haW50YWluZXItY2xlYW4gdG8gcmVtb3ZlIHRoZW0u Ci0gCi0gbWFpbnRhaW5lci1jbGVhbiByZWFsY2xlYW46IGRpc3RjbGVhbgotLQlybSAtZiBHREJ2 bi50ZXhpICouaW5mbyogKi5kdmkgKi5wcyAqLmh0bWwgKi5wZGYKLSsJcm0gLWYgR0RCdm4udGV4 aSAqLmluZm8qICouZHZpICoucHMgKi5odG1sICoucGRmICQoTUFOUykKLSAKLS1pbnN0YWxsOiBp bnN0YWxsLWluZm8KLStpbnN0YWxsOiBpbnN0YWxsLWluZm8gaW5zdGFsbC1tYW4KLSAKLS11bmlu c3RhbGw6IHVuaW5zdGFsbC1pbmZvCi0rdW5pbnN0YWxsOiB1bmluc3RhbGwtaW5mbyB1bmluc3Rh bGwtbWFuCi0tLS0gc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMy8wNC8wMiAxNzo1MjowOAkx LjEwNjkKLSsrKyBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEzLzA0LzA1IDIwOjAxOjMzCTEu MTA3MAotQEAgLTYsNyArNiw5IEBACi0gQGMgb2YgQHNldCB2YXJzLiAgSG93ZXZlciwgeW91IGNh biBvdmVycmlkZSBmaWxlbmFtZSB3aXRoIG1ha2VpbmZvIC1vLgotIEBzZXRmaWxlbmFtZSBnZGIu aW5mbwotIEBjCi0rQGMgbWFuIGJlZ2luIElOQ0xVREUKLSBAaW5jbHVkZSBnZGItY2ZnLnRleGkK LStAYyBtYW4gZW5kCi0gQGMKLSBAc2V0dGl0bGUgRGVidWdnaW5nIHdpdGggQHZhbHVle0dEQk59 Ci0gQHNldGNoYXB0ZXJuZXdwYWdlIG9kZAotQEAgLTQ2LDYgKzQ4LDcgQEAKLSBAZW5kIGRpcmVu dHJ5Ci0gCi0gQGNvcHlpbmcKLStAYyBtYW4gYmVnaW4gQ09QWVJJR0hUCi0gQ29weXJpZ2h0IEBj b3B5cmlnaHR7fSAxOTg4LTIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0g UGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0 aGlzIGRvY3VtZW50Ci1AQCAtNTgsNiArNjEsNyBAQAotIChhKSBUaGUgRlNGJ3MgQmFjay1Db3Zl ciBUZXh0IGlzOiBgYFlvdSBhcmUgZnJlZSB0byBjb3B5IGFuZCBtb2RpZnkKLSB0aGlzIEdOVSBN YW51YWwuICBCdXlpbmcgY29waWVzIGZyb20gR05VIFByZXNzIHN1cHBvcnRzIHRoZSBGU0YgaW4K LSBkZXZlbG9waW5nIEdOVSBhbmQgcHJvbW90aW5nIHNvZnR3YXJlIGZyZWVkb20uJycKLStAYyBt YW4gZW5kCi0gQGVuZCBjb3B5aW5nCi0gCi0gQGlmbm90dGV4Ci1AQCAtMTc5LDYgKzE4Myw3IEBA Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG9wZXJhdGluZyBzeXN0ZW0K LSAqIFRyYWNlIEZpbGUgRm9ybWF0OjoJCUdEQiB0cmFjZSBmaWxlIGZvcm1hdAotICogSW5kZXgg U2VjdGlvbiBGb3JtYXQ6OiAgICAgICAgLmdkYl9pbmRleCBzZWN0aW9uIGZvcm1hdAotKyogTWFu IFBhZ2VzOjoJCQlNYW51YWwgcGFnZXMKLSAqIENvcHlpbmc6OgkJCUdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIHNheXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdyB5b3Ug Y2FuIGNvcHkgYW5kIHNoYXJlIEdEQgotICogR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNl OjogIFRoZSBsaWNlbnNlIGZvciB0aGlzIGRvY3VtZW50YXRpb24KLUBAIC00MTU5Nyw2ICs0MTYw Miw0OTcgQEAKLSAgIEB9Ci0gQGVuZCBzbWFsbGV4YW1wbGUKLSAKLStAbm9kZSBNYW4gUGFnZXMK LStAYXBwZW5kaXggTWFudWFsIHBhZ2VzCi0rQGNpbmRleCBNYW4gcGFnZXMKLSsKLStAbWVudQot KyogZ2RiIG1hbjo6ICAgICAgICAgICAgICAgICAgICAgVGhlIEdOVSBEZWJ1Z2dlciBtYW4gcGFn ZQotKyogZ2Ric2VydmVyIG1hbjo6ICAgICAgICAgICAgICAgUmVtb3RlIFNlcnZlciBmb3IgdGhl IEdOVSBEZWJ1Z2dlciBtYW4gcGFnZQotKyogZ2RiaW5pdCBtYW46OiAgICAgICAgICAgICAgICAg Z2RiaW5pdCBzY3JpcHRzCi0rQGVuZCBtZW51Ci0rCi0rQG5vZGUgZ2RiIG1hbgotK0BoZWFkaW5n IGdkYiBtYW4KLSsKLStAYyBtYW4gdGl0bGUgZ2RiIFRoZSBHTlUgRGVidWdnZXIKLSsKLStAYyBt YW4gYmVnaW4gU1lOT1BTSVMgZ2RiCi0rZ2RiIFtAb3B0aW9uey1oZWxwfV0gW0BvcHRpb257LW5o fV0gW0BvcHRpb257LW54fV0gW0BvcHRpb257LXF9XQotK1tAb3B0aW9uey1iYXRjaH1dIFtAb3B0 aW9uey1jZD19QHZhcntkaXJ9XSBbQG9wdGlvbnstZn1dCi0rW0BvcHRpb257LWJ9QHd7IH1AdmFy e2Jwc31dCi0rICAgIFtAb3B0aW9uey10dHk9fUB2YXJ7ZGV2fV0gW0BvcHRpb257LXN9IEB2YXJ7 c3ltZmlsZX1dCi0rW0BvcHRpb257LWV9QHd7IH1AdmFye3Byb2d9XSBbQG9wdGlvbnstc2V9QHd7 IH1AdmFye3Byb2d9XQotK1tAb3B0aW9uey1jfUB3eyB9QHZhcntjb3JlfV0gW0BvcHRpb257LXh9 QHd7IH1AdmFye2NtZHN9XQotKyAgICBbQG9wdGlvbnstZH1Ad3sgfUB2YXJ7ZGlyfV0gW0B2YXJ7 cHJvZ318QHZhcntjb3JlfXxAdmFye3Byb2NJRH1dCi0rQGMgbWFuIGVuZAotKwotK0BjIG1hbiBi ZWdpbiBERVNDUklQVElPTiBnZGIKLStUaGUgcHVycG9zZSBvZiBhIGRlYnVnZ2VyIHN1Y2ggYXMg QHZhbHVle0dEQk59IGlzIHRvIGFsbG93IHlvdSB0byBzZWUgd2hhdCBpcwotK2dvaW5nIG9uIGBg aW5zaWRlJycgYW5vdGhlciBwcm9ncmFtIHdoaWxlIGl0IGV4ZWN1dGVzIC0tIG9yIHdoYXQgYW5v dGhlcgotK3Byb2dyYW0gd2FzIGRvaW5nIGF0IHRoZSBtb21lbnQgaXQgY3Jhc2hlZC4KLSsKLStA dmFsdWV7R0RCTn0gY2FuIGRvIGZvdXIgbWFpbiBraW5kcyBvZiB0aGluZ3MgKHBsdXMgb3RoZXIg dGhpbmdzIGluIHN1cHBvcnQgb2YKLSt0aGVzZSkgdG8gaGVscCB5b3UgY2F0Y2ggYnVncyBpbiB0 aGUgYWN0OgotKwotK0BpdGVtaXplIEBidWxsZXQKLStAaXRlbQotK1N0YXJ0IHlvdXIgcHJvZ3Jh bSwgc3BlY2lmeWluZyBhbnl0aGluZyB0aGF0IG1pZ2h0IGFmZmVjdCBpdHMgYmVoYXZpb3IuCi0r Ci0rQGl0ZW0KLStNYWtlIHlvdXIgcHJvZ3JhbSBzdG9wIG9uIHNwZWNpZmllZCBjb25kaXRpb25z LgotKwotK0BpdGVtCi0rRXhhbWluZSB3aGF0IGhhcyBoYXBwZW5lZCwgd2hlbiB5b3VyIHByb2dy YW0gaGFzIHN0b3BwZWQuCi0rCi0rQGl0ZW0KLStDaGFuZ2UgdGhpbmdzIGluIHlvdXIgcHJvZ3Jh bSwgc28geW91IGNhbiBleHBlcmltZW50IHdpdGggY29ycmVjdGluZyB0aGUKLStlZmZlY3RzIG9m IG9uZSBidWcgYW5kIGdvIG9uIHRvIGxlYXJuIGFib3V0IGFub3RoZXIuCi0rQGVuZCBpdGVtaXpl Ci0rCi0rWW91IGNhbiB1c2UgQHZhbHVle0dEQk59IHRvIGRlYnVnIHByb2dyYW1zIHdyaXR0ZW4g aW4gQywgQ0B0eysrfSwgYW5kIE1vZHVsYS0yLgotK0ZvcnRyYW4gc3VwcG9ydCB3aWxsIGJlIGFk ZGVkIHdoZW4gYSBHTlUgRm9ydHJhbiBjb21waWxlciBpcyByZWFkeS4KLSsKLStAdmFsdWV7R0RC Tn0gaXMgaW52b2tlZCB3aXRoIHRoZSBzaGVsbCBjb21tYW5kIEBjb2Rle2dkYn0uICBPbmNlIHN0 YXJ0ZWQsIGl0IHJlYWRzCi0rY29tbWFuZHMgZnJvbSB0aGUgdGVybWluYWwgdW50aWwgeW91IHRl bGwgaXQgdG8gZXhpdCB3aXRoIHRoZSBAdmFsdWV7R0RCTn0KLStjb21tYW5kIEBjb2Rle3F1aXR9 LiAgWW91IGNhbiBnZXQgb25saW5lIGhlbHAgZnJvbSBAdmFsdWV7R0RCTn0gaXRzZWxmCi0rYnkg dXNpbmcgdGhlIGNvbW1hbmQgQGNvZGV7aGVscH0uCi0rCi0rWW91IGNhbiBydW4gQGNvZGV7Z2Ri fSB3aXRoIG5vIGFyZ3VtZW50cyBvciBvcHRpb25zOyBidXQgdGhlIG1vc3QKLSt1c3VhbCB3YXkg dG8gc3RhcnQgQHZhbHVle0dEQk59IGlzIHdpdGggb25lIGFyZ3VtZW50IG9yIHR3bywgc3BlY2lm eWluZyBhbgotK2V4ZWN1dGFibGUgcHJvZ3JhbSBhcyB0aGUgYXJndW1lbnQ6Ci0rCi0rQHNtYWxs ZXhhbXBsZQotK2dkYiBwcm9ncmFtCi0rQGVuZCBzbWFsbGV4YW1wbGUKLSsKLStZb3UgY2FuIGFs c28gc3RhcnQgd2l0aCBib3RoIGFuIGV4ZWN1dGFibGUgcHJvZ3JhbSBhbmQgYSBjb3JlIGZpbGUg c3BlY2lmaWVkOgotKwotK0BzbWFsbGV4YW1wbGUKLStnZGIgcHJvZ3JhbSBjb3JlCi0rQGVuZCBz bWFsbGV4YW1wbGUKLSsKLStZb3UgY2FuLCBpbnN0ZWFkLCBzcGVjaWZ5IGEgcHJvY2VzcyBJRCBh cyBhIHNlY29uZCBhcmd1bWVudCwgaWYgeW91IHdhbnQKLSt0byBkZWJ1ZyBhIHJ1bm5pbmcgcHJv Y2VzczoKLSsKLStAc21hbGxleGFtcGxlCi0rZ2RiIHByb2dyYW0gMTIzNAotK0BlbmQgc21hbGxl eGFtcGxlCi0rCi0rQG5vaW5kZW50Ci0rd291bGQgYXR0YWNoIEB2YWx1ZXtHREJOfSB0byBwcm9j ZXNzIEBjb2RlezEyMzR9ICh1bmxlc3MgeW91IGFsc28gaGF2ZSBhIGZpbGUKLStuYW1lZCBAZmls ZXsxMjM0fTsgQHZhbHVle0dEQk59IGRvZXMgY2hlY2sgZm9yIGEgY29yZSBmaWxlIGZpcnN0KS4K LSsKLStIZXJlIGFyZSBzb21lIG9mIHRoZSBtb3N0IGZyZXF1ZW50bHkgbmVlZGVkIEB2YWx1ZXtH REJOfSBjb21tYW5kczoKLSsKLStAYyBwb2QybWFuIGhpZ2hsaWdodHMgdGhlIHJpZ2h0IGhhbmQg c2lkZSBvZiB0aGUgQGl0ZW0gbGluZXMuCi0rQHRhYmxlIEBlbnYKLStAaXRlbSBicmVhayBbQHZh cntmaWxlfTpdQHZhcntmdW5jdGlvcH0KLStTZXQgYSBicmVha3BvaW50IGF0IEB2YXJ7ZnVuY3Rp b259IChpbiBAdmFye2ZpbGV9KS4KLSsKLStAaXRlbSBydW4gW0B2YXJ7YXJnbGlzdH1dCi0rU3Rh cnQgeW91ciBwcm9ncmFtICh3aXRoIEB2YXJ7YXJnbGlzdH0sIGlmIHNwZWNpZmllZCkuCi0rCi0r QGl0ZW0gYnQKLStCYWNrdHJhY2U6IGRpc3BsYXkgdGhlIHByb2dyYW0gc3RhY2suCi0rCi0rQGl0 ZW0gcHJpbnQgQHZhcntleHByfQotK0Rpc3BsYXkgdGhlIHZhbHVlIG9mIGFuIGV4cHJlc3Npb24u Ci0rCi0rQGl0ZW0gYwotK0NvbnRpbnVlIHJ1bm5pbmcgeW91ciBwcm9ncmFtIChhZnRlciBzdG9w cGluZywgZS5nLiBhdCBhIGJyZWFrcG9pbnQpLgotKwotK0BpdGVtIG5leHQKLStFeGVjdXRlIG5l eHQgcHJvZ3JhbSBsaW5lIChhZnRlciBzdG9wcGluZyk7IHN0ZXAgQGVtcGh7b3Zlcn0gYW55Ci0r ZnVuY3Rpb24gY2FsbHMgaW4gdGhlIGxpbmUuCi0rCi0rQGl0ZW0gZWRpdCBbQHZhcntmaWxlfTpd QHZhcntmdW5jdGlvbn0KLStsb29rIGF0IHRoZSBwcm9ncmFtIGxpbmUgd2hlcmUgaXQgaXMgcHJl c2VudGx5IHN0b3BwZWQuCi0rCi0rQGl0ZW0gbGlzdCBbQHZhcntmaWxlfTpdQHZhcntmdW5jdGlv bn0KLSt0eXBlIHRoZSB0ZXh0IG9mIHRoZSBwcm9ncmFtIGluIHRoZSB2aWNpbml0eSBvZiB3aGVy ZSBpdCBpcyBwcmVzZW50bHkgc3RvcHBlZC4KLSsKLStAaXRlbSBzdGVwCi0rRXhlY3V0ZSBuZXh0 IHByb2dyYW0gbGluZSAoYWZ0ZXIgc3RvcHBpbmcpOyBzdGVwIEBlbXBoe2ludG99IGFueQotK2Z1 bmN0aW9uIGNhbGxzIGluIHRoZSBsaW5lLgotKwotK0BpdGVtIGhlbHAgW0B2YXJ7bmFtZX1dCi0r U2hvdyBpbmZvcm1hdGlvbiBhYm91dCBAdmFsdWV7R0RCTn0gY29tbWFuZCBAdmFye25hbWV9LCBv ciBnZW5lcmFsIGluZm9ybWF0aW9uCi0rYWJvdXQgdXNpbmcgQHZhbHVle0dEQk59LgotKwotK0Bp dGVtIHF1aXQKLStFeGl0IGZyb20gQHZhbHVle0dEQk59LgotK0BlbmQgdGFibGUKLSsKLStAaWZz ZXQgbWFuCi0rRm9yIGZ1bGwgZGV0YWlscyBvbiBAdmFsdWV7R0RCTn0sCi0rc2VlIEBjaXRle1Vz aW5nIEdEQjogQSBHdWlkZSB0byB0aGUgR05VIFNvdXJjZS1MZXZlbCBEZWJ1Z2dlcn0sCi0rYnkg UmljaGFyZCBNLiBTdGFsbG1hbiBhbmQgUm9sYW5kIEguIFBlc2NoLiAgVGhlIHNhbWUgdGV4dCBp cyBhdmFpbGFibGUgb25saW5lCi0rYXMgdGhlIEBjb2Rle2dkYn0gZW50cnkgaW4gdGhlIEBjb2Rl e2luZm99IHByb2dyYW0uCi0rQGVuZCBpZnNldAotK0BjIG1hbiBlbmQKLSsKLStAYyBtYW4gYmVn aW4gT1BUSU9OUyBnZGIKLStBbnkgYXJndW1lbnRzIG90aGVyIHRoYW4gb3B0aW9ucyBzcGVjaWZ5 IGFuIGV4ZWN1dGFibGUKLStmaWxlIGFuZCBjb3JlIGZpbGUgKG9yIHByb2Nlc3MgSUQpOyB0aGF0 IGlzLCB0aGUgZmlyc3QgYXJndW1lbnQKLStlbmNvdW50ZXJlZCB3aXRoIG5vCi0rYXNzb2NpYXRl ZCBvcHRpb24gZmxhZyBpcyBlcXVpdmFsZW50IHRvIGEgQG9wdGlvbnstc2V9IG9wdGlvbiwgYW5k IHRoZSBzZWNvbmQsCi0raWYgYW55LCBpcyBlcXVpdmFsZW50IHRvIGEgQG9wdGlvbnstY30gb3B0 aW9uIGlmIGl0J3MgdGhlIG5hbWUgb2YgYSBmaWxlLgotK01hbnkgb3B0aW9ucyBoYXZlCi0rYm90 aCBsb25nIGFuZCBzaG9ydCBmb3JtczsgYm90aCBhcmUgc2hvd24gaGVyZS4gIFRoZSBsb25nIGZv cm1zIGFyZSBhbHNvCi0rcmVjb2duaXplZCBpZiB5b3UgdHJ1bmNhdGUgdGhlbSwgc28gbG9uZyBh cyBlbm91Z2ggb2YgdGhlIG9wdGlvbiBpcwotK3ByZXNlbnQgdG8gYmUgdW5hbWJpZ3VvdXMuICAo SWYgeW91IHByZWZlciwgeW91IGNhbiBmbGFnIG9wdGlvbgotK2FyZ3VtZW50cyB3aXRoIEBvcHRp b257K30gcmF0aGVyIHRoYW4gQG9wdGlvbnstfSwgdGhvdWdoIHdlIGlsbHVzdHJhdGUgdGhlCi0r bW9yZSB1c3VhbCBjb252ZW50aW9uLikKLSsKLStBbGwgdGhlIG9wdGlvbnMgYW5kIGNvbW1hbmQg bGluZSBhcmd1bWVudHMgeW91IGdpdmUgYXJlIHByb2Nlc3NlZAotK2luIHNlcXVlbnRpYWwgb3Jk ZXIuICBUaGUgb3JkZXIgbWFrZXMgYSBkaWZmZXJlbmNlIHdoZW4gdGhlIEBvcHRpb257LXh9Ci0r b3B0aW9uIGlzIHVzZWQuCi0rCi0rQHRhYmxlIEBlbnYKLStAaXRlbSAtaGVscAotK0BpdGVteCAt aAotK0xpc3QgYWxsIG9wdGlvbnMsIHdpdGggYnJpZWYgZXhwbGFuYXRpb25zLgotKwotK0BpdGVt IC1zeW1ib2xzPUB2YXJ7ZmlsZX0KLStAaXRlbXggLXMgQHZhcntmaWxlfQotK1JlYWQgc3ltYm9s IHRhYmxlIGZyb20gZmlsZSBAdmFye2ZpbGV9LgotKwotK0BpdGVtIC13cml0ZQotK0VuYWJsZSB3 cml0aW5nIGludG8gZXhlY3V0YWJsZSBhbmQgY29yZSBmaWxlcy4KLSsKLStAaXRlbSAtZXhlYz1A dmFye2ZpbGV9Ci0rQGl0ZW14IC1lIEB2YXJ7ZmlsZX0KLStVc2UgZmlsZSBAdmFye2ZpbGV9IGFz IHRoZSBleGVjdXRhYmxlIGZpbGUgdG8gZXhlY3V0ZSB3aGVuCi0rYXBwcm9wcmlhdGUsIGFuZCBm b3IgZXhhbWluaW5nIHB1cmUgZGF0YSBpbiBjb25qdW5jdGlvbiB3aXRoIGEgY29yZQotK2R1bXAu Ci0rCi0rQGl0ZW0gLXNlPUB2YXJ7ZmlsZX0KLStSZWFkIHN5bWJvbCB0YWJsZSBmcm9tIGZpbGUg QHZhcntmaWxlfSBhbmQgdXNlIGl0IGFzIHRoZSBleGVjdXRhYmxlCi0rZmlsZS4KLSsKLStAaXRl bSAtY29yZT1AdmFye2ZpbGV9Ci0rQGl0ZW14IC1jIEB2YXJ7ZmlsZX0KLStVc2UgZmlsZSBAdmFy e2ZpbGV9IGFzIGEgY29yZSBkdW1wIHRvIGV4YW1pbmUuCi0rCi0rQGl0ZW0gLWNvbW1hbmQ9QHZh cntmaWxlfQotK0BpdGVteCAteCBAdmFye2ZpbGV9Ci0rRXhlY3V0ZSBAdmFsdWV7R0RCTn0gY29t bWFuZHMgZnJvbSBmaWxlIEB2YXJ7ZmlsZX0uCi0rCi0rQGl0ZW0gLWV4IEB2YXJ7Y29tbWFuZH0K LStFeGVjdXRlIGdpdmVuIEB2YWx1ZXtHREJOfSBAdmFye2NvbW1hbmR9LgotKwotK0BpdGVtIC1k aXJlY3Rvcnk9QHZhcntkaXJlY3Rvcnl9Ci0rQGl0ZW14IC1kIEB2YXJ7ZGlyZWN0b3J5fQotK0Fk ZCBAdmFye2RpcmVjdG9yeX0gdG8gdGhlIHBhdGggdG8gc2VhcmNoIGZvciBzb3VyY2UgZmlsZXMu Ci0rCi0rQGl0ZW0gLW5oCi0rRG8gbm90IGV4ZWN1dGUgY29tbWFuZHMgZnJvbSBAZmlsZXt+Ly5n ZGJpbml0fS4KLSsKLStAaXRlbSAtbngKLStAaXRlbXggLW4KLStEbyBub3QgZXhlY3V0ZSBjb21t YW5kcyBmcm9tIGFueSBAZmlsZXsuZ2RiaW5pdH0gaW5pdGlhbGl6YXRpb24gZmlsZXMuCi0rCi0r QGl0ZW0gLXF1aWV0Ci0rQGl0ZW14IC1xCi0rYGBRdWlldCcnLiAgRG8gbm90IHByaW50IHRoZSBp bnRyb2R1Y3RvcnkgYW5kIGNvcHlyaWdodCBtZXNzYWdlcy4gIFRoZXNlCi0rbWVzc2FnZXMgYXJl IGFsc28gc3VwcHJlc3NlZCBpbiBiYXRjaCBtb2RlLgotKwotK0BpdGVtIC1iYXRjaAotK1J1biBp biBiYXRjaCBtb2RlLiAgRXhpdCB3aXRoIHN0YXR1cyBAY29kZXswfSBhZnRlciBwcm9jZXNzaW5n IGFsbCB0aGUgY29tbWFuZAotK2ZpbGVzIHNwZWNpZmllZCB3aXRoIEBvcHRpb257LXh9IChhbmQg QGZpbGV7LmdkYmluaXR9LCBpZiBub3QgaW5oaWJpdGVkKS4KLStFeGl0IHdpdGggbm9uemVybyBz dGF0dXMgaWYgYW4gZXJyb3Igb2NjdXJzIGluIGV4ZWN1dGluZyB0aGUgQHZhbHVle0dEQk59Ci0r Y29tbWFuZHMgaW4gdGhlIGNvbW1hbmQgZmlsZXMuCi0rCi0rQmF0Y2ggbW9kZSBtYXkgYmUgdXNl ZnVsIGZvciBydW5uaW5nIEB2YWx1ZXtHREJOfSBhcyBhIGZpbHRlciwgZm9yIGV4YW1wbGUgdG8K LStkb3dubG9hZCBhbmQgcnVuIGEgcHJvZ3JhbSBvbiBhbm90aGVyIGNvbXB1dGVyOyBpbiBvcmRl ciB0byBtYWtlIHRoaXMKLSttb3JlIHVzZWZ1bCwgdGhlIG1lc3NhZ2UKLSsKLStAc21hbGxleGFt cGxlCi0rUHJvZ3JhbSBleGl0ZWQgbm9ybWFsbHkuCi0rQGVuZCBzbWFsbGV4YW1wbGUKLSsKLStA bm9pbmRlbnQKLSsod2hpY2ggaXMgb3JkaW5hcmlseSBpc3N1ZWQgd2hlbmV2ZXIgYSBwcm9ncmFt IHJ1bm5pbmcgdW5kZXIgQHZhbHVle0dEQk59IGNvbnRyb2wKLSt0ZXJtaW5hdGVzKSBpcyBub3Qg aXNzdWVkIHdoZW4gcnVubmluZyBpbiBiYXRjaCBtb2RlLgotKwotK0BpdGVtIC1jZD1AdmFye2Rp cmVjdG9yeX0KLStSdW4gQHZhbHVle0dEQk59IHVzaW5nIEB2YXJ7ZGlyZWN0b3J5fSBhcyBpdHMg d29ya2luZyBkaXJlY3RvcnksCi0raW5zdGVhZCBvZiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCi0r Ci0rQGl0ZW0gLWZ1bGxuYW1lCi0rQGl0ZW14IC1mCi0rRW1hY3Mgc2V0cyB0aGlzIG9wdGlvbiB3 aGVuIGl0IHJ1bnMgQHZhbHVle0dEQk59IGFzIGEgc3VicHJvY2Vzcy4gIEl0IHRlbGxzCi0rQHZh bHVle0dEQk59IHRvIG91dHB1dCB0aGUgZnVsbCBmaWxlIG5hbWUgYW5kIGxpbmUgbnVtYmVyIGlu IGEgc3RhbmRhcmQsCi0rcmVjb2duaXphYmxlIGZhc2hpb24gZWFjaCB0aW1lIGEgc3RhY2sgZnJh bWUgaXMgZGlzcGxheWVkICh3aGljaAotK2luY2x1ZGVzIGVhY2ggdGltZSB0aGUgcHJvZ3JhbSBz dG9wcykuICBUaGlzIHJlY29nbml6YWJsZSBmb3JtYXQgbG9va3MKLStsaWtlIHR3byBAc2FtcHtc MDMyfSBjaGFyYWN0ZXJzLCBmb2xsb3dlZCBieSB0aGUgZmlsZSBuYW1lLCBsaW5lIG51bWJlcgot K2FuZCBjaGFyYWN0ZXIgcG9zaXRpb24gc2VwYXJhdGVkIGJ5IGNvbG9ucywgYW5kIGEgbmV3bGlu ZS4gIFRoZQotK0VtYWNzLXRvLUB2YWx1ZXtHREJOfSBpbnRlcmZhY2UgcHJvZ3JhbSB1c2VzIHRo ZSB0d28gQHNhbXB7XDAzMn0KLStjaGFyYWN0ZXJzIGFzIGEgc2lnbmFsIHRvIGRpc3BsYXkgdGhl IHNvdXJjZSBjb2RlIGZvciB0aGUgZnJhbWUuCi0rCi0rQGl0ZW0gLWIgQHZhcnticHN9Ci0rU2V0 IHRoZSBsaW5lIHNwZWVkIChiYXVkIHJhdGUgb3IgYml0cyBwZXIgc2Vjb25kKSBvZiBhbnkgc2Vy aWFsCi0raW50ZXJmYWNlIHVzZWQgYnkgQHZhbHVle0dEQk59IGZvciByZW1vdGUgZGVidWdnaW5n LgotKwotK0BpdGVtIC10dHk9QHZhcntkZXZpY2V9Ci0rUnVuIHVzaW5nIEB2YXJ7ZGV2aWNlfSBm b3IgeW91ciBwcm9ncmFtJ3Mgc3RhbmRhcmQgaW5wdXQgYW5kIG91dHB1dC4KLStAZW5kIHRhYmxl Ci0rQGMgbWFuIGVuZAotKwotK0BjIG1hbiBiZWdpbiBTRUVBTFNPIGdkYgotK0BpZnNldCBtYW4K LStUaGUgZnVsbCBkb2N1bWVudGF0aW9uIGZvciBAdmFsdWV7R0RCTn0gaXMgbWFpbnRhaW5lZCBh cyBhIFRleGluZm8gbWFudWFsLgotK0lmIHRoZSBAY29kZXtpbmZvfSBhbmQgQGNvZGV7Z2RifSBw cm9ncmFtcyBhbmQgQHZhbHVle0dEQk59J3MgVGV4aW5mbwotK2RvY3VtZW50YXRpb24gYXJlIHBy b3Blcmx5IGluc3RhbGxlZCBhdCB5b3VyIHNpdGUsIHRoZSBjb21tYW5kCi0rCi0rQHNtYWxsZXhh bXBsZQotK2luZm8gZ2RiCi0rQGVuZCBzbWFsbGV4YW1wbGUKLSsKLStAbm9pbmRlbnQKLStzaG91 bGQgZ2l2ZSB5b3UgYWNjZXNzIHRvIHRoZSBjb21wbGV0ZSBtYW51YWwuCi0rCi0rQGNpdGV7VXNp bmcgR0RCOiBBIEd1aWRlIHRvIHRoZSBHTlUgU291cmNlLUxldmVsIERlYnVnZ2VyfSwKLStSaWNo YXJkIE0uIFN0YWxsbWFuIGFuZCBSb2xhbmQgSC4gUGVzY2gsIEp1bHkgMTk5MS4KLStAZW5kIGlm c2V0Ci0rQGMgbWFuIGVuZAotKwotK0Bub2RlIGdkYnNlcnZlciBtYW4KLStAaGVhZGluZyBnZGJz ZXJ2ZXIgbWFuCi0rCi0rQGMgbWFuIHRpdGxlIGdkYnNlcnZlciBSZW1vdGUgU2VydmVyIGZvciB0 aGUgR05VIERlYnVnZ2VyCi0rQGZvcm1hdAotK0BjIG1hbiBiZWdpbiBTWU5PUFNJUyBnZGJzZXJ2 ZXIKLStnZGJzZXJ2ZXIgQHZhcnt0dHl9IEB2YXJ7cHJvZ30gW0B2YXJ7YXJnc31AZG90c3t9XQot KwotK2dkYnNlcnZlciBAdmFye3R0eX0gLS1hdHRhY2ggQHZhcntQSUR9Ci0rQGMgbWFuIGVuZAot K0BlbmQgZm9ybWF0Ci0rCi0rQGMgbWFuIGJlZ2luIERFU0NSSVBUSU9OIGdkYnNlcnZlcgotK0Bj b21tYW5ke2dkYnNlcnZlcn0gaXMgYSBwcm9ncmFtIHRoYXQgYWxsb3dzIHlvdSB0byBydW4gQHZh bHVle0dEQk59IG9uIGEgZGlmZmVyZW50IG1hY2hpbmUKLSt0aGFuIHRoZSBvbmUgd2hpY2ggaXMg cnVubmluZyB0aGUgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZC4KLSsKLStAaWZjbGVhciBtYW4KLStA c3ViaGVhZGluZyBVc2FnZSAoc2VydmVyICh0YXJnZXQpIHNpZGUpCi0rQGVuZCBpZmNsZWFyCi0r QGlmc2V0IG1hbgotK1VzYWdlIChzZXJ2ZXIgKHRhcmdldCkgc2lkZSk6Ci0rQGVuZCBpZnNldAot KwotK0ZpcnN0LCB5b3UgbmVlZCB0byBoYXZlIGEgY29weSBvZiB0aGUgcHJvZ3JhbSB5b3Ugd2Fu dCB0byBkZWJ1ZyBwdXQgb250bwotK3RoZSB0YXJnZXQgc3lzdGVtLiAgVGhlIHByb2dyYW0gY2Fu IGJlIHN0cmlwcGVkIHRvIHNhdmUgc3BhY2UgaWYgbmVlZGVkLCBhcwotK0Bjb21tYW5ke2dkYnNl cnZlcn0gZG9lc24ndCBjYXJlIGFib3V0IHN5bWJvbHMuICBBbGwgc3ltYm9sIGhhbmRsaW5nIGlz IHRha2VuIGNhcmUgb2YgYnkKLSt0aGUgQHZhbHVle0dEQk59IHJ1bm5pbmcgb24gdGhlIGhvc3Qg c3lzdGVtLgotKwotK1RvIHVzZSB0aGUgc2VydmVyLCB5b3UgbG9nIG9uIHRvIHRoZSB0YXJnZXQg c3lzdGVtLCBhbmQgcnVuIHRoZSBAY29tbWFuZHtnZGJzZXJ2ZXJ9Ci0rcHJvZ3JhbS4gIFlvdSBt dXN0IHRlbGwgaXQgKGEpIGhvdyB0byBjb21tdW5pY2F0ZSB3aXRoIEB2YWx1ZXtHREJOfSwgKGIp IHRoZSBuYW1lIG9mCi0reW91ciBwcm9ncmFtLCBhbmQgKGMpIGl0cyBhcmd1bWVudHMuICBUaGUg Z2VuZXJhbCBzeW50YXggaXM6Ci0rCi0rQHNtYWxsZXhhbXBsZQotK3RhcmdldD4gZ2Ric2VydmVy IEB2YXJ7Y29tbX0gQHZhcntwcm9ncmFtfSBbQHZhcnthcmdzfSAuLi5dCi0rQGVuZCBzbWFsbGV4 YW1wbGUKLSsKLStGb3IgZXhhbXBsZSwgdXNpbmcgYSBzZXJpYWwgcG9ydCwgeW91IG1pZ2h0IHNh eToKLSsKLStAc21hbGxleGFtcGxlCi0rQGlmc2V0IG1hbgotK0BjIEBmaWxlIHdvdWxkIHdyYXAg aXQgYXMgRjwvZGV2L2NvbTE+LgotK3RhcmdldD4gZ2Ric2VydmVyIC9kZXYvY29tMSBlbWFjcyBm b28udHh0Ci0rQGVuZCBpZnNldAotK0BpZmNsZWFyIG1hbgotK3RhcmdldD4gZ2Ric2VydmVyIEBm aWxley9kZXYvY29tMX0gZW1hY3MgZm9vLnR4dAotK0BlbmQgaWZjbGVhcgotK0BlbmQgc21hbGxl eGFtcGxlCi0rCi0rVGhpcyB0ZWxscyBAY29tbWFuZHtnZGJzZXJ2ZXJ9IHRvIGRlYnVnIGVtYWNz IHdpdGggYW4gYXJndW1lbnQgb2YgZm9vLnR4dCwgYW5kCi0rdG8gY29tbXVuaWNhdGUgd2l0aCBA dmFsdWV7R0RCTn0gdmlhIEBmaWxley9kZXYvY29tMX0uICBAY29tbWFuZHtnZGJzZXJ2ZXJ9IG5v dwotK3dhaXRzIHBhdGllbnRseSBmb3IgdGhlIGhvc3QgQHZhbHVle0dEQk59IHRvIGNvbW11bmlj YXRlIHdpdGggaXQuCi0rCi0rVG8gdXNlIGEgVENQIGNvbm5lY3Rpb24sIHlvdSBjb3VsZCBzYXk6 Ci0rCi0rQHNtYWxsZXhhbXBsZQotK3RhcmdldD4gZ2Ric2VydmVyIGhvc3Q6MjM0NSBlbWFjcyBm b28udHh0Ci0rQGVuZCBzbWFsbGV4YW1wbGUKLSsKLStUaGlzIHNheXMgcHJldHR5IG11Y2ggdGhl IHNhbWUgdGhpbmcgYXMgdGhlIGxhc3QgZXhhbXBsZSwgZXhjZXB0IHRoYXQgd2UgYXJlCi0rZ29p bmcgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgQGNvZGV7aG9zdH0gQHZhbHVle0dEQk59IHZpYSBU Q1AuICBUaGUgQGNvZGV7aG9zdDoyMzQ1fSBhcmd1bWVudCBtZWFucwotK3RoYXQgd2UgYXJlIGV4 cGVjdGluZyB0byBzZWUgYSBUQ1AgY29ubmVjdGlvbiBmcm9tIEBjb2Rle2hvc3R9IHRvIGxvY2Fs IFRDUCBwb3J0Ci0rMjM0NS4gIChDdXJyZW50bHksIHRoZSBAY29kZXtob3N0fSBwYXJ0IGlzIGln bm9yZWQuKSAgWW91IGNhbiBjaG9vc2UgYW55IG51bWJlciB5b3UKLSt3YW50IGZvciB0aGUgcG9y dCBudW1iZXIgYXMgbG9uZyBhcyBpdCBkb2VzIG5vdCBjb25mbGljdCB3aXRoIGFueSBleGlzdGlu ZyBUQ1AKLStwb3J0cyBvbiB0aGUgdGFyZ2V0IHN5c3RlbS4gIFRoaXMgc2FtZSBwb3J0IG51bWJl ciBtdXN0IGJlIHVzZWQgaW4gdGhlIGhvc3QKLStAdmFsdWV7R0RCTn1zIEBjb2Rle3RhcmdldCBy ZW1vdGV9IGNvbW1hbmQsIHdoaWNoIHdpbGwgYmUgZGVzY3JpYmVkIHNob3J0bHkuICBOb3RlIHRo YXQgaWYKLSt5b3UgY2hvc2UgYSBwb3J0IG51bWJlciB0aGF0IGNvbmZsaWN0cyB3aXRoIGFub3Ro ZXIgc2VydmljZSwgQGNvbW1hbmR7Z2Ric2VydmVyfSB3aWxsCi0rcHJpbnQgYW4gZXJyb3IgbWVz c2FnZSBhbmQgZXhpdC4KLSsKLStPbiBzb21lIHRhcmdldHMsIEBjb21tYW5ke2dkYnNlcnZlcn0g Y2FuIGFsc28gYXR0YWNoIHRvIHJ1bm5pbmcgcHJvZ3JhbXMuCi0rVGhpcyBpcyBhY2NvbXBsaXNo ZWQgdmlhIHRoZSBAb3B0aW9uey0tYXR0YWNofSBhcmd1bWVudC4gIFRoZSBzeW50YXggaXM6Ci0r Ci0rQHNtYWxsZXhhbXBsZQotK3RhcmdldD4gZ2Ric2VydmVyIEB2YXJ7Y29tbX0gLS1hdHRhY2gg QHZhcntwaWR9Ci0rQGVuZCBzbWFsbGV4YW1wbGUKLSsKLStAdmFye3BpZH0gaXMgdGhlIHByb2Nl c3MgSUQgb2YgYSBjdXJyZW50bHkgcnVubmluZyBwcm9jZXNzLiAgSXQgaXNuJ3QKLStuZWNlc3Nh cnkgdG8gcG9pbnQgQGNvbW1hbmR7Z2Ric2VydmVyfSBhdCBhIGJpbmFyeSBmb3IgdGhlIHJ1bm5p bmcgcHJvY2Vzcy4KLSsKLStAaWZjbGVhciBtYW4KLStAc3ViaGVhZGluZyBVc2FnZSAoaG9zdCBz aWRlKQotK0BlbmQgaWZjbGVhcgotK0BpZnNldCBtYW4KLStVc2FnZSAoaG9zdCBzaWRlKToKLStA ZW5kIGlmc2V0Ci0rCi0rWW91IG5lZWQgYW4gdW5zdHJpcHBlZCBjb3B5IG9mIHRoZSB0YXJnZXQg cHJvZ3JhbSBvbiB5b3VyIGhvc3Qgc3lzdGVtLCBzaW5jZQotK0B2YWx1ZXtHREJOfSBuZWVkcyB0 byBleGFtaW5lIGl0J3Mgc3ltYm9sIHRhYmxlcyBhbmQgc3VjaC4gIFN0YXJ0IHVwIEB2YWx1ZXtH REJOfSBhcyB5b3Ugbm9ybWFsbHkKLSt3b3VsZCwgd2l0aCB0aGUgdGFyZ2V0IHByb2dyYW0gYXMg dGhlIGZpcnN0IGFyZ3VtZW50LiAgKFlvdSBtYXkgbmVlZCB0byB1c2UgdGhlCi0rQG9wdGlvbnst LWJhdWR9IG9wdGlvbiBpZiB0aGUgc2VyaWFsIGxpbmUgaXMgcnVubmluZyBhdCBhbnl0aGluZyBl eGNlcHQgOTYwMCBiYXVkLikKLStUaGF0IGlzIEBjb2Rle2dkYiBUQVJHRVQtUFJPR30sIG9yIEBj b2Rle2dkYiAtLWJhdWQgQkFVRCBUQVJHRVQtUFJPR30uICBBZnRlciB0aGF0LCB0aGUgb25seQot K25ldyBjb21tYW5kIHlvdSBuZWVkIHRvIGtub3cgYWJvdXQgaXMgQGNvZGV7dGFyZ2V0IHJlbW90 ZX0uICBJdCdzIGFyZ3VtZW50IGlzIGVpdGhlcgotK2EgZGV2aWNlIG5hbWUgKHVzdWFsbHkgYSBz ZXJpYWwgZGV2aWNlLCBsaWtlIEBmaWxley9kZXYvdHR5Yn0pLCBvciBhIEBjb2Rle0hPU1Q6UE9S VH0KLStkZXNjcmlwdG9yLiAgRm9yIGV4YW1wbGU6Ci0rCi0rQHNtYWxsZXhhbXBsZQotK0BpZnNl dCBtYW4KLStAYyBAZmlsZSB3b3VsZCB3cmFwIGl0IGFzIEY8L2Rldi90dHliPi4KLSsoZ2RiKSB0 YXJnZXQgcmVtb3RlIC9kZXYvdHR5YgotK0BlbmQgaWZzZXQKLStAaWZjbGVhciBtYW4KLSsoZ2Ri KSB0YXJnZXQgcmVtb3RlIEBmaWxley9kZXYvdHR5Yn0KLStAZW5kIGlmY2xlYXIKLStAZW5kIHNt YWxsZXhhbXBsZQotKwotK0Bub2luZGVudAotK2NvbW11bmljYXRlcyB3aXRoIHRoZSBzZXJ2ZXIg dmlhIHNlcmlhbCBsaW5lIEBmaWxley9kZXYvdHR5Yn0sIGFuZDoKLSsKLStAc21hbGxleGFtcGxl Ci0rKGdkYikgdGFyZ2V0IHJlbW90ZSB0aGUtdGFyZ2V0OjIzNDUKLStAZW5kIHNtYWxsZXhhbXBs ZQotKwotK0Bub2luZGVudAotK2NvbW11bmljYXRlcyB2aWEgYSBUQ1AgY29ubmVjdGlvbiB0byBw b3J0IDIzNDUgb24gaG9zdCBgdGhlLXRhcmdldCcsIHdoZXJlCi0reW91IHByZXZpb3VzbHkgc3Rh cnRlZCB1cCBAY29tbWFuZHtnZGJzZXJ2ZXJ9IHdpdGggdGhlIHNhbWUgcG9ydCBudW1iZXIuICBO b3RlIHRoYXQgZm9yCi0rVENQIGNvbm5lY3Rpb25zLCB5b3UgbXVzdCBzdGFydCB1cCBAY29tbWFu ZHtnZGJzZXJ2ZXJ9IHByaW9yIHRvIHVzaW5nIHRoZSBgdGFyZ2V0IHJlbW90ZScKLStjb21tYW5k LCBvdGhlcndpc2UgeW91IG1heSBnZXQgYW4gZXJyb3IgdGhhdCBsb29rcyBzb21ldGhpbmcgbGlr ZQotK2BDb25uZWN0aW9uIHJlZnVzZWQnLgotK0BjIG1hbiBlbmQKLSsKLStAYyBtYW4gYmVnaW4g T1BUSU9OUyBnZGJzZXJ2ZXIKLStZb3UgaGF2ZSB0byBzdXBwbHkgdGhlIG5hbWUgb2YgdGhlIHBy b2dyYW0gdG8gZGVidWcKLSthbmQgdGhlIHR0eSB0byBjb21tdW5pY2F0ZSBvbjsgdGhlIHJlbW90 ZSBAdmFsdWV7R0RCTn0gd2lsbCBkbyBldmVyeXRoaW5nIGVsc2UuCi0rQW55IHJlbWFpbmluZyBh cmd1bWVudHMgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIHByb2dyYW0gdmVyYmF0aW0uCi0rQGMgbWFu IGVuZAotKwotK0BjIG1hbiBiZWdpbiBTRUVBTFNPIGdkYnNlcnZlcgotK0BpZnNldCBtYW4KLStU aGUgZnVsbCBkb2N1bWVudGF0aW9uIGZvciBAdmFsdWV7R0RCTn0gaXMgbWFpbnRhaW5lZCBhcyBh IFRleGluZm8gbWFudWFsLgotK0lmIHRoZSBAY29kZXtpbmZvfSBhbmQgQGNvZGV7Z2RifSBwcm9n cmFtcyBhbmQgQHZhbHVle0dEQk59J3MgVGV4aW5mbwotK2RvY3VtZW50YXRpb24gYXJlIHByb3Bl cmx5IGluc3RhbGxlZCBhdCB5b3VyIHNpdGUsIHRoZSBjb21tYW5kCi0rCi0rQHNtYWxsZXhhbXBs ZQotK2luZm8gZ2RiCi0rQGVuZCBzbWFsbGV4YW1wbGUKLSsKLStzaG91bGQgZ2l2ZSB5b3UgYWNj ZXNzIHRvIHRoZSBjb21wbGV0ZSBtYW51YWwuCi0rCi0rQGNpdGV7VXNpbmcgR0RCOiBBIEd1aWRl IHRvIHRoZSBHTlUgU291cmNlLUxldmVsIERlYnVnZ2VyfSwKLStSaWNoYXJkIE0uIFN0YWxsbWFu IGFuZCBSb2xhbmQgSC4gUGVzY2gsIEp1bHkgMTk5MS4KLStAZW5kIGlmc2V0Ci0rQGMgbWFuIGVu ZAotKwotK0Bub2RlIGdkYmluaXQgbWFuCi0rQGhlYWRpbmcgZ2RiaW5pdAotKwotK0BjIG1hbiB0 aXRsZSBnZGJpbml0IEdEQiBpbml0aWFsaXphdGlvbiBzY3JpcHRzCi0rCi0rQGZvcm1hdAotK0Bj IG1hbiBiZWdpbiBTWU5PUFNJUyBnZGJpbml0Ci0rQGlmc2V0IFNZU1RFTV9HREJJTklUCi0rQHZh bHVle1NZU1RFTV9HREJJTklUfQotK0BlbmQgaWZzZXQKLSsKLSt+Ly5nZGJpbml0Ci0rCi0rLi8u Z2RiaW5pdAotK0BjIG1hbiBlbmQKLStAZW5kIGZvcm1hdAotKwotK0BjIG1hbiBiZWdpbiBERVND UklQVElPTiBnZGJpbml0Ci0rVGhlc2UgZmlsZXMgY29udGFpbiBAdmFsdWV7R0RCTn0gY29tbWFu ZHMgdG8gYXV0b21hdGljYWxseSBleGVjdXRlIGR1cmluZwotK0B2YWx1ZXtHREJOfSBzdGFydHVw LiAgVGhlIGxpbmVzIG9mIGNvbnRlbnRzIGFyZSBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRz LAotK2Rlc2NyaWJlZCBpbgotK0BpZnNldCBtYW4KLSt0aGUgQHZhbHVle0dEQk59IG1hbnVhbCBp biBub2RlIEBjb2Rle1NlcXVlbmNlc30KLSstLSBzaGVsbCBjb21tYW5kIEBjb2Rle2luZm8gLWYg Z2RiIC1uIFNlcXVlbmNlc30uCi0rQGVuZCBpZnNldAotK0BpZmNsZWFyIG1hbgotK0ByZWZ7U2Vx dWVuY2VzfS4KLStAZW5kIGlmY2xlYXIKLSsKLStQbGVhc2UgcmVhZCBtb3JlIGluCi0rQGlmc2V0 IG1hbgotK3RoZSBAdmFsdWV7R0RCTn0gbWFudWFsIGluIG5vZGUgQGNvZGV7U3RhcnR1cH0KLSst LSBzaGVsbCBjb21tYW5kIEBjb2Rle2luZm8gLWYgZ2RiIC1uIFN0YXJ0dXB9LgotK0BlbmQgaWZz ZXQKLStAaWZjbGVhciBtYW4KLStAcmVme1N0YXJ0dXB9LgotK0BlbmQgaWZjbGVhcgotKwotK0B0 YWJsZSBAZW52Ci0rQGlmc2V0IFNZU1RFTV9HREJJTklUCi0rQGl0ZW0gQHZhbHVle1NZU1RFTV9H REJJTklUfQotK0BlbmQgaWZzZXQKLStAaWZjbGVhciBTWVNURU1fR0RCSU5JVAotK0BpdGVtIChu b3QgZW5hYmxlZCB3aXRoIEBjb2Rley0td2l0aC1zeXN0ZW0tZ2RiaW5pdH0gZHVyaW5nIGNvbXBp bGF0aW9uKQotK0BlbmQgaWZjbGVhcgotK1N5c3RlbS13aWRlIGluaXRpYWxpemF0aW9uIGZpbGUu ICBJdCBpcyBleGVjdXRlZCB1bmxlc3MgdXNlciBzcGVjaWZpZWQKLStAdmFsdWV7R0RCTn0gb3B0 aW9uIEBjb2Rley1ueH0gb3IgQGNvZGV7LW59LgotK1NlZSBtb3JlIGluCi0rQGlmc2V0IG1hbgot K3RoZSBAdmFsdWV7R0RCTn0gbWFudWFsIGluIG5vZGUgQGNvZGV7U3lzdGVtLXdpZGUgY29uZmln dXJhdGlvbn0KLSstLSBzaGVsbCBjb21tYW5kIEBjb2Rle2luZm8gLWYgZ2RiIC1uICdTeXN0ZW0t d2lkZSBjb25maWd1cmF0aW9uJ30uCi0rQGVuZCBpZnNldAotK0BpZmNsZWFyIG1hbgotK0ByZWZ7 U3lzdGVtLXdpZGUgY29uZmlndXJhdGlvbn0uCi0rQGVuZCBpZmNsZWFyCi0rCi0rQGl0ZW0gfi8u Z2RiaW5pdAotK1VzZXIgaW5pdGlhbGl6YXRpb24gZmlsZS4gIEl0IGlzIGV4ZWN1dGVkIHVubGVz cyB1c2VyIHNwZWNpZmllZAotK0B2YWx1ZXtHREJOfSBvcHRpb25zIEBjb2Rley1ueH0sIEBjb2Rl ey1ufSBvciBAY29kZXstbmh9LgotKwotK0BpdGVtIC4vLmdkYmluaXQKLStJbml0aWFsaXphdGlv biBmaWxlIGZvciBjdXJyZW50IGRpcmVjdG9yeS4gIEl0IG1heSBuZWVkIHRvIGJlIGVuYWJsZWQg d2l0aAotK0B2YWx1ZXtHREJOfSBzZWN1cml0eSBjb21tYW5kIEBjb2Rle3NldCBhdXRvLWxvYWQg bG9jYWwtZ2RiaW5pdH0uCi0rU2VlIG1vcmUgaW4KLStAaWZzZXQgbWFuCi0rdGhlIEB2YWx1ZXtH REJOfSBtYW51YWwgaW4gbm9kZSBAY29kZXtJbml0IEZpbGUgaW4gdGhlIEN1cnJlbnQgRGlyZWN0 b3J5fQotKy0tIHNoZWxsIGNvbW1hbmQgQGNvZGV7aW5mbyAtZiBnZGIgLW4gJ0luaXQgRmlsZSBp biB0aGUgQ3VycmVudCBEaXJlY3RvcnknfS4KLStAZW5kIGlmc2V0Ci0rQGlmY2xlYXIgbWFuCi0r QHJlZntJbml0IEZpbGUgaW4gdGhlIEN1cnJlbnQgRGlyZWN0b3J5fS4KLStAZW5kIGlmY2xlYXIK LStAZW5kIHRhYmxlCi0rQGMgbWFuIGVuZAotKwotK0BjIG1hbiBiZWdpbiBTRUVBTFNPIGdkYmlu aXQKLStAaWZzZXQgbWFuCi0rZ2RiKDEpLCBAY29kZXtpbmZvIC1mIGdkYiAtbiBTdGFydHVwfQot KwotK1RoZSBmdWxsIGRvY3VtZW50YXRpb24gZm9yIEB2YWx1ZXtHREJOfSBpcyBtYWludGFpbmVk IGFzIGEgVGV4aW5mbyBtYW51YWwuCi0rSWYgdGhlIEBjb2Rle2luZm99IGFuZCBAY29kZXtnZGJ9 IHByb2dyYW1zIGFuZCBAdmFsdWV7R0RCTn0ncyBUZXhpbmZvCi0rZG9jdW1lbnRhdGlvbiBhcmUg cHJvcGVybHkgaW5zdGFsbGVkIGF0IHlvdXIgc2l0ZSwgdGhlIGNvbW1hbmQKLSsKLStAc21hbGxl eGFtcGxlCi0raW5mbyBnZGIKLStAZW5kIHNtYWxsZXhhbXBsZQotKwotK3Nob3VsZCBnaXZlIHlv dSBhY2Nlc3MgdG8gdGhlIGNvbXBsZXRlIG1hbnVhbC4KLSsKLStAY2l0ZXtVc2luZyBHREI6IEEg R3VpZGUgdG8gdGhlIEdOVSBTb3VyY2UtTGV2ZWwgRGVidWdnZXJ9LAotK1JpY2hhcmQgTS4gU3Rh bGxtYW4gYW5kIFJvbGFuZCBILiBQZXNjaCwgSnVseSAxOTkxLgotK0BlbmQgaWZzZXQKLStAYyBt YW4gZW5kCi0rCi0gQGluY2x1ZGUgZ3BsLnRleGkKLSAKLSBAbm9kZSBHTlUgRnJlZSBEb2N1bWVu dGF0aW9uIExpY2Vuc2UKLSMjIyBzcmMvZ2RiL2dkYnNlcnZlci9DaGFuZ2VMb2cJMjAxMy8wMy8y MiAxNDo1MjoyNgkxLjcwMgotIyMjIHNyYy9nZGIvZ2Ric2VydmVyL0NoYW5nZUxvZwkyMDEzLzA0 LzA1IDIwOjAxOjMzCTEuNzAzCi0jIyAtMSwzICsxLDEwIEBACi0rMjAxMy0wNC0wNSAgSmFuIEty YXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotKwlDb252ZXJ0IG1hbiBw YWdlcyB0byB0ZXhpbmZvLCBuZXcgZ2RiaW5pdC41IHRleGluZm8gcGFnZS4KLSsJKiBNYWtlZmls ZS5pbiAoaW5zdGFsbC1vbmx5KTogUmVtb3ZlICQobWFuMWRpcikgYW5kIGdkYnNlcnZlci4xCi0r CWluc3RhbGxhdGlvbi4KLSsJKiBnZGJzZXJ2ZXIuMTogUmVtb3ZlLgotKwotIDIwMTMtMDMtMjIg IFBlZHJvIEFsdmVzICA8cGFsdmVzQHJlZGhhdC5jb20+Ci0gCi0gCSogbGludXgtbG93LmMgKGhh bmRsZV9leHRlbmRlZF93YWl0KTogRG9uJ3QgY2FsbAotLS0tIHNyYy9nZGIvZ2Ric2VydmVyL01h a2VmaWxlLmluCTIwMTMvMDMvMTUgMTc6MzA6MjcJMS4xNDUKLSsrKyBzcmMvZ2RiL2dkYnNlcnZl ci9NYWtlZmlsZS5pbgkyMDEzLzA0LzA1IDIwOjAxOjMzCTEuMTQ2Ci1AQCAtMjUyLDggKzI1Miw2 IEBACi0gCWZpOyBcCi0gCSQoU0hFTEwpICQoc3JjZGlyKS8uLi8uLi9ta2luc3RhbGxkaXJzICQo REVTVERJUikkKGJpbmRpcik7IFwKLSAJJChJTlNUQUxMX1BST0dSQU0pIGdkYnNlcnZlciQoRVhF RVhUKSAkKERFU1RESVIpJChiaW5kaXIpLyQkbiQoRVhFRVhUKTsgXAotLQkkKFNIRUxMKSAkKHNy Y2RpcikvLi4vLi4vbWtpbnN0YWxsZGlycyAkKERFU1RESVIpJChtYW4xZGlyKTsgXAotLQkkKElO U1RBTExfREFUQSkgJChzcmNkaXIpL2dkYnNlcnZlci4xICQoREVTVERJUikkKG1hbjFkaXIpLyQk bi4xCi0gCUAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgRE89JEAgIkRPRElSUz0kKFNVQkRJUlMp IiBzdWJkaXJfZG8KLSAKLSB1bmluc3RhbGw6IGZvcmNlCi0KLQotCi1odHRwOi8vc291cmNld2Fy ZS5vcmcvbWwvZ2RiLWN2cy8yMDEzLTA0L21zZzAwMDU3Lmh0bWwKLQotIyMjIHNyYy9nZGIvZG9j L0NoYW5nZUxvZwkyMDEzLzA0LzA1IDIwOjAxOjMzCTEuMTQzMwotIyMjIHNyYy9nZGIvZG9jL0No YW5nZUxvZwkyMDEzLzA0LzA1IDIwOjAyOjU4CTEuMTQzNAotIyMgLTEsNSArMSwxMCBAQAotIDIw MTMtMDQtMDUgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSAK LSsJKiBnZGIudGV4aW5mbyAoZ2RiIG1hbik6IE1lbnRpb24gb3B0aW9uIC1wLiAgSW5jbHVkZSBG b3J0cmFuIHRvCi0rCXRoZSBsaXN0IG9mIHN1cHBvcnRlZCBsYW5ndWFnZXMuCi0rCi0rMjAxMy0w NC0wNSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotIAlD b252ZXJ0IG1hbiBwYWdlcyB0byB0ZXhpbmZvLCBuZXcgZ2RiaW5pdC41IHRleGluZm8gcGFnZS4K LSAJKiBNYWtlZmlsZS5pbiAobWFuZGlyLCBtYW4xZGlyLCBtYW41ZGlyLCBTWVNURU1fR0RCSU5J VCwgTUFOQ09ORiwKLSAJKFRFWEkyUE9ELCBQT0QyTUFOMSwgUE9EMk1BTjUsIE1BTjFTLCBNQU41 UywgTUFOUywgbWFuKTogTmV3LgotLS0tIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTMvMDQv MDUgMjA6MDE6MzMJMS4xMDcwCi0rKysgc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMy8wNC8w NSAyMDowMjo1OAkxLjEwNzEKLUBAIC00MTYyMyw4ICs0MTYyMyw5IEBACi0gW0BvcHRpb257LWJ9 QHd7IH1AdmFye2Jwc31dCi0gICAgIFtAb3B0aW9uey10dHk9fUB2YXJ7ZGV2fV0gW0BvcHRpb257 LXN9IEB2YXJ7c3ltZmlsZX1dCi0gW0BvcHRpb257LWV9QHd7IH1AdmFye3Byb2d9XSBbQG9wdGlv bnstc2V9QHd7IH1AdmFye3Byb2d9XQotLVtAb3B0aW9uey1jfUB3eyB9QHZhcntjb3JlfV0gW0Bv cHRpb257LXh9QHd7IH1AdmFye2NtZHN9XQotLSAgICBbQG9wdGlvbnstZH1Ad3sgfUB2YXJ7ZGly fV0gW0B2YXJ7cHJvZ318QHZhcntjb3JlfXxAdmFye3Byb2NJRH1dCi0rW0BvcHRpb257LWN9QHd7 IH1AdmFye2NvcmV9XSBbQG9wdGlvbnstcH1Ad3sgfUB2YXJ7cHJvY0lEfV0KLSsgICAgW0BvcHRp b257LXh9QHd7IH1AdmFye2NtZHN9XSBbQG9wdGlvbnstZH1Ad3sgfUB2YXJ7ZGlyfV0KLStbQHZh cntwcm9nfXxAdmFye3Byb2d9IEB2YXJ7cHJvY0lEfXxAdmFye3Byb2d9IEB2YXJ7Y29yZX1dCi0g QGMgbWFuIGVuZAotIAotIEBjIG1hbiBiZWdpbiBERVNDUklQVElPTiBnZGIKLUBAIC00MTY1MCw4 ICs0MTY1MSw4IEBACi0gZWZmZWN0cyBvZiBvbmUgYnVnIGFuZCBnbyBvbiB0byBsZWFybiBhYm91 dCBhbm90aGVyLgotIEBlbmQgaXRlbWl6ZQotIAotLVlvdSBjYW4gdXNlIEB2YWx1ZXtHREJOfSB0 byBkZWJ1ZyBwcm9ncmFtcyB3cml0dGVuIGluIEMsIENAdHsrK30sIGFuZCBNb2R1bGEtMi4KLS1G b3J0cmFuIHN1cHBvcnQgd2lsbCBiZSBhZGRlZCB3aGVuIGEgR05VIEZvcnRyYW4gY29tcGlsZXIg aXMgcmVhZHkuCi0rWW91IGNhbiB1c2UgQHZhbHVle0dEQk59IHRvIGRlYnVnIHByb2dyYW1zIHdy aXR0ZW4gaW4gQywgQ0B0eysrfSwgRm9ydHJhbiBhbmQKLStNb2R1bGEtMi4KLSAKLSBAdmFsdWV7 R0RCTn0gaXMgaW52b2tlZCB3aXRoIHRoZSBzaGVsbCBjb21tYW5kIEBjb2Rle2dkYn0uICBPbmNl IHN0YXJ0ZWQsIGl0IHJlYWRzCi0gY29tbWFuZHMgZnJvbSB0aGUgdGVybWluYWwgdW50aWwgeW91 IHRlbGwgaXQgdG8gZXhpdCB3aXRoIHRoZSBAdmFsdWV7R0RCTn0KLUBAIC00MTY3NywxMSArNDE2 NzgsMTMgQEAKLSAKLSBAc21hbGxleGFtcGxlCi0gZ2RiIHByb2dyYW0gMTIzNAotK2dkYiAtcCAx MjM0Ci0gQGVuZCBzbWFsbGV4YW1wbGUKLSAKLSBAbm9pbmRlbnQKLSB3b3VsZCBhdHRhY2ggQHZh bHVle0dEQk59IHRvIHByb2Nlc3MgQGNvZGV7MTIzNH0gKHVubGVzcyB5b3UgYWxzbyBoYXZlIGEg ZmlsZQotIG5hbWVkIEBmaWxlezEyMzR9OyBAdmFsdWV7R0RCTn0gZG9lcyBjaGVjayBmb3IgYSBj b3JlIGZpbGUgZmlyc3QpLgotK1dpdGggb3B0aW9uIEBvcHRpb257LXB9IHlvdSBjYW4gb21pdCB0 aGUgQHZhcntwcm9ncmFtfSBmaWxlbmFtZS4KLSAKLSBIZXJlIGFyZSBzb21lIG9mIHRoZSBtb3N0 IGZyZXF1ZW50bHkgbmVlZGVkIEB2YWx1ZXtHREJOfSBjb21tYW5kczoKLSAKLQotCi0KLWh0dHA6 Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTMtMDQvbXNnMDAwNjQuaHRtbAotCi0jIyMg c3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTMvMDQvMDUgMjA6MDI6NTgJMS4xNDM0Ci0jIyMgc3Jj L2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTMvMDQvMDYgMDg6NTg6NTMJMS4xNDM1Ci0jIyAtMSwzICsx LDExIEBACi0rMjAxMy0wNC0wNiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRo YXQuY29tPgotKwkgICAgRWxpIFphcmV0c2tpaSAgPGVsaXpAZ251Lm9yZz4KLSsKLSsJKiBnZGIu dGV4aW5mbyAoZ2Ric2VydmVyIG1hbik6IFJlbmFtZSB0dHkgdG8gY29tbS4gIFN3YXAgLS1hdHRh Y2gKLSsJcGFyYW1ldGVycyBvcmRlci4gIFJlbW92ZSAiT24gc29tZSB0YXJnZXRzIiBmb3IgLS1h dHRhY2guICBEb2N1bWVudCB0aGUKLSsJLS1tdWx0aSBwYXJhbWV0ZXIgYW5kIGV4dGVuZGVkLXJl bW90ZSBjb21tYW5kLiAgRG9jdW1lbnQgYWxsIHRoZQotKwlvcHRpb25zLgotKwotIDIwMTMtMDQt MDUgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSAKLSAJKiBn ZGIudGV4aW5mbyAoZ2RiIG1hbik6IE1lbnRpb24gb3B0aW9uIC1wLiAgSW5jbHVkZSBGb3J0cmFu IHRvCi0tLS0gc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMy8wNC8wNSAyMDowMjo1OAkxLjEw NzEKLSsrKyBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEzLzA0LzA2IDA4OjU4OjUzCTEuMTA3 MgotQEAgLTQxODY3LDkgKzQxODY3LDExIEBACi0gQGMgbWFuIHRpdGxlIGdkYnNlcnZlciBSZW1v dGUgU2VydmVyIGZvciB0aGUgR05VIERlYnVnZ2VyCi0gQGZvcm1hdAotIEBjIG1hbiBiZWdpbiBT WU5PUFNJUyBnZGJzZXJ2ZXIKLS1nZGJzZXJ2ZXIgQHZhcnt0dHl9IEB2YXJ7cHJvZ30gW0B2YXJ7 YXJnc31AZG90c3t9XQotK2dkYnNlcnZlciBAdmFye2NvbW19IEB2YXJ7cHJvZ30gW0B2YXJ7YXJn c31AZG90c3t9XQotIAotLWdkYnNlcnZlciBAdmFye3R0eX0gLS1hdHRhY2ggQHZhcntQSUR9Ci0r Z2Ric2VydmVyIC0tYXR0YWNoIEB2YXJ7Y29tbX0gQHZhcntwaWR9Ci0rCi0rZ2Ric2VydmVyIC0t bXVsdGkgQHZhcntjb21tfQotIEBjIG1hbiBlbmQKLSBAZW5kIGZvcm1hdAotIAotQEAgLTQxOTI5 LDE2ICs0MTkzMSwyNSBAQAotIHlvdSBjaG9zZSBhIHBvcnQgbnVtYmVyIHRoYXQgY29uZmxpY3Rz IHdpdGggYW5vdGhlciBzZXJ2aWNlLCBAY29tbWFuZHtnZGJzZXJ2ZXJ9IHdpbGwKLSBwcmludCBh biBlcnJvciBtZXNzYWdlIGFuZCBleGl0LgotIAotLU9uIHNvbWUgdGFyZ2V0cywgQGNvbW1hbmR7 Z2Ric2VydmVyfSBjYW4gYWxzbyBhdHRhY2ggdG8gcnVubmluZyBwcm9ncmFtcy4KLStAY29tbWFu ZHtnZGJzZXJ2ZXJ9IGNhbiBhbHNvIGF0dGFjaCB0byBydW5uaW5nIHByb2dyYW1zLgotIFRoaXMg aXMgYWNjb21wbGlzaGVkIHZpYSB0aGUgQG9wdGlvbnstLWF0dGFjaH0gYXJndW1lbnQuICBUaGUg c3ludGF4IGlzOgotIAotIEBzbWFsbGV4YW1wbGUKLS10YXJnZXQ+IGdkYnNlcnZlciBAdmFye2Nv bW19IC0tYXR0YWNoIEB2YXJ7cGlkfQotK3RhcmdldD4gZ2Ric2VydmVyIC0tYXR0YWNoIEB2YXJ7 Y29tbX0gQHZhcntwaWR9Ci0gQGVuZCBzbWFsbGV4YW1wbGUKLSAKLSBAdmFye3BpZH0gaXMgdGhl IHByb2Nlc3MgSUQgb2YgYSBjdXJyZW50bHkgcnVubmluZyBwcm9jZXNzLiAgSXQgaXNuJ3QKLSBu ZWNlc3NhcnkgdG8gcG9pbnQgQGNvbW1hbmR7Z2Ric2VydmVyfSBhdCBhIGJpbmFyeSBmb3IgdGhl IHJ1bm5pbmcgcHJvY2Vzcy4KLSAKLStUbyBzdGFydCBAY29kZXtnZGJzZXJ2ZXJ9IHdpdGhvdXQg c3VwcGx5aW5nIGFuIGluaXRpYWwgY29tbWFuZCB0byBydW4KLStvciBwcm9jZXNzIElEIHRvIGF0 dGFjaCwgdXNlIHRoZSBAb3B0aW9uey0tbXVsdGl9IGNvbW1hbmQgbGluZSBvcHRpb24uCi0rSW4g c3VjaCBjYXNlIHlvdSBzaG91bGQgY29ubmVjdCB1c2luZyBAa2Jke3RhcmdldCBleHRlbmRlZC1y ZW1vdGV9IHRvIHN0YXJ0Ci0rdGhlIHByb2dyYW0geW91IHdhbnQgdG8gZGVidWcuCi0rCi0rQHNt YWxsZXhhbXBsZQotK3RhcmdldD4gZ2Ric2VydmVyIC0tbXVsdGkgQHZhcntjb21tfQotK0BlbmQg c21hbGxleGFtcGxlCi0rCi0gQGlmY2xlYXIgbWFuCi0gQHN1YmhlYWRpbmcgVXNhZ2UgKGhvc3Qg c2lkZSkKLSBAZW5kIGlmY2xlYXIKLUBAIC00MTk1MSw3ICs0MTk2Miw4IEBACi0gd291bGQsIHdp dGggdGhlIHRhcmdldCBwcm9ncmFtIGFzIHRoZSBmaXJzdCBhcmd1bWVudC4gIChZb3UgbWF5IG5l ZWQgdG8gdXNlIHRoZQotIEBvcHRpb257LS1iYXVkfSBvcHRpb24gaWYgdGhlIHNlcmlhbCBsaW5l IGlzIHJ1bm5pbmcgYXQgYW55dGhpbmcgZXhjZXB0IDk2MDAgYmF1ZC4pCi0gVGhhdCBpcyBAY29k ZXtnZGIgVEFSR0VULVBST0d9LCBvciBAY29kZXtnZGIgLS1iYXVkIEJBVUQgVEFSR0VULVBST0d9 LiAgQWZ0ZXIgdGhhdCwgdGhlIG9ubHkKLS1uZXcgY29tbWFuZCB5b3UgbmVlZCB0byBrbm93IGFi b3V0IGlzIEBjb2Rle3RhcmdldCByZW1vdGV9LiAgSXQncyBhcmd1bWVudCBpcyBlaXRoZXIKLStu ZXcgY29tbWFuZCB5b3UgbmVlZCB0byBrbm93IGFib3V0IGlzIEBjb2Rle3RhcmdldCByZW1vdGV9 Ci0rKG9yIEBjb2Rle3RhcmdldCBleHRlbmRlZC1yZW1vdGV9KS4gIEl0cyBhcmd1bWVudCBpcyBl aXRoZXIKLSBhIGRldmljZSBuYW1lICh1c3VhbGx5IGEgc2VyaWFsIGRldmljZSwgbGlrZSBAZmls ZXsvZGV2L3R0eWJ9KSwgb3IgYSBAY29kZXtIT1NUOlBPUlR9Ci0gZGVzY3JpcHRvci4gIEZvciBl eGFtcGxlOgotIAotQEAgLTQxOTc4LDEyICs0MTk5MCwxMzEgQEAKLSBUQ1AgY29ubmVjdGlvbnMs IHlvdSBtdXN0IHN0YXJ0IHVwIEBjb21tYW5ke2dkYnNlcnZlcn0gcHJpb3IgdG8gdXNpbmcgdGhl IGB0YXJnZXQgcmVtb3RlJwotIGNvbW1hbmQsIG90aGVyd2lzZSB5b3UgbWF5IGdldCBhbiBlcnJv ciB0aGF0IGxvb2tzIHNvbWV0aGluZyBsaWtlCi0gYENvbm5lY3Rpb24gcmVmdXNlZCcuCi0rCi0r QGNvbW1hbmR7Z2Ric2VydmVyfSBjYW4gYWxzbyBkZWJ1ZyBtdWx0aXBsZSBpbmZlcmlvcnMgYXQg b25jZSwKLStkZXNjcmliZWQgaW4KLStAaWZzZXQgbWFuCi0rdGhlIEB2YWx1ZXtHREJOfSBtYW51 YWwgaW4gbm9kZSBAY29kZXtJbmZlcmlvcnMgYW5kIFByb2dyYW1zfQotKy0tIHNoZWxsIGNvbW1h bmQgQGNvZGV7aW5mbyAtZiBnZGIgLW4gJ0luZmVyaW9ycyBhbmQgUHJvZ3JhbXMnfS4KLStAZW5k IGlmc2V0Ci0rQGlmY2xlYXIgbWFuCi0rQHJlZntJbmZlcmlvcnMgYW5kIFByb2dyYW1zfS4KLStA ZW5kIGlmY2xlYXIKLStJbiBzdWNoIGNhc2UgdXNlIHRoZSBAY29kZXtleHRlbmRlZC1yZW1vdGV9 IEB2YWx1ZXtHREJOfSBjb21tYW5kIHZhcmlhbnQ6Ci0rCi0rQHNtYWxsZXhhbXBsZQotKyhnZGIp IHRhcmdldCBleHRlbmRlZC1yZW1vdGUgdGhlLXRhcmdldDoyMzQ1Ci0rQGVuZCBzbWFsbGV4YW1w bGUKLSsKLStUaGUgQGNvbW1hbmR7Z2Ric2VydmVyfSBvcHRpb24gQG9wdGlvbnstLW11bHRpfSBt YXkgb3IgbWF5IG5vdCBiZSB1c2VkIGluIHN1Y2gKLStjYXNlLgotIEBjIG1hbiBlbmQKLSAKLSBA YyBtYW4gYmVnaW4gT1BUSU9OUyBnZGJzZXJ2ZXIKLS1Zb3UgaGF2ZSB0byBzdXBwbHkgdGhlIG5h bWUgb2YgdGhlIHByb2dyYW0gdG8gZGVidWcKLS1hbmQgdGhlIHR0eSB0byBjb21tdW5pY2F0ZSBv bjsgdGhlIHJlbW90ZSBAdmFsdWV7R0RCTn0gd2lsbCBkbyBldmVyeXRoaW5nIGVsc2UuCi0tQW55 IHJlbWFpbmluZyBhcmd1bWVudHMgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIHByb2dyYW0gdmVyYmF0 aW0uCi0rVGhlcmUgYXJlIHRocmVlIGRpZmZlcmVudCBtb2RlcyBmb3IgaW52b2tpbmcgQGNvbW1h bmR7Z2Ric2VydmVyfToKLSsKLStAaXRlbWl6ZSBAYnVsbGV0Ci0rCi0rQGl0ZW0KLStEZWJ1ZyBh IHNwZWNpZmljIHByb2dyYW0gc3BlY2lmaWVkIGJ5IGl0cyBwcm9ncmFtIG5hbWU6Ci0rCi0rQHNt YWxsZXhhbXBsZQotK2dkYnNlcnZlciBAdmFye2NvbW19IEB2YXJ7cHJvZ30gW0B2YXJ7YXJnc31A ZG90c3t9XQotK0BlbmQgc21hbGxleGFtcGxlCi0rCi0rVGhlIEB2YXJ7Y29tbX0gcGFyYW1ldGVy IHNwZWNpZmllcyBob3cgc2hvdWxkIHRoZSBzZXJ2ZXIgY29tbXVuaWNhdGUKLSt3aXRoIEB2YWx1 ZXtHREJOfTsgaXQgaXMgZWl0aGVyIGEgZGV2aWNlIG5hbWUgKHRvIHVzZSBhIHNlcmlhbCBsaW5l KSwKLSthIFRDUCBwb3J0IG51bWJlciAoQGNvZGV7OjEyMzR9KSwgb3IgQGNvZGV7LX0gb3IgQGNv ZGV7c3RkaW99IHRvIHVzZQotK3N0ZGluL3N0ZG91dCBvZiBAY29kZXtnZGJzZXJ2ZXJ9LiAgU3Bl Y2lmeSB0aGUgbmFtZSBvZiB0aGUgcHJvZ3JhbSB0bwotK2RlYnVnIGluIEB2YXJ7cHJvZ30uICBB bnkgcmVtYWluaW5nIGFyZ3VtZW50cyB3aWxsIGJlIHBhc3NlZCB0byB0aGUKLStwcm9ncmFtIHZl cmJhdGltLiAgV2hlbiB0aGUgcHJvZ3JhbSBleGl0cywgQHZhbHVle0dEQk59IHdpbGwgY2xvc2Ug dGhlCi0rY29ubmVjdGlvbiwgYW5kIEBjb2Rle2dkYnNlcnZlcn0gd2lsbCBleGl0LgotKwotK0Bp dGVtCi0rRGVidWcgYSBzcGVjaWZpYyBwcm9ncmFtIGJ5IHNwZWNpZnlpbmcgdGhlIHByb2Nlc3Mg SUQgb2YgYSBydW5uaW5nCi0rcHJvZ3JhbToKLSsKLStAc21hbGxleGFtcGxlCi0rZ2Ric2VydmVy IC0tYXR0YWNoIEB2YXJ7Y29tbX0gQHZhcntwaWR9Ci0rQGVuZCBzbWFsbGV4YW1wbGUKLSsKLStU aGUgQHZhcntjb21tfSBwYXJhbWV0ZXIgaXMgYXMgZGVzY3JpYmVkIGFib3ZlLiAgU3VwcGx5IHRo ZSBwcm9jZXNzIElECi0rb2YgYSBydW5uaW5nIHByb2dyYW0gaW4gQHZhcntwaWR9OyBAdmFsdWV7 R0RCTn0gd2lsbCBkbyBldmVyeXRoaW5nCi0rZWxzZS4gIExpa2Ugd2l0aCB0aGUgcHJldmlvdXMg bW9kZSwgd2hlbiB0aGUgcHJvY2VzcyBAdmFye3BpZH0gZXhpdHMsCi0rQHZhbHVle0dEQk59IHdp bGwgY2xvc2UgdGhlIGNvbm5lY3Rpb24sIGFuZCBAY29kZXtnZGJzZXJ2ZXJ9IHdpbGwgZXhpdC4K LSsKLStAaXRlbQotK011bHRpLXByb2Nlc3MgbW9kZSAtLSBkZWJ1ZyBtb3JlIHRoYW4gb25lIHBy b2dyYW0vcHJvY2VzczoKLSsKLStAc21hbGxleGFtcGxlCi0rZ2Ric2VydmVyIC0tbXVsdGkgQHZh cntjb21tfQotK0BlbmQgc21hbGxleGFtcGxlCi0rCi0rSW4gdGhpcyBtb2RlLCBAdmFsdWV7R0RC Tn0gY2FuIGluc3RydWN0IEBjb21tYW5ke2dkYnNlcnZlcn0gd2hpY2gKLStjb21tYW5kKHMpIHRv IHJ1bi4gIFVubGlrZSB0aGUgb3RoZXIgMiBtb2RlcywgQHZhbHVle0dEQk59IHdpbGwgbm90Ci0r Y2xvc2UgdGhlIGNvbm5lY3Rpb24gd2hlbiBhIHByb2Nlc3MgYmVpbmcgZGVidWdnZWQgZXhpdHMs IHNvIHlvdSBjYW4KLStkZWJ1ZyBzZXZlcmFsIHByb2Nlc3NlcyBpbiB0aGUgc2FtZSBzZXNzaW9u LgotK0BlbmQgaXRlbWl6ZQotKwotK0luIGVhY2ggb2YgdGhlIG1vZGVzIHlvdSBtYXkgc3BlY2lm eSB0aGVzZSBvcHRpb25zOgotKwotK0B0YWJsZSBAZW52Ci0rCi0rQGl0ZW0gLS1oZWxwCi0rTGlz dCBhbGwgb3B0aW9ucywgd2l0aCBicmllZiBleHBsYW5hdGlvbnMuCi0rCi0rQGl0ZW0gLS12ZXJz aW9uCi0rVGhpcyBvcHRpb24gY2F1c2VzIEBjb21tYW5ke2dkYnNlcnZlcn0gdG8gcHJpbnQgaXRz IHZlcnNpb24gbnVtYmVyIGFuZCBleGl0LgotKwotK0BpdGVtIC0tYXR0YWNoCi0rQGNvbW1hbmR7 Z2Ric2VydmVyfSB3aWxsIGF0dGFjaCB0byBhIHJ1bm5pbmcgcHJvZ3JhbS4gIFRoZSBzeW50YXgg aXM6Ci0rCi0rQHNtYWxsZXhhbXBsZQotK3RhcmdldD4gZ2Ric2VydmVyIC0tYXR0YWNoIEB2YXJ7 Y29tbX0gQHZhcntwaWR9Ci0rQGVuZCBzbWFsbGV4YW1wbGUKLSsKLStAdmFye3BpZH0gaXMgdGhl IHByb2Nlc3MgSUQgb2YgYSBjdXJyZW50bHkgcnVubmluZyBwcm9jZXNzLiAgSXQgaXNuJ3QKLStu ZWNlc3NhcnkgdG8gcG9pbnQgQGNvbW1hbmR7Z2Ric2VydmVyfSBhdCBhIGJpbmFyeSBmb3IgdGhl IHJ1bm5pbmcgcHJvY2Vzcy4KLSsKLStAaXRlbSAtLW11bHRpCi0rVG8gc3RhcnQgQGNvZGV7Z2Ri c2VydmVyfSB3aXRob3V0IHN1cHBseWluZyBhbiBpbml0aWFsIGNvbW1hbmQgdG8gcnVuCi0rb3Ig cHJvY2VzcyBJRCB0byBhdHRhY2gsIHVzZSB0aGlzIGNvbW1hbmQgbGluZSBvcHRpb24uCi0rVGhl biB5b3UgY2FuIGNvbm5lY3QgdXNpbmcgQGtiZHt0YXJnZXQgZXh0ZW5kZWQtcmVtb3RlfSBhbmQg c3RhcnQKLSt0aGUgcHJvZ3JhbSB5b3Ugd2FudCB0byBkZWJ1Zy4gIFRoZSBzeW50YXggaXM6Ci0r Ci0rQHNtYWxsZXhhbXBsZQotK3RhcmdldD4gZ2Ric2VydmVyIC0tbXVsdGkgQHZhcntjb21tfQot K0BlbmQgc21hbGxleGFtcGxlCi0rCi0rQGl0ZW0gLS1kZWJ1ZwotK0luc3RydWN0IEBjb2Rle2dk YnNlcnZlcn0gdG8gZGlzcGxheSBleHRyYSBzdGF0dXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRl YnVnZ2luZwotK3Byb2Nlc3MuCi0rVGhpcyBvcHRpb24gaXMgaW50ZW5kZWQgZm9yIEBjb2Rle2dk YnNlcnZlcn0gZGV2ZWxvcG1lbnQgYW5kIGZvciBidWcgcmVwb3J0cyB0bwotK3RoZSBkZXZlbG9w ZXJzLgotKwotK0BpdGVtIC0tcmVtb3RlLWRlYnVnCi0rSW5zdHJ1Y3QgQGNvZGV7Z2Ric2VydmVy fSB0byBkaXNwbGF5IHJlbW90ZSBwcm90b2NvbCBkZWJ1ZyBvdXRwdXQuCi0rVGhpcyBvcHRpb24g aXMgaW50ZW5kZWQgZm9yIEBjb2Rle2dkYnNlcnZlcn0gZGV2ZWxvcG1lbnQgYW5kIGZvciBidWcg cmVwb3J0cyB0bwotK3RoZSBkZXZlbG9wZXJzLgotKwotK0BpdGVtIC0td3JhcHBlcgotK1NwZWNp ZnkgYSB3cmFwcGVyIHRvIGxhdW5jaCBwcm9ncmFtcwotK2ZvciBkZWJ1Z2dpbmcuICBUaGUgb3B0 aW9uIHNob3VsZCBiZSBmb2xsb3dlZCBieSB0aGUgbmFtZSBvZiB0aGUKLSt3cmFwcGVyLCB0aGVu IGFueSBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIHdyYXBwZXIsIHRoZW4K LStAa2Jkey0tfSBpbmRpY2F0aW5nIHRoZSBlbmQgb2YgdGhlIHdyYXBwZXIgYXJndW1lbnRzLgot KwotK0BpdGVtIC0tb25jZQotK0J5IGRlZmF1bHQsIEBjb21tYW5ke2dkYnNlcnZlcn0ga2VlcHMg dGhlIGxpc3RlbmluZyBUQ1AgcG9ydCBvcGVuLCBzbyB0aGF0Ci0rYWRkaXRpb25hbCBjb25uZWN0 aW9ucyBhcmUgcG9zc2libGUuICBIb3dldmVyLCBpZiB5b3Ugc3RhcnQgQGNvZGV7Z2Ric2VydmVy fQotK3dpdGggdGhlIEBvcHRpb257LS1vbmNlfSBvcHRpb24sIGl0IHdpbGwgc3RvcCBsaXN0ZW5p bmcgZm9yIGFueSBmdXJ0aGVyCi0rY29ubmVjdGlvbiBhdHRlbXB0cyBhZnRlciBjb25uZWN0aW5n IHRvIHRoZSBmaXJzdCBAdmFsdWV7R0RCTn0gc2Vzc2lvbi4KLSsKLStAYyAtLWRpc2FibGUtcGFj a2V0IGlzIG5vdCBkb2N1bWVudGVkIGZvciB1c2Vycy4KLSsKLStAYyAtLWRpc2FibGUtcmFuZG9t aXphdGlvbiBhbmQgLS1uby1kaXNhYmxlLXJhbmRvbWl6YXRpb24gYXJlIHN1cGVyc2VkZWQgYnkK LStAYyBRRGlzYWJsZVJhbmRvbWl6YXRpb24uCi0rCi0rQGVuZCB0YWJsZQotIEBjIG1hbiBlbmQK LSAKLSBAYyBtYW4gYmVnaW4gU0VFQUxTTyBnZGJzZXJ2ZXIKLQotCi0KLWh0dHA6Ly9zb3VyY2V3 YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTMtMDQvbXNnMDAwNjUuaHRtbAotCi0jIyMgc3JjL2dkYi9k b2MvQ2hhbmdlTG9nCTIwMTMvMDQvMDYgMDg6NTg6NTMJMS4xNDM1Ci0jIyMgc3JjL2dkYi9kb2Mv Q2hhbmdlTG9nCTIwMTMvMDQvMDYgMTU6NTI6MDYJMS4xNDM2Ci0jIyAtMSw0ICsxLDggQEAKLSAy MDEzLTA0LTA2ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0r Ci0rCSogTWFrZWZpbGUuaW4gKFBPRDJNQU4xLCBQT0QyTUFONSk6IFJlcGxhY2UgJChWRVJTSU9O KSBieSAuLi92ZXJzaW9uLmluLgotKwotKzIwMTMtMDQtMDYgIEphbiBLcmF0b2NodmlsICA8amFu LmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSAJICAgIEVsaSBaYXJldHNraWkgIDxlbGl6QGdudS5v cmc+Ci0gCi0gCSogZ2RiLnRleGluZm8gKGdkYnNlcnZlciBtYW4pOiBSZW5hbWUgdHR5IHRvIGNv bW0uICBTd2FwIC0tYXR0YWNoCi0tLS0gc3JjL2dkYi9kb2MvTWFrZWZpbGUuaW4JMjAxMy8wNC8w NSAyMDowMTozMwkxLjU4Ci0rKysgc3JjL2dkYi9kb2MvTWFrZWZpbGUuaW4JMjAxMy8wNC8wNiAx NTo1MjowNgkxLjU5Ci1AQCAtMTcyLDkgKzE3Miw5IEBACi0gCQkkKE1BS0VJTkZPRkxBR1MpICQo TUFLRUlORk9fRVhUUkFfRkxBR1MpCi0gCi0gUE9EMk1BTjEgPSBwb2QybWFuIC0tY2VudGVyPSJH TlUgRGV2ZWxvcG1lbnQgVG9vbHMiIFwKLS0JCSAgIC0tcmVsZWFzZT0iZ2RiLSQoVkVSU0lPTiki IC0tc2VjdGlvbj0xCi0rCQkgICAtLXJlbGVhc2U9ImdkYi1gc2VkIHEgJChzcmNkaXIpLy4uL3Zl cnNpb24uaW5gIiAtLXNlY3Rpb249MQotIFBPRDJNQU41ID0gcG9kMm1hbiAtLWNlbnRlcj0iR05V IERldmVsb3BtZW50IFRvb2xzIiBcCi0tCQkgICAtLXJlbGVhc2U9ImdkYi0kKFZFUlNJT04pIiAt LXNlY3Rpb249NQotKwkJICAgLS1yZWxlYXNlPSJnZGItYHNlZCBxICQoc3JjZGlyKS8uLi92ZXJz aW9uLmluYCIgLS1zZWN0aW9uPTUKLSAKLSAjIExpc3Qgb2YgbWFuIHBhZ2VzIGdlbmVyYXRlZCBm cm9tIGdkYi50ZXhpCi0gTUFOMVMgPSBnZGIuMSBnZGJzZXJ2ZXIuMQotCi0KLQotaHR0cDovL3Nv dXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMy0wNC9tc2cwMDA2OC5odG1sCi0KLSMjIyBzcmMv Z2RiL2dkYnNlcnZlci9DaGFuZ2VMb2cJMjAxMy8wNC8wNSAyMDowMTozMwkxLjcwMwotIyMjIHNy Yy9nZGIvZ2Ric2VydmVyL0NoYW5nZUxvZwkyMDEzLzA0LzA3IDA1OjUzOjIxCTEuNzA0Ci0jIyAt MSwzICsxLDcgQEAKLSsyMDEzLTA0LTA3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2Nodmls QHJlZGhhdC5jb20+Ci0rCi0rCSogTWFrZWZpbGUuaW4gKGluc3RhbGwtb25seSk6IEZpeCBtYWtl IGluc3RhbGwgcmVncmVzc2lvbi4KLSsKLSAyMDEzLTA0LTA1ICBKYW4gS3JhdG9jaHZpbCAgPGph bi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0gCi0gCUNvbnZlcnQgbWFuIHBhZ2VzIHRvIHRleGlu Zm8sIG5ldyBnZGJpbml0LjUgdGV4aW5mbyBwYWdlLgotLS0tIHNyYy9nZGIvZ2Ric2VydmVyL01h a2VmaWxlLmluCTIwMTMvMDQvMDUgMjA6MDE6MzMJMS4xNDYKLSsrKyBzcmMvZ2RiL2dkYnNlcnZl ci9NYWtlZmlsZS5pbgkyMDEzLzA0LzA3IDA1OjUzOjIyCTEuMTQ3Ci1AQCAtMjUxLDcgKzI1MSw3 IEBACi0gCQkkKElOU1RBTExfUFJPR1JBTSkgJChJUEFfTElCKSAkKERFU1RESVIpJChsaWJkaXIp LyQoSVBBX0xJQik7IFwKLSAJZmk7IFwKLSAJJChTSEVMTCkgJChzcmNkaXIpLy4uLy4uL21raW5z dGFsbGRpcnMgJChERVNURElSKSQoYmluZGlyKTsgXAotLQkkKElOU1RBTExfUFJPR1JBTSkgZ2Ri c2VydmVyJChFWEVFWFQpICQoREVTVERJUikkKGJpbmRpcikvJCRuJChFWEVFWFQpOyBcCi0rCSQo SU5TVEFMTF9QUk9HUkFNKSBnZGJzZXJ2ZXIkKEVYRUVYVCkgJChERVNURElSKSQoYmluZGlyKS8k JG4kKEVYRUVYVCkKLSAJQCQoTUFLRSkgJChGTEFHU19UT19QQVNTKSBETz0kQCAiRE9ESVJTPSQo U1VCRElSUykiIHN1YmRpcl9kbwotIAotIHVuaW5zdGFsbDogZm9yY2UKLQotCi0KLWh0dHA6Ly9z b3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTMtMDQvbXNnMDAwNjkuaHRtbAotCi0jIyMgc3Jj L2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTMvMDQvMDYgMTU6NTI6MDYJMS4xNDM2Ci0jIyMgc3JjL2dk Yi9kb2MvQ2hhbmdlTG9nCTIwMTMvMDQvMDcgMDY6MDQ6NTgJMS4xNDM3Ci0jIyAtMiw2ICsyLDkg QEAKLSAKLSAJKiBNYWtlZmlsZS5pbiAoUE9EMk1BTjEsIFBPRDJNQU41KTogUmVwbGFjZSAkKFZF UlNJT04pIGJ5IC4uL3ZlcnNpb24uaW4uCi0gCi0rCSogTWFrZWZpbGUuaW4gKGluc3RhbGwtbWFu MSwgaW5zdGFsbC1tYW41LCB1bmluc3RhbGwtbWFuMSkKLSsJKHVuaW5zdGFsbC1tYW41KTogUmVw bGFjZSAkKE1BTlMpIGJ5ICQoTUFOMVMpIGFuZCAkKE1BTjVTKSByZXNwZWN0aXZlbHkuCi0rCi0g MjAxMy0wNC0wNiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgot IAkgICAgRWxpIFphcmV0c2tpaSAgPGVsaXpAZ251Lm9yZz4KLSAKLS0tLSBzcmMvZ2RiL2RvYy9N YWtlZmlsZS5pbgkyMDEzLzA0LzA2IDE1OjUyOjA2CTEuNTkKLSsrKyBzcmMvZ2RiL2RvYy9NYWtl ZmlsZS5pbgkyMDEzLzA0LzA3IDA2OjA0OjU4CTEuNjAKLUBAIC0yNjgsNyArMjY4LDcgQEAKLSAK LSBpbnN0YWxsLW1hbjE6ICQoTUFOMVMpCi0gCXRlc3QgLXogIiQobWFuMWRpcikiIHx8ICQobWtp bnN0YWxsZGlycykgIiQoREVTVERJUikkKG1hbjFkaXIpIgotLQlAbGlzdD0nJChNQU5TKSc7IGZv ciBwIGluICQkbGlzdDsgZG8gXAotKwlAbGlzdD0nJChNQU4xUyknOyBmb3IgcCBpbiAkJGxpc3Q7 IGRvIFwKLSAJICBpZiB0ZXN0IC1mICIkJHAiOyB0aGVuIGQ9OyBlbHNlIGQ9IiQoc3JjZGlyKS8i OyBmaTsgXAotIAkgIGY9YGVjaG8gJCRwIHwgc2VkIC1lICdzfF4uKi98fCdgOyBcCi0gCSAgZWNo byAiICQoSU5TVEFMTF9EQVRBKSAnJCRkJCRwJyAnJChERVNURElSKSQobWFuMWRpcikvJCRmJyI7 IFwKLUBAIC0yNzcsNyArMjc3LDcgQEAKLSAKLSBpbnN0YWxsLW1hbjU6ICQoTUFONVMpCi0gCXRl c3QgLXogIiQobWFuNWRpcikiIHx8ICQobWtpbnN0YWxsZGlycykgIiQoREVTVERJUikkKG1hbjVk aXIpIgotLQlAbGlzdD0nJChNQU5TKSc7IGZvciBwIGluICQkbGlzdDsgZG8gXAotKwlAbGlzdD0n JChNQU41UyknOyBmb3IgcCBpbiAkJGxpc3Q7IGRvIFwKLSAJICBpZiB0ZXN0IC1mICIkJHAiOyB0 aGVuIGQ9OyBlbHNlIGQ9IiQoc3JjZGlyKS8iOyBmaTsgXAotIAkgIGY9YGVjaG8gJCRwIHwgc2Vk IC1lICdzfF4uKi98fCdgOyBcCi0gCSAgZWNobyAiICQoSU5TVEFMTF9EQVRBKSAnJCRkJCRwJyAn JChERVNURElSKSQobWFuNWRpcikvJCRmJyI7IFwKLUBAIC0yODgsNyArMjg4LDcgQEAKLSAKLSB1 bmluc3RhbGwtbWFuMToKLSAJQHRlc3QgLW4gIiQobWFuMWRpcikiIHx8IGV4aXQgMDsgXAotLQlm aWxlcz1geyBsMj0nJChNQU5TKSc7IGZvciBpIGluICQkbDI7IGRvIGVjaG8gIiQkaSI7IGRvbmUg fCBcCi0rCWZpbGVzPWB7IGwyPSckKE1BTjFTKSc7IGZvciBpIGluICQkbDI7IGRvIGVjaG8gIiQk aSI7IGRvbmUgfCBcCi0gCSAgc2VkIC1uICcvXC4xW2Etel0qJCQvcCc7IFwKLSAJfSB8IHNlZCAt ZSAncywuKi8sLDtoO3MsLipcLiwsO3MsXlteMV1bMC05YS16XSokJCwxLDt4JyBcCi0gCSAgICAg IC1lICdzLFwuWzAtOWEtel0qJCQsLDskKHRyYW5zZm9ybSk7RztzLFxuLC4sJ2A7IFwKLUBAIC0y OTgsNyArMjk4LDcgQEAKLSAKLSB1bmluc3RhbGwtbWFuNToKLSAJQHRlc3QgLW4gIiQobWFuNWRp cikiIHx8IGV4aXQgMDsgXAotLQlmaWxlcz1geyBsMj0nJChNQU5TKSc7IGZvciBpIGluICQkbDI7 IGRvIGVjaG8gIiQkaSI7IGRvbmUgfCBcCi0rCWZpbGVzPWB7IGwyPSckKE1BTjVTKSc7IGZvciBp IGluICQkbDI7IGRvIGVjaG8gIiQkaSI7IGRvbmUgfCBcCi0gCSAgc2VkIC1uICcvXC41W2Etel0q JCQvcCc7IFwKLSAJfSB8IHNlZCAtZSAncywuKi8sLDtoO3MsLipcLiwsO3MsXlteNV1bMC05YS16 XSokJCw1LDt4JyBcCi0gCSAgICAgIC1lICdzLFwuWzAtOWEtel0qJCQsLDskKHRyYW5zZm9ybSk7 RztzLFxuLC4sJ2A7IFwKLQotCi0KLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIw MTMtMDQvbXNnMDAwNzAuaHRtbAotCi0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTMvMDQv MDcgMDY6MDQ6NTgJMS4xNDM3Ci0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTMvMDQvMDcg MDY6MjA6MTkJMS4xNDM4Ci0jIyAtNSw2ICs1LDggQEAKLSAJKiBNYWtlZmlsZS5pbiAoaW5zdGFs bC1tYW4xLCBpbnN0YWxsLW1hbjUsIHVuaW5zdGFsbC1tYW4xKQotIAkodW5pbnN0YWxsLW1hbjUp OiBSZXBsYWNlICQoTUFOUykgYnkgJChNQU4xUykgYW5kICQoTUFONVMpIHJlc3BlY3RpdmVseS4K LSAKLSsJKiBNYWtlZmlsZS5pbiAoZ2RiLjEsIGdkYnNlcnZlci4xLCBnZGJpbml0LjUpOiBVc2Ug JChzcmNkaXIpLgotKwotIDIwMTMtMDQtMDYgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2 aWxAcmVkaGF0LmNvbT4KLSAJICAgIEVsaSBaYXJldHNraWkgIDxlbGl6QGdudS5vcmc+Ci0gCi0t LS0gc3JjL2dkYi9kb2MvTWFrZWZpbGUuaW4JMjAxMy8wNC8wNyAwNjowNDo1OAkxLjYwCi0rKysg c3JjL2dkYi9kb2MvTWFrZWZpbGUuaW4JMjAxMy8wNC8wNyAwNjoyMDoxOQkxLjYxCi1AQCAtNTkz LDIxICs1OTMsMjEgQEAKLSAjIE1hbiBwYWdlcwotIGdkYi4xOiAkKEdEQl9ET0NfRklMRVMpCi0g CXRvdWNoICRACi0tCS0kKFRFWEkyUE9EKSAkKE1BTkNPTkYpIC1EZ2RiIDwgZ2RiLnRleGluZm8g PiBnZGIucG9kCi0rCS0kKFRFWEkyUE9EKSAkKE1BTkNPTkYpIC1EZ2RiIDwgJChzcmNkaXIpL2dk Yi50ZXhpbmZvID4gZ2RiLnBvZAotIAktKCQoUE9EMk1BTjEpIGdkYi5wb2QgfCBzZWQgLWUgJy9e LmlmIG4gLm5hL2QnID4gJEAuVCQkJCQgJiYgXAotIAkJbXYgLWYgJEAuVCQkJCQgJEApIHx8IChy bSAtZiAkQC5UJCQkJCAmJiBleGl0IDEpCi0gCXJtIC1mIGdkYi5wb2QKLSAKLSBnZGJzZXJ2ZXIu MTogJChHREJfRE9DX0ZJTEVTKQotIAl0b3VjaCAkQAotLQktJChURVhJMlBPRCkgJChNQU5DT05G KSAtRGdkYnNlcnZlciA8IGdkYi50ZXhpbmZvID4gZ2Ric2VydmVyLnBvZAotKwktJChURVhJMlBP RCkgJChNQU5DT05GKSAtRGdkYnNlcnZlciA8ICQoc3JjZGlyKS9nZGIudGV4aW5mbyA+IGdkYnNl cnZlci5wb2QKLSAJLSgkKFBPRDJNQU4xKSBnZGJzZXJ2ZXIucG9kIHwgc2VkIC1lICcvXi5pZiBu IC5uYS9kJyA+ICRALlQkJCQkICYmIFwKLSAJCW12IC1mICRALlQkJCQkICRAKSB8fCAocm0gLWYg JEAuVCQkJCQgJiYgZXhpdCAxKQotIAlybSAtZiBnZGJzZXJ2ZXIucG9kCi0gCi0gZ2RiaW5pdC41 OiAkKEdEQl9ET0NfRklMRVMpCi0gCXRvdWNoICRACi0tCS0kKFRFWEkyUE9EKSAkKE1BTkNPTkYp IC1EZ2RiaW5pdCA8IGdkYi50ZXhpbmZvID4gZ2RiaW5pdC5wb2QKLSsJLSQoVEVYSTJQT0QpICQo TUFOQ09ORikgLURnZGJpbml0IDwgJChzcmNkaXIpL2dkYi50ZXhpbmZvID4gZ2RiaW5pdC5wb2QK LSAJLSgkKFBPRDJNQU41KSBnZGJpbml0LnBvZCB8IHNlZCAtZSAnL14uaWYgbiAubmEvZCcgPiAk QC5UJCQkJCAmJiBcCi0gCQltdiAtZiAkQC5UJCQkJCAkQCkgfHwgKHJtIC1mICRALlQkJCQkICYm IGV4aXQgMSkKLSAJcm0gLWYgZ2RiaW5pdC5wb2QKLQotCi0KLWh0dHA6Ly9zb3VyY2V3YXJlLm9y Zy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTU0MTMKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9t bC9nZGItY3ZzLzIwMTMtMDUvbXNnMDAwNjMuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJ MjAxMy8wNC8yNiAxNDoxMzoxMwkxLjE1MjYwLjIuNTAKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwky MDEzLzA1LzA3IDE3OjA0OjU2CTEuMTUyNjAuMi41MQotIyMgLTEsMyArMSwxMCBAQAotKzIwMTMt MDUtMDcgIFNlcmdpbyBEdXJpZ2FuIEp1bmlvciAgPHNlcmdpb2RqQHJlZGhhdC5jb20+Ci0rCi0r CVBSIGJyZWFrcG9pbnRzLzE1NDEzOgotKwkqIGJyZWFrcG9pbnQuYyAoY29uZGl0aW9uX2NvbXBs ZXRlcik6IFNpbXBsaWZ5IHRoZSBjb2RlIHRvCi0rCWRpc2NvbnNpZGVyIG11bHRpcGxlIGxvY2F0 aW9ucyBvZiBicmVha3BvaW50cyB3aGVuIGNvbXBsZXRpbmcgdGhlCi0rCSJjb25kaXRpb24iIGNv bW1hbmQuCi0rCi0gMjAxMy0wNC0yNiAgSm9lbCBCcm9iZWNrZXIgIDxicm9iZWNrZXJAYWRhY29y ZS5jb20+Ci0gCi0gCSogdmVyc2lvbi5pbjogU2V0IHZlcnNpb24gdG8gNy42LjAuMjAxMzA0MjYt Y3ZzLgotLS0tIHNyYy9nZGIvYnJlYWtwb2ludC5jCTIwMTMvMDQvMjUgMDg6MTU6MzQJMS43NDUu Mi41Ci0rKysgc3JjL2dkYi9icmVha3BvaW50LmMJMjAxMy8wNS8wNyAxNzowNDo1NwkxLjc0NS4y LjYKLUBAIC0xMDE1LDI3ICsxMDE1LDE0IEBACi0gICAgICAgbGVuID0gc3RybGVuICh0ZXh0KTsK LSAKLSAgICAgICBBTExfQlJFQUtQT0lOVFMgKGIpCi0tICAgICAgewotLQlpbnQgc2luZ2xlID0g Yi0+bG9jLT5uZXh0ID09IE5VTEw7Ci0tCXN0cnVjdCBicF9sb2NhdGlvbiAqbG9jOwotLQlpbnQg Y291bnQgPSAxOwotLQotLQlmb3IgKGxvYyA9IGItPmxvYzsgbG9jOyBsb2MgPSBsb2MtPm5leHQp Ci0tCSAgewotLQkgICAgY2hhciBsb2NhdGlvbls1MF07Ci0tCi0tCSAgICBpZiAoc2luZ2xlKQot LQkgICAgICB4c25wcmludGYgKGxvY2F0aW9uLCBzaXplb2YgKGxvY2F0aW9uKSwgIiVkIiwgYi0+ bnVtYmVyKTsKLS0JICAgIGVsc2UKLS0JICAgICAgeHNucHJpbnRmIChsb2NhdGlvbiwgc2l6ZW9m IChsb2NhdGlvbiksICAiJWQuJWQiLCBiLT5udW1iZXIsCi0tCQkJIGNvdW50KTsKLSsJewotKwkg IGNoYXIgbnVtYmVyWzUwXTsKLSAKLS0JICAgIGlmIChzdHJuY21wIChsb2NhdGlvbiwgdGV4dCwg bGVuKSA9PSAwKQotLQkgICAgICBWRUNfc2FmZV9wdXNoIChjaGFyX3B0ciwgcmVzdWx0LCB4c3Ry ZHVwIChsb2NhdGlvbikpOwotKwkgIHhzbnByaW50ZiAobnVtYmVyLCBzaXplb2YgKG51bWJlciks ICIlZCIsIGItPm51bWJlcik7Ci0gCi0tCSAgICArK2NvdW50OwotLQkgIH0KLS0gICAgICB9Ci0r CSAgaWYgKHN0cm5jbXAgKG51bWJlciwgdGV4dCwgbGVuKSA9PSAwKQotKwkgICAgVkVDX3NhZmVf cHVzaCAoY2hhcl9wdHIsIHJlc3VsdCwgeHN0cmR1cCAobnVtYmVyKSk7Ci0rCX0KLSAKLSAgICAg ICByZXR1cm4gcmVzdWx0OwotICAgICB9Ci0jIyMgc3JjL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9n CTIwMTMvMDUvMDMgMTY6MjY6MzIJMS4zNTgwLjIuMjAKLSMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9D aGFuZ2VMb2cJMjAxMy8wNS8wNyAxNzowNDo1NwkxLjM1ODAuMi4yMQotIyMgLTEsMyArMSwxMSBA QAotKzIwMTMtMDUtMDcgIFNlcmdpbyBEdXJpZ2FuIEp1bmlvciAgPHNlcmdpb2RqQHJlZGhhdC5j b20+Ci0rCi0rCVBSIGJyZWFrcG9pbnRzLzE1NDEzOgotKwkqIGdkYi5iYXNlL3BlbmRpbmcuZXhw OiBBZGQgdGVzdCBmb3IgY29tcGxldGlvbiBvZiB0aGUgImNvbmRpdGlvbiIKLSsJY29tbWFuZCBm b3IgcGVuZGluZyBicmVha3BvaW50cy4KLSsJKiBnZGIubGluZXNwZWMvbGluZXNwZWMuZXg6IEFk ZCB0ZXN0IGZvciBjb21wbGV0aW9uIG9mIHRoZQotKwkiY29uZGl0aW9uIiBjb21tYW5kIHdoZW4g ZGVhbGluZyB3aXRoIG11bHRpcGxlIGxvY2F0aW9ucy4KLSsKLSAyMDEzLTA1LTAzICBIYWZpeiBB YmlkIFFhZGVlciAgPGFiaWRoQGNvZGVzb3VyY2VyeS5jb20+Ci0gCi0gCSogc3RhdHVzLXN0b3Au ZXhwICh0ZXN0X3RzdGFydF90c3RhcnQpOiBDaGVjayBmb3IgZXJyb3IKLS0tLSBzcmMvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9wZW5kaW5nLmV4cAkyMDEzLzAxLzAxIDA2OjMzOjI2CTEuMjcKLSsr KyBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9wZW5kaW5nLmV4cAkyMDEzLzA1LzA3IDE3OjA0 OjU3CTEuMjcuMi4xCi1AQCAtNTUsNiArNTUsOSBAQAotICAgICAgfQotIH0KLSAKLSsjIENvbXBs ZXRlIHRoZSBjb25kaXRpb24gKFBSIDE1NDEzKS4KLStnZGJfdGVzdCAiY29tcGxldGUgY29uZGl0 aW9uICIgImNvbmRpdGlvbiAxIgotKwotIGdkYl90ZXN0ICJpbmZvIGJyZWFrIiBcCi0gICAgICJO dW0gICAgIFR5cGVcWyBcXStEaXNwIEVuYiBBZGRyZXNzXFsgXF0rV2hhdC4qCi0gXFswLTlcXStc W1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeS4qUEVORElORy4qcGVuZGZ1bmMxLioiIFwKLS0t LSBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIubGluZXNwZWMvbGluZXNwZWMuZXhwCTIwMTMvMDEvMDEg MDY6NDE6MjQJMS42Ci0rKysgc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmxpbmVzcGVjL2xpbmVzcGVj LmV4cAkyMDEzLzA1LzA3IDE3OjA0OjU3CTEuNi4yLjEKLUBAIC02Myw2ICs2MywxMCBAQAotICAg ICAiQnJlYWtwb2ludCAkZGVjaW1hbCBhdCAkaGV4OiBkdXBuYW1lOmxhYmVsLiBcWyhcXTIgbG9j YXRpb25zXFspXF0iIFwKLSAgICAgIm11bHRpLWxvY2F0aW9uIGJyZWFrIHVzaW5nIGR1cGxpY2F0 ZSBmdW5jdGlvbiBuYW1lIGFuZCBsYWJlbCIKLSAKLSsjIFRlc3RpbmcgaWYgdGhlICJjb25kaXRp b24iIGNvbW1hbmQgY29tcGxldGVzIG9ubHkgdGhlIGJyZWFrcG9pbnRzLAotKyMgbm90IHRoZSBs b2NhdGlvbnMuCi0rZ2RiX3Rlc3QgImNvbXBsZXRlIGNvbmRpdGlvbiAiICJjb25kaXRpb24gJGRl Y2ltYWxcclxuY29uZGl0aW9uICRkZWNpbWFsXHJcbmNvbmRpdGlvbiAkZGVjaW1hbCIKLSsKLSBn ZGJfdGVzdF9ub19vdXRwdXQgInNldCBicmVha3BvaW50IHBlbmRpbmcgb2ZmIiBcCi0gICAgICJk aXNhYmxlIHBlbmRpbmcgYnJlYWtwb2ludHMgZm9yIGxpbmVzcGVjIHRlc3RzIgotIAotCi0KLQot aHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD05Njc5MTUKLWh0dHA6 Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTMtMDUvbXNnMDAxNDYuaHRtbAotCi0jIyMg c3JjL2dkYi9DaGFuZ2VMb2cJMjAxMy8wNS8xNyAxODowOTowNQkxLjE1NTY5Ci0jIyMgc3JjL2dk Yi9DaGFuZ2VMb2cJMjAxMy8wNS8xNyAyMzowNTowMAkxLjE1NTcwCi0jIyAtMSwzICsxLDkgQEAK LSsyMDEzLTA1LTE3ICBFZGp1bmlvciBNYWNoYWRvICA8ZW1hY2hhZG9AbGludXgudm5ldC5pYm0u Y29tPgotKwotKwkqIHBwYy1saW51eC1uYXQuYyAocHBjX2xpbnV4X3JlZ2lvbl9va19mb3JfaHdf d2F0Y2hwb2ludCk6IENoZWNrIGlmIHRoZQotKwlyZWdpb24gaXMgb2sgZm9yIGEgaGFyZHdhcmUg d2F0Y2hwb2ludCB1c2luZyB0aGUgbmV3IHB0cmFjZSBpbnRlcmZhY2UKLSsJb24gUG93ZXIgc2Vy dmVycy4KLSsKLSAyMDEzLTA1LTE3ICBEb3VnIEV2YW5zICA8ZGplQGdvb2dsZS5jb20+Ci0gCi0g CSogTkVXUzogTWVudGlvbiBuZXcgbWFpbnRlbmFuY2UgY29tbWFuZHMgY2hlY2stc3ltdGFicywg YW5kCi0tLS0gc3JjL2dkYi9wcGMtbGludXgtbmF0LmMJMjAxMy8wNS8wNyAwNzo0MzozMwkxLjEx OQotKysrIHNyYy9nZGIvcHBjLWxpbnV4LW5hdC5jCTIwMTMvMDUvMTcgMjM6MDU6MDAJMS4xMjAK LUBAIC0xNTAzLDE2ICsxNTAzLDE5IEBACi0gICAgICB0byBkZXRlcm1pbmUgdGhlIGhhcmRjb2Rl ZCB3YXRjaGFibGUgcmVnaW9uIGZvciB3YXRjaHBvaW50cy4gICovCi0gICBpZiAoaGF2ZV9wdHJh Y2VfYm9va2VfaW50ZXJmYWNlICgpKQotICAgICB7Ci0tICAgICAgLyogREFDLWJhc2VkIHByb2Nl c3NvcnMgKGkuZS4sIGVtYmVkZGVkIHByb2Nlc3NvcnMpLCBsaWtlIHRoZSBQb3dlclBDIDQ0MAot LQkgaGF2ZSByYW5nZWQgd2F0Y2hwb2ludHMgYW5kIGNhbiB3YXRjaCBhbnkgYWNjZXNzIHdpdGhp biBhbiBhcmJpdHJhcnkKLS0JIG1lbW9yeSByZWdpb24uICBUaGlzIGlzIHVzZWZ1bCB0byB3YXRj aCBhcnJheXMgYW5kIHN0cnVjdHMsIGZvcgotLQkgaW5zdGFuY2UuICBJdCB0YWtlcyB0d28gaGFy ZHdhcmUgd2F0Y2hwb2ludHMgdGhvdWdoLiAgKi8KLSsgICAgICAvKiBFbWJlZGRlZCBEQUMtYmFz ZWQgcHJvY2Vzc29ycywgbGlrZSB0aGUgUG93ZXJQQyA0NDAgaGF2ZSByYW5nZWQKLSsJIHdhdGNo cG9pbnRzIGFuZCBjYW4gd2F0Y2ggYW55IGFjY2VzcyB3aXRoaW4gYW4gYXJiaXRyYXJ5IG1lbW9y eQotKwkgcmVnaW9uLiBUaGlzIGlzIHVzZWZ1bCB0byB3YXRjaCBhcnJheXMgYW5kIHN0cnVjdHMs IGZvciBpbnN0YW5jZS4gIEl0Ci0rICAgICAgICAgdGFrZXMgdHdvIGhhcmR3YXJlIHdhdGNocG9p bnRzIHRob3VnaC4gICovCi0gICAgICAgaWYgKGxlbiA+IDEKLS0JICAmJiBib29rZV9kZWJ1Z19p bmZvLmZlYXR1cmVzICYgUFBDX0RFQlVHX0ZFQVRVUkVfREFUQV9CUF9SQU5HRSkKLSsJICAmJiBi b29rZV9kZWJ1Z19pbmZvLmZlYXR1cmVzICYgUFBDX0RFQlVHX0ZFQVRVUkVfREFUQV9CUF9SQU5H RQotKwkgICYmIHBwY19saW51eF9nZXRfaHdjYXAgKCkgJiBQUENfRkVBVFVSRV9CT09LRSkKLSAJ cmV0dXJuIDI7Ci0tICAgICAgZWxzZSBpZiAoYm9va2VfZGVidWdfaW5mby5kYXRhX2JwX2FsaWdu bWVudAotLQkgICAgICAgJiYgKGFkZHIgKyBsZW4gPiAoYWRkciAmIH4oYm9va2VfZGVidWdfaW5m by5kYXRhX2JwX2FsaWdubWVudCAtIDEpKQotLQkJICAgKyBib29rZV9kZWJ1Z19pbmZvLmRhdGFf YnBfYWxpZ25tZW50KSkKLSsgICAgICAvKiBTZXJ2ZXIgcHJvY2Vzc29ycyBwcm92aWRlIG9uZSBo YXJkd2FyZSB3YXRjaHBvaW50IGFuZCBhZGRyK2xlbiBzaG91bGQKLSsgICAgICAgICBmYWxsIGlu IHRoZSB3YXRjaGFibGUgcmVnaW9uIHByb3ZpZGVkIGJ5IHRoZSBwdHJhY2UgaW50ZXJmYWNlLiAg Ki8KLSsgICAgICBpZiAoYm9va2VfZGVidWdfaW5mby5kYXRhX2JwX2FsaWdubWVudAotKwkgICYm IChhZGRyICsgbGVuID4gKGFkZHIgJiB+KGJvb2tlX2RlYnVnX2luZm8uZGF0YV9icF9hbGlnbm1l bnQgLSAxKSkKLSsJICAgICAgKyBib29rZV9kZWJ1Z19pbmZvLmRhdGFfYnBfYWxpZ25tZW50KSkK LSAJcmV0dXJuIDA7Ci0gICAgIH0KLSAgIC8qIGFkZHIrbGVuIG11c3QgZmFsbCBpbiB0aGUgOCBi eXRlIHdhdGNoYWJsZSByZWdpb24gZm9yIERBQlItYmFzZWQKCmRpZmYgLS1naXQgYS9nZGItdmRz by1nY29yZS5wYXRjaCBiL2dkYi12ZHNvLWdjb3JlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCA0ZmRiYzgxLi4wMDAwMDAwCi0tLSBhL2dkYi12ZHNvLWdjb3JlLnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dk Yi1wYXRjaGVzLzIwMTMtMDUvbXNnMDAwNDIuaHRtbAotU3ViamVjdDogW3BhdGNoXSBGaXggZ2Nv cmUgZm9yIHZEU08gKG9uIHBwYzY0KQotCi1IaSwKLQotb24gcHBjNjQgR05VL0xpbnV4IG9uZSBn ZXRzIGluIGxpdmUgcHJvY2VzcyBvciBrZXJuZWwtZ2VuZXJhdGVkIGNvcmUgZmlsZToKLQotIzAg IDB4MDAwMDNmZmY5ZTk0NmIzYyBpbiBfX3BhdXNlX25vY2FuY2VsICgpIGZyb20gL2xpYjY0L2xp YmMuc28uNgotIzEgIDB4MDAwMDAwMDAxMDAwMDgwYyBpbiBoYW5kbGVfYWxybSAoc2lnbm89MTQp IGF0IHNtYWxsLmM6MTYKLSMyICA8c2lnbmFsIGhhbmRsZXIgY2FsbGVkPgotIzMgIDB4MDAwMDNm ZmY5ZTk0NmIzYyBpbiBfX3BhdXNlX25vY2FuY2VsICgpIGZyb20gL2xpYjY0L2xpYmMuc28uNgot IzQgIDB4MDAwMDAwMDAxMDAwMDkxNCBpbiBtYWluIChhcmdjPTIsIGFyZ3Y9MHgzZmZmY2QwMGRl YzgpIGF0IHNtYWxsLmM6MzIKLQotd2hpbGUgd2l0aCBnY29yZSBnZW5lcmF0ZWQgY29yZSBmaWxl IG9uZSBnZXRzOgotCi0jMCAgMHgwMDAwM2ZmZjllOTQ2YjNjIGluIF9fcGF1c2Vfbm9jYW5jZWwg KCkgZnJvbSAvbGliNjQvbGliYy5zby42Ci0jMSAgMHgwMDAwMDAwMDEwMDAwODBjIGluIGhhbmRs ZV9hbHJtIChzaWdubz0xNCkgYXQgc21hbGwuYzoxNgotIzIgIDB4MDAwMDNmZmY5ZWE3MDQ0OCBp biA/PyAoKQotIzMgIDB4MDAwMDAwMDAxMDAwMDkxNCBpbiBtYWluIChhcmdjPTIsIGFyZ3Y9MHgz ZmZmY2QwMGRlYzgpIGF0IHNtYWxsLmM6MzIKLQotVGhpcyBpcyBiZWNhdXNlIG9uIHBwYzY0IEdO VS9MaW51eCB0aGUgc2lnbmFsIGhhbmRsZXIgZnJhbWUgaXMgaW4gdkRTTyAoYW5kCi1ub3QgaW4g bGliYyBhcyBvbiB4ODZfNjQgR05VL0xpbnV4KS4gIEFuZCBpZiBvbmUgaGFzIGtlcm5lbC1kZWJ1 Z2luZm8KLWluc3RhbGxlZCBHREIgZ2NvcmUgdGhpbmtzIGl0IGNhbiBvbWl0IHRoZSB2RFNPIHBh Z2UgZnJvbSBjb3JlIGZpbGUuCi0KLUFzIHZEU08gY2Fubm90IGJlIHJlbGlhYmx5IGZvdW5kIGZy b20gbGlua19tYXAgaXQgc2hvdWxkIGJlIHJhdGhlciBmdWxseQotcHJlc2VudCBpbiB0aGUgY29y ZSBmaWxlLiAgV2hpY2ggYWxzbyBnY29yZV9jcmVhdGVfY2FsbGJhY2sgdHJpZXMgdG8gZG8gYnV0 IGl0Ci1nZXRzIG1pc3Rha2VuIGJ5IHRoZSBzZXBhcmF0ZSBkZWJ1ZyBpbmZvLgotCi1JdCBzZWVt cyBwcmV0dHkgb2J2aW91cyBwYXRjaCB0byBtZS4KLQotCi1UaGFua3MsCi1KYW4KLQotCi1nZGIv Ci0yMDEzLTA1LTAzICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ Ci0KLQkqIGdjb3JlLmMgKGdjb3JlX2NyZWF0ZV9jYWxsYmFjayk6IElnbm9yZSBzZWN0aW9ucyB3 aXRoCi0Jc2VwYXJhdGVfZGVidWdfb2JqZmlsZV9iYWNrbGluayAhPSBOVUxMLgotCi0tLS0gZ2Ri LTcuNi1vcmlnL2dkYi9nY29yZS5jCTIwMTMtMDEtMDEgMDc6MzI6NDIuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuNi9nZGIvZ2NvcmUuYwkyMDEzLTA1LTAzIDAzOjMxOjM0Ljc5NTMxMjk5NiAr MDIwMAotQEAgLTQyOCw4ICs0MjgsOSBAQCBnY29yZV9jcmVhdGVfY2FsbGJhY2sgKENPUkVfQURE UiB2YWRkciwKLSAKLSAJICAgICBUaGlzIEJGRCB3YXMgc3ludGhlc2l6ZWQgZnJvbSByZWFkaW5n IHRhcmdldCBtZW1vcnksCi0gCSAgICAgd2UgZG9uJ3Qgd2FudCB0byBvbWl0IHRoYXQuICAqLwot LQkgIGlmICgoKHZhZGRyID49IHN0YXJ0ICYmIHZhZGRyICsgc2l6ZSA8PSBlbmQpCi0tCSAgICAg ICB8fCAoc3RhcnQgPj0gdmFkZHIgJiYgZW5kIDw9IHZhZGRyICsgc2l6ZSkpCi0rCSAgaWYgKG9i amZpbGUtPnNlcGFyYXRlX2RlYnVnX29iamZpbGVfYmFja2xpbmsgPT0gTlVMTAotKwkgICAgICAm JiAoKHZhZGRyID49IHN0YXJ0ICYmIHZhZGRyICsgc2l6ZSA8PSBlbmQpCi0rCSAgICAgICAgICB8 fCAoc3RhcnQgPj0gdmFkZHIgJiYgZW5kIDw9IHZhZGRyICsgc2l6ZSkpCi0gCSAgICAgICYmICEo YmZkX2dldF9maWxlX2ZsYWdzIChhYmZkKSAmIEJGRF9JTl9NRU1PUlkpKQotIAkgICAgewotIAkg ICAgICBmbGFncyAmPSB+KFNFQ19MT0FEIHwgU0VDX0hBU19DT05URU5UUyk7Ci0KCmRpZmYgLS1n aXQgYS9nZGIuc3BlYyBiL2dkYi5zcGVjCmluZGV4IGJiZTZlZGYuLjQ3MWUwMGUgMTAwNjQ0Ci0t LSBhL2dkYi5zcGVjCisrKyBiL2dkYi5zcGVjCkBAIC0yNywyMiArMjcsMjMgQEAKIFN1bW1hcnk6 IEEgR05VIHNvdXJjZS1sZXZlbCBkZWJ1Z2dlciBmb3IgQywgQysrLCBGb3J0cmFuLCBHbyBhbmQg b3RoZXIgbGFuZ3VhZ2VzCiBOYW1lOiAlez9zY2xfcHJlZml4fWdkYgogCi0jZ2xvYmFsIHNuYXAg ICAgICAgMjAxMzA0MjMKKyMgNmU1Yzk1ZTZjZjFlM2MzN2JkM2E4MjJjYTllNjcyMWNhYWI5N2E4 NQorJWdsb2JhbCBzbmFwICAgICAgIDIwMTMwNzMxCiAjIEZyZWV6ZSBpdCB3aGVuIEdEQiBnZXRz IGJyYW5jaGVkCi0lZ2xvYmFsIHNuYXBzcmMgICAgMjAxMzAzMTIKKyVnbG9iYWwgc25hcHNyYyAg ICAyMDEzMDczMQogIyBTZWUgdGltZXN0YW1wIG9mIHNvdXJjZSBnbnVsaWIgaW5zdGFsbGVkIGlu dG8gZ2RiL2dudWxpYi8gLgogJWdsb2JhbCBzbmFwZ251bGliIDIwMTIxMjEzCi1WZXJzaW9uOiA3 LjYKK1ZlcnNpb246IDcuNi41MC4le3NuYXB9CiAKICMgVGhlIHJlbGVhc2UgYWx3YXlzIGNvbnRh aW5zIGEgbGVhZGluZyByZXNlcnZlZCBudW1iZXIsIHN0YXJ0IGl0IGF0IDEuCiAjIGB1cHN0cmVh bScgaXMgbm90IGEgcGFydCBvZiBgbmFtZScgdG8gc3RheSBmdWxseSBycG0gZGVwZW5kZW5jaWVz IGNvbXBhdGlibGUgZm9yIHRoZSB0ZXN0aW5nLgotUmVsZWFzZTogMzYlez9kaXN0fQorUmVsZWFz ZTogMSV7P2Rpc3R9CiAKIExpY2Vuc2U6IEdQTHYzKyBhbmQgR1BMdjMrIHdpdGggZXhjZXB0aW9u cyBhbmQgR1BMdjIrIGFuZCBHUEx2Misgd2l0aCBleGNlcHRpb25zIGFuZCBHUEwrIGFuZCBMR1BM djIrIGFuZCBCU0QgYW5kIFB1YmxpYyBEb21haW4KIEdyb3VwOiBEZXZlbG9wbWVudC9EZWJ1Z2dl cnMKICMgRG8gbm90IHByb3ZpZGUgVVJMIGZvciBzbmFwc2hvdHMgYXMgdGhlIGZpbGUgbGFzdHMg dGhlcmUgb25seSBmb3IgMiBkYXlzLgogIyBmdHA6Ly9zb3VyY2V3YXJlLm9yZy9wdWIvZ2RiL3Jl bGVhc2VzL2dkYi0le3ZlcnNpb259LnRhci5iejIKLVNvdXJjZTogZnRwOi8vc291cmNld2FyZS5v cmcvcHViL2dkYi9yZWxlYXNlcy9nZGItJXt2ZXJzaW9ufS50YXIuYnoyCitTb3VyY2U6IGdkYi0l e3ZlcnNpb259LWN2cy50YXIuYnoyCiBCdWlsZHJvb3Q6ICUobWt0ZW1wIC11ZCAle190bXBwYXRo fS8le25hbWV9LSV7dmVyc2lvbn0tJXtyZWxlYXNlfS1YWFhYWFgpCiBVUkw6IGh0dHA6Ly9nbnUu b3JnL3NvZnR3YXJlL2dkYi8KIApAQCAtNTEsNyArNTIsNyBAQCBPYnNvbGV0ZXM6IGRldnRvb2xz ZXQtMS4wLSV7cGtnX25hbWV9CiAlZW5kaWYKIAogIyBGb3Igb3VyIGNvbnZlbmllbmNlCi0lZ2xv YmFsIGdkYl9zcmMgJXtwa2dfbmFtZX0tJXt2ZXJzaW9ufQorJWdsb2JhbCBnZGJfc3JjICV7cGtn X25hbWV9LSV7dmVyc2lvbn0tY3ZzCiAlZ2xvYmFsIGdkYl9idWlsZCBidWlsZC0le190YXJnZXRf cGxhdGZvcm19CiAKICMgTWFrZSBzdXJlIHdlIGdldCByaWQgb2YgdGhlIG9sZCBwYWNrYWdlIGdk YjY0LCBub3cgdGhhdCB3ZSBoYXZlIHVuaWZpZWQKQEAgLTI2MiwxMiArMjYzLDcgQEAgUGF0Y2gy MzE6IGdkYi02LjMtYnoyMDI2ODktZXhlYy1mcm9tLXB0aHJlYWQtdGVzdC5wYXRjaAogCiAjIEJh Y2twb3J0ZWQgZml4dXBzIHBvc3QgdGhlIHNvdXJjZSB0YXJiYWxsLgogI1hkcm9wOiBKdXN0IGJh Y2twb3J0cy4KLVBhdGNoMjMyOiBnZGItdXBzdHJlYW0ucGF0Y2gKLVBhdGNoODI4OiBnZGItdXBz dHJlYW0tbWFuLWdjb3JlLTFvZjIucGF0Y2gKLVBhdGNoODI5OiBnZGItdXBzdHJlYW0tbWFuLWdj b3JlLTJvZjIucGF0Y2gKLSMgQmFja3BvcnRlZCBQeXRob24gZnJhbWUgZmlsdGVycyAoUGhpbCBN dWxkb29uKS4KLVBhdGNoODM2OiBnZGItdXBzdHJlYW0tZnJhbWVmaWx0ZXJzLTFvZjIucGF0Y2gK LVBhdGNoODM3OiBnZGItdXBzdHJlYW0tZnJhbWVmaWx0ZXJzLTJvZjIucGF0Y2gKKyNQYXRjaDIz MjogZ2RiLXVwc3RyZWFtLnBhdGNoCiAKICMgVGVzdGNhc2UgZm9yIFBQQyBQb3dlcjYvREZQIGlu c3RydWN0aW9ucyBkaXNhc3NlbWJseSAoQlogMjMwMDAwKS4KICM9ZmVkb3JhdGVzdCtwcGMKQEAg LTUwNCwyMCArNTAwLDYgQEAgUGF0Y2g1NDg6IGdkYi10ZXN0LWV4cHItY3VtdWxhdGl2ZS1hcmNo ZXIucGF0Y2gKICM9cHVzaCt3b3JrCiBQYXRjaDU3OTogZ2RiLTcuMi41MC1zcGFyYy1hZGQtd29y a2Fyb3VuZC10by1icm9rZW4tZGVidWctZmlsZXMucGF0Y2gKIAotIyBGaXggZGxvcGVuIG9mIGxp YnB0aHJlYWQuc28sIHBhdGNoZWQgZ2xpYmMgcmVxdWlyZWQgKEdhcnkgQmVuc29uLCBCWiA2Njk0 MzIpLgotIyBGaXggY3Jhc2ggcmVncmVzc2lvbiBmcm9tIHRoZSBkbG9wZW4gb2YgbGlicHRocmVh ZC5zbyBmaXggKEJaIDkxMTcxMikuCi0jIEZpeCBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIHdoZW4g aW5mZXJpb3Igb3BlbnMgbWFueSBsaWJyYXJpZXMgKEdhcnkgQmVuc29uKS4KLSM9ZHJvcAotUGF0 Y2g3MTg6IGdkYi1kbG9wZW4tc3RhcC1wcm9iZS0xb2Y5LnBhdGNoCi1QYXRjaDcxOTogZ2RiLWRs b3Blbi1zdGFwLXByb2JlLTJvZjkucGF0Y2gKLVBhdGNoNzIwOiBnZGItZGxvcGVuLXN0YXAtcHJv YmUtM29mOS5wYXRjaAotUGF0Y2g3MjE6IGdkYi1kbG9wZW4tc3RhcC1wcm9iZS00b2Y5LnBhdGNo Ci1QYXRjaDcyMjogZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTVvZjkucGF0Y2gKLVBhdGNoNzIzOiBn ZGItZGxvcGVuLXN0YXAtcHJvYmUtNm9mOS5wYXRjaAotUGF0Y2g4MjI6IGdkYi1kbG9wZW4tc3Rh cC1wcm9iZS03b2Y5LnBhdGNoCi1QYXRjaDgyNzogZ2RiLWRsb3Blbi1zdGFwLXByb2JlLThvZjku cGF0Y2gKLVBhdGNoNjE5OiBnZGItZGxvcGVuLXN0YXAtcHJvYmUtOW9mOS5wYXRjaAotCiAjIFdv cmsgYXJvdW5kIFBSIGxpYmMvMTMwOTcgImxpbnV4LXZkc28uc28uMSIgd2FybmluZyBtZXNzYWdl LgogIz1wdXNoCiBQYXRjaDYyNzogZ2RiLWdsaWJjLXZkc28td29ya2Fyb3VuZC5wYXRjaApAQCAt NTMzLDggKzUxNSw2IEBAIFBhdGNoNjQyOiBnZGItcmVhZGxpbmU2Mi1hc2stbW9yZS1yaC5wYXRj aAogIyBQcmludCByZWFzb25zIGZvciBmYWlsZWQgYXR0YWNoL3NwYXduIGluY2wuIFNFTGludXgg ZGVueV9wdHJhY2UgKEJaIDc4Njg3OCkuCiAjPXB1c2gKIFBhdGNoNjUzOiBnZGItYXR0YWNoLWZh aWwtcmVhc29ucy01b2Y1LnBhdGNoCi0jPWZlZG9yYQotUGF0Y2g2NTc6IGdkYi1hdHRhY2gtZmFp bC1yZWFzb25zLTVvZjVjb25maWd1cmUucGF0Y2gKIAogIyBXb3JrYXJvdW5kIGNyYXNoZXMgZnJv bSBzdGFsZSBmcmFtZV9pbmZvIHBvaW50ZXIgKEJaIDgwNDI1NikuCiAjPWZlZG9yYQpAQCAtNTY5 LDI0ICs1NDksNiBAQCBQYXRjaDgxODogZ2RiLXJoYno3OTU0MjQtYml0cG9zLWxhenl2YWx1ZS5w YXRjaAogIz1mZWRvcmF0ZXN0CiBQYXRjaDgzMjogZ2RiLXJoYno5NDc1NjQtZmluZHZhci1hc3Nl cnRpb24tZnJhbWUtZmFpbGVkLXRlc3RjYXNlLnBhdGNoCiAKLSMgRml4IGdjb3JlIGZvciB2RFNP IChvbiBwcGM2NCkuCi0jPWRyb3AKLVBhdGNoODM0OiBnZGItdmRzby1nY29yZS5wYXRjaAotCi0j IEZpeCBuZWVkbGVzcyBleHBhbnNpb24gb2Ygbm9uLWdkYmluZGV4IHN5bXRhYnMgKERvdWcgRXZh bnMpLgotIz1kcm9wCi1QYXRjaDgzNTogZ2RiLXBzeW10YWItZXhwYW5kLnBhdGNoCi0KLSMgRml4 IEMrKyBsb29rdXBzIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24gKERvdWcgRXZhbnMsIEJaIDk3MjY3 NykuCi0jPWRyb3AKLVBhdGNoODM4OiBnZGItY3h4LXBlcmZvcm1hbmNlLTFvZjIucGF0Y2gKLVBh dGNoODM5OiBnZGItY3h4LXBlcmZvcm1hbmNlLTJvZjIucGF0Y2gKLQotIyBbcHBjXSBTdXBwb3J0 IFBvd2VyOCBDUFUgKElCTSwgQlogNzMxODc1KS4KLSM9ZHJvcAotUGF0Y2g4NDA6IGdkYi1wb3dl cjgtMW9mMi5wYXRjaAotUGF0Y2g4NDE6IGdkYi1wb3dlcjgtMm9mMi5wYXRjaAotCiAlaWYgMCV7 IT9yaGVsOjF9IHx8IDAlez9yaGVsfSA+IDYKICMgUkxfU1RBVEVfRkVET1JBX0dEQiB3b3VsZCBu b3QgYmUgZm91bmQgZm9yOgogIyBQYXRjaDY0MjogZ2RiLXJlYWRsaW5lNjItYXNrLW1vcmUtcmgu cGF0Y2gKQEAgLTc5Miw5ICs3NTQsNyBAQCBmaW5kIC1uYW1lICIqLmluZm8qInx4YXJncyBybSAt ZgogJXBhdGNoMiAtcDEKIAogJXBhdGNoMzQ5IC1wMQotJXBhdGNoMjMyIC1wMQotJXBhdGNoODI4 IC1wMQotJXBhdGNoODI5IC1wMQorI3BhdGNoMjMyIC1wMQogJXBhdGNoMSAtcDEKICVwYXRjaDMg LXAxCiAKQEAgLTg4MywxOSArODQzLDkgQEAgZmluZCAtbmFtZSAiKi5pbmZvKiJ8eGFyZ3Mgcm0g LWYKICVwYXRjaDU0NyAtcDEKICVwYXRjaDU0OCAtcDEKICVwYXRjaDU3OSAtcDEKLSVwYXRjaDcx OCAtcDEKLSVwYXRjaDcxOSAtcDEKLSVwYXRjaDcyMCAtcDEKLSVwYXRjaDcyMSAtcDEKLSVwYXRj aDcyMiAtcDEKLSVwYXRjaDcyMyAtcDEKLSVwYXRjaDgyMiAtcDEKLSVwYXRjaDgyNyAtcDEKLSVw YXRjaDYxOSAtcDEKICVwYXRjaDYyNyAtcDEKICVwYXRjaDYzNCAtcDEKICVwYXRjaDY1MyAtcDEK LSVwYXRjaDY1NyAtcDEKICVwYXRjaDY2MSAtcDEKICVwYXRjaDY5MCAtcDEKICVwYXRjaDY5OCAt cDEKQEAgLTkwOCwxOSArODU4LDcgQEAgZmluZCAtbmFtZSAiKi5pbmZvKiJ8eGFyZ3Mgcm0gLWYK ICVwYXRjaDgxNyAtcDEKICVwYXRjaDgxOCAtcDEKICVwYXRjaDgzMiAtcDEKLSVwYXRjaDgzNCAt cDEKLSVwYXRjaDgzNSAtcDEKLSVwYXRjaDgzOCAtcDEKLSVwYXRjaDgzOSAtcDEKLSVwYXRjaDg0 MCAtcDEKLSVwYXRjaDg0MSAtcDEKLQotJXBhdGNoODM2IC1wMQotJXBhdGNoODM3IC1wMQotJWlm IDAlez9zY2w6MX0KLSVwYXRjaDgzNiAtcDEgLVIKLSVwYXRjaDgzNyAtcDEgLVIKLSVlbmRpZgor CiAlcGF0Y2gzOTMgLXAxCiAlaWYgMCV7IT9lbDU6MX0gfHwgMCV7P3NjbDoxfQogJXBhdGNoMzkz IC1wMSAtUgpAQCAtMTQyMiw2ICsxMzYwLDkgQEAgZmkKICVlbmRpZiAjIDAleyE/ZWw1OjF9IHx8 ICIle190YXJnZXRfY3B1fSIgPT0gIm5vYXJjaCIKIAogJWNoYW5nZWxvZworKiBGcmkgQXVnICAy IDIwMTMgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy42LjUw LjIwMTMwNzMxLTEuZmMyMAorLSBSZWJhc2UgdG8gRlNGIEdEQiA3LjYuNTAuMjAxMzA3MzEgKHBy ZS03LjYgc25hcHNob3QpLgorCiAqIE1vbiBKdWwgMjkgMjAxMyBKYW4gS3JhdG9jaHZpbCA8amFu LmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjYtMzYuZmMyMAogLSBSZW1vdmUgJSV7Z2RiX2Rv Y2Rpcn0sIHJlYnVpbGQgZm9yIHVudmVyc2lvbmVkIGRvY2RpcnMgKGZvciBCWiA5ODY4NzEpLgog CgpkaWZmIC0tZ2l0IGEvc291cmNlcyBiL3NvdXJjZXMKaW5kZXggMWY5ZmE1Yi4uMjA1NTE2NCAx MDA2NDQKLS0tIGEvc291cmNlcworKysgYi9zb3VyY2VzCkBAIC0xLDIgKzEsMyBAQAogNDk4MTMw N2FhOTYxOWJiZWM1YjczMjYxZTRlNDFjOGQgIGdkYi1saWJzdGRjKystdjMtcHl0aG9uLXIxNTU5 NzgudGFyLmJ6MgotZmRhNTcxNzBlNGQxMWNkZGU3NDI1OWNhNTc1NDEyYTggIGdkYi03LjYudGFy LmJ6MgorOGNlNGU3NTc3OTAxMzllM2YwNzY1MmEyYjQ5ZDc5ZmYgIGdkYi03LjYuNTAuMjAxMzA2 MjQudGFyLmJ6MgorZjE2YzMzYmRkOWQwMDMwZDBjMmE0MmQ1ZjMxOWY4NDEgIGdkYi03LjYuNTAu MjAxMzA3MzEtY3ZzLnRhci5iejIK