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: tjuhasz To: git-commits@fedoraproject.org Subject: [rpms/nodejs22] f44: Update to version 22.23.1 (rhbz#2477273). Date: Tue, 21 Jul 2026 08:43:36 GMT Message-ID: <178462341637.1.3829381893363617922.rpms-nodejs22-a6c2f2b329af@fedoraproject.org> List-ID: X-Git-Repo: rpms/nodejs22 X-Git-Branch: f44 X-Git-Rev: a6c2f2b329af0acc4d20e6507c4b3a72de8f5501 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvbm9kZWpzMjIKICAgICAgICAgICAgQnJhbmNoIDogZjQ0CiAgICAgICAgICAg IENvbW1pdCA6IGE2YzJmMmIzMjlhZjBhY2M0ZDIwZTY1MDdjNGIzYTcyZGU4ZjU1MDEKICAgICAg ICAgICAgQXV0aG9yIDogdGp1aGFzeiA8dGp1aGFzekByZWRoYXQuY29tPgogICAgICAgICAgICBE YXRlICAgOiAyMDI2LTA3LTIwVDE2OjExOjQ5KzAyOjAwCiAgICAgICAgICAgIFN0YXRzICA6ICsz Mi8tNzc0MSBpbiAzIGZpbGUocykKICAgICAgICAgICAgVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVk b3JhcHJvamVjdC5vcmcvcnBtcy9ub2RlanMyMi9jL2E2YzJmMmIzMjlhZjBhY2M0ZDIwZTY1MDdj NGIzYTcyZGU4ZjU1MDE/YnJhbmNoPWY0NAoKICAgICAgICAgICAgTG9nOgogICAgICAgICAgICBV cGRhdGUgdG8gdmVyc2lvbiAyMi4yMy4xIChyaGJ6IzI0NzcyNzMpLgoKRml4IGZvcjoKQ1ZFLTIw MjYtNjczMyAtICB1bmRpY2kgdnVsbmVyYWJsZSB0byBIVFRQIHJlc3BvbnNlIHF1ZXVlIHBvaXNv bmluZyB2aWEga2VlcC1hbGl2ZSBzb2NrZXQgcmV1c2UKIChyaGJ6IzI0OTAyMTIpCkNWRS0yMDI2 LTExNTI1IC0gdW5kaWNpOiBXZWFrZW5pbmcgb2YgY29va2llIFNhbWVTaXRlIHBvbGljeSBkdWUg dG8gaW5jb3JyZWN0IHBhcnNpbmcgb2YgU2V0LUNvb2tpZSBoZWFkZXIKIChyaGJ6IzI0OTAyMDgp CkNWRS0yMDI2LTEyMTUxIC0gIHVuZGljaTogRGVuaWFsIG9mIFNlcnZpY2UgZHVlIHRvIHVuYm91 bmRlZCBtZW1vcnkgZ3Jvd3RoIHZpYSBXZWJTb2NrZXQgZnJhbWVzCiAocmhieiMyNDkwMjIxKQpD VkUtMjAyNi05Njc5IC0gdW5kaWNpIHZ1bG5lcmFibGUgdG8gSFRUUCBoZWFkZXIgaW5qZWN0aW9u IHZpYSBTZXQtQ29va2llIHBlcmNlbnQtZGVjb2RpbmcKIChyaGJ6IzI0OTAyMDApCkNWRS0yMDI2 LTQ4NjE4IHRsczogbm9ybWFsaXplIGhvc3RuYW1lIGZvciBzZXJ2ZXIgaWRlbnRpdHkgY2hlY2tz LgogKHJoYnojMjQ5MzgxMSkKQ1ZFLTIwMjYtNDg5MzMgY3J5cHRvOiBndWFyZCBXZWJDcnlwdG8g Y2lwaGVyIG91dHB1dCBsZW5ndGguCiAocmhieiMyNDkzODAyKQpDVkUtMjAyNi00ODkzMCBkbnMs bmV0OiByZWplY3QgaG9zdG5hbWVzIHdpdGggZW1iZWRkZWQgTlVMIGJ5dGVzLgogKHJoYnojMjQ5 MzgzNikKQ1ZFLTIwMjYtNDg2MTkgaHR0cDI6IGNhcCBvcmlnaW5TZXQgc2l6ZSB0byBwcmV2ZW50 IHVuYm91bmRlZCBtZW1vcnkgZ3Jvd3RoLgogKHJoYnojMjQ5MzczMykKQ1ZFLTIwMjYtNDg2MTUg bGliLHRlc3Q6IHJlZGFjdCBwcm94eSBjcmVkZW50aWFscyBpbiB0dW5uZWwgZXJyb3JzLgogKHJo YnojMjQ5MzgxOSkKQ1ZFLTIwMjYtNDg5MzQgdGxzOiBiaW5kIHJldXNhYmxlIHNlc3Npb25zIHRv IGF1dGhlbnRpY2F0ZWQgaG9zdC4KIChyaGJ6IzI0OTM4MjYpCkNWRS0yMDI2LTQ4OTI4IHRsczog Zml4IGNhc2Utc2Vuc2l0aXZlIFNOSSBjb250ZXh0IG1hdGNoaW5nLgogKHJoYnojMjQ5MzgyMikK Q1ZFLTIwMjYtNDg5MzUgcGVybWlzc2lvbjogZGlzYWJsZSBGaWxlSGFuZGxlIHV0aW1lcyB3aXRo IHBlcm1pc3Npb24gbW9kZWwuCiAocmhieiMyNDkzODMwKQpDVkUtMjAyNi00ODkzNiAtIExvY2Fs IHNlcnZlciBjYW4gYmUgc3RhcnRlZCB3aXRob3V0IG5ldHdvcmsgcGVybWlzc2lvbiB2aWEgUGVy bWlzc2lvbiBBUEkgZmxhdwogKHJoYnojMjQ5MzgxNSkKCkNWRS0yMDI2LTQ4OTM3IGRlcHM6IGZp eCBpbnRlZ3JhdGlvbiBpc3N1ZXMgd2l0aCB0aGUgbGF0ZXN0IG5naHR0cDIuCkNWRS0yMDI2LTQ4 OTMxIGh0dHA6IGZpeCByZXNwb25zZSBxdWV1ZSBwb2lzb25pbmcgaW4gaHR0cC5BZ2VudC4KQ1ZF LTIwMjYtNDg2MTcgcGVybWlzc2lvbjogaGFuZGxlIHByb2Nlc3MuY2hkaXIgb24gd3JpdGVyZXBv cnQuCgotLS0KZGlmZiAtLWdpdCBhLzAwMDEtZGVwcy11cGRhdGUtbmdodHRwMi10by0xLjY4LjEu cGF0Y2ggYi8wMDAxLWRlcHMtdXBkYXRlLW5naHR0cDItdG8tMS42OC4xLnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTdkNzNkLi4wMDAwMDAwCi0tLSBhLzAwMDEtZGVwcy11 cGRhdGUtbmdodHRwMi10by0xLjY4LjEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NzEyICsw LDAgQEAKLUZyb20gY2Q3Y2Q2ZGZlMWZmZDM1ODMyZjc5N2ZlNzk0MmY0Y2NkMWQ1MWQwNyBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFuZHJlaSBSYWRjaGVua28gPGFyYWRjaGVuQHJl ZGhhdC5jb20+Ci1EYXRlOiBUaHUsIDI2IE1hciAyMDI2IDExOjMyOjE4ICswMTAwCi1TdWJqZWN0 OiBbUEFUQ0hdIGRlcHM6IHVwZGF0ZSBuZ2h0dHAyIHRvIDEuNjguMQotCi0tLS0KLSBkZXBzL25n aHR0cDIvbGliL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgfCAgIDQwICstCi0gZGVwcy9u Z2h0dHAyL2xpYi9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgIHwgICAgMiArLQotIGRlcHMv bmdodHRwMi9saWIvTWFrZWZpbGUuaW4gICAgICAgICAgICAgICAgICB8ICAgIDYgKy0KLSBkZXBz L25naHR0cDIvbGliL2NvbmZpZy5jbWFrZS5pbiAgICAgICAgICAgICAgfCAgICAzICsKLSBkZXBz L25naHR0cDIvbGliL2luY2x1ZGVzL01ha2VmaWxlLmluICAgICAgICAgfCAgICA0ICsKLSBkZXBz L25naHR0cDIvbGliL2luY2x1ZGVzL25naHR0cDIvbmdodHRwMi5oICAgfCAgMzE1ICsrLS0tCi0g Li4uL25naHR0cDIvbGliL2luY2x1ZGVzL25naHR0cDIvbmdodHRwMnZlci5oIHwgICAgNCArLQot IGRlcHMvbmdodHRwMi9saWIvbmdodHRwMl9hbHBuLmggICAgICAgICAgICAgICB8ICAgIDQgKy0K LSBkZXBzL25naHR0cDIvbGliL25naHR0cDJfYnVmLmggICAgICAgICAgICAgICAgfCAgICA0ICst Ci0gZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2NhbGxiYWNrcy5jICAgICAgICAgIHwgICAgNSAr Ci0gZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2NhbGxiYWNrcy5oICAgICAgICAgIHwgICAgNSAr LQotIGRlcHMvbmdodHRwMi9saWIvbmdodHRwMl9kZWJ1Zy5jICAgICAgICAgICAgICB8ICAgIDQg Ky0KLSBkZXBzL25naHR0cDIvbGliL25naHR0cDJfZGVidWcuaCAgICAgICAgICAgICAgfCAgICA4 ICstCi0gZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2V4dHByaS5oICAgICAgICAgICAgIHwgICAg NCArLQotIGRlcHMvbmdodHRwMi9saWIvbmdodHRwMl9mcmFtZS5jICAgICAgICAgICAgICB8ICAg MTAgKwotIGRlcHMvbmdodHRwMi9saWIvbmdodHRwMl9mcmFtZS5oICAgICAgICAgICAgICB8ICAg IDQgKy0KLSBkZXBzL25naHR0cDIvbGliL25naHR0cDJfaGQuYyAgICAgICAgICAgICAgICAgfCAg IDExICsKLSBkZXBzL25naHR0cDIvbGliL25naHR0cDJfaGQuaCAgICAgICAgICAgICAgICAgfCAg ICA0ICstCi0gZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2hkX2h1ZmZtYW4uaCAgICAgICAgIHwg ICAgNCArLQotIGRlcHMvbmdodHRwMi9saWIvbmdodHRwMl9oZWxwZXIuaCAgICAgICAgICAgICB8 ICAgIDQgKy0KLSBkZXBzL25naHR0cDIvbGliL25naHR0cDJfaHR0cC5jICAgICAgICAgICAgICAg fCAgIDE3ICstCi0gZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2h0dHAuaCAgICAgICAgICAgICAg IHwgICAgNCArLQotIGRlcHMvbmdodHRwMi9saWIvbmdodHRwMl9pbnQuaCAgICAgICAgICAgICAg ICB8ICAgMTAgKy0KLSBkZXBzL25naHR0cDIvbGliL25naHR0cDJfbWFwLmMgICAgICAgICAgICAg ICAgfCAgIDcwICstCi0gZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX21hcC5oICAgICAgICAgICAg ICAgIHwgICAgOSArLQotIGRlcHMvbmdodHRwMi9saWIvbmdodHRwMl9tZW0uaCAgICAgICAgICAg ICAgICB8ICAgIDQgKy0KLSBkZXBzL25naHR0cDIvbGliL25naHR0cDJfbmV0LmggICAgICAgICAg ICAgICAgfCAgIDE2ICstCi0gZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX29wdGlvbi5jICAgICAg ICAgICAgIHwgICAgNyArCi0gZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX29wdGlvbi5oICAgICAg ICAgICAgIHwgICAxMCArLQotIGRlcHMvbmdodHRwMi9saWIvbmdodHRwMl9vdXRib3VuZF9pdGVt LmggICAgICB8ICAgIDQgKy0KLSBkZXBzL25naHR0cDIvbGliL25naHR0cDJfcHEuaCAgICAgICAg ICAgICAgICAgfCAgICA0ICstCi0gZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX3ByaW9yaXR5X3Nw ZWMuaCAgICAgIHwgICAgNCArLQotIGRlcHMvbmdodHRwMi9saWIvbmdodHRwMl9xdWV1ZS5oICAg ICAgICAgICAgICB8ICAgIDQgKy0KLSBkZXBzL25naHR0cDIvbGliL25naHR0cDJfcmF0ZWxpbS5o ICAgICAgICAgICAgfCAgICA0ICstCi0gZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX3JjYnVmLmgg ICAgICAgICAgICAgIHwgICAgNCArLQotIGRlcHMvbmdodHRwMi9saWIvbmdodHRwMl9zZXNzaW9u LmMgICAgICAgICAgICB8IDExNjMgKysrKysrLS0tLS0tLS0tLS0KLSBkZXBzL25naHR0cDIvbGli L25naHR0cDJfc2Vzc2lvbi5oICAgICAgICAgICAgfCAgMTQ3ICstLQotIGRlcHMvbmdodHRwMi9s aWIvbmdodHRwMl9zdHJlYW0uYyAgICAgICAgICAgICB8ICA4NDcgKy0tLS0tLS0tLS0tCi0gZGVw cy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX3N0cmVhbS5oICAgICAgICAgICAgIHwgIDE2MSArLS0KLSBk ZXBzL25naHR0cDIvbGliL25naHR0cDJfc3VibWl0LmMgICAgICAgICAgICAgfCAgMTY0ICstLQot IGRlcHMvbmdodHRwMi9saWIvbmdodHRwMl9zdWJtaXQuaCAgICAgICAgICAgICB8ICAgIDQgKy0K LSBkZXBzL25naHR0cDIvbGliL25naHR0cDJfdGltZS5jICAgICAgICAgICAgICAgfCAgIDE1ICst Ci0gZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX3RpbWUuaCAgICAgICAgICAgICAgIHwgICAgNCAr LQotIGRlcHMvbmdodHRwMi9saWIvbmdodHRwMl92ZXJzaW9uLmMgICAgICAgICAgICB8ICAgIDIg Ky0KLSBkZXBzL25naHR0cDIvbGliL3NmcGFyc2UuYyAgICAgICAgICAgICAgICAgICAgfCAxMTQw ICsrKysrKysrKysrKy0tLS0KLSBkZXBzL25naHR0cDIvbGliL3NmcGFyc2UuaCAgICAgICAgICAg ICAgICAgICAgfCAgMzEzICsrKy0tCi0gNDYgZmlsZXMgY2hhbmdlZCwgMTgzNCBpbnNlcnRpb25z KCspLCAyNzQyIGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBkZXBzL25naHR0cDIv bGliL2NvbmZpZy5jbWFrZS5pbgotCi1kaWZmIC0tZ2l0IGEvZGVwcy9uZ2h0dHAyL2xpYi9DTWFr ZUxpc3RzLnR4dCBiL2RlcHMvbmdodHRwMi9saWIvQ01ha2VMaXN0cy50eHQKLWluZGV4IGZkYThk Y2I3Li45OGUzZGJlNyAxMDA2NDQKLS0tLSBhL2RlcHMvbmdodHRwMi9saWIvQ01ha2VMaXN0cy50 eHQKLSsrKyBiL2RlcHMvbmdodHRwMi9saWIvQ01ha2VMaXN0cy50eHQKLUBAIC00Nyw3ICs0Nywy OSBAQCBpZihXSU4zMikKLSAgIHNldChOR0hUVFAyX1JFUyAke0NNQUtFX0NVUlJFTlRfQklOQVJZ X0RJUn0vdmVyc2lvbi5yYykKLSBlbmRpZigpCi0gCi0tc2V0KEVYUE9SVF9TRVQgIiR7UFJPSkVD VF9OQU1FfS10YXJnZXRzIikKLStzZXQoTkdIVFRQMl9HRU5FUkFURURfRElSICIke0NNQUtFX0NV UlJFTlRfQklOQVJZX0RJUn0vZ2VuZXJhdGVkIikKLStzZXQoTkdIVFRQMl9WRVJTSU9OX0NPTkZJ RyAiJHtOR0hUVFAyX0dFTkVSQVRFRF9ESVJ9LyR7UFJPSkVDVF9OQU1FfUNvbmZpZ1ZlcnNpb24u Y21ha2UiKQotK3NldChOR0hUVFAyX1BST0pFQ1RfQ09ORklHICIke05HSFRUUDJfR0VORVJBVEVE X0RJUn0vJHtQUk9KRUNUX05BTUV9Q29uZmlnLmNtYWtlIikKLStzZXQoTkdIVFRQMl9UQVJHRVRT X0VYUE9SVF9OQU1FICIke1BST0pFQ1RfTkFNRX1UYXJnZXRzIikKLStzZXQoTkdIVFRQMl9DT05G SUdfSU5TVEFMTF9ESVIgImxpYi9jbWFrZS8ke1BST0pFQ1RfTkFNRX0iKQotK3NldChOR0hUVFAy X05BTUVTUEFDRSAiJHtQUk9KRUNUX05BTUV9OjoiKQotK3NldChOR0hUVFAyX1ZFUlNJT04gJHtQ Uk9KRUNUX1ZFUlNJT059KQotKwotK2luY2x1ZGUoQ01ha2VQYWNrYWdlQ29uZmlnSGVscGVycykK LSt3cml0ZV9iYXNpY19wYWNrYWdlX3ZlcnNpb25fZmlsZSgKLSsgICIke05HSFRUUDJfVkVSU0lP Tl9DT05GSUd9IiBWRVJTSU9OICR7TkdIVFRQMl9WRVJTSU9OfSBDT01QQVRJQklMSVRZIFNhbWVN YWpvclZlcnNpb24KLSspCi0rY29uZmlndXJlX2ZpbGUoIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0Vf RElSfS9jb25maWcuY21ha2UuaW4iICIke05HSFRUUDJfUFJPSkVDVF9DT05GSUd9IiBAT05MWSkK LSsKLSsjIEluc3RhbGwgY21ha2UgY29uZmlnIGZpbGVzCi0raW5zdGFsbCgKLSsgIEZJTEVTICIk e05HSFRUUDJfUFJPSkVDVF9DT05GSUd9IiAiJHtOR0hUVFAyX1ZFUlNJT05fQ09ORklHfSIKLSsg IERFU1RJTkFUSU9OICIke05HSFRUUDJfQ09ORklHX0lOU1RBTExfRElSfSIpCi0rCi0raW5zdGFs bCgKLSsgIEVYUE9SVCAiJHtOR0hUVFAyX1RBUkdFVFNfRVhQT1JUX05BTUV9IgotKyAgTkFNRVNQ QUNFICIke05HSFRUUDJfTkFNRVNQQUNFfSIKLSsgIERFU1RJTkFUSU9OICIke05HSFRUUDJfQ09O RklHX0lOU1RBTExfRElSfSIpCi0gCi0gIyBQdWJsaWMgc2hhcmVkIGxpYnJhcnkKLSBpZihCVUlM RF9TSEFSRURfTElCUykKLUBAIC02NSw3ICs4NywxMSBAQCBpZihCVUlMRF9TSEFSRURfTElCUykK LSAgICAgJDxJTlNUQUxMX0lOVEVSRkFDRToke0NNQUtFX0lOU1RBTExfSU5DTFVERURJUn0+Ci0g ICApCi0gCi0tICBpbnN0YWxsKFRBUkdFVFMgJHtTSEFSRURfTElCfSBFWFBPUlQgJHtFWFBPUlRf U0VUfSkKLSsgIGluc3RhbGwoVEFSR0VUUyAke1NIQVJFRF9MSUJ9Ci0rICAgIEVYUE9SVCAke05H SFRUUDJfVEFSR0VUU19FWFBPUlRfTkFNRX0KLSsgICAgQVJDSElWRSBERVNUSU5BVElPTiAiJHtD TUFLRV9JTlNUQUxMX0xJQkRJUn0iCi0rICAgIExJQlJBUlkgREVTVElOQVRJT04gIiR7Q01BS0Vf SU5TVEFMTF9MSUJESVJ9IgotKyAgICBSVU5USU1FIERFU1RJTkFUSU9OICIke0NNQUtFX0lOU1RB TExfQklORElSfSIpCi0gICBsaXN0KEFQUEVORCBuZ2h0dHAyX2V4cG9ydHMgJHtTSEFSRURfTElC fSkKLSBlbmRpZigpCi0gCi1AQCAtODcsNyArMTEzLDkgQEAgaWYoQlVJTERfU1RBVElDX0xJQlMp Ci0gCi0gICB0YXJnZXRfY29tcGlsZV9kZWZpbml0aW9ucygke1NUQVRJQ19MSUJ9IFBVQkxJQyAi LUROR0hUVFAyX1NUQVRJQ0xJQiIpCi0gCi0tICBpbnN0YWxsKFRBUkdFVFMgJHtTVEFUSUNfTElC fSBFWFBPUlQgJHtFWFBPUlRfU0VUfSkKLSsgIGluc3RhbGwoVEFSR0VUUyAke1NUQVRJQ19MSUJ9 Ci0rICAgIEVYUE9SVCAke05HSFRUUDJfVEFSR0VUU19FWFBPUlRfTkFNRX0KLSsgICAgQVJDSElW RSBERVNUSU5BVElPTiAiJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0iKQotICAgbGlzdChBUFBFTkQg bmdodHRwMl9leHBvcnRzICR7U1RBVElDX0xJQn0pCi0gZW5kaWYoKQotIAotQEAgLTk3LDExICsx MjUsNyBAQCBlbHNlKCkKLSAgIHNldChMSUJfU0VMRUNURUQgJHtTVEFUSUNfTElCfSkKLSBlbmRp ZigpCi0gCi0tYWRkX2xpYnJhcnkoJHtQUk9KRUNUX05BTUV9OjpuZ2h0dHAyIEFMSUFTICR7TElC X1NFTEVDVEVEfSkKLSthZGRfbGlicmFyeShuZ2h0dHAyIEFMSUFTICR7TElCX1NFTEVDVEVEfSkK LSAKLSBpbnN0YWxsKEZJTEVTICIke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vbGlibmdodHRw Mi5wYyIKLSAgIERFU1RJTkFUSU9OICIke0NNQUtFX0lOU1RBTExfTElCRElSfS9wa2djb25maWci KQotLQotLWluc3RhbGwoRVhQT1JUICR7RVhQT1JUX1NFVH0KLS0gIERFU1RJTkFUSU9OICR7Q01B S0VfSU5TVEFMTF9MSUJESVJ9L2NtYWtlLyR7UFJPSkVDVF9OQU1FfQotLSAgTkFNRVNQQUNFICR7 UFJPSkVDVF9OQU1FfTo6KQotZGlmZiAtLWdpdCBhL2RlcHMvbmdodHRwMi9saWIvTWFrZWZpbGUu YW0gYi9kZXBzL25naHR0cDIvbGliL01ha2VmaWxlLmFtCi1pbmRleCAxMTY4YzFlNi4uM2E3NDNk ZjYgMTAwNjQ0Ci0tLS0gYS9kZXBzL25naHR0cDIvbGliL01ha2VmaWxlLmFtCi0rKysgYi9kZXBz L25naHR0cDIvbGliL01ha2VmaWxlLmFtCi1AQCAtMjIsNyArMjIsNyBAQAotICMgV0lUSCBUSEUg U09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0g U1VCRElSUyA9IGluY2x1ZGVzCi0gCi0tRVhUUkFfRElTVCA9IE1ha2VmaWxlLm1zdmMgQ01ha2VM aXN0cy50eHQgdmVyc2lvbi5yYy5pbgotK0VYVFJBX0RJU1QgPSBNYWtlZmlsZS5tc3ZjIENNYWtl TGlzdHMudHh0IHZlcnNpb24ucmMuaW4gY29uZmlnLmNtYWtlLmluCi0gCi0gQU1fQ0ZMQUdTID0g JChXQVJOQ0ZMQUdTKSAkKEVYVFJBQ0ZMQUcpCi0gQU1fQ1BQRkxBR1MgPSAtSSQoc3JjZGlyKS9p bmNsdWRlcyAtSSQoYnVpbGRkaXIpL2luY2x1ZGVzIC1EQlVJTERJTkdfTkdIVFRQMiBcCi1kaWZm IC0tZ2l0IGEvZGVwcy9uZ2h0dHAyL2xpYi9NYWtlZmlsZS5pbiBiL2RlcHMvbmdodHRwMi9saWIv TWFrZWZpbGUuaW4KLWluZGV4IDE0Njg2ZWYxLi5iYjQ1OGExOCAxMDA2NDQKLS0tLSBhL2RlcHMv bmdodHRwMi9saWIvTWFrZWZpbGUuaW4KLSsrKyBiL2RlcHMvbmdodHRwMi9saWIvTWFrZWZpbGUu aW4KLUBAIC0zNjAsNiArMzYwLDEwIEBAIExJQk5HSFRUUDNfTElCUyA9IEBMSUJOR0hUVFAzX0xJ QlNACi0gTElCTkdUQ1AyX0NGTEFHUyA9IEBMSUJOR1RDUDJfQ0ZMQUdTQAotIExJQk5HVENQMl9D UllQVE9fQk9SSU5HU1NMX0NGTEFHUyA9IEBMSUJOR1RDUDJfQ1JZUFRPX0JPUklOR1NTTF9DRkxB R1NACi0gTElCTkdUQ1AyX0NSWVBUT19CT1JJTkdTU0xfTElCUyA9IEBMSUJOR1RDUDJfQ1JZUFRP X0JPUklOR1NTTF9MSUJTQAotK0xJQk5HVENQMl9DUllQVE9fTElCUkVTU0xfQ0ZMQUdTID0gQExJ Qk5HVENQMl9DUllQVE9fTElCUkVTU0xfQ0ZMQUdTQAotK0xJQk5HVENQMl9DUllQVE9fTElCUkVT U0xfTElCUyA9IEBMSUJOR1RDUDJfQ1JZUFRPX0xJQlJFU1NMX0xJQlNACi0rTElCTkdUQ1AyX0NS WVBUT19PU1NMX0NGTEFHUyA9IEBMSUJOR1RDUDJfQ1JZUFRPX09TU0xfQ0ZMQUdTQAotK0xJQk5H VENQMl9DUllQVE9fT1NTTF9MSUJTID0gQExJQk5HVENQMl9DUllQVE9fT1NTTF9MSUJTQAotIExJ Qk5HVENQMl9DUllQVE9fUVVJQ1RMU19DRkxBR1MgPSBATElCTkdUQ1AyX0NSWVBUT19RVUlDVExT X0NGTEFHU0AKLSBMSUJOR1RDUDJfQ1JZUFRPX1FVSUNUTFNfTElCUyA9IEBMSUJOR1RDUDJfQ1JZ UFRPX1FVSUNUTFNfTElCU0AKLSBMSUJOR1RDUDJfQ1JZUFRPX1dPTEZTU0xfQ0ZMQUdTID0gQExJ Qk5HVENQMl9DUllQVE9fV09MRlNTTF9DRkxBR1NACi1AQCAtNDkyLDcgKzQ5Niw3IEBAIHRvcF9z cmNkaXIgPSBAdG9wX3NyY2RpckAKLSAjIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwg QVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgotICMgV0lUSCBUSEUgU09GVFdB UkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0gU1VCRElS UyA9IGluY2x1ZGVzCi0tRVhUUkFfRElTVCA9IE1ha2VmaWxlLm1zdmMgQ01ha2VMaXN0cy50eHQg dmVyc2lvbi5yYy5pbgotK0VYVFJBX0RJU1QgPSBNYWtlZmlsZS5tc3ZjIENNYWtlTGlzdHMudHh0 IHZlcnNpb24ucmMuaW4gY29uZmlnLmNtYWtlLmluCi0gQU1fQ0ZMQUdTID0gJChXQVJOQ0ZMQUdT KSAkKEVYVFJBQ0ZMQUcpCi0gQU1fQ1BQRkxBR1MgPSAtSSQoc3JjZGlyKS9pbmNsdWRlcyAtSSQo YnVpbGRkaXIpL2luY2x1ZGVzIC1EQlVJTERJTkdfTkdIVFRQMiBcCi0gCUBERUZTQAotZGlmZiAt LWdpdCBhL2RlcHMvbmdodHRwMi9saWIvY29uZmlnLmNtYWtlLmluIGIvZGVwcy9uZ2h0dHAyL2xp Yi9jb25maWcuY21ha2UuaW4KLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMC4u MGI2Nzc3MTgKLS0tLSAvZGV2L251bGwKLSsrKyBiL2RlcHMvbmdodHRwMi9saWIvY29uZmlnLmNt YWtlLmluCi1AQCAtMCwwICsxLDMgQEAKLStpbmNsdWRlKENNYWtlRmluZERlcGVuZGVuY3lNYWNy bykKLSsKLStpbmNsdWRlKCIke0NNQUtFX0NVUlJFTlRfTElTVF9ESVJ9L0BOR0hUVFAyX1RBUkdF VFNfRVhQT1JUX05BTUVALmNtYWtlIikKLWRpZmYgLS1naXQgYS9kZXBzL25naHR0cDIvbGliL2lu Y2x1ZGVzL01ha2VmaWxlLmluIGIvZGVwcy9uZ2h0dHAyL2xpYi9pbmNsdWRlcy9NYWtlZmlsZS5p bgotaW5kZXggNzc4ZGNiODcuLmE0Njg3MzkwIDEwMDY0NAotLS0tIGEvZGVwcy9uZ2h0dHAyL2xp Yi9pbmNsdWRlcy9NYWtlZmlsZS5pbgotKysrIGIvZGVwcy9uZ2h0dHAyL2xpYi9pbmNsdWRlcy9N YWtlZmlsZS5pbgotQEAgLTI2NSw2ICsyNjUsMTAgQEAgTElCTkdIVFRQM19MSUJTID0gQExJQk5H SFRUUDNfTElCU0AKLSBMSUJOR1RDUDJfQ0ZMQUdTID0gQExJQk5HVENQMl9DRkxBR1NACi0gTElC TkdUQ1AyX0NSWVBUT19CT1JJTkdTU0xfQ0ZMQUdTID0gQExJQk5HVENQMl9DUllQVE9fQk9SSU5H U1NMX0NGTEFHU0AKLSBMSUJOR1RDUDJfQ1JZUFRPX0JPUklOR1NTTF9MSUJTID0gQExJQk5HVENQ Ml9DUllQVE9fQk9SSU5HU1NMX0xJQlNACi0rTElCTkdUQ1AyX0NSWVBUT19MSUJSRVNTTF9DRkxB R1MgPSBATElCTkdUQ1AyX0NSWVBUT19MSUJSRVNTTF9DRkxBR1NACi0rTElCTkdUQ1AyX0NSWVBU T19MSUJSRVNTTF9MSUJTID0gQExJQk5HVENQMl9DUllQVE9fTElCUkVTU0xfTElCU0AKLStMSUJO R1RDUDJfQ1JZUFRPX09TU0xfQ0ZMQUdTID0gQExJQk5HVENQMl9DUllQVE9fT1NTTF9DRkxBR1NA Ci0rTElCTkdUQ1AyX0NSWVBUT19PU1NMX0xJQlMgPSBATElCTkdUQ1AyX0NSWVBUT19PU1NMX0xJ QlNACi0gTElCTkdUQ1AyX0NSWVBUT19RVUlDVExTX0NGTEFHUyA9IEBMSUJOR1RDUDJfQ1JZUFRP X1FVSUNUTFNfQ0ZMQUdTQAotIExJQk5HVENQMl9DUllQVE9fUVVJQ1RMU19MSUJTID0gQExJQk5H VENQMl9DUllQVE9fUVVJQ1RMU19MSUJTQAotIExJQk5HVENQMl9DUllQVE9fV09MRlNTTF9DRkxB R1MgPSBATElCTkdUQ1AyX0NSWVBUT19XT0xGU1NMX0NGTEFHU0AKLWRpZmYgLS1naXQgYS9kZXBz L25naHR0cDIvbGliL2luY2x1ZGVzL25naHR0cDIvbmdodHRwMi5oIGIvZGVwcy9uZ2h0dHAyL2xp Yi9pbmNsdWRlcy9uZ2h0dHAyL25naHR0cDIuaAotaW5kZXggMmVmNDliOGQuLjE5YzE4NzRmIDEw MDY0NAotLS0tIGEvZGVwcy9uZ2h0dHAyL2xpYi9pbmNsdWRlcy9uZ2h0dHAyL25naHR0cDIuaAot KysrIGIvZGVwcy9uZ2h0dHAyL2xpYi9pbmNsdWRlcy9uZ2h0dHAyL25naHR0cDIuaAotQEAgLTIw MzksMTggKzIwMzksMTkgQEAgdHlwZWRlZiBpbnQgKCpuZ2h0dHAyX29uX2hlYWRlcl9jYWxsYmFj azIpKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAvKioKLSAgKiBAZnVuY3R5cGVkZWYKLSAg KgotLSAqIENhbGxiYWNrIGZ1bmN0aW9uIGludm9rZWQgd2hlbiBhIGludmFsaWQgaGVhZGVyIG5h bWUvdmFsdWUgcGFpciBpcwotKyAqIENhbGxiYWNrIGZ1bmN0aW9uIGludm9rZWQgd2hlbiBhbiBp bnZhbGlkIGhlYWRlciBuYW1lL3ZhbHVlIHBhaXIgaXMKLSAgKiByZWNlaXZlZCBmb3IgdGhlIHxm cmFtZXwuCi0gICoKLSAgKiBUaGUgcGFyYW1ldGVyIGFuZCBiZWhhdmlvdXIgYXJlIHNpbWlsYXIg dG8KLSAgKiA6dHlwZTpgbmdodHRwMl9vbl9oZWFkZXJfY2FsbGJhY2tgLiAgVGhlIGRpZmZlcmVu Y2UgaXMgdGhhdCB0aGlzCi0tICogY2FsbGJhY2sgaXMgb25seSBpbnZva2VkIHdoZW4gYSBpbnZh bGlkIGhlYWRlciBuYW1lL3ZhbHVlIHBhaXIgaXMKLS0gKiByZWNlaXZlZCB3aGljaCBpcyB0cmVh dGVkIGFzIHN0cmVhbSBlcnJvciBpZiB0aGlzIGNhbGxiYWNrIGlzIG5vdAotLSAqIHNldC4gIE9u bHkgaW52YWxpZCByZWd1bGFyIGhlYWRlciBmaWVsZCBhcmUgcGFzc2VkIHRvIHRoaXMKLS0gKiBj YWxsYmFjay4gIEluIG90aGVyIHdvcmRzLCBpbnZhbGlkIHBzZXVkbyBoZWFkZXIgZmllbGQgaXMg bm90Ci0tICogcGFzc2VkIHRvIHRoaXMgY2FsbGJhY2suICBBbHNvIGhlYWRlciBmaWVsZHMgd2hp Y2ggaW5jbHVkZXMgdXBwZXIKLS0gKiBjYXNlZCBsYXR0ZXIgYXJlIGFsc28gdHJlYXRlZCBhcyBl cnJvciB3aXRob3V0IHBhc3NpbmcgdGhlbSB0byB0aGlzCi0tICogY2FsbGJhY2suCi0rICogY2Fs bGJhY2sgaXMgb25seSBpbnZva2VkIHdoZW4gYW4gaW52YWxpZCBoZWFkZXIgbmFtZS92YWx1ZSBw YWlyIGlzCi0rICogcmVjZWl2ZWQgd2hpY2ggaXMgdHJlYXRlZCBhcyBzdHJlYW0gZXJyb3IgaWYg dGhpcyBjYWxsYmFjayByZXR1cm5zCi0rICogOmVudW06YG5naHR0cDJfZXJyb3IuTkdIVFRQMl9F UlJfVEVNUE9SQUxfQ0FMTEJBQ0tfRkFJTFVSRWAgYW5kCi0rICogOnR5cGU6YG5naHR0cDJfb25f aW52YWxpZF9oZWFkZXJfY2FsbGJhY2syYCBpcyBub3Qgc2V0LiAgT25seQotKyAqIGludmFsaWQg cmVndWxhciBoZWFkZXIgZmllbGQgYXJlIHBhc3NlZCB0byB0aGlzIGNhbGxiYWNrLiAgSW4gb3Ro ZXIKLSsgKiB3b3JkcywgaW52YWxpZCBwc2V1ZG8gaGVhZGVyIGZpZWxkIGlzIG5vdCBwYXNzZWQg dG8gdGhpcyBjYWxsYmFjay4KLSsgKiBBbHNvIGhlYWRlciBmaWVsZHMgd2hpY2ggaW5jbHVkZXMg dXBwZXIgY2FzZWQgbGF0dGVyIGFyZSBhbHNvCi0rICogdHJlYXRlZCBhcyBlcnJvciB3aXRob3V0 IHBhc3NpbmcgdGhlbSB0byB0aGlzIGNhbGxiYWNrLgotICAqCi0gICogVGhpcyBjYWxsYmFjayBp cyBvbmx5IGNvbnNpZGVyZWQgaWYgSFRUUCBtZXNzYWdpbmcgdmFsaWRhdGlvbiBpcwotICAqIHR1 cm5lZCBvbiAod2hpY2ggaXMgb24gYnkgZGVmYXVsdCwgc2VlCi1AQCAtMjA3NiwxNyArMjA3Nywx OCBAQCB0eXBlZGVmIGludCAoKm5naHR0cDJfb25faW52YWxpZF9oZWFkZXJfY2FsbGJhY2spKAot IC8qKgotICAqIEBmdW5jdHlwZWRlZgotICAqCi0tICogQ2FsbGJhY2sgZnVuY3Rpb24gaW52b2tl ZCB3aGVuIGEgaW52YWxpZCBoZWFkZXIgbmFtZS92YWx1ZSBwYWlyIGlzCi0rICogQ2FsbGJhY2sg ZnVuY3Rpb24gaW52b2tlZCB3aGVuIGFuIGludmFsaWQgaGVhZGVyIG5hbWUvdmFsdWUgcGFpciBp cwotICAqIHJlY2VpdmVkIGZvciB0aGUgfGZyYW1lfC4KLSAgKgotICAqIFRoZSBwYXJhbWV0ZXIg YW5kIGJlaGF2aW91ciBhcmUgc2ltaWxhciB0bwotICAqIDp0eXBlOmBuZ2h0dHAyX29uX2hlYWRl cl9jYWxsYmFjazJgLiAgVGhlIGRpZmZlcmVuY2UgaXMgdGhhdCB0aGlzCi0tICogY2FsbGJhY2sg aXMgb25seSBpbnZva2VkIHdoZW4gYSBpbnZhbGlkIGhlYWRlciBuYW1lL3ZhbHVlIHBhaXIgaXMK LS0gKiByZWNlaXZlZCB3aGljaCBpcyBzaWxlbnRseSBpZ25vcmVkIGlmIHRoaXMgY2FsbGJhY2sg aXMgbm90IHNldC4KLS0gKiBPbmx5IGludmFsaWQgcmVndWxhciBoZWFkZXIgZmllbGQgYXJlIHBh c3NlZCB0byB0aGlzIGNhbGxiYWNrLiAgSW4KLS0gKiBvdGhlciB3b3JkcywgaW52YWxpZCBwc2V1 ZG8gaGVhZGVyIGZpZWxkIGlzIG5vdCBwYXNzZWQgdG8gdGhpcwotLSAqIGNhbGxiYWNrLiAgQWxz byBoZWFkZXIgZmllbGRzIHdoaWNoIGluY2x1ZGVzIHVwcGVyIGNhc2VkIGxhdHRlciBhcmUKLS0g KiBhbHNvIHRyZWF0ZWQgYXMgZXJyb3Igd2l0aG91dCBwYXNzaW5nIHRoZW0gdG8gdGhpcyBjYWxs YmFjay4KLSsgKiBjYWxsYmFjayBpcyBvbmx5IGludm9rZWQgd2hlbiBhbiBpbnZhbGlkIGhlYWRl ciBuYW1lL3ZhbHVlIHBhaXIgaXMKLSsgKiByZWNlaXZlZCB3aGljaCBpcyBzaWxlbnRseSBpZ25v cmVkIGlmIG5laXRoZXIgdGhpcyBjYWxsYmFjayBub3IKLSsgKiA6dHlwZTpgbmdodHRwMl9vbl9p bnZhbGlkX2hlYWRlcl9jYWxsYmFja2AgaXMgc2V0LiAgT25seSBpbnZhbGlkCi0rICogcmVndWxh ciBoZWFkZXIgZmllbGQgYXJlIHBhc3NlZCB0byB0aGlzIGNhbGxiYWNrLiAgSW4gb3RoZXIgd29y ZHMsCi0rICogaW52YWxpZCBwc2V1ZG8gaGVhZGVyIGZpZWxkIGlzIG5vdCBwYXNzZWQgdG8gdGhp cyBjYWxsYmFjay4gIEFsc28KLSsgKiBoZWFkZXIgZmllbGRzIHdoaWNoIGluY2x1ZGVzIHVwcGVy IGNhc2VkIGxhdHRlciBhcmUgYWxzbyB0cmVhdGVkIGFzCi0rICogZXJyb3Igd2l0aG91dCBwYXNz aW5nIHRoZW0gdG8gdGhpcyBjYWxsYmFjay4KLSAgKgotICAqIFRoaXMgY2FsbGJhY2sgaXMgb25s eSBjb25zaWRlcmVkIGlmIEhUVFAgbWVzc2FnaW5nIHZhbGlkYXRpb24gaXMKLSAgKiB0dXJuZWQg b24gKHdoaWNoIGlzIG9uIGJ5IGRlZmF1bHQsIHNlZQotQEAgLTI0NDUsNiArMjQ0NywxNSBAQCB0 eXBlZGVmIGludCAoKm5naHR0cDJfZXJyb3JfY2FsbGJhY2syKShuZ2h0dHAyX3Nlc3Npb24gKnNl c3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpYl9l cnJvcl9jb2RlLCBjb25zdCBjaGFyICptc2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2l6ZV90IGxlbiwgdm9pZCAqdXNlcl9kYXRhKTsKLSAKLSsvKioKLSsgKiBA ZnVuY3R5cGVkZWYKLSsgKgotKyAqIENhbGxiYWNrIGZ1bmN0aW9uIGludm9rZWQgd2hlbiB1bnBy ZWRpY3RhYmxlIGRhdGEgb2YgfGRlc3RsZW58Ci0rICogYnl0ZXMgYXJlIG5lZWRlZC4gIFRoZSBp bXBsZW1lbnRhdGlvbiBtdXN0IHdyaXRlIHVucHJlZGljdGFibGUgZGF0YQotKyAqIG9mIHxkZXN0 bGVufCBieXRlcyBpbnRvIHRoZSBidWZmZXIgcG9pbnRlZCBieSB8ZGVzdHwuCi0rICovCi0rdHlw ZWRlZiB2b2lkICgqbmdodHRwMl9yYW5kX2NhbGxiYWNrKSh1aW50OF90ICpkZXN0LCBzaXplX3Qg ZGVzdGxlbik7Ci0rCi0gc3RydWN0IG5naHR0cDJfc2Vzc2lvbl9jYWxsYmFja3M7Ci0gCi0gLyoq Ci1AQCAtMjY0OSw3ICsyNjYwLDcgQEAgTkdIVFRQMl9FWFRFUk4gdm9pZCBuZ2h0dHAyX3Nlc3Np b25fY2FsbGJhY2tzX3NldF9vbl9oZWFkZXJfY2FsbGJhY2syKAotIC8qKgotICAqIEBmdW5jdGlv bgotICAqCi0tICogU2V0cyBjYWxsYmFjayBmdW5jdGlvbiBpbnZva2VkIHdoZW4gYSBpbnZhbGlk IGhlYWRlciBuYW1lL3ZhbHVlCi0rICogU2V0cyBjYWxsYmFjayBmdW5jdGlvbiBpbnZva2VkIHdo ZW4gYW4gaW52YWxpZCBoZWFkZXIgbmFtZS92YWx1ZQotICAqIHBhaXIgaXMgcmVjZWl2ZWQuICBJ ZiBib3RoCi0gICogYG5naHR0cDJfc2Vzc2lvbl9jYWxsYmFja3Nfc2V0X29uX2ludmFsaWRfaGVh ZGVyX2NhbGxiYWNrKClgIGFuZAotICAqIGBuZ2h0dHAyX3Nlc3Npb25fY2FsbGJhY2tzX3NldF9v bl9pbnZhbGlkX2hlYWRlcl9jYWxsYmFjazIoKWAgYXJlCi1AQCAtMjY2Miw3ICsyNjczLDcgQEAg TkdIVFRQMl9FWFRFUk4gdm9pZCBuZ2h0dHAyX3Nlc3Npb25fY2FsbGJhY2tzX3NldF9vbl9pbnZh bGlkX2hlYWRlcl9jYWxsYmFjaygKLSAvKioKLSAgKiBAZnVuY3Rpb24KLSAgKgotLSAqIFNldHMg Y2FsbGJhY2sgZnVuY3Rpb24gaW52b2tlZCB3aGVuIGEgaW52YWxpZCBoZWFkZXIgbmFtZS92YWx1 ZQotKyAqIFNldHMgY2FsbGJhY2sgZnVuY3Rpb24gaW52b2tlZCB3aGVuIGFuIGludmFsaWQgaGVh ZGVyIG5hbWUvdmFsdWUKLSAgKiBwYWlyIGlzIHJlY2VpdmVkLgotICAqLwotIE5HSFRUUDJfRVhU RVJOIHZvaWQgbmdodHRwMl9zZXNzaW9uX2NhbGxiYWNrc19zZXRfb25faW52YWxpZF9oZWFkZXJf Y2FsbGJhY2syKAotQEAgLTI4MzMsNiArMjg0NCwxOCBAQCBOR0hUVFAyX0VYVEVSTiB2b2lkIG5n aHR0cDJfc2Vzc2lvbl9jYWxsYmFja3Nfc2V0X2Vycm9yX2NhbGxiYWNrKAotIE5HSFRUUDJfRVhU RVJOIHZvaWQgbmdodHRwMl9zZXNzaW9uX2NhbGxiYWNrc19zZXRfZXJyb3JfY2FsbGJhY2syKAot ICAgbmdodHRwMl9zZXNzaW9uX2NhbGxiYWNrcyAqY2JzLCBuZ2h0dHAyX2Vycm9yX2NhbGxiYWNr MiBlcnJvcl9jYWxsYmFjazIpOwotIAotKy8qKgotKyAqIEBmdW5jdGlvbgotKyAqCi0rICogU2V0 cyBjYWxsYmFjayBmdW5jdGlvbiBpbnZva2VkIHdoZW4gdW5wcmVkaWN0YWJsZSBkYXRhIGlzIG5l ZWRlZC4KLSsgKiBBbHRob3VnaCB0aGlzIGNhbGxiYWNrIGlzIG9wdGlvbmFsIGR1ZSB0byB0aGUg YmFja3dhcmQKLSsgKiBjb21wYXRpYmlsaXR5LCBpdCBpcyByZWNvbW1lbmRlZCB0byBzcGVjaWZ5 IGl0IHRvIGhhcmRlbiB0aGUKLSsgKiBydW50aW1lIGJlaGF2aW9yIGFnYWluc3Qgc3VzcGljaW91 cyBhY3Rpdml0aWVzIG9mIGEgcmVtb3RlCi0rICogZW5kcG9pbnQuCi0rICovCi0rTkdIVFRQMl9F WFRFUk4gdm9pZCBuZ2h0dHAyX3Nlc3Npb25fY2FsbGJhY2tzX3NldF9yYW5kX2NhbGxiYWNrKAot KyAgbmdodHRwMl9zZXNzaW9uX2NhbGxiYWNrcyAqY2JzLCBuZ2h0dHAyX3JhbmRfY2FsbGJhY2sg cmFuZF9jYWxsYmFjayk7Ci0rCi0gLyoqCi0gICogQGZ1bmN0eXBlZGVmCi0gICoKLUBAIC0zMTMz LDE0ICszMTU2LDEyIEBAIG5naHR0cDJfb3B0aW9uX3NldF9tYXhfZGVmbGF0ZV9keW5hbWljX3Rh YmxlX3NpemUobmdodHRwMl9vcHRpb24gKm9wdGlvbiwKLSAvKioKLSAgKiBAZnVuY3Rpb24KLSAg KgotLSAqIFRoaXMgb3B0aW9uIHByZXZlbnRzIHRoZSBsaWJyYXJ5IGZyb20gcmV0YWluaW5nIGNs b3NlZCBzdHJlYW1zIHRvCi0tICogbWFpbnRhaW4gdGhlIHByaW9yaXR5IHRyZWUuICBJZiB0aGlz IG9wdGlvbiBpcyBzZXQgdG8gbm9uemVybywKLS0gKiBhcHBsaWNhdGlvbnMgY2FuIGRpc2NhcmQg Y2xvc2VkIHN0cmVhbSBjb21wbGV0ZWx5IHRvIHNhdmUgbWVtb3J5LgotKyAqIC4uIHdhcm5pbmc6 OgotICAqCi0tICogSWYKLS0gKiA6ZW51bTpgbmdodHRwMl9zZXR0aW5nc19pZC5OR0hUVFAyX1NF VFRJTkdTX05PX1JGQzc1NDBfUFJJT1JJVElFU2AKLS0gKiBvZiB2YWx1ZSBvZiAxIGlzIHN1Ym1p dHRlZCB2aWEgYG5naHR0cDJfc3VibWl0X3NldHRpbmdzKClgLCBhbnkKLS0gKiBjbG9zZWQgc3Ry ZWFtcyBhcmUgbm90IHJldGFpbmVkIHJlZ2FyZGxlc3Mgb2YgdGhpcyBvcHRpb24uCi0rICogICBE ZXByZWNhdGVkLiAgQ2xvc2VkIHN0cmVhbXMgYXJlIG5vdCByZXRhaW5lZCBhbnltb3JlLgotKyAq Ci0rICogVGhpcyBmdW5jdGlvbiB3b3JrcyBhcyBiZWZvcmUsIGJ1dCBpdCBkb2VzIG5vdCB0YWtl IGFueSBlZmZlY3QKLSsgKiBhZ2FpbnN0IDp0eXBlOmBuZ2h0dHAyX3Nlc3Npb25gLgotICAqLwot IE5HSFRUUDJfRVhURVJOIHZvaWQgbmdodHRwMl9vcHRpb25fc2V0X25vX2Nsb3NlZF9zdHJlYW1z KG5naHR0cDJfb3B0aW9uICpvcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZhbCk7Ci1AQCAtMzE3MCwxNiArMzE5MSwx MSBAQCBOR0hUVFAyX0VYVEVSTiB2b2lkIG5naHR0cDJfb3B0aW9uX3NldF9tYXhfc2V0dGluZ3Mo bmdodHRwMl9vcHRpb24gKm9wdGlvbiwKLSAvKioKLSAgKiBAZnVuY3Rpb24KLSAgKgotLSAqIFRo aXMgb3B0aW9uLCBpZiBzZXQgdG8gbm9uemVybywgYWxsb3dzIHNlcnZlciB0byBmYWxsYmFjayB0 bwotLSAqIDpyZmM6YDc1NDBgIHByaW9yaXRpZXMgaWYgU0VUVElOR1NfTk9fUkZDNzU0MF9QUklP UklUSUVTIHdhcyBub3QKLS0gKiByZWNlaXZlZCBmcm9tIGNsaWVudCwgYW5kIHNlcnZlciBzdWJt aXR0ZWQKLS0gKiA6ZW51bTpgbmdodHRwMl9zZXR0aW5nc19pZC5OR0hUVFAyX1NFVFRJTkdTX05P X1JGQzc1NDBfUFJJT1JJVElFU2AKLS0gKiA9IDEgdmlhIGBuZ2h0dHAyX3N1Ym1pdF9zZXR0aW5n cygpYC4gIE1vc3Qgb2YgdGhlIGFkdmFuY2VkCi0tICogZnVuY3Rpb25hbGl0eSBmb3IgUkZDIDc1 NDAgcHJpb3JpdGllcyBhcmUgc3RpbGwgZGlzYWJsZWQuICBUaGlzCi0tICogZmFsbGJhY2sgb25s eSBlbmFibGVzIHRoZSBtaW5pbWFsIGZlYXR1cmUgc2V0IG9mIFJGQyA3NTQwCi0tICogcHJpb3Jp dGllcyB0byBkZWFsIHdpdGggcHJpb3JpdHkgc2lnbmFsaW5nIGZyb20gY2xpZW50LgotKyAqIC4u IHdhcm5pbmc6OgotKyAqICAgIERlcHJlY2F0ZWQuICA6cmZjOmA3NTQwYCBwcmlvcml0aWVzIGhh dmUgYmVlbiByZW1vdmVkLgotICAqCi0tICogQ2xpZW50IHNlc3Npb24gaWdub3JlcyB0aGlzIG9w dGlvbi4KLSsgKiBUaGlzIGZ1bmN0aW9uIHdvcmtzIGFzIGJlZm9yZSwgYnV0IGl0IGRvZXMgbm90 IHRha2UgYW55IGVmZmVjdAotKyAqIGFnYWluc3QgOnR5cGU6YG5naHR0cDJfc2Vzc2lvbmAuCi0g ICovCi0gTkdIVFRQMl9FWFRFUk4gdm9pZAotIG5naHR0cDJfb3B0aW9uX3NldF9zZXJ2ZXJfZmFs bGJhY2tfcmZjNzU0MF9wcmlvcml0aWVzKG5naHR0cDJfb3B0aW9uICpvcHRpb24sCi1AQCAtMzIy NSw2ICszMjQxLDIzIEBAIG5naHR0cDJfb3B0aW9uX3NldF9zdHJlYW1fcmVzZXRfcmF0ZV9saW1p dChuZ2h0dHAyX29wdGlvbiAqb3B0aW9uLAotIE5HSFRUUDJfRVhURVJOIHZvaWQgbmdodHRwMl9v cHRpb25fc2V0X21heF9jb250aW51YXRpb25zKG5naHR0cDJfb3B0aW9uICpvcHRpb24sCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6 ZV90IHZhbCk7Ci0gCi0rLyoqCi0rICogQGZ1bmN0aW9uCi0rICoKLSsgKiBUaGlzIGZ1bmN0aW9u IHNldHMgdGhlIHJhdGUgbGltaXQgZm9yIHRoZSAiZ2xpdGNoZXMiLCB0aGUKLSsgKiBzdXNwaWNp b3VzIGFjdGl2aXRpZXMgZnJvbSBhIHJlbW90ZSBlbmRwb2ludC4gIEl0IGlzIGEgdG9rZW4tYnVj a2V0Ci0rICogYmFzZWQgcmF0ZSBsaW1pdGVyLiAgfGJ1cnN0fCBzcGVjaWZpZXMgdGhlIG51bWJl ciBvZiB0b2tlbnMgdGhhdCBpcwotKyAqIGluaXRpYWxseSBhdmFpbGFibGUuICBUaGUgbWF4aW11 bSBudW1iZXIgb2YgdG9rZW5zIGlzIGNhcHBlZCB0bwotKyAqIHRoaXMgdmFsdWUuICB8cmF0ZXwg c3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgdG9rZW5zIHRoYXQgYXJlCi0rICogcmVnZW5lcmF0ZWQg cGVyIHNlY29uZC4gIFdoZW4gYSBzdXNwaWNpb3VzIGFjdGl2aXR5IGlzIGRldGVjdGVkLAotKyAq IHNvbWUgYW1vdW50IG9mIHRva2VucyBhcmUgY29uc3VtZWQuICBJZiB0aGVyZSBpcyBubyB0b2tl bgotKyAqIGF2YWlsYWJsZSwgR09BV0FZIGlzIHNlbnQgdG8gdGVhciBkb3duIHRoZSBjb25uZWN0 aW9uLiAgfGJ1cnN0fCBhbmQKLSsgKiB8cmF0ZXwgZGVmYXVsdCB0byAxMDAwIGFuZCAzMyByZXNw ZWN0aXZlbHkuCi0rICovCi0rTkdIVFRQMl9FWFRFUk4gdm9pZCBuZ2h0dHAyX29wdGlvbl9zZXRf Z2xpdGNoX3JhdGVfbGltaXQobmdodHRwMl9vcHRpb24gKm9wdGlvbiwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBidXJz dCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1aW50NjRfdCByYXRlKTsKLSsKLSAvKioKLSAgKiBAZnVuY3Rpb24KLSAgKgotQEAgLTQx NzksMzkgKzQyMTIsOSBAQCBOR0hUVFAyX0VYVEVSTiBpbnQgbmdodHRwMl9zZXNzaW9uX2NvbnN1 bWVfc3RyZWFtKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAgKgotICAqICAgRGVwcmVjYXRl ZC4gIDpyZmM6YDc1NDBgIHByaW9yaXRpZXMgYXJlIGRlcHJlY2F0ZWQgYnkKLSAgKiAgIDpyZmM6 YDkxMTNgLiAgQ29uc2lkZXIgbWlncmF0aW5nIHRvIDpyZmM6YDkyMThgIGV4dGVuc2libGUKLS0g KiAgIHByaW9yaXRpemF0aW9uIHNjaGVtZS4gIEluIHRoZSBmdXR1cmUgcmVsZWFzZSBhZnRlciB0 aGUgZW5kIG9mCi0tICogICAyMDI0LCB0aGlzIGZ1bmN0aW9uIHdpbGwgYWx3YXlzIHJldHVybiAw IHdpdGhvdXQgZG9pbmcgYW55dGhpbmcuCi0tICoKLS0gKiBDaGFuZ2VzIHByaW9yaXR5IG9mIGV4 aXN0aW5nIHN0cmVhbSBkZW5vdGVkIGJ5IHxzdHJlYW1faWR8LiAgVGhlCi0tICogbmV3IHByaW9y aXR5IHNwZWNpZmljYXRpb24gaXMgfHByaV9zcGVjfC4KLS0gKgotLSAqIFRoZSBwcmlvcml0eSBp cyBjaGFuZ2VkIHNpbGVudGx5IGFuZCBpbnN0YW50bHksIGFuZCBubyBQUklPUklUWQotLSAqIGZy YW1lIHdpbGwgYmUgc2VudCB0byBub3RpZnkgdGhlIHBlZXIgb2YgdGhpcyBjaGFuZ2UuICBUaGlz Ci0tICogZnVuY3Rpb24gbWF5IGJlIHVzZWZ1bCBmb3Igc2VydmVyIHRvIGNoYW5nZSB0aGUgcHJp b3JpdHkgb2YgcHVzaGVkCi0tICogc3RyZWFtLgotLSAqCi0tICogSWYgfHNlc3Npb258IGlzIGlu aXRpYWxpemVkIGFzIHNlcnZlciwgYW5kIGBgcHJpX3NwZWMtPnN0cmVhbV9pZGBgCi0tICogcG9p bnRzIHRvIHRoZSBpZGxlIHN0cmVhbSwgdGhlIGlkbGUgc3RyZWFtIGlzIGNyZWF0ZWQgaWYgaXQg ZG9lcwotLSAqIG5vdCBleGlzdC4gIFRoZSBjcmVhdGVkIGlkbGUgc3RyZWFtIHdpbGwgZGVwZW5k IG9uIHJvb3Qgc3RyZWFtCi0tICogKHN0cmVhbSAwKSB3aXRoIHdlaWdodCAxNi4KLS0gKgotLSAq IE90aGVyd2lzZSwgaWYgc3RyZWFtIGRlbm90ZWQgYnkgYGBwcmlfc3BlYy0+c3RyZWFtX2lkYGAg aXMgbm90Ci0tICogZm91bmQsIHdlIHVzZSBkZWZhdWx0IHByaW9yaXR5IGluc3RlYWQgb2YgZ2l2 ZW4gfHByaV9zcGVjfC4gIFRoYXQKLS0gKiBpcyBtYWtlIHN0cmVhbSBkZXBlbmQgb24gcm9vdCBz dHJlYW0gd2l0aCB3ZWlnaHQgMTYuCi0tICoKLS0gKiBJZgotLSAqIDplbnVtOmBuZ2h0dHAyX3Nl dHRpbmdzX2lkLk5HSFRUUDJfU0VUVElOR1NfTk9fUkZDNzU0MF9QUklPUklUSUVTYAotLSAqIG9m IHZhbHVlIG9mIDEgaXMgc3VibWl0dGVkIHZpYSBgbmdodHRwMl9zdWJtaXRfc2V0dGluZ3MoKWAs IHRoaXMKLS0gKiBmdW5jdGlvbiBkb2VzIG5vdGhpbmcgYW5kIHJldHVybnMgMC4KLS0gKgotLSAq IFRoaXMgZnVuY3Rpb24gcmV0dXJucyAwIGlmIGl0IHN1Y2NlZWRzLCBvciBvbmUgb2YgdGhlIGZv bGxvd2luZwotLSAqIG5lZ2F0aXZlIGVycm9yIGNvZGVzOgotKyAqICAgcHJpb3JpdGl6YXRpb24g c2NoZW1lLgotICAqCi0tICogOmVudW06YG5naHR0cDJfZXJyb3IuTkdIVFRQMl9FUlJfTk9NRU1g Ci0tICogICAgIE91dCBvZiBtZW1vcnkuCi0tICogOmVudW06YG5naHR0cDJfZXJyb3IuTkdIVFRQ Ml9FUlJfSU5WQUxJRF9BUkdVTUVOVGAKLS0gKiAgICAgQXR0ZW1wdGVkIHRvIGRlcGVuZCBvbiBp dHNlbGY7IG9yIG5vIHN0cmVhbSBleGlzdCBmb3IgdGhlIGdpdmVuCi0tICogICAgIHxzdHJlYW1f aWR8OyBvciB8c3RyZWFtX2lkfCBpcyAwCi0rICogVGhpcyBmdW5jdGlvbiBpcyBub29wLiAgSXQg YWx3YXlzIHJldHVybnMgMC4KLSAgKi8KLSBOR0hUVFAyX0VYVEVSTiBpbnQKLSBuZ2h0dHAyX3Nl c3Npb25fY2hhbmdlX3N0cmVhbV9wcmlvcml0eShuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi1A QCAtNDIyNSw1MSArNDIyOCw5IEBAIG5naHR0cDJfc2Vzc2lvbl9jaGFuZ2Vfc3RyZWFtX3ByaW9y aXR5KG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAgKgotICAqICAgRGVwcmVjYXRlZC4gIDpy ZmM6YDc1NDBgIHByaW9yaXRpZXMgYXJlIGRlcHJlY2F0ZWQgYnkKLSAgKiAgIDpyZmM6YDkxMTNg LiAgQ29uc2lkZXIgbWlncmF0aW5nIHRvIDpyZmM6YDkyMThgIGV4dGVuc2libGUKLS0gKiAgIHBy aW9yaXRpemF0aW9uIHNjaGVtZS4gIEluIHRoZSBmdXR1cmUgcmVsZWFzZSBhZnRlciB0aGUgZW5k IG9mCi0tICogICAyMDI0LCB0aGlzIGZ1bmN0aW9uIHdpbGwgYWx3YXlzIHJldHVybiAwIHdpdGhv dXQgZG9pbmcgYW55dGhpbmcuCi0tICoKLS0gKiBDcmVhdGVzIGlkbGUgc3RyZWFtIHdpdGggdGhl IGdpdmVuIHxzdHJlYW1faWR8LCBhbmQgcHJpb3JpdHkKLS0gKiB8cHJpX3NwZWN8LgotLSAqCi0t ICogVGhlIHN0cmVhbSBjcmVhdGlvbiBpcyBkb25lIHdpdGhvdXQgc2VuZGluZyBQUklPUklUWSBm cmFtZSwgd2hpY2gKLS0gKiBtZWFucyB0aGF0IHBlZXIgZG9lcyBub3Qga25vdyBhYm91dCB0aGUg ZXhpc3RlbmNlIG9mIHRoaXMgaWRsZQotLSAqIHN0cmVhbSBpbiB0aGUgbG9jYWwgZW5kcG9pbnQu Ci0tICoKLS0gKiBSRkMgNzU0MCBkb2VzIG5vdCBkaXNhbGxvdyB0aGUgdXNlIG9mIGNyZWF0aW9u IG9mIGlkbGUgc3RyZWFtIHdpdGgKLS0gKiBvZGQgb3IgZXZlbiBzdHJlYW0gSUQgcmVnYXJkbGVz cyBvZiBjbGllbnQgb3Igc2VydmVyLiAgU28gdGhpcwotLSAqIGZ1bmN0aW9uIGNhbiBjcmVhdGUg b2RkIG9yIGV2ZW4gc3RyZWFtIElEIHJlZ2FyZGxlc3Mgb2YgY2xpZW50IG9yCi0tICogc2VydmVy LiAgQnV0IHByb2JhYmx5IGl0IGlzIGEgYml0IHNhZmVyIHRvIHVzZSB0aGUgc3RyZWFtIElEIHRo ZQotLSAqIGxvY2FsIGVuZHBvaW50IGNhbiBpbml0aWF0ZSAoaW4gb3RoZXIgd29yZHMsIHVzZSBv ZGQgc3RyZWFtIElEIGZvcgotLSAqIGNsaWVudCwgYW5kIGV2ZW4gc3RyZWFtIElEIGZvciBzZXJ2 ZXIpLCB0byBhdm9pZCBwb3RlbnRpYWwKLS0gKiBjb2xsaXNpb24gZnJvbSBwZWVyJ3MgaW5zdHJ1 Y3Rpb24uICBBbHNvIHdlIGNhbiB1c2UKLS0gKiBgbmdodHRwMl9zZXNzaW9uX3NldF9uZXh0X3N0 cmVhbV9pZCgpYCB0byBhdm9pZCB0byBvcGVuIGNyZWF0ZWQKLS0gKiBpZGxlIHN0cmVhbXMgYWNj aWRlbnRhbGx5IGlmIHdlIGZvbGxvdyB0aGlzIHJlY29tbWVuZGF0aW9uLgotLSAqCi0tICogSWYg fHNlc3Npb258IGlzIGluaXRpYWxpemVkIGFzIHNlcnZlciwgYW5kIGBgcHJpX3NwZWMtPnN0cmVh bV9pZGBgCi0tICogcG9pbnRzIHRvIHRoZSBpZGxlIHN0cmVhbSwgdGhlIGlkbGUgc3RyZWFtIGlz IGNyZWF0ZWQgaWYgaXQgZG9lcwotLSAqIG5vdCBleGlzdC4gIFRoZSBjcmVhdGVkIGlkbGUgc3Ry ZWFtIHdpbGwgZGVwZW5kIG9uIHJvb3Qgc3RyZWFtCi0tICogKHN0cmVhbSAwKSB3aXRoIHdlaWdo dCAxNi4KLS0gKgotLSAqIE90aGVyd2lzZSwgaWYgc3RyZWFtIGRlbm90ZWQgYnkgYGBwcmlfc3Bl Yy0+c3RyZWFtX2lkYGAgaXMgbm90Ci0tICogZm91bmQsIHdlIHVzZSBkZWZhdWx0IHByaW9yaXR5 IGluc3RlYWQgb2YgZ2l2ZW4gfHByaV9zcGVjfC4gIFRoYXQKLS0gKiBpcyBtYWtlIHN0cmVhbSBk ZXBlbmQgb24gcm9vdCBzdHJlYW0gd2l0aCB3ZWlnaHQgMTYuCi0tICoKLS0gKiBJZgotLSAqIDpl bnVtOmBuZ2h0dHAyX3NldHRpbmdzX2lkLk5HSFRUUDJfU0VUVElOR1NfTk9fUkZDNzU0MF9QUklP UklUSUVTYAotLSAqIG9mIHZhbHVlIG9mIDEgaXMgc3VibWl0dGVkIHZpYSBgbmdodHRwMl9zdWJt aXRfc2V0dGluZ3MoKWAsIHRoaXMKLS0gKiBmdW5jdGlvbiBkb2VzIG5vdGhpbmcgYW5kIHJldHVy bnMgMC4KLS0gKgotLSAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyAwIGlmIGl0IHN1Y2NlZWRzLCBv ciBvbmUgb2YgdGhlIGZvbGxvd2luZwotLSAqIG5lZ2F0aXZlIGVycm9yIGNvZGVzOgotKyAqICAg cHJpb3JpdGl6YXRpb24gc2NoZW1lLgotICAqCi0tICogOmVudW06YG5naHR0cDJfZXJyb3IuTkdI VFRQMl9FUlJfTk9NRU1gCi0tICogICAgIE91dCBvZiBtZW1vcnkuCi0tICogOmVudW06YG5naHR0 cDJfZXJyb3IuTkdIVFRQMl9FUlJfSU5WQUxJRF9BUkdVTUVOVGAKLS0gKiAgICAgQXR0ZW1wdGVk IHRvIGRlcGVuZCBvbiBpdHNlbGY7IG9yIHN0cmVhbSBkZW5vdGVkIGJ5IHxzdHJlYW1faWR8Ci0t ICogICAgIGFscmVhZHkgZXhpc3RzOyBvciB8c3RyZWFtX2lkfCBjYW5ub3QgYmUgdXNlZCB0byBj cmVhdGUgaWRsZQotLSAqICAgICBzdHJlYW0gKGluIG90aGVyIHdvcmRzLCBsb2NhbCBlbmRwb2lu dCBoYXMgYWxyZWFkeSBvcGVuZWQKLS0gKiAgICAgc3RyZWFtIElEIGdyZWF0ZXIgdGhhbiBvciBl cXVhbCB0byB0aGUgZ2l2ZW4gc3RyZWFtIElEOyBvcgotLSAqICAgICB8c3RyZWFtX2lkfCBpcyAw Ci0rICogVGhpcyBmdW5jdGlvbiBpcyBub29wLiAgSXQgYWx3YXlzIHJldHVybnMgMC4KLSAgKi8K LSBOR0hUVFAyX0VYVEVSTiBpbnQKLSBuZ2h0dHAyX3Nlc3Npb25fY3JlYXRlX2lkbGVfc3RyZWFt KG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwgaW50MzJfdCBzdHJlYW1faWQsCi1AQCAtNDUwNSwy MyArNDQ2Niw3IEBAIG5naHR0cDJfcHJpb3JpdHlfc3BlY19jaGVja19kZWZhdWx0KGNvbnN0IG5n aHR0cDJfcHJpb3JpdHlfc3BlYyAqcHJpX3NwZWMpOwotICAqCi0gICogU3VibWl0cyBIRUFERVJT IGZyYW1lIGFuZCBvcHRpb25hbGx5IG9uZSBvciBtb3JlIERBVEEgZnJhbWVzLgotICAqCi0tICog VGhlIHxwcmlfc3BlY3wgaXMgYSBkZXByZWNhdGVkIHByaW9yaXR5IHNwZWNpZmljYXRpb24gb2Yg dGhpcwotLSAqIHJlcXVlc3QuICBgYE5VTExgYCBtZWFucyB0aGUgZGVmYXVsdCBwcmlvcml0eSAo c2VlCi0tICogYG5naHR0cDJfcHJpb3JpdHlfc3BlY19kZWZhdWx0X2luaXQoKWApLiAgVG8gc3Bl Y2lmeSB0aGUgcHJpb3JpdHksCi0tICogdXNlIGBuZ2h0dHAyX3ByaW9yaXR5X3NwZWNfaW5pdCgp YC4gIElmIHxwcmlfc3BlY3wgaXMgbm90IGBgTlVMTGBgLAotLSAqIHRoaXMgZnVuY3Rpb24gd2ls bCBjb3B5IGl0cyBkYXRhIG1lbWJlcnMuCi0tICoKLS0gKiBUaGUgYGBwcmlfc3BlYy0+d2VpZ2h0 YGAgbXVzdCBiZSBpbiBbOm1hY3JvOmBOR0hUVFAyX01JTl9XRUlHSFRgLAotLSAqIDptYWNybzpg TkdIVFRQMl9NQVhfV0VJR0hUYF0sIGluY2x1c2l2ZS4gIElmIGBgcHJpX3NwZWMtPndlaWdodGBg Ci0tICogaXMgc3RyaWN0bHkgbGVzcyB0aGFuIDptYWNybzpgTkdIVFRQMl9NSU5fV0VJR0hUYCwg aXQgYmVjb21lcwotLSAqIDptYWNybzpgTkdIVFRQMl9NSU5fV0VJR0hUYC4gIElmIGl0IGlzIHN0 cmljdGx5IGdyZWF0ZXIgdGhhbgotLSAqIDptYWNybzpgTkdIVFRQMl9NQVhfV0VJR0hUYCwgaXQg YmVjb21lcwotLSAqIDptYWNybzpgTkdIVFRQMl9NQVhfV0VJR0hUYC4KLS0gKgotLSAqIElmCi0t ICogOmVudW06YG5naHR0cDJfc2V0dGluZ3NfaWQuTkdIVFRQMl9TRVRUSU5HU19OT19SRkM3NTQw X1BSSU9SSVRJRVNgCi0tICogb2YgdmFsdWUgb2YgMSBpcyByZWNlaXZlZCBieSBhIHJlbW90ZSBl bmRwb2ludCwgfHByaV9zcGVjfCBpcwotLSAqIGlnbm9yZWQsIGFuZCB0cmVhdGVkIGFzIGlmIGBg TlVMTGBgIGlzIHNwZWNpZmllZC4KLSsgKiBUaGUgfHByaV9zcGVjfCBpcyBpZ25vcmVkLgotICAq Ci0gICogVGhlIHxudmF8IGlzIGFuIGFycmF5IG9mIG5hbWUvdmFsdWUgcGFpciA6dHlwZTpgbmdo dHRwMl9udmAgd2l0aAotICAqIHxudmxlbnwgZWxlbWVudHMuICBUaGUgYXBwbGljYXRpb24gaXMg cmVzcG9uc2libGUgdG8gaW5jbHVkZQotQEAgLTQ1NjQsOSArNDUwOSw2IEBAIG5naHR0cDJfcHJp b3JpdHlfc3BlY19jaGVja19kZWZhdWx0KGNvbnN0IG5naHR0cDJfcHJpb3JpdHlfc3BlYyAqcHJp X3NwZWMpOwotICAqIDplbnVtOmBuZ2h0dHAyX2Vycm9yLk5HSFRUUDJfRVJSX1NUUkVBTV9JRF9O T1RfQVZBSUxBQkxFYAotICAqICAgICBObyBzdHJlYW0gSUQgaXMgYXZhaWxhYmxlIGJlY2F1c2Ug bWF4aW11bSBzdHJlYW0gSUQgd2FzCi0gICogICAgIHJlYWNoZWQuCi0tICogOmVudW06YG5naHR0 cDJfZXJyb3IuTkdIVFRQMl9FUlJfSU5WQUxJRF9BUkdVTUVOVGAKLS0gKiAgICAgVHJ5aW5nIHRv IGRlcGVuZCBvbiBpdHNlbGYgKG5ldyBzdHJlYW0gSUQgZXF1YWxzCi0tICogICAgIGBgcHJpX3Nw ZWMtPnN0cmVhbV9pZGBgKS4KLSAgKiA6ZW51bTpgbmdodHRwMl9lcnJvci5OR0hUVFAyX0VSUl9Q Uk9UT2AKLSAgKiAgICAgVGhlIHxzZXNzaW9ufCBpcyBzZXJ2ZXIgc2Vzc2lvbi4KLSAgKgotQEAg LTQ1OTQsMjUgKzQ1MzYsNyBAQCBOR0hUVFAyX0VYVEVSTiBpbnQzMl90IG5naHR0cDJfc3VibWl0 X3JlcXVlc3QoCi0gICoKLSAgKiBTdWJtaXRzIEhFQURFUlMgZnJhbWUgYW5kIG9wdGlvbmFsbHkg b25lIG9yIG1vcmUgREFUQSBmcmFtZXMuCi0gICoKLS0gKiBUaGUgfHByaV9zcGVjfCBpcyBhIGRl cHJlY2F0ZWQgcHJpb3JpdHkgc3BlY2lmaWNhdGlvbiBvZiB0aGlzCi0tICogcmVxdWVzdC4gIGBg TlVMTGBgIG1lYW5zIHRoZSBkZWZhdWx0IHByaW9yaXR5IChzZWUKLS0gKiBgbmdodHRwMl9wcmlv cml0eV9zcGVjX2RlZmF1bHRfaW5pdCgpYCkuICBUbyBzcGVjaWZ5IHRoZSBwcmlvcml0eSwKLS0g KiB1c2UgYG5naHR0cDJfcHJpb3JpdHlfc3BlY19pbml0KClgLiAgSWYgfHByaV9zcGVjfCBpcyBu b3QgYGBOVUxMYGAsCi0tICogdGhpcyBmdW5jdGlvbiB3aWxsIGNvcHkgaXRzIGRhdGEgbWVtYmVy cy4gIEluIHRoZSBmdXR1cmUgcmVsZWFzZQotLSAqIGFmdGVyIHRoZSBlbmQgb2YgMjAyNCwgdGhp cyBmdW5jdGlvbiB3aWxsIGlnbm9yZSB8cHJpX3NwZWN8IGFuZAotLSAqIGJlaGF2ZSBhcyBpZiBg YE5VTExgYCBpcyBnaXZlbi4KLS0gKgotLSAqIFRoZSBgYHByaV9zcGVjLT53ZWlnaHRgYCBtdXN0 IGJlIGluIFs6bWFjcm86YE5HSFRUUDJfTUlOX1dFSUdIVGAsCi0tICogOm1hY3JvOmBOR0hUVFAy X01BWF9XRUlHSFRgXSwgaW5jbHVzaXZlLiAgSWYgYGBwcmlfc3BlYy0+d2VpZ2h0YGAKLS0gKiBp cyBzdHJpY3RseSBsZXNzIHRoYW4gOm1hY3JvOmBOR0hUVFAyX01JTl9XRUlHSFRgLCBpdCBiZWNv bWVzCi0tICogOm1hY3JvOmBOR0hUVFAyX01JTl9XRUlHSFRgLiAgSWYgaXQgaXMgc3RyaWN0bHkg Z3JlYXRlciB0aGFuCi0tICogOm1hY3JvOmBOR0hUVFAyX01BWF9XRUlHSFRgLCBpdCBiZWNvbWVz Ci0tICogOm1hY3JvOmBOR0hUVFAyX01BWF9XRUlHSFRgLgotLSAqCi0tICogSWYKLS0gKiA6ZW51 bTpgbmdodHRwMl9zZXR0aW5nc19pZC5OR0hUVFAyX1NFVFRJTkdTX05PX1JGQzc1NDBfUFJJT1JJ VElFU2AKLS0gKiBvZiB2YWx1ZSBvZiAxIGlzIHJlY2VpdmVkIGJ5IGEgcmVtb3RlIGVuZHBvaW50 LCB8cHJpX3NwZWN8IGlzCi0tICogaWdub3JlZCwgYW5kIHRyZWF0ZWQgYXMgaWYgYGBOVUxMYGAg aXMgc3BlY2lmaWVkLgotKyAqIFRoZSB8cHJpX3NwZWN8IGlzIGlnbm9yZWQuCi0gICoKLSAgKiBU aGUgfG52YXwgaXMgYW4gYXJyYXkgb2YgbmFtZS92YWx1ZSBwYWlyIDp0eXBlOmBuZ2h0dHAyX252 YCB3aXRoCi0gICogfG52bGVufCBlbGVtZW50cy4gIFRoZSBhcHBsaWNhdGlvbiBpcyByZXNwb25z aWJsZSB0byBpbmNsdWRlCi1AQCAtNDY1NSw5ICs0NTc5LDYgQEAgTkdIVFRQMl9FWFRFUk4gaW50 MzJfdCBuZ2h0dHAyX3N1Ym1pdF9yZXF1ZXN0KAotICAqIDplbnVtOmBuZ2h0dHAyX2Vycm9yLk5H SFRUUDJfRVJSX1NUUkVBTV9JRF9OT1RfQVZBSUxBQkxFYAotICAqICAgICBObyBzdHJlYW0gSUQg aXMgYXZhaWxhYmxlIGJlY2F1c2UgbWF4aW11bSBzdHJlYW0gSUQgd2FzCi0gICogICAgIHJlYWNo ZWQuCi0tICogOmVudW06YG5naHR0cDJfZXJyb3IuTkdIVFRQMl9FUlJfSU5WQUxJRF9BUkdVTUVO VGAKLS0gKiAgICAgVHJ5aW5nIHRvIGRlcGVuZCBvbiBpdHNlbGYgKG5ldyBzdHJlYW0gSUQgZXF1 YWxzCi0tICogICAgIGBgcHJpX3NwZWMtPnN0cmVhbV9pZGBgKS4KLSAgKiA6ZW51bTpgbmdodHRw Ml9lcnJvci5OR0hUVFAyX0VSUl9QUk9UT2AKLSAgKiAgICAgVGhlIHxzZXNzaW9ufCBpcyBzZXJ2 ZXIgc2Vzc2lvbi4KLSAgKgotQEAgLTQ4OTksMjQgKzQ4MjAsNyBAQCBOR0hUVFAyX0VYVEVSTiBp bnQgbmdodHRwMl9zdWJtaXRfdHJhaWxlcihuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0gICog YXNzaWduZWQgc3RyZWFtIElEIHdpbGwgYmUgcmV0dXJuZWQuICBPdGhlcndpc2UsIHNwZWNpZnkg c3RyZWFtIElECi0gICogaW4gfHN0cmVhbV9pZHwuCi0gICoKLS0gKiBUaGUgfHByaV9zcGVjfCBp cyBhIGRlcHJlY2F0ZWQgcHJpb3JpdHkgc3BlY2lmaWNhdGlvbiBvZiB0aGlzCi0tICogcmVxdWVz dC4gIGBgTlVMTGBgIG1lYW5zIHRoZSBkZWZhdWx0IHByaW9yaXR5IChzZWUKLS0gKiBgbmdodHRw Ml9wcmlvcml0eV9zcGVjX2RlZmF1bHRfaW5pdCgpYCkuICBUbyBzcGVjaWZ5IHRoZSBwcmlvcml0 eSwKLS0gKiB1c2UgYG5naHR0cDJfcHJpb3JpdHlfc3BlY19pbml0KClgLiAgSWYgfHByaV9zcGVj fCBpcyBub3QgYGBOVUxMYGAsCi0tICogdGhpcyBmdW5jdGlvbiB3aWxsIGNvcHkgaXRzIGRhdGEg bWVtYmVycy4gIEluIHRoZSBmdXR1cmUgcmVsZWFzZQotLSAqIGFmdGVyIHRoZSBlbmQgb2YgMjAy NCwgdGhpcyBmdW5jdGlvbiB3aWxsIGlnbm9yZSB8cHJpX3NwZWN8IGFuZAotLSAqIGJlaGF2ZSBh cyBpZiBgYE5VTExgYCBpcyBnaXZlbi4KLS0gKgotLSAqIFRoZSBgYHByaV9zcGVjLT53ZWlnaHRg YCBtdXN0IGJlIGluIFs6bWFjcm86YE5HSFRUUDJfTUlOX1dFSUdIVGAsCi0tICogOm1hY3JvOmBO R0hUVFAyX01BWF9XRUlHSFRgXSwgaW5jbHVzaXZlLiAgSWYgYGBwcmlfc3BlYy0+d2VpZ2h0YGAK LS0gKiBpcyBzdHJpY3RseSBsZXNzIHRoYW4gOm1hY3JvOmBOR0hUVFAyX01JTl9XRUlHSFRgLCBp dCBiZWNvbWVzCi0tICogOm1hY3JvOmBOR0hUVFAyX01JTl9XRUlHSFRgLiAgSWYgaXQgaXMgc3Ry aWN0bHkgZ3JlYXRlciB0aGFuCi0tICogOm1hY3JvOmBOR0hUVFAyX01BWF9XRUlHSFRgLCBpdCBi ZWNvbWVzIDptYWNybzpgTkdIVFRQMl9NQVhfV0VJR0hUYC4KLS0gKgotLSAqIElmCi0tICogOmVu dW06YG5naHR0cDJfc2V0dGluZ3NfaWQuTkdIVFRQMl9TRVRUSU5HU19OT19SRkM3NTQwX1BSSU9S SVRJRVNgCi0tICogb2YgdmFsdWUgb2YgMSBpcyByZWNlaXZlZCBieSBhIHJlbW90ZSBlbmRwb2lu dCwgfHByaV9zcGVjfCBpcwotLSAqIGlnbm9yZWQsIGFuZCB0cmVhdGVkIGFzIGlmIGBgTlVMTGBg IGlzIHNwZWNpZmllZC4KLSsgKiBUaGUgfHByaV9zcGVjfCBpcyBpZ25vcmVkLgotICAqCi0gICog VGhlIHxudmF8IGlzIGFuIGFycmF5IG9mIG5hbWUvdmFsdWUgcGFpciA6dHlwZTpgbmdodHRwMl9u dmAgd2l0aAotICAqIHxudmxlbnwgZWxlbWVudHMuICBUaGUgYXBwbGljYXRpb24gaXMgcmVzcG9u c2libGUgdG8gaW5jbHVkZQotQEAgLTQ5NTYsOCArNDg2MCw3IEBAIE5HSFRUUDJfRVhURVJOIGlu dCBuZ2h0dHAyX3N1Ym1pdF90cmFpbGVyKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAgKiAg ICAgTm8gc3RyZWFtIElEIGlzIGF2YWlsYWJsZSBiZWNhdXNlIG1heGltdW0gc3RyZWFtIElEIHdh cwotICAqICAgICByZWFjaGVkLgotICAqIDplbnVtOmBuZ2h0dHAyX2Vycm9yLk5HSFRUUDJfRVJS X0lOVkFMSURfQVJHVU1FTlRgCi0tICogICAgIFRoZSB8c3RyZWFtX2lkfCBpcyAwOyBvciB0cnlp bmcgdG8gZGVwZW5kIG9uIGl0c2VsZiAoc3RyZWFtIElECi0tICogICAgIGVxdWFscyBgYHByaV9z cGVjLT5zdHJlYW1faWRgYCkuCi0rICogICAgIFRoZSB8c3RyZWFtX2lkfCBpcyAwLgotICAqIDpl bnVtOmBuZ2h0dHAyX2Vycm9yLk5HSFRUUDJfRVJSX0RBVEFfRVhJU1RgCi0gICogICAgIERBVEEg b3IgSEVBREVSUyBoYXMgYmVlbiBhbHJlYWR5IHN1Ym1pdHRlZCBhbmQgbm90IGZ1bGx5Ci0gICog ICAgIHByb2Nlc3NlZCB5ZXQuICBUaGlzIGhhcHBlbnMgaWYgc3RyZWFtIGRlbm90ZWQgYnkgfHN0 cmVhbV9pZHwKLUBAIC01MDgzLDQwICs0OTg2LDkgQEAgTkdIVFRQMl9FWFRFUk4gaW50IG5naHR0 cDJfc3VibWl0X2RhdGEyKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwgdWludDhfdCBmbGFncywK LSAgKgotICAqICAgRGVwcmVjYXRlZC4gIDpyZmM6YDc1NDBgIHByaW9yaXRpZXMgYXJlIGRlcHJl Y2F0ZWQgYnkKLSAgKiAgIDpyZmM6YDkxMTNgLiAgQ29uc2lkZXIgbWlncmF0aW5nIHRvIDpyZmM6 YDkyMThgIGV4dGVuc2libGUKLS0gKiAgIHByaW9yaXRpemF0aW9uIHNjaGVtZS4gIEluIHRoZSBm dXR1cmUgcmVsZWFzZSBhZnRlciB0aGUgZW5kIG9mCi0tICogICAyMDI0LCB0aGlzIGZ1bmN0aW9u IHdpbGwgYWx3YXlzIHJldHVybiAwIHdpdGhvdXQgZG9pbmcgYW55dGhpbmcuCi0tICoKLS0gKiBT dWJtaXRzIFBSSU9SSVRZIGZyYW1lIHRvIGNoYW5nZSB0aGUgcHJpb3JpdHkgb2Ygc3RyZWFtIHxz dHJlYW1faWR8Ci0tICogdG8gdGhlIHByaW9yaXR5IHNwZWNpZmljYXRpb24gfHByaV9zcGVjfC4K LS0gKgotLSAqIFRoZSB8ZmxhZ3N8IGlzIGN1cnJlbnRseSBpZ25vcmVkIGFuZCBzaG91bGQgYmUK LS0gKiA6ZW51bTpgbmdodHRwMl9mbGFnLk5HSFRUUDJfRkxBR19OT05FYC4KLS0gKgotLSAqIFRo ZSB8cHJpX3NwZWN8IGlzIGEgZGVwcmVjYXRlZCBwcmlvcml0eSBzcGVjaWZpY2F0aW9uIG9mIHRo aXMKLS0gKiByZXF1ZXN0LiAgYGBOVUxMYGAgaXMgbm90IGFsbG93ZWQgZm9yIHRoaXMgZnVuY3Rp b24uIFRvIHNwZWNpZnkgdGhlCi0tICogcHJpb3JpdHksIHVzZSBgbmdodHRwMl9wcmlvcml0eV9z cGVjX2luaXQoKWAuICBUaGlzIGZ1bmN0aW9uIHdpbGwKLS0gKiBjb3B5IGl0cyBkYXRhIG1lbWJl cnMuCi0tICoKLS0gKiBUaGUgYGBwcmlfc3BlYy0+d2VpZ2h0YGAgbXVzdCBiZSBpbiBbOm1hY3Jv OmBOR0hUVFAyX01JTl9XRUlHSFRgLAotLSAqIDptYWNybzpgTkdIVFRQMl9NQVhfV0VJR0hUYF0s IGluY2x1c2l2ZS4gIElmIGBgcHJpX3NwZWMtPndlaWdodGBgCi0tICogaXMgc3RyaWN0bHkgbGVz cyB0aGFuIDptYWNybzpgTkdIVFRQMl9NSU5fV0VJR0hUYCwgaXQgYmVjb21lcwotLSAqIDptYWNy bzpgTkdIVFRQMl9NSU5fV0VJR0hUYC4gIElmIGl0IGlzIHN0cmljdGx5IGdyZWF0ZXIgdGhhbgot LSAqIDptYWNybzpgTkdIVFRQMl9NQVhfV0VJR0hUYCwgaXQgYmVjb21lcwotLSAqIDptYWNybzpg TkdIVFRQMl9NQVhfV0VJR0hUYC4KLS0gKgotLSAqIElmCi0tICogOmVudW06YG5naHR0cDJfc2V0 dGluZ3NfaWQuTkdIVFRQMl9TRVRUSU5HU19OT19SRkM3NTQwX1BSSU9SSVRJRVNgCi0tICogb2Yg dmFsdWUgb2YgMSBpcyByZWNlaXZlZCBieSBhIHJlbW90ZSBlbmRwb2ludCwgdGhpcyBmdW5jdGlv biBkb2VzCi0tICogbm90aGluZyBhbmQgcmV0dXJucyAwLgotLSAqCi0tICogVGhpcyBmdW5jdGlv biByZXR1cm5zIDAgaWYgaXQgc3VjY2VlZHMsIG9yIG9uZSBvZiB0aGUgZm9sbG93aW5nCi0tICog bmVnYXRpdmUgZXJyb3IgY29kZXM6Ci0rICogICBwcmlvcml0aXphdGlvbiBzY2hlbWUuCi0gICoK LS0gKiA6ZW51bTpgbmdodHRwMl9lcnJvci5OR0hUVFAyX0VSUl9OT01FTWAKLS0gKiAgICAgT3V0 IG9mIG1lbW9yeS4KLS0gKiA6ZW51bTpgbmdodHRwMl9lcnJvci5OR0hUVFAyX0VSUl9JTlZBTElE X0FSR1VNRU5UYAotLSAqICAgICBUaGUgfHN0cmVhbV9pZHwgaXMgMDsgb3IgdGhlIHxwcmlfc3Bl Y3wgaXMgTlVMTDsgb3IgdHJ5aW5nIHRvCi0tICogICAgIGRlcGVuZCBvbiBpdHNlbGYuCi0rICog VGhpcyBmdW5jdGlvbiBpcyBub29wLiAgSXQgYWx3YXlzIHJldHVybnMgMC4KLSAgKi8KLSBOR0hU VFAyX0VYVEVSTiBpbnQKLSBuZ2h0dHAyX3N1Ym1pdF9wcmlvcml0eShuZ2h0dHAyX3Nlc3Npb24g KnNlc3Npb24sIHVpbnQ4X3QgZmxhZ3MsCi1AQCAtNjg4NSwxMSArNjc1Nyw5IEBAIG5naHR0cDJf c2Vzc2lvbl9nZXRfcm9vdF9zdHJlYW0obmdodHRwMl9zZXNzaW9uICpzZXNzaW9uKTsKLSAgKgot ICAqICAgRGVwcmVjYXRlZC4gIDpyZmM6YDc1NDBgIHByaW9yaXRpZXMgYXJlIGRlcHJlY2F0ZWQg YnkKLSAgKiAgIDpyZmM6YDkxMTNgLiAgQ29uc2lkZXIgbWlncmF0aW5nIHRvIDpyZmM6YDkyMThg IGV4dGVuc2libGUKLS0gKiAgIHByaW9yaXRpemF0aW9uIHNjaGVtZS4gIEluIHRoZSBmdXR1cmUg cmVsZWFzZSBhZnRlciB0aGUgZW5kIG9mCi0tICogICAyMDI0LCB0aGlzIGZ1bmN0aW9uIHdpbGwg YWx3YXlzIHJldHVybiBOVUxMLgotKyAqICAgcHJpb3JpdGl6YXRpb24gc2NoZW1lLgotICAqCi0t ICogUmV0dXJucyB0aGUgcGFyZW50IHN0cmVhbSBvZiB8c3RyZWFtfCBpbiBkZXBlbmRlbmN5IHRy ZWUuICBSZXR1cm5zCi0tICogTlVMTCBpZiB0aGVyZSBpcyBubyBzdWNoIHN0cmVhbS4KLSsgKiBU aGlzIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zIE5VTEwuCi0gICovCi0gTkdIVFRQMl9FWFRFUk4g bmdodHRwMl9zdHJlYW0gKgotIG5naHR0cDJfc3RyZWFtX2dldF9wYXJlbnQobmdodHRwMl9zdHJl YW0gKnN0cmVhbSk7Ci1AQCAtNjkwMywxMSArNjc3Myw5IEBAIE5HSFRUUDJfRVhURVJOIGludDMy X3QgbmdodHRwMl9zdHJlYW1fZ2V0X3N0cmVhbV9pZChuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtKTsK LSAgKgotICAqICAgRGVwcmVjYXRlZC4gIDpyZmM6YDc1NDBgIHByaW9yaXRpZXMgYXJlIGRlcHJl Y2F0ZWQgYnkKLSAgKiAgIDpyZmM6YDkxMTNgLiAgQ29uc2lkZXIgbWlncmF0aW5nIHRvIDpyZmM6 YDkyMThgIGV4dGVuc2libGUKLS0gKiAgIHByaW9yaXRpemF0aW9uIHNjaGVtZS4gIEluIHRoZSBm dXR1cmUgcmVsZWFzZSBhZnRlciB0aGUgZW5kIG9mCi0tICogICAyMDI0LCB0aGlzIGZ1bmN0aW9u IHdpbGwgYWx3YXlzIHJldHVybiBOVUxMLgotKyAqICAgcHJpb3JpdGl6YXRpb24gc2NoZW1lLgot ICAqCi0tICogUmV0dXJucyB0aGUgbmV4dCBzaWJsaW5nIHN0cmVhbSBvZiB8c3RyZWFtfCBpbiBk ZXBlbmRlbmN5IHRyZWUuCi0tICogUmV0dXJucyBOVUxMIGlmIHRoZXJlIGlzIG5vIHN1Y2ggc3Ry ZWFtLgotKyAqIFRoaXMgZnVuY3Rpb24gYWx3YXlzIHJldHVybnMgTlVMTC4KLSAgKi8KLSBOR0hU VFAyX0VYVEVSTiBuZ2h0dHAyX3N0cmVhbSAqCi0gbmdodHRwMl9zdHJlYW1fZ2V0X25leHRfc2li bGluZyhuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtKTsKLUBAIC02OTE5LDExICs2Nzg3LDkgQEAgbmdo dHRwMl9zdHJlYW1fZ2V0X25leHRfc2libGluZyhuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtKTsKLSAg KgotICAqICAgRGVwcmVjYXRlZC4gIDpyZmM6YDc1NDBgIHByaW9yaXRpZXMgYXJlIGRlcHJlY2F0 ZWQgYnkKLSAgKiAgIDpyZmM6YDkxMTNgLiAgQ29uc2lkZXIgbWlncmF0aW5nIHRvIDpyZmM6YDky MThgIGV4dGVuc2libGUKLS0gKiAgIHByaW9yaXRpemF0aW9uIHNjaGVtZS4gIEluIHRoZSBmdXR1 cmUgcmVsZWFzZSBhZnRlciB0aGUgZW5kIG9mCi0tICogICAyMDI0LCB0aGlzIGZ1bmN0aW9uIHdp bGwgYWx3YXlzIHJldHVybiBOVUxMLgotKyAqICAgcHJpb3JpdGl6YXRpb24gc2NoZW1lLgotICAq Ci0tICogUmV0dXJucyB0aGUgcHJldmlvdXMgc2libGluZyBzdHJlYW0gb2YgfHN0cmVhbXwgaW4g ZGVwZW5kZW5jeSB0cmVlLgotLSAqIFJldHVybnMgTlVMTCBpZiB0aGVyZSBpcyBubyBzdWNoIHN0 cmVhbS4KLSsgKiBUaGlzIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zIE5VTEwuCi0gICovCi0gTkdI VFRQMl9FWFRFUk4gbmdodHRwMl9zdHJlYW0gKgotIG5naHR0cDJfc3RyZWFtX2dldF9wcmV2aW91 c19zaWJsaW5nKG5naHR0cDJfc3RyZWFtICpzdHJlYW0pOwotQEAgLTY5MzUsMTEgKzY4MDEsOSBA QCBuZ2h0dHAyX3N0cmVhbV9nZXRfcHJldmlvdXNfc2libGluZyhuZ2h0dHAyX3N0cmVhbSAqc3Ry ZWFtKTsKLSAgKgotICAqICAgRGVwcmVjYXRlZC4gIDpyZmM6YDc1NDBgIHByaW9yaXRpZXMgYXJl IGRlcHJlY2F0ZWQgYnkKLSAgKiAgIDpyZmM6YDkxMTNgLiAgQ29uc2lkZXIgbWlncmF0aW5nIHRv IDpyZmM6YDkyMThgIGV4dGVuc2libGUKLS0gKiAgIHByaW9yaXRpemF0aW9uIHNjaGVtZS4gIElu IHRoZSBmdXR1cmUgcmVsZWFzZSBhZnRlciB0aGUgZW5kIG9mCi0tICogICAyMDI0LCB0aGlzIGZ1 bmN0aW9uIHdpbGwgYWx3YXlzIHJldHVybiBOVUxMLgotKyAqICAgcHJpb3JpdGl6YXRpb24gc2No ZW1lLgotICAqCi0tICogUmV0dXJucyB0aGUgZmlyc3QgY2hpbGQgc3RyZWFtIG9mIHxzdHJlYW18 IGluIGRlcGVuZGVuY3kgdHJlZS4KLS0gKiBSZXR1cm5zIE5VTEwgaWYgdGhlcmUgaXMgbm8gc3Vj aCBzdHJlYW0uCi0rICogVGhpcyBmdW5jdGlvbiBhbHdheXMgcmV0dXJucyBOVUxMLgotICAqLwot IE5HSFRUUDJfRVhURVJOIG5naHR0cDJfc3RyZWFtICoKLSBuZ2h0dHAyX3N0cmVhbV9nZXRfZmly c3RfY2hpbGQobmdodHRwMl9zdHJlYW0gKnN0cmVhbSk7Ci1AQCAtNjk1MSwxMSArNjgxNSw5IEBA IG5naHR0cDJfc3RyZWFtX2dldF9maXJzdF9jaGlsZChuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtKTsK LSAgKgotICAqICAgRGVwcmVjYXRlZC4gIDpyZmM6YDc1NDBgIHByaW9yaXRpZXMgYXJlIGRlcHJl Y2F0ZWQgYnkKLSAgKiAgIDpyZmM6YDkxMTNgLiAgQ29uc2lkZXIgbWlncmF0aW5nIHRvIDpyZmM6 YDkyMThgIGV4dGVuc2libGUKLS0gKiAgIHByaW9yaXRpemF0aW9uIHNjaGVtZS4gIEluIHRoZSBm dXR1cmUgcmVsZWFzZSBhZnRlciB0aGUgZW5kIG9mCi0tICogICAyMDI0LCB0aGlzIGZ1bmN0aW9u IHdpbGwgYWx3YXlzIHJldHVybgotLSAqICAgOm1hY3JvOmBOR0hUVFAyX0RFRkFVTFRfV0VJR0hU YC4KLSsgKiAgIHByaW9yaXRpemF0aW9uIHNjaGVtZS4KLSAgKgotLSAqIFJldHVybnMgZGVwZW5k ZW5jeSB3ZWlnaHQgdG8gdGhlIHBhcmVudCBzdHJlYW0gb2YgfHN0cmVhbXwuCi0rICogVGhpcyBm dW5jdGlvbiBhbHdheXMgcmV0dXJucyA6bWFjcm86YE5HSFRUUDJfREVGQVVMVF9XRUlHSFRgLgot ICAqLwotIE5HSFRUUDJfRVhURVJOIGludDMyX3QgbmdodHRwMl9zdHJlYW1fZ2V0X3dlaWdodChu Z2h0dHAyX3N0cmVhbSAqc3RyZWFtKTsKLSAKLUBAIC02OTY2LDEwICs2ODI4LDkgQEAgTkdIVFRQ Ml9FWFRFUk4gaW50MzJfdCBuZ2h0dHAyX3N0cmVhbV9nZXRfd2VpZ2h0KG5naHR0cDJfc3RyZWFt ICpzdHJlYW0pOwotICAqCi0gICogICBEZXByZWNhdGVkLiAgOnJmYzpgNzU0MGAgcHJpb3JpdGll cyBhcmUgZGVwcmVjYXRlZCBieQotICAqICAgOnJmYzpgOTExM2AuICBDb25zaWRlciBtaWdyYXRp bmcgdG8gOnJmYzpgOTIxOGAgZXh0ZW5zaWJsZQotLSAqICAgcHJpb3JpdGl6YXRpb24gc2NoZW1l LiAgSW4gdGhlIGZ1dHVyZSByZWxlYXNlIGFmdGVyIHRoZSBlbmQgb2YKLS0gKiAgIDIwMjQsIHRo aXMgZnVuY3Rpb24gd2lsbCBhbHdheXMgcmV0dXJuIDAuCi0rICogICBwcmlvcml0aXphdGlvbiBz Y2hlbWUuCi0gICoKLS0gKiBSZXR1cm5zIHRoZSBzdW0gb2YgdGhlIHdlaWdodCBmb3IgfHN0cmVh bXwncyBjaGlsZHJlbi4KLSsgKiBUaGlzIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zIDAuCi0gICov Ci0gTkdIVFRQMl9FWFRFUk4gaW50MzJfdAotIG5naHR0cDJfc3RyZWFtX2dldF9zdW1fZGVwZW5k ZW5jeV93ZWlnaHQobmdodHRwMl9zdHJlYW0gKnN0cmVhbSk7Ci1kaWZmIC0tZ2l0IGEvZGVwcy9u Z2h0dHAyL2xpYi9pbmNsdWRlcy9uZ2h0dHAyL25naHR0cDJ2ZXIuaCBiL2RlcHMvbmdodHRwMi9s aWIvaW5jbHVkZXMvbmdodHRwMi9uZ2h0dHAydmVyLmgKLWluZGV4IDgyN2M5OTg5Li45NWFjZWYy MiAxMDA2NDQKLS0tLSBhL2RlcHMvbmdodHRwMi9saWIvaW5jbHVkZXMvbmdodHRwMi9uZ2h0dHAy dmVyLmgKLSsrKyBiL2RlcHMvbmdodHRwMi9saWIvaW5jbHVkZXMvbmdodHRwMi9uZ2h0dHAydmVy LmgKLUBAIC0yOSw3ICsyOSw3IEBACi0gICogQG1hY3JvCi0gICogVmVyc2lvbiBudW1iZXIgb2Yg dGhlIG5naHR0cDIgbGlicmFyeSByZWxlYXNlCi0gICovCi0tI2RlZmluZSBOR0hUVFAyX1ZFUlNJ T04gIjEuNjQuMCIKLSsjZGVmaW5lIE5HSFRUUDJfVkVSU0lPTiAiMS42OC4xIgotIAotIC8qKgot ICAqIEBtYWNybwotQEAgLTM3LDYgKzM3LDYgQEAKLSAgKiByZWxlYXNlLiBUaGlzIGlzIGEgMjQg Yml0IG51bWJlciB3aXRoIDggYml0cyBmb3IgbWFqb3IgbnVtYmVyLCA4IGJpdHMKLSAgKiBmb3Ig bWlub3IgYW5kIDggYml0cyBmb3IgcGF0Y2guIFZlcnNpb24gMS4yLjMgYmVjb21lcyAweDAxMDIw My4KLSAgKi8KLS0jZGVmaW5lIE5HSFRUUDJfVkVSU0lPTl9OVU0gMHgwMTQwMDAKLSsjZGVmaW5l IE5HSFRUUDJfVkVSU0lPTl9OVU0gMHgwMTQ0MDEKLSAKLSAjZW5kaWYgLyogTkdIVFRQMlZFUl9I ICovCi1kaWZmIC0tZ2l0IGEvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2FscG4uaCBiL2RlcHMv bmdodHRwMi9saWIvbmdodHRwMl9hbHBuLmgKLWluZGV4IDA5ODEwZmQ4Li5lY2M5ZWQyMCAxMDA2 NDQKLS0tLSBhL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9hbHBuLmgKLSsrKyBiL2RlcHMvbmdo dHRwMi9saWIvbmdodHRwMl9hbHBuLmgKLUBAIC0yNyw4ICsyNyw4IEBACi0gCi0gI2lmZGVmIEhB VkVfQ09ORklHX0gKLSAjICBpbmNsdWRlIDxjb25maWcuaD4KLS0jZW5kaWYgLyogSEFWRV9DT05G SUdfSCAqLwotKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfQ09ORklHX0gpICovCi0gCi0gI2luY2x1 ZGUgPG5naHR0cDIvbmdodHRwMi5oPgotIAotLSNlbmRpZiAvKiBOR0hUVFAyX0FMUE5fSCAqLwot KyNlbmRpZiAvKiAhZGVmaW5lZChOR0hUVFAyX0FMUE5fSCkgKi8KLWRpZmYgLS1naXQgYS9kZXBz L25naHR0cDIvbGliL25naHR0cDJfYnVmLmggYi9kZXBzL25naHR0cDIvbGliL25naHR0cDJfYnVm LmgKLWluZGV4IDk1ZmYzNzA2Li42MzZhYTYxOSAxMDA2NDQKLS0tLSBhL2RlcHMvbmdodHRwMi9s aWIvbmdodHRwMl9idWYuaAotKysrIGIvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2J1Zi5oCi1A QCAtMjcsNyArMjcsNyBAQAotIAotICNpZmRlZiBIQVZFX0NPTkZJR19ICi0gIyAgaW5jbHVkZSA8 Y29uZmlnLmg+Ci0tI2VuZGlmIC8qIEhBVkVfQ09ORklHX0ggKi8KLSsjZW5kaWYgLyogZGVmaW5l ZChIQVZFX0NPTkZJR19IKSAqLwotIAotICNpbmNsdWRlIDxuZ2h0dHAyL25naHR0cDIuaD4KLSAK LUBAIC00MDksNCArNDA5LDQgQEAgaW50IG5naHR0cDJfYnVmc19uZXh0X3ByZXNlbnQobmdodHRw Ml9idWZzICpidWZzKTsKLSAgKi8KLSBzaXplX3QgbmdodHRwMl9idWZzX2xlbihuZ2h0dHAyX2J1 ZnMgKmJ1ZnMpOwotIAotLSNlbmRpZiAvKiBOR0hUVFAyX0JVRl9IICovCi0rI2VuZGlmIC8qICFk ZWZpbmVkKE5HSFRUUDJfQlVGX0gpICovCi1kaWZmIC0tZ2l0IGEvZGVwcy9uZ2h0dHAyL2xpYi9u Z2h0dHAyX2NhbGxiYWNrcy5jIGIvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2NhbGxiYWNrcy5j Ci1pbmRleCAzMmZlZGQ1Mi4uMTYyY2E2YmQgMTAwNjQ0Ci0tLS0gYS9kZXBzL25naHR0cDIvbGli L25naHR0cDJfY2FsbGJhY2tzLmMKLSsrKyBiL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9jYWxs YmFja3MuYwotQEAgLTIwMSwzICsyMDEsOCBAQCB2b2lkIG5naHR0cDJfc2Vzc2lvbl9jYWxsYmFj a3Nfc2V0X2Vycm9yX2NhbGxiYWNrMigKLSAgIG5naHR0cDJfc2Vzc2lvbl9jYWxsYmFja3MgKmNi cywgbmdodHRwMl9lcnJvcl9jYWxsYmFjazIgZXJyb3JfY2FsbGJhY2syKSB7Ci0gICBjYnMtPmVy cm9yX2NhbGxiYWNrMiA9IGVycm9yX2NhbGxiYWNrMjsKLSB9Ci0rCi0rdm9pZCBuZ2h0dHAyX3Nl c3Npb25fY2FsbGJhY2tzX3NldF9yYW5kX2NhbGxiYWNrKAotKyAgbmdodHRwMl9zZXNzaW9uX2Nh bGxiYWNrcyAqY2JzLCBuZ2h0dHAyX3JhbmRfY2FsbGJhY2sgcmFuZF9jYWxsYmFjaykgewotKyAg Y2JzLT5yYW5kX2NhbGxiYWNrID0gcmFuZF9jYWxsYmFjazsKLSt9Ci1kaWZmIC0tZ2l0IGEvZGVw cy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2NhbGxiYWNrcy5oIGIvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0 dHAyX2NhbGxiYWNrcy5oCi1pbmRleCBhNjExZjQ4NS4uNGI0NWU1NzggMTAwNjQ0Ci0tLS0gYS9k ZXBzL25naHR0cDIvbGliL25naHR0cDJfY2FsbGJhY2tzLmgKLSsrKyBiL2RlcHMvbmdodHRwMi9s aWIvbmdodHRwMl9jYWxsYmFja3MuaAotQEAgLTI3LDcgKzI3LDcgQEAKLSAKLSAjaWZkZWYgSEFW RV9DT05GSUdfSAotICMgIGluY2x1ZGUgPGNvbmZpZy5oPgotLSNlbmRpZiAvKiBIQVZFX0NPTkZJ R19IICovCi0rI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9DT05GSUdfSCkgKi8KLSAKLSAjaW5jbHVk ZSA8bmdodHRwMi9uZ2h0dHAyLmg+Ci0gCi1AQCAtMTUxLDYgKzE1MSw3IEBAIHN0cnVjdCBuZ2h0 dHAyX3Nlc3Npb25fY2FsbGJhY2tzIHsKLSAgIG5naHR0cDJfb25fZXh0ZW5zaW9uX2NodW5rX3Jl Y3ZfY2FsbGJhY2sgb25fZXh0ZW5zaW9uX2NodW5rX3JlY3ZfY2FsbGJhY2s7Ci0gICBuZ2h0dHAy X2Vycm9yX2NhbGxiYWNrIGVycm9yX2NhbGxiYWNrOwotICAgbmdodHRwMl9lcnJvcl9jYWxsYmFj azIgZXJyb3JfY2FsbGJhY2syOwotKyAgbmdodHRwMl9yYW5kX2NhbGxiYWNrIHJhbmRfY2FsbGJh Y2s7Ci0gfTsKLSAKLS0jZW5kaWYgLyogTkdIVFRQMl9DQUxMQkFDS1NfSCAqLwotKyNlbmRpZiAv KiAhZGVmaW5lZChOR0hUVFAyX0NBTExCQUNLU19IKSAqLwotZGlmZiAtLWdpdCBhL2RlcHMvbmdo dHRwMi9saWIvbmdodHRwMl9kZWJ1Zy5jIGIvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2RlYnVn LmMKLWluZGV4IDA5ZGQyYjI4Li5iNWYzM2VmMyAxMDA2NDQKLS0tLSBhL2RlcHMvbmdodHRwMi9s aWIvbmdodHRwMl9kZWJ1Zy5jCi0rKysgYi9kZXBzL25naHR0cDIvbGliL25naHR0cDJfZGVidWcu YwotQEAgLTUwLDExICs1MCwxMSBAQCB2b2lkIG5naHR0cDJfc2V0X2RlYnVnX3ZwcmludGZfY2Fs bGJhY2soCi0gICBzdGF0aWNfZGVidWdfdnByaW50Zl9jYWxsYmFjayA9IGRlYnVnX3ZwcmludGZf Y2FsbGJhY2s7Ci0gfQotIAotLSNlbHNlIC8qICFERUJVR0JVSUxEICovCi0rI2Vsc2UgLyogIWRl ZmluZWQoREVCVUdCVUlMRCkgKi8KLSAKLSB2b2lkIG5naHR0cDJfc2V0X2RlYnVnX3ZwcmludGZf Y2FsbGJhY2soCi0gICBuZ2h0dHAyX2RlYnVnX3ZwcmludGZfY2FsbGJhY2sgZGVidWdfdnByaW50 Zl9jYWxsYmFjaykgewotICAgKHZvaWQpZGVidWdfdnByaW50Zl9jYWxsYmFjazsKLSB9Ci0gCi0t I2VuZGlmIC8qICFERUJVR0JVSUxEICovCi0rI2VuZGlmIC8qICFkZWZpbmVkKERFQlVHQlVJTEQp ICovCi1kaWZmIC0tZ2l0IGEvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2RlYnVnLmggYi9kZXBz L25naHR0cDIvbGliL25naHR0cDJfZGVidWcuaAotaW5kZXggY2JiNGRkNTcuLjI2NTY2YTYyIDEw MDY0NAotLS0tIGEvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2RlYnVnLmgKLSsrKyBiL2RlcHMv bmdodHRwMi9saWIvbmdodHRwMl9kZWJ1Zy5oCi1AQCAtMjcsMTcgKzI3LDE3IEBACi0gCi0gI2lm ZGVmIEhBVkVfQ09ORklHX0gKLSAjICBpbmNsdWRlIDxjb25maWcuaD4KLS0jZW5kaWYgLyogSEFW RV9DT05GSUdfSCAqLwotKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfQ09ORklHX0gpICovCi0gCi0g I2luY2x1ZGUgPG5naHR0cDIvbmdodHRwMi5oPgotIAotICNpZmRlZiBERUJVR0JVSUxECi0gIyAg ZGVmaW5lIERFQlVHRiguLi4pIG5naHR0cDJfZGVidWdfdnByaW50ZihfX1ZBX0FSR1NfXykKLSB2 b2lkIG5naHR0cDJfZGVidWdfdnByaW50Zihjb25zdCBjaGFyICpmb3JtYXQsIC4uLik7Ci0tI2Vs c2UKLSsjZWxzZSAvKiAhZGVmaW5lZChERUJVR0JVSUxEKSAqLwotICMgIGRlZmluZSBERUJVR0Yo Li4uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0gICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgfSB3aGlsZSAoMCkKLS0jZW5k aWYKLSsjZW5kaWYgLyogIWRlZmluZWQoREVCVUdCVUlMRCkgKi8KLSAKLS0jZW5kaWYgLyogTkdI VFRQMl9ERUJVR19IICovCi0rI2VuZGlmIC8qICFkZWZpbmVkKE5HSFRUUDJfREVCVUdfSCkgKi8K LWRpZmYgLS1naXQgYS9kZXBzL25naHR0cDIvbGliL25naHR0cDJfZXh0cHJpLmggYi9kZXBzL25n aHR0cDIvbGliL25naHR0cDJfZXh0cHJpLmgKLWluZGV4IGRiOTExOTcyLi4yZTAzOTE2NSAxMDA2 NDQKLS0tLSBhL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9leHRwcmkuaAotKysrIGIvZGVwcy9u Z2h0dHAyL2xpYi9uZ2h0dHAyX2V4dHByaS5oCi1AQCAtMjgsNyArMjgsNyBAQAotIAotICNpZmRl ZiBIQVZFX0NPTkZJR19ICi0gIyAgaW5jbHVkZSA8Y29uZmlnLmg+Ci0tI2VuZGlmIC8qIEhBVkVf Q09ORklHX0ggKi8KLSsjZW5kaWYgLyogZGVmaW5lZChIQVZFX0NPTkZJR19IKSAqLwotIAotICNp bmNsdWRlIDxuZ2h0dHAyL25naHR0cDIuaD4KLSAKLUBAIC02Miw0ICs2Miw0IEBAIHZvaWQgbmdo dHRwMl9leHRwcmlfZnJvbV91aW50OChuZ2h0dHAyX2V4dHByaSAqZXh0cHJpLCB1aW50OF90IHU4 ZXh0cHJpKTsKLSAgKi8KLSAjZGVmaW5lIG5naHR0cDJfZXh0cHJpX3VpbnQ4X2luYyhQUkkpICgo KFBSSSkgJiBOR0hUVFAyX0VYVFBSSV9JTkNfTUFTSykgIT0gMCkKLSAKLS0jZW5kaWYgLyogTkdI VFRQMl9FWFRQUklfSCAqLwotKyNlbmRpZiAvKiAhZGVmaW5lZChOR0hUVFAyX0VYVFBSSV9IKSAq LwotZGlmZiAtLWdpdCBhL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9mcmFtZS5jIGIvZGVwcy9u Z2h0dHAyL2xpYi9uZ2h0dHAyX2ZyYW1lLmMKLWluZGV4IGVkYzJhYWFhLi4yNjRhZTlkMyAxMDA2 NDQKLS0tLSBhL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9mcmFtZS5jCi0rKysgYi9kZXBzL25n aHR0cDIvbGliL25naHR0cDJfZnJhbWUuYwotQEAgLTc1MCw2ICs3NTAsMTYgQEAgdm9pZCBuZ2h0 dHAyX2ZyYW1lX3VucGFja19hbHRzdmNfcGF5bG9hZChuZ2h0dHAyX2V4dGVuc2lvbiAqZnJhbWUs Ci0gICB1aW50OF90ICpwOwotIAotICAgYWx0c3ZjID0gZnJhbWUtPnBheWxvYWQ7Ci0rCi0rICBp ZiAocGF5bG9hZGxlbiA9PSAwKSB7Ci0rICAgIGFsdHN2Yy0+b3JpZ2luID0gTlVMTDsKLSsgICAg YWx0c3ZjLT5vcmlnaW5fbGVuID0gMDsKLSsgICAgYWx0c3ZjLT5maWVsZF92YWx1ZSA9IE5VTEw7 Ci0rICAgIGFsdHN2Yy0+ZmllbGRfdmFsdWVfbGVuID0gMDsKLSsKLSsgICAgcmV0dXJuOwotKyAg fQotKwotICAgcCA9IHBheWxvYWQ7Ci0gCi0gICBhbHRzdmMtPm9yaWdpbiA9IHA7Ci1kaWZmIC0t Z2l0IGEvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2ZyYW1lLmggYi9kZXBzL25naHR0cDIvbGli L25naHR0cDJfZnJhbWUuaAotaW5kZXggZDU4NjY4ODAuLmVkNGFiMmM2IDEwMDY0NAotLS0tIGEv ZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2ZyYW1lLmgKLSsrKyBiL2RlcHMvbmdodHRwMi9saWIv bmdodHRwMl9mcmFtZS5oCi1AQCAtMjcsNyArMjcsNyBAQAotIAotICNpZmRlZiBIQVZFX0NPTkZJ R19ICi0gIyAgaW5jbHVkZSA8Y29uZmlnLmg+Ci0tI2VuZGlmIC8qIEhBVkVfQ09ORklHX0ggKi8K LSsjZW5kaWYgLyogZGVmaW5lZChIQVZFX0NPTkZJR19IKSAqLwotIAotICNpbmNsdWRlIDxuZ2h0 dHAyL25naHR0cDIuaD4KLSAjaW5jbHVkZSAibmdodHRwMl9oZC5oIgotQEAgLTYzNCw0ICs2MzQs NCBAQCBpbnQgbmdodHRwMl9pdl9jaGVjayhjb25zdCBuZ2h0dHAyX3NldHRpbmdzX2VudHJ5ICpp diwgc2l6ZV90IG5pdik7Ci0gdm9pZCBuZ2h0dHAyX2ZyYW1lX2FkZF9wYWQobmdodHRwMl9idWZz ICpidWZzLCBuZ2h0dHAyX2ZyYW1lX2hkICpoZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzaXplX3QgcGFkbGVuLCBpbnQgZnJhbWVoZF9vbmx5KTsKLSAKLS0jZW5kaWYgLyogTkdIVFRQ Ml9GUkFNRV9IICovCi0rI2VuZGlmIC8qICFkZWZpbmVkKE5HSFRUUDJfRlJBTUVfSCkgKi8KLWRp ZmYgLS1naXQgYS9kZXBzL25naHR0cDIvbGliL25naHR0cDJfaGQuYyBiL2RlcHMvbmdodHRwMi9s aWIvbmdodHRwMl9oZC5jCi1pbmRleCA1NWZjMmNjNi4uYWQ4NWVlZDEgMTAwNjQ0Ci0tLS0gYS9k ZXBzL25naHR0cDIvbGliL25naHR0cDJfaGQuYwotKysrIGIvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0 dHAyX2hkLmMKLUBAIC01OTQsOCArNTk0LDE5IEBAIHN0YXRpYyB2b2lkIGhkX21hcF9yZW1vdmUo bmdodHRwMl9oZF9tYXAgKm1hcCwgbmdodHRwMl9oZF9lbnRyeSAqZW50KSB7Ci0gc3RhdGljIGlu dCBoZF9yaW5nYnVmX2luaXQobmdodHRwMl9oZF9yaW5nYnVmICpyaW5nYnVmLCBzaXplX3QgYnVm c2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2h0dHAyX21lbSAqbWVtKSB7Ci0g ICBzaXplX3Qgc2l6ZTsKLSsgIGNvbnN0IHNpemVfdCBtYXhfc2l6ZSA9IFNJWkVfTUFYIC8gc2l6 ZW9mKG5naHR0cDJfaGRfZW50cnkgKik7Ci0rCi0rICBpZiAoYnVmc2l6ZSA+IG1heF9zaXplKSB7 Ci0rICAgIHJldHVybiBOR0hUVFAyX0VSUl9OT01FTTsKLSsgIH0KLSsKLSAgIGZvciAoc2l6ZSA9 IDE7IHNpemUgPCBidWZzaXplOyBzaXplIDw8PSAxKQotICAgICA7Ci0rCi0rICBpZiAoc2l6ZSA+ IG1heF9zaXplKSB7Ci0rICAgIHJldHVybiBOR0hUVFAyX0VSUl9OT01FTTsKLSsgIH0KLSsKLSAg IHJpbmdidWYtPmJ1ZmZlciA9IG5naHR0cDJfbWVtX21hbGxvYyhtZW0sIHNpemVvZihuZ2h0dHAy X2hkX2VudHJ5ICopICogc2l6ZSk7Ci0gICBpZiAocmluZ2J1Zi0+YnVmZmVyID09IE5VTEwpIHsK LSAgICAgcmV0dXJuIE5HSFRUUDJfRVJSX05PTUVNOwotZGlmZiAtLWdpdCBhL2RlcHMvbmdodHRw Mi9saWIvbmdodHRwMl9oZC5oIGIvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2hkLmgKLWluZGV4 IDM4YTMxYTgzLi5iZGM3ZmFkNSAxMDA2NDQKLS0tLSBhL2RlcHMvbmdodHRwMi9saWIvbmdodHRw Ml9oZC5oCi0rKysgYi9kZXBzL25naHR0cDIvbGliL25naHR0cDJfaGQuaAotQEAgLTI3LDcgKzI3 LDcgQEAKLSAKLSAjaWZkZWYgSEFWRV9DT05GSUdfSAotICMgIGluY2x1ZGUgPGNvbmZpZy5oPgot LSNlbmRpZiAvKiBIQVZFX0NPTkZJR19IICovCi0rI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9DT05G SUdfSCkgKi8KLSAKLSAjaW5jbHVkZSA8bmdodHRwMi9uZ2h0dHAyLmg+Ci0gCi1AQCAtNDM5LDQg KzQzOSw0IEBAIG5naHR0cDJfc3NpemUgbmdodHRwMl9oZF9odWZmX2RlY29kZShuZ2h0dHAyX2hk X2h1ZmZfZGVjb2RlX2NvbnRleHQgKmN0eCwKLSAgKi8KLSBpbnQgbmdodHRwMl9oZF9odWZmX2Rl Y29kZV9mYWlsdXJlX3N0YXRlKG5naHR0cDJfaGRfaHVmZl9kZWNvZGVfY29udGV4dCAqY3R4KTsK LSAKLS0jZW5kaWYgLyogTkdIVFRQMl9IRF9IICovCi0rI2VuZGlmIC8qICFkZWZpbmVkKE5HSFRU UDJfSERfSCkgKi8KLWRpZmYgLS1naXQgYS9kZXBzL25naHR0cDIvbGliL25naHR0cDJfaGRfaHVm Zm1hbi5oIGIvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2hkX2h1ZmZtYW4uaAotaW5kZXggMmJm ZDUzMTguLmRmMDM3YThiIDEwMDY0NAotLS0tIGEvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2hk X2h1ZmZtYW4uaAotKysrIGIvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2hkX2h1ZmZtYW4uaAot QEAgLTI3LDcgKzI3LDcgQEAKLSAKLSAjaWZkZWYgSEFWRV9DT05GSUdfSAotICMgIGluY2x1ZGUg PGNvbmZpZy5oPgotLSNlbmRpZiAvKiBIQVZFX0NPTkZJR19IICovCi0rI2VuZGlmIC8qIGRlZmlu ZWQoSEFWRV9DT05GSUdfSCkgKi8KLSAKLSAjaW5jbHVkZSA8bmdodHRwMi9uZ2h0dHAyLmg+Ci0g Ci1AQCAtNjksNCArNjksNCBAQCB0eXBlZGVmIHN0cnVjdCB7Ci0gZXh0ZXJuIGNvbnN0IG5naHR0 cDJfaHVmZl9zeW0gaHVmZl9zeW1fdGFibGVbXTsKLSBleHRlcm4gY29uc3QgbmdodHRwMl9odWZm X2RlY29kZSBodWZmX2RlY29kZV90YWJsZVtdWzE2XTsKLSAKLS0jZW5kaWYgLyogTkdIVFRQMl9I RF9IVUZGTUFOX0ggKi8KLSsjZW5kaWYgLyogIWRlZmluZWQoTkdIVFRQMl9IRF9IVUZGTUFOX0gp ICovCi1kaWZmIC0tZ2l0IGEvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2hlbHBlci5oIGIvZGVw cy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2hlbHBlci5oCi1pbmRleCBmNWRlNjI5MC4uN2Q2NDA3NjEg MTAwNjQ0Ci0tLS0gYS9kZXBzL25naHR0cDIvbGliL25naHR0cDJfaGVscGVyLmgKLSsrKyBiL2Rl cHMvbmdodHRwMi9saWIvbmdodHRwMl9oZWxwZXIuaAotQEAgLTI3LDcgKzI3LDcgQEAKLSAKLSAj aWZkZWYgSEFWRV9DT05GSUdfSAotICMgIGluY2x1ZGUgPGNvbmZpZy5oPgotLSNlbmRpZiAvKiBI QVZFX0NPTkZJR19IICovCi0rI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9DT05GSUdfSCkgKi8KLSAK LSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHN0ZGRlZi5oPgotQEAgLTE0Miw0ICsx NDIsNCBAQCBpbnQgbmdodHRwMl9zaG91bGRfc2VuZF93aW5kb3dfdXBkYXRlKGludDMyX3QgbG9j YWxfd2luZG93X3NpemUsCi0gICovCi0gdWludDhfdCAqbmdodHRwMl9jcHltZW0odWludDhfdCAq ZGVzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3QgbGVuKTsKLSAKLS0jZW5kaWYgLyogTkdIVFRQ Ml9IRUxQRVJfSCAqLwotKyNlbmRpZiAvKiAhZGVmaW5lZChOR0hUVFAyX0hFTFBFUl9IKSAqLwot ZGlmZiAtLWdpdCBhL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9odHRwLmMgYi9kZXBzL25naHR0 cDIvbGliL25naHR0cDJfaHR0cC5jCi1pbmRleCBmMjIyZmU1ZS4uNjBhMGIwMWUgMTAwNjQ0Ci0t LS0gYS9kZXBzL25naHR0cDIvbGliL25naHR0cDJfaHR0cC5jCi0rKysgYi9kZXBzL25naHR0cDIv bGliL25naHR0cDJfaHR0cC5jCi1AQCAtMjA3LDcgKzIwNyw2IEBAIHN0YXRpYyBpbnQgaHR0cF9y ZXF1ZXN0X29uX2hlYWRlcihuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtLCBuZ2h0dHAyX2hkX252ICpu diwKLSAgICAgaWYgKCF0cmFpbGVyICYmCi0gICAgICAgICAvKiBEbyBub3QgcGFyc2UgdGhlIGhl YWRlciBmaWVsZCBpbiBQVVNIX1BST01JU0UuICovCi0gICAgICAgICAoc3RyZWFtLT5zdHJlYW1f aWQgJiAxKSAmJgotLSAgICAgICAgKHN0cmVhbS0+ZmxhZ3MgJiBOR0hUVFAyX1NUUkVBTV9GTEFH X05PX1JGQzc1NDBfUFJJT1JJVElFUykgJiYKLSAgICAgICAgICEoc3RyZWFtLT5odHRwX2ZsYWdz ICYgTkdIVFRQMl9IVFRQX0ZMQUdfQkFEX1BSSU9SSVRZKSkgewotICAgICAgIG5naHR0cDJfZXh0 cHJpX2Zyb21fdWludDgoJmV4dHByaSwgc3RyZWFtLT5odHRwX2V4dHByaSk7Ci0gICAgICAgaWYg KG5naHR0cDJfaHR0cF9wYXJzZV9wcmlvcml0eSgmZXh0cHJpLCBudi0+dmFsdWUtPmJhc2UsCi1A QCAtNjYwLDE3ICs2NTksMTcgQEAgdm9pZCBuZ2h0dHAyX2h0dHBfcmVjb3JkX3JlcXVlc3RfbWV0 aG9kKG5naHR0cDJfc3RyZWFtICpzdHJlYW0sCi0gaW50IG5naHR0cDJfaHR0cF9wYXJzZV9wcmlv cml0eShuZ2h0dHAyX2V4dHByaSAqZGVzdCwgY29uc3QgdWludDhfdCAqdmFsdWUsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdmFsdWVsZW4pIHsKLSAgIG5naHR0cDJf ZXh0cHJpIHByaSA9ICpkZXN0OwotLSAgc2ZfcGFyc2VyIHNmcDsKLS0gIHNmX3ZlYyBrZXk7Ci0t ICBzZl92YWx1ZSB2YWw7Ci0rICBzZnBhcnNlX3BhcnNlciBzZnA7Ci0rICBzZnBhcnNlX3ZlYyBr ZXk7Ci0rICBzZnBhcnNlX3ZhbHVlIHZhbDsKLSAgIGludCBydjsKLSAKLS0gIHNmX3BhcnNlcl9p bml0KCZzZnAsIHZhbHVlLCB2YWx1ZWxlbik7Ci0rICBzZnBhcnNlX3BhcnNlcl9pbml0KCZzZnAs IHZhbHVlLCB2YWx1ZWxlbik7Ci0gCi0gICBmb3IgKDs7KSB7Ci0tICAgIHJ2ID0gc2ZfcGFyc2Vy X2RpY3QoJnNmcCwgJmtleSwgJnZhbCk7Ci0rICAgIHJ2ID0gc2ZwYXJzZV9wYXJzZXJfZGljdCgm c2ZwLCAma2V5LCAmdmFsKTsKLSAgICAgaWYgKHJ2ICE9IDApIHsKLS0gICAgICBpZiAocnYgPT0g U0ZfRVJSX0VPRikgewotKyAgICAgIGlmIChydiA9PSBTRlBBUlNFX0VSUl9FT0YpIHsKLSAgICAg ICAgIGJyZWFrOwotICAgICAgIH0KLSAKLUBAIC02ODMsNyArNjgyLDcgQEAgaW50IG5naHR0cDJf aHR0cF9wYXJzZV9wcmlvcml0eShuZ2h0dHAyX2V4dHByaSAqZGVzdCwgY29uc3QgdWludDhfdCAq dmFsdWUsCi0gCi0gICAgIHN3aXRjaCAoa2V5LmJhc2VbMF0pIHsKLSAgICAgY2FzZSAnaSc6Ci0t ICAgICAgaWYgKHZhbC50eXBlICE9IFNGX1RZUEVfQk9PTEVBTikgewotKyAgICAgIGlmICh2YWwu dHlwZSAhPSBTRlBBUlNFX1RZUEVfQk9PTEVBTikgewotICAgICAgICAgcmV0dXJuIE5HSFRUUDJf RVJSX0lOVkFMSURfQVJHVU1FTlQ7Ci0gICAgICAgfQotIAotQEAgLTY5MSw3ICs2OTAsNyBAQCBp bnQgbmdodHRwMl9odHRwX3BhcnNlX3ByaW9yaXR5KG5naHR0cDJfZXh0cHJpICpkZXN0LCBjb25z dCB1aW50OF90ICp2YWx1ZSwKLSAKLSAgICAgICBicmVhazsKLSAgICAgY2FzZSAndSc6Ci0tICAg ICAgaWYgKHZhbC50eXBlICE9IFNGX1RZUEVfSU5URUdFUiB8fAotKyAgICAgIGlmICh2YWwudHlw ZSAhPSBTRlBBUlNFX1RZUEVfSU5URUdFUiB8fAotICAgICAgICAgICB2YWwuaW50ZWdlciA8IE5H SFRUUDJfRVhUUFJJX1VSR0VOQ1lfSElHSCB8fAotICAgICAgICAgICBOR0hUVFAyX0VYVFBSSV9V UkdFTkNZX0xPVyA8IHZhbC5pbnRlZ2VyKSB7Ci0gICAgICAgICByZXR1cm4gTkdIVFRQMl9FUlJf SU5WQUxJRF9BUkdVTUVOVDsKLWRpZmYgLS1naXQgYS9kZXBzL25naHR0cDIvbGliL25naHR0cDJf aHR0cC5oIGIvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2h0dHAuaAotaW5kZXggZDk5OTJmZTYu LjI5MjUzMzRjIDEwMDY0NAotLS0tIGEvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2h0dHAuaAot KysrIGIvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2h0dHAuaAotQEAgLTI3LDcgKzI3LDcgQEAK LSAKLSAjaWZkZWYgSEFWRV9DT05GSUdfSAotICMgIGluY2x1ZGUgPGNvbmZpZy5oPgotLSNlbmRp ZiAvKiBIQVZFX0NPTkZJR19IICovCi0rI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9DT05GSUdfSCkg Ki8KLSAKLSAjaW5jbHVkZSA8bmdodHRwMi9uZ2h0dHAyLmg+Ci0gI2luY2x1ZGUgIm5naHR0cDJf c2Vzc2lvbi5oIgotQEAgLTk3LDQgKzk3LDQgQEAgdm9pZCBuZ2h0dHAyX2h0dHBfcmVjb3JkX3Jl cXVlc3RfbWV0aG9kKG5naHR0cDJfc3RyZWFtICpzdHJlYW0sCi0gaW50IG5naHR0cDJfaHR0cF9w YXJzZV9wcmlvcml0eShuZ2h0dHAyX2V4dHByaSAqZGVzdCwgY29uc3QgdWludDhfdCAqdmFsdWUs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdmFsdWVsZW4pOwotIAot LSNlbmRpZiAvKiBOR0hUVFAyX0hUVFBfSCAqLwotKyNlbmRpZiAvKiAhZGVmaW5lZChOR0hUVFAy X0hUVFBfSCkgKi8KLWRpZmYgLS1naXQgYS9kZXBzL25naHR0cDIvbGliL25naHR0cDJfaW50Lmgg Yi9kZXBzL25naHR0cDIvbGliL25naHR0cDJfaW50LmgKLWluZGV4IGIyMzU4NWNjLi5kODljZjE1 NCAxMDA2NDQKLS0tLSBhL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9pbnQuaAotKysrIGIvZGVw cy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX2ludC5oCi1AQCAtMjcsNyArMjcsNyBAQAotIAotICNpZmRl ZiBIQVZFX0NPTkZJR19ICi0gIyAgaW5jbHVkZSA8Y29uZmlnLmg+Ci0tI2VuZGlmIC8qIEhBVkVf Q09ORklHX0ggKi8KLSsjZW5kaWYgLyogZGVmaW5lZChIQVZFX0NPTkZJR19IKSAqLwotIAotICNp bmNsdWRlIDxuZ2h0dHAyL25naHR0cDIuaD4KLSAKLUBAIC01Miw3ICs1MiwxMSBAQCB0eXBlZGVm IGVudW0gewotICAgICogVW5saWtlIE5HSFRUUDJfRVJSX0lHTl9IVFRQX0hFQURFUiwgdGhpcyBk b2VzIG5vdCBpbnZva2UKLSAgICAqIG5naHR0cDJfb25faW52YWxpZF9oZWFkZXJfY2FsbGJhY2su Ci0gICAgKi8KLS0gIE5HSFRUUDJfRVJSX1JFTU9WRV9IVFRQX0hFQURFUiA9IC0xMDYKLSsgIE5H SFRUUDJfRVJSX1JFTU9WRV9IVFRQX0hFQURFUiA9IC0xMDYsCi0rICAvKgotKyAgICogQ2FuY2Vs IHB1c2hlZCBzdHJlYW0uCi0rICAgKi8KLSsgIE5HSFRUUDJfRVJSX1BVU0hfQ0FOQ0VMID0gLTEw NywKLSB9IG5naHR0cDJfaW50ZXJuYWxfZXJyb3I7Ci0gCi0tI2VuZGlmIC8qIE5HSFRUUDJfSU5U X0ggKi8KLSsjZW5kaWYgLyogIWRlZmluZWQoTkdIVFRQMl9JTlRfSCkgKi8KLWRpZmYgLS1naXQg YS9kZXBzL25naHR0cDIvbGliL25naHR0cDJfbWFwLmMgYi9kZXBzL25naHR0cDIvbGliL25naHR0 cDJfbWFwLmMKLWluZGV4IGVlNmJiMTk2Li5mODlmMzEwMyAxMDA2NDQKLS0tLSBhL2RlcHMvbmdo dHRwMi9saWIvbmdodHRwMl9tYXAuYwotKysrIGIvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX21h cC5jCi1AQCAtMzEsMTIgKzMxLDEzIEBACi0gCi0gI2luY2x1ZGUgIm5naHR0cDJfaGVscGVyLmgi Ci0gCi0tI2RlZmluZSBOR0hUVFAyX0lOSVRJQUxfVEFCTEVfTEVOQklUUyA0Ci0rI2RlZmluZSBO R0hUVFAyX0lOSVRJQUxfSEFTSEJJVFMgNAotIAotLXZvaWQgbmdodHRwMl9tYXBfaW5pdChuZ2h0 dHAyX21hcCAqbWFwLCBuZ2h0dHAyX21lbSAqbWVtKSB7Ci0rdm9pZCBuZ2h0dHAyX21hcF9pbml0 KG5naHR0cDJfbWFwICptYXAsIHVpbnQzMl90IHNlZWQsIG5naHR0cDJfbWVtICptZW0pIHsKLSAg IG1hcC0+bWVtID0gbWVtOwotICAgbWFwLT5oYXNoYml0cyA9IDA7Ci0gICBtYXAtPnRhYmxlID0g TlVMTDsKLSsgIG1hcC0+c2VlZCA9IHNlZWQ7Ci0gICBtYXAtPnNpemUgPSAwOwotIH0KLSAKLUBA IC03Nyw4ICs3OCwxMyBAQCBpbnQgbmdodHRwMl9tYXBfZWFjaChjb25zdCBuZ2h0dHAyX21hcCAq bWFwLCBpbnQgKCpmdW5jKSh2b2lkICpkYXRhLCB2b2lkICpwdHIpLAotICAgcmV0dXJuIDA7Ci0g fQotIAotLXN0YXRpYyBzaXplX3QgaGFzaChuZ2h0dHAyX21hcF9rZXlfdHlwZSBrZXksIHNpemVf dCBiaXRzKSB7Ci0tICByZXR1cm4gKHNpemVfdCkoKCh1aW50MzJfdClrZXkgKiAyNjU0NDM1NzY5 dSkgPj4gKDMyIC0gYml0cykpOwotK3N0YXRpYyBzaXplX3QgbWFwX2hhc2goY29uc3QgbmdodHRw Ml9tYXAgKm1hcCwgbmdodHRwMl9tYXBfa2V5X3R5cGUga2V5KSB7Ci0rICAvKiBoYXNoZXIgZnJv bQotKyAgICAgaHR0cHM6Ly9naXRodWIuY29tL3J1c3QtbGFuZy9ydXN0Yy1oYXNoL2Jsb2IvZGM1 YzMzZjEyODNkZTJkYTY0ZDhkN2EwNjQwMWQ5MWFkZWQwM2FkNC9zcmMvbGliLnJzCi0rICAgICBX ZSBkbyBub3QgcGVyZm9ybSBmaW5hbGl6YXRpb24gaGVyZSBiZWNhdXNlIHdlIHVzZSB0b3AgYml0 cwotKyAgICAgYW55d2F5LiAqLwotKyAgdWludDMyX3QgaCA9ICgodWludDMyX3Qpa2V5ICsgbWFw LT5zZWVkKSAqIDB4OTNkNzY1ZGQ7Ci0rICByZXR1cm4gKHNpemVfdCkoKGggKiAyNjU0NDM1NzY5 dSkgPj4gKDMyIC0gbWFwLT5oYXNoYml0cykpOwotIH0KLSAKLSBzdGF0aWMgdm9pZCBtYXBfYnVj a2V0X3N3YXAobmdodHRwMl9tYXBfYnVja2V0ICphLCBuZ2h0dHAyX21hcF9idWNrZXQgKmIpIHsK LUBAIC0xMDksMjQgKzExNSwyOCBAQCB2b2lkIG5naHR0cDJfbWFwX3ByaW50X2Rpc3RhbmNlKGNv bnN0IG5naHR0cDJfbWFwICptYXApIHsKLSAgICAgICBjb250aW51ZTsKLSAgICAgfQotIAotLSAg ICBpZHggPSBoYXNoKGJrdC0+a2V5LCBtYXAtPmhhc2hiaXRzKTsKLSsgICAgaWR4ID0gbWFwX2hh c2gobWFwLCBia3QtPmtleSk7Ci0gICAgIGZwcmludGYoc3RkZXJyLCAiQCV6dSBoYXNoPSV6dSBr ZXk9JWQgYmFzZT0lenUgZGlzdGFuY2U9JXVcbiIsIGksCi0tICAgICAgICAgICAgaGFzaChia3Qt PmtleSwgbWFwLT5oYXNoYml0cyksIGJrdC0+a2V5LCBpZHgsIGJrdC0+cHNsKTsKLSsgICAgICAg ICAgICBtYXBfaGFzaChtYXAsIGJrdC0+a2V5KSwgYmt0LT5rZXksIGlkeCwgYmt0LT5wc2wpOwot ICAgfQotIH0KLS0jZW5kaWYgLyogIVdJTjMyICovCi0tCi0tc3RhdGljIGludCBpbnNlcnQobmdo dHRwMl9tYXBfYnVja2V0ICp0YWJsZSwgc2l6ZV90IGhhc2hiaXRzLAotLSAgICAgICAgICAgICAg ICAgIG5naHR0cDJfbWFwX2tleV90eXBlIGtleSwgdm9pZCAqZGF0YSkgewotLSAgc2l6ZV90IGlk eCA9IGhhc2goa2V5LCBoYXNoYml0cyk7Ci0tICBuZ2h0dHAyX21hcF9idWNrZXQgYiA9IHswLCBr ZXksIGRhdGF9LCAqYmt0OwotLSAgc2l6ZV90IG1hc2sgPSAoMXUgPDwgaGFzaGJpdHMpIC0gMTsK LSsjZW5kaWYgLyogIWRlZmluZWQoV0lOMzIpICovCi0rCi0rc3RhdGljIGludCBtYXBfaW5zZXJ0 KG5naHR0cDJfbWFwICptYXAsIG5naHR0cDJfbWFwX2tleV90eXBlIGtleSwgdm9pZCAqZGF0YSkg ewotKyAgc2l6ZV90IGlkeCA9IG1hcF9oYXNoKG1hcCwga2V5KTsKLSsgIG5naHR0cDJfbWFwX2J1 Y2tldCBiID0gewotKyAgICAua2V5ID0ga2V5LAotKyAgICAuZGF0YSA9IGRhdGEsCi0rICB9Owot KyAgbmdodHRwMl9tYXBfYnVja2V0ICpia3Q7Ci0rICBzaXplX3QgbWFzayA9ICgxdSA8PCBtYXAt Pmhhc2hiaXRzKSAtIDE7Ci0gCi0gICBmb3IgKDs7KSB7Ci0tICAgIGJrdCA9ICZ0YWJsZVtpZHhd OwotKyAgICBia3QgPSAmbWFwLT50YWJsZVtpZHhdOwotIAotICAgICBpZiAoYmt0LT5kYXRhID09 IE5VTEwpIHsKLSAgICAgICAqYmt0ID0gYjsKLSsgICAgICArK21hcC0+c2l6ZTsKLSAgICAgICBy ZXR1cm4gMDsKLSAgICAgfQotIAotQEAgLTE0NywxNSArMTU3LDE5IEBAIHN0YXRpYyBpbnQgaW5z ZXJ0KG5naHR0cDJfbWFwX2J1Y2tldCAqdGFibGUsIHNpemVfdCBoYXNoYml0cywKLSAKLSBzdGF0 aWMgaW50IG1hcF9yZXNpemUobmdodHRwMl9tYXAgKm1hcCwgc2l6ZV90IG5ld19oYXNoYml0cykg ewotICAgc2l6ZV90IGk7Ci0tICBuZ2h0dHAyX21hcF9idWNrZXQgKm5ld190YWJsZTsKLSAgIG5n aHR0cDJfbWFwX2J1Y2tldCAqYmt0OwotICAgc2l6ZV90IHRhYmxlbGVuOwotICAgaW50IHJ2Owot KyAgbmdodHRwMl9tYXAgbmV3X21hcCA9IHsKLSsgICAgLnRhYmxlID0gbmdodHRwMl9tZW1fY2Fs bG9jKG1hcC0+bWVtLCAxdSA8PCBuZXdfaGFzaGJpdHMsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzaXplb2YobmdodHRwMl9tYXBfYnVja2V0KSksCi0rICAgIC5tZW0gPSBtYXAt Pm1lbSwKLSsgICAgLnNlZWQgPSBtYXAtPnNlZWQsCi0rICAgIC5oYXNoYml0cyA9IG5ld19oYXNo Yml0cywKLSsgIH07Ci0gICAodm9pZClydjsKLSAKLS0gIG5ld190YWJsZSA9IG5naHR0cDJfbWVt X2NhbGxvYyhtYXAtPm1lbSwgMXUgPDwgbmV3X2hhc2hiaXRzLAotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNpemVvZihuZ2h0dHAyX21hcF9idWNrZXQpKTsKLS0gIGlmIChuZXdf dGFibGUgPT0gTlVMTCkgewotKyAgaWYgKG5ld19tYXAudGFibGUgPT0gTlVMTCkgewotICAgICBy ZXR1cm4gTkdIVFRQMl9FUlJfTk9NRU07Ci0gICB9Ci0gCi1AQCAtMTY4LDE1ICsxODIsMTUgQEAg c3RhdGljIGludCBtYXBfcmVzaXplKG5naHR0cDJfbWFwICptYXAsIHNpemVfdCBuZXdfaGFzaGJp dHMpIHsKLSAgICAgICAgIGNvbnRpbnVlOwotICAgICAgIH0KLSAKLS0gICAgICBydiA9IGluc2Vy dChuZXdfdGFibGUsIG5ld19oYXNoYml0cywgYmt0LT5rZXksIGJrdC0+ZGF0YSk7Ci0rICAgICAg cnYgPSBtYXBfaW5zZXJ0KCZuZXdfbWFwLCBia3QtPmtleSwgYmt0LT5kYXRhKTsKLSAKLSAgICAg ICBhc3NlcnQoMCA9PSBydik7Ci0gICAgIH0KLSAgIH0KLSAKLSAgIG5naHR0cDJfbWVtX2ZyZWUo bWFwLT5tZW0sIG1hcC0+dGFibGUpOwotKyAgbWFwLT50YWJsZSA9IG5ld19tYXAudGFibGU7Ci0g ICBtYXAtPmhhc2hiaXRzID0gbmV3X2hhc2hiaXRzOwotLSAgbWFwLT50YWJsZSA9IG5ld190YWJs ZTsKLSAKLSAgIHJldHVybiAwOwotIH0KLUBAIC0xODYsMzAgKzIwMCwyOCBAQCBpbnQgbmdodHRw Ml9tYXBfaW5zZXJ0KG5naHR0cDJfbWFwICptYXAsIG5naHR0cDJfbWFwX2tleV90eXBlIGtleSwg dm9pZCAqZGF0YSkgewotIAotICAgYXNzZXJ0KGRhdGEpOwotIAotLSAgLyogTG9hZCBmYWN0b3Ig aXMgMC43NSAqLwotKyAgLyogTG9hZCBmYWN0b3IgaXMgNy84ICovCi0gICAvKiBVbmRlciB0aGUg dmVyeSBpbml0aWFsIGNvbmRpdGlvbiwgdGhhdCBpcyBtYXAtPnNpemUgPT0gMCBhbmQKLS0gICAg IG1hcC0+aGFzaGJpdHMgPT0gMCwgNCA+IDMgc3RpbGwgaG9sZHMgbmljZWx5LiAqLwotLSAgaWYg KChtYXAtPnNpemUgKyAxKSAqIDQgPiAoMXUgPDwgbWFwLT5oYXNoYml0cykgKiAzKSB7Ci0rICAg ICBtYXAtPmhhc2hiaXRzID09IDAsIDggPiA3IHN0aWxsIGhvbGRzIG5pY2VseS4gKi8KLSsgIGlm ICgobWFwLT5zaXplICsgMSkgKiA4ID4gKDF1IDw8IG1hcC0+aGFzaGJpdHMpICogNykgewotICAg ICBpZiAobWFwLT5oYXNoYml0cykgewotICAgICAgIHJ2ID0gbWFwX3Jlc2l6ZShtYXAsIG1hcC0+ aGFzaGJpdHMgKyAxKTsKLSAgICAgICBpZiAocnYgIT0gMCkgewotICAgICAgICAgcmV0dXJuIHJ2 OwotICAgICAgIH0KLSAgICAgfSBlbHNlIHsKLS0gICAgICBydiA9IG1hcF9yZXNpemUobWFwLCBO R0hUVFAyX0lOSVRJQUxfVEFCTEVfTEVOQklUUyk7Ci0rICAgICAgcnYgPSBtYXBfcmVzaXplKG1h cCwgTkdIVFRQMl9JTklUSUFMX0hBU0hCSVRTKTsKLSAgICAgICBpZiAocnYgIT0gMCkgewotICAg ICAgICAgcmV0dXJuIHJ2OwotICAgICAgIH0KLSAgICAgfQotICAgfQotIAotLSAgcnYgPSBpbnNl cnQobWFwLT50YWJsZSwgbWFwLT5oYXNoYml0cywga2V5LCBkYXRhKTsKLSsgIHJ2ID0gbWFwX2lu c2VydChtYXAsIGtleSwgZGF0YSk7Ci0gICBpZiAocnYgIT0gMCkgewotICAgICByZXR1cm4gcnY7 Ci0gICB9Ci0gCi0tICArK21hcC0+c2l6ZTsKLS0KLSAgIHJldHVybiAwOwotIH0KLSAKLUBAIC0y MjMsNyArMjM1LDcgQEAgdm9pZCAqbmdodHRwMl9tYXBfZmluZChjb25zdCBuZ2h0dHAyX21hcCAq bWFwLCBuZ2h0dHAyX21hcF9rZXlfdHlwZSBrZXkpIHsKLSAgICAgcmV0dXJuIE5VTEw7Ci0gICB9 Ci0gCi0tICBpZHggPSBoYXNoKGtleSwgbWFwLT5oYXNoYml0cyk7Ci0rICBpZHggPSBtYXBfaGFz aChtYXAsIGtleSk7Ci0gICBtYXNrID0gKDF1IDw8IG1hcC0+aGFzaGJpdHMpIC0gMTsKLSAKLSAg IGZvciAoOzspIHsKLUBAIC0yNTIsNyArMjY0LDcgQEAgaW50IG5naHR0cDJfbWFwX3JlbW92ZShu Z2h0dHAyX21hcCAqbWFwLCBuZ2h0dHAyX21hcF9rZXlfdHlwZSBrZXkpIHsKLSAgICAgcmV0dXJu IE5HSFRUUDJfRVJSX0lOVkFMSURfQVJHVU1FTlQ7Ci0gICB9Ci0gCi0tICBpZHggPSBoYXNoKGtl eSwgbWFwLT5oYXNoYml0cyk7Ci0rICBpZHggPSBtYXBfaGFzaChtYXAsIGtleSk7Ci0gICBtYXNr ID0gKDF1IDw8IG1hcC0+aGFzaGJpdHMpIC0gMTsKLSAKLSAgIGZvciAoOzspIHsKLWRpZmYgLS1n aXQgYS9kZXBzL25naHR0cDIvbGliL25naHR0cDJfbWFwLmggYi9kZXBzL25naHR0cDIvbGliL25n aHR0cDJfbWFwLmgKLWluZGV4IDVhZGZiNzhkLi5lNDU2ODViYyAxMDA2NDQKLS0tLSBhL2RlcHMv bmdodHRwMi9saWIvbmdodHRwMl9tYXAuaAotKysrIGIvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAy X21hcC5oCi1AQCAtMjgsNyArMjgsNyBAQAotIAotICNpZmRlZiBIQVZFX0NPTkZJR19ICi0gIyAg aW5jbHVkZSA8Y29uZmlnLmg+Ci0tI2VuZGlmIC8qIEhBVkVfQ09ORklHX0ggKi8KLSsjZW5kaWYg LyogZGVmaW5lZChIQVZFX0NPTkZJR19IKSAqLwotIAotICNpbmNsdWRlIDxuZ2h0dHAyL25naHR0 cDIuaD4KLSAKLUBAIC00Nyw2ICs0Nyw3IEBAIHR5cGVkZWYgc3RydWN0IG5naHR0cDJfbWFwX2J1 Y2tldCB7Ci0gdHlwZWRlZiBzdHJ1Y3QgbmdodHRwMl9tYXAgewotICAgbmdodHRwMl9tYXBfYnVj a2V0ICp0YWJsZTsKLSAgIG5naHR0cDJfbWVtICptZW07Ci0rICB1aW50MzJfdCBzZWVkOwotICAg c2l6ZV90IHNpemU7Ci0gICBzaXplX3QgaGFzaGJpdHM7Ci0gfSBuZ2h0dHAyX21hcDsKLUBAIC01 NCw3ICs1NSw3IEBAIHR5cGVkZWYgc3RydWN0IG5naHR0cDJfbWFwIHsKLSAvKgotICAqIG5naHR0 cDJfbWFwX2luaXQgaW5pdGlhbGl6ZXMgdGhlIG1hcCB8bWFwfC4KLSAgKi8KLS12b2lkIG5naHR0 cDJfbWFwX2luaXQobmdodHRwMl9tYXAgKm1hcCwgbmdodHRwMl9tZW0gKm1lbSk7Ci0rdm9pZCBu Z2h0dHAyX21hcF9pbml0KG5naHR0cDJfbWFwICptYXAsIHVpbnQzMl90IHNlZWQsIG5naHR0cDJf bWVtICptZW0pOwotIAotIC8qCi0gICogbmdodHRwMl9tYXBfZnJlZSBkZWFsbG9jYXRlcyBhbnkg cmVzb3VyY2VzIGFsbG9jYXRlZCBmb3IgfG1hcHwuCi1AQCAtMTIzLDYgKzEyNCw2IEBAIGludCBu Z2h0dHAyX21hcF9lYWNoKGNvbnN0IG5naHR0cDJfbWFwICptYXAsIGludCAoKmZ1bmMpKHZvaWQg KmRhdGEsIHZvaWQgKnB0ciksCi0gCi0gI2lmbmRlZiBXSU4zMgotIHZvaWQgbmdodHRwMl9tYXBf cHJpbnRfZGlzdGFuY2UoY29uc3QgbmdodHRwMl9tYXAgKm1hcCk7Ci0tI2VuZGlmIC8qICFXSU4z MiAqLwotKyNlbmRpZiAvKiAhZGVmaW5lZChXSU4zMikgKi8KLSAKLS0jZW5kaWYgLyogTkdIVFRQ Ml9NQVBfSCAqLwotKyNlbmRpZiAvKiAhZGVmaW5lZChOR0hUVFAyX01BUF9IKSAqLwotZGlmZiAt LWdpdCBhL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9tZW0uaCBiL2RlcHMvbmdodHRwMi9saWIv bmdodHRwMl9tZW0uaAotaW5kZXggZjgzZGJjYjguLjEwYWY3YzY5IDEwMDY0NAotLS0tIGEvZGVw cy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX21lbS5oCi0rKysgYi9kZXBzL25naHR0cDIvbGliL25naHR0 cDJfbWVtLmgKLUBAIC0yNyw3ICsyNyw3IEBACi0gCi0gI2lmZGVmIEhBVkVfQ09ORklHX0gKLSAj ICBpbmNsdWRlIDxjb25maWcuaD4KLS0jZW5kaWYgLyogSEFWRV9DT05GSUdfSCAqLwotKyNlbmRp ZiAvKiBkZWZpbmVkKEhBVkVfQ09ORklHX0gpICovCi0gCi0gI2luY2x1ZGUgPG5naHR0cDIvbmdo dHRwMi5oPgotIAotQEAgLTQyLDQgKzQyLDQgQEAgdm9pZCBuZ2h0dHAyX21lbV9mcmVlMihuZ2h0 dHAyX2ZyZWUgZnJlZV9mdW5jLCB2b2lkICpwdHIsIHZvaWQgKm1lbV91c2VyX2RhdGEpOwotIHZv aWQgKm5naHR0cDJfbWVtX2NhbGxvYyhuZ2h0dHAyX21lbSAqbWVtLCBzaXplX3Qgbm1lbWIsIHNp emVfdCBzaXplKTsKLSB2b2lkICpuZ2h0dHAyX21lbV9yZWFsbG9jKG5naHR0cDJfbWVtICptZW0s IHZvaWQgKnB0ciwgc2l6ZV90IHNpemUpOwotIAotLSNlbmRpZiAvKiBOR0hUVFAyX01FTV9IICov Ci0rI2VuZGlmIC8qICFkZWZpbmVkKE5HSFRUUDJfTUVNX0gpICovCi1kaWZmIC0tZ2l0IGEvZGVw cy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX25ldC5oIGIvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX25l dC5oCi1pbmRleCA1MjFmOTgxNC4uMGM1N2Q5NDcgMTAwNjQ0Ci0tLS0gYS9kZXBzL25naHR0cDIv bGliL25naHR0cDJfbmV0LmgKLSsrKyBiL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9uZXQuaAot QEAgLTI3LDI4ICsyNywyOCBAQAotIAotICNpZmRlZiBIQVZFX0NPTkZJR19ICi0gIyAgaW5jbHVk ZSA8Y29uZmlnLmg+Ci0tI2VuZGlmIC8qIEhBVkVfQ09ORklHX0ggKi8KLSsjZW5kaWYgLyogZGVm aW5lZChIQVZFX0NPTkZJR19IKSAqLwotIAotICNpZmRlZiBIQVZFX0FSUEFfSU5FVF9ICi0gIyAg aW5jbHVkZSA8YXJwYS9pbmV0Lmg+Ci0tI2VuZGlmIC8qIEhBVkVfQVJQQV9JTkVUX0ggKi8KLSsj ZW5kaWYgLyogZGVmaW5lZChIQVZFX0FSUEFfSU5FVF9IKSAqLwotIAotICNpZmRlZiBIQVZFX05F VElORVRfSU5fSAotICMgIGluY2x1ZGUgPG5ldGluZXQvaW4uaD4KLS0jZW5kaWYgLyogSEFWRV9O RVRJTkVUX0lOX0ggKi8KLSsjZW5kaWYgLyogZGVmaW5lZChIQVZFX05FVElORVRfSU5fSCkgKi8K LSAKLSAjaW5jbHVkZSA8bmdodHRwMi9uZ2h0dHAyLmg+Ci0gCi0tI2lmIGRlZmluZWQoV0lOMzIp Ci0rI2lmZGVmIFdJTjMyCi0gLyogV2luZG93cyByZXF1aXJlcyB3czJfMzIgbGlicmFyeSBmb3Ig bnRvbmwgZmFtaWx5IGZ1bmN0aW9ucy4gIFdlCi0gICAgZGVmaW5lIGlubGluZSBmdW5jdGlvbnMg Zm9yIHRob3NlIGZ1bmN0aW9uIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZQotICAgIGRlcGVuZGVuY3kg b24gdGhhdCBsaWIuICovCi0gCi0gIyAgaWZkZWYgX01TQ19WRVIKLSAjICAgIGRlZmluZSBTVElO IHN0YXRpYyBfX2lubGluZQotLSMgIGVsc2UKLSsjICBlbHNlIC8qICFkZWZpbmVkKF9NU0NfVkVS KSAqLwotICMgICAgZGVmaW5lIFNUSU4gc3RhdGljIGlubGluZQotLSMgIGVuZGlmCi0rIyAgZW5k aWYgLyogIWRlZmluZWQoX01TQ19WRVIpICovCi0gCi0gU1RJTiB1aW50MzJfdCBodG9ubCh1aW50 MzJfdCBob3N0bG9uZykgewotICAgdWludDMyX3QgcmVzOwotQEAgLTg2LDYgKzg2LDYgQEAgU1RJ TiB1aW50MTZfdCBudG9ocyh1aW50MTZfdCBuZXRzaG9ydCkgewotICAgcmV0dXJuIHJlczsKLSB9 Ci0gCi0tI2VuZGlmIC8qIFdJTjMyICovCi0rI2VuZGlmIC8qIGRlZmluZWQoV0lOMzIpICovCi0g Ci0tI2VuZGlmIC8qIE5HSFRUUDJfTkVUX0ggKi8KLSsjZW5kaWYgLyogIWRlZmluZWQoTkdIVFRQ Ml9ORVRfSCkgKi8KLWRpZmYgLS1naXQgYS9kZXBzL25naHR0cDIvbGliL25naHR0cDJfb3B0aW9u LmMgYi9kZXBzL25naHR0cDIvbGliL25naHR0cDJfb3B0aW9uLmMKLWluZGV4IDAyYTI0ZWVlLi43 ZTQ0YTI0MSAxMDA2NDQKLS0tLSBhL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9vcHRpb24uYwot KysrIGIvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX29wdGlvbi5jCi1AQCAtMTU1LDMgKzE1NSwx MCBAQCB2b2lkIG5naHR0cDJfb3B0aW9uX3NldF9tYXhfY29udGludWF0aW9ucyhuZ2h0dHAyX29w dGlvbiAqb3B0aW9uLCBzaXplX3QgdmFsKSB7Ci0gICBvcHRpb24tPm9wdF9zZXRfbWFzayB8PSBO R0hUVFAyX09QVF9NQVhfQ09OVElOVUFUSU9OUzsKLSAgIG9wdGlvbi0+bWF4X2NvbnRpbnVhdGlv bnMgPSB2YWw7Ci0gfQotKwotK3ZvaWQgbmdodHRwMl9vcHRpb25fc2V0X2dsaXRjaF9yYXRlX2xp bWl0KG5naHR0cDJfb3B0aW9uICpvcHRpb24sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdWludDY0X3QgYnVyc3QsIHVpbnQ2NF90IHJhdGUpIHsKLSsgIG9wdGlv bi0+b3B0X3NldF9tYXNrIHw9IE5HSFRUUDJfT1BUX0dMSVRDSF9SQVRFX0xJTUlUOwotKyAgb3B0 aW9uLT5nbGl0Y2hfYnVyc3QgPSBidXJzdDsKLSsgIG9wdGlvbi0+Z2xpdGNoX3JhdGUgPSByYXRl OwotK30KLWRpZmYgLS1naXQgYS9kZXBzL25naHR0cDIvbGliL25naHR0cDJfb3B0aW9uLmggYi9k ZXBzL25naHR0cDIvbGliL25naHR0cDJfb3B0aW9uLmgKLWluZGV4IGM4OWNiOTdmLi43MTExODVi YSAxMDA2NDQKLS0tLSBhL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9vcHRpb24uaAotKysrIGIv ZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX29wdGlvbi5oCi1AQCAtMjcsNyArMjcsNyBAQAotIAot ICNpZmRlZiBIQVZFX0NPTkZJR19ICi0gIyAgaW5jbHVkZSA8Y29uZmlnLmg+Ci0tI2VuZGlmIC8q IEhBVkVfQ09ORklHX0ggKi8KLSsjZW5kaWYgLyogZGVmaW5lZChIQVZFX0NPTkZJR19IKSAqLwot IAotICNpbmNsdWRlIDxuZ2h0dHAyL25naHR0cDIuaD4KLSAKLUBAIC03Miw2ICs3Miw3IEBAIHR5 cGVkZWYgZW51bSB7Ci0gICBOR0hUVFAyX09QVF9OT19SRkM5MTEzX0xFQURJTkdfQU5EX1RSQUlM SU5HX1dTX1ZBTElEQVRJT04gPSAxIDw8IDE0LAotICAgTkdIVFRQMl9PUFRfU1RSRUFNX1JFU0VU X1JBVEVfTElNSVQgPSAxIDw8IDE1LAotICAgTkdIVFRQMl9PUFRfTUFYX0NPTlRJTlVBVElPTlMg PSAxIDw8IDE2LAotKyAgTkdIVFRQMl9PUFRfR0xJVENIX1JBVEVfTElNSVQgPSAxIDw8IDE3LAot IH0gbmdodHRwMl9vcHRpb25fZmxhZzsKLSAKLSAvKioKLUBAIC04Myw2ICs4NCwxMSBAQCBzdHJ1 Y3QgbmdodHRwMl9vcHRpb24gewotICAgICovCi0gICB1aW50NjRfdCBzdHJlYW1fcmVzZXRfYnVy c3Q7Ci0gICB1aW50NjRfdCBzdHJlYW1fcmVzZXRfcmF0ZTsKLSsgIC8qKgotKyAgICogTkdIVFRQ Ml9PUFRfR0xJVENIX1JBVEVfTElNSVQKLSsgICAqLwotKyAgdWludDY0X3QgZ2xpdGNoX2J1cnN0 OwotKyAgdWludDY0X3QgZ2xpdGNoX3JhdGU7Ci0gICAvKioKLSAgICAqIE5HSFRUUDJfT1BUX01B WF9TRU5EX0hFQURFUl9CTE9DS19MRU5HVEgKLSAgICAqLwotQEAgLTE1NCw0ICsxNjAsNCBAQCBz dHJ1Y3QgbmdodHRwMl9vcHRpb24gewotICAgdWludDhfdCB1c2VyX3JlY3ZfZXh0X3R5cGVzWzMy XTsKLSB9OwotIAotLSNlbmRpZiAvKiBOR0hUVFAyX09QVElPTl9IICovCi0rI2VuZGlmIC8qICFk ZWZpbmVkKE5HSFRUUDJfT1BUSU9OX0gpICovCi1kaWZmIC0tZ2l0IGEvZGVwcy9uZ2h0dHAyL2xp Yi9uZ2h0dHAyX291dGJvdW5kX2l0ZW0uaCBiL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9vdXRi b3VuZF9pdGVtLmgKLWluZGV4IDRlOTE3NTAwLi42ZThlMzEwYyAxMDA2NDQKLS0tLSBhL2RlcHMv bmdodHRwMi9saWIvbmdodHRwMl9vdXRib3VuZF9pdGVtLmgKLSsrKyBiL2RlcHMvbmdodHRwMi9s aWIvbmdodHRwMl9vdXRib3VuZF9pdGVtLmgKLUBAIC0yNyw3ICsyNyw3IEBACi0gCi0gI2lmZGVm IEhBVkVfQ09ORklHX0gKLSAjICBpbmNsdWRlIDxjb25maWcuaD4KLS0jZW5kaWYgLyogSEFWRV9D T05GSUdfSCAqLwotKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfQ09ORklHX0gpICovCi0gCi0gI2lu Y2x1ZGUgPG5naHR0cDIvbmdodHRwMi5oPgotICNpbmNsdWRlICJuZ2h0dHAyX2ZyYW1lLmgiCi1A QCAtMTg2LDQgKzE4Niw0IEBAIHZvaWQgbmdodHRwMl9vdXRib3VuZF9xdWV1ZV9wb3AobmdodHRw Ml9vdXRib3VuZF9xdWV1ZSAqcSk7Ci0gLyogUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgcXVldWUg Ki8KLSAjZGVmaW5lIG5naHR0cDJfb3V0Ym91bmRfcXVldWVfc2l6ZShRKSAoKFEpLT5uKQotIAot LSNlbmRpZiAvKiBOR0hUVFAyX09VVEJPVU5EX0lURU1fSCAqLwotKyNlbmRpZiAvKiAhZGVmaW5l ZChOR0hUVFAyX09VVEJPVU5EX0lURU1fSCkgKi8KLWRpZmYgLS1naXQgYS9kZXBzL25naHR0cDIv bGliL25naHR0cDJfcHEuaCBiL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9wcS5oCi1pbmRleCBj OGQ5MGVmMi4uNWRkODYzZjggMTAwNjQ0Ci0tLS0gYS9kZXBzL25naHR0cDIvbGliL25naHR0cDJf cHEuaAotKysrIGIvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX3BxLmgKLUBAIC0yNyw3ICsyNyw3 IEBACi0gCi0gI2lmZGVmIEhBVkVfQ09ORklHX0gKLSAjICBpbmNsdWRlIDxjb25maWcuaD4KLS0j ZW5kaWYgLyogSEFWRV9DT05GSUdfSCAqLwotKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfQ09ORklH X0gpICovCi0gCi0gI2luY2x1ZGUgPG5naHR0cDIvbmdodHRwMi5oPgotICNpbmNsdWRlICJuZ2h0 dHAyX2ludC5oIgotQEAgLTEyMSw0ICsxMjEsNCBAQCBpbnQgbmdodHRwMl9wcV9lYWNoKG5naHR0 cDJfcHEgKnBxLCBuZ2h0dHAyX3BxX2l0ZW1fY2IgZnVuLCB2b2lkICphcmcpOwotICAqLwotIHZv aWQgbmdodHRwMl9wcV9yZW1vdmUobmdodHRwMl9wcSAqcHEsIG5naHR0cDJfcHFfZW50cnkgKml0 ZW0pOwotIAotLSNlbmRpZiAvKiBOR0hUVFAyX1BRX0ggKi8KLSsjZW5kaWYgLyogIWRlZmluZWQo TkdIVFRQMl9QUV9IKSAqLwotZGlmZiAtLWdpdCBhL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9w cmlvcml0eV9zcGVjLmggYi9kZXBzL25naHR0cDIvbGliL25naHR0cDJfcHJpb3JpdHlfc3BlYy5o Ci1pbmRleCA5MmVjZTgyMi4uMTU4ZTBkY2QgMTAwNjQ0Ci0tLS0gYS9kZXBzL25naHR0cDIvbGli L25naHR0cDJfcHJpb3JpdHlfc3BlYy5oCi0rKysgYi9kZXBzL25naHR0cDIvbGliL25naHR0cDJf cHJpb3JpdHlfc3BlYy5oCi1AQCAtMjcsNyArMjcsNyBAQAotIAotICNpZmRlZiBIQVZFX0NPTkZJ R19ICi0gIyAgaW5jbHVkZSA8Y29uZmlnLmg+Ci0tI2VuZGlmIC8qIEhBVkVfQ09ORklHX0ggKi8K LSsjZW5kaWYgLyogZGVmaW5lZChIQVZFX0NPTkZJR19IKSAqLwotIAotICNpbmNsdWRlIDxuZ2h0 dHAyL25naHR0cDIuaD4KLSAKLUBAIC0zOSw0ICszOSw0IEBACi0gICovCi0gdm9pZCBuZ2h0dHAy X3ByaW9yaXR5X3NwZWNfbm9ybWFsaXplX3dlaWdodChuZ2h0dHAyX3ByaW9yaXR5X3NwZWMgKnBy aV9zcGVjKTsKLSAKLS0jZW5kaWYgLyogTkdIVFRQMl9QUklPUklUWV9TUEVDX0ggKi8KLSsjZW5k aWYgLyogIWRlZmluZWQoTkdIVFRQMl9QUklPUklUWV9TUEVDX0gpICovCi1kaWZmIC0tZ2l0IGEv ZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX3F1ZXVlLmggYi9kZXBzL25naHR0cDIvbGliL25naHR0 cDJfcXVldWUuaAotaW5kZXggYTA2ZmE2YzcuLmM2Mzg5N2MwIDEwMDY0NAotLS0tIGEvZGVwcy9u Z2h0dHAyL2xpYi9uZ2h0dHAyX3F1ZXVlLmgKLSsrKyBiL2RlcHMvbmdodHRwMi9saWIvbmdodHRw Ml9xdWV1ZS5oCi1AQCAtMjcsNyArMjcsNyBAQAotIAotICNpZmRlZiBIQVZFX0NPTkZJR19ICi0g IyAgaW5jbHVkZSAiY29uZmlnLmgiCi0tI2VuZGlmIC8qIEhBVkVfQ09ORklHX0ggKi8KLSsjZW5k aWYgLyogZGVmaW5lZChIQVZFX0NPTkZJR19IKSAqLwotIAotICNpbmNsdWRlIDxuZ2h0dHAyL25n aHR0cDIuaD4KLSAKLUBAIC00OCw0ICs0OCw0IEBAIHZvaWQgKm5naHR0cDJfcXVldWVfZnJvbnQo bmdodHRwMl9xdWV1ZSAqcXVldWUpOwotIHZvaWQgKm5naHR0cDJfcXVldWVfYmFjayhuZ2h0dHAy X3F1ZXVlICpxdWV1ZSk7Ci0gaW50IG5naHR0cDJfcXVldWVfZW1wdHkobmdodHRwMl9xdWV1ZSAq cXVldWUpOwotIAotLSNlbmRpZiAvKiBOR0hUVFAyX1FVRVVFX0ggKi8KLSsjZW5kaWYgLyogIWRl ZmluZWQoTkdIVFRQMl9RVUVVRV9IKSAqLwotZGlmZiAtLWdpdCBhL2RlcHMvbmdodHRwMi9saWIv bmdodHRwMl9yYXRlbGltLmggYi9kZXBzL25naHR0cDIvbGliL25naHR0cDJfcmF0ZWxpbS5oCi1p bmRleCA4NjZlZDNmMC4uZDEwOTdmMmYgMTAwNjQ0Ci0tLS0gYS9kZXBzL25naHR0cDIvbGliL25n aHR0cDJfcmF0ZWxpbS5oCi0rKysgYi9kZXBzL25naHR0cDIvbGliL25naHR0cDJfcmF0ZWxpbS5o Ci1AQCAtMjcsNyArMjcsNyBAQAotIAotICNpZmRlZiBIQVZFX0NPTkZJR19ICi0gIyAgaW5jbHVk ZSA8Y29uZmlnLmg+Ci0tI2VuZGlmIC8qIEhBVkVfQ09ORklHX0ggKi8KLSsjZW5kaWYgLyogZGVm aW5lZChIQVZFX0NPTkZJR19IKSAqLwotIAotICNpbmNsdWRlIDxuZ2h0dHAyL25naHR0cDIuaD4K LSAKLUBAIC01NCw0ICs1NCw0IEBAIHZvaWQgbmdodHRwMl9yYXRlbGltX3VwZGF0ZShuZ2h0dHAy X3JhdGVsaW0gKnJsLCB1aW50NjRfdCB0c3RhbXApOwotICAgIHN1Y2NlZWRzLCBvciAtMS4gKi8K LSBpbnQgbmdodHRwMl9yYXRlbGltX2RyYWluKG5naHR0cDJfcmF0ZWxpbSAqcmwsIHVpbnQ2NF90 IG4pOwotIAotLSNlbmRpZiAvKiBOR0hUVFAyX1JBVEVMSU1fSCAqLwotKyNlbmRpZiAvKiAhZGVm aW5lZChOR0hUVFAyX1JBVEVMSU1fSCkgKi8KLWRpZmYgLS1naXQgYS9kZXBzL25naHR0cDIvbGli L25naHR0cDJfcmNidWYuaCBiL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9yY2J1Zi5oCi1pbmRl eCA2ODE0ZTcwOS4uZWY4MmUxYjMgMTAwNjQ0Ci0tLS0gYS9kZXBzL25naHR0cDIvbGliL25naHR0 cDJfcmNidWYuaAotKysrIGIvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX3JjYnVmLmgKLUBAIC0y Nyw3ICsyNyw3IEBACi0gCi0gI2lmZGVmIEhBVkVfQ09ORklHX0gKLSAjICBpbmNsdWRlIDxjb25m aWcuaD4KLS0jZW5kaWYgLyogSEFWRV9DT05GSUdfSCAqLwotKyNlbmRpZiAvKiBkZWZpbmVkKEhB VkVfQ09ORklHX0gpICovCi0gCi0gI2luY2x1ZGUgPG5naHR0cDIvbmdodHRwMi5oPgotIAotQEAg LTc3LDQgKzc3LDQgQEAgaW50IG5naHR0cDJfcmNidWZfbmV3MihuZ2h0dHAyX3JjYnVmICoqcmNi dWZfcHRyLCBjb25zdCB1aW50OF90ICpzcmMsCi0gICovCi0gdm9pZCBuZ2h0dHAyX3JjYnVmX2Rl bChuZ2h0dHAyX3JjYnVmICpyY2J1Zik7Ci0gCi0tI2VuZGlmIC8qIE5HSFRUUDJfUkNCVUZfSCAq LwotKyNlbmRpZiAvKiAhZGVmaW5lZChOR0hUVFAyX1JDQlVGX0gpICovCi1kaWZmIC0tZ2l0IGEv ZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX3Nlc3Npb24uYyBiL2RlcHMvbmdodHRwMi9saWIvbmdo dHRwMl9zZXNzaW9uLmMKLWluZGV4IGRmMzNhODllLi4wZmJjYzkzMCAxMDA2NDQKLS0tLSBhL2Rl cHMvbmdodHRwMi9saWIvbmdodHRwMl9zZXNzaW9uLmMKLSsrKyBiL2RlcHMvbmdodHRwMi9saWIv bmdodHRwMl9zZXNzaW9uLmMKLUBAIC00MSw2ICs0MSw4IEBACi0gI2luY2x1ZGUgIm5naHR0cDJf ZGVidWcuaCIKLSAjaW5jbHVkZSAibmdodHRwMl9zdWJtaXQuaCIKLSAKLStuZ2h0dHAyX3N0cmVh bSBuZ2h0dHAyX3N0cmVhbV9yb290OwotKwotIC8qCi0gICogUmV0dXJucyBub24temVybyBpZiB0 aGUgbnVtYmVyIG9mIG91dGdvaW5nIG9wZW5lZCBzdHJlYW1zIGlzIGxhcmdlcgotICAqIHRoYW4g b3IgZXF1YWwgdG8KLUBAIC0xNDYsMTEgKzE0OCw2IEBAIHN0YXRpYyBpbnQgc2Vzc2lvbl9kZXRl Y3RfaWRsZV9zdHJlYW0obmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotICAgcmV0dXJuIDA7Ci0g fQotIAotLXN0YXRpYyBpbnQgc2Vzc2lvbl9ub19yZmM3NTQwX3ByaV9ub19mYWxsYmFjayhuZ2h0 dHAyX3Nlc3Npb24gKnNlc3Npb24pIHsKLS0gIHJldHVybiBzZXNzaW9uLT5wZW5kaW5nX25vX3Jm Yzc1NDBfcHJpb3JpdGllcyA9PSAxICYmCi0tICAgICAgICAgIXNlc3Npb24tPmZhbGxiYWNrX3Jm Yzc1NDBfcHJpb3JpdGllczsKLS19Ci0tCi0gc3RhdGljIGludCBjaGVja19leHRfdHlwZV9zZXQo Y29uc3QgdWludDhfdCAqZXh0X3R5cGVzLCB1aW50OF90IHR5cGUpIHsKLSAgIHJldHVybiAoZXh0 X3R5cGVzW3R5cGUgLyA4XSAmICgxIDw8ICh0eXBlICYgMHg3KSkpID4gMDsKLSB9Ci1AQCAtNDQx LDYgKzQzOCw3IEBAIHN0YXRpYyBpbnQgc2Vzc2lvbl9uZXcobmdodHRwMl9zZXNzaW9uICoqc2Vz c2lvbl9wdHIsCi0gICBzaXplX3QgbWF4X2RlZmxhdGVfZHluYW1pY190YWJsZV9zaXplID0KLSAg ICAgTkdIVFRQMl9IRF9ERUZBVUxUX01BWF9ERUZMQVRFX0JVRkZFUl9TSVpFOwotICAgc2l6ZV90 IGk7Ci0rICB1aW50MzJfdCBtYXBfc2VlZDsKLSAKLSAgIGlmIChtZW0gPT0gTlVMTCkgewotICAg ICBtZW0gPSBuZ2h0dHAyX21lbV9kZWZhdWx0KCk7Ci1AQCAtNDU4LDEwICs0NTYsNiBAQCBzdGF0 aWMgaW50IHNlc3Npb25fbmV3KG5naHR0cDJfc2Vzc2lvbiAqKnNlc3Npb25fcHRyLAotICAgLyog bmV4dF9zdHJlYW1faWQgaXMgaW5pdGlhbGl6ZWQgaW4gZWl0aGVyCi0gICAgICBuZ2h0dHAyX3Nl c3Npb25fY2xpZW50X25ldzIgb3IgbmdodHRwMl9zZXNzaW9uX3NlcnZlcl9uZXcyICovCi0gCi0t ICBuZ2h0dHAyX3N0cmVhbV9pbml0KCYoKnNlc3Npb25fcHRyKS0+cm9vdCwgMCwgTkdIVFRQMl9T VFJFQU1fRkxBR19OT05FLAotLSAgICAgICAgICAgICAgICAgICAgICBOR0hUVFAyX1NUUkVBTV9J RExFLCBOR0hUVFAyX0RFRkFVTFRfV0VJR0hULCAwLCAwLCBOVUxMLAotLSAgICAgICAgICAgICAg ICAgICAgICBtZW0pOwotLQotICAgKCpzZXNzaW9uX3B0ciktPnJlbW90ZV93aW5kb3dfc2l6ZSA9 IE5HSFRUUDJfSU5JVElBTF9DT05ORUNUSU9OX1dJTkRPV19TSVpFOwotICAgKCpzZXNzaW9uX3B0 ciktPnJlY3Zfd2luZG93X3NpemUgPSAwOwotICAgKCpzZXNzaW9uX3B0ciktPmNvbnN1bWVkX3Np emUgPSAwOwotQEAgLTQ4MSw2ICs0NzUsMTAgQEAgc3RhdGljIGludCBzZXNzaW9uX25ldyhuZ2h0 dHAyX3Nlc3Npb24gKipzZXNzaW9uX3B0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgIE5HSFRU UDJfREVGQVVMVF9TVFJFQU1fUkVTRVRfQlVSU1QsCi0gICAgICAgICAgICAgICAgICAgICAgICBO R0hUVFAyX0RFRkFVTFRfU1RSRUFNX1JFU0VUX1JBVEUpOwotIAotKyAgbmdodHRwMl9yYXRlbGlt X2luaXQoJigqc2Vzc2lvbl9wdHIpLT5nbGl0Y2hfcmF0ZWxpbSwKLSsgICAgICAgICAgICAgICAg ICAgICAgIE5HSFRUUDJfREVGQVVMVF9HTElUQ0hfQlVSU1QsCi0rICAgICAgICAgICAgICAgICAg ICAgICBOR0hUVFAyX0RFRkFVTFRfR0xJVENIX1JBVEUpOwotKwotICAgaWYgKHNlcnZlcikgewot ICAgICAoKnNlc3Npb25fcHRyKS0+c2VydmVyID0gMTsKLSAgIH0KLUBAIC01NDgsMTEgKzU0Niw2 IEBAIHN0YXRpYyBpbnQgc2Vzc2lvbl9uZXcobmdodHRwMl9zZXNzaW9uICoqc2Vzc2lvbl9wdHIs Ci0gICAgICAgbWF4X2RlZmxhdGVfZHluYW1pY190YWJsZV9zaXplID0gb3B0aW9uLT5tYXhfZGVm bGF0ZV9keW5hbWljX3RhYmxlX3NpemU7Ci0gICAgIH0KLSAKLS0gICAgaWYgKChvcHRpb24tPm9w dF9zZXRfbWFzayAmIE5HSFRUUDJfT1BUX05PX0NMT1NFRF9TVFJFQU1TKSAmJgotLSAgICAgICAg b3B0aW9uLT5ub19jbG9zZWRfc3RyZWFtcykgewotLSAgICAgICgqc2Vzc2lvbl9wdHIpLT5vcHRf ZmxhZ3MgfD0gTkdIVFRQMl9PUFRNQVNLX05PX0NMT1NFRF9TVFJFQU1TOwotLSAgICB9Ci0tCi0g ICAgIGlmIChvcHRpb24tPm9wdF9zZXRfbWFzayAmIE5HSFRUUDJfT1BUX01BWF9PVVRCT1VORF9B Q0spIHsKLSAgICAgICAoKnNlc3Npb25fcHRyKS0+bWF4X291dGJvdW5kX2FjayA9IG9wdGlvbi0+ bWF4X291dGJvdW5kX2FjazsKLSAgICAgfQotQEAgLTU2MiwxMyArNTU1LDYgQEAgc3RhdGljIGlu dCBzZXNzaW9uX25ldyhuZ2h0dHAyX3Nlc3Npb24gKipzZXNzaW9uX3B0ciwKLSAgICAgICAoKnNl c3Npb25fcHRyKS0+bWF4X3NldHRpbmdzID0gb3B0aW9uLT5tYXhfc2V0dGluZ3M7Ci0gICAgIH0K LSAKLS0gICAgaWYgKChvcHRpb24tPm9wdF9zZXRfbWFzayAmCi0tICAgICAgICAgTkdIVFRQMl9P UFRfU0VSVkVSX0ZBTExCQUNLX1JGQzc1NDBfUFJJT1JJVElFUykgJiYKLS0gICAgICAgIG9wdGlv bi0+c2VydmVyX2ZhbGxiYWNrX3JmYzc1NDBfcHJpb3JpdGllcykgewotLSAgICAgICgqc2Vzc2lv bl9wdHIpLT5vcHRfZmxhZ3MgfD0KLS0gICAgICAgIE5HSFRUUDJfT1BUTUFTS19TRVJWRVJfRkFM TEJBQ0tfUkZDNzU0MF9QUklPUklUSUVTOwotLSAgICB9Ci0tCi0gICAgIGlmICgob3B0aW9uLT5v cHRfc2V0X21hc2sgJgotICAgICAgICAgIE5HSFRUUDJfT1BUX05PX1JGQzkxMTNfTEVBRElOR19B TkRfVFJBSUxJTkdfV1NfVkFMSURBVElPTikgJiYKLSAgICAgICAgIG9wdGlvbi0+bm9fcmZjOTEx M19sZWFkaW5nX2FuZF90cmFpbGluZ193c192YWxpZGF0aW9uKSB7Ci1AQCAtNTg1LDYgKzU3MSwx MSBAQCBzdGF0aWMgaW50IHNlc3Npb25fbmV3KG5naHR0cDJfc2Vzc2lvbiAqKnNlc3Npb25fcHRy LAotICAgICBpZiAob3B0aW9uLT5vcHRfc2V0X21hc2sgJiBOR0hUVFAyX09QVF9NQVhfQ09OVElO VUFUSU9OUykgewotICAgICAgICgqc2Vzc2lvbl9wdHIpLT5tYXhfY29udGludWF0aW9ucyA9IG9w dGlvbi0+bWF4X2NvbnRpbnVhdGlvbnM7Ci0gICAgIH0KLSsKLSsgICAgaWYgKG9wdGlvbi0+b3B0 X3NldF9tYXNrICYgTkdIVFRQMl9PUFRfR0xJVENIX1JBVEVfTElNSVQpIHsKLSsgICAgICBuZ2h0 dHAyX3JhdGVsaW1faW5pdCgmKCpzZXNzaW9uX3B0ciktPmdsaXRjaF9yYXRlbGltLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi0+Z2xpdGNoX2J1cnN0LCBvcHRpb24tPmdsaXRj aF9yYXRlKTsKLSsgICAgfQotICAgfQotIAotICAgcnYgPSBuZ2h0dHAyX2hkX2RlZmxhdGVfaW5p dDIoJigqc2Vzc2lvbl9wdHIpLT5oZF9kZWZsYXRlciwKLUBAIC02MTMsNyArNjA0LDEzIEBAIHN0 YXRpYyBpbnQgc2Vzc2lvbl9uZXcobmdodHRwMl9zZXNzaW9uICoqc2Vzc2lvbl9wdHIsCi0gICAg IGdvdG8gZmFpbF9hb2JfZnJhbWVidWY7Ci0gICB9Ci0gCi0tICBuZ2h0dHAyX21hcF9pbml0KCYo KnNlc3Npb25fcHRyKS0+c3RyZWFtcywgbWVtKTsKLSsgIGlmIChjYWxsYmFja3MtPnJhbmRfY2Fs bGJhY2spIHsKLSsgICAgY2FsbGJhY2tzLT5yYW5kX2NhbGxiYWNrKCh1aW50OF90ICopJm1hcF9z ZWVkLCBzaXplb2YobWFwX3NlZWQpKTsKLSsgIH0gZWxzZSB7Ci0rICAgIG1hcF9zZWVkID0gMDsK LSsgIH0KLSsKLSsgIG5naHR0cDJfbWFwX2luaXQoJigqc2Vzc2lvbl9wdHIpLT5zdHJlYW1zLCBt YXBfc2VlZCwgbWVtKTsKLSAKLSAgIGFjdGl2ZV9vdXRib3VuZF9pdGVtX3Jlc2V0KCYoKnNlc3Np b25fcHRyKS0+YW9iLCBtZW0pOwotIAotQEAgLTgxMCw3ICs4MDcsNiBAQCB2b2lkIG5naHR0cDJf c2Vzc2lvbl9kZWwobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uKSB7Ci0gICBmb3IgKGkgPSAwOyBp IDwgTkdIVFRQMl9FWFRQUklfVVJHRU5DWV9MRVZFTFM7ICsraSkgewotICAgICBuZ2h0dHAyX3Bx X2ZyZWUoJnNlc3Npb24tPnNjaGVkW2ldLm9iX2RhdGEpOwotICAgfQotLSAgbmdodHRwMl9zdHJl YW1fZnJlZSgmc2Vzc2lvbi0+cm9vdCk7Ci0gCi0gICAvKiBIYXZlIHRvIGZyZWUgc3RyZWFtcyBm aXJzdCwgc28gdGhhdCB3ZSBjYW4gY2hlY2sKLSAgICAgIHN0cmVhbS0+aXRlbS0+cXVldWVkICov Ci1AQCAtODI5LDgyICs4MjUsNiBAQCB2b2lkIG5naHR0cDJfc2Vzc2lvbl9kZWwobmdodHRwMl9z ZXNzaW9uICpzZXNzaW9uKSB7Ci0gICBuZ2h0dHAyX21lbV9mcmVlKG1lbSwgc2Vzc2lvbik7Ci0g fQotIAotLWludCBuZ2h0dHAyX3Nlc3Npb25fcmVwcmlvcml0aXplX3N0cmVhbSgKLS0gIG5naHR0 cDJfc2Vzc2lvbiAqc2Vzc2lvbiwgbmdodHRwMl9zdHJlYW0gKnN0cmVhbSwKLS0gIGNvbnN0IG5n aHR0cDJfcHJpb3JpdHlfc3BlYyAqcHJpX3NwZWNfaW4pIHsKLS0gIGludCBydjsKLS0gIG5naHR0 cDJfc3RyZWFtICpkZXBfc3RyZWFtID0gTlVMTDsKLS0gIG5naHR0cDJfcHJpb3JpdHlfc3BlYyBw cmlfc3BlY19kZWZhdWx0OwotLSAgY29uc3QgbmdodHRwMl9wcmlvcml0eV9zcGVjICpwcmlfc3Bl YyA9IHByaV9zcGVjX2luOwotLQotLSAgYXNzZXJ0KCghc2Vzc2lvbi0+c2VydmVyICYmIHNlc3Np b24tPnBlbmRpbmdfbm9fcmZjNzU0MF9wcmlvcml0aWVzICE9IDEpIHx8Ci0tICAgICAgICAgKHNl c3Npb24tPnNlcnZlciAmJiAhc2Vzc2lvbl9ub19yZmM3NTQwX3ByaV9ub19mYWxsYmFjayhzZXNz aW9uKSkpOwotLSAgYXNzZXJ0KHByaV9zcGVjLT5zdHJlYW1faWQgIT0gc3RyZWFtLT5zdHJlYW1f aWQpOwotLQotLSAgaWYgKCFuZ2h0dHAyX3N0cmVhbV9pbl9kZXBfdHJlZShzdHJlYW0pKSB7Ci0t ICAgIHJldHVybiAwOwotLSAgfQotLQotLSAgaWYgKHByaV9zcGVjLT5zdHJlYW1faWQgIT0gMCkg ewotLSAgICBkZXBfc3RyZWFtID0gbmdodHRwMl9zZXNzaW9uX2dldF9zdHJlYW1fcmF3KHNlc3Np b24sIHByaV9zcGVjLT5zdHJlYW1faWQpOwotLQotLSAgICBpZiAoIWRlcF9zdHJlYW0gJiYKLS0g ICAgICAgIHNlc3Npb25fZGV0ZWN0X2lkbGVfc3RyZWFtKHNlc3Npb24sIHByaV9zcGVjLT5zdHJl YW1faWQpKSB7Ci0tICAgICAgbmdodHRwMl9wcmlvcml0eV9zcGVjX2RlZmF1bHRfaW5pdCgmcHJp X3NwZWNfZGVmYXVsdCk7Ci0tCi0tICAgICAgZGVwX3N0cmVhbSA9IG5naHR0cDJfc2Vzc2lvbl9v cGVuX3N0cmVhbSgKLS0gICAgICAgIHNlc3Npb24sIHByaV9zcGVjLT5zdHJlYW1faWQsIE5HSFRU UDJfRkxBR19OT05FLCAmcHJpX3NwZWNfZGVmYXVsdCwKLS0gICAgICAgIE5HSFRUUDJfU1RSRUFN X0lETEUsIE5VTEwpOwotLQotLSAgICAgIGlmIChkZXBfc3RyZWFtID09IE5VTEwpIHsKLS0gICAg ICAgIHJldHVybiBOR0hUVFAyX0VSUl9OT01FTTsKLS0gICAgICB9Ci0tICAgIH0gZWxzZSBpZiAo IWRlcF9zdHJlYW0gfHwgIW5naHR0cDJfc3RyZWFtX2luX2RlcF90cmVlKGRlcF9zdHJlYW0pKSB7 Ci0tICAgICAgbmdodHRwMl9wcmlvcml0eV9zcGVjX2RlZmF1bHRfaW5pdCgmcHJpX3NwZWNfZGVm YXVsdCk7Ci0tICAgICAgcHJpX3NwZWMgPSAmcHJpX3NwZWNfZGVmYXVsdDsKLS0gICAgfQotLSAg fQotLQotLSAgaWYgKHByaV9zcGVjLT5zdHJlYW1faWQgPT0gMCkgewotLSAgICBkZXBfc3RyZWFt ID0gJnNlc3Npb24tPnJvb3Q7Ci0tICB9IGVsc2UgaWYgKG5naHR0cDJfc3RyZWFtX2RlcF9maW5k X2FuY2VzdG9yKGRlcF9zdHJlYW0sIHN0cmVhbSkpIHsKLS0gICAgREVCVUdGKCJzdHJlYW06IGN5 Y2xlIGRldGVjdGVkLCBkZXBfc3RyZWFtKCVwKT0lZCBzdHJlYW0oJXApPSVkXG4iLAotLSAgICAg ICAgICAgZGVwX3N0cmVhbSwgZGVwX3N0cmVhbS0+c3RyZWFtX2lkLCBzdHJlYW0sIHN0cmVhbS0+ c3RyZWFtX2lkKTsKLS0KLS0gICAgbmdodHRwMl9zdHJlYW1fZGVwX3JlbW92ZV9zdWJ0cmVlKGRl cF9zdHJlYW0pOwotLSAgICBydiA9IG5naHR0cDJfc3RyZWFtX2RlcF9hZGRfc3VidHJlZShzdHJl YW0tPmRlcF9wcmV2LCBkZXBfc3RyZWFtKTsKLS0gICAgaWYgKHJ2ICE9IDApIHsKLS0gICAgICBy ZXR1cm4gcnY7Ci0tICAgIH0KLS0gIH0KLS0KLS0gIGFzc2VydChkZXBfc3RyZWFtKTsKLS0KLS0g IGlmIChkZXBfc3RyZWFtID09IHN0cmVhbS0+ZGVwX3ByZXYgJiYgIXByaV9zcGVjLT5leGNsdXNp dmUpIHsKLS0gICAgLyogVGhpcyBpcyBtaW5vciBvcHRpbWl6YXRpb24gd2hlbiBqdXN0IHdlaWdo dCBpcyBjaGFuZ2VkLiAqLwotLSAgICBuZ2h0dHAyX3N0cmVhbV9jaGFuZ2Vfd2VpZ2h0KHN0cmVh bSwgcHJpX3NwZWMtPndlaWdodCk7Ci0tCi0tICAgIHJldHVybiAwOwotLSAgfQotLQotLSAgbmdo dHRwMl9zdHJlYW1fZGVwX3JlbW92ZV9zdWJ0cmVlKHN0cmVhbSk7Ci0tCi0tICAvKiBXZSBoYXZl IHRvIHVwZGF0ZSB3ZWlnaHQgYWZ0ZXIgcmVtb3Zpbmcgc3RyZWFtIGZyb20gdHJlZSAqLwotLSAg c3RyZWFtLT53ZWlnaHQgPSBwcmlfc3BlYy0+d2VpZ2h0OwotLQotLSAgaWYgKHByaV9zcGVjLT5l eGNsdXNpdmUpIHsKLS0gICAgcnYgPSBuZ2h0dHAyX3N0cmVhbV9kZXBfaW5zZXJ0X3N1YnRyZWUo ZGVwX3N0cmVhbSwgc3RyZWFtKTsKLS0gIH0gZWxzZSB7Ci0tICAgIHJ2ID0gbmdodHRwMl9zdHJl YW1fZGVwX2FkZF9zdWJ0cmVlKGRlcF9zdHJlYW0sIHN0cmVhbSk7Ci0tICB9Ci0tCi0tICBpZiAo cnYgIT0gMCkgewotLSAgICByZXR1cm4gcnY7Ci0tICB9Ci0tCi0tICByZXR1cm4gMDsKLS19Ci0t Ci0gc3RhdGljIHVpbnQ2NF90IHBxX2dldF9maXJzdF9jeWNsZShuZ2h0dHAyX3BxICpwcSkgewot ICAgbmdodHRwMl9zdHJlYW0gKnN0cmVhbTsKLSAKLUBAIC05MjMsNyArODQzLDYgQEAgc3RhdGlj IGludCBzZXNzaW9uX29iX2RhdGFfcHVzaChuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0gICBp bnQgaW5jOwotICAgbmdodHRwMl9wcSAqcHE7Ci0gCi0tICBhc3NlcnQoc3RyZWFtLT5mbGFncyAm IE5HSFRUUDJfU1RSRUFNX0ZMQUdfTk9fUkZDNzU0MF9QUklPUklUSUVTKTsKLSAgIGFzc2VydChz dHJlYW0tPnF1ZXVlZCA9PSAwKTsKLSAKLSAgIHVyZ2VuY3kgPSBuZ2h0dHAyX2V4dHByaV91aW50 OF91cmdlbmN5KHN0cmVhbS0+ZXh0cHJpKTsKLUBAIC05NTIsNyArODcxLDYgQEAgc3RhdGljIHZv aWQgc2Vzc2lvbl9vYl9kYXRhX3JlbW92ZShuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtKSB7 Ci0gICB1aW50MzJfdCB1cmdlbmN5OwotIAotLSAgYXNzZXJ0KHN0cmVhbS0+ZmxhZ3MgJiBOR0hU VFAyX1NUUkVBTV9GTEFHX05PX1JGQzc1NDBfUFJJT1JJVElFUyk7Ci0gICBhc3NlcnQoc3RyZWFt LT5xdWV1ZWQgPT0gMSk7Ci0gCi0gICB1cmdlbmN5ID0gbmdodHRwMl9leHRwcmlfdWludDhfdXJn ZW5jeShzdHJlYW0tPmV4dHByaSk7Ci1AQCAtOTY5LDE0ICs4ODcsNyBAQCBzdGF0aWMgaW50IHNl c3Npb25fYXR0YWNoX3N0cmVhbV9pdGVtKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5naHR0cDJfb3V0Ym91bmRfaXRlbSAq aXRlbSkgewotICAgaW50IHJ2OwotIAotLSAgcnYgPSBuZ2h0dHAyX3N0cmVhbV9hdHRhY2hfaXRl bShzdHJlYW0sIGl0ZW0pOwotLSAgaWYgKHJ2ICE9IDApIHsKLS0gICAgcmV0dXJuIHJ2OwotLSAg fQotLQotLSAgaWYgKCEoc3RyZWFtLT5mbGFncyAmIE5HSFRUUDJfU1RSRUFNX0ZMQUdfTk9fUkZD NzU0MF9QUklPUklUSUVTKSkgewotLSAgICByZXR1cm4gMDsKLS0gIH0KLSsgIG5naHR0cDJfc3Ry ZWFtX2F0dGFjaF9pdGVtKHN0cmVhbSwgaXRlbSk7Ci0gCi0gICBydiA9IHNlc3Npb25fb2JfZGF0 YV9wdXNoKHNlc3Npb24sIHN0cmVhbSk7Ci0gICBpZiAocnYgIT0gMCkgewotQEAgLTk5Miw4ICs5 MDMsNyBAQCBzdGF0aWMgdm9pZCBzZXNzaW9uX2RldGFjaF9zdHJlYW1faXRlbShuZ2h0dHAyX3Nl c3Npb24gKnNlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bmdodHRwMl9zdHJlYW0gKnN0cmVhbSkgewotICAgbmdodHRwMl9zdHJlYW1fZGV0YWNoX2l0ZW0o c3RyZWFtKTsKLSAKLS0gIGlmICghKHN0cmVhbS0+ZmxhZ3MgJiBOR0hUVFAyX1NUUkVBTV9GTEFH X05PX1JGQzc1NDBfUFJJT1JJVElFUykgfHwKLS0gICAgICAhc3RyZWFtLT5xdWV1ZWQpIHsKLSsg IGlmICghc3RyZWFtLT5xdWV1ZWQpIHsKLSAgICAgcmV0dXJuOwotICAgfQotIAotQEAgLTEwMDQs OCArOTE0LDcgQEAgc3RhdGljIHZvaWQgc2Vzc2lvbl9kZWZlcl9zdHJlYW1faXRlbShuZ2h0dHAy X3Nlc3Npb24gKnNlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtLCB1aW50OF90IGZsYWdzKSB7Ci0gICBuZ2h0dHAyX3N0 cmVhbV9kZWZlcl9pdGVtKHN0cmVhbSwgZmxhZ3MpOwotIAotLSAgaWYgKCEoc3RyZWFtLT5mbGFn cyAmIE5HSFRUUDJfU1RSRUFNX0ZMQUdfTk9fUkZDNzU0MF9QUklPUklUSUVTKSB8fAotLSAgICAg ICFzdHJlYW0tPnF1ZXVlZCkgewotKyAgaWYgKCFzdHJlYW0tPnF1ZXVlZCkgewotICAgICByZXR1 cm47Ci0gICB9Ci0gCi1AQCAtMTAxNSwxNSArOTI0LDkgQEAgc3RhdGljIHZvaWQgc2Vzc2lvbl9k ZWZlcl9zdHJlYW1faXRlbShuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0gc3RhdGljIGludCBz ZXNzaW9uX3Jlc3VtZV9kZWZlcnJlZF9zdHJlYW1faXRlbShuZ2h0dHAyX3Nlc3Npb24gKnNlc3Np b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2h0 dHAyX3N0cmVhbSAqc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdWludDhfdCBmbGFncykgewotLSAgaW50IHJ2OwotKyAgbmdodHRwMl9zdHJl YW1fcmVzdW1lX2RlZmVycmVkX2l0ZW0oc3RyZWFtLCBmbGFncyk7Ci0gCi0tICBydiA9IG5naHR0 cDJfc3RyZWFtX3Jlc3VtZV9kZWZlcnJlZF9pdGVtKHN0cmVhbSwgZmxhZ3MpOwotLSAgaWYgKHJ2 ICE9IDApIHsKLS0gICAgcmV0dXJuIHJ2OwotLSAgfQotLQotLSAgaWYgKCEoc3RyZWFtLT5mbGFn cyAmIE5HSFRUUDJfU1RSRUFNX0ZMQUdfTk9fUkZDNzU0MF9QUklPUklUSUVTKSB8fAotLSAgICAg IChzdHJlYW0tPmZsYWdzICYgTkdIVFRQMl9TVFJFQU1fRkxBR19ERUZFUlJFRF9BTEwpKSB7Ci0r ICBpZiAoc3RyZWFtLT5mbGFncyAmIE5HSFRUUDJfU1RSRUFNX0ZMQUdfREVGRVJSRURfQUxMKSB7 Ci0gICAgIHJldHVybiAwOwotICAgfQotIAotQEAgLTExNjgsNyArMTA3MSw2IEBAIGludCBuZ2h0 dHAyX3Nlc3Npb25fYWRkX2l0ZW0obmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotICAgICByZXR1 cm4gMDsKLSAgIGNhc2UgTkdIVFRQMl9QVVNIX1BST01JU0U6IHsKLSAgICAgbmdodHRwMl9oZWFk ZXJzX2F1eF9kYXRhICphdXhfZGF0YTsKLS0gICAgbmdodHRwMl9wcmlvcml0eV9zcGVjIHByaV9z cGVjOwotIAotICAgICBhdXhfZGF0YSA9ICZpdGVtLT5hdXhfZGF0YS5oZWFkZXJzOwotIAotQEAg LTExNzYsMjAgKzEwNzgsMTMgQEAgaW50IG5naHR0cDJfc2Vzc2lvbl9hZGRfaXRlbShuZ2h0dHAy X3Nlc3Npb24gKnNlc3Npb24sCi0gICAgICAgcmV0dXJuIE5HSFRUUDJfRVJSX1NUUkVBTV9DTE9T RUQ7Ci0gICAgIH0KLSAKLS0gICAgbmdodHRwMl9wcmlvcml0eV9zcGVjX2luaXQoJnByaV9zcGVj LCBzdHJlYW0tPnN0cmVhbV9pZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkdI VFRQMl9ERUZBVUxUX1dFSUdIVCwgMCk7Ci0tCi0gICAgIGlmICghbmdodHRwMl9zZXNzaW9uX29w ZW5fc3RyZWFtKAotICAgICAgICAgICBzZXNzaW9uLCBmcmFtZS0+cHVzaF9wcm9taXNlLnByb21p c2VkX3N0cmVhbV9pZCwKLS0gICAgICAgICAgTkdIVFRQMl9TVFJFQU1fRkxBR19OT05FLCAmcHJp X3NwZWMsIE5HSFRUUDJfU1RSRUFNX1JFU0VSVkVELAotKyAgICAgICAgICBOR0hUVFAyX1NUUkVB TV9GTEFHX05PTkUsIE5HSFRUUDJfU1RSRUFNX1JFU0VSVkVELAotICAgICAgICAgICBhdXhfZGF0 YS0+c3RyZWFtX3VzZXJfZGF0YSkpIHsKLSAgICAgICByZXR1cm4gTkdIVFRQMl9FUlJfTk9NRU07 Ci0gICAgIH0KLSAKLS0gICAgLyogV2UgZG9uJ3QgaGF2ZSB0byBjYWxsIG5naHR0cDJfc2Vzc2lv bl9hZGp1c3RfY2xvc2VkX3N0cmVhbSgpCi0tICAgICAgIGhlcmUsIHNpbmNlIHN0cmVhbS0+c3Ry ZWFtX2lkIGlzIGxvY2FsIHN0cmVhbV9pZCwgYW5kIGl0IGRvZXMKLS0gICAgICAgbm90IGFmZmVj dCBjbG9zZWQgc3RyZWFtIGNvdW50LiAqLwotLQotICAgICBuZ2h0dHAyX291dGJvdW5kX3F1ZXVl X3B1c2goJnNlc3Npb24tPm9iX3JlZywgaXRlbSk7Ci0gICAgIGl0ZW0tPnF1ZXVlZCA9IDE7Ci0g Ci1AQCAtMTIxMyw2ICsxMTA4LDE1IEBAIGludCBuZ2h0dHAyX3Nlc3Npb25fYWRkX2l0ZW0obmdo dHRwMl9zZXNzaW9uICpzZXNzaW9uLAotIAotIGludCBuZ2h0dHAyX3Nlc3Npb25fYWRkX3JzdF9z dHJlYW0obmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLCBpbnQzMl90IHN0cmVhbV9pZCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGVycm9yX2NvZGUpIHsKLSsg IHJldHVybiBuZ2h0dHAyX3Nlc3Npb25fYWRkX3JzdF9zdHJlYW1fY29udGludWUoCi0rICAgIHNl c3Npb24sIHN0cmVhbV9pZCwgZXJyb3JfY29kZSwKLSsgICAgLyogY29udGludWVfd2l0aG91dF9z dHJlYW0gPSAqLyAxKTsKLSt9Ci0rCi0raW50IG5naHR0cDJfc2Vzc2lvbl9hZGRfcnN0X3N0cmVh bV9jb250aW51ZShuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHN0cmVhbV9pZCwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGVycm9yX2NvZGUsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29udGludWVf d2l0aG91dF9zdHJlYW0pIHsKLSAgIGludCBydjsKLSAgIG5naHR0cDJfb3V0Ym91bmRfaXRlbSAq aXRlbTsKLSAgIG5naHR0cDJfZnJhbWUgKmZyYW1lOwotQEAgLTEyNjksNiArMTE3MywxMiBAQCBp bnQgbmdodHRwMl9zZXNzaW9uX2FkZF9yc3Rfc3RyZWFtKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lv biwgaW50MzJfdCBzdHJlYW1faWQsCi0gICAgIH0KLSAgIH0KLSAKLSsgIC8qIFRvIGtlZXAgdGhl IG9sZCBiZWhhdmlvdXIsIGRvIG5vdCBmYWlsIGlmIHN0cmVhbSB3YXMgbm90Ci0rICAgICBmb3Vu ZC4gKi8KLSsgIGlmICghY29udGludWVfd2l0aG91dF9zdHJlYW0gJiYgIXN0cmVhbSkgewotKyAg ICByZXR1cm4gMDsKLSsgIH0KLSsKLSAgIGl0ZW0gPSBuZ2h0dHAyX21lbV9tYWxsb2MobWVtLCBz aXplb2YobmdodHRwMl9vdXRib3VuZF9pdGVtKSk7Ci0gICBpZiAoaXRlbSA9PSBOVUxMKSB7Ci0g ICAgIHJldHVybiBOR0hUVFAyX0VSUl9OT01FTTsKLUBAIC0xMjkwLDE1ICsxMjAwLDExIEBAIGlu dCBuZ2h0dHAyX3Nlc3Npb25fYWRkX3JzdF9zdHJlYW0obmdodHRwMl9zZXNzaW9uICpzZXNzaW9u LCBpbnQzMl90IHN0cmVhbV9pZCwKLSAKLSBuZ2h0dHAyX3N0cmVhbSAqbmdodHRwMl9zZXNzaW9u X29wZW5fc3RyZWFtKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgc3RyZWFtX2lkLCB1aW50OF90IGZs YWdzLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdodHRw Ml9wcmlvcml0eV9zcGVjICpwcmlfc3BlY19pbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG5naHR0cDJfc3RyZWFtX3N0YXRlIGluaXRpYWxfc3RhdGUsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpzdHJlYW1f dXNlcl9kYXRhKSB7Ci0gICBpbnQgcnY7Ci0gICBuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtOwotLSAg bmdodHRwMl9zdHJlYW0gKmRlcF9zdHJlYW0gPSBOVUxMOwotICAgaW50IHN0cmVhbV9hbGxvYyA9 IDA7Ci0tICBuZ2h0dHAyX3ByaW9yaXR5X3NwZWMgcHJpX3NwZWNfZGVmYXVsdDsKLS0gIG5naHR0 cDJfcHJpb3JpdHlfc3BlYyAqcHJpX3NwZWMgPSBwcmlfc3BlY19pbjsKLSAgIG5naHR0cDJfbWVt ICptZW07Ci0gCi0gICBtZW0gPSAmc2Vzc2lvbi0+bWVtOwotQEAgLTEzMTEsMjMgKzEyMTcsOSBA QCBuZ2h0dHAyX3N0cmVhbSAqbmdodHRwMl9zZXNzaW9uX29wZW5fc3RyZWFtKG5naHR0cDJfc2Vz c2lvbiAqc2Vzc2lvbiwKLSAKLSAgIGlmIChzdHJlYW0pIHsKLSAgICAgYXNzZXJ0KHN0cmVhbS0+ c3RhdGUgPT0gTkdIVFRQMl9TVFJFQU1fSURMRSk7Ci0tICAgIGFzc2VydCgoc3RyZWFtLT5mbGFn cyAmIE5HSFRUUDJfU1RSRUFNX0ZMQUdfTk9fUkZDNzU0MF9QUklPUklUSUVTKSB8fAotLSAgICAg ICAgICAgbmdodHRwMl9zdHJlYW1faW5fZGVwX3RyZWUoc3RyZWFtKSk7Ci0tCi0tICAgIG5naHR0 cDJfc2Vzc2lvbl9kZXRhY2hfaWRsZV9zdHJlYW0oc2Vzc2lvbiwgc3RyZWFtKTsKLS0KLS0gICAg aWYgKG5naHR0cDJfc3RyZWFtX2luX2RlcF90cmVlKHN0cmVhbSkpIHsKLS0gICAgICBhc3NlcnQo IShzdHJlYW0tPmZsYWdzICYgTkdIVFRQMl9TVFJFQU1fRkxBR19OT19SRkM3NTQwX1BSSU9SSVRJ RVMpKTsKLSsgICAgYXNzZXJ0KGluaXRpYWxfc3RhdGUgIT0gTkdIVFRQMl9TVFJFQU1fSURMRSk7 Ci0gCi0tICAgICAgcnYgPSBuZ2h0dHAyX3N0cmVhbV9kZXBfcmVtb3ZlKHN0cmVhbSk7Ci0tICAg ICAgaWYgKHJ2ICE9IDApIHsKLS0gICAgICAgIHJldHVybiBOVUxMOwotLSAgICAgIH0KLS0KLS0g ICAgICBpZiAoc2Vzc2lvbl9ub19yZmM3NTQwX3ByaV9ub19mYWxsYmFjayhzZXNzaW9uKSkgewot LSAgICAgICAgc3RyZWFtLT5mbGFncyB8PSBOR0hUVFAyX1NUUkVBTV9GTEFHX05PX1JGQzc1NDBf UFJJT1JJVElFUzsKLS0gICAgICB9Ci0tICAgIH0KLSsgICAgLS1zZXNzaW9uLT5udW1faWRsZV9z dHJlYW1zOwotICAgfSBlbHNlIHsKLSAgICAgc3RyZWFtID0gbmdodHRwMl9tZW1fbWFsbG9jKG1l bSwgc2l6ZW9mKG5naHR0cDJfc3RyZWFtKSk7Ci0gICAgIGlmIChzdHJlYW0gPT0gTlVMTCkgewot QEAgLTEzMzcsNjkgKzEyMjksMTYgQEAgbmdodHRwMl9zdHJlYW0gKm5naHR0cDJfc2Vzc2lvbl9v cGVuX3N0cmVhbShuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0gICAgIHN0cmVhbV9hbGxvYyA9 IDE7Ci0gICB9Ci0gCi0tICBpZiAoc2Vzc2lvbl9ub19yZmM3NTQwX3ByaV9ub19mYWxsYmFjayhz ZXNzaW9uKSB8fAotLSAgICAgIHNlc3Npb24tPnJlbW90ZV9zZXR0aW5ncy5ub19yZmM3NTQwX3By aW9yaXRpZXMgPT0gMSkgewotLSAgICAvKiBGb3IgY2xpZW50IHdoaWNoIGhhcyBub3QgcmVjZWl2 ZWQgc2VydmVyCi0tICAgICAgIFNFVFRJTkdTX05PX1JGQzc1NDBfUFJJT1JJVElFUyA9IDEsIHNl bmQgYSBwcmlvcml0eSBzaWduYWwKLS0gICAgICAgb3Bwb3J0dW5pc3RpY2FsbHkuICovCi0tICAg IGlmIChzZXNzaW9uLT5zZXJ2ZXIgfHwKLS0gICAgICAgIHNlc3Npb24tPnJlbW90ZV9zZXR0aW5n cy5ub19yZmM3NTQwX3ByaW9yaXRpZXMgPT0gMSkgewotLSAgICAgIG5naHR0cDJfcHJpb3JpdHlf c3BlY19kZWZhdWx0X2luaXQoJnByaV9zcGVjX2RlZmF1bHQpOwotLSAgICAgIHByaV9zcGVjID0g JnByaV9zcGVjX2RlZmF1bHQ7Ci0tICAgIH0KLS0KLS0gICAgaWYgKHNlc3Npb24tPnBlbmRpbmdf bm9fcmZjNzU0MF9wcmlvcml0aWVzID09IDEpIHsKLS0gICAgICBmbGFncyB8PSBOR0hUVFAyX1NU UkVBTV9GTEFHX05PX1JGQzc1NDBfUFJJT1JJVElFUzsKLS0gICAgfQotLSAgfSBlbHNlIGlmIChw cmlfc3BlYy0+c3RyZWFtX2lkICE9IDApIHsKLS0gICAgZGVwX3N0cmVhbSA9IG5naHR0cDJfc2Vz c2lvbl9nZXRfc3RyZWFtX3JhdyhzZXNzaW9uLCBwcmlfc3BlYy0+c3RyZWFtX2lkKTsKLS0KLS0g ICAgaWYgKCFkZXBfc3RyZWFtICYmCi0tICAgICAgICBzZXNzaW9uX2RldGVjdF9pZGxlX3N0cmVh bShzZXNzaW9uLCBwcmlfc3BlYy0+c3RyZWFtX2lkKSkgewotLSAgICAgIC8qIERlcGVuZHMgb24g aWRsZSBzdHJlYW0sIHdoaWNoIGRvZXMgbm90IGV4aXN0IGluIG1lbW9yeS4KLS0gICAgICAgICBB c3NpZ24gZGVmYXVsdCBwcmlvcml0eSBmb3IgaXQuICovCi0tICAgICAgbmdodHRwMl9wcmlvcml0 eV9zcGVjX2RlZmF1bHRfaW5pdCgmcHJpX3NwZWNfZGVmYXVsdCk7Ci0tCi0tICAgICAgZGVwX3N0 cmVhbSA9IG5naHR0cDJfc2Vzc2lvbl9vcGVuX3N0cmVhbSgKLS0gICAgICAgIHNlc3Npb24sIHBy aV9zcGVjLT5zdHJlYW1faWQsIE5HSFRUUDJfRkxBR19OT05FLCAmcHJpX3NwZWNfZGVmYXVsdCwK LS0gICAgICAgIE5HSFRUUDJfU1RSRUFNX0lETEUsIE5VTEwpOwotLQotLSAgICAgIGlmIChkZXBf c3RyZWFtID09IE5VTEwpIHsKLS0gICAgICAgIGlmIChzdHJlYW1fYWxsb2MpIHsKLS0gICAgICAg ICAgbmdodHRwMl9tZW1fZnJlZShtZW0sIHN0cmVhbSk7Ci0tICAgICAgICB9Ci0tCi0tICAgICAg ICByZXR1cm4gTlVMTDsKLS0gICAgICB9Ci0tICAgIH0gZWxzZSBpZiAoIWRlcF9zdHJlYW0gfHwg IW5naHR0cDJfc3RyZWFtX2luX2RlcF90cmVlKGRlcF9zdHJlYW0pKSB7Ci0tICAgICAgLyogSWYg ZGVwX3N0cmVhbSBpcyBub3QgcGFydCBvZiBkZXBlbmRlbmN5IHRyZWUsIHN0cmVhbSB3aWxsIGdl dAotLSAgICAgICAgIGRlZmF1bHQgcHJpb3JpdHkuICBUaGlzIGhhbmRsZXMgdGhlIGNhc2Ugd2hl bgotLSAgICAgICAgIHByaV9zcGVjLT5zdHJlYW1faWQgPT0gc3RyZWFtX2lkLiAgVGhpcyBoYXBw ZW5zIGJlY2F1c2Ugd2UKLS0gICAgICAgICBkb24ndCBjaGVjayBwcmlfc3BlYy0+c3RyZWFtX2lk IGFnYWluc3QgbmV3IHN0cmVhbSBJRCBpbgotLSAgICAgICAgIG5naHR0cDJfc3VibWl0X3JlcXVl c3QuICBUaGlzIGFsc28gaGFuZGxlcyB0aGUgY2FzZSB3aGVuIGlkbGUKLS0gICAgICAgICBzdHJl YW0gY3JlYXRlZCBieSBQUklPUklUWSBmcmFtZSB3YXMgb3BlbmVkLiAgU29tZWhvdyB3ZQotLSAg ICAgICAgIGZpcnN0IHJlbW92ZSB0aGUgaWRsZSBzdHJlYW0gZnJvbSBkZXBlbmRlbmN5IHRyZWUu ICBUaGlzIGlzCi0tICAgICAgICAgZG9uZSB0byBzaW1wbGlmeSBjb2RlIGJhc2UsIGJ1dCBpZGVh bGx5IHdlIHNob3VsZCByZXRhaW4gb2xkCi0tICAgICAgICAgZGVwZW5kZW5jeS4gIEJ1dCBJJ20g bm90IHN1cmUgdGhpcyBhZGRzIHZhbHVlcy4gKi8KLS0gICAgICBuZ2h0dHAyX3ByaW9yaXR5X3Nw ZWNfZGVmYXVsdF9pbml0KCZwcmlfc3BlY19kZWZhdWx0KTsKLS0gICAgICBwcmlfc3BlYyA9ICZw cmlfc3BlY19kZWZhdWx0OwotLSAgICB9Ci0tICB9Ci0tCi0gICBpZiAoaW5pdGlhbF9zdGF0ZSA9 PSBOR0hUVFAyX1NUUkVBTV9SRVNFUlZFRCkgewotICAgICBmbGFncyB8PSBOR0hUVFAyX1NUUkVB TV9GTEFHX1BVU0g7Ci0gICB9Ci0gCi0gICBpZiAoc3RyZWFtX2FsbG9jKSB7Ci0gICAgIG5naHR0 cDJfc3RyZWFtX2luaXQoc3RyZWFtLCBzdHJlYW1faWQsIGZsYWdzLCBpbml0aWFsX3N0YXRlLAot LSAgICAgICAgICAgICAgICAgICAgICAgIHByaV9zcGVjLT53ZWlnaHQsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgKGludDMyX3Qpc2Vzc2lvbi0+cmVtb3RlX3NldHRpbmdzLmluaXRpYWxfd2lu ZG93X3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgKGludDMyX3Qpc2Vzc2lvbi0+bG9j YWxfc2V0dGluZ3MuaW5pdGlhbF93aW5kb3dfc2l6ZSwKLS0gICAgICAgICAgICAgICAgICAgICAg ICBzdHJlYW1fdXNlcl9kYXRhLCBtZW0pOwotLQotLSAgICBpZiAoc2Vzc2lvbl9ub19yZmM3NTQw X3ByaV9ub19mYWxsYmFjayhzZXNzaW9uKSkgewotLSAgICAgIHN0cmVhbS0+c2VxID0gc2Vzc2lv bi0+c3RyZWFtX3NlcSsrOwotLSAgICB9Ci0rICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFt X3VzZXJfZGF0YSk7Ci0rICAgIHN0cmVhbS0+c2VxID0gc2Vzc2lvbi0+c3RyZWFtX3NlcSsrOwot IAotICAgICBydiA9IG5naHR0cDJfbWFwX2luc2VydCgmc2Vzc2lvbi0+c3RyZWFtcywgc3RyZWFt X2lkLCBzdHJlYW0pOwotICAgICBpZiAocnYgIT0gMCkgewotQEAgLTE0MTAsNyArMTI0OSw2IEBA IG5naHR0cDJfc3RyZWFtICpuZ2h0dHAyX3Nlc3Npb25fb3Blbl9zdHJlYW0obmdodHRwMl9zZXNz aW9uICpzZXNzaW9uLAotICAgfSBlbHNlIHsKLSAgICAgc3RyZWFtLT5mbGFncyA9IGZsYWdzOwot ICAgICBzdHJlYW0tPnN0YXRlID0gaW5pdGlhbF9zdGF0ZTsKLS0gICAgc3RyZWFtLT53ZWlnaHQg PSBwcmlfc3BlYy0+d2VpZ2h0OwotICAgICBzdHJlYW0tPnN0cmVhbV91c2VyX2RhdGEgPSBzdHJl YW1fdXNlcl9kYXRhOwotICAgfQotIAotQEAgLTE0MjgsOSArMTI2Niw3IEBAIG5naHR0cDJfc3Ry ZWFtICpuZ2h0dHAyX3Nlc3Npb25fb3Blbl9zdHJlYW0obmdodHRwMl9zZXNzaW9uICpzZXNzaW9u LAotICAgICAgICBsaW1pdC4gVGhhdCBpcyBvbmUgb2YgdGhlIERPUyB2ZWN0b3IuICovCi0gICAg IGJyZWFrOwotICAgY2FzZSBOR0hUVFAyX1NUUkVBTV9JRExFOgotLSAgICAvKiBJZGxlIHN0cmVh bSBkb2VzIG5vdCBjb3VudCB0b3dhcmQgdGhlIGNvbmN1cnJlbnQgc3RyZWFtcyBsaW1pdC4KLS0g ICAgICAgVGhpcyBpcyB1c2VkIGFzIGFuY2hvciBub2RlIGluIGRlcGVuZGVuY3kgdHJlZS4gKi8K LS0gICAgbmdodHRwMl9zZXNzaW9uX2tlZXBfaWRsZV9zdHJlYW0oc2Vzc2lvbiwgc3RyZWFtKTsK LSsgICAgKytzZXNzaW9uLT5udW1faWRsZV9zdHJlYW1zOwotICAgICBicmVhazsKLSAgIGRlZmF1 bHQ6Ci0gICAgIGlmIChuZ2h0dHAyX3Nlc3Npb25faXNfbXlfc3RyZWFtX2lkKHNlc3Npb24sIHN0 cmVhbV9pZCkpIHsKLUBAIC0xNDQwLDMxICsxMjc2LDExIEBAIG5naHR0cDJfc3RyZWFtICpuZ2h0 dHAyX3Nlc3Npb25fb3Blbl9zdHJlYW0obmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotICAgICB9 Ci0gICB9Ci0gCi0tICBpZiAoc3RyZWFtLT5mbGFncyAmIE5HSFRUUDJfU1RSRUFNX0ZMQUdfTk9f UkZDNzU0MF9QUklPUklUSUVTKSB7Ci0tICAgIHJldHVybiBzdHJlYW07Ci0tICB9Ci0tCi0tICBp ZiAocHJpX3NwZWMtPnN0cmVhbV9pZCA9PSAwKSB7Ci0tICAgIGRlcF9zdHJlYW0gPSAmc2Vzc2lv bi0+cm9vdDsKLS0gIH0KLS0KLS0gIGFzc2VydChkZXBfc3RyZWFtKTsKLS0KLS0gIGlmIChwcmlf c3BlYy0+ZXhjbHVzaXZlKSB7Ci0tICAgIHJ2ID0gbmdodHRwMl9zdHJlYW1fZGVwX2luc2VydChk ZXBfc3RyZWFtLCBzdHJlYW0pOwotLSAgICBpZiAocnYgIT0gMCkgewotLSAgICAgIHJldHVybiBO VUxMOwotLSAgICB9Ci0tICB9IGVsc2UgewotLSAgICBuZ2h0dHAyX3N0cmVhbV9kZXBfYWRkKGRl cF9zdHJlYW0sIHN0cmVhbSk7Ci0tICB9Ci0tCi0gICByZXR1cm4gc3RyZWFtOwotIH0KLSAKLSBp bnQgbmdodHRwMl9zZXNzaW9uX2Nsb3NlX3N0cmVhbShuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24s IGludDMyX3Qgc3RyZWFtX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp bnQzMl90IGVycm9yX2NvZGUpIHsKLS0gIGludCBydjsKLSAgIG5naHR0cDJfc3RyZWFtICpzdHJl YW07Ci0gICBuZ2h0dHAyX21lbSAqbWVtOwotICAgaW50IGlzX215X3N0cmVhbV9pZDsKLUBAIC0x NTI4LDIwNyArMTM0NCwyNiBAQCBpbnQgbmdodHRwMl9zZXNzaW9uX2Nsb3NlX3N0cmVhbShuZ2h0 dHAyX3Nlc3Npb24gKnNlc3Npb24sIGludDMyX3Qgc3RyZWFtX2lkLAotICAgLyogQ2xvc2VzIGJv dGggZGlyZWN0aW9ucyBqdXN0IGluIGNhc2UgdGhleSBhcmUgbm90IGNsb3NlZCB5ZXQgKi8KLSAg IHN0cmVhbS0+ZmxhZ3MgfD0gTkdIVFRQMl9TVFJFQU1fRkxBR19DTE9TRUQ7Ci0gCi0tICBpZiAo c2Vzc2lvbi0+cGVuZGluZ19ub19yZmM3NTQwX3ByaW9yaXRpZXMgPT0gMSkgewotLSAgICByZXR1 cm4gbmdodHRwMl9zZXNzaW9uX2Rlc3Ryb3lfc3RyZWFtKHNlc3Npb24sIHN0cmVhbSk7Ci0tICB9 Ci0tCi0tICBpZiAoKHNlc3Npb24tPm9wdF9mbGFncyAmIE5HSFRUUDJfT1BUTUFTS19OT19DTE9T RURfU1RSRUFNUykgPT0gMCAmJgotLSAgICAgIHNlc3Npb24tPnNlcnZlciAmJiAhaXNfbXlfc3Ry ZWFtX2lkICYmCi0tICAgICAgbmdodHRwMl9zdHJlYW1faW5fZGVwX3RyZWUoc3RyZWFtKSkgewot LSAgICAvKiBPbiBzZXJ2ZXIgc2lkZSwgcmV0YWluIHN0cmVhbSBhdCBtb3N0IE1BWF9DT05DVVJS RU5UX1NUUkVBTVMKLS0gICAgICAgY29tYmluZWQgd2l0aCB0aGUgY3VycmVudCBhY3RpdmUgaW5j b21pbmcgc3RyZWFtcyB0byBtYWtlCi0tICAgICAgIGRlcGVuZGVuY3kgdHJlZSB3b3JrIGJldHRl ci4gKi8KLS0gICAgbmdodHRwMl9zZXNzaW9uX2tlZXBfY2xvc2VkX3N0cmVhbShzZXNzaW9uLCBz dHJlYW0pOwotLSAgfSBlbHNlIHsKLS0gICAgcnYgPSBuZ2h0dHAyX3Nlc3Npb25fZGVzdHJveV9z dHJlYW0oc2Vzc2lvbiwgc3RyZWFtKTsKLS0gICAgaWYgKHJ2ICE9IDApIHsKLS0gICAgICByZXR1 cm4gcnY7Ci0tICAgIH0KLS0gIH0KLSsgIG5naHR0cDJfc2Vzc2lvbl9kZXN0cm95X3N0cmVhbShz ZXNzaW9uLCBzdHJlYW0pOwotIAotICAgcmV0dXJuIDA7Ci0gfQotIAotLWludCBuZ2h0dHAyX3Nl c3Npb25fZGVzdHJveV9zdHJlYW0obmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdodHRwMl9zdHJlYW0gKnN0cmVhbSkgewotK3Zv aWQgbmdodHRwMl9zZXNzaW9uX2Rlc3Ryb3lfc3RyZWFtKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lv biwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2h0dHAyX3N0cmVhbSAq c3RyZWFtKSB7Ci0gICBuZ2h0dHAyX21lbSAqbWVtOwotLSAgaW50IHJ2OwotIAotICAgREVCVUdG KCJzdHJlYW06IGRlc3Ryb3kgY2xvc2VkIHN0cmVhbSglcCk9JWRcbiIsIHN0cmVhbSwgc3RyZWFt LT5zdHJlYW1faWQpOwotIAotICAgbWVtID0gJnNlc3Npb24tPm1lbTsKLSAKLS0gIGlmIChuZ2h0 dHAyX3N0cmVhbV9pbl9kZXBfdHJlZShzdHJlYW0pKSB7Ci0tICAgIHJ2ID0gbmdodHRwMl9zdHJl YW1fZGVwX3JlbW92ZShzdHJlYW0pOwotLSAgICBpZiAocnYgIT0gMCkgewotLSAgICAgIHJldHVy biBydjsKLS0gICAgfQotLSAgfQotLQotLSAgaWYgKHN0cmVhbS0+cXVldWVkICYmCi0tICAgICAg KHN0cmVhbS0+ZmxhZ3MgJiBOR0hUVFAyX1NUUkVBTV9GTEFHX05PX1JGQzc1NDBfUFJJT1JJVElF UykpIHsKLSsgIGlmIChzdHJlYW0tPnF1ZXVlZCkgewotICAgICBzZXNzaW9uX29iX2RhdGFfcmVt b3ZlKHNlc3Npb24sIHN0cmVhbSk7Ci0gICB9Ci0gCi0gICBuZ2h0dHAyX21hcF9yZW1vdmUoJnNl c3Npb24tPnN0cmVhbXMsIHN0cmVhbS0+c3RyZWFtX2lkKTsKLSAgIG5naHR0cDJfc3RyZWFtX2Zy ZWUoc3RyZWFtKTsKLSAgIG5naHR0cDJfbWVtX2ZyZWUobWVtLCBzdHJlYW0pOwotLQotLSAgcmV0 dXJuIDA7Ci0tfQotLQotLXZvaWQgbmdodHRwMl9zZXNzaW9uX2tlZXBfY2xvc2VkX3N0cmVhbShu Z2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG5naHR0cDJfc3RyZWFtICpzdHJlYW0pIHsKLS0gIERFQlVHRigic3RyZWFtOiBr ZWVwIGNsb3NlZCBzdHJlYW0oJXApPSVkLCBzdGF0ZT0lZFxuIiwgc3RyZWFtLAotLSAgICAgICAg IHN0cmVhbS0+c3RyZWFtX2lkLCBzdHJlYW0tPnN0YXRlKTsKLS0KLS0gIGlmIChzZXNzaW9uLT5j bG9zZWRfc3RyZWFtX3RhaWwpIHsKLS0gICAgc2Vzc2lvbi0+Y2xvc2VkX3N0cmVhbV90YWlsLT5j bG9zZWRfbmV4dCA9IHN0cmVhbTsKLS0gICAgc3RyZWFtLT5jbG9zZWRfcHJldiA9IHNlc3Npb24t PmNsb3NlZF9zdHJlYW1fdGFpbDsKLS0gIH0gZWxzZSB7Ci0tICAgIHNlc3Npb24tPmNsb3NlZF9z dHJlYW1faGVhZCA9IHN0cmVhbTsKLS0gIH0KLS0gIHNlc3Npb24tPmNsb3NlZF9zdHJlYW1fdGFp bCA9IHN0cmVhbTsKLS0KLS0gICsrc2Vzc2lvbi0+bnVtX2Nsb3NlZF9zdHJlYW1zOwotLX0KLS0K LS12b2lkIG5naHR0cDJfc2Vzc2lvbl9rZWVwX2lkbGVfc3RyZWFtKG5naHR0cDJfc2Vzc2lvbiAq c2Vzc2lvbiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5naHR0cDJf c3RyZWFtICpzdHJlYW0pIHsKLS0gIERFQlVHRigic3RyZWFtOiBrZWVwIGlkbGUgc3RyZWFtKCVw KT0lZCwgc3RhdGU9JWRcbiIsIHN0cmVhbSwKLS0gICAgICAgICBzdHJlYW0tPnN0cmVhbV9pZCwg c3RyZWFtLT5zdGF0ZSk7Ci0tCi0tICBpZiAoc2Vzc2lvbi0+aWRsZV9zdHJlYW1fdGFpbCkgewot LSAgICBzZXNzaW9uLT5pZGxlX3N0cmVhbV90YWlsLT5jbG9zZWRfbmV4dCA9IHN0cmVhbTsKLS0g ICAgc3RyZWFtLT5jbG9zZWRfcHJldiA9IHNlc3Npb24tPmlkbGVfc3RyZWFtX3RhaWw7Ci0tICB9 IGVsc2UgewotLSAgICBzZXNzaW9uLT5pZGxlX3N0cmVhbV9oZWFkID0gc3RyZWFtOwotLSAgfQot LSAgc2Vzc2lvbi0+aWRsZV9zdHJlYW1fdGFpbCA9IHN0cmVhbTsKLS0KLS0gICsrc2Vzc2lvbi0+ bnVtX2lkbGVfc3RyZWFtczsKLS19Ci0tCi0tdm9pZCBuZ2h0dHAyX3Nlc3Npb25fZGV0YWNoX2lk bGVfc3RyZWFtKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbmdodHRwMl9zdHJlYW0gKnN0cmVhbSkgewotLSAgbmdodHRw Ml9zdHJlYW0gKnByZXZfc3RyZWFtLCAqbmV4dF9zdHJlYW07Ci0tCi0tICBERUJVR0YoInN0cmVh bTogZGV0YWNoIGlkbGUgc3RyZWFtKCVwKT0lZCwgc3RhdGU9JWRcbiIsIHN0cmVhbSwKLS0gICAg ICAgICBzdHJlYW0tPnN0cmVhbV9pZCwgc3RyZWFtLT5zdGF0ZSk7Ci0tCi0tICBwcmV2X3N0cmVh bSA9IHN0cmVhbS0+Y2xvc2VkX3ByZXY7Ci0tICBuZXh0X3N0cmVhbSA9IHN0cmVhbS0+Y2xvc2Vk X25leHQ7Ci0tCi0tICBpZiAocHJldl9zdHJlYW0pIHsKLS0gICAgcHJldl9zdHJlYW0tPmNsb3Nl ZF9uZXh0ID0gbmV4dF9zdHJlYW07Ci0tICB9IGVsc2UgewotLSAgICBzZXNzaW9uLT5pZGxlX3N0 cmVhbV9oZWFkID0gbmV4dF9zdHJlYW07Ci0tICB9Ci0tCi0tICBpZiAobmV4dF9zdHJlYW0pIHsK LS0gICAgbmV4dF9zdHJlYW0tPmNsb3NlZF9wcmV2ID0gcHJldl9zdHJlYW07Ci0tICB9IGVsc2Ug ewotLSAgICBzZXNzaW9uLT5pZGxlX3N0cmVhbV90YWlsID0gcHJldl9zdHJlYW07Ci0tICB9Ci0t Ci0tICBzdHJlYW0tPmNsb3NlZF9wcmV2ID0gTlVMTDsKLS0gIHN0cmVhbS0+Y2xvc2VkX25leHQg PSBOVUxMOwotLQotLSAgLS1zZXNzaW9uLT5udW1faWRsZV9zdHJlYW1zOwotLX0KLS0KLS1pbnQg bmdodHRwMl9zZXNzaW9uX2FkanVzdF9jbG9zZWRfc3RyZWFtKG5naHR0cDJfc2Vzc2lvbiAqc2Vz c2lvbikgewotLSAgc2l6ZV90IG51bV9zdHJlYW1fbWF4OwotLSAgaW50IHJ2OwotLQotLSAgaWYg KHNlc3Npb24tPmxvY2FsX3NldHRpbmdzLm1heF9jb25jdXJyZW50X3N0cmVhbXMgPT0KLS0gICAg ICBOR0hUVFAyX0RFRkFVTFRfTUFYX0NPTkNVUlJFTlRfU1RSRUFNUykgewotLSAgICBudW1fc3Ry ZWFtX21heCA9IHNlc3Npb24tPnBlbmRpbmdfbG9jYWxfbWF4X2NvbmN1cnJlbnRfc3RyZWFtOwot LSAgfSBlbHNlIHsKLS0gICAgbnVtX3N0cmVhbV9tYXggPSBzZXNzaW9uLT5sb2NhbF9zZXR0aW5n cy5tYXhfY29uY3VycmVudF9zdHJlYW1zOwotLSAgfQotLQotLSAgREVCVUdGKCJzdHJlYW06IGFk anVzdGluZyBrZXB0IGNsb3NlZCBzdHJlYW1zIG51bV9jbG9zZWRfc3RyZWFtcz0lenUsICIKLS0g ICAgICAgICAibnVtX2luY29taW5nX3N0cmVhbXM9JXp1LCBtYXhfY29uY3VycmVudF9zdHJlYW1z PSV6dVxuIiwKLS0gICAgICAgICBzZXNzaW9uLT5udW1fY2xvc2VkX3N0cmVhbXMsIHNlc3Npb24t Pm51bV9pbmNvbWluZ19zdHJlYW1zLAotLSAgICAgICAgIG51bV9zdHJlYW1fbWF4KTsKLS0KLS0g IHdoaWxlIChzZXNzaW9uLT5udW1fY2xvc2VkX3N0cmVhbXMgPiAwICYmCi0tICAgICAgICAgc2Vz c2lvbi0+bnVtX2Nsb3NlZF9zdHJlYW1zICsgc2Vzc2lvbi0+bnVtX2luY29taW5nX3N0cmVhbXMg PgotLSAgICAgICAgICAgbnVtX3N0cmVhbV9tYXgpIHsKLS0gICAgbmdodHRwMl9zdHJlYW0gKmhl YWRfc3RyZWFtOwotLSAgICBuZ2h0dHAyX3N0cmVhbSAqbmV4dDsKLS0KLS0gICAgaGVhZF9zdHJl YW0gPSBzZXNzaW9uLT5jbG9zZWRfc3RyZWFtX2hlYWQ7Ci0tCi0tICAgIGFzc2VydChoZWFkX3N0 cmVhbSk7Ci0tCi0tICAgIG5leHQgPSBoZWFkX3N0cmVhbS0+Y2xvc2VkX25leHQ7Ci0tCi0tICAg IHJ2ID0gbmdodHRwMl9zZXNzaW9uX2Rlc3Ryb3lfc3RyZWFtKHNlc3Npb24sIGhlYWRfc3RyZWFt KTsKLS0gICAgaWYgKHJ2ICE9IDApIHsKLS0gICAgICByZXR1cm4gcnY7Ci0tICAgIH0KLS0KLS0g ICAgLyogaGVhZF9zdHJlYW0gaXMgbm93IGZyZWVkICovCi0tCi0tICAgIHNlc3Npb24tPmNsb3Nl ZF9zdHJlYW1faGVhZCA9IG5leHQ7Ci0tCi0tICAgIGlmIChzZXNzaW9uLT5jbG9zZWRfc3RyZWFt X2hlYWQpIHsKLS0gICAgICBzZXNzaW9uLT5jbG9zZWRfc3RyZWFtX2hlYWQtPmNsb3NlZF9wcmV2 ID0gTlVMTDsKLS0gICAgfSBlbHNlIHsKLS0gICAgICBzZXNzaW9uLT5jbG9zZWRfc3RyZWFtX3Rh aWwgPSBOVUxMOwotLSAgICB9Ci0tCi0tICAgIC0tc2Vzc2lvbi0+bnVtX2Nsb3NlZF9zdHJlYW1z OwotLSAgfQotLQotLSAgcmV0dXJuIDA7Ci0tfQotLQotLWludCBuZ2h0dHAyX3Nlc3Npb25fYWRq dXN0X2lkbGVfc3RyZWFtKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbikgewotLSAgc2l6ZV90IG1h eDsKLS0gIGludCBydjsKLS0KLS0gIC8qIE1ha2UgbWluaW11bSBudW1iZXIgb2YgaWRsZSBzdHJl YW1zIDE2LCBhbmQgbWF4aW11bSAxMDAsIHdoaWNoCi0tICAgICBhcmUgYXJiaXRyYXJ5IGNob3Nl biBudW1iZXJzLiAqLwotLSAgbWF4ID0gbmdodHRwMl9taW5fdWludDMyKAotLSAgICAxMDAsCi0t ICAgIG5naHR0cDJfbWF4X3VpbnQzMigKLS0gICAgICAxNiwgbmdodHRwMl9taW5fdWludDMyKHNl c3Npb24tPmxvY2FsX3NldHRpbmdzLm1heF9jb25jdXJyZW50X3N0cmVhbXMsCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5wZW5kaW5nX2xvY2FsX21heF9jb25jdXJyZW50 X3N0cmVhbSkpKTsKLS0KLS0gIERFQlVHRigic3RyZWFtOiBhZGp1c3Rpbmcga2VwdCBpZGxlIHN0 cmVhbXMgbnVtX2lkbGVfc3RyZWFtcz0lenUsIG1heD0lenVcbiIsCi0tICAgICAgICAgc2Vzc2lv bi0+bnVtX2lkbGVfc3RyZWFtcywgbWF4KTsKLS0KLS0gIHdoaWxlIChzZXNzaW9uLT5udW1faWRs ZV9zdHJlYW1zID4gbWF4KSB7Ci0tICAgIG5naHR0cDJfc3RyZWFtICpoZWFkOwotLSAgICBuZ2h0 dHAyX3N0cmVhbSAqbmV4dDsKLS0KLS0gICAgaGVhZCA9IHNlc3Npb24tPmlkbGVfc3RyZWFtX2hl YWQ7Ci0tICAgIGFzc2VydChoZWFkKTsKLS0KLS0gICAgbmV4dCA9IGhlYWQtPmNsb3NlZF9uZXh0 OwotLQotLSAgICBydiA9IG5naHR0cDJfc2Vzc2lvbl9kZXN0cm95X3N0cmVhbShzZXNzaW9uLCBo ZWFkKTsKLS0gICAgaWYgKHJ2ICE9IDApIHsKLS0gICAgICByZXR1cm4gcnY7Ci0tICAgIH0KLS0K LS0gICAgLyogaGVhZCBpcyBub3cgZGVzdHJveWVkICovCi0tCi0tICAgIHNlc3Npb24tPmlkbGVf c3RyZWFtX2hlYWQgPSBuZXh0OwotLQotLSAgICBpZiAoc2Vzc2lvbi0+aWRsZV9zdHJlYW1faGVh ZCkgewotLSAgICAgIHNlc3Npb24tPmlkbGVfc3RyZWFtX2hlYWQtPmNsb3NlZF9wcmV2ID0gTlVM TDsKLS0gICAgfSBlbHNlIHsKLS0gICAgICBzZXNzaW9uLT5pZGxlX3N0cmVhbV90YWlsID0gTlVM TDsKLS0gICAgfQotLQotLSAgICAtLXNlc3Npb24tPm51bV9pZGxlX3N0cmVhbXM7Ci0tICB9Ci0t Ci0tICByZXR1cm4gMDsKLSB9Ci0gCi0gLyoKLUBAIC0yNDExLDE2ICsyMDQ2LDEyIEBAIHN0YXRp YyBpbnQgc2Vzc2lvbl9wcmVwX2ZyYW1lKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAKLSAg ICAgICBzdHJlYW0gPSBuZ2h0dHAyX3Nlc3Npb25fb3Blbl9zdHJlYW0oCi0gICAgICAgICBzZXNz aW9uLCBmcmFtZS0+aGQuc3RyZWFtX2lkLCBOR0hUVFAyX1NUUkVBTV9GTEFHX05PTkUsCi0tICAg ICAgICAmZnJhbWUtPmhlYWRlcnMucHJpX3NwZWMsIE5HSFRUUDJfU1RSRUFNX0lOSVRJQUwsCi0t ICAgICAgICBhdXhfZGF0YS0+c3RyZWFtX3VzZXJfZGF0YSk7Ci0rICAgICAgICBOR0hUVFAyX1NU UkVBTV9JTklUSUFMLCBhdXhfZGF0YS0+c3RyZWFtX3VzZXJfZGF0YSk7Ci0gCi0gICAgICAgaWYg KHN0cmVhbSA9PSBOVUxMKSB7Ci0gICAgICAgICByZXR1cm4gTkdIVFRQMl9FUlJfTk9NRU07Ci0g ICAgICAgfQotIAotLSAgICAgIC8qIFdlIGRvbid0IGNhbGwgbmdodHRwMl9zZXNzaW9uX2FkanVz dF9jbG9zZWRfc3RyZWFtKCkgaGVyZSwKLS0gICAgICAgICBzaW5jZSB3ZSBkb24ndCBrZWVwIGNs b3NlZCBzdHJlYW0gaW4gY2xpZW50IHNpZGUgKi8KLS0KLSAgICAgICBydiA9IHNlc3Npb25fcHJl ZGljYXRlX3JlcXVlc3RfaGVhZGVyc19zZW5kKHNlc3Npb24sIGl0ZW0pOwotICAgICAgIGlmIChy diAhPSAwKSB7Ci0gICAgICAgICByZXR1cm4gcnY7Ci1AQCAtMjY2Miw4ICsyMjkzLDYgQEAgc3Rh dGljIGludCBzZXNzaW9uX3ByZXBfZnJhbWUobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotIAot IG5naHR0cDJfb3V0Ym91bmRfaXRlbSAqCi0gbmdodHRwMl9zZXNzaW9uX2dldF9uZXh0X29iX2l0 ZW0obmdodHRwMl9zZXNzaW9uICpzZXNzaW9uKSB7Ci0tICBuZ2h0dHAyX291dGJvdW5kX2l0ZW0g Kml0ZW07Ci0tCi0gICBpZiAobmdodHRwMl9vdXRib3VuZF9xdWV1ZV90b3AoJnNlc3Npb24tPm9i X3VyZ2VudCkpIHsKLSAgICAgcmV0dXJuIG5naHR0cDJfb3V0Ym91bmRfcXVldWVfdG9wKCZzZXNz aW9uLT5vYl91cmdlbnQpOwotICAgfQotQEAgLTI2NzksMTEgKzIzMDgsNiBAQCBuZ2h0dHAyX3Nl c3Npb25fZ2V0X25leHRfb2JfaXRlbShuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24pIHsKLSAgIH0K LSAKLSAgIGlmIChzZXNzaW9uLT5yZW1vdGVfd2luZG93X3NpemUgPiAwKSB7Ci0tICAgIGl0ZW0g PSBuZ2h0dHAyX3N0cmVhbV9uZXh0X291dGJvdW5kX2l0ZW0oJnNlc3Npb24tPnJvb3QpOwotLSAg ICBpZiAoaXRlbSkgewotLSAgICAgIHJldHVybiBpdGVtOwotLSAgICB9Ci0tCi0gICAgIHJldHVy biBzZXNzaW9uX3NjaGVkX2dldF9uZXh0X291dGJvdW5kX2l0ZW0oc2Vzc2lvbik7Ci0gICB9Ci0g Ci1AQCAtMjcxOCwxMSArMjM0Miw2IEBAIG5naHR0cDJfc2Vzc2lvbl9wb3BfbmV4dF9vYl9pdGVt KG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbikgewotICAgfQotIAotICAgaWYgKHNlc3Npb24tPnJl bW90ZV93aW5kb3dfc2l6ZSA+IDApIHsKLS0gICAgaXRlbSA9IG5naHR0cDJfc3RyZWFtX25leHRf b3V0Ym91bmRfaXRlbSgmc2Vzc2lvbi0+cm9vdCk7Ci0tICAgIGlmIChpdGVtKSB7Ci0tICAgICAg cmV0dXJuIGl0ZW07Ci0tICAgIH0KLS0KLSAgICAgcmV0dXJuIHNlc3Npb25fc2NoZWRfZ2V0X25l eHRfb3V0Ym91bmRfaXRlbShzZXNzaW9uKTsKLSAgIH0KLSAKLUBAIC0yNzgxLDcgKzI0MDAsNiBA QCBzdGF0aWMgaW50IGZpbmRfc3RyZWFtX29uX2dvYXdheV9mdW5jKHZvaWQgKmVudHJ5LCB2b2lk ICpwdHIpIHsKLSAgICAgICAgbmdodHRwMl9zZXNzaW9uX2Nsb3NlX3N0cmVhbSgpIGluc2lkZSBu Z2h0dHAyX21hcF9lYWNoKCkuCi0gICAgICAgIFJldXNlIGNsb3NlZF9uZXh0IG1lbWJlci4uIGJh ZCBjaG9pY2U/ICovCi0gICAgIGFzc2VydChzdHJlYW0tPmNsb3NlZF9uZXh0ID09IE5VTEwpOwot LSAgICBhc3NlcnQoc3RyZWFtLT5jbG9zZWRfcHJldiA9PSBOVUxMKTsKLSAKLSAgICAgaWYgKGFy Zy0+aGVhZCkgewotICAgICAgIHN0cmVhbS0+Y2xvc2VkX25leHQgPSBhcmctPmhlYWQ7Ci1AQCAt MjgzNywxMSArMjQ1NSw2IEBAIHN0YXRpYyB2b2lkIHNlc3Npb25fcmVzY2hlZHVsZV9zdHJlYW0o bmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbmdodHRwMl9zdHJlYW0gKnN0cmVhbSkgewotICAgc3RyZWFtLT5sYXN0X3dyaXRl bGVuID0gc3RyZWFtLT5pdGVtLT5mcmFtZS5oZC5sZW5ndGg7Ci0gCi0tICBpZiAoIShzdHJlYW0t PmZsYWdzICYgTkdIVFRQMl9TVFJFQU1fRkxBR19OT19SRkM3NTQwX1BSSU9SSVRJRVMpKSB7Ci0t ICAgIG5naHR0cDJfc3RyZWFtX3Jlc2NoZWR1bGUoc3RyZWFtKTsKLS0gICAgcmV0dXJuOwotLSAg fQotLQotICAgaWYgKCFzZXNzaW9uLT5zZXJ2ZXIpIHsKLSAgICAgcmV0dXJuOwotICAgfQotQEAg LTMwMjAsMzcgKzI2MzMsNiBAQCBzdGF0aWMgaW50IHNlc3Npb25fYWZ0ZXJfZnJhbWVfc2VudDEo bmdodHRwMl9zZXNzaW9uICpzZXNzaW9uKSB7Ci0gICAgIH0KLSAgIH0KLSAgIGNhc2UgTkdIVFRQ Ml9QUklPUklUWToKLS0gICAgaWYgKHNlc3Npb24tPnNlcnZlciB8fCBzZXNzaW9uLT5wZW5kaW5n X25vX3JmYzc1NDBfcHJpb3JpdGllcyA9PSAxKSB7Ci0tICAgICAgcmV0dXJuIDA7Ci0tICAgIH0K LS0KLS0gICAgc3RyZWFtID0gbmdodHRwMl9zZXNzaW9uX2dldF9zdHJlYW1fcmF3KHNlc3Npb24s IGZyYW1lLT5oZC5zdHJlYW1faWQpOwotLQotLSAgICBpZiAoIXN0cmVhbSkgewotLSAgICAgIGlm ICghc2Vzc2lvbl9kZXRlY3RfaWRsZV9zdHJlYW0oc2Vzc2lvbiwgZnJhbWUtPmhkLnN0cmVhbV9p ZCkpIHsKLS0gICAgICAgIHJldHVybiAwOwotLSAgICAgIH0KLS0KLS0gICAgICBzdHJlYW0gPSBu Z2h0dHAyX3Nlc3Npb25fb3Blbl9zdHJlYW0oCi0tICAgICAgICBzZXNzaW9uLCBmcmFtZS0+aGQu c3RyZWFtX2lkLCBOR0hUVFAyX0ZMQUdfTk9ORSwKLS0gICAgICAgICZmcmFtZS0+cHJpb3JpdHku cHJpX3NwZWMsIE5HSFRUUDJfU1RSRUFNX0lETEUsIE5VTEwpOwotLSAgICAgIGlmICghc3RyZWFt KSB7Ci0tICAgICAgICByZXR1cm4gTkdIVFRQMl9FUlJfTk9NRU07Ci0tICAgICAgfQotLSAgICB9 IGVsc2UgewotLSAgICAgIHJ2ID0gbmdodHRwMl9zZXNzaW9uX3JlcHJpb3JpdGl6ZV9zdHJlYW0o c2Vzc2lvbiwgc3RyZWFtLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJmZyYW1lLT5wcmlvcml0eS5wcmlfc3BlYyk7Ci0tICAgICAgaWYgKG5naHR0cDJf aXNfZmF0YWwocnYpKSB7Ci0tICAgICAgICByZXR1cm4gcnY7Ci0tICAgICAgfQotLSAgICB9Ci0t Ci0tICAgIHJ2ID0gbmdodHRwMl9zZXNzaW9uX2FkanVzdF9pZGxlX3N0cmVhbShzZXNzaW9uKTsK LS0KLS0gICAgaWYgKG5naHR0cDJfaXNfZmF0YWwocnYpKSB7Ci0tICAgICAgcmV0dXJuIHJ2Owot LSAgICB9Ci0tCi0gICAgIHJldHVybiAwOwotICAgY2FzZSBOR0hUVFAyX1JTVF9TVFJFQU06Ci0g ICAgIHJ2ID0gbmdodHRwMl9zZXNzaW9uX2Nsb3NlX3N0cmVhbShzZXNzaW9uLCBmcmFtZS0+aGQu c3RyZWFtX2lkLAotQEAgLTMyMzksMTQgKzI4MjEsNiBAQCBzdGF0aWMgbmdodHRwMl9zc2l6ZSBu Z2h0dHAyX3Nlc3Npb25fbWVtX3NlbmRfaW50ZXJuYWwobmdodHRwMl9zZXNzaW9uICpzZXNzaW9u LAotICAgYW9iID0gJnNlc3Npb24tPmFvYjsKLSAgIGZyYW1lYnVmcyA9ICZhb2ItPmZyYW1lYnVm czsKLSAKLS0gIC8qIFdlIG1heSBoYXZlIGlkbGUgc3RyZWFtcyBtb3JlIHRoYW4gd2UgZXhwZWN0 IChlLmcuLAotLSAgICAgbmdodHRwMl9zZXNzaW9uX2NoYW5nZV9zdHJlYW1fcHJpb3JpdHkoKSBv cgotLSAgICAgbmdodHRwMl9zZXNzaW9uX2NyZWF0ZV9pZGxlX3N0cmVhbSgpKS4gIEFkanVzdCB0 aGVtIGhlcmUuICovCi0tICBydiA9IG5naHR0cDJfc2Vzc2lvbl9hZGp1c3RfaWRsZV9zdHJlYW0o c2Vzc2lvbik7Ci0tICBpZiAobmdodHRwMl9pc19mYXRhbChydikpIHsKLS0gICAgcmV0dXJuIHJ2 OwotLSAgfQotLQotICAgZm9yICg7OykgewotICAgICBzd2l0Y2ggKGFvYi0+c3RhdGUpIHsKLSAg ICAgY2FzZSBOR0hUVFAyX09CX1BPUF9JVEVNOiB7Ci1AQCAtMzY5OCw3ICszMjcyLDkgQEAgc3Rh dGljIGludCBzZXNzaW9uX2NhbGxfb25faW52YWxpZF9oZWFkZXIobmdodHRwMl9zZXNzaW9uICpz ZXNzaW9uLAotICAgICAgIHNlc3Npb24sIGZyYW1lLCBudi0+bmFtZS0+YmFzZSwgbnYtPm5hbWUt PmxlbiwgbnYtPnZhbHVlLT5iYXNlLAotICAgICAgIG52LT52YWx1ZS0+bGVuLCBudi0+ZmxhZ3Ms IHNlc3Npb24tPnVzZXJfZGF0YSk7Ci0gICB9IGVsc2UgewotLSAgICByZXR1cm4gTkdIVFRQMl9F UlJfVEVNUE9SQUxfQ0FMTEJBQ0tfRkFJTFVSRTsKLSsgICAgLyogSWYgYm90aCBjYWxsYmFja3Mg YXJlIG5vdCBzZXQsIHRoZSBpbnZhbGlkIGZpZWxkIG52IGlzCi0rICAgICAgIGlnbm9yZWQuICov Ci0rICAgIHJldHVybiAwOwotICAgfQotIAotICAgaWYgKHJ2ID09IE5HSFRUUDJfRVJSX1BBVVNF IHx8IHJ2ID09IE5HSFRUUDJfRVJSX1RFTVBPUkFMX0NBTExCQUNLX0ZBSUxVUkUpIHsKLUBAIC0z NzgzLDYgKzMzNTksMTAgQEAgc3RhdGljIHVpbnQzMl90IGdldF9lcnJvcl9jb2RlX2Zyb21fbGli X2Vycm9yX2NvZGUoaW50IGxpYl9lcnJvcl9jb2RlKSB7Ci0gICBjYXNlIE5HSFRUUDJfRVJSX0hU VFBfSEVBREVSOgotICAgY2FzZSBOR0hUVFAyX0VSUl9IVFRQX01FU1NBR0lORzoKLSAgICAgcmV0 dXJuIE5HSFRUUDJfUFJPVE9DT0xfRVJST1I7Ci0rICBjYXNlIE5HSFRUUDJfRVJSX0lOVEVSTkFM OgotKyAgICByZXR1cm4gTkdIVFRQMl9JTlRFUk5BTF9FUlJPUjsKLSsgIGNhc2UgTkdIVFRQMl9F UlJfUFVTSF9DQU5DRUw6Ci0rICAgIHJldHVybiBOR0hUVFAyX0NBTkNFTDsKLSAgIGRlZmF1bHQ6 Ci0gICAgIHJldHVybiBOR0hUVFAyX0lOVEVSTkFMX0VSUk9SOwotICAgfQotQEAgLTM4MDksMTcg KzMzODksMzIgQEAgc3RhdGljIGludCBzZXNzaW9uX2NhbGxfb25faW52YWxpZF9mcmFtZV9yZWN2 X2NhbGxiYWNrKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAgIHJldHVybiAwOwotIH0KLSAK LStzdGF0aWMgaW50IHNlc3Npb25fdXBkYXRlX2dsaXRjaF9yYXRlbGltKG5naHR0cDJfc2Vzc2lv biAqc2Vzc2lvbikgewotKyAgaWYgKHNlc3Npb24tPmdvYXdheV9mbGFncyAmIE5HSFRUUDJfR09B V0FZX1RFUk1fT05fU0VORCkgewotKyAgICByZXR1cm4gMDsKLSsgIH0KLSsKLSsgIG5naHR0cDJf cmF0ZWxpbV91cGRhdGUoJnNlc3Npb24tPmdsaXRjaF9yYXRlbGltLCBuZ2h0dHAyX3RpbWVfbm93 X3NlYygpKTsKLSsKLSsgIGlmIChuZ2h0dHAyX3JhdGVsaW1fZHJhaW4oJnNlc3Npb24tPmdsaXRj aF9yYXRlbGltLCAxKSA9PSAwKSB7Ci0rICAgIHJldHVybiAwOwotKyAgfQotKwotKyAgcmV0dXJu IG5naHR0cDJfc2Vzc2lvbl90ZXJtaW5hdGVfc2Vzc2lvbihzZXNzaW9uLCBOR0hUVFAyX0VOSEFO Q0VfWU9VUl9DQUxNKTsKLSt9Ci0rCi0gc3RhdGljIGludCBzZXNzaW9uX2hhbmRsZV9pbnZhbGlk X3N0cmVhbTIobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgc3RyZWFtX2lkLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5naHR0cDJfZnJhbWUgKmZyYW1lLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaWJfZXJyb3JfY29kZSkg ewotICAgaW50IHJ2OwotKwotICAgcnYgPSBuZ2h0dHAyX3Nlc3Npb25fYWRkX3JzdF9zdHJlYW0o Ci0gICAgIHNlc3Npb24sIHN0cmVhbV9pZCwgZ2V0X2Vycm9yX2NvZGVfZnJvbV9saWJfZXJyb3Jf Y29kZShsaWJfZXJyb3JfY29kZSkpOwotICAgaWYgKHJ2ICE9IDApIHsKLSAgICAgcmV0dXJuIHJ2 OwotICAgfQotLSAgaWYgKHNlc3Npb24tPmNhbGxiYWNrcy5vbl9pbnZhbGlkX2ZyYW1lX3JlY3Zf Y2FsbGJhY2spIHsKLSsgIGlmIChmcmFtZSAmJiBzZXNzaW9uLT5jYWxsYmFja3Mub25faW52YWxp ZF9mcmFtZV9yZWN2X2NhbGxiYWNrKSB7Ci0gICAgIGlmIChzZXNzaW9uLT5jYWxsYmFja3Mub25f aW52YWxpZF9mcmFtZV9yZWN2X2NhbGxiYWNrKAotICAgICAgICAgICBzZXNzaW9uLCBmcmFtZSwg bGliX2Vycm9yX2NvZGUsIHNlc3Npb24tPnVzZXJfZGF0YSkgIT0gMCkgewotICAgICAgIHJldHVy biBOR0hUVFAyX0VSUl9DQUxMQkFDS19GQUlMVVJFOwotQEAgLTM5NzQsNyArMzU2OSwyOSBAQCBz dGF0aWMgaW50IGluZmxhdGVfaGVhZGVyX2Jsb2NrKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwg bmdodHRwMl9mcmFtZSAqZnJhbWUsCi0gCi0gICAgICAgICAgICAgcnYyID0gc2Vzc2lvbl9jYWxs X29uX2ludmFsaWRfaGVhZGVyKHNlc3Npb24sIGZyYW1lLCAmbnYpOwotICAgICAgICAgICAgIGlm IChydjIgPT0gTkdIVFRQMl9FUlJfVEVNUE9SQUxfQ0FMTEJBQ0tfRkFJTFVSRSkgewotLSAgICAg ICAgICAgICAgcnYgPSBOR0hUVFAyX0VSUl9IVFRQX0hFQURFUjsKLSsgICAgICAgICAgICAgIERF QlVHRigicmVjdjogSFRUUCBlcnJvcjogdHlwZT0ldSwgaWQ9JWQsIGhlYWRlciAlLipzOiAlLipz XG4iLAotKyAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5oZC50eXBlLCBmcmFtZS0+aGQuc3Ry ZWFtX2lkLCAoaW50KW52Lm5hbWUtPmxlbiwKLSsgICAgICAgICAgICAgICAgICAgICBudi5uYW1l LT5iYXNlLCAoaW50KW52LnZhbHVlLT5sZW4sIG52LnZhbHVlLT5iYXNlKTsKLSsKLSsgICAgICAg ICAgICAgIHJ2ID0gc2Vzc2lvbl9jYWxsX2Vycm9yX2NhbGxiYWNrKAotKyAgICAgICAgICAgICAg ICBzZXNzaW9uLCBOR0hUVFAyX0VSUl9IVFRQX0hFQURFUiwKLSsgICAgICAgICAgICAgICAgIklu dmFsaWQgSFRUUCBoZWFkZXIgZmllbGQgd2FzIHJlY2VpdmVkOiBmcmFtZSB0eXBlOiAiCi0rICAg ICAgICAgICAgICAgICIldSwgc3RyZWFtOiAlZCwgbmFtZTogWyUuKnNdLCB2YWx1ZTogWyUuKnNd IiwKLSsgICAgICAgICAgICAgICAgZnJhbWUtPmhkLnR5cGUsIGZyYW1lLT5oZC5zdHJlYW1faWQs IChpbnQpbnYubmFtZS0+bGVuLAotKyAgICAgICAgICAgICAgICBudi5uYW1lLT5iYXNlLCAoaW50 KW52LnZhbHVlLT5sZW4sIG52LnZhbHVlLT5iYXNlKTsKLSsKLSsgICAgICAgICAgICAgIGlmIChu Z2h0dHAyX2lzX2ZhdGFsKHJ2KSkgewotKyAgICAgICAgICAgICAgICByZXR1cm4gcnY7Ci0rICAg ICAgICAgICAgICB9Ci0rCi0rICAgICAgICAgICAgICBydiA9IHNlc3Npb25faGFuZGxlX2ludmFs aWRfc3RyZWFtMigKLSsgICAgICAgICAgICAgICAgc2Vzc2lvbiwgc3ViamVjdF9zdHJlYW0tPnN0 cmVhbV9pZCwgZnJhbWUsCi0rICAgICAgICAgICAgICAgIE5HSFRUUDJfRVJSX0hUVFBfSEVBREVS KTsKLSsgICAgICAgICAgICAgIGlmIChuZ2h0dHAyX2lzX2ZhdGFsKHJ2KSkgewotKyAgICAgICAg ICAgICAgICByZXR1cm4gcnY7Ci0rICAgICAgICAgICAgICB9Ci0rCi0rICAgICAgICAgICAgICBy ZXR1cm4gTkdIVFRQMl9FUlJfVEVNUE9SQUxfQ0FMTEJBQ0tfRkFJTFVSRTsKLSAgICAgICAgICAg ICB9IGVsc2UgewotICAgICAgICAgICAgICAgaWYgKHJ2MiAhPSAwKSB7Ci0gICAgICAgICAgICAg ICAgIHJldHVybiBydjI7Ci1AQCAtNDAxNCwxMyArMzYzMSw4IEBAIHN0YXRpYyBpbnQgaW5mbGF0 ZV9oZWFkZXJfYmxvY2sobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLCBuZ2h0dHAyX2ZyYW1lICpm cmFtZSwKLSAgICAgICAgICAgICAgIHJldHVybiBydjsKLSAgICAgICAgICAgICB9Ci0gCi0tICAg ICAgICAgICAgcnYgPQotLSAgICAgICAgICAgICAgc2Vzc2lvbl9oYW5kbGVfaW52YWxpZF9zdHJl YW0yKHNlc3Npb24sIHN1YmplY3Rfc3RyZWFtLT5zdHJlYW1faWQsCi0tICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUsIE5HSFRUUDJfRVJSX0hUVFBfSEVB REVSKTsKLS0gICAgICAgICAgICBpZiAobmdodHRwMl9pc19mYXRhbChydikpIHsKLS0gICAgICAg ICAgICAgIHJldHVybiBydjsKLS0gICAgICAgICAgICB9Ci0tICAgICAgICAgICAgcmV0dXJuIE5H SFRUUDJfRVJSX1RFTVBPUkFMX0NBTExCQUNLX0ZBSUxVUkU7Ci0rICAgICAgICAgICAgcmV0dXJu IG5naHR0cDJfc2Vzc2lvbl90ZXJtaW5hdGVfc2Vzc2lvbihzZXNzaW9uLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkdIVFRQMl9QUk9UT0NP TF9FUlJPUik7Ci0gICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgICAgIGlmIChydiA9PSAw KSB7Ci1AQCAtNDA2NCw3ICszNjc2LDYgQEAgc3RhdGljIGludCBzZXNzaW9uX2VuZF9zdHJlYW1f aGVhZGVyc19yZWNlaXZlZChuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0gCi0gICBpZiAoc2Vz c2lvbi0+c2VydmVyICYmIHNlc3Npb25fZW5mb3JjZV9odHRwX21lc3NhZ2luZyhzZXNzaW9uKSAm JgotICAgICAgIGZyYW1lLT5oZWFkZXJzLmNhdCA9PSBOR0hUVFAyX0hDQVRfUkVRVUVTVCAmJgot LSAgICAgIChzdHJlYW0tPmZsYWdzICYgTkdIVFRQMl9TVFJFQU1fRkxBR19OT19SRkM3NTQwX1BS SU9SSVRJRVMpICYmCi0gICAgICAgIShzdHJlYW0tPmZsYWdzICYgTkdIVFRQMl9TVFJFQU1fRkxB R19JR05PUkVfQ0xJRU5UX1BSSU9SSVRJRVMpICYmCi0gICAgICAgKHN0cmVhbS0+aHR0cF9mbGFn cyAmIE5HSFRUUDJfSFRUUF9GTEFHX1BSSU9SSVRZKSkgewotICAgICBydiA9IHNlc3Npb25fdXBk YXRlX3N0cmVhbV9wcmlvcml0eShzZXNzaW9uLCBzdHJlYW0sIHN0cmVhbS0+aHR0cF9leHRwcmkp OwotQEAgLTQxMzQsMjcgKzM3NDUsNyBAQCBzdGF0aWMgaW50IHNlc3Npb25fYWZ0ZXJfaGVhZGVy X2Jsb2NrX3JlY2VpdmVkKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbikgewotICAgICAgIH0KLSAg ICAgfQotICAgICBpZiAocnYgIT0gMCkgewotLSAgICAgIGludDMyX3Qgc3RyZWFtX2lkOwotLQot LSAgICAgIGlmIChmcmFtZS0+aGQudHlwZSA9PSBOR0hUVFAyX1BVU0hfUFJPTUlTRSkgewotLSAg ICAgICAgc3RyZWFtX2lkID0gZnJhbWUtPnB1c2hfcHJvbWlzZS5wcm9taXNlZF9zdHJlYW1faWQ7 Ci0tICAgICAgfSBlbHNlIHsKLS0gICAgICAgIHN0cmVhbV9pZCA9IGZyYW1lLT5oZC5zdHJlYW1f aWQ7Ci0tICAgICAgfQotLQotLSAgICAgIHJ2ID0gc2Vzc2lvbl9oYW5kbGVfaW52YWxpZF9zdHJl YW0yKHNlc3Npb24sIHN0cmVhbV9pZCwgZnJhbWUsCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTkdIVFRQMl9FUlJfSFRUUF9NRVNTQUdJTkcpOwotLSAgICAgIGlm IChuZ2h0dHAyX2lzX2ZhdGFsKHJ2KSkgewotLSAgICAgICAgcmV0dXJuIHJ2OwotLSAgICAgIH0K LS0KLS0gICAgICBpZiAoZnJhbWUtPmhkLnR5cGUgPT0gTkdIVFRQMl9IRUFERVJTICYmCi0tICAg ICAgICAgIChmcmFtZS0+aGQuZmxhZ3MgJiBOR0hUVFAyX0ZMQUdfRU5EX1NUUkVBTSkpIHsKLS0g ICAgICAgIG5naHR0cDJfc3RyZWFtX3NodXRkb3duKHN0cmVhbSwgTkdIVFRQMl9TSFVUX1JEKTsK LS0gICAgICAgIC8qIERvbid0IGNhbGwgbmdodHRwMl9zZXNzaW9uX2Nsb3NlX3N0cmVhbV9pZl9z aHV0X3Jkd3IKLS0gICAgICAgICAgIGJlY2F1c2UgUlNUX1NUUkVBTSBoYXMgYmVlbiBzdWJtaXR0 ZWQuICovCi0tICAgICAgfQotLSAgICAgIHJldHVybiAwOwotKyAgICAgIHJldHVybiBuZ2h0dHAy X3Nlc3Npb25fdGVybWluYXRlX3Nlc3Npb24oc2Vzc2lvbiwgTkdIVFRQMl9QUk9UT0NPTF9FUlJP Uik7Ci0gICAgIH0KLSAgIH0KLSAKLUBAIC00MjUzLDE4ICszODQ0LDEzIEBAIGludCBuZ2h0dHAy X3Nlc3Npb25fb25fcmVxdWVzdF9oZWFkZXJzX3JlY2VpdmVkKG5naHR0cDJfc2Vzc2lvbiAqc2Vz c2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TkdIVFRQMl9FUlJfUkVGVVNFRF9TVFJFQU0pOwotICAgfQotIAotLSAgc3RyZWFtID0gbmdodHRw Ml9zZXNzaW9uX29wZW5fc3RyZWFtKAotLSAgICBzZXNzaW9uLCBmcmFtZS0+aGQuc3RyZWFtX2lk LCBOR0hUVFAyX1NUUkVBTV9GTEFHX05PTkUsCi0tICAgICZmcmFtZS0+aGVhZGVycy5wcmlfc3Bl YywgTkdIVFRQMl9TVFJFQU1fT1BFTklORywgTlVMTCk7Ci0rICBzdHJlYW0gPSBuZ2h0dHAyX3Nl c3Npb25fb3Blbl9zdHJlYW0oc2Vzc2lvbiwgZnJhbWUtPmhkLnN0cmVhbV9pZCwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOR0hUVFAyX1NUUkVBTV9GTEFHX05PTkUs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkdIVFRQMl9TVFJFQU1f T1BFTklORywgTlVMTCk7Ci0gICBpZiAoIXN0cmVhbSkgewotICAgICByZXR1cm4gTkdIVFRQMl9F UlJfTk9NRU07Ci0gICB9Ci0gCi0tICBydiA9IG5naHR0cDJfc2Vzc2lvbl9hZGp1c3RfY2xvc2Vk X3N0cmVhbShzZXNzaW9uKTsKLS0gIGlmIChuZ2h0dHAyX2lzX2ZhdGFsKHJ2KSkgewotLSAgICBy ZXR1cm4gcnY7Ci0tICB9Ci0tCi0gICBzZXNzaW9uLT5sYXN0X3Byb2Nfc3RyZWFtX2lkID0gc2Vz c2lvbi0+bGFzdF9yZWN2X3N0cmVhbV9pZDsKLSAKLSAgIHJ2ID0gc2Vzc2lvbl9jYWxsX29uX2Jl Z2luX2hlYWRlcnMoc2Vzc2lvbiwgZnJhbWUpOwotQEAgLTQzOTYsMTA0ICszOTgyLDMzIEBAIGlu dCBuZ2h0dHAyX3Nlc3Npb25fb25faGVhZGVyc19yZWNlaXZlZChuZ2h0dHAyX3Nlc3Npb24gKnNl c3Npb24sCi0gICByZXR1cm4gTkdIVFRQMl9FUlJfSUdOX0hFQURFUl9CTE9DSzsKLSB9Ci0gCi0t c3RhdGljIGludCBzZXNzaW9uX3Byb2Nlc3NfaGVhZGVyc19mcmFtZShuZ2h0dHAyX3Nlc3Npb24g KnNlc3Npb24pIHsKLS0gIG5naHR0cDJfaW5ib3VuZF9mcmFtZSAqaWZyYW1lID0gJnNlc3Npb24t PmlmcmFtZTsKLS0gIG5naHR0cDJfZnJhbWUgKmZyYW1lID0gJmlmcmFtZS0+ZnJhbWU7Ci0tICBu Z2h0dHAyX3N0cmVhbSAqc3RyZWFtOwotLQotLSAgbmdodHRwMl9mcmFtZV91bnBhY2tfaGVhZGVy c19wYXlsb2FkKCZmcmFtZS0+aGVhZGVycywgaWZyYW1lLT5zYnVmLnBvcyk7Ci0tCi0tICBzdHJl YW0gPSBuZ2h0dHAyX3Nlc3Npb25fZ2V0X3N0cmVhbShzZXNzaW9uLCBmcmFtZS0+aGQuc3RyZWFt X2lkKTsKLS0gIGlmICghc3RyZWFtKSB7Ci0tICAgIGZyYW1lLT5oZWFkZXJzLmNhdCA9IE5HSFRU UDJfSENBVF9SRVFVRVNUOwotLSAgICByZXR1cm4gbmdodHRwMl9zZXNzaW9uX29uX3JlcXVlc3Rf aGVhZGVyc19yZWNlaXZlZChzZXNzaW9uLCBmcmFtZSk7Ci0tICB9Ci0tCi0tICBpZiAoc3RyZWFt LT5zdGF0ZSA9PSBOR0hUVFAyX1NUUkVBTV9SRVNFUlZFRCkgewotLSAgICBmcmFtZS0+aGVhZGVy cy5jYXQgPSBOR0hUVFAyX0hDQVRfUFVTSF9SRVNQT05TRTsKLS0gICAgcmV0dXJuIG5naHR0cDJf c2Vzc2lvbl9vbl9wdXNoX3Jlc3BvbnNlX2hlYWRlcnNfcmVjZWl2ZWQoc2Vzc2lvbiwgZnJhbWUs Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cmVhbSk7Ci0tICB9Ci0tCi0tICBpZiAoc3RyZWFtLT5zdGF0ZSA9PSBOR0hUVFAy X1NUUkVBTV9PUEVOSU5HICYmCi0tICAgICAgbmdodHRwMl9zZXNzaW9uX2lzX215X3N0cmVhbV9p ZChzZXNzaW9uLCBmcmFtZS0+aGQuc3RyZWFtX2lkKSkgewotLSAgICBmcmFtZS0+aGVhZGVycy5j YXQgPSBOR0hUVFAyX0hDQVRfUkVTUE9OU0U7Ci0tICAgIHJldHVybiBuZ2h0dHAyX3Nlc3Npb25f b25fcmVzcG9uc2VfaGVhZGVyc19yZWNlaXZlZChzZXNzaW9uLCBmcmFtZSwgc3RyZWFtKTsKLS0g IH0KLS0KLS0gIGZyYW1lLT5oZWFkZXJzLmNhdCA9IE5HSFRUUDJfSENBVF9IRUFERVJTOwotLSAg cmV0dXJuIG5naHR0cDJfc2Vzc2lvbl9vbl9oZWFkZXJzX3JlY2VpdmVkKHNlc3Npb24sIGZyYW1l LCBzdHJlYW0pOwotLX0KLS0KLS1pbnQgbmdodHRwMl9zZXNzaW9uX29uX3ByaW9yaXR5X3JlY2Vp dmVkKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG5naHR0cDJfZnJhbWUgKmZyYW1lKSB7Ci0tICBpbnQgcnY7Ci0tICBu Z2h0dHAyX3N0cmVhbSAqc3RyZWFtOwotLQotLSAgYXNzZXJ0KCFzZXNzaW9uX25vX3JmYzc1NDBf cHJpX25vX2ZhbGxiYWNrKHNlc3Npb24pKTsKLS0KLS0gIGlmIChmcmFtZS0+aGQuc3RyZWFtX2lk ID09IDApIHsKLS0gICAgcmV0dXJuIHNlc3Npb25faGFuZGxlX2ludmFsaWRfY29ubmVjdGlvbihz ZXNzaW9uLCBmcmFtZSwgTkdIVFRQMl9FUlJfUFJPVE8sCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIlBSSU9SSVRZOiBzdHJlYW1faWQgPT0gMCIpOwotLSAg fQotLQotLSAgaWYgKGZyYW1lLT5wcmlvcml0eS5wcmlfc3BlYy5zdHJlYW1faWQgPT0gZnJhbWUt PmhkLnN0cmVhbV9pZCkgewotLSAgICByZXR1cm4gbmdodHRwMl9zZXNzaW9uX3Rlcm1pbmF0ZV9z ZXNzaW9uX3dpdGhfcmVhc29uKAotLSAgICAgIHNlc3Npb24sIE5HSFRUUDJfUFJPVE9DT0xfRVJS T1IsICJkZXBlbmQgb24gaXRzZWxmIik7Ci0tICB9Ci0tCi0tICBpZiAoIXNlc3Npb24tPnNlcnZl cikgewotLSAgICAvKiBSZS1wcmlvcml0aXphdGlvbiB3b3JrcyBvbmx5IGluIHNlcnZlciAqLwot LSAgICByZXR1cm4gc2Vzc2lvbl9jYWxsX29uX2ZyYW1lX3JlY2VpdmVkKHNlc3Npb24sIGZyYW1l KTsKLS0gIH0KLS0KLS0gIHN0cmVhbSA9IG5naHR0cDJfc2Vzc2lvbl9nZXRfc3RyZWFtX3Jhdyhz ZXNzaW9uLCBmcmFtZS0+aGQuc3RyZWFtX2lkKTsKLS0KLS0gIGlmICghc3RyZWFtKSB7Ci0tICAg IC8qIFBSSU9SSVRZIGFnYWluc3QgaWRsZSBzdHJlYW0gY2FuIGNyZWF0ZSBhbmNob3Igbm9kZSBp bgotLSAgICAgICBkZXBlbmRlbmN5IHRyZWUuICovCi0tICAgIGlmICghc2Vzc2lvbl9kZXRlY3Rf aWRsZV9zdHJlYW0oc2Vzc2lvbiwgZnJhbWUtPmhkLnN0cmVhbV9pZCkpIHsKLS0gICAgICByZXR1 cm4gMDsKLS0gICAgfQotLQotLSAgICBzdHJlYW0gPSBuZ2h0dHAyX3Nlc3Npb25fb3Blbl9zdHJl YW0oCi0tICAgICAgc2Vzc2lvbiwgZnJhbWUtPmhkLnN0cmVhbV9pZCwgTkdIVFRQMl9TVFJFQU1f RkxBR19OT05FLAotLSAgICAgICZmcmFtZS0+cHJpb3JpdHkucHJpX3NwZWMsIE5HSFRUUDJfU1RS RUFNX0lETEUsIE5VTEwpOwotLQotLSAgICBpZiAoc3RyZWFtID09IE5VTEwpIHsKLS0gICAgICBy ZXR1cm4gTkdIVFRQMl9FUlJfTk9NRU07Ci0tICAgIH0KLS0KLS0gICAgcnYgPSBuZ2h0dHAyX3Nl c3Npb25fYWRqdXN0X2lkbGVfc3RyZWFtKHNlc3Npb24pOwotLSAgICBpZiAobmdodHRwMl9pc19m YXRhbChydikpIHsKLS0gICAgICByZXR1cm4gcnY7Ci0tICAgIH0KLS0gIH0gZWxzZSB7Ci0tICAg IHJ2ID0gbmdodHRwMl9zZXNzaW9uX3JlcHJpb3JpdGl6ZV9zdHJlYW0oc2Vzc2lvbiwgc3RyZWFt LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmcmFtZS0+ cHJpb3JpdHkucHJpX3NwZWMpOwotLQotLSAgICBpZiAobmdodHRwMl9pc19mYXRhbChydikpIHsK LS0gICAgICByZXR1cm4gcnY7Ci0tICAgIH0KLS0KLS0gICAgcnYgPSBuZ2h0dHAyX3Nlc3Npb25f YWRqdXN0X2lkbGVfc3RyZWFtKHNlc3Npb24pOwotLSAgICBpZiAobmdodHRwMl9pc19mYXRhbChy dikpIHsKLS0gICAgICByZXR1cm4gcnY7Ci0tICAgIH0KLS0gIH0KLS0KLS0gIHJldHVybiBzZXNz aW9uX2NhbGxfb25fZnJhbWVfcmVjZWl2ZWQoc2Vzc2lvbiwgZnJhbWUpOwotLX0KLS0KLS1zdGF0 aWMgaW50IHNlc3Npb25fcHJvY2Vzc19wcmlvcml0eV9mcmFtZShuZ2h0dHAyX3Nlc3Npb24gKnNl c3Npb24pIHsKLStzdGF0aWMgaW50IHNlc3Npb25fcHJvY2Vzc19oZWFkZXJzX2ZyYW1lKG5naHR0 cDJfc2Vzc2lvbiAqc2Vzc2lvbikgewotICAgbmdodHRwMl9pbmJvdW5kX2ZyYW1lICppZnJhbWUg PSAmc2Vzc2lvbi0+aWZyYW1lOwotICAgbmdodHRwMl9mcmFtZSAqZnJhbWUgPSAmaWZyYW1lLT5m cmFtZTsKLSsgIG5naHR0cDJfc3RyZWFtICpzdHJlYW07Ci0rCi0rICBuZ2h0dHAyX2ZyYW1lX3Vu cGFja19oZWFkZXJzX3BheWxvYWQoJmZyYW1lLT5oZWFkZXJzLCBpZnJhbWUtPnNidWYucG9zKTsK LSsKLSsgIHN0cmVhbSA9IG5naHR0cDJfc2Vzc2lvbl9nZXRfc3RyZWFtKHNlc3Npb24sIGZyYW1l LT5oZC5zdHJlYW1faWQpOwotKyAgaWYgKCFzdHJlYW0pIHsKLSsgICAgZnJhbWUtPmhlYWRlcnMu Y2F0ID0gTkdIVFRQMl9IQ0FUX1JFUVVFU1Q7Ci0rICAgIHJldHVybiBuZ2h0dHAyX3Nlc3Npb25f b25fcmVxdWVzdF9oZWFkZXJzX3JlY2VpdmVkKHNlc3Npb24sIGZyYW1lKTsKLSsgIH0KLSAKLS0g IGFzc2VydCghc2Vzc2lvbl9ub19yZmM3NTQwX3ByaV9ub19mYWxsYmFjayhzZXNzaW9uKSk7Ci0r ICBpZiAoc3RyZWFtLT5zdGF0ZSA9PSBOR0hUVFAyX1NUUkVBTV9SRVNFUlZFRCkgewotKyAgICBm cmFtZS0+aGVhZGVycy5jYXQgPSBOR0hUVFAyX0hDQVRfUFVTSF9SRVNQT05TRTsKLSsgICAgcmV0 dXJuIG5naHR0cDJfc2Vzc2lvbl9vbl9wdXNoX3Jlc3BvbnNlX2hlYWRlcnNfcmVjZWl2ZWQoc2Vz c2lvbiwgZnJhbWUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cmVhbSk7Ci0rICB9Ci0gCi0tICBuZ2h0dHAyX2ZyYW1lX3Vu cGFja19wcmlvcml0eV9wYXlsb2FkKCZmcmFtZS0+cHJpb3JpdHksIGlmcmFtZS0+c2J1Zi5wb3Mp OwotKyAgaWYgKHN0cmVhbS0+c3RhdGUgPT0gTkdIVFRQMl9TVFJFQU1fT1BFTklORyAmJgotKyAg ICAgIG5naHR0cDJfc2Vzc2lvbl9pc19teV9zdHJlYW1faWQoc2Vzc2lvbiwgZnJhbWUtPmhkLnN0 cmVhbV9pZCkpIHsKLSsgICAgZnJhbWUtPmhlYWRlcnMuY2F0ID0gTkdIVFRQMl9IQ0FUX1JFU1BP TlNFOwotKyAgICByZXR1cm4gbmdodHRwMl9zZXNzaW9uX29uX3Jlc3BvbnNlX2hlYWRlcnNfcmVj ZWl2ZWQoc2Vzc2lvbiwgZnJhbWUsIHN0cmVhbSk7Ci0rICB9Ci0gCi0tICByZXR1cm4gbmdodHRw Ml9zZXNzaW9uX29uX3ByaW9yaXR5X3JlY2VpdmVkKHNlc3Npb24sIGZyYW1lKTsKLSsgIGZyYW1l LT5oZWFkZXJzLmNhdCA9IE5HSFRUUDJfSENBVF9IRUFERVJTOwotKyAgcmV0dXJuIG5naHR0cDJf c2Vzc2lvbl9vbl9oZWFkZXJzX3JlY2VpdmVkKHNlc3Npb24sIGZyYW1lLCBzdHJlYW0pOwotIH0K LSAKLSBzdGF0aWMgaW50IHNlc3Npb25fdXBkYXRlX3N0cmVhbV9yZXNldF9yYXRlbGltKG5naHR0 cDJfc2Vzc2lvbiAqc2Vzc2lvbikgewotQEAgLTQ1NjYsOCArNDA4MSw3IEBAIHN0YXRpYyBpbnQg dXBkYXRlX3JlbW90ZV9pbml0aWFsX3dpbmRvd19zaXplX2Z1bmModm9pZCAqZW50cnksIHZvaWQg KnB0cikgewotICAgcnYgPSBuZ2h0dHAyX3N0cmVhbV91cGRhdGVfcmVtb3RlX2luaXRpYWxfd2lu ZG93X3NpemUoCi0gICAgIHN0cmVhbSwgYXJnLT5uZXdfd2luZG93X3NpemUsIGFyZy0+b2xkX3dp bmRvd19zaXplKTsKLSAgIGlmIChydiAhPSAwKSB7Ci0tICAgIHJldHVybiBuZ2h0dHAyX3Nlc3Np b25fYWRkX3JzdF9zdHJlYW0oYXJnLT5zZXNzaW9uLCBzdHJlYW0tPnN0cmVhbV9pZCwKLS0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOR0hUVFAyX0ZMT1dfQ09OVFJP TF9FUlJPUik7Ci0rICAgIHJldHVybiBOR0hUVFAyX0VSUl9GTE9XX0NPTlRST0w7Ci0gICB9Ci0g Ci0gICAvKiBJZiB3aW5kb3cgc2l6ZSBnZXRzIHBvc2l0aXZlLCBwdXNoIGRlZmVycmVkIERBVEEg ZnJhbWUgdG8KLUBAIC00NTkzLDYgKzQxMDcsOCBAQCBzdGF0aWMgaW50IHVwZGF0ZV9yZW1vdGVf aW5pdGlhbF93aW5kb3dfc2l6ZV9mdW5jKHZvaWQgKmVudHJ5LCB2b2lkICpwdHIpIHsKLSAgKgot ICAqIE5HSFRUUDJfRVJSX05PTUVNCi0gICogICAgIE91dCBvZiBtZW1vcnkuCi0rICogTkdIVFRQ Ml9FUlJfRkxPV19DT05UUk9MCi0rICogICAgIFdpbmRvdyBzaXplIGdldHMgb3V0IG9mIHJhbmdl LgotICAqLwotIHN0YXRpYyBpbnQKLSBzZXNzaW9uX3VwZGF0ZV9yZW1vdGVfaW5pdGlhbF93aW5k b3dfc2l6ZShuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi1AQCAtNDYxNiw4ICs0MTMyLDcgQEAg c3RhdGljIGludCB1cGRhdGVfbG9jYWxfaW5pdGlhbF93aW5kb3dfc2l6ZV9mdW5jKHZvaWQgKmVu dHJ5LCB2b2lkICpwdHIpIHsKLSAgIHJ2ID0gbmdodHRwMl9zdHJlYW1fdXBkYXRlX2xvY2FsX2lu aXRpYWxfd2luZG93X3NpemUoCi0gICAgIHN0cmVhbSwgYXJnLT5uZXdfd2luZG93X3NpemUsIGFy Zy0+b2xkX3dpbmRvd19zaXplKTsKLSAgIGlmIChydiAhPSAwKSB7Ci0tICAgIHJldHVybiBuZ2h0 dHAyX3Nlc3Npb25fYWRkX3JzdF9zdHJlYW0oYXJnLT5zZXNzaW9uLCBzdHJlYW0tPnN0cmVhbV9p ZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOR0hUVFAyX0ZM T1dfQ09OVFJPTF9FUlJPUik7Ci0rICAgIHJldHVybiBOR0hUVFAyX0VSUl9GTE9XX0NPTlRST0w7 Ci0gICB9Ci0gCi0gICBpZiAoc3RyZWFtLT53aW5kb3dfdXBkYXRlX3F1ZXVlZCkgewotQEAgLTQ2 NTEsNiArNDE2Niw4IEBAIHN0YXRpYyBpbnQgdXBkYXRlX2xvY2FsX2luaXRpYWxfd2luZG93X3Np emVfZnVuYyh2b2lkICplbnRyeSwgdm9pZCAqcHRyKSB7Ci0gICoKLSAgKiBOR0hUVFAyX0VSUl9O T01FTQotICAqICAgICBPdXQgb2YgbWVtb3J5LgotKyAqIE5HSFRUUDJfRVJSX0ZMT1dfQ09OVFJP TAotKyAqICAgICBXaW5kb3cgc2l6ZSBnZXRzIG91dCBvZiByYW5nZS4KLSAgKi8KLSBzdGF0aWMg aW50Ci0gc2Vzc2lvbl91cGRhdGVfbG9jYWxfaW5pdGlhbF93aW5kb3dfc2l6ZShuZ2h0dHAyX3Nl c3Npb24gKnNlc3Npb24sCi1AQCAtNDkzNCwxMiArNDQ1MSw2IEBAIGludCBuZ2h0dHAyX3Nlc3Np b25fb25fc2V0dGluZ3NfcmVjZWl2ZWQobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotIAotICAg aWYgKHNlc3Npb24tPnJlbW90ZV9zZXR0aW5ncy5ub19yZmM3NTQwX3ByaW9yaXRpZXMgPT0gVUlO VDMyX01BWCkgewotICAgICBzZXNzaW9uLT5yZW1vdGVfc2V0dGluZ3Mubm9fcmZjNzU0MF9wcmlv cml0aWVzID0gMDsKLS0KLS0gICAgaWYgKHNlc3Npb24tPnNlcnZlciAmJiBzZXNzaW9uLT5wZW5k aW5nX25vX3JmYzc1NDBfcHJpb3JpdGllcyAmJgotLSAgICAgICAgKHNlc3Npb24tPm9wdF9mbGFn cyAmCi0tICAgICAgICAgTkdIVFRQMl9PUFRNQVNLX1NFUlZFUl9GQUxMQkFDS19SRkM3NTQwX1BS SU9SSVRJRVMpKSB7Ci0tICAgICAgc2Vzc2lvbi0+ZmFsbGJhY2tfcmZjNzU0MF9wcmlvcml0aWVz ID0gMTsKLS0gICAgfQotICAgfQotIAotICAgaWYgKCFub2FjayAmJiAhc2Vzc2lvbl9pc19jbG9z aW5nKHNlc3Npb24pKSB7Ci1AQCAtNTAwMCw3ICs0NTExLDYgQEAgaW50IG5naHR0cDJfc2Vzc2lv bl9vbl9wdXNoX3Byb21pc2VfcmVjZWl2ZWQobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotICAg aW50IHJ2OwotICAgbmdodHRwMl9zdHJlYW0gKnN0cmVhbTsKLSAgIG5naHR0cDJfc3RyZWFtICpw cm9taXNlZF9zdHJlYW07Ci0tICBuZ2h0dHAyX3ByaW9yaXR5X3NwZWMgcHJpX3NwZWM7Ci0gCi0g ICBpZiAoZnJhbWUtPmhkLnN0cmVhbV9pZCA9PSAwKSB7Ci0gICAgIHJldHVybiBzZXNzaW9uX2lu ZmxhdGVfaGFuZGxlX2ludmFsaWRfY29ubmVjdGlvbigKLUBAIC01MDQ0LDkgKzQ1NTQsOSBAQCBp bnQgbmdodHRwMl9zZXNzaW9uX29uX3B1c2hfcHJvbWlzZV9yZWNlaXZlZChuZ2h0dHAyX3Nlc3Np b24gKnNlc3Npb24sCi0gICAgICAgICBzZXNzaW9uLT5tYXhfaW5jb21pbmdfcmVzZXJ2ZWRfc3Ry ZWFtcykgewotICAgICAvKiBDdXJyZW50bHksIGNsaWVudCBkb2VzIG5vdCByZXRhaW4gY2xvc2Vk IHN0cmVhbSwgc28gd2UgZG9uJ3QKLSAgICAgICAgY2hlY2sgTkdIVFRQMl9TSFVUX1JEIGNvbmRp dGlvbiBoZXJlLiAqLwotLQotLSAgICBydiA9IG5naHR0cDJfc2Vzc2lvbl9hZGRfcnN0X3N0cmVh bSgKLS0gICAgICBzZXNzaW9uLCBmcmFtZS0+cHVzaF9wcm9taXNlLnByb21pc2VkX3N0cmVhbV9p ZCwgTkdIVFRQMl9DQU5DRUwpOwotKyAgICBydiA9IHNlc3Npb25faGFuZGxlX2ludmFsaWRfc3Ry ZWFtMihzZXNzaW9uLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm cmFtZS0+cHVzaF9wcm9taXNlLnByb21pc2VkX3N0cmVhbV9pZCwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTkdIVFRQMl9FUlJfUFVTSF9DQU5DRUwpOwot ICAgICBpZiAocnYgIT0gMCkgewotICAgICAgIHJldHVybiBydjsKLSAgICAgfQotQEAgLTUwNTgs MjAgKzQ1NjgsMTQgQEAgaW50IG5naHR0cDJfc2Vzc2lvbl9vbl9wdXNoX3Byb21pc2VfcmVjZWl2 ZWQobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotICAgICAgIHNlc3Npb24sIGZyYW1lLCBOR0hU VFAyX0VSUl9TVFJFQU1fQ0xPU0VELCAiUFVTSF9QUk9NSVNFOiBzdHJlYW0gY2xvc2VkIik7Ci0g ICB9Ci0gCi0tICBuZ2h0dHAyX3ByaW9yaXR5X3NwZWNfaW5pdCgmcHJpX3NwZWMsIHN0cmVhbS0+ c3RyZWFtX2lkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkdIVFRQMl9ERUZBVUxU X1dFSUdIVCwgMCk7Ci0tCi0gICBwcm9taXNlZF9zdHJlYW0gPSBuZ2h0dHAyX3Nlc3Npb25fb3Bl bl9zdHJlYW0oCi0gICAgIHNlc3Npb24sIGZyYW1lLT5wdXNoX3Byb21pc2UucHJvbWlzZWRfc3Ry ZWFtX2lkLCBOR0hUVFAyX1NUUkVBTV9GTEFHX05PTkUsCi0tICAgICZwcmlfc3BlYywgTkdIVFRQ Ml9TVFJFQU1fUkVTRVJWRUQsIE5VTEwpOwotKyAgICBOR0hUVFAyX1NUUkVBTV9SRVNFUlZFRCwg TlVMTCk7Ci0gCi0gICBpZiAoIXByb21pc2VkX3N0cmVhbSkgewotICAgICByZXR1cm4gTkdIVFRQ Ml9FUlJfTk9NRU07Ci0gICB9Ci0gCi0tICAvKiBXZSBkb24ndCBjYWxsIG5naHR0cDJfc2Vzc2lv bl9hZGp1c3RfY2xvc2VkX3N0cmVhbSgpLCBzaW5jZSB3ZQotLSAgICAgZG9uJ3Qga2VlcCBjbG9z ZWQgc3RyZWFtIGluIGNsaWVudCBzaWRlICovCi0tCi0gICBzZXNzaW9uLT5sYXN0X3Byb2Nfc3Ry ZWFtX2lkID0gc2Vzc2lvbi0+bGFzdF9yZWN2X3N0cmVhbV9pZDsKLSAgIHJ2ID0gc2Vzc2lvbl9j YWxsX29uX2JlZ2luX2hlYWRlcnMoc2Vzc2lvbiwgZnJhbWUpOwotICAgaWYgKHJ2ICE9IDApIHsK LUBAIC01MjA5LDggKzQ3MTMsOSBAQCBzdGF0aWMgaW50IHNlc3Npb25fb25fc3RyZWFtX3dpbmRv d191cGRhdGVfcmVjZWl2ZWQobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotICAgfQotICAgaWYg KE5HSFRUUDJfTUFYX1dJTkRPV19TSVpFIC0gZnJhbWUtPndpbmRvd191cGRhdGUud2luZG93X3Np emVfaW5jcmVtZW50IDwKLSAgICAgICBzdHJlYW0tPnJlbW90ZV93aW5kb3dfc2l6ZSkgewotLSAg ICByZXR1cm4gc2Vzc2lvbl9oYW5kbGVfaW52YWxpZF9zdHJlYW0oc2Vzc2lvbiwgZnJhbWUsCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOR0hUVFAyX0VSUl9GTE9X X0NPTlRST0wpOwotKyAgICByZXR1cm4gc2Vzc2lvbl9oYW5kbGVfaW52YWxpZF9jb25uZWN0aW9u KAotKyAgICAgIHNlc3Npb24sIGZyYW1lLCBOR0hUVFAyX0VSUl9GTE9XX0NPTlRST0wsCi0rICAg ICAgIldJTkRPV19VUERBVEU6IHdpbmRvdyBzaXplIG92ZXJmbG93Iik7Ci0gICB9Ci0gICBzdHJl YW0tPnJlbW90ZV93aW5kb3dfc2l6ZSArPSBmcmFtZS0+d2luZG93X3VwZGF0ZS53aW5kb3dfc2l6 ZV9pbmNyZW1lbnQ7Ci0gCi1AQCAtNTI5Miw3ICs0Nzk3LDYgQEAgaW50IG5naHR0cDJfc2Vzc2lv bl9vbl9wcmlvcml0eV91cGRhdGVfcmVjZWl2ZWQobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5naHR0cDJf ZnJhbWUgKmZyYW1lKSB7Ci0gICBuZ2h0dHAyX2V4dF9wcmlvcml0eV91cGRhdGUgKnByaW9yaXR5 X3VwZGF0ZTsKLSAgIG5naHR0cDJfc3RyZWFtICpzdHJlYW07Ci0tICBuZ2h0dHAyX3ByaW9yaXR5 X3NwZWMgcHJpX3NwZWM7Ci0gICBuZ2h0dHAyX2V4dHByaSBleHRwcmk7Ci0gICBpbnQgcnY7Ci0g Ci1AQCAtNTMzMCwxMCArNDgzNCw5IEBAIGludCBuZ2h0dHAyX3Nlc3Npb25fb25fcHJpb3JpdHlf dXBkYXRlX3JlY2VpdmVkKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAgICAgICAgICJQUklP UklUWV9VUERBVEU6IG1heCBjb25jdXJyZW50IHN0cmVhbXMgZXhjZWVkZWQiKTsKLSAgICAgfQot IAotLSAgICBuZ2h0dHAyX3ByaW9yaXR5X3NwZWNfZGVmYXVsdF9pbml0KCZwcmlfc3BlYyk7Ci0t ICAgIHN0cmVhbSA9IG5naHR0cDJfc2Vzc2lvbl9vcGVuX3N0cmVhbShzZXNzaW9uLCBwcmlvcml0 eV91cGRhdGUtPnN0cmVhbV9pZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE5HSFRUUDJfRkxBR19OT05FLCAmcHJpX3NwZWMsCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBOR0hUVFAyX1NUUkVBTV9JRExFLCBOVUxMKTsKLSsgICAg c3RyZWFtID0KLSsgICAgICBuZ2h0dHAyX3Nlc3Npb25fb3Blbl9zdHJlYW0oc2Vzc2lvbiwgcHJp b3JpdHlfdXBkYXRlLT5zdHJlYW1faWQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE5HSFRUUDJfRkxBR19OT05FLCBOR0hUVFAyX1NUUkVBTV9JRExFLCBOVUxMKTsKLSAgICAg aWYgKCFzdHJlYW0pIHsKLSAgICAgICByZXR1cm4gTkdIVFRQMl9FUlJfTk9NRU07Ci0gICAgIH0K LUBAIC01NDQyLDE2ICs0OTQ1LDcgQEAgaW50IG5naHR0cDJfc2Vzc2lvbl9vbl9kYXRhX3JlY2Vp dmVkKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAgIGlmIChzZXNzaW9uX2VuZm9yY2VfaHR0 cF9tZXNzYWdpbmcoc2Vzc2lvbikgJiYKLSAgICAgICAoZnJhbWUtPmhkLmZsYWdzICYgTkdIVFRQ Ml9GTEFHX0VORF9TVFJFQU0pKSB7Ci0gICAgIGlmIChuZ2h0dHAyX2h0dHBfb25fcmVtb3RlX2Vu ZF9zdHJlYW0oc3RyZWFtKSAhPSAwKSB7Ci0tICAgICAgcnYgPSBuZ2h0dHAyX3Nlc3Npb25fYWRk X3JzdF9zdHJlYW0oc2Vzc2lvbiwgc3RyZWFtLT5zdHJlYW1faWQsCi0tICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTkdIVFRQMl9QUk9UT0NPTF9FUlJPUik7Ci0tICAg ICAgaWYgKG5naHR0cDJfaXNfZmF0YWwocnYpKSB7Ci0tICAgICAgICByZXR1cm4gcnY7Ci0tICAg ICAgfQotLQotLSAgICAgIG5naHR0cDJfc3RyZWFtX3NodXRkb3duKHN0cmVhbSwgTkdIVFRQMl9T SFVUX1JEKTsKLS0gICAgICAvKiBEb24ndCBjYWxsIG5naHR0cDJfc2Vzc2lvbl9jbG9zZV9zdHJl YW1faWZfc2h1dF9yZHdyIGJlY2F1c2UKLS0gICAgICAgICBSU1RfU1RSRUFNIGhhcyBiZWVuIHN1 Ym1pdHRlZC4gKi8KLS0gICAgICByZXR1cm4gMDsKLSsgICAgICByZXR1cm4gbmdodHRwMl9zZXNz aW9uX3Rlcm1pbmF0ZV9zZXNzaW9uKHNlc3Npb24sIE5HSFRUUDJfUFJPVE9DT0xfRVJST1IpOwot ICAgICB9Ci0gICB9Ci0gCi1AQCAtNTUwOSw4ICs1MDAzLDggQEAgaW50IG5naHR0cDJfc2Vzc2lv bl91cGRhdGVfcmVjdl9zdHJlYW1fd2luZG93X3NpemUobmdodHRwMl9zZXNzaW9uICpzZXNzaW9u LAotICAgcnYgPSBhZGp1c3RfcmVjdl93aW5kb3dfc2l6ZSgmc3RyZWFtLT5yZWN2X3dpbmRvd19z aXplLCBkZWx0YV9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0t PmxvY2FsX3dpbmRvd19zaXplKTsKLSAgIGlmIChydiAhPSAwKSB7Ci0tICAgIHJldHVybiBuZ2h0 dHAyX3Nlc3Npb25fYWRkX3JzdF9zdHJlYW0oc2Vzc2lvbiwgc3RyZWFtLT5zdHJlYW1faWQsCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkdIVFRQMl9GTE9XX0NP TlRST0xfRVJST1IpOwotKyAgICByZXR1cm4gbmdodHRwMl9zZXNzaW9uX3Rlcm1pbmF0ZV9zZXNz aW9uKHNlc3Npb24sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTkdIVFRQMl9GTE9XX0NPTlRST0xfRVJST1IpOwotICAgfQotICAgLyogV2UgZG9uJ3QgaGF2 ZSB0byBzZW5kIFdJTkRPV19VUERBVEUgaWYgdGhlIGRhdGEgcmVjZWl2ZWQgaXMgdGhlCi0gICAg ICBsYXN0IGNodW5rIGluIHRoZSBpbmNvbWluZyBzdHJlYW0uICovCi1AQCAtNTg2OSwxNCArNTM2 Myw2IEBAIG5naHR0cDJfc3NpemUgbmdodHRwMl9zZXNzaW9uX21lbV9yZWN2MihuZ2h0dHAyX3Nl c3Npb24gKnNlc3Npb24sCi0gCi0gICBtZW0gPSAmc2Vzc2lvbi0+bWVtOwotIAotLSAgLyogV2Ug bWF5IGhhdmUgaWRsZSBzdHJlYW1zIG1vcmUgdGhhbiB3ZSBleHBlY3QgKGUuZy4sCi0tICAgICBu Z2h0dHAyX3Nlc3Npb25fY2hhbmdlX3N0cmVhbV9wcmlvcml0eSgpIG9yCi0tICAgICBuZ2h0dHAy X3Nlc3Npb25fY3JlYXRlX2lkbGVfc3RyZWFtKCkpLiAgQWRqdXN0IHRoZW0gaGVyZS4gKi8KLS0g IHJ2ID0gbmdodHRwMl9zZXNzaW9uX2FkanVzdF9pZGxlX3N0cmVhbShzZXNzaW9uKTsKLS0gIGlm IChuZ2h0dHAyX2lzX2ZhdGFsKHJ2KSkgewotLSAgICByZXR1cm4gcnY7Ci0tICB9Ci0tCi0gICBp ZiAoIW5naHR0cDJfc2Vzc2lvbl93YW50X3JlYWQoc2Vzc2lvbikpIHsKLSAgICAgcmV0dXJuIChu Z2h0dHAyX3NzaXplKWlubGVuOwotICAgfQotQEAgLTU5ODAsMjAgKzU0NjYsMzAgQEAgbmdodHRw Ml9zc2l6ZSBuZ2h0dHAyX3Nlc3Npb25fbWVtX3JlY3YyKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lv biwKLSAgICAgICAgIGJ1c3kgPSAxOwotIAotICAgICAgICAgcnYgPSBzZXNzaW9uX29uX2RhdGFf cmVjZWl2ZWRfZmFpbF9mYXN0KHNlc3Npb24pOwotKyAgICAgICAgaWYgKG5naHR0cDJfaXNfZmF0 YWwocnYpKSB7Ci0rICAgICAgICAgIHJldHVybiBydjsKLSsgICAgICAgIH0KLSsKLSAgICAgICAg IGlmIChpZnJhbWUtPnN0YXRlID09IE5HSFRUUDJfSUJfSUdOX0FMTCkgewotICAgICAgICAgICBy ZXR1cm4gKG5naHR0cDJfc3NpemUpaW5sZW47Ci0gICAgICAgICB9Ci0gICAgICAgICBpZiAocnYg PT0gTkdIVFRQMl9FUlJfSUdOX1BBWUxPQUQpIHsKLSAgICAgICAgICAgREVCVUdGKCJyZWN2OiBE QVRBIG5vdCBhbGxvd2VkIHN0cmVhbV9pZD0lZFxuIiwKLSAgICAgICAgICAgICAgICAgIGlmcmFt ZS0+ZnJhbWUuaGQuc3RyZWFtX2lkKTsKLSsKLSsgICAgICAgICAgcnYgPSBzZXNzaW9uX3VwZGF0 ZV9nbGl0Y2hfcmF0ZWxpbShzZXNzaW9uKTsKLSsgICAgICAgICAgaWYgKHJ2ICE9IDApIHsKLSsg ICAgICAgICAgICByZXR1cm4gcnY7Ci0rICAgICAgICAgIH0KLSsKLSsgICAgICAgICAgaWYgKGlm cmFtZS0+c3RhdGUgPT0gTkdIVFRQMl9JQl9JR05fQUxMKSB7Ci0rICAgICAgICAgICAgcmV0dXJu IChuZ2h0dHAyX3NzaXplKWlubGVuOwotKyAgICAgICAgICB9Ci0rCi0gICAgICAgICAgIGlmcmFt ZS0+c3RhdGUgPSBOR0hUVFAyX0lCX0lHTl9EQVRBOwotICAgICAgICAgICBicmVhazsKLSAgICAg ICAgIH0KLSAKLS0gICAgICAgIGlmIChuZ2h0dHAyX2lzX2ZhdGFsKHJ2KSkgewotLSAgICAgICAg ICByZXR1cm4gcnY7Ci0tICAgICAgICB9Ci0tCi0gICAgICAgICBydiA9IGluYm91bmRfZnJhbWVf aGFuZGxlX3BhZChpZnJhbWUsICZpZnJhbWUtPmZyYW1lLmhkKTsKLSAgICAgICAgIGlmIChydiA8 IDApIHsKLSAgICAgICAgICAgcnYgPSBuZ2h0dHAyX3Nlc3Npb25fdGVybWluYXRlX3Nlc3Npb25f d2l0aF9yZWFzb24oCi1AQCAtNjAxMSw2ICs1NTA3LDIwIEBAIG5naHR0cDJfc3NpemUgbmdodHRw Ml9zZXNzaW9uX21lbV9yZWN2MihuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0gICAgICAgICAg IGJyZWFrOwotICAgICAgICAgfQotIAotKyAgICAgICAgLyogRW1wdHkgREFUQSBmcmFtZSB3aXRo b3V0IEVORF9TVFJFQU0gZmxhZyBzZXQgaXMKLSsgICAgICAgICAgIHN1c3BpY2lvdXMuICovCi0r ICAgICAgICBpZiAoaWZyYW1lLT5wYXlsb2FkbGVmdCA9PSAwICYmCi0rICAgICAgICAgICAgKGlm cmFtZS0+ZnJhbWUuaGQuZmxhZ3MgJiBOR0hUVFAyX0ZMQUdfRU5EX1NUUkVBTSkgPT0gMCkgewot KyAgICAgICAgICBydiA9IHNlc3Npb25fdXBkYXRlX2dsaXRjaF9yYXRlbGltKHNlc3Npb24pOwot KyAgICAgICAgICBpZiAocnYgIT0gMCkgewotKyAgICAgICAgICAgIHJldHVybiBydjsKLSsgICAg ICAgICAgfQotKwotKyAgICAgICAgICBpZiAoaWZyYW1lLT5zdGF0ZSA9PSBOR0hUVFAyX0lCX0lH Tl9BTEwpIHsKLSsgICAgICAgICAgICByZXR1cm4gKG5naHR0cDJfc3NpemUpaW5sZW47Ci0rICAg ICAgICAgIH0KLSsgICAgICAgIH0KLSsKLSAgICAgICAgIGlmcmFtZS0+c3RhdGUgPSBOR0hUVFAy X0lCX1JFQURfREFUQTsKLSAgICAgICAgIGJyZWFrOwotICAgICAgIH0KLUBAIC02MDYzLDYgKzU1 NzMsMTAgQEAgbmdodHRwMl9zc2l6ZSBuZ2h0dHAyX3Nlc3Npb25fbWVtX3JlY3YyKG5naHR0cDJf c2Vzc2lvbiAqc2Vzc2lvbiwKLSAgICAgICAgICAgcmV0dXJuIHJ2OwotICAgICAgICAgfQotIAot KyAgICAgICAgaWYgKGlmcmFtZS0+c3RhdGUgPT0gTkdIVFRQMl9JQl9JR05fQUxMKSB7Ci0rICAg ICAgICAgIHJldHVybiAobmdodHRwMl9zc2l6ZSlpbmxlbjsKLSsgICAgICAgIH0KLSsKLSAgICAg ICAgIG9uX2JlZ2luX2ZyYW1lX2NhbGxlZCA9IDE7Ci0gCi0gICAgICAgICBydiA9IHNlc3Npb25f cHJvY2Vzc19oZWFkZXJzX2ZyYW1lKHNlc3Npb24pOwotQEAgLTYwNzcsOCArNTU5MSw4IEBAIG5n aHR0cDJfc3NpemUgbmdodHRwMl9zZXNzaW9uX21lbV9yZWN2MihuZ2h0dHAyX3Nlc3Npb24gKnNl c3Npb24sCi0gICAgICAgICB9Ci0gCi0gICAgICAgICBpZiAocnYgPT0gTkdIVFRQMl9FUlJfVEVN UE9SQUxfQ0FMTEJBQ0tfRkFJTFVSRSkgewotLSAgICAgICAgICBydiA9IG5naHR0cDJfc2Vzc2lv bl9hZGRfcnN0X3N0cmVhbSgKLS0gICAgICAgICAgICBzZXNzaW9uLCBpZnJhbWUtPmZyYW1lLmhk LnN0cmVhbV9pZCwgTkdIVFRQMl9JTlRFUk5BTF9FUlJPUik7Ci0rICAgICAgICAgIHJ2ID0gc2Vz c2lvbl9oYW5kbGVfaW52YWxpZF9zdHJlYW0yKAotKyAgICAgICAgICAgIHNlc3Npb24sIGlmcmFt ZS0+ZnJhbWUuaGQuc3RyZWFtX2lkLCBOVUxMLCBOR0hUVFAyX0VSUl9JTlRFUk5BTCk7Ci0gICAg ICAgICAgIGlmIChuZ2h0dHAyX2lzX2ZhdGFsKHJ2KSkgewotICAgICAgICAgICAgIHJldHVybiBy djsKLSAgICAgICAgICAgfQotQEAgLTYwODcsNiArNTYwMSwxNSBAQCBuZ2h0dHAyX3NzaXplIG5n aHR0cDJfc2Vzc2lvbl9tZW1fcmVjdjIobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotICAgICAg ICAgfQotIAotICAgICAgICAgaWYgKHJ2ID09IE5HSFRUUDJfRVJSX0lHTl9IRUFERVJfQkxPQ0sp IHsKLSsgICAgICAgICAgcnYgPSBzZXNzaW9uX3VwZGF0ZV9nbGl0Y2hfcmF0ZWxpbShzZXNzaW9u KTsKLSsgICAgICAgICAgaWYgKHJ2ICE9IDApIHsKLSsgICAgICAgICAgICByZXR1cm4gcnY7Ci0r ICAgICAgICAgIH0KLSsKLSsgICAgICAgICAgaWYgKGlmcmFtZS0+c3RhdGUgPT0gTkdIVFRQMl9J Ql9JR05fQUxMKSB7Ci0rICAgICAgICAgICAgcmV0dXJuIChuZ2h0dHAyX3NzaXplKWlubGVuOwot KyAgICAgICAgICB9Ci0rCi0gICAgICAgICAgIGlmcmFtZS0+c3RhdGUgPSBOR0hUVFAyX0lCX0lH Tl9IRUFERVJfQkxPQ0s7Ci0gICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotQEAgLTYxMDcs NiArNTYzMCwxOCBAQCBuZ2h0dHAyX3NzaXplIG5naHR0cDJfc2Vzc2lvbl9tZW1fcmVjdjIobmdo dHRwMl9zZXNzaW9uICpzZXNzaW9uLAotICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0KLSAK LSsgICAgICAgIC8qIFRoaXMgaXMgZGVwcmVjYXRlZCBSRkMgNzU0MCBwcmlvcml0aWVzIG1lY2hh bmlzbSB3aGljaCBpcwotKyAgICAgICAgICAgdmVyeSB1bnBvcHVsYXIuICBXZSBkbyBub3QgZXhw ZWN0IGl0IGlzIHJlY2VpdmVkIHNvCi0rICAgICAgICAgICBmcmVxdWVudGx5LiAqLwotKyAgICAg ICAgcnYgPSBzZXNzaW9uX3VwZGF0ZV9nbGl0Y2hfcmF0ZWxpbShzZXNzaW9uKTsKLSsgICAgICAg IGlmIChydiAhPSAwKSB7Ci0rICAgICAgICAgIHJldHVybiBydjsKLSsgICAgICAgIH0KLSsKLSsg ICAgICAgIGlmIChpZnJhbWUtPnN0YXRlID09IE5HSFRUUDJfSUJfSUdOX0FMTCkgewotKyAgICAg ICAgICByZXR1cm4gKG5naHR0cDJfc3NpemUpaW5sZW47Ci0rICAgICAgICB9Ci0rCi0gICAgICAg ICBpZnJhbWUtPnN0YXRlID0gTkdIVFRQMl9JQl9SRUFEX05CWVRFOwotIAotICAgICAgICAgaW5i b3VuZF9mcmFtZV9zZXRfbWFyayhpZnJhbWUsIE5HSFRUUDJfUFJJT1JJVFlfU1BFQ0xFTik7Ci1A QCAtNjEyMyw3ICs1NjU4LDcgQEAgbmdodHRwMl9zc2l6ZSBuZ2h0dHAyX3Nlc3Npb25fbWVtX3Jl Y3YyKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAgICAgICAgICAgREVCVUdGKCJyZWN2OiBX SU5ET1dfVVBEQVRFXG4iKTsKLSAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0tI2VuZGlm IC8qIERFQlVHQlVJTEQgKi8KLSsjZW5kaWYgLyogZGVmaW5lZChERUJVR0JVSUxEKSAqLwotIAot ICAgICAgICAgaWZyYW1lLT5mcmFtZS5oZC5mbGFncyA9IE5HSFRUUDJfRkxBR19OT05FOwotIAot QEAgLTYyNzksOCArNTgxNCwxNyBAQCBuZ2h0dHAyX3NzaXplIG5naHR0cDJfc2Vzc2lvbl9tZW1f cmVjdjIobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotICAgICAgICAgaWYgKGNoZWNrX2V4dF90 eXBlX3NldChzZXNzaW9uLT51c2VyX3JlY3ZfZXh0X3R5cGVzLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpZnJhbWUtPmZyYW1lLmhkLnR5cGUpKSB7Ci0gICAgICAgICAgIGlmICgh c2Vzc2lvbi0+Y2FsbGJhY2tzLnVucGFja19leHRlbnNpb25fY2FsbGJhY2spIHsKLS0gICAgICAg ICAgICAvKiBTaWxlbnRseSBpZ25vcmUgdW5rbm93biBmcmFtZSB0eXBlLiAqLwotKyAgICAgICAg ICAgIC8qIFJlY2VpdmluZyB0b28gZnJlcXVlbnQgdW5rbm93biBmcmFtZXMgaXMgc3VzcGljaW91 cy4gKi8KLSsgICAgICAgICAgICBydiA9IHNlc3Npb25fdXBkYXRlX2dsaXRjaF9yYXRlbGltKHNl c3Npb24pOwotKyAgICAgICAgICAgIGlmIChydiAhPSAwKSB7Ci0rICAgICAgICAgICAgICByZXR1 cm4gcnY7Ci0rICAgICAgICAgICAgfQotKwotKyAgICAgICAgICAgIGlmIChpZnJhbWUtPnN0YXRl ID09IE5HSFRUUDJfSUJfSUdOX0FMTCkgewotKyAgICAgICAgICAgICAgcmV0dXJuIChuZ2h0dHAy X3NzaXplKWlubGVuOwotKyAgICAgICAgICAgIH0KLSAKLSsgICAgICAgICAgICAvKiBTaWxlbnRs eSBpZ25vcmUgdW5rbm93biBmcmFtZSB0eXBlLiAqLwotICAgICAgICAgICAgIGJ1c3kgPSAxOwot IAotICAgICAgICAgICAgIGlmcmFtZS0+c3RhdGUgPSBOR0hUVFAyX0lCX0lHTl9QQVlMT0FEOwot QEAgLTYyOTgsNiArNTg0MiwxNiBAQCBuZ2h0dHAyX3NzaXplIG5naHR0cDJfc2Vzc2lvbl9tZW1f cmVjdjIobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotICAgICAgICAgICBjYXNlIE5HSFRUUDJf QUxUU1ZDOgotICAgICAgICAgICAgIGlmICgoc2Vzc2lvbi0+YnVpbHRpbl9yZWN2X2V4dF90eXBl cyAmIE5HSFRUUDJfVFlQRU1BU0tfQUxUU1ZDKSA9PQotICAgICAgICAgICAgICAgICAwKSB7Ci0r ICAgICAgICAgICAgICAvKiBSZWNlaXZpbmcgdG9vIGZyZXF1ZW50IHVua25vd24gZnJhbWVzIGlz IHN1c3BpY2lvdXMuICovCi0rICAgICAgICAgICAgICBydiA9IHNlc3Npb25fdXBkYXRlX2dsaXRj aF9yYXRlbGltKHNlc3Npb24pOwotKyAgICAgICAgICAgICAgaWYgKHJ2ICE9IDApIHsKLSsgICAg ICAgICAgICAgICAgcmV0dXJuIHJ2OwotKyAgICAgICAgICAgICAgfQotKwotKyAgICAgICAgICAg ICAgaWYgKGlmcmFtZS0+c3RhdGUgPT0gTkdIVFRQMl9JQl9JR05fQUxMKSB7Ci0rICAgICAgICAg ICAgICAgIHJldHVybiAobmdodHRwMl9zc2l6ZSlpbmxlbjsKLSsgICAgICAgICAgICAgIH0KLSsK LSAgICAgICAgICAgICAgIGJ1c3kgPSAxOwotICAgICAgICAgICAgICAgaWZyYW1lLT5zdGF0ZSA9 IE5HSFRUUDJfSUJfSUdOX1BBWUxPQUQ7Ci0gICAgICAgICAgICAgICBicmVhazsKLUBAIC02MzA5 LDYgKzU4NjMsMTcgQEAgbmdodHRwMl9zc2l6ZSBuZ2h0dHAyX3Nlc3Npb25fbWVtX3JlY3YyKG5n aHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAgICAgICAgICAgICBpZnJhbWUtPmZyYW1lLmV4dC5w YXlsb2FkID0gJmlmcmFtZS0+ZXh0X2ZyYW1lX3BheWxvYWQuYWx0c3ZjOwotIAotICAgICAgICAg ICAgIGlmIChzZXNzaW9uLT5zZXJ2ZXIpIHsKLSsgICAgICAgICAgICAgIC8qIFJlY2VpdmluZyB0 b28gZnJlcXVlbnQgQUxUU1ZDIGZyb20gY2xpZW50IGlzCi0rICAgICAgICAgICAgICAgICBzdXNw aWNpb3VzLiAqLwotKyAgICAgICAgICAgICAgcnYgPSBzZXNzaW9uX3VwZGF0ZV9nbGl0Y2hfcmF0 ZWxpbShzZXNzaW9uKTsKLSsgICAgICAgICAgICAgIGlmIChydiAhPSAwKSB7Ci0rICAgICAgICAg ICAgICAgIHJldHVybiBydjsKLSsgICAgICAgICAgICAgIH0KLSsKLSsgICAgICAgICAgICAgIGlm IChpZnJhbWUtPnN0YXRlID09IE5HSFRUUDJfSUJfSUdOX0FMTCkgewotKyAgICAgICAgICAgICAg ICByZXR1cm4gKG5naHR0cDJfc3NpemUpaW5sZW47Ci0rICAgICAgICAgICAgICB9Ci0rCi0gICAg ICAgICAgICAgICBidXN5ID0gMTsKLSAgICAgICAgICAgICAgIGlmcmFtZS0+c3RhdGUgPSBOR0hU VFAyX0lCX0lHTl9QQVlMT0FEOwotICAgICAgICAgICAgICAgYnJlYWs7Ci1AQCAtNjMyOCw2ICs1 ODkzLDE2IEBAIG5naHR0cDJfc3NpemUgbmdodHRwMl9zZXNzaW9uX21lbV9yZWN2MihuZ2h0dHAy X3Nlc3Npb24gKnNlc3Npb24sCi0gICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgIGNhc2Ug TkdIVFRQMl9PUklHSU46Ci0gICAgICAgICAgICAgaWYgKCEoc2Vzc2lvbi0+YnVpbHRpbl9yZWN2 X2V4dF90eXBlcyAmIE5HSFRUUDJfVFlQRU1BU0tfT1JJR0lOKSkgewotKyAgICAgICAgICAgICAg LyogUmVjZWl2aW5nIHRvbyBmcmVxdWVudCB1bmtub3duIGZyYW1lcyBpcyBzdXNwaWNpb3VzLiAq LwotKyAgICAgICAgICAgICAgcnYgPSBzZXNzaW9uX3VwZGF0ZV9nbGl0Y2hfcmF0ZWxpbShzZXNz aW9uKTsKLSsgICAgICAgICAgICAgIGlmIChydiAhPSAwKSB7Ci0rICAgICAgICAgICAgICAgIHJl dHVybiBydjsKLSsgICAgICAgICAgICAgIH0KLSsKLSsgICAgICAgICAgICAgIGlmIChpZnJhbWUt PnN0YXRlID09IE5HSFRUUDJfSUJfSUdOX0FMTCkgewotKyAgICAgICAgICAgICAgICByZXR1cm4g KG5naHR0cDJfc3NpemUpaW5sZW47Ci0rICAgICAgICAgICAgICB9Ci0rCi0gICAgICAgICAgICAg ICBidXN5ID0gMTsKLSAgICAgICAgICAgICAgIGlmcmFtZS0+c3RhdGUgPSBOR0hUVFAyX0lCX0lH Tl9QQVlMT0FEOwotICAgICAgICAgICAgICAgYnJlYWs7Ci1AQCAtNjMzOSw2ICs1OTE0LDE3IEBA IG5naHR0cDJfc3NpemUgbmdodHRwMl9zZXNzaW9uX21lbV9yZWN2MihuZ2h0dHAyX3Nlc3Npb24g KnNlc3Npb24sCi0gCi0gICAgICAgICAgICAgaWYgKHNlc3Npb24tPnNlcnZlciB8fCBpZnJhbWUt PmZyYW1lLmhkLnN0cmVhbV9pZCB8fAotICAgICAgICAgICAgICAgICAoaWZyYW1lLT5mcmFtZS5o ZC5mbGFncyAmIDB4ZjApKSB7Ci0rICAgICAgICAgICAgICAvKiBSZWNlaXZpbmcgdG9vIGZyZXF1 ZW50IGludmFsaWQgZnJhbWVzIGlzCi0rICAgICAgICAgICAgICAgICBzdXNwaWNpb3VzLiAqLwot KyAgICAgICAgICAgICAgcnYgPSBzZXNzaW9uX3VwZGF0ZV9nbGl0Y2hfcmF0ZWxpbShzZXNzaW9u KTsKLSsgICAgICAgICAgICAgIGlmIChydiAhPSAwKSB7Ci0rICAgICAgICAgICAgICAgIHJldHVy biBydjsKLSsgICAgICAgICAgICAgIH0KLSsKLSsgICAgICAgICAgICAgIGlmIChpZnJhbWUtPnN0 YXRlID09IE5HSFRUUDJfSUJfSUdOX0FMTCkgewotKyAgICAgICAgICAgICAgICByZXR1cm4gKG5n aHR0cDJfc3NpemUpaW5sZW47Ci0rICAgICAgICAgICAgICB9Ci0rCi0gICAgICAgICAgICAgICBi dXN5ID0gMTsKLSAgICAgICAgICAgICAgIGlmcmFtZS0+c3RhdGUgPSBOR0hUVFAyX0lCX0lHTl9Q QVlMT0FEOwotICAgICAgICAgICAgICAgYnJlYWs7Ci1AQCAtNjM2NSw2ICs1OTUxLDE2IEBAIG5n aHR0cDJfc3NpemUgbmdodHRwMl9zZXNzaW9uX21lbV9yZWN2MihuZ2h0dHAyX3Nlc3Npb24gKnNl c3Npb24sCi0gICAgICAgICAgIGNhc2UgTkdIVFRQMl9QUklPUklUWV9VUERBVEU6Ci0gICAgICAg ICAgICAgaWYgKChzZXNzaW9uLT5idWlsdGluX3JlY3ZfZXh0X3R5cGVzICYKLSAgICAgICAgICAg ICAgICAgIE5HSFRUUDJfVFlQRU1BU0tfUFJJT1JJVFlfVVBEQVRFKSA9PSAwKSB7Ci0rICAgICAg ICAgICAgICAvKiBSZWNlaXZpbmcgdG9vIGZyZXF1ZW50IHVua25vd24gZnJhbWVzIGlzIHN1c3Bp Y2lvdXMuICovCi0rICAgICAgICAgICAgICBydiA9IHNlc3Npb25fdXBkYXRlX2dsaXRjaF9yYXRl bGltKHNlc3Npb24pOwotKyAgICAgICAgICAgICAgaWYgKHJ2ICE9IDApIHsKLSsgICAgICAgICAg ICAgICAgcmV0dXJuIHJ2OwotKyAgICAgICAgICAgICAgfQotKwotKyAgICAgICAgICAgICAgaWYg KGlmcmFtZS0+c3RhdGUgPT0gTkdIVFRQMl9JQl9JR05fQUxMKSB7Ci0rICAgICAgICAgICAgICAg IHJldHVybiAobmdodHRwMl9zc2l6ZSlpbmxlbjsKLSsgICAgICAgICAgICAgIH0KLSsKLSAgICAg ICAgICAgICAgIGJ1c3kgPSAxOwotICAgICAgICAgICAgICAgaWZyYW1lLT5zdGF0ZSA9IE5HSFRU UDJfSUJfSUdOX1BBWUxPQUQ7Ci0gICAgICAgICAgICAgICBicmVhazsKLUBAIC02MzkyLDggKzU5 ODgsMTggQEAgbmdodHRwMl9zc2l6ZSBuZ2h0dHAyX3Nlc3Npb25fbWVtX3JlY3YyKG5naHR0cDJf c2Vzc2lvbiAqc2Vzc2lvbiwKLSAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgIH0K LSAKLS0gICAgICAgICAgICBpZiAoIXNlc3Npb25fbm9fcmZjNzU0MF9wcmlfbm9fZmFsbGJhY2so c2Vzc2lvbikgfHwKLS0gICAgICAgICAgICAgICAgaWZyYW1lLT5wYXlsb2FkbGVmdCA+IHNpemVv ZihpZnJhbWUtPnJhd19zYnVmKSkgewotKyAgICAgICAgICAgIC8qIFJlY2VpdmluZyB0b28gZnJl cXVlbnQgUFJJT1JJVFlfVVBEQVRFIGlzCi0rICAgICAgICAgICAgICAgc3VzcGljaW91cy4gKi8K LSsgICAgICAgICAgICBydiA9IHNlc3Npb25fdXBkYXRlX2dsaXRjaF9yYXRlbGltKHNlc3Npb24p OwotKyAgICAgICAgICAgIGlmIChydiAhPSAwKSB7Ci0rICAgICAgICAgICAgICByZXR1cm4gcnY7 Ci0rICAgICAgICAgICAgfQotKwotKyAgICAgICAgICAgIGlmIChpZnJhbWUtPnN0YXRlID09IE5H SFRUUDJfSUJfSUdOX0FMTCkgewotKyAgICAgICAgICAgICAgcmV0dXJuIChuZ2h0dHAyX3NzaXpl KWlubGVuOwotKyAgICAgICAgICAgIH0KLSsKLSsgICAgICAgICAgICBpZiAoaWZyYW1lLT5wYXls b2FkbGVmdCA+IHNpemVvZihpZnJhbWUtPnJhd19zYnVmKSkgewotICAgICAgICAgICAgICAgYnVz eSA9IDE7Ci0gICAgICAgICAgICAgICBpZnJhbWUtPnN0YXRlID0gTkdIVFRQMl9JQl9JR05fUEFZ TE9BRDsKLSAgICAgICAgICAgICAgIGJyZWFrOwotQEAgLTY0MDYsNiArNjAxMiwxNiBAQCBuZ2h0 dHAyX3NzaXplIG5naHR0cDJfc2Vzc2lvbl9tZW1fcmVjdjIobmdodHRwMl9zZXNzaW9uICpzZXNz aW9uLAotIAotICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICBkZWZhdWx0OgotKyAgICAg ICAgICAgIC8qIFJlY2VpdmluZyB0b28gZnJlcXVlbnQgdW5rbm93biBmcmFtZXMgaXMgc3VzcGlj aW91cy4gKi8KLSsgICAgICAgICAgICBydiA9IHNlc3Npb25fdXBkYXRlX2dsaXRjaF9yYXRlbGlt KHNlc3Npb24pOwotKyAgICAgICAgICAgIGlmIChydiAhPSAwKSB7Ci0rICAgICAgICAgICAgICBy ZXR1cm4gcnY7Ci0rICAgICAgICAgICAgfQotKwotKyAgICAgICAgICAgIGlmIChpZnJhbWUtPnN0 YXRlID09IE5HSFRUUDJfSUJfSUdOX0FMTCkgewotKyAgICAgICAgICAgICAgcmV0dXJuIChuZ2h0 dHAyX3NzaXplKWlubGVuOwotKyAgICAgICAgICAgIH0KLSsKLSAgICAgICAgICAgICBidXN5ID0g MTsKLSAKLSAgICAgICAgICAgICBpZnJhbWUtPnN0YXRlID0gTkdIVFRQMl9JQl9JR05fUEFZTE9B RDsKLUBAIC02NDI5LDYgKzYwNDUsMTAgQEAgbmdodHRwMl9zc2l6ZSBuZ2h0dHAyX3Nlc3Npb25f bWVtX3JlY3YyKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAgICAgICAgICAgaWYgKG5naHR0 cDJfaXNfZmF0YWwocnYpKSB7Ci0gICAgICAgICAgICAgcmV0dXJuIHJ2OwotICAgICAgICAgICB9 Ci0rCi0rICAgICAgICAgIGlmIChpZnJhbWUtPnN0YXRlID09IE5HSFRUUDJfSUJfSUdOX0FMTCkg ewotKyAgICAgICAgICAgIHJldHVybiAobmdodHRwMl9zc2l6ZSlpbmxlbjsKLSsgICAgICAgICAg fQotICAgICAgICAgfQotICAgICAgIH0KLSAKLUBAIC02NDkyLDggKzYxMTIsOCBAQCBuZ2h0dHAy X3NzaXplIG5naHR0cDJfc2Vzc2lvbl9tZW1fcmVjdjIobmdodHRwMl9zZXNzaW9uICpzZXNzaW9u LAotICAgICAgICAgfQotIAotICAgICAgICAgaWYgKHJ2ID09IE5HSFRUUDJfRVJSX1RFTVBPUkFM X0NBTExCQUNLX0ZBSUxVUkUpIHsKLS0gICAgICAgICAgcnYgPSBuZ2h0dHAyX3Nlc3Npb25fYWRk X3JzdF9zdHJlYW0oCi0tICAgICAgICAgICAgc2Vzc2lvbiwgaWZyYW1lLT5mcmFtZS5oZC5zdHJl YW1faWQsIE5HSFRUUDJfSU5URVJOQUxfRVJST1IpOwotKyAgICAgICAgICBydiA9IHNlc3Npb25f aGFuZGxlX2ludmFsaWRfc3RyZWFtMigKLSsgICAgICAgICAgICBzZXNzaW9uLCBpZnJhbWUtPmZy YW1lLmhkLnN0cmVhbV9pZCwgTlVMTCwgTkdIVFRQMl9FUlJfSU5URVJOQUwpOwotICAgICAgICAg ICBpZiAobmdodHRwMl9pc19mYXRhbChydikpIHsKLSAgICAgICAgICAgICByZXR1cm4gcnY7Ci0g ICAgICAgICAgIH0KLUBAIC02NTAyLDI2ICs2MTIyLDIzIEBAIG5naHR0cDJfc3NpemUgbmdodHRw Ml9zZXNzaW9uX21lbV9yZWN2MihuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0gICAgICAgICB9 Ci0gCi0gICAgICAgICBpZiAocnYgPT0gTkdIVFRQMl9FUlJfSUdOX0hFQURFUl9CTE9DSykgewot LSAgICAgICAgICBpZnJhbWUtPnN0YXRlID0gTkdIVFRQMl9JQl9JR05fSEVBREVSX0JMT0NLOwot LSAgICAgICAgICBicmVhazsKLS0gICAgICAgIH0KLS0KLS0gICAgICAgIGlmcmFtZS0+c3RhdGUg PSBOR0hUVFAyX0lCX1JFQURfSEVBREVSX0JMT0NLOwotLQotLSAgICAgICAgYnJlYWs7Ci0tICAg ICAgY2FzZSBOR0hUVFAyX1BSSU9SSVRZOgotLSAgICAgICAgaWYgKCFzZXNzaW9uX25vX3JmYzc1 NDBfcHJpX25vX2ZhbGxiYWNrKHNlc3Npb24pICYmCi0tICAgICAgICAgICAgc2Vzc2lvbi0+cmVt b3RlX3NldHRpbmdzLm5vX3JmYzc1NDBfcHJpb3JpdGllcyAhPSAxKSB7Ci0tICAgICAgICAgIHJ2 ID0gc2Vzc2lvbl9wcm9jZXNzX3ByaW9yaXR5X2ZyYW1lKHNlc3Npb24pOwotLSAgICAgICAgICBp ZiAobmdodHRwMl9pc19mYXRhbChydikpIHsKLSsgICAgICAgICAgcnYgPSBzZXNzaW9uX3VwZGF0 ZV9nbGl0Y2hfcmF0ZWxpbShzZXNzaW9uKTsKLSsgICAgICAgICAgaWYgKHJ2ICE9IDApIHsKLSAg ICAgICAgICAgICByZXR1cm4gcnY7Ci0gICAgICAgICAgIH0KLSAKLSAgICAgICAgICAgaWYgKGlm cmFtZS0+c3RhdGUgPT0gTkdIVFRQMl9JQl9JR05fQUxMKSB7Ci0gICAgICAgICAgICAgcmV0dXJu IChuZ2h0dHAyX3NzaXplKWlubGVuOwotICAgICAgICAgICB9Ci0rCi0rICAgICAgICAgIGlmcmFt ZS0+c3RhdGUgPSBOR0hUVFAyX0lCX0lHTl9IRUFERVJfQkxPQ0s7Ci0rICAgICAgICAgIGJyZWFr OwotICAgICAgICAgfQotIAotKyAgICAgICAgaWZyYW1lLT5zdGF0ZSA9IE5HSFRUUDJfSUJfUkVB RF9IRUFERVJfQkxPQ0s7Ci0rCi0rICAgICAgICBicmVhazsKLSsgICAgICBjYXNlIE5HSFRUUDJf UFJJT1JJVFk6Ci0gICAgICAgICBzZXNzaW9uX2luYm91bmRfZnJhbWVfcmVzZXQoc2Vzc2lvbik7 Ci0gCi0gICAgICAgICBicmVhazsKLUBAIC02NTc5LDkgKzYxOTYsOSBAQCBuZ2h0dHAyX3NzaXpl IG5naHR0cDJfc2Vzc2lvbl9tZW1fcmVjdjIobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotICAg ICAgICAgfQotIAotICAgICAgICAgaWYgKHJ2ID09IE5HSFRUUDJfRVJSX1RFTVBPUkFMX0NBTExC QUNLX0ZBSUxVUkUpIHsKLS0gICAgICAgICAgcnYgPSBuZ2h0dHAyX3Nlc3Npb25fYWRkX3JzdF9z dHJlYW0oCi0tICAgICAgICAgICAgc2Vzc2lvbiwgaWZyYW1lLT5mcmFtZS5wdXNoX3Byb21pc2Uu cHJvbWlzZWRfc3RyZWFtX2lkLAotLSAgICAgICAgICAgIE5HSFRUUDJfSU5URVJOQUxfRVJST1Ip OwotKyAgICAgICAgICBydiA9IHNlc3Npb25faGFuZGxlX2ludmFsaWRfc3RyZWFtMigKLSsgICAg ICAgICAgICBzZXNzaW9uLCBpZnJhbWUtPmZyYW1lLnB1c2hfcHJvbWlzZS5wcm9taXNlZF9zdHJl YW1faWQsIE5VTEwsCi0rICAgICAgICAgICAgTkdIVFRQMl9FUlJfSU5URVJOQUwpOwotICAgICAg ICAgICBpZiAobmdodHRwMl9pc19mYXRhbChydikpIHsKLSAgICAgICAgICAgICByZXR1cm4gcnY7 Ci0gICAgICAgICAgIH0KLUBAIC02Njg0LDYgKzYzMDEsMTAgQEAgbmdodHRwMl9zc2l6ZSBuZ2h0 dHAyX3Nlc3Npb25fbWVtX3JlY3YyKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAgICAgICAg ICAgcmV0dXJuIHJ2OwotICAgICAgICAgfQotIAotKyAgICAgICAgaWYgKGlmcmFtZS0+c3RhdGUg PT0gTkdIVFRQMl9JQl9JR05fQUxMKSB7Ci0rICAgICAgICAgIHJldHVybiAobmdodHRwMl9zc2l6 ZSlpbmxlbjsKLSsgICAgICAgIH0KLSsKLSAgICAgICAgIHNlc3Npb25faW5ib3VuZF9mcmFtZV9y ZXNldChzZXNzaW9uKTsKLSAKLSAgICAgICAgIGJyZWFrOwotQEAgLTY3MDYsNyArNjMyNyw3IEBA IG5naHR0cDJfc3NpemUgbmdodHRwMl9zZXNzaW9uX21lbV9yZWN2MihuZ2h0dHAyX3Nlc3Npb24g KnNlc3Npb24sCi0gICAgICAgfSBlbHNlIHsKLSAgICAgICAgIERFQlVHRigicmVjdjogW0lCX0lH Tl9IRUFERVJfQkxPQ0tdXG4iKTsKLSAgICAgICB9Ci0tI2VuZGlmIC8qIERFQlVHQlVJTEQgKi8K LSsjZW5kaWYgLyogZGVmaW5lZChERUJVR0JVSUxEKSAqLwotIAotICAgICAgIHJlYWRsZW4gPSBp bmJvdW5kX2ZyYW1lX3BheWxvYWRfcmVhZGxlbihpZnJhbWUsIGluLCBsYXN0KTsKLSAKLUBAIC02 NzU5LDEyICs2MzgwLDEyIEBAIG5naHR0cDJfc3NpemUgbmdodHRwMl9zZXNzaW9uX21lbV9yZWN2 MihuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0gICAgICAgICAgIGlmcmFtZS0+cGF5bG9hZGxl ZnQgLT0gaGRfcHJvY2xlbjsKLSAKLSAgICAgICAgICAgLyogVXNlIHByb21pc2VkIHN0cmVhbSBJ RCBmb3IgUFVTSF9QUk9NSVNFICovCi0tICAgICAgICAgIHJ2ID0gbmdodHRwMl9zZXNzaW9uX2Fk ZF9yc3Rfc3RyZWFtKAotKyAgICAgICAgICBydiA9IHNlc3Npb25faGFuZGxlX2ludmFsaWRfc3Ry ZWFtMigKLSAgICAgICAgICAgICBzZXNzaW9uLAotICAgICAgICAgICAgIGlmcmFtZS0+ZnJhbWUu aGQudHlwZSA9PSBOR0hUVFAyX1BVU0hfUFJPTUlTRQotICAgICAgICAgICAgICAgPyBpZnJhbWUt PmZyYW1lLnB1c2hfcHJvbWlzZS5wcm9taXNlZF9zdHJlYW1faWQKLSAgICAgICAgICAgICAgIDog aWZyYW1lLT5mcmFtZS5oZC5zdHJlYW1faWQsCi0tICAgICAgICAgICAgTkdIVFRQMl9JTlRFUk5B TF9FUlJPUik7Ci0rICAgICAgICAgICAgTlVMTCwgTkdIVFRQMl9FUlJfSU5URVJOQUwpOwotICAg ICAgICAgICBpZiAobmdodHRwMl9pc19mYXRhbChydikpIHsKLSAgICAgICAgICAgICByZXR1cm4g cnY7Ci0gICAgICAgICAgIH0KLUBAIC02ODExLDYgKzY0MzIsMTAgQEAgbmdodHRwMl9zc2l6ZSBu Z2h0dHAyX3Nlc3Npb25fbWVtX3JlY3YyKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAgICAg ICAgICAgaWYgKG5naHR0cDJfaXNfZmF0YWwocnYpKSB7Ci0gICAgICAgICAgICAgcmV0dXJuIHJ2 OwotICAgICAgICAgICB9Ci0rCi0rICAgICAgICAgIGlmIChpZnJhbWUtPnN0YXRlID09IE5HSFRU UDJfSUJfSUdOX0FMTCkgewotKyAgICAgICAgICAgIHJldHVybiAobmdodHRwMl9zc2l6ZSlpbmxl bjsKLSsgICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgICAgc2Vzc2lvbl9pbmJvdW5kX2Zy YW1lX3Jlc2V0KHNlc3Npb24pOwotIAotQEAgLTY5MzQsNyArNjU1OSw3IEBAIG5naHR0cDJfc3Np emUgbmdodHRwMl9zZXNzaW9uX21lbV9yZWN2MihuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0g ICAgICAgfSBlbHNlIHsKLSAgICAgICAgIGZwcmludGYoc3RkZXJyLCAicmVjdjogW0lCX0lHTl9D T05USU5VQVRJT05dXG4iKTsKLSAgICAgICB9Ci0tI2VuZGlmIC8qIERFQlVHQlVJTEQgKi8KLSsj ZW5kaWYgLyogZGVmaW5lZChERUJVR0JVSUxEKSAqLwotIAotICAgICAgIGlmICgrK3Nlc3Npb24t Pm51bV9jb250aW51YXRpb25zID4gc2Vzc2lvbi0+bWF4X2NvbnRpbnVhdGlvbnMpIHsKLSAgICAg ICAgIHJldHVybiBOR0hUVFAyX0VSUl9UT09fTUFOWV9DT05USU5VQVRJT05TOwotQEAgLTY5ODYs NiArNjYxMSwxMCBAQCBuZ2h0dHAyX3NzaXplIG5naHR0cDJfc2Vzc2lvbl9tZW1fcmVjdjIobmdo dHRwMl9zZXNzaW9uICpzZXNzaW9uLAotICAgICAgICAgaWYgKG5naHR0cDJfaXNfZmF0YWwocnYp KSB7Ci0gICAgICAgICAgIHJldHVybiBydjsKLSAgICAgICAgIH0KLSsKLSsgICAgICAgIGlmIChp ZnJhbWUtPnN0YXRlID09IE5HSFRUUDJfSUJfSUdOX0FMTCkgewotKyAgICAgICAgICByZXR1cm4g KG5naHR0cDJfc3NpemUpaW5sZW47Ci0rICAgICAgICB9Ci0gICAgICAgfSBlbHNlIHsKLSAgICAg ICAgIGlmcmFtZS0+c3RhdGUgPSBOR0hUVFAyX0lCX0lHTl9IRUFERVJfQkxPQ0s7Ci0gICAgICAg fQotQEAgLTcwMzYsNiArNjY2NSwxMCBAQCBuZ2h0dHAyX3NzaXplIG5naHR0cDJfc2Vzc2lvbl9t ZW1fcmVjdjIobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotICAgICAgICAgaWYgKG5naHR0cDJf aXNfZmF0YWwocnYpKSB7Ci0gICAgICAgICAgIHJldHVybiBydjsKLSAgICAgICAgIH0KLSsKLSsg ICAgICAgIGlmIChpZnJhbWUtPnN0YXRlID09IE5HSFRUUDJfSUJfSUdOX0FMTCkgewotKyAgICAg ICAgICByZXR1cm4gKG5naHR0cDJfc3NpemUpaW5sZW47Ci0rICAgICAgICB9Ci0gICAgICAgfQot IAotICAgICAgIGJ1c3kgPSAxOwotQEAgLTcwNTIsNiArNjY4NSwyMCBAQCBuZ2h0dHAyX3NzaXpl IG5naHR0cDJfc2Vzc2lvbl9tZW1fcmVjdjIobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotIAot ICAgICAgIGlmcmFtZS0+ZnJhbWUuZGF0YS5wYWRsZW4gPSAoc2l6ZV90KXBhZGxlbjsKLSAKLSsg ICAgICAvKiBFbXB0eSBEQVRBIGZyYW1lIHdpdGhvdXQgRU5EX1NUUkVBTSBmbGFnIHNldCBpcwot KyAgICAgICAgIHN1c3BpY2lvdXMuICovCi0rICAgICAgaWYgKGlmcmFtZS0+cGF5bG9hZGxlZnQg PT0gMCAmJgotKyAgICAgICAgICAoaWZyYW1lLT5mcmFtZS5oZC5mbGFncyAmIE5HSFRUUDJfRkxB R19FTkRfU1RSRUFNKSA9PSAwKSB7Ci0rICAgICAgICBydiA9IHNlc3Npb25fdXBkYXRlX2dsaXRj aF9yYXRlbGltKHNlc3Npb24pOwotKyAgICAgICAgaWYgKHJ2ICE9IDApIHsKLSsgICAgICAgICAg cmV0dXJuIHJ2OwotKyAgICAgICAgfQotKwotKyAgICAgICAgaWYgKGlmcmFtZS0+c3RhdGUgPT0g TkdIVFRQMl9JQl9JR05fQUxMKSB7Ci0rICAgICAgICAgIHJldHVybiAobmdodHRwMl9zc2l6ZSlp bmxlbjsKLSsgICAgICAgIH0KLSsgICAgICB9Ci0rCi0gICAgICAgaWZyYW1lLT5zdGF0ZSA9IE5H SFRUUDJfSUJfUkVBRF9EQVRBOwotIAotICAgICAgIGJyZWFrOwotQEAgLTcwOTQsNiArNjc0MSwx MCBAQCBuZ2h0dHAyX3NzaXplIG5naHR0cDJfc2Vzc2lvbl9tZW1fcmVjdjIobmdodHRwMl9zZXNz aW9uICpzZXNzaW9uLAotICAgICAgICAgICByZXR1cm4gcnY7Ci0gICAgICAgICB9Ci0gCi0rICAg ICAgICBpZiAoaWZyYW1lLT5zdGF0ZSA9PSBOR0hUVFAyX0lCX0lHTl9BTEwpIHsKLSsgICAgICAg ICAgcmV0dXJuIChuZ2h0dHAyX3NzaXplKWlubGVuOwotKyAgICAgICAgfQotKwotICAgICAgICAg ZGF0YV9yZWFkbGVuID0KLSAgICAgICAgICAgaW5ib3VuZF9mcmFtZV9lZmZlY3RpdmVfcmVhZGxl bihpZnJhbWUsIGlmcmFtZS0+cGF5bG9hZGxlZnQsIHJlYWRsZW4pOwotIAotQEAgLTcxMjMsNDEg KzY3NzQsMzAgQEAgbmdodHRwMl9zc2l6ZSBuZ2h0dHAyX3Nlc3Npb25fbWVtX3JlY3YyKG5naHR0 cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAgICAgICAgIGlmIChkYXRhX3JlYWRsZW4gPiAwKSB7Ci0g ICAgICAgICAgIGlmIChzZXNzaW9uX2VuZm9yY2VfaHR0cF9tZXNzYWdpbmcoc2Vzc2lvbikpIHsK LSAgICAgICAgICAgICBpZiAobmdodHRwMl9odHRwX29uX2RhdGFfY2h1bmsoc3RyZWFtLCAoc2l6 ZV90KWRhdGFfcmVhZGxlbikgIT0gMCkgewotLSAgICAgICAgICAgICAgaWYgKHNlc3Npb24tPm9w dF9mbGFncyAmIE5HSFRUUDJfT1BUTUFTS19OT19BVVRPX1dJTkRPV19VUERBVEUpIHsKLS0gICAg ICAgICAgICAgICAgLyogQ29uc3VtZSBhbGwgZGF0YSBmb3IgY29ubmVjdGlvbiBpbW1lZGlhdGVs eSBoZXJlICovCi0tICAgICAgICAgICAgICAgIHJ2ID0gc2Vzc2lvbl91cGRhdGVfY29ubmVjdGlv bl9jb25zdW1lZF9zaXplKAotLSAgICAgICAgICAgICAgICAgIHNlc3Npb24sIChzaXplX3QpZGF0 YV9yZWFkbGVuKTsKLS0KLS0gICAgICAgICAgICAgICAgaWYgKG5naHR0cDJfaXNfZmF0YWwocnYp KSB7Ci0tICAgICAgICAgICAgICAgICAgcmV0dXJuIHJ2OwotLSAgICAgICAgICAgICAgICB9Ci0t Ci0tICAgICAgICAgICAgICAgIGlmIChpZnJhbWUtPnN0YXRlID09IE5HSFRUUDJfSUJfSUdOX0RB VEEpIHsKLS0gICAgICAgICAgICAgICAgICByZXR1cm4gKG5naHR0cDJfc3NpemUpaW5sZW47Ci0t ICAgICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICAgIH0KLS0KLS0gICAgICAgICAgICAgIHJ2 ID0gbmdodHRwMl9zZXNzaW9uX2FkZF9yc3Rfc3RyZWFtKAotLSAgICAgICAgICAgICAgICBzZXNz aW9uLCBpZnJhbWUtPmZyYW1lLmhkLnN0cmVhbV9pZCwgTkdIVFRQMl9QUk9UT0NPTF9FUlJPUik7 Ci0rICAgICAgICAgICAgICBydiA9IG5naHR0cDJfc2Vzc2lvbl90ZXJtaW5hdGVfc2Vzc2lvbihz ZXNzaW9uLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTkdIVFRQMl9QUk9UT0NPTF9FUlJPUik7Ci0gICAgICAgICAgICAgICBpZiAobmdodHRw Ml9pc19mYXRhbChydikpIHsKLSAgICAgICAgICAgICAgICAgcmV0dXJuIHJ2OwotICAgICAgICAg ICAgICAgfQotLSAgICAgICAgICAgICAgYnVzeSA9IDE7Ci0tICAgICAgICAgICAgICBpZnJhbWUt PnN0YXRlID0gTkdIVFRQMl9JQl9JR05fREFUQTsKLS0gICAgICAgICAgICAgIGJyZWFrOwotKwot KyAgICAgICAgICAgICAgcmV0dXJuIChuZ2h0dHAyX3NzaXplKWlubGVuOwotICAgICAgICAgICAg IH0KLSAgICAgICAgICAgfQotICAgICAgICAgICBpZiAoc2Vzc2lvbi0+Y2FsbGJhY2tzLm9uX2Rh dGFfY2h1bmtfcmVjdl9jYWxsYmFjaykgewotICAgICAgICAgICAgIHJ2ID0gc2Vzc2lvbi0+Y2Fs bGJhY2tzLm9uX2RhdGFfY2h1bmtfcmVjdl9jYWxsYmFjaygKLSAgICAgICAgICAgICAgIHNlc3Np b24sIGlmcmFtZS0+ZnJhbWUuaGQuZmxhZ3MsIGlmcmFtZS0+ZnJhbWUuaGQuc3RyZWFtX2lkLAot ICAgICAgICAgICAgICAgaW4gLSByZWFkbGVuLCAoc2l6ZV90KWRhdGFfcmVhZGxlbiwgc2Vzc2lv bi0+dXNlcl9kYXRhKTsKLS0gICAgICAgICAgICBpZiAocnYgPT0gTkdIVFRQMl9FUlJfUEFVU0Up IHsKLS0gICAgICAgICAgICAgIHJldHVybiAobmdodHRwMl9zc2l6ZSkoaW4gLSBmaXJzdCk7Ci0t ICAgICAgICAgICAgfQotLQotICAgICAgICAgICAgIGlmIChuZ2h0dHAyX2lzX2ZhdGFsKHJ2KSkg ewotICAgICAgICAgICAgICAgcmV0dXJuIE5HSFRUUDJfRVJSX0NBTExCQUNLX0ZBSUxVUkU7Ci0g ICAgICAgICAgICAgfQotKwotKyAgICAgICAgICAgIGlmIChpZnJhbWUtPnN0YXRlID09IE5HSFRU UDJfSUJfSUdOX0FMTCkgewotKyAgICAgICAgICAgICAgcmV0dXJuIChuZ2h0dHAyX3NzaXplKWlu bGVuOwotKyAgICAgICAgICAgIH0KLSsKLSsgICAgICAgICAgICBpZiAocnYgPT0gTkdIVFRQMl9F UlJfUEFVU0UpIHsKLSsgICAgICAgICAgICAgIHJldHVybiAobmdodHRwMl9zc2l6ZSkoaW4gLSBm aXJzdCk7Ci0rICAgICAgICAgICAgfQotICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICAg fQotQEAgLTcxNzEsNiArNjgxMSwxMCBAQCBuZ2h0dHAyX3NzaXplIG5naHR0cDJfc2Vzc2lvbl9t ZW1fcmVjdjIobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotICAgICAgICAgcmV0dXJuIHJ2Owot ICAgICAgIH0KLSAKLSsgICAgICBpZiAoaWZyYW1lLT5zdGF0ZSA9PSBOR0hUVFAyX0lCX0lHTl9B TEwpIHsKLSsgICAgICAgIHJldHVybiAobmdodHRwMl9zc2l6ZSlpbmxlbjsKLSsgICAgICB9Ci0r Ci0gICAgICAgc2Vzc2lvbl9pbmJvdW5kX2ZyYW1lX3Jlc2V0KHNlc3Npb24pOwotIAotICAgICAg IGJyZWFrOwotQEAgLTcyMzcsNiArNjg4MSwxMCBAQCBuZ2h0dHAyX3NzaXplIG5naHR0cDJfc2Vz c2lvbl9tZW1fcmVjdjIobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotICAgICAgICAgICByZXR1 cm4gcnY7Ci0gICAgICAgICB9Ci0gCi0rICAgICAgICBpZiAoaWZyYW1lLT5zdGF0ZSA9PSBOR0hU VFAyX0lCX0lHTl9BTEwpIHsKLSsgICAgICAgICAgcmV0dXJuIChuZ2h0dHAyX3NzaXplKWlubGVu OwotKyAgICAgICAgfQotKwotICAgICAgICAgaWYgKHJ2ICE9IDApIHsKLSAgICAgICAgICAgYnVz eSA9IDE7Ci0gCi1AQCAtNzI1NSw2ICs2OTAzLDEwIEBAIG5naHR0cDJfc3NpemUgbmdodHRwMl9z ZXNzaW9uX21lbV9yZWN2MihuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0gICAgICAgICByZXR1 cm4gcnY7Ci0gICAgICAgfQotIAotKyAgICAgIGlmIChpZnJhbWUtPnN0YXRlID09IE5HSFRUUDJf SUJfSUdOX0FMTCkgewotKyAgICAgICAgcmV0dXJuIChuZ2h0dHAyX3NzaXplKWlubGVuOwotKyAg ICAgIH0KLSsKLSAgICAgICBzZXNzaW9uX2luYm91bmRfZnJhbWVfcmVzZXQoc2Vzc2lvbik7Ci0g Ci0gICAgICAgYnJlYWs7Ci1AQCAtNzI4Myw2ICs2OTM1LDEwIEBAIG5naHR0cDJfc3NpemUgbmdo dHRwMl9zZXNzaW9uX21lbV9yZWN2MihuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0gICAgICAg ICByZXR1cm4gcnY7Ci0gICAgICAgfQotIAotKyAgICAgIGlmIChpZnJhbWUtPnN0YXRlID09IE5H SFRUUDJfSUJfSUdOX0FMTCkgewotKyAgICAgICAgcmV0dXJuIChuZ2h0dHAyX3NzaXplKWlubGVu OwotKyAgICAgIH0KLSsKLSAgICAgICBzZXNzaW9uX2luYm91bmRfZnJhbWVfcmVzZXQoc2Vzc2lv bik7Ci0gCi0gICAgICAgYnJlYWs7Ci1AQCAtNzQwNCw5ICs3MDYwLDcgQEAgaW50IG5naHR0cDJf c2Vzc2lvbl93YW50X3dyaXRlKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbikgewotICAgICovCi0g ICByZXR1cm4gc2Vzc2lvbi0+YW9iLml0ZW0gfHwgbmdodHRwMl9vdXRib3VuZF9xdWV1ZV90b3Ao JnNlc3Npb24tPm9iX3VyZ2VudCkgfHwKLSAgICAgICAgICBuZ2h0dHAyX291dGJvdW5kX3F1ZXVl X3RvcCgmc2Vzc2lvbi0+b2JfcmVnKSB8fAotLSAgICAgICAgICgoIW5naHR0cDJfcHFfZW1wdHko JnNlc3Npb24tPnJvb3Qub2JxKSB8fAotLSAgICAgICAgICAgIXNlc3Npb25fc2NoZWRfZW1wdHko c2Vzc2lvbikpICYmCi0tICAgICAgICAgIHNlc3Npb24tPnJlbW90ZV93aW5kb3dfc2l6ZSA+IDAp IHx8Ci0rICAgICAgICAgKCFzZXNzaW9uX3NjaGVkX2VtcHR5KHNlc3Npb24pICYmIHNlc3Npb24t PnJlbW90ZV93aW5kb3dfc2l6ZSA+IDApIHx8Ci0gICAgICAgICAgKG5naHR0cDJfb3V0Ym91bmRf cXVldWVfdG9wKCZzZXNzaW9uLT5vYl9zeW4pICYmCi0gICAgICAgICAgICFzZXNzaW9uX2lzX291 dGdvaW5nX2NvbmN1cnJlbnRfc3RyZWFtc19tYXgoc2Vzc2lvbikpOwotIH0KLUBAIC04MDQ2LDcg Kzc3MDAsNiBAQCBzdGF0aWMgaW50IG5naHR0cDJfc2Vzc2lvbl91cGdyYWRlX2ludGVybmFsKG5n aHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAgIG5naHR0cDJfc2V0dGluZ3NfZW50cnkgKml2Owot ICAgc2l6ZV90IG5pdjsKLSAgIGludCBydjsKLS0gIG5naHR0cDJfcHJpb3JpdHlfc3BlYyBwcmlf c3BlYzsKLSAgIG5naHR0cDJfbWVtICptZW07Ci0gCi0gICBtZW0gPSAmc2Vzc2lvbi0+bWVtOwot QEAgLTgwODMsMTggKzc3MzYsMTMgQEAgc3RhdGljIGludCBuZ2h0dHAyX3Nlc3Npb25fdXBncmFk ZV9pbnRlcm5hbChuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0gICAgIHJldHVybiBydjsKLSAg IH0KLSAKLS0gIG5naHR0cDJfcHJpb3JpdHlfc3BlY19kZWZhdWx0X2luaXQoJnByaV9zcGVjKTsK LS0KLSAgIHN0cmVhbSA9IG5naHR0cDJfc2Vzc2lvbl9vcGVuX3N0cmVhbSgKLS0gICAgc2Vzc2lv biwgMSwgTkdIVFRQMl9TVFJFQU1fRkxBR19OT05FLCAmcHJpX3NwZWMsIE5HSFRUUDJfU1RSRUFN X09QRU5JTkcsCi0rICAgIHNlc3Npb24sIDEsIE5HSFRUUDJfU1RSRUFNX0ZMQUdfTk9ORSwgTkdI VFRQMl9TVFJFQU1fT1BFTklORywKLSAgICAgc2Vzc2lvbi0+c2VydmVyID8gTlVMTCA6IHN0cmVh bV91c2VyX2RhdGEpOwotICAgaWYgKHN0cmVhbSA9PSBOVUxMKSB7Ci0gICAgIHJldHVybiBOR0hU VFAyX0VSUl9OT01FTTsKLSAgIH0KLSAKLS0gIC8qIFdlIGRvbid0IGNhbGwgbmdodHRwMl9zZXNz aW9uX2FkanVzdF9jbG9zZWRfc3RyZWFtKCksIHNpbmNlIHRoaXMKLS0gICAgIHNob3VsZCBiZSB0 aGUgZmlyc3Qgc3RyZWFtIG9wZW4uICovCi0tCi0gICBpZiAoc2Vzc2lvbi0+c2VydmVyKSB7Ci0g ICAgIG5naHR0cDJfc3RyZWFtX3NodXRkb3duKHN0cmVhbSwgTkdIVFRQMl9TSFVUX1JEKTsKLSAg ICAgc2Vzc2lvbi0+bGFzdF9yZWN2X3N0cmVhbV9pZCA9IDE7Ci1AQCAtODI5MywxNCArNzk0MSwx NiBAQCBpbnQzMl90IG5naHR0cDJfc2Vzc2lvbl9nZXRfbGFzdF9wcm9jX3N0cmVhbV9pZChuZ2h0 dHAyX3Nlc3Npb24gKnNlc3Npb24pIHsKLSBuZ2h0dHAyX3N0cmVhbSAqbmdodHRwMl9zZXNzaW9u X2ZpbmRfc3RyZWFtKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgc3RyZWFtX2lkKSB7Ci0gICBpZiAo c3RyZWFtX2lkID09IDApIHsKLS0gICAgcmV0dXJuICZzZXNzaW9uLT5yb290OwotKyAgICByZXR1 cm4gJm5naHR0cDJfc3RyZWFtX3Jvb3Q7Ci0gICB9Ci0gCi0gICByZXR1cm4gbmdodHRwMl9zZXNz aW9uX2dldF9zdHJlYW1fcmF3KHNlc3Npb24sIHN0cmVhbV9pZCk7Ci0gfQotIAotIG5naHR0cDJf c3RyZWFtICpuZ2h0dHAyX3Nlc3Npb25fZ2V0X3Jvb3Rfc3RyZWFtKG5naHR0cDJfc2Vzc2lvbiAq c2Vzc2lvbikgewotLSAgcmV0dXJuICZzZXNzaW9uLT5yb290OwotKyAgKHZvaWQpc2Vzc2lvbjsK LSsKLSsgIHJldHVybiAmbmdodHRwMl9zdHJlYW1fcm9vdDsKLSB9Ci0gCi0gaW50IG5naHR0cDJf c2Vzc2lvbl9jaGVja19zZXJ2ZXJfc2Vzc2lvbihuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24pIHsK LUBAIC04MzEwLDc1ICs3OTYwLDIwIEBAIGludCBuZ2h0dHAyX3Nlc3Npb25fY2hlY2tfc2VydmVy X3Nlc3Npb24obmdodHRwMl9zZXNzaW9uICpzZXNzaW9uKSB7Ci0gaW50IG5naHR0cDJfc2Vzc2lv bl9jaGFuZ2Vfc3RyZWFtX3ByaW9yaXR5KAotICAgbmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLCBp bnQzMl90IHN0cmVhbV9pZCwKLSAgIGNvbnN0IG5naHR0cDJfcHJpb3JpdHlfc3BlYyAqcHJpX3Nw ZWMpIHsKLS0gIGludCBydjsKLS0gIG5naHR0cDJfc3RyZWFtICpzdHJlYW07Ci0tICBuZ2h0dHAy X3ByaW9yaXR5X3NwZWMgcHJpX3NwZWNfY29weTsKLS0KLS0gIGlmIChzZXNzaW9uLT5wZW5kaW5n X25vX3JmYzc1NDBfcHJpb3JpdGllcyA9PSAxKSB7Ci0tICAgIHJldHVybiAwOwotLSAgfQotLQot LSAgaWYgKHN0cmVhbV9pZCA9PSAwIHx8IHN0cmVhbV9pZCA9PSBwcmlfc3BlYy0+c3RyZWFtX2lk KSB7Ci0tICAgIHJldHVybiBOR0hUVFAyX0VSUl9JTlZBTElEX0FSR1VNRU5UOwotLSAgfQotLQot LSAgc3RyZWFtID0gbmdodHRwMl9zZXNzaW9uX2dldF9zdHJlYW1fcmF3KHNlc3Npb24sIHN0cmVh bV9pZCk7Ci0tICBpZiAoIXN0cmVhbSkgewotLSAgICByZXR1cm4gTkdIVFRQMl9FUlJfSU5WQUxJ RF9BUkdVTUVOVDsKLS0gIH0KLS0KLS0gIHByaV9zcGVjX2NvcHkgPSAqcHJpX3NwZWM7Ci0tICBu Z2h0dHAyX3ByaW9yaXR5X3NwZWNfbm9ybWFsaXplX3dlaWdodCgmcHJpX3NwZWNfY29weSk7Ci0t Ci0tICBydiA9IG5naHR0cDJfc2Vzc2lvbl9yZXByaW9yaXRpemVfc3RyZWFtKHNlc3Npb24sIHN0 cmVhbSwgJnByaV9zcGVjX2NvcHkpOwotLQotLSAgaWYgKG5naHR0cDJfaXNfZmF0YWwocnYpKSB7 Ci0tICAgIHJldHVybiBydjsKLS0gIH0KLSsgICh2b2lkKXNlc3Npb247Ci0rICAodm9pZClzdHJl YW1faWQ7Ci0rICAodm9pZClwcmlfc3BlYzsKLSAKLS0gIC8qIFdlIGRvbid0IGludGVudGlvbmFs bHkgY2FsbCBuZ2h0dHAyX3Nlc3Npb25fYWRqdXN0X2lkbGVfc3RyZWFtKCkKLS0gICAgIHNvIHRo YXQgaWRsZSBzdHJlYW0gY3JlYXRlZCBieSB0aGlzIGZ1bmN0aW9uLCBhbmQgZXhpc3Rpbmcgb25l cwotLSAgICAgYXJlIGtlcHQgZm9yIGFwcGxpY2F0aW9uLiAgV2Ugd2lsbCBhZGp1c3QgbnVtYmVy IG9mIGlkbGUgc3RyZWFtCi0tICAgICBpbiBuZ2h0dHAyX3Nlc3Npb25fbWVtX3NlbmQyIG9yIG5n aHR0cDJfc2Vzc2lvbl9tZW1fcmVjdjIgaXMKLS0gICAgIGNhbGxlZC4gKi8KLSAgIHJldHVybiAw OwotIH0KLSAKLSBpbnQgbmdodHRwMl9zZXNzaW9uX2NyZWF0ZV9pZGxlX3N0cmVhbShuZ2h0dHAy X3Nlc3Npb24gKnNlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW50MzJfdCBzdHJlYW1faWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgbmdodHRwMl9wcmlvcml0eV9zcGVjICpwcmlfc3BlYykgewotLSAgbmdodHRw Ml9zdHJlYW0gKnN0cmVhbTsKLS0gIG5naHR0cDJfcHJpb3JpdHlfc3BlYyBwcmlfc3BlY19jb3B5 OwotLQotLSAgaWYgKHNlc3Npb24tPnBlbmRpbmdfbm9fcmZjNzU0MF9wcmlvcml0aWVzID09IDEp IHsKLS0gICAgcmV0dXJuIDA7Ci0tICB9Ci0tCi0tICBpZiAoc3RyZWFtX2lkID09IDAgfHwgc3Ry ZWFtX2lkID09IHByaV9zcGVjLT5zdHJlYW1faWQgfHwKLS0gICAgICAhc2Vzc2lvbl9kZXRlY3Rf aWRsZV9zdHJlYW0oc2Vzc2lvbiwgc3RyZWFtX2lkKSkgewotLSAgICByZXR1cm4gTkdIVFRQMl9F UlJfSU5WQUxJRF9BUkdVTUVOVDsKLS0gIH0KLS0KLS0gIHN0cmVhbSA9IG5naHR0cDJfc2Vzc2lv bl9nZXRfc3RyZWFtX3JhdyhzZXNzaW9uLCBzdHJlYW1faWQpOwotLSAgaWYgKHN0cmVhbSkgewot LSAgICByZXR1cm4gTkdIVFRQMl9FUlJfSU5WQUxJRF9BUkdVTUVOVDsKLS0gIH0KLS0KLS0gIHBy aV9zcGVjX2NvcHkgPSAqcHJpX3NwZWM7Ci0tICBuZ2h0dHAyX3ByaW9yaXR5X3NwZWNfbm9ybWFs aXplX3dlaWdodCgmcHJpX3NwZWNfY29weSk7Ci0tCi0tICBzdHJlYW0gPQotLSAgICBuZ2h0dHAy X3Nlc3Npb25fb3Blbl9zdHJlYW0oc2Vzc2lvbiwgc3RyZWFtX2lkLCBOR0hUVFAyX1NUUkVBTV9G TEFHX05PTkUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHJpX3NwZWNfY29w eSwgTkdIVFRQMl9TVFJFQU1fSURMRSwgTlVMTCk7Ci0tICBpZiAoIXN0cmVhbSkgewotLSAgICBy ZXR1cm4gTkdIVFRQMl9FUlJfTk9NRU07Ci0tICB9Ci0rICAodm9pZClzZXNzaW9uOwotKyAgKHZv aWQpc3RyZWFtX2lkOwotKyAgKHZvaWQpcHJpX3NwZWM7Ci0gCi0tICAvKiBXZSBkb24ndCBpbnRl bnRpb25hbGx5IGNhbGwgbmdodHRwMl9zZXNzaW9uX2FkanVzdF9pZGxlX3N0cmVhbSgpCi0tICAg ICBzbyB0aGF0IGlkbGUgc3RyZWFtIGNyZWF0ZWQgYnkgdGhpcyBmdW5jdGlvbiwgYW5kIGV4aXN0 aW5nIG9uZXMKLS0gICAgIGFyZSBrZXB0IGZvciBhcHBsaWNhdGlvbi4gIFdlIHdpbGwgYWRqdXN0 IG51bWJlciBvZiBpZGxlIHN0cmVhbQotLSAgICAgaW4gbmdodHRwMl9zZXNzaW9uX21lbV9zZW5k MiBvciBuZ2h0dHAyX3Nlc3Npb25fbWVtX3JlY3YyIGlzCi0tICAgICBjYWxsZWQuICovCi0gICBy ZXR1cm4gMDsKLSB9Ci0gCi1kaWZmIC0tZ2l0IGEvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX3Nl c3Npb24uaCBiL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9zZXNzaW9uLmgKLWluZGV4IGVmOGY3 YjI3Li5lZGJlZjgwZCAxMDA2NDQKLS0tLSBhL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9zZXNz aW9uLmgKLSsrKyBiL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9zZXNzaW9uLmgKLUBAIC0yNyw3 ICsyNyw3IEBACi0gCi0gI2lmZGVmIEhBVkVfQ09ORklHX0gKLSAjICBpbmNsdWRlIDxjb25maWcu aD4KLS0jZW5kaWYgLyogSEFWRV9DT05GSUdfSCAqLwotKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVf Q09ORklHX0gpICovCi0gCi0gI2luY2x1ZGUgPG5naHR0cDIvbmdodHRwMi5oPgotICNpbmNsdWRl ICJuZ2h0dHAyX21hcC5oIgotQEAgLTQ1LDYgKzQ1LDggQEAKLSAgICBwcmVmYWNlIGhhbmRsaW5n LiAqLwotIGV4dGVybiBpbnQgbmdodHRwMl9lbmFibGVfc3RyaWN0X3ByZWZhY2U7Ci0gCi0rZXh0 ZXJuIG5naHR0cDJfc3RyZWFtIG5naHR0cDJfc3RyZWFtX3Jvb3Q7Ci0rCi0gLyoKLSAgKiBPcHRp b24gZmxhZ3MuCi0gICovCi1AQCAtNTMsOCArNTUsNiBAQCB0eXBlZGVmIGVudW0gewotICAgTkdI VFRQMl9PUFRNQVNLX05PX1JFQ1ZfQ0xJRU5UX01BR0lDID0gMSA8PCAxLAotICAgTkdIVFRQMl9P UFRNQVNLX05PX0hUVFBfTUVTU0FHSU5HID0gMSA8PCAyLAotICAgTkdIVFRQMl9PUFRNQVNLX05P X0FVVE9fUElOR19BQ0sgPSAxIDw8IDMsCi0tICBOR0hUVFAyX09QVE1BU0tfTk9fQ0xPU0VEX1NU UkVBTVMgPSAxIDw8IDQsCi0tICBOR0hUVFAyX09QVE1BU0tfU0VSVkVSX0ZBTExCQUNLX1JGQzc1 NDBfUFJJT1JJVElFUyA9IDEgPDwgNSwKLSAgIE5HSFRUUDJfT1BUTUFTS19OT19SRkM5MTEzX0xF QURJTkdfQU5EX1RSQUlMSU5HX1dTX1ZBTElEQVRJT04gPSAxIDw8IDYsCi0gfSBuZ2h0dHAyX29w dG1hc2s7Ci0gCi1AQCAtODksMTAgKzg5LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgewotIC8qIFRoZSBk ZWZhdWx0IG1heGltdW0gbnVtYmVyIG9mIGluY29taW5nIHJlc2VydmVkIHN0cmVhbXMgKi8KLSAj ZGVmaW5lIE5HSFRUUDJfTUFYX0lOQ09NSU5HX1JFU0VSVkVEX1NUUkVBTVMgMjAwCi0gCi0tLyog RXZlbiBpZiB3ZSBoYXZlIGxlc3MgU0VUVElOR1NfTUFYX0NPTkNVUlJFTlRfU1RSRUFNUyB0aGFu IHRoaXMKLS0gICBudW1iZXIsIHdlIGtlZXAgTkdIVFRQMl9NSU5fSURMRV9TVFJFQU1TIHN0cmVh bXMgaW4gaWRsZSBzdGF0ZSAqLwotLSNkZWZpbmUgTkdIVFRQMl9NSU5fSURMRV9TVFJFQU1TIDE2 Ci0tCi0gLyogVGhlIG1heGltdW0gbnVtYmVyIG9mIGl0ZW1zIGluIG91dGJvdW5kIHF1ZXVlLCB3 aGljaCBpcyBjb25zaWRlcmVkCi0gICAgYXMgZmxvb2RpbmcgY2F1c2VkIGJ5IHBlZXIuICBBbGwg ZnJhbWVzIGFyZSBub3QgY29uc2lkZXJlZCBoZXJlLgotICAgIFdlIG9ubHkgY29uc2lkZXIgUElO RyArIEFDSyBhbmQgU0VUVElOR1MgKyBBQ0suICBUaGlzIGlzIGJlY2F1c2UKLUBAIC0xMTAsNiAr MTA2LDEwIEBAIHR5cGVkZWYgc3RydWN0IHsKLSAjZGVmaW5lIE5HSFRUUDJfREVGQVVMVF9TVFJF QU1fUkVTRVRfQlVSU1QgMTAwMAotICNkZWZpbmUgTkdIVFRQMl9ERUZBVUxUX1NUUkVBTV9SRVNF VF9SQVRFIDMzCi0gCi0rLyogVGhlIGRlZmF1bHQgdmFsdWVzIGZvciBnbGl0Y2ggcmF0ZSBsaW1p dGVyLiAqLwotKyNkZWZpbmUgTkdIVFRQMl9ERUZBVUxUX0dMSVRDSF9CVVJTVCAxMDAwCi0rI2Rl ZmluZSBOR0hUVFAyX0RFRkFVTFRfR0xJVENIX1JBVEUgMzMKLSsKLSAvKiBUaGUgZGVmYXVsdCBt YXggbnVtYmVyIG9mIENPTlRJTlVBVElPTiBmcmFtZXMgZm9sbG93aW5nIGFuIGluY29taW5nCi0g ICAgSEVBREVSIGZyYW1lLiAqLwotICNkZWZpbmUgTkdIVFRQMl9ERUZBVUxUX01BWF9DT05USU5V QVRJT05TIDgKLUBAIC0yMDUsOCArMjA1LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgbmdodHRwMl9pbmZs aWdodF9zZXR0aW5ncyBuZ2h0dHAyX2luZmxpZ2h0X3NldHRpbmdzOwotIAotIHN0cnVjdCBuZ2h0 dHAyX3Nlc3Npb24gewotICAgbmdodHRwMl9tYXAgLyogPG5naHR0cDJfc3RyZWFtKj4gKi8gc3Ry ZWFtczsKLS0gIC8qIHJvb3Qgb2YgZGVwZW5kZW5jeSB0cmVlKi8KLS0gIG5naHR0cDJfc3RyZWFt IHJvb3Q7Ci0gICAvKiBRdWV1ZSBmb3Igb3V0Ym91bmQgdXJnZW50IGZyYW1lcyAoUElORyBhbmQg U0VUVElOR1MpICovCi0gICBuZ2h0dHAyX291dGJvdW5kX3F1ZXVlIG9iX3VyZ2VudDsKLSAgIC8q IFF1ZXVlIGZvciBub24tREFUQSBmcmFtZXMgKi8KLUBAIC0yMjksMjYgKzIyNywxNCBAQCBzdHJ1 Y3QgbmdodHRwMl9zZXNzaW9uIHsKLSAgIC8qIE1lbW9yeSBhbGxvY2F0b3IgKi8KLSAgIG5naHR0 cDJfbWVtIG1lbTsKLSAgIHZvaWQgKnVzZXJfZGF0YTsKLS0gIC8qIFBvaW50cyB0byB0aGUgbGF0 ZXN0IGluY29taW5nIGNsb3NlZCBzdHJlYW0uICBOVUxMIGlmIHRoZXJlIGlzIG5vCi0tICAgICBj bG9zZWQgc3RyZWFtLiAgT25seSB1c2VkIHdoZW4gc2Vzc2lvbiBpcyBpbml0aWFsaXplZCBhcwot LSAgICAgc2VydmVyLiAqLwotLSAgbmdodHRwMl9zdHJlYW0gKmNsb3NlZF9zdHJlYW1faGVhZDsK LS0gIC8qIFBvaW50cyB0byB0aGUgb2xkZXN0IGluY29taW5nIGNsb3NlZCBzdHJlYW0uICBOVUxM IGlmIHRoZXJlIGlzIG5vCi0tICAgICBjbG9zZWQgc3RyZWFtLiAgT25seSB1c2VkIHdoZW4gc2Vz c2lvbiBpcyBpbml0aWFsaXplZCBhcwotLSAgICAgc2VydmVyLiAqLwotLSAgbmdodHRwMl9zdHJl YW0gKmNsb3NlZF9zdHJlYW1fdGFpbDsKLS0gIC8qIFBvaW50cyB0byB0aGUgbGF0ZXN0IGlkbGUg c3RyZWFtLiAgTlVMTCBpZiB0aGVyZSBpcyBubyBpZGxlCi0tICAgICBzdHJlYW0uICBPbmx5IHVz ZWQgd2hlbiBzZXNzaW9uIGlzIGluaXRpYWxpemVkIGFzIHNlcnZlciAuKi8KLS0gIG5naHR0cDJf c3RyZWFtICppZGxlX3N0cmVhbV9oZWFkOwotLSAgLyogUG9pbnRzIHRvIHRoZSBvbGRlc3QgaWRs ZSBzdHJlYW0uICBOVUxMIGlmIHRoZXJlIGlzIG5vIGlkbGUKLS0gICAgIHN0cmVhbS4gIE9ubHkg dXNlZCB3aGVuIHNlc3Npb24gaXMgaW5pdGlhbGl6ZWQgYXMgZXJ2ZXIuICovCi0tICBuZ2h0dHAy X3N0cmVhbSAqaWRsZV9zdHJlYW1fdGFpbDsKLSAgIC8qIFF1ZXVlIG9mIEluLWZsaWdodCBTRVRU SU5HUyB2YWx1ZXMuICBTRVRUSU5HUyBiZWFyaW5nIEFDSyBpcyBub3QKLSAgICAgIGNvbnNpZGVy ZWQgYXMgaW4tZmxpZ2h0LiAqLwotICAgbmdodHRwMl9pbmZsaWdodF9zZXR0aW5ncyAqaW5mbGln aHRfc2V0dGluZ3NfaGVhZDsKLSAgIC8qIFN0cmVhbSByZXNldCByYXRlIGxpbWl0ZXIuICBJZiBy ZWNlaXZpbmcgZXhjZXNzaXZlIGFtb3VudCBvZgotICAgICAgc3RyZWFtIHJlc2V0cywgR09BV0FZ IHdpbGwgYmUgc2VudC4gKi8KLSAgIG5naHR0cDJfcmF0ZWxpbSBzdHJlYW1fcmVzZXRfcmF0ZWxp bTsKLSsgIC8qIFJhdGUgbGltaXRlciBmb3IgYWxsIGtpbmRzIG9mIGdsaXRjaGVzLiAqLwotKyAg bmdodHRwMl9yYXRlbGltIGdsaXRjaF9yYXRlbGltOwotICAgLyogU2VxdWVudGlhbCBudW1iZXIg YWNyb3NzIGFsbCBzdHJlYW1zIHRvIHByb2Nlc3Mgc3RyZWFtcyBpbgotICAgICAgRklGTy4gKi8K LSAgIHVpbnQ2NF90IHN0cmVhbV9zZXE7Ci1AQCAtMjc2LDEwICsyNjIsOSBAQCBzdHJ1Y3Qgbmdo dHRwMl9zZXNzaW9uIHsKLSAgICAgIHxjbG9zZWRfc3RyZWFtX2hlYWR8LiAgVGhlIGN1cnJlbnQg aW1wbGVtZW50YXRpb24gb25seSBrZWVwcwotICAgICAgaW5jb21pbmcgc3RyZWFtcyBhbmQgc2Vz c2lvbiBpcyBpbml0aWFsaXplZCBhcyBzZXJ2ZXIuICovCi0gICBzaXplX3QgbnVtX2Nsb3NlZF9z dHJlYW1zOwotLSAgLyogVGhlIG51bWJlciBvZiBpZGxlIHN0cmVhbXMga2VwdCBpbiB8c3RyZWFt c3wgaGFzaC4gIFRoZSBpZGxlCi0tICAgICBzdHJlYW1zIGNhbiBiZSBhY2Nlc3NlZCB0aHJvdWdo IGRvdWJseSBsaW5rZWQgbGlzdAotLSAgICAgfGlkbGVfc3RyZWFtX2hlYWR8LiAgVGhlIGN1cnJl bnQgaW1wbGVtZW50YXRpb24gb25seSBrZWVwcyBpZGxlCi0tICAgICBzdHJlYW1zIGlmIHNlc3Np b24gaXMgaW5pdGlhbGl6ZWQgYXMgc2VydmVyLiAqLwotKyAgLyogVGhlIG51bWJlciBvZiBpZGxl IHN0cmVhbXMga2VwdCBpbiB8c3RyZWFtc3wgaGFzaC4gIFRoZSBjdXJyZW50Ci0rICAgICBpbXBs ZW1lbnRhdGlvbiBvbmx5IGtlZXBzIGlkbGUgc3RyZWFtcyBpZiBzZXNzaW9uIGlzIGluaXRpYWxp emVkCi0rICAgICBhcyBzZXJ2ZXIuICovCi0gICBzaXplX3QgbnVtX2lkbGVfc3RyZWFtczsKLSAg IC8qIFRoZSBudW1iZXIgb2YgYnl0ZXMgYWxsb2NhdGVkIGZvciBudmJ1ZiAqLwotICAgc2l6ZV90 IG52YnVmbGVuOwotQEAgLTM2Miw4ICszNDcsNiBAQCBzdHJ1Y3QgbmdodHRwMl9zZXNzaW9uIHsK LSAgIC8qIFVuYWNrZWQgbG9jYWwgU0VUVElOR1NfTk9fUkZDNzU0MF9QUklPUklUSUVTIHZhbHVl LCB3aGljaCBpcwotICAgICAgZWZmZWN0aXZlIGJlZm9yZSBpdCBpcyBhY2tub3dsZWRnZWQuICov Ci0gICB1aW50OF90IHBlbmRpbmdfbm9fcmZjNzU0MF9wcmlvcml0aWVzOwotLSAgLyogVHVybiBv biBmYWxsYmFjayB0byBSRkMgNzU0MCBwcmlvcml0aWVzOyBmb3Igc2VydmVyIHVzZSBvbmx5LiAq LwotLSAgdWludDhfdCBmYWxsYmFja19yZmM3NTQwX3ByaW9yaXRpZXM7Ci0gICAvKiBOb256ZXJv IGlmIHRoZSBzZXNzaW9uIGlzIHNlcnZlciBzaWRlLiAqLwotICAgdWludDhfdCBzZXJ2ZXI7Ci0g ICAvKiBGbGFncyBpbmRpY2F0aW5nIEdPQVdBWSBpcyBzZW50IGFuZC9vciByZWNlaXZlZC4gVGhl IGZsYWdzIGFyZQotQEAgLTQyNSw2ICs0MDgsMTMgQEAgaW50IG5naHR0cDJfc2Vzc2lvbl9pc19t eV9zdHJlYW1faWQobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotIGludCBuZ2h0dHAyX3Nlc3Np b25fYWRkX2l0ZW0obmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbmdodHRwMl9vdXRib3VuZF9pdGVtICppdGVtKTsKLSAKLSsvKgotKyAqIFRo aXMgZnVuY3Rpb24gd3JhcHMgYXJvdW5kIG5naHR0cDJfc2Vzc2lvbl9hZGRfcnN0X3N0cmVhbV9j b250aW51ZQotKyAqIHdpdGggY29udGludWVfd2l0aG91dF9zdHJlYW0gPSAxLgotKyAqLwotK2lu dCBuZ2h0dHAyX3Nlc3Npb25fYWRkX3JzdF9zdHJlYW0obmdodHRwMl9zZXNzaW9uICpzZXNzaW9u LCBpbnQzMl90IHN0cmVhbV9pZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVpbnQzMl90IGVycm9yX2NvZGUpOwotKwotIC8qCi0gICogQWRkcyBSU1RfU1RSRUFNIGZyYW1l IGZvciB0aGUgc3RyZWFtIHxzdHJlYW1faWR8IHdpdGggdGhlIGVycm9yCi0gICogY29kZSB8ZXJy b3JfY29kZXwuIFRoaXMgaXMgYSBjb252ZW5pZW50IGZ1bmN0aW9uIGJ1aWx0IG9uIHRvcCBvZgot QEAgLTQzMiw3ICs0MjIsOSBAQCBpbnQgbmdodHRwMl9zZXNzaW9uX2FkZF9pdGVtKG5naHR0cDJf c2Vzc2lvbiAqc2Vzc2lvbiwKLSAgKgotICAqIFRoaXMgZnVuY3Rpb24gc2ltcGx5IHJldHVybnMg MCB3aXRob3V0IGFkZGluZyBSU1RfU1RSRUFNIGZyYW1lIGlmCi0gICogZ2l2ZW4gc3RyZWFtIGlz IGluIE5HSFRUUDJfU1RSRUFNX0NMT1NJTkcgc3RhdGUsIGJlY2F1c2UgbXVsdGlwbGUKLS0gKiBS U1RfU1RSRUFNIGZvciBhIHN0cmVhbSBpcyByZWR1bmRhbnQuCi0rICogUlNUX1NUUkVBTSBmb3Ig YSBzdHJlYW0gaXMgcmVkdW5kYW50LiAgSXQgYWxzbyByZXR1cm5zIDAgd2l0aG91dAotKyAqIGFk ZGluZyB0aGUgZnJhbWUgaWYgfGNvbnRpbnVlX3dpdGhvdXRfc3RyZWFtfCBpcyBub256ZXJvLCBh bmQKLSsgKiBzdHJlYW0gd2FzIGFscmVhZHkgZ29uZS4KLSAgKgotICAqIFRoaXMgZnVuY3Rpb24g cmV0dXJucyAwIGlmIGl0IHN1Y2NlZWRzLCBvciBvbmUgb2YgdGhlIGZvbGxvd2luZwotICAqIG5l Z2F0aXZlIGVycm9yIGNvZGVzOgotQEAgLTQ0MCw4ICs0MzIsMTAgQEAgaW50IG5naHR0cDJfc2Vz c2lvbl9hZGRfaXRlbShuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0gICogTkdIVFRQMl9FUlJf Tk9NRU0KLSAgKiAgICAgT3V0IG9mIG1lbW9yeS4KLSAgKi8KLS1pbnQgbmdodHRwMl9zZXNzaW9u X2FkZF9yc3Rfc3RyZWFtKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwgaW50MzJfdCBzdHJlYW1f aWQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBlcnJvcl9j b2RlKTsKLStpbnQgbmdodHRwMl9zZXNzaW9uX2FkZF9yc3Rfc3RyZWFtX2NvbnRpbnVlKG5naHR0 cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludDMyX3Qgc3RyZWFtX2lkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdWludDMyX3QgZXJyb3JfY29kZSwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb250aW51ZV93aXRob3V0X3N0cmVhbSk7 Ci0gCi0gLyoKLSAgKiBBZGRzIFBJTkcgZnJhbWUuIFRoaXMgaXMgYSBjb252ZW5pZW50IGZ1bmN0 aW9uIGJ1aWx0IG9uIHRvcCBvZgotQEAgLTUyNywxNSArNTIxLDkgQEAgaW50IG5naHR0cDJfc2Vz c2lvbl9hZGRfc2V0dGluZ3MobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLCB1aW50OF90IGZsYWdz LAotICAqCi0gICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgcG9pbnRlciB0byBjcmVhdGVkIG5l dyBzdHJlYW0gb2JqZWN0LCBvcgotICAqIE5VTEwuCi0tICoKLS0gKiBUaGlzIGZ1bmN0aW9uIGFk anVzdHMgbmVpdGhlciB0aGUgbnVtYmVyIG9mIGNsb3NlZCBzdHJlYW1zIG9yIGlkbGUKLS0gKiBz dHJlYW1zLiAgVGhlIGNhbGxlciBzaG91bGQgbWFudWFsbHkgY2FsbAotLSAqIG5naHR0cDJfc2Vz c2lvbl9hZGp1c3RfY2xvc2VkX3N0cmVhbSgpIG9yCi0tICogbmdodHRwMl9zZXNzaW9uX2FkanVz dF9pZGxlX3N0cmVhbSgpIHJlc3BlY3RpdmVseS4KLSAgKi8KLSBuZ2h0dHAyX3N0cmVhbSAqbmdo dHRwMl9zZXNzaW9uX29wZW5fc3RyZWFtKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgc3RyZWFtX2lk LCB1aW50OF90IGZsYWdzLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbmdodHRwMl9wcmlvcml0eV9zcGVjICpwcmlfc3BlYywKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5naHR0cDJfc3RyZWFtX3N0YXRlIGluaXRpYWxf c3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk ICpzdHJlYW1fdXNlcl9kYXRhKTsKLSAKLUBAIC01NDQsMTEgKzUzMiw2IEBAIG5naHR0cDJfc3Ry ZWFtICpuZ2h0dHAyX3Nlc3Npb25fb3Blbl9zdHJlYW0obmdodHRwMl9zZXNzaW9uICpzZXNzaW9u LAotICAqIGlzIGluZGljYXRlZCBieSB0aGUgfGVycm9yX2NvZGV8LiBXaGVuIGNsb3NpbmcgdGhl IHN0cmVhbSwKLSAgKiBvbl9zdHJlYW1fY2xvc2VfY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQuCi0g ICoKLS0gKiBJZiB0aGUgc2Vzc2lvbiBpcyBpbml0aWFsaXplZCBhcyBzZXJ2ZXIgYW5kIHxzdHJl YW18IGlzIGluY29taW5nCi0tICogc3RyZWFtLCBzdHJlYW0gaXMganVzdCBtYXJrZWQgY2xvc2Vk IGFuZCB0aGlzIGZ1bmN0aW9uIGNhbGxzCi0tICogbmdodHRwMl9zZXNzaW9uX2tlZXBfY2xvc2Vk X3N0cmVhbSgpIHdpdGggfHN0cmVhbXwuICBPdGhlcndpc2UsCi0tICogfHN0cmVhbXwgd2lsbCBi ZSBkZWxldGVkIGZyb20gbWVtb3J5LgotLSAqCi0gICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIDAg aWYgaXQgc3VjY2VlZHMsIG9yIG9uZSB0aGUgZm9sbG93aW5nCi0gICogbmVnYXRpdmUgZXJyb3Ig Y29kZXM6Ci0gICoKLUBAIC01NjUsNjMgKzU0OCw5IEBAIGludCBuZ2h0dHAyX3Nlc3Npb25fY2xv c2Vfc3RyZWFtKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwgaW50MzJfdCBzdHJlYW1faWQsCi0g LyoKLSAgKiBEZWxldGVzIHxzdHJlYW18IGZyb20gbWVtb3J5LiAgQWZ0ZXIgdGhpcyBmdW5jdGlv biByZXR1cm5zLCBzdHJlYW0KLSAgKiBjYW5ub3QgYmUgYWNjZXNzZWQuCi0tICoKLS0gKiBUaGlz IGZ1bmN0aW9uIHJldHVybnMgMCBpZiBpdCBzdWNjZWVkcywgb3Igb25lIHRoZSBmb2xsb3dpbmcK LS0gKiBuZWdhdGl2ZSBlcnJvciBjb2RlczoKLS0gKgotLSAqIE5HSFRUUDJfRVJSX05PTUVNCi0t ICogICAgIE91dCBvZiBtZW1vcnkKLS0gKi8KLS1pbnQgbmdodHRwMl9zZXNzaW9uX2Rlc3Ryb3lf c3RyZWFtKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG5naHR0cDJfc3RyZWFtICpzdHJlYW0pOwotLQotLS8qCi0tICogVHJpZXMg dG8ga2VlcCBpbmNvbWluZyBjbG9zZWQgc3RyZWFtIHxzdHJlYW18LiAgRHVlIHRvIHRoZQotLSAq IGxpbWl0YXRpb24gb2YgbWF4aW11bSBudW1iZXIgb2Ygc3RyZWFtcyBpbiBtZW1vcnksIHxzdHJl YW18IGlzIG5vdAotLSAqIGNsb3NlZCBhbmQganVzdCBkZWxldGVkIGZyb20gbWVtb3J5IChzZWUK LS0gKiBuZ2h0dHAyX3Nlc3Npb25fZGVzdHJveV9zdHJlYW0pLgotLSAqLwotLXZvaWQgbmdodHRw Ml9zZXNzaW9uX2tlZXBfY2xvc2VkX3N0cmVhbShuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5naHR0cDJfc3RyZWFtICpz dHJlYW0pOwotLQotLS8qCi0tICogQXBwZW5kcyB8c3RyZWFtfCB0byBsaW5rZWQgbGlzdCB8c2Vz c2lvbi0+aWRsZV9zdHJlYW1faGVhZHwuICBXZQotLSAqIGFwcGx5IGZpeGVkIGxpbWl0IGZvciBs aXN0IHNpemUuICBUbyBmaXQgaW50byB0aGF0IGxpbWl0LCBvbmUgb3IKLS0gKiBtb3JlIG9sZGVz dCBzdHJlYW1zIGFyZSByZW1vdmVkIGZyb20gbGlzdCBhcyBuZWNlc3NhcnkuCi0gICovCi0tdm9p ZCBuZ2h0dHAyX3Nlc3Npb25fa2VlcF9pZGxlX3N0cmVhbShuZ2h0dHAyX3Nlc3Npb24gKnNlc3Np b24sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2h0dHAyX3N0cmVh bSAqc3RyZWFtKTsKLS0KLS0vKgotLSAqIERldGFjaGVzIHxzdHJlYW18IGZyb20gaWRsZSBzdHJl YW1zIGxpbmtlZCBsaXN0LgotLSAqLwotLXZvaWQgbmdodHRwMl9zZXNzaW9uX2RldGFjaF9pZGxl X3N0cmVhbShuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG5naHR0cDJfc3RyZWFtICpzdHJlYW0pOwotLQotLS8qCi0tICog RGVsZXRlcyBjbG9zZWQgc3RyZWFtIHRvIGVuc3VyZSB0aGF0IG51bWJlciBvZiBpbmNvbWluZyBz dHJlYW1zCi0tICogaW5jbHVkaW5nIGFjdGl2ZSBhbmQgY2xvc2VkIGlzIGluIHRoZSBtYXhpbXVt IG51bWJlciBvZiBhbGxvd2VkCi0tICogc3RyZWFtLgotLSAqCi0tICogVGhpcyBmdW5jdGlvbiBy ZXR1cm5zIDAgaWYgaXQgc3VjY2VlZHMsIG9yIG9uZSB0aGUgZm9sbG93aW5nCi0tICogbmVnYXRp dmUgZXJyb3IgY29kZXM6Ci0tICoKLS0gKiBOR0hUVFAyX0VSUl9OT01FTQotLSAqICAgICBPdXQg b2YgbWVtb3J5Ci0tICovCi0taW50IG5naHR0cDJfc2Vzc2lvbl9hZGp1c3RfY2xvc2VkX3N0cmVh bShuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24pOwotLQotLS8qCi0tICogRGVsZXRlcyBpZGxlIHN0 cmVhbSB0byBlbnN1cmUgdGhhdCBudW1iZXIgb2YgaWRsZSBzdHJlYW1zIGlzIGluCi0tICogY2Vy dGFpbiBsaW1pdC4KLS0gKgotLSAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyAwIGlmIGl0IHN1Y2Nl ZWRzLCBvciBvbmUgdGhlIGZvbGxvd2luZwotLSAqIG5lZ2F0aXZlIGVycm9yIGNvZGVzOgotLSAq Ci0tICogTkdIVFRQMl9FUlJfTk9NRU0KLS0gKiAgICAgT3V0IG9mIG1lbW9yeQotLSAqLwotLWlu dCBuZ2h0dHAyX3Nlc3Npb25fYWRqdXN0X2lkbGVfc3RyZWFtKG5naHR0cDJfc2Vzc2lvbiAqc2Vz c2lvbik7Ci0rdm9pZCBuZ2h0dHAyX3Nlc3Npb25fZGVzdHJveV9zdHJlYW0obmdodHRwMl9zZXNz aW9uICpzZXNzaW9uLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5naHR0 cDJfc3RyZWFtICpzdHJlYW0pOwotIAotIC8qCi0gICogSWYgZnVydGhlciByZWNlcHRpb25zIGFu ZCB0cmFuc21pc3Npb25zIG92ZXIgdGhlIHN0cmVhbSB8c3RyZWFtX2lkfAotQEAgLTkxNSwyNCAr ODQ0LDYgQEAgaW50IG5naHR0cDJfc2Vzc2lvbl91cGRhdGVfbG9jYWxfc2V0dGluZ3MobmdodHRw Ml9zZXNzaW9uICpzZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG5naHR0cDJfc2V0dGluZ3NfZW50cnkgKml2LAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBuaXYpOwotIAotLS8qCi0tICogUmUtcHJpb3Jp dGl6ZSB8c3RyZWFtfC4gVGhlIG5ldyBwcmlvcml0eSBzcGVjaWZpY2F0aW9uIGlzCi0tICogfHBy aV9zcGVjfC4gIENhbGxlciBtdXN0IGVuc3VyZSB0aGF0IHN0cmVhbS0+aGQuc3RyZWFtX2lkICE9 Ci0tICogcHJpX3NwZWMtPnN0cmVhbV9pZC4KLS0gKgotLSAqIFRoaXMgZnVuY3Rpb24gZG9lcyBu b3QgYWRqdXN0IHRoZSBudW1iZXIgb2YgaWRsZSBzdHJlYW1zLiAgVGhlCi0tICogY2FsbGVyIHNo b3VsZCBjYWxsIG5naHR0cDJfc2Vzc2lvbl9hZGp1c3RfaWRsZV9zdHJlYW0oKSBsYXRlci4KLS0g KgotLSAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyAwIGlmIGl0IHN1Y2NlZWRzLCBvciBvbmUgb2Yg dGhlIGZvbGxvd2luZwotLSAqIG5lZ2F0aXZlIGVycm9yIGNvZGVzOgotLSAqCi0tICogTkdIVFRQ Ml9FUlJfTk9NRU0KLS0gKiAgICAgT3V0IG9mIG1lbW9yeQotLSAqLwotLWludCBuZ2h0dHAyX3Nl c3Npb25fcmVwcmlvcml0aXplX3N0cmVhbShuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5naHR0cDJfc3RyZWFtICpzdHJl YW0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5naHR0 cDJfcHJpb3JpdHlfc3BlYyAqcHJpX3NwZWMpOwotLQotIC8qCi0gICogVGVybWluYXRlcyBjdXJy ZW50IHxzZXNzaW9ufCB3aXRoIHRoZSB8ZXJyb3JfY29kZXwuICBUaGUgfHJlYXNvbnwKLSAgKiBp cyBOVUxMLXRlcm1pbmF0ZWQgZGVidWcgc3RyaW5nLgotQEAgLTk4MSw0ICs4OTIsNCBAQCBpbnQg bmdodHRwMl9zZXNzaW9uX3VwZGF0ZV9yZWN2X3N0cmVhbV93aW5kb3dfc2l6ZShuZ2h0dHAyX3Nl c3Npb24gKnNlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2l6ZV90IGRlbHRhX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNlbmRfd2luZG93X3VwZGF0ZSk7Ci0gCi0t I2VuZGlmIC8qIE5HSFRUUDJfU0VTU0lPTl9IICovCi0rI2VuZGlmIC8qICFkZWZpbmVkKE5HSFRU UDJfU0VTU0lPTl9IKSAqLwotZGlmZiAtLWdpdCBhL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9z dHJlYW0uYyBiL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9zdHJlYW0uYwotaW5kZXggZjIzNjI0 NDcuLjBmMmQzNjU4IDEwMDY0NAotLS0tIGEvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX3N0cmVh bS5jCi0rKysgYi9kZXBzL25naHR0cDIvbGliL25naHR0cDJfc3RyZWFtLmMKLUBAIC0yNSw0NSAr MjUsMTcgQEAKLSAjaW5jbHVkZSAibmdodHRwMl9zdHJlYW0uaCIKLSAKLSAjaW5jbHVkZSA8YXNz ZXJ0Lmg+Ci0tI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gCi0gI2luY2x1ZGUgIm5naHR0cDJfc2Vzc2lv bi5oIgotICNpbmNsdWRlICJuZ2h0dHAyX2hlbHBlci5oIgotICNpbmNsdWRlICJuZ2h0dHAyX2Rl YnVnLmgiCi0gI2luY2x1ZGUgIm5naHR0cDJfZnJhbWUuaCIKLSAKLS0vKiBNYXhpbXVtIGRpc3Rh bmNlIGJldHdlZW4gYW55IHR3byBzdHJlYW0ncyBjeWNsZSBpbiB0aGUgc2FtZQotLSAgIHByaW9y aXR5IHF1ZXVlLiAgSW1hZ2luZSBzdHJlYW0gQSdzIGN5Y2xlIGlzIEEsIGFuZCBzdHJlYW0gQidz Ci0tICAgY3ljbGUgaXMgQiwgYW5kIEEgPCBCLiAgVGhlIGN5Y2xlIGlzIHVuc2lnbmVkIDMyIGJp dCBpbnRlZ2VyLCBpdAotLSAgIG1heSBnZXQgb3ZlcmZsb3cuICBCZWNhdXNlIG9mIGhvdyB3ZSBj YWxjdWxhdGUgdGhlIG5leHQgY3ljbGUKLS0gICB2YWx1ZSwgaWYgQiAtIEEgaXMgbGVzcyB0aGFu IG9yIGVxdWFscyB0bwotLSAgIE5HSFRUUDJfTUFYX0NZQ0xFX0RJU1RBTkNFLCBBIGFuZCBCIGFy ZSBpbiB0aGUgc2FtZSBzY2FsZSwgaW4gb3RoZXIKLS0gICB3b3JkcywgQiBpcyByZWFsbHkgZ3Jl YXRlciB0aGFuIG9yIGVxdWFsIHRvIEEuICBPdGhlcndpc2UsIEEgaXMgYQotLSAgIHJlc3VsdCBv ZiBvdmVyZmxvdywgYW5kIGl0IGlzIGFjdHVhbGx5IEEgPiBCIGlmIHdlIGNvbnNpZGVyIHRoYXQK LS0gICBmYWN0LiAqLwotLSNkZWZpbmUgTkdIVFRQMl9NQVhfQ1lDTEVfRElTVEFOQ0UgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAoKHVpbnQ2NF90KU5H SFRUUDJfTUFYX0ZSQU1FX1NJWkVfTUFYICogMjU2ICsgMjU1KQotLQotLXN0YXRpYyBpbnQgc3Ry ZWFtX2xlc3MoY29uc3Qgdm9pZCAqbGhzeCwgY29uc3Qgdm9pZCAqcmhzeCkgewotLSAgY29uc3Qg bmdodHRwMl9zdHJlYW0gKmxocywgKnJoczsKLS0KLS0gIGxocyA9IG5naHR0cDJfc3RydWN0X29m KGxoc3gsIG5naHR0cDJfc3RyZWFtLCBwcV9lbnRyeSk7Ci0tICByaHMgPSBuZ2h0dHAyX3N0cnVj dF9vZihyaHN4LCBuZ2h0dHAyX3N0cmVhbSwgcHFfZW50cnkpOwotLQotLSAgaWYgKGxocy0+Y3lj bGUgPT0gcmhzLT5jeWNsZSkgewotLSAgICByZXR1cm4gbGhzLT5zZXEgPCByaHMtPnNlcTsKLS0g IH0KLS0KLS0gIHJldHVybiByaHMtPmN5Y2xlIC0gbGhzLT5jeWNsZSA8PSBOR0hUVFAyX01BWF9D WUNMRV9ESVNUQU5DRTsKLS19Ci0tCi0gdm9pZCBuZ2h0dHAyX3N0cmVhbV9pbml0KG5naHR0cDJf c3RyZWFtICpzdHJlYW0sIGludDMyX3Qgc3RyZWFtX2lkLAotICAgICAgICAgICAgICAgICAgICAg ICAgICB1aW50OF90IGZsYWdzLCBuZ2h0dHAyX3N0cmVhbV9zdGF0ZSBpbml0aWFsX3N0YXRlLAot LSAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHdlaWdodCwgaW50MzJfdCByZW1vdGVf aW5pdGlhbF93aW5kb3dfc2l6ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBy ZW1vdGVfaW5pdGlhbF93aW5kb3dfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 MzJfdCBsb2NhbF9pbml0aWFsX3dpbmRvd19zaXplLAotLSAgICAgICAgICAgICAgICAgICAgICAg ICB2b2lkICpzdHJlYW1fdXNlcl9kYXRhLCBuZ2h0dHAyX21lbSAqbWVtKSB7Ci0tICBuZ2h0dHAy X3BxX2luaXQoJnN0cmVhbS0+b2JxLCBzdHJlYW1fbGVzcywgbWVtKTsKLS0KLSsgICAgICAgICAg ICAgICAgICAgICAgICAgdm9pZCAqc3RyZWFtX3VzZXJfZGF0YSkgewotICAgc3RyZWFtLT5zdHJl YW1faWQgPSBzdHJlYW1faWQ7Ci0gICBzdHJlYW0tPmZsYWdzID0gZmxhZ3M7Ci0gICBzdHJlYW0t PnN0YXRlID0gaW5pdGlhbF9zdGF0ZTsKLUBAIC03Nyw0MjggKzQ5LDM2IEBAIHZvaWQgbmdodHRw Ml9zdHJlYW1faW5pdChuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtLCBpbnQzMl90IHN0cmVhbV9pZCwK LSAgIHN0cmVhbS0+cmVjdl9yZWR1Y3Rpb24gPSAwOwotICAgc3RyZWFtLT53aW5kb3dfdXBkYXRl X3F1ZXVlZCA9IDA7Ci0gCi0tICBzdHJlYW0tPmRlcF9wcmV2ID0gTlVMTDsKLS0gIHN0cmVhbS0+ ZGVwX25leHQgPSBOVUxMOwotLSAgc3RyZWFtLT5zaWJfcHJldiA9IE5VTEw7Ci0tICBzdHJlYW0t PnNpYl9uZXh0ID0gTlVMTDsKLS0KLS0gIHN0cmVhbS0+Y2xvc2VkX3ByZXYgPSBOVUxMOwotICAg c3RyZWFtLT5jbG9zZWRfbmV4dCA9IE5VTEw7Ci0gCi0tICBzdHJlYW0tPndlaWdodCA9IHdlaWdo dDsKLS0gIHN0cmVhbS0+c3VtX2RlcF93ZWlnaHQgPSAwOwotLQotICAgc3RyZWFtLT5odHRwX2Zs YWdzID0gTkdIVFRQMl9IVFRQX0ZMQUdfTk9ORTsKLSAgIHN0cmVhbS0+Y29udGVudF9sZW5ndGgg PSAtMTsKLSAgIHN0cmVhbS0+cmVjdl9jb250ZW50X2xlbmd0aCA9IDA7Ci0gICBzdHJlYW0tPnN0 YXR1c19jb2RlID0gLTE7Ci0gCi0gICBzdHJlYW0tPnF1ZXVlZCA9IDA7Ci0tICBzdHJlYW0tPmRl c2NlbmRhbnRfbGFzdF9jeWNsZSA9IDA7Ci0gICBzdHJlYW0tPmN5Y2xlID0gMDsKLSAgIHN0cmVh bS0+cGVuZGluZ19wZW5hbHR5ID0gMDsKLS0gIHN0cmVhbS0+ZGVzY2VuZGFudF9uZXh0X3NlcSA9 IDA7Ci0gICBzdHJlYW0tPnNlcSA9IDA7Ci0gICBzdHJlYW0tPmxhc3Rfd3JpdGVsZW4gPSAwOwot IAotICAgc3RyZWFtLT5leHRwcmkgPSBzdHJlYW0tPmh0dHBfZXh0cHJpID0gTkdIVFRQMl9FWFRQ UklfREVGQVVMVF9VUkdFTkNZOwotIH0KLSAKLS12b2lkIG5naHR0cDJfc3RyZWFtX2ZyZWUobmdo dHRwMl9zdHJlYW0gKnN0cmVhbSkgewotLSAgbmdodHRwMl9wcV9mcmVlKCZzdHJlYW0tPm9icSk7 Ci0tICAvKiBXZSBkb24ndCBmcmVlIHN0cmVhbS0+aXRlbS4gIElmIGl0IGlzIGFzc2lnbmVkIHRv IGFvYiwgdGhlbgotLSAgICAgYWN0aXZlX291dGJvdW5kX2l0ZW1fcmVzZXQoKSB3aWxsIGRlbGV0 ZSBpdC4gIE90aGVyd2lzZSwKLS0gICAgIG5naHR0cDJfc3RyZWFtX2Nsb3NlKCkgb3Igc2Vzc2lv bl9kZWwoKSB3aWxsIGRlbGV0ZSBpdC4gKi8KLS19Ci0rdm9pZCBuZ2h0dHAyX3N0cmVhbV9mcmVl KG5naHR0cDJfc3RyZWFtICpzdHJlYW0pIHsgKHZvaWQpc3RyZWFtOyB9Ci0gCi0gdm9pZCBuZ2h0 dHAyX3N0cmVhbV9zaHV0ZG93bihuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtLCBuZ2h0dHAyX3NodXRf ZmxhZyBmbGFnKSB7Ci0gICBzdHJlYW0tPnNodXRfZmxhZ3MgPSAodWludDhfdCkoc3RyZWFtLT5z aHV0X2ZsYWdzIHwgZmxhZyk7Ci0gfQotIAotLS8qCi0tICogUmV0dXJucyBub256ZXJvIGlmIHxz dHJlYW18IGlzIGFjdGl2ZS4gIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgdGFrZQotLSAqIGludG8g YWNjb3VudCBpdHMgZGVzY2VuZGFudHMuCi0tICovCi0tc3RhdGljIGludCBzdHJlYW1fYWN0aXZl KG5naHR0cDJfc3RyZWFtICpzdHJlYW0pIHsKLS0gIHJldHVybiBzdHJlYW0tPml0ZW0gJiYKLS0g ICAgICAgICAoc3RyZWFtLT5mbGFncyAmIE5HSFRUUDJfU1RSRUFNX0ZMQUdfREVGRVJSRURfQUxM KSA9PSAwOwotLX0KLS0KLS0vKgotLSAqIFJldHVybnMgbm9uemVybyBpZiB8c3RyZWFtfCBvciBv bmUgb2YgaXRzIGRlc2NlbmRhbnRzIGlzIGFjdGl2ZQotLSAqLwotLXN0YXRpYyBpbnQgc3RyZWFt X3N1YnRyZWVfYWN0aXZlKG5naHR0cDJfc3RyZWFtICpzdHJlYW0pIHsKLS0gIHJldHVybiBzdHJl YW1fYWN0aXZlKHN0cmVhbSkgfHwgIW5naHR0cDJfcHFfZW1wdHkoJnN0cmVhbS0+b2JxKTsKLS19 Ci0tCi0tLyoKLS0gKiBSZXR1cm5zIG5leHQgY3ljbGUgZm9yIHxzdHJlYW18LgotLSAqLwotLXN0 YXRpYyB2b2lkIHN0cmVhbV9uZXh0X2N5Y2xlKG5naHR0cDJfc3RyZWFtICpzdHJlYW0sIHVpbnQ2 NF90IGxhc3RfY3ljbGUpIHsKLS0gIHVpbnQ2NF90IHBlbmFsdHk7Ci0tCi0tICBwZW5hbHR5ID0g KHVpbnQ2NF90KXN0cmVhbS0+bGFzdF93cml0ZWxlbiAqIE5HSFRUUDJfTUFYX1dFSUdIVCArCi0t ICAgICAgICAgICAgc3RyZWFtLT5wZW5kaW5nX3BlbmFsdHk7Ci0tCi0tICBzdHJlYW0tPmN5Y2xl ID0gbGFzdF9jeWNsZSArIHBlbmFsdHkgLyAodWludDMyX3Qpc3RyZWFtLT53ZWlnaHQ7Ci0tICBz dHJlYW0tPnBlbmRpbmdfcGVuYWx0eSA9ICh1aW50MzJfdCkocGVuYWx0eSAlICh1aW50MzJfdClz dHJlYW0tPndlaWdodCk7Ci0tfQotLQotLXN0YXRpYyBpbnQgc3RyZWFtX29icV9wdXNoKG5naHR0 cDJfc3RyZWFtICpkZXBfc3RyZWFtLCBuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtKSB7Ci0tICBpbnQg cnY7Ci0tCi0tICBmb3IgKDsgZGVwX3N0cmVhbSAmJiAhc3RyZWFtLT5xdWV1ZWQ7Ci0tICAgICAg IHN0cmVhbSA9IGRlcF9zdHJlYW0sIGRlcF9zdHJlYW0gPSBkZXBfc3RyZWFtLT5kZXBfcHJldikg ewotLSAgICBzdHJlYW1fbmV4dF9jeWNsZShzdHJlYW0sIGRlcF9zdHJlYW0tPmRlc2NlbmRhbnRf bGFzdF9jeWNsZSk7Ci0tICAgIHN0cmVhbS0+c2VxID0gZGVwX3N0cmVhbS0+ZGVzY2VuZGFudF9u ZXh0X3NlcSsrOwotLQotLSAgICBERUJVR0YoInN0cmVhbTogc3RyZWFtPSVkIG9icSBwdXNoIGN5 Y2xlPSVsdVxuIiwgc3RyZWFtLT5zdHJlYW1faWQsCi0tICAgICAgICAgICBzdHJlYW0tPmN5Y2xl KTsKLS0KLS0gICAgREVCVUdGKCJzdHJlYW06IHB1c2ggc3RyZWFtICVkIHRvIHN0cmVhbSAlZFxu Iiwgc3RyZWFtLT5zdHJlYW1faWQsCi0tICAgICAgICAgICBkZXBfc3RyZWFtLT5zdHJlYW1faWQp OwotLQotLSAgICBydiA9IG5naHR0cDJfcHFfcHVzaCgmZGVwX3N0cmVhbS0+b2JxLCAmc3RyZWFt LT5wcV9lbnRyeSk7Ci0tICAgIGlmIChydiAhPSAwKSB7Ci0tICAgICAgcmV0dXJuIHJ2OwotLSAg ICB9Ci0tICAgIHN0cmVhbS0+cXVldWVkID0gMTsKLS0gIH0KLS0KLS0gIHJldHVybiAwOwotLX0K LS0KLS0vKgotLSAqIFJlbW92ZXMgfHN0cmVhbXwgZnJvbSBwYXJlbnQncyBvYnEuICBJZiByZW1v dmFsIG9mIHxzdHJlYW18IG1ha2VzCi0tICogcGFyZW50J3Mgb2JxIGVtcHR5LCBhbmQgcGFyZW50 IGlzIG5vdCBhY3RpdmUsIHRoZW4gcGFyZW50IGlzIGFsc28KLS0gKiByZW1vdmVkLiAgVGhpcyBw cm9jZXNzIGlzIHJlcGVhdGVkIHJlY3Vyc2l2ZWx5LgotLSAqLwotLXN0YXRpYyB2b2lkIHN0cmVh bV9vYnFfcmVtb3ZlKG5naHR0cDJfc3RyZWFtICpzdHJlYW0pIHsKLS0gIG5naHR0cDJfc3RyZWFt ICpkZXBfc3RyZWFtOwotLQotLSAgZGVwX3N0cmVhbSA9IHN0cmVhbS0+ZGVwX3ByZXY7Ci0tCi0t ICBpZiAoIXN0cmVhbS0+cXVldWVkKSB7Ci0tICAgIHJldHVybjsKLS0gIH0KLS0KLS0gIGZvciAo OyBkZXBfc3RyZWFtOyBzdHJlYW0gPSBkZXBfc3RyZWFtLCBkZXBfc3RyZWFtID0gZGVwX3N0cmVh bS0+ZGVwX3ByZXYpIHsKLS0gICAgREVCVUdGKCJzdHJlYW06IHJlbW92ZSBzdHJlYW0gJWQgZnJv bSBzdHJlYW0gJWRcbiIsIHN0cmVhbS0+c3RyZWFtX2lkLAotLSAgICAgICAgICAgZGVwX3N0cmVh bS0+c3RyZWFtX2lkKTsKLS0KLS0gICAgbmdodHRwMl9wcV9yZW1vdmUoJmRlcF9zdHJlYW0tPm9i cSwgJnN0cmVhbS0+cHFfZW50cnkpOwotLQotLSAgICBhc3NlcnQoc3RyZWFtLT5xdWV1ZWQpOwot LQotLSAgICBzdHJlYW0tPnF1ZXVlZCA9IDA7Ci0tICAgIHN0cmVhbS0+Y3ljbGUgPSAwOwotLSAg ICBzdHJlYW0tPnBlbmRpbmdfcGVuYWx0eSA9IDA7Ci0tICAgIHN0cmVhbS0+ZGVzY2VuZGFudF9s YXN0X2N5Y2xlID0gMDsKLS0gICAgc3RyZWFtLT5sYXN0X3dyaXRlbGVuID0gMDsKLS0KLS0gICAg aWYgKHN0cmVhbV9zdWJ0cmVlX2FjdGl2ZShkZXBfc3RyZWFtKSkgewotLSAgICAgIHJldHVybjsK LS0gICAgfQotLSAgfQotLX0KLS0KLS0vKgotLSAqIE1vdmVzIHxzdHJlYW18IGZyb20gfHNyY3wn cyBvYnEgdG8gfGRlc3R8J3Mgb2JxLiAgUmVtb3ZhbCBmcm9tCi0tICogfHNyY3wncyBvYnEgaXMg anVzdCBkb25lIGNhbGxpbmcgbmdodHRwMl9wcV9yZW1vdmUoKSwgc28gaXQgZG9lcwotLSAqIG5v dCByZWN1cnNpdmVseSByZW1vdmUgfHNyY3wgYW5kIGFuY2VzdG9ycywgbGlrZQotLSAqIHN0cmVh bV9vYnFfcmVtb3ZlKCkuCi0tICovCi0tc3RhdGljIGludCBzdHJlYW1fb2JxX21vdmUobmdodHRw Ml9zdHJlYW0gKmRlc3QsIG5naHR0cDJfc3RyZWFtICpzcmMsCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgbmdodHRwMl9zdHJlYW0gKnN0cmVhbSkgewotLSAgaWYgKCFzdHJlYW0tPnF1ZXVl ZCkgewotLSAgICByZXR1cm4gMDsKLS0gIH0KLS0KLS0gIERFQlVHRigic3RyZWFtOiByZW1vdmUg c3RyZWFtICVkIGZyb20gc3RyZWFtICVkIChtb3ZlKVxuIiwgc3RyZWFtLT5zdHJlYW1faWQsCi0t ICAgICAgICAgc3JjLT5zdHJlYW1faWQpOwotLQotLSAgbmdodHRwMl9wcV9yZW1vdmUoJnNyYy0+ b2JxLCAmc3RyZWFtLT5wcV9lbnRyeSk7Ci0tICBzdHJlYW0tPnF1ZXVlZCA9IDA7Ci0tCi0tICBy ZXR1cm4gc3RyZWFtX29icV9wdXNoKGRlc3QsIHN0cmVhbSk7Ci0tfQotLQotLXZvaWQgbmdodHRw Ml9zdHJlYW1fcmVzY2hlZHVsZShuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtKSB7Ci0tICBuZ2h0dHAy X3N0cmVhbSAqZGVwX3N0cmVhbTsKLS0KLS0gIGFzc2VydChzdHJlYW0tPnF1ZXVlZCk7Ci0tCi0t ICBkZXBfc3RyZWFtID0gc3RyZWFtLT5kZXBfcHJldjsKLS0KLS0gIGZvciAoOyBkZXBfc3RyZWFt OyBzdHJlYW0gPSBkZXBfc3RyZWFtLCBkZXBfc3RyZWFtID0gZGVwX3N0cmVhbS0+ZGVwX3ByZXYp IHsKLS0gICAgbmdodHRwMl9wcV9yZW1vdmUoJmRlcF9zdHJlYW0tPm9icSwgJnN0cmVhbS0+cHFf ZW50cnkpOwotLQotLSAgICBzdHJlYW1fbmV4dF9jeWNsZShzdHJlYW0sIGRlcF9zdHJlYW0tPmRl c2NlbmRhbnRfbGFzdF9jeWNsZSk7Ci0tICAgIHN0cmVhbS0+c2VxID0gZGVwX3N0cmVhbS0+ZGVz Y2VuZGFudF9uZXh0X3NlcSsrOwotLQotLSAgICBuZ2h0dHAyX3BxX3B1c2goJmRlcF9zdHJlYW0t Pm9icSwgJnN0cmVhbS0+cHFfZW50cnkpOwotLQotLSAgICBERUJVR0YoInN0cmVhbTogc3RyZWFt PSVkIG9icSByZXNjaGVkIGN5Y2xlPSVsdVxuIiwgc3RyZWFtLT5zdHJlYW1faWQsCi0tICAgICAg ICAgICBzdHJlYW0tPmN5Y2xlKTsKLS0KLS0gICAgZGVwX3N0cmVhbS0+bGFzdF93cml0ZWxlbiA9 IHN0cmVhbS0+bGFzdF93cml0ZWxlbjsKLS0gIH0KLS19Ci0tCi0tdm9pZCBuZ2h0dHAyX3N0cmVh bV9jaGFuZ2Vfd2VpZ2h0KG5naHR0cDJfc3RyZWFtICpzdHJlYW0sIGludDMyX3Qgd2VpZ2h0KSB7 Ci0tICBuZ2h0dHAyX3N0cmVhbSAqZGVwX3N0cmVhbTsKLS0gIHVpbnQ2NF90IGxhc3RfY3ljbGU7 Ci0tICBpbnQzMl90IG9sZF93ZWlnaHQ7Ci0tICB1aW50NjRfdCB3bGVuX3BlbmFsdHk7Ci0tCi0t ICBpZiAoc3RyZWFtLT53ZWlnaHQgPT0gd2VpZ2h0KSB7Ci0tICAgIHJldHVybjsKLS0gIH0KLS0K LS0gIG9sZF93ZWlnaHQgPSBzdHJlYW0tPndlaWdodDsKLS0gIHN0cmVhbS0+d2VpZ2h0ID0gd2Vp Z2h0OwotLQotLSAgZGVwX3N0cmVhbSA9IHN0cmVhbS0+ZGVwX3ByZXY7Ci0tCi0tICBpZiAoIWRl cF9zdHJlYW0pIHsKLS0gICAgcmV0dXJuOwotLSAgfQotLQotLSAgZGVwX3N0cmVhbS0+c3VtX2Rl cF93ZWlnaHQgKz0gd2VpZ2h0IC0gb2xkX3dlaWdodDsKLS0KLS0gIGlmICghc3RyZWFtLT5xdWV1 ZWQpIHsKLS0gICAgcmV0dXJuOwotLSAgfQotLQotLSAgbmdodHRwMl9wcV9yZW1vdmUoJmRlcF9z dHJlYW0tPm9icSwgJnN0cmVhbS0+cHFfZW50cnkpOwotLQotLSAgd2xlbl9wZW5hbHR5ID0gKHVp bnQ2NF90KXN0cmVhbS0+bGFzdF93cml0ZWxlbiAqIE5HSFRUUDJfTUFYX1dFSUdIVDsKLS0KLS0g IC8qIENvbXB1dGUgb2xkIHN0cmVhbS0+cGVuZGluZ19wZW5hbHR5IHdlIHVzZWQgdG8gY2FsY3Vs YXRlCi0tICAgICBzdHJlYW0tPmN5Y2xlICovCi0tICBzdHJlYW0tPnBlbmRpbmdfcGVuYWx0eSA9 Ci0tICAgICh1aW50MzJfdCkoKHN0cmVhbS0+cGVuZGluZ19wZW5hbHR5ICsgKHVpbnQzMl90KW9s ZF93ZWlnaHQgLQotLSAgICAgICAgICAgICAgICAod2xlbl9wZW5hbHR5ICUgKHVpbnQzMl90KW9s ZF93ZWlnaHQpKSAlCi0tICAgICAgICAgICAgICAgKHVpbnQzMl90KW9sZF93ZWlnaHQpOwotLQot LSAgbGFzdF9jeWNsZSA9IHN0cmVhbS0+Y3ljbGUgLQotLSAgICAgICAgICAgICAgICh3bGVuX3Bl bmFsdHkgKyBzdHJlYW0tPnBlbmRpbmdfcGVuYWx0eSkgLyAodWludDMyX3Qpb2xkX3dlaWdodDsK LS0KLS0gIC8qIE5vdyB3ZSBoYXZlIG9sZCBzdHJlYW0tPnBlbmRpbmdfcGVuYWx0eSBhbmQgbmV3 IHN0cmVhbS0+d2VpZ2h0IGluCi0tICAgICBwbGFjZSAqLwotLSAgc3RyZWFtX25leHRfY3ljbGUo c3RyZWFtLCBsYXN0X2N5Y2xlKTsKLS0KLS0gIGlmIChkZXBfc3RyZWFtLT5kZXNjZW5kYW50X2xh c3RfY3ljbGUgLSBzdHJlYW0tPmN5Y2xlIDw9Ci0tICAgICAgTkdIVFRQMl9NQVhfQ1lDTEVfRElT VEFOQ0UpIHsKLS0gICAgc3RyZWFtLT5jeWNsZSA9IGRlcF9zdHJlYW0tPmRlc2NlbmRhbnRfbGFz dF9jeWNsZTsKLS0gIH0KLS0KLS0gIC8qIENvbnRpbnVlIHRvIHVzZSBzYW1lIHN0cmVhbS0+c2Vx ICovCi0tCi0tICBuZ2h0dHAyX3BxX3B1c2goJmRlcF9zdHJlYW0tPm9icSwgJnN0cmVhbS0+cHFf ZW50cnkpOwotLQotLSAgREVCVUdGKCJzdHJlYW06IHN0cmVhbT0lZCBvYnEgcmVzY2hlZCBjeWNs ZT0lbHVcbiIsIHN0cmVhbS0+c3RyZWFtX2lkLAotLSAgICAgICAgIHN0cmVhbS0+Y3ljbGUpOwot LX0KLS0KLS1zdGF0aWMgbmdodHRwMl9zdHJlYW0gKnN0cmVhbV9sYXN0X3NpYihuZ2h0dHAyX3N0 cmVhbSAqc3RyZWFtKSB7Ci0tICBmb3IgKDsgc3RyZWFtLT5zaWJfbmV4dDsgc3RyZWFtID0gc3Ry ZWFtLT5zaWJfbmV4dCkKLS0gICAgOwotLQotLSAgcmV0dXJuIHN0cmVhbTsKLS19Ci0tCi0taW50 MzJfdCBuZ2h0dHAyX3N0cmVhbV9kZXBfZGlzdHJpYnV0ZWRfd2VpZ2h0KG5naHR0cDJfc3RyZWFt ICpzdHJlYW0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGludDMyX3Qgd2VpZ2h0KSB7Ci0tICB3ZWlnaHQgPSBzdHJlYW0tPndlaWdodCAqIHdlaWdodCAv IHN0cmVhbS0+c3VtX2RlcF93ZWlnaHQ7Ci0tCi0tICByZXR1cm4gbmdodHRwMl9tYXhfaW50MzIo MSwgd2VpZ2h0KTsKLS19Ci0tCi0tI2lmZGVmIFNUUkVBTV9ERVBfREVCVUcKLS0KLS1zdGF0aWMg dm9pZCBlbnN1cmVfaW5hY3RpdmUobmdodHRwMl9zdHJlYW0gKnN0cmVhbSkgewotLSAgbmdodHRw Ml9zdHJlYW0gKnNpOwotLQotLSAgaWYgKHN0cmVhbS0+cXVldWVkKSB7Ci0tICAgIGZwcmludGYo c3RkZXJyLCAic3RyZWFtKCVwKT0lZCwgc3RyZWFtLT5xdWV1ZWQgPSAxOyB3YW50IDBcbiIsIHN0 cmVhbSwKLS0gICAgICAgICAgICBzdHJlYW0tPnN0cmVhbV9pZCk7Ci0tICAgIGFzc2VydCgwKTsK LS0gIH0KLS0KLS0gIGlmIChzdHJlYW1fYWN0aXZlKHN0cmVhbSkpIHsKLS0gICAgZnByaW50Zihz dGRlcnIsICJzdHJlYW0oJXApPSVkLCBzdHJlYW1fYWN0aXZlKHN0cmVhbSkgPSAxOyB3YW50IDBc biIsCi0tICAgICAgICAgICAgc3RyZWFtLCBzdHJlYW0tPnN0cmVhbV9pZCk7Ci0tICAgIGFzc2Vy dCgwKTsKLS0gIH0KLS0KLS0gIGlmICghbmdodHRwMl9wcV9lbXB0eSgmc3RyZWFtLT5vYnEpKSB7 Ci0tICAgIGZwcmludGYoc3RkZXJyLCAic3RyZWFtKCVwKT0lZCwgbmdodHRwMl9wcV9zaXplKCkg PSAlenU7IHdhbnQgMFxuIiwgc3RyZWFtLAotLSAgICAgICAgICAgIHN0cmVhbS0+c3RyZWFtX2lk LCBuZ2h0dHAyX3BxX3NpemUoJnN0cmVhbS0+b2JxKSk7Ci0tICAgIGFzc2VydCgwKTsKLS0gIH0K LS0KLS0gIGZvciAoc2kgPSBzdHJlYW0tPmRlcF9uZXh0OyBzaTsgc2kgPSBzaS0+c2liX25leHQp IHsKLS0gICAgZW5zdXJlX2luYWN0aXZlKHNpKTsKLS0gIH0KLS19Ci0tCi0tc3RhdGljIHZvaWQg Y2hlY2tfcXVldWVkKG5naHR0cDJfc3RyZWFtICpzdHJlYW0pIHsKLS0gIG5naHR0cDJfc3RyZWFt ICpzaTsKLS0gIGludCBxdWV1ZWQ7Ci0tCi0tICBpZiAoc3RyZWFtLT5xdWV1ZWQpIHsKLS0gICAg aWYgKCFzdHJlYW1fc3VidHJlZV9hY3RpdmUoc3RyZWFtKSkgewotLSAgICAgIGZwcmludGYoc3Rk ZXJyLAotLSAgICAgICAgICAgICAgInN0cmVhbSglcCk9JWQsIHN0cmVhbS0+cXVldWVkID09IDEs IGJ1dCAiCi0tICAgICAgICAgICAgICAic3RyZWFtX2FjdGl2ZSgpID09ICVkIGFuZCBuZ2h0dHAy X3BxX3NpemUoJnN0cmVhbS0+b2JxKSA9ICV6dVxuIiwKLS0gICAgICAgICAgICAgIHN0cmVhbSwg c3RyZWFtLT5zdHJlYW1faWQsIHN0cmVhbV9hY3RpdmUoc3RyZWFtKSwKLS0gICAgICAgICAgICAg IG5naHR0cDJfcHFfc2l6ZSgmc3RyZWFtLT5vYnEpKTsKLS0gICAgICBhc3NlcnQoMCk7Ci0tICAg IH0KLS0gICAgaWYgKCFzdHJlYW1fYWN0aXZlKHN0cmVhbSkpIHsKLS0gICAgICBxdWV1ZWQgPSAw OwotLSAgICAgIGZvciAoc2kgPSBzdHJlYW0tPmRlcF9uZXh0OyBzaTsgc2kgPSBzaS0+c2liX25l eHQpIHsKLS0gICAgICAgIGlmIChzaS0+cXVldWVkKSB7Ci0tICAgICAgICAgICsrcXVldWVkOwot LSAgICAgICAgfQotLSAgICAgIH0KLS0gICAgICBpZiAocXVldWVkID09IDApIHsKLS0gICAgICAg IGZwcmludGYoc3RkZXJyLAotLSAgICAgICAgICAgICAgICAic3RyZWFtKCVwKT0lZCwgc3RyZWFt LT5xdWV1ZWQgPT0gMSwgYW5kICIKLS0gICAgICAgICAgICAgICAgIiFzdHJlYW1fYWN0aXZlKCks IGJ1dCBubyBkZXNjZW5kYW50cyBpcyBxdWV1ZWRcbiIsCi0tICAgICAgICAgICAgICAgIHN0cmVh bSwgc3RyZWFtLT5zdHJlYW1faWQpOwotLSAgICAgICAgYXNzZXJ0KDApOwotLSAgICAgIH0KLS0g ICAgfQotLQotLSAgICBmb3IgKHNpID0gc3RyZWFtLT5kZXBfbmV4dDsgc2k7IHNpID0gc2ktPnNp Yl9uZXh0KSB7Ci0tICAgICAgY2hlY2tfcXVldWVkKHNpKTsKLS0gICAgfQotLSAgfSBlbHNlIHsK LS0gICAgaWYgKHN0cmVhbV9hY3RpdmUoc3RyZWFtKSB8fCAhbmdodHRwMl9wcV9lbXB0eSgmc3Ry ZWFtLT5vYnEpKSB7Ci0tICAgICAgZnByaW50ZihzdGRlcnIsCi0tICAgICAgICAgICAgICAic3Ry ZWFtKCVwKSA9ICVkLCBzdHJlYW0tPnF1ZXVlZCA9PSAwLCBidXQgIgotLSAgICAgICAgICAgICAg InN0cmVhbV9hY3RpdmUoc3RyZWFtKSA9PSAlZCBhbmQgIgotLSAgICAgICAgICAgICAgIm5naHR0 cDJfcHFfc2l6ZSgmc3RyZWFtLT5vYnEpID0gJXp1XG4iLAotLSAgICAgICAgICAgICAgc3RyZWFt LCBzdHJlYW0tPnN0cmVhbV9pZCwgc3RyZWFtX2FjdGl2ZShzdHJlYW0pLAotLSAgICAgICAgICAg ICAgbmdodHRwMl9wcV9zaXplKCZzdHJlYW0tPm9icSkpOwotLSAgICAgIGFzc2VydCgwKTsKLS0g ICAgfQotLSAgICBmb3IgKHNpID0gc3RyZWFtLT5kZXBfbmV4dDsgc2k7IHNpID0gc2ktPnNpYl9u ZXh0KSB7Ci0tICAgICAgZW5zdXJlX2luYWN0aXZlKHNpKTsKLS0gICAgfQotLSAgfQotLX0KLS0K LS1zdGF0aWMgdm9pZCBjaGVja19zdW1fZGVwKG5naHR0cDJfc3RyZWFtICpzdHJlYW0pIHsKLS0g IG5naHR0cDJfc3RyZWFtICpzaTsKLS0gIGludDMyX3QgbiA9IDA7Ci0tICBmb3IgKHNpID0gc3Ry ZWFtLT5kZXBfbmV4dDsgc2k7IHNpID0gc2ktPnNpYl9uZXh0KSB7Ci0tICAgIG4gKz0gc2ktPndl aWdodDsKLS0gIH0KLS0gIGlmIChuICE9IHN0cmVhbS0+c3VtX2RlcF93ZWlnaHQpIHsKLS0gICAg ZnByaW50ZihzdGRlcnIsICJzdHJlYW0oJXApPSVkLCBzdW1fZGVwX3dlaWdodCA9ICVkOyB3YW50 ICVkXG4iLCBzdHJlYW0sCi0tICAgICAgICAgICAgc3RyZWFtLT5zdHJlYW1faWQsIG4sIHN0cmVh bS0+c3VtX2RlcF93ZWlnaHQpOwotLSAgICBhc3NlcnQoMCk7Ci0tICB9Ci0tICBmb3IgKHNpID0g c3RyZWFtLT5kZXBfbmV4dDsgc2k7IHNpID0gc2ktPnNpYl9uZXh0KSB7Ci0tICAgIGNoZWNrX3N1 bV9kZXAoc2kpOwotLSAgfQotLX0KLS0KLS1zdGF0aWMgdm9pZCBjaGVja19kZXBfcHJldihuZ2h0 dHAyX3N0cmVhbSAqc3RyZWFtKSB7Ci0tICBuZ2h0dHAyX3N0cmVhbSAqc2k7Ci0tICBmb3IgKHNp ID0gc3RyZWFtLT5kZXBfbmV4dDsgc2k7IHNpID0gc2ktPnNpYl9uZXh0KSB7Ci0tICAgIGlmIChz aS0+ZGVwX3ByZXYgIT0gc3RyZWFtKSB7Ci0tICAgICAgZnByaW50ZihzdGRlcnIsICJzaS0+ZGVw X3ByZXYgPSAlcDsgd2FudCAlcFxuIiwgc2ktPmRlcF9wcmV2LCBzdHJlYW0pOwotLSAgICAgIGFz c2VydCgwKTsKLS0gICAgfQotLSAgICBjaGVja19kZXBfcHJldihzaSk7Ci0tICB9Ci0tfQotLQot LSNlbmRpZiAvKiBTVFJFQU1fREVQX0RFQlVHICovCi0tCi0tI2lmZGVmIFNUUkVBTV9ERVBfREVC VUcKLS1zdGF0aWMgdm9pZCB2YWxpZGF0ZV90cmVlKG5naHR0cDJfc3RyZWFtICpzdHJlYW0pIHsK LS0gIG5naHR0cDJfc3RyZWFtICpzaTsKLS0KLS0gIGlmICghc3RyZWFtKSB7Ci0tICAgIHJldHVy bjsKLS0gIH0KLS0KLS0gIGZvciAoOyBzdHJlYW0tPmRlcF9wcmV2OyBzdHJlYW0gPSBzdHJlYW0t PmRlcF9wcmV2KQotLSAgICA7Ci0tCi0tICBhc3NlcnQoc3RyZWFtLT5zdHJlYW1faWQgPT0gMCk7 Ci0tICBhc3NlcnQoIXN0cmVhbS0+cXVldWVkKTsKLS0KLS0gIGZwcmludGYoc3RkZXJyLCAiY2hl Y2tpbmcuLi5cbiIpOwotLSAgaWYgKG5naHR0cDJfcHFfZW1wdHkoJnN0cmVhbS0+b2JxKSkgewot LSAgICBmcHJpbnRmKHN0ZGVyciwgInJvb3Qgb2JxIGVtcHR5XG4iKTsKLS0gICAgZm9yIChzaSA9 IHN0cmVhbS0+ZGVwX25leHQ7IHNpOyBzaSA9IHNpLT5zaWJfbmV4dCkgewotLSAgICAgIGVuc3Vy ZV9pbmFjdGl2ZShzaSk7Ci0tICAgIH0KLS0gIH0gZWxzZSB7Ci0tICAgIGZvciAoc2kgPSBzdHJl YW0tPmRlcF9uZXh0OyBzaTsgc2kgPSBzaS0+c2liX25leHQpIHsKLS0gICAgICBjaGVja19xdWV1 ZWQoc2kpOwotLSAgICB9Ci0tICB9Ci0tCi0tICBjaGVja19zdW1fZGVwKHN0cmVhbSk7Ci0tICBj aGVja19kZXBfcHJldihzdHJlYW0pOwotLX0KLS0jZWxzZSAgLyogIVNUUkVBTV9ERVBfREVCVUcg Ki8KLS1zdGF0aWMgdm9pZCB2YWxpZGF0ZV90cmVlKG5naHR0cDJfc3RyZWFtICpzdHJlYW0pIHsg KHZvaWQpc3RyZWFtOyB9Ci0tI2VuZGlmIC8qICFTVFJFQU1fREVQX0RFQlVHKi8KLS0KLS1zdGF0 aWMgaW50IHN0cmVhbV91cGRhdGVfZGVwX29uX2F0dGFjaF9pdGVtKG5naHR0cDJfc3RyZWFtICpz dHJlYW0pIHsKLS0gIGludCBydjsKLS0KLS0gIHJ2ID0gc3RyZWFtX29icV9wdXNoKHN0cmVhbS0+ ZGVwX3ByZXYsIHN0cmVhbSk7Ci0tICBpZiAocnYgIT0gMCkgewotLSAgICByZXR1cm4gcnY7Ci0t ICB9Ci0tCi0tICB2YWxpZGF0ZV90cmVlKHN0cmVhbSk7Ci0tICByZXR1cm4gMDsKLS19Ci0tCi0t c3RhdGljIHZvaWQgc3RyZWFtX3VwZGF0ZV9kZXBfb25fZGV0YWNoX2l0ZW0obmdodHRwMl9zdHJl YW0gKnN0cmVhbSkgewotLSAgaWYgKG5naHR0cDJfcHFfZW1wdHkoJnN0cmVhbS0+b2JxKSkgewot LSAgICBzdHJlYW1fb2JxX3JlbW92ZShzdHJlYW0pOwotLSAgfQotLQotLSAgdmFsaWRhdGVfdHJl ZShzdHJlYW0pOwotLX0KLS0KLS1pbnQgbmdodHRwMl9zdHJlYW1fYXR0YWNoX2l0ZW0obmdodHRw Ml9zdHJlYW0gKnN0cmVhbSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdodHRw Ml9vdXRib3VuZF9pdGVtICppdGVtKSB7Ci0tICBpbnQgcnY7Ci0tCi0rdm9pZCBuZ2h0dHAyX3N0 cmVhbV9hdHRhY2hfaXRlbShuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbmdodHRwMl9vdXRib3VuZF9pdGVtICppdGVtKSB7Ci0gICBhc3Nl cnQoKHN0cmVhbS0+ZmxhZ3MgJiBOR0hUVFAyX1NUUkVBTV9GTEFHX0RFRkVSUkVEX0FMTCkgPT0g MCk7Ci0gICBhc3NlcnQoc3RyZWFtLT5pdGVtID09IE5VTEwpOwotIAotICAgREVCVUdGKCJzdHJl YW06IHN0cmVhbT0lZCBhdHRhY2ggaXRlbT0lcFxuIiwgc3RyZWFtLT5zdHJlYW1faWQsIGl0ZW0p OwotIAotICAgc3RyZWFtLT5pdGVtID0gaXRlbTsKLS0KLS0gIGlmIChzdHJlYW0tPmZsYWdzICYg TkdIVFRQMl9TVFJFQU1fRkxBR19OT19SRkM3NTQwX1BSSU9SSVRJRVMpIHsKLS0gICAgcmV0dXJu IDA7Ci0tICB9Ci0tCi0tICBydiA9IHN0cmVhbV91cGRhdGVfZGVwX29uX2F0dGFjaF9pdGVtKHN0 cmVhbSk7Ci0tICBpZiAocnYgIT0gMCkgewotLSAgICAvKiBUaGlzIG1heSByZWxhdmUgc3RyZWFt LT5xdWV1ZWQgPT0gMSwgYnV0IHN0cmVhbS0+aXRlbSA9PSBOVUxMLgotLSAgICAgICBCdXQgb25s eSBjb25zZXF1ZW5jZSBvZiB0aGlzIGVycm9yIGlzIGZhdGFsIG9uZSwgYW5kIHNlc3Npb24KLS0g ICAgICAgZGVzdHJ1Y3Rpb24uICBJbiB0aGF0IGV4ZWN1dGlvbiBwYXRoLCB0aGVzZSBpbmNvbnNp c3RlbmN5IGRvZXMKLS0gICAgICAgbm90IG1hdHRlci4gKi8KLS0gICAgc3RyZWFtLT5pdGVtID0g TlVMTDsKLS0gICAgcmV0dXJuIHJ2OwotLSAgfQotLQotLSAgcmV0dXJuIDA7Ci0gfQotIAotIHZv aWQgbmdodHRwMl9zdHJlYW1fZGV0YWNoX2l0ZW0obmdodHRwMl9zdHJlYW0gKnN0cmVhbSkgewot QEAgLTUwNiwxMiArODYsNiBAQCB2b2lkIG5naHR0cDJfc3RyZWFtX2RldGFjaF9pdGVtKG5naHR0 cDJfc3RyZWFtICpzdHJlYW0pIHsKLSAKLSAgIHN0cmVhbS0+aXRlbSA9IE5VTEw7Ci0gICBzdHJl YW0tPmZsYWdzID0gKHVpbnQ4X3QpKHN0cmVhbS0+ZmxhZ3MgJiB+TkdIVFRQMl9TVFJFQU1fRkxB R19ERUZFUlJFRF9BTEwpOwotLQotLSAgaWYgKHN0cmVhbS0+ZmxhZ3MgJiBOR0hUVFAyX1NUUkVB TV9GTEFHX05PX1JGQzc1NDBfUFJJT1JJVElFUykgewotLSAgICByZXR1cm47Ci0tICB9Ci0tCi0t ICBzdHJlYW1fdXBkYXRlX2RlcF9vbl9kZXRhY2hfaXRlbShzdHJlYW0pOwotIH0KLSAKLSB2b2lk IG5naHR0cDJfc3RyZWFtX2RlZmVyX2l0ZW0obmdodHRwMl9zdHJlYW0gKnN0cmVhbSwgdWludDhf dCBmbGFncykgewotQEAgLTUyMSwzMSArOTUsMTYgQEAgdm9pZCBuZ2h0dHAyX3N0cmVhbV9kZWZl cl9pdGVtKG5naHR0cDJfc3RyZWFtICpzdHJlYW0sIHVpbnQ4X3QgZmxhZ3MpIHsKLSAgICAgICAg ICBzdHJlYW0tPml0ZW0sIGZsYWdzKTsKLSAKLSAgIHN0cmVhbS0+ZmxhZ3MgfD0gZmxhZ3M7Ci0t Ci0tICBpZiAoc3RyZWFtLT5mbGFncyAmIE5HSFRUUDJfU1RSRUFNX0ZMQUdfTk9fUkZDNzU0MF9Q UklPUklUSUVTKSB7Ci0tICAgIHJldHVybjsKLS0gIH0KLS0KLS0gIHN0cmVhbV91cGRhdGVfZGVw X29uX2RldGFjaF9pdGVtKHN0cmVhbSk7Ci0gfQotIAotLWludCBuZ2h0dHAyX3N0cmVhbV9yZXN1 bWVfZGVmZXJyZWRfaXRlbShuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtLCB1aW50OF90IGZsYWdzKSB7 Ci0rdm9pZCBuZ2h0dHAyX3N0cmVhbV9yZXN1bWVfZGVmZXJyZWRfaXRlbShuZ2h0dHAyX3N0cmVh bSAqc3RyZWFtLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu dDhfdCBmbGFncykgewotICAgYXNzZXJ0KHN0cmVhbS0+aXRlbSk7Ci0gCi0gICBERUJVR0YoInN0 cmVhbTogc3RyZWFtPSVkIHJlc3VtZSBpdGVtPSVwIGZsYWdzPSUwMnhcbiIsIHN0cmVhbS0+c3Ry ZWFtX2lkLAotICAgICAgICAgIHN0cmVhbS0+aXRlbSwgZmxhZ3MpOwotIAotICAgc3RyZWFtLT5m bGFncyA9ICh1aW50OF90KShzdHJlYW0tPmZsYWdzICYgfmZsYWdzKTsKLS0KLS0gIGlmIChzdHJl YW0tPmZsYWdzICYgTkdIVFRQMl9TVFJFQU1fRkxBR19ERUZFUlJFRF9BTEwpIHsKLS0gICAgcmV0 dXJuIDA7Ci0tICB9Ci0tCi0tICBpZiAoc3RyZWFtLT5mbGFncyAmIE5HSFRUUDJfU1RSRUFNX0ZM QUdfTk9fUkZDNzU0MF9QUklPUklUSUVTKSB7Ci0tICAgIHJldHVybiAwOwotLSAgfQotLQotLSAg cmV0dXJuIHN0cmVhbV91cGRhdGVfZGVwX29uX2F0dGFjaF9pdGVtKHN0cmVhbSk7Ci0gfQotIAot IGludCBuZ2h0dHAyX3N0cmVhbV9jaGVja19kZWZlcnJlZF9pdGVtKG5naHR0cDJfc3RyZWFtICpz dHJlYW0pIHsKLUBAIC01OTEsMzczICsxNTAsMTEgQEAgdm9pZCBuZ2h0dHAyX3N0cmVhbV9wcm9t aXNlX2Z1bGZpbGxlZChuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtKSB7Ci0gICBzdHJlYW0tPmZsYWdz ID0gKHVpbnQ4X3QpKHN0cmVhbS0+ZmxhZ3MgJiB+TkdIVFRQMl9TVFJFQU1fRkxBR19QVVNIKTsK LSB9Ci0gCi0taW50IG5naHR0cDJfc3RyZWFtX2RlcF9maW5kX2FuY2VzdG9yKG5naHR0cDJfc3Ry ZWFtICpzdHJlYW0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5naHR0 cDJfc3RyZWFtICp0YXJnZXQpIHsKLS0gIGZvciAoOyBzdHJlYW07IHN0cmVhbSA9IHN0cmVhbS0+ ZGVwX3ByZXYpIHsKLS0gICAgaWYgKHN0cmVhbSA9PSB0YXJnZXQpIHsKLS0gICAgICByZXR1cm4g MTsKLS0gICAgfQotLSAgfQotLSAgcmV0dXJuIDA7Ci0tfQotLQotLWludCBuZ2h0dHAyX3N0cmVh bV9kZXBfaW5zZXJ0KG5naHR0cDJfc3RyZWFtICpkZXBfc3RyZWFtLAotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG5naHR0cDJfc3RyZWFtICpzdHJlYW0pIHsKLS0gIG5naHR0cDJfc3Ry ZWFtICpzaTsKLS0gIGludCBydjsKLS0KLS0gIERFQlVHRigic3RyZWFtOiBkZXBfaW5zZXJ0IGRl cF9zdHJlYW0oJXApPSVkLCBzdHJlYW0oJXApPSVkXG4iLCBkZXBfc3RyZWFtLAotLSAgICAgICAg IGRlcF9zdHJlYW0tPnN0cmVhbV9pZCwgc3RyZWFtLCBzdHJlYW0tPnN0cmVhbV9pZCk7Ci0tCi0t ICBzdHJlYW0tPnN1bV9kZXBfd2VpZ2h0ID0gZGVwX3N0cmVhbS0+c3VtX2RlcF93ZWlnaHQ7Ci0t ICBkZXBfc3RyZWFtLT5zdW1fZGVwX3dlaWdodCA9IHN0cmVhbS0+d2VpZ2h0OwotLQotLSAgaWYg KGRlcF9zdHJlYW0tPmRlcF9uZXh0KSB7Ci0tICAgIGZvciAoc2kgPSBkZXBfc3RyZWFtLT5kZXBf bmV4dDsgc2k7IHNpID0gc2ktPnNpYl9uZXh0KSB7Ci0tICAgICAgc2ktPmRlcF9wcmV2ID0gc3Ry ZWFtOwotLSAgICAgIGlmIChzaS0+cXVldWVkKSB7Ci0tICAgICAgICBydiA9IHN0cmVhbV9vYnFf bW92ZShzdHJlYW0sIGRlcF9zdHJlYW0sIHNpKTsKLS0gICAgICAgIGlmIChydiAhPSAwKSB7Ci0t ICAgICAgICAgIHJldHVybiBydjsKLS0gICAgICAgIH0KLS0gICAgICB9Ci0tICAgIH0KLS0KLS0g ICAgaWYgKHN0cmVhbV9zdWJ0cmVlX2FjdGl2ZShzdHJlYW0pKSB7Ci0tICAgICAgcnYgPSBzdHJl YW1fb2JxX3B1c2goZGVwX3N0cmVhbSwgc3RyZWFtKTsKLS0gICAgICBpZiAocnYgIT0gMCkgewot LSAgICAgICAgcmV0dXJuIHJ2OwotLSAgICAgIH0KLS0gICAgfQotLQotLSAgICBzdHJlYW0tPmRl cF9uZXh0ID0gZGVwX3N0cmVhbS0+ZGVwX25leHQ7Ci0tICB9Ci0tCi0tICBkZXBfc3RyZWFtLT5k ZXBfbmV4dCA9IHN0cmVhbTsKLS0gIHN0cmVhbS0+ZGVwX3ByZXYgPSBkZXBfc3RyZWFtOwotLQot LSAgdmFsaWRhdGVfdHJlZShzdHJlYW0pOwotLQotLSAgcmV0dXJuIDA7Ci0tfQotLQotLXN0YXRp YyB2b2lkIHNldF9kZXBfcHJldihuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtLCBuZ2h0dHAyX3N0cmVh bSAqZGVwKSB7Ci0tICBmb3IgKDsgc3RyZWFtOyBzdHJlYW0gPSBzdHJlYW0tPnNpYl9uZXh0KSB7 Ci0tICAgIHN0cmVhbS0+ZGVwX3ByZXYgPSBkZXA7Ci0tICB9Ci0tfQotLQotLXN0YXRpYyB2b2lk IGxpbmtfZGVwKG5naHR0cDJfc3RyZWFtICpkZXBfc3RyZWFtLCBuZ2h0dHAyX3N0cmVhbSAqc3Ry ZWFtKSB7Ci0tICBkZXBfc3RyZWFtLT5kZXBfbmV4dCA9IHN0cmVhbTsKLS0gIGlmIChzdHJlYW0p IHsKLS0gICAgc3RyZWFtLT5kZXBfcHJldiA9IGRlcF9zdHJlYW07Ci0tICB9Ci0tfQotLQotLXN0 YXRpYyB2b2lkIGxpbmtfc2liKG5naHR0cDJfc3RyZWFtICphLCBuZ2h0dHAyX3N0cmVhbSAqYikg ewotLSAgYS0+c2liX25leHQgPSBiOwotLSAgaWYgKGIpIHsKLS0gICAgYi0+c2liX3ByZXYgPSBh OwotLSAgfQotLX0KLS0KLS1zdGF0aWMgdm9pZCBpbnNlcnRfbGlua19kZXAobmdodHRwMl9zdHJl YW0gKmRlcF9zdHJlYW0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5naHR0cDJfc3Ry ZWFtICpzdHJlYW0pIHsKLS0gIG5naHR0cDJfc3RyZWFtICpzaWJfbmV4dDsKLS0KLS0gIGFzc2Vy dChzdHJlYW0tPnNpYl9wcmV2ID09IE5VTEwpOwotLQotLSAgc2liX25leHQgPSBkZXBfc3RyZWFt LT5kZXBfbmV4dDsKLS0KLS0gIGxpbmtfc2liKHN0cmVhbSwgc2liX25leHQpOwotLQotLSAgbGlu a19kZXAoZGVwX3N0cmVhbSwgc3RyZWFtKTsKLS19Ci0tCi0tc3RhdGljIHZvaWQgdW5saW5rX3Np YihuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtKSB7Ci0tICBuZ2h0dHAyX3N0cmVhbSAqcHJldiwgKm5l eHQsICpkZXBfbmV4dDsKLS0KLS0gIHByZXYgPSBzdHJlYW0tPnNpYl9wcmV2OwotLSAgZGVwX25l eHQgPSBzdHJlYW0tPmRlcF9uZXh0OwotLQotLSAgYXNzZXJ0KHByZXYpOwotLQotLSAgaWYgKGRl cF9uZXh0KSB7Ci0tICAgIC8qCi0tICAgICAqICBwcmV2LS1zdHJlYW0oLS1zaWJfbmV4dC0tLi4u KQotLSAgICAgKiAgICAgICAgIHwKLS0gICAgICogICAgICAgIGRlcF9uZXh0Ci0tICAgICAqLwot LQotLSAgICBsaW5rX3NpYihwcmV2LCBkZXBfbmV4dCk7Ci0tCi0tICAgIHNldF9kZXBfcHJldihk ZXBfbmV4dCwgc3RyZWFtLT5kZXBfcHJldik7Ci0tCi0tICAgIGlmIChzdHJlYW0tPnNpYl9uZXh0 KSB7Ci0tICAgICAgbGlua19zaWIoc3RyZWFtX2xhc3Rfc2liKGRlcF9uZXh0KSwgc3RyZWFtLT5z aWJfbmV4dCk7Ci0tICAgIH0KLS0gIH0gZWxzZSB7Ci0tICAgIC8qCi0tICAgICAqICBwcmV2LS1z dHJlYW0oLS1zaWJfbmV4dC0tLi4uKQotLSAgICAgKi8KLS0gICAgbmV4dCA9IHN0cmVhbS0+c2li X25leHQ7Ci0tCi0tICAgIHByZXYtPnNpYl9uZXh0ID0gbmV4dDsKLS0KLS0gICAgaWYgKG5leHQp IHsKLS0gICAgICBuZXh0LT5zaWJfcHJldiA9IHByZXY7Ci0tICAgIH0KLS0gIH0KLS19Ci0tCi0t c3RhdGljIHZvaWQgdW5saW5rX2RlcChuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtKSB7Ci0tICBuZ2h0 dHAyX3N0cmVhbSAqcHJldiwgKm5leHQsICpkZXBfbmV4dDsKLS0KLS0gIHByZXYgPSBzdHJlYW0t PmRlcF9wcmV2OwotLSAgZGVwX25leHQgPSBzdHJlYW0tPmRlcF9uZXh0OwotLQotLSAgYXNzZXJ0 KHByZXYpOwotLQotLSAgaWYgKGRlcF9uZXh0KSB7Ci0tICAgIC8qCi0tICAgICAqIHByZXYKLS0g ICAgICogICB8Ci0tICAgICAqIHN0cmVhbSgtLXNpYl9uZXh0LS0uLi4pCi0tICAgICAqICAgfAot LSAgICAgKiBkZXBfbmV4dAotLSAgICAgKi8KLS0gICAgbGlua19kZXAocHJldiwgZGVwX25leHQp OwotLQotLSAgICBzZXRfZGVwX3ByZXYoZGVwX25leHQsIHN0cmVhbS0+ZGVwX3ByZXYpOwotLQot LSAgICBpZiAoc3RyZWFtLT5zaWJfbmV4dCkgewotLSAgICAgIGxpbmtfc2liKHN0cmVhbV9sYXN0 X3NpYihkZXBfbmV4dCksIHN0cmVhbS0+c2liX25leHQpOwotLSAgICB9Ci0tCi0tICB9IGVsc2Ug aWYgKHN0cmVhbS0+c2liX25leHQpIHsKLS0gICAgLyoKLS0gICAgICogcHJldgotLSAgICAgKiAg IHwKLS0gICAgICogc3RyZWFtLS1zaWJfbmV4dAotLSAgICAgKi8KLS0gICAgbmV4dCA9IHN0cmVh bS0+c2liX25leHQ7Ci0tCi0tICAgIG5leHQtPnNpYl9wcmV2ID0gTlVMTDsKLS0KLS0gICAgbGlu a19kZXAocHJldiwgbmV4dCk7Ci0tICB9IGVsc2UgewotLSAgICBwcmV2LT5kZXBfbmV4dCA9IE5V TEw7Ci0tICB9Ci0tfQotLQotLXZvaWQgbmdodHRwMl9zdHJlYW1fZGVwX2FkZChuZ2h0dHAyX3N0 cmVhbSAqZGVwX3N0cmVhbSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdodHRwMl9z dHJlYW0gKnN0cmVhbSkgewotLSAgREVCVUdGKCJzdHJlYW06IGRlcF9hZGQgZGVwX3N0cmVhbSgl cCk9JWQsIHN0cmVhbSglcCk9JWRcbiIsIGRlcF9zdHJlYW0sCi0tICAgICAgICAgZGVwX3N0cmVh bS0+c3RyZWFtX2lkLCBzdHJlYW0sIHN0cmVhbS0+c3RyZWFtX2lkKTsKLS0KLS0gIGRlcF9zdHJl YW0tPnN1bV9kZXBfd2VpZ2h0ICs9IHN0cmVhbS0+d2VpZ2h0OwotLQotLSAgaWYgKGRlcF9zdHJl YW0tPmRlcF9uZXh0ID09IE5VTEwpIHsKLS0gICAgbGlua19kZXAoZGVwX3N0cmVhbSwgc3RyZWFt KTsKLS0gIH0gZWxzZSB7Ci0tICAgIGluc2VydF9saW5rX2RlcChkZXBfc3RyZWFtLCBzdHJlYW0p OwotLSAgfQotLQotLSAgdmFsaWRhdGVfdHJlZShzdHJlYW0pOwotLX0KLS0KLS1pbnQgbmdodHRw Ml9zdHJlYW1fZGVwX3JlbW92ZShuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtKSB7Ci0tICBuZ2h0dHAy X3N0cmVhbSAqZGVwX3ByZXYsICpzaTsKLS0gIGludDMyX3Qgc3VtX2RlcF93ZWlnaHRfZGVsdGE7 Ci0tICBpbnQgcnY7Ci0tCi0tICBERUJVR0YoInN0cmVhbTogZGVwX3JlbW92ZSBzdHJlYW0oJXAp PSVkXG4iLCBzdHJlYW0sIHN0cmVhbS0+c3RyZWFtX2lkKTsKLS0KLS0gIC8qIERpc3RyaWJ1dGUg d2VpZ2h0IG9mIHxzdHJlYW18IHRvIGRpcmVjdCBkZXNjZW5kYW50cyAqLwotLSAgc3VtX2RlcF93 ZWlnaHRfZGVsdGEgPSAtc3RyZWFtLT53ZWlnaHQ7Ci0tCi0tICBmb3IgKHNpID0gc3RyZWFtLT5k ZXBfbmV4dDsgc2k7IHNpID0gc2ktPnNpYl9uZXh0KSB7Ci0tICAgIHNpLT53ZWlnaHQgPSBuZ2h0 dHAyX3N0cmVhbV9kZXBfZGlzdHJpYnV0ZWRfd2VpZ2h0KHN0cmVhbSwgc2ktPndlaWdodCk7Ci0t Ci0tICAgIHN1bV9kZXBfd2VpZ2h0X2RlbHRhICs9IHNpLT53ZWlnaHQ7Ci0tCi0tICAgIGlmIChz aS0+cXVldWVkKSB7Ci0tICAgICAgcnYgPSBzdHJlYW1fb2JxX21vdmUoc3RyZWFtLT5kZXBfcHJl diwgc3RyZWFtLCBzaSk7Ci0tICAgICAgaWYgKHJ2ICE9IDApIHsKLS0gICAgICAgIHJldHVybiBy djsKLS0gICAgICB9Ci0tICAgIH0KLS0gIH0KLS0KLS0gIGFzc2VydChzdHJlYW0tPmRlcF9wcmV2 KTsKLS0KLS0gIGRlcF9wcmV2ID0gc3RyZWFtLT5kZXBfcHJldjsKLS0KLS0gIGRlcF9wcmV2LT5z dW1fZGVwX3dlaWdodCArPSBzdW1fZGVwX3dlaWdodF9kZWx0YTsKLS0KLS0gIGlmIChzdHJlYW0t PnF1ZXVlZCkgewotLSAgICBzdHJlYW1fb2JxX3JlbW92ZShzdHJlYW0pOwotLSAgfQotLQotLSAg aWYgKHN0cmVhbS0+c2liX3ByZXYpIHsKLS0gICAgdW5saW5rX3NpYihzdHJlYW0pOwotLSAgfSBl bHNlIHsKLS0gICAgdW5saW5rX2RlcChzdHJlYW0pOwotLSAgfQotLQotLSAgc3RyZWFtLT5zdW1f ZGVwX3dlaWdodCA9IDA7Ci0tCi0tICBzdHJlYW0tPmRlcF9wcmV2ID0gTlVMTDsKLS0gIHN0cmVh bS0+ZGVwX25leHQgPSBOVUxMOwotLSAgc3RyZWFtLT5zaWJfcHJldiA9IE5VTEw7Ci0tICBzdHJl YW0tPnNpYl9uZXh0ID0gTlVMTDsKLS0KLS0gIHZhbGlkYXRlX3RyZWUoZGVwX3ByZXYpOwotLQot LSAgcmV0dXJuIDA7Ci0tfQotLQotLWludCBuZ2h0dHAyX3N0cmVhbV9kZXBfaW5zZXJ0X3N1YnRy ZWUobmdodHRwMl9zdHJlYW0gKmRlcF9zdHJlYW0sCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtKSB7Ci0tICBuZ2h0dHAyX3N0cmVh bSAqbGFzdF9zaWI7Ci0tICBuZ2h0dHAyX3N0cmVhbSAqZGVwX25leHQ7Ci0tICBuZ2h0dHAyX3N0 cmVhbSAqc2k7Ci0tICBpbnQgcnY7Ci0tCi0tICBERUJVR0YoInN0cmVhbTogZGVwX2luc2VydF9z dWJ0cmVlIGRlcF9zdHJlYW0oJXApPSVkIHN0cmVhbSglcCk9JWRcbiIsCi0tICAgICAgICAgZGVw X3N0cmVhbSwgZGVwX3N0cmVhbS0+c3RyZWFtX2lkLCBzdHJlYW0sIHN0cmVhbS0+c3RyZWFtX2lk KTsKLS0KLS0gIHN0cmVhbS0+c3VtX2RlcF93ZWlnaHQgKz0gZGVwX3N0cmVhbS0+c3VtX2RlcF93 ZWlnaHQ7Ci0tICBkZXBfc3RyZWFtLT5zdW1fZGVwX3dlaWdodCA9IHN0cmVhbS0+d2VpZ2h0Owot LQotLSAgaWYgKGRlcF9zdHJlYW0tPmRlcF9uZXh0KSB7Ci0tICAgIGRlcF9uZXh0ID0gZGVwX3N0 cmVhbS0+ZGVwX25leHQ7Ci0tCi0tICAgIGxpbmtfZGVwKGRlcF9zdHJlYW0sIHN0cmVhbSk7Ci0t Ci0tICAgIGlmIChzdHJlYW0tPmRlcF9uZXh0KSB7Ci0tICAgICAgbGFzdF9zaWIgPSBzdHJlYW1f bGFzdF9zaWIoc3RyZWFtLT5kZXBfbmV4dCk7Ci0tCi0tICAgICAgbGlua19zaWIobGFzdF9zaWIs IGRlcF9uZXh0KTsKLS0gICAgfSBlbHNlIHsKLS0gICAgICBsaW5rX2RlcChzdHJlYW0sIGRlcF9u ZXh0KTsKLS0gICAgfQotLQotLSAgICBmb3IgKHNpID0gZGVwX25leHQ7IHNpOyBzaSA9IHNpLT5z aWJfbmV4dCkgewotLSAgICAgIHNpLT5kZXBfcHJldiA9IHN0cmVhbTsKLS0gICAgICBpZiAoc2kt PnF1ZXVlZCkgewotLSAgICAgICAgcnYgPSBzdHJlYW1fb2JxX21vdmUoc3RyZWFtLCBkZXBfc3Ry ZWFtLCBzaSk7Ci0tICAgICAgICBpZiAocnYgIT0gMCkgewotLSAgICAgICAgICByZXR1cm4gcnY7 Ci0tICAgICAgICB9Ci0tICAgICAgfQotLSAgICB9Ci0tICB9IGVsc2UgewotLSAgICBsaW5rX2Rl cChkZXBfc3RyZWFtLCBzdHJlYW0pOwotLSAgfQotLQotLSAgaWYgKHN0cmVhbV9zdWJ0cmVlX2Fj dGl2ZShzdHJlYW0pKSB7Ci0tICAgIHJ2ID0gc3RyZWFtX29icV9wdXNoKGRlcF9zdHJlYW0sIHN0 cmVhbSk7Ci0tICAgIGlmIChydiAhPSAwKSB7Ci0tICAgICAgcmV0dXJuIHJ2OwotLSAgICB9Ci0t ICB9Ci0tCi0tICB2YWxpZGF0ZV90cmVlKGRlcF9zdHJlYW0pOwotLQotLSAgcmV0dXJuIDA7Ci0t fQotLQotLWludCBuZ2h0dHAyX3N0cmVhbV9kZXBfYWRkX3N1YnRyZWUobmdodHRwMl9zdHJlYW0g KmRlcF9zdHJlYW0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2h0dHAy X3N0cmVhbSAqc3RyZWFtKSB7Ci0tICBpbnQgcnY7Ci0tCi0tICBERUJVR0YoInN0cmVhbTogZGVw X2FkZF9zdWJ0cmVlIGRlcF9zdHJlYW0oJXApPSVkIHN0cmVhbSglcCk9JWRcbiIsCi0tICAgICAg ICAgZGVwX3N0cmVhbSwgZGVwX3N0cmVhbS0+c3RyZWFtX2lkLCBzdHJlYW0sIHN0cmVhbS0+c3Ry ZWFtX2lkKTsKLS0KLS0gIGRlcF9zdHJlYW0tPnN1bV9kZXBfd2VpZ2h0ICs9IHN0cmVhbS0+d2Vp Z2h0OwotLQotLSAgaWYgKGRlcF9zdHJlYW0tPmRlcF9uZXh0KSB7Ci0tICAgIGluc2VydF9saW5r X2RlcChkZXBfc3RyZWFtLCBzdHJlYW0pOwotLSAgfSBlbHNlIHsKLS0gICAgbGlua19kZXAoZGVw X3N0cmVhbSwgc3RyZWFtKTsKLS0gIH0KLS0KLS0gIGlmIChzdHJlYW1fc3VidHJlZV9hY3RpdmUo c3RyZWFtKSkgewotLSAgICBydiA9IHN0cmVhbV9vYnFfcHVzaChkZXBfc3RyZWFtLCBzdHJlYW0p OwotLSAgICBpZiAocnYgIT0gMCkgewotLSAgICAgIHJldHVybiBydjsKLS0gICAgfQotLSAgfQot LQotLSAgdmFsaWRhdGVfdHJlZShkZXBfc3RyZWFtKTsKLS0KLS0gIHJldHVybiAwOwotLX0KLS0K LS12b2lkIG5naHR0cDJfc3RyZWFtX2RlcF9yZW1vdmVfc3VidHJlZShuZ2h0dHAyX3N0cmVhbSAq c3RyZWFtKSB7Ci0tICBuZ2h0dHAyX3N0cmVhbSAqbmV4dCwgKmRlcF9wcmV2OwotLQotLSAgREVC VUdGKCJzdHJlYW06IGRlcF9yZW1vdmVfc3VidHJlZSBzdHJlYW0oJXApPSVkXG4iLCBzdHJlYW0s Ci0tICAgICAgICAgc3RyZWFtLT5zdHJlYW1faWQpOwotLQotLSAgYXNzZXJ0KHN0cmVhbS0+ZGVw X3ByZXYpOwotLQotLSAgZGVwX3ByZXYgPSBzdHJlYW0tPmRlcF9wcmV2OwotLQotLSAgaWYgKHN0 cmVhbS0+c2liX3ByZXYpIHsKLS0gICAgbGlua19zaWIoc3RyZWFtLT5zaWJfcHJldiwgc3RyZWFt LT5zaWJfbmV4dCk7Ci0tICB9IGVsc2UgewotLSAgICBuZXh0ID0gc3RyZWFtLT5zaWJfbmV4dDsK LS0KLS0gICAgbGlua19kZXAoZGVwX3ByZXYsIG5leHQpOwotLQotLSAgICBpZiAobmV4dCkgewot LSAgICAgIG5leHQtPnNpYl9wcmV2ID0gTlVMTDsKLS0gICAgfQotLSAgfQotLQotLSAgZGVwX3By ZXYtPnN1bV9kZXBfd2VpZ2h0IC09IHN0cmVhbS0+d2VpZ2h0OwotLQotLSAgaWYgKHN0cmVhbS0+ cXVldWVkKSB7Ci0tICAgIHN0cmVhbV9vYnFfcmVtb3ZlKHN0cmVhbSk7Ci0tICB9Ci0tCi0tICB2 YWxpZGF0ZV90cmVlKGRlcF9wcmV2KTsKLS0KLS0gIHN0cmVhbS0+c2liX3ByZXYgPSBOVUxMOwot LSAgc3RyZWFtLT5zaWJfbmV4dCA9IE5VTEw7Ci0tICBzdHJlYW0tPmRlcF9wcmV2ID0gTlVMTDsK LS19Ci0tCi0taW50IG5naHR0cDJfc3RyZWFtX2luX2RlcF90cmVlKG5naHR0cDJfc3RyZWFtICpz dHJlYW0pIHsKLS0gIHJldHVybiBzdHJlYW0tPmRlcF9wcmV2IHx8IHN0cmVhbS0+ZGVwX25leHQg fHwgc3RyZWFtLT5zaWJfcHJldiB8fAotLSAgICAgICAgIHN0cmVhbS0+c2liX25leHQ7Ci0tfQot LQotLW5naHR0cDJfb3V0Ym91bmRfaXRlbSAqCi0tbmdodHRwMl9zdHJlYW1fbmV4dF9vdXRib3Vu ZF9pdGVtKG5naHR0cDJfc3RyZWFtICpzdHJlYW0pIHsKLS0gIG5naHR0cDJfcHFfZW50cnkgKmVu dDsKLS0gIG5naHR0cDJfc3RyZWFtICpzaTsKLS0KLS0gIGZvciAoOzspIHsKLS0gICAgaWYgKHN0 cmVhbV9hY3RpdmUoc3RyZWFtKSkgewotLSAgICAgIC8qIFVwZGF0ZSBhc2NlbmRhbnQncyBkZXNj ZW5kYW50X2xhc3RfY3ljbGUgaGVyZSwgc28gdGhhdCB3ZSBjYW4KLS0gICAgICAgICBhc3N1cmUg dGhhdCBuZXcgc3RyZWFtIGlzIHNjaGVkdWxlZCBiYXNlZCBvbiBpdC4gKi8KLS0gICAgICBmb3Ig KHNpID0gc3RyZWFtOyBzaS0+ZGVwX3ByZXY7IHNpID0gc2ktPmRlcF9wcmV2KSB7Ci0tICAgICAg ICBzaS0+ZGVwX3ByZXYtPmRlc2NlbmRhbnRfbGFzdF9jeWNsZSA9IHNpLT5jeWNsZTsKLS0gICAg ICB9Ci0tICAgICAgcmV0dXJuIHN0cmVhbS0+aXRlbTsKLS0gICAgfQotLSAgICBlbnQgPSBuZ2h0 dHAyX3BxX3RvcCgmc3RyZWFtLT5vYnEpOwotLSAgICBpZiAoIWVudCkgewotLSAgICAgIHJldHVy biBOVUxMOwotLSAgICB9Ci0tICAgIHN0cmVhbSA9IG5naHR0cDJfc3RydWN0X29mKGVudCwgbmdo dHRwMl9zdHJlYW0sIHBxX2VudHJ5KTsKLStuZ2h0dHAyX3N0cmVhbV9wcm90b19zdGF0ZSBuZ2h0 dHAyX3N0cmVhbV9nZXRfc3RhdGUobmdodHRwMl9zdHJlYW0gKnN0cmVhbSkgewotKyAgaWYgKHN0 cmVhbSA9PSAmbmdodHRwMl9zdHJlYW1fcm9vdCkgewotKyAgICByZXR1cm4gTkdIVFRQMl9TVFJF QU1fU1RBVEVfSURMRTsKLSAgIH0KLS19Ci0gCi0tbmdodHRwMl9zdHJlYW1fcHJvdG9fc3RhdGUg bmdodHRwMl9zdHJlYW1fZ2V0X3N0YXRlKG5naHR0cDJfc3RyZWFtICpzdHJlYW0pIHsKLSAgIGlm IChzdHJlYW0tPmZsYWdzICYgTkdIVFRQMl9TVFJFQU1fRkxBR19DTE9TRUQpIHsKLSAgICAgcmV0 dXJuIE5HSFRUUDJfU1RSRUFNX1NUQVRFX0NMT1NFRDsKLSAgIH0KLUBAIC05ODgsMjcgKzE4NSwz OSBAQCBuZ2h0dHAyX3N0cmVhbV9wcm90b19zdGF0ZSBuZ2h0dHAyX3N0cmVhbV9nZXRfc3RhdGUo bmdodHRwMl9zdHJlYW0gKnN0cmVhbSkgewotIH0KLSAKLSBuZ2h0dHAyX3N0cmVhbSAqbmdodHRw Ml9zdHJlYW1fZ2V0X3BhcmVudChuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtKSB7Ci0tICByZXR1cm4g c3RyZWFtLT5kZXBfcHJldjsKLSsgICh2b2lkKXN0cmVhbTsKLSsKLSsgIHJldHVybiBOVUxMOwot IH0KLSAKLSBuZ2h0dHAyX3N0cmVhbSAqbmdodHRwMl9zdHJlYW1fZ2V0X25leHRfc2libGluZyhu Z2h0dHAyX3N0cmVhbSAqc3RyZWFtKSB7Ci0tICByZXR1cm4gc3RyZWFtLT5zaWJfbmV4dDsKLSsg ICh2b2lkKXN0cmVhbTsKLSsKLSsgIHJldHVybiBOVUxMOwotIH0KLSAKLSBuZ2h0dHAyX3N0cmVh bSAqbmdodHRwMl9zdHJlYW1fZ2V0X3ByZXZpb3VzX3NpYmxpbmcobmdodHRwMl9zdHJlYW0gKnN0 cmVhbSkgewotLSAgcmV0dXJuIHN0cmVhbS0+c2liX3ByZXY7Ci0rICAodm9pZClzdHJlYW07Ci0r Ci0rICByZXR1cm4gTlVMTDsKLSB9Ci0gCi0gbmdodHRwMl9zdHJlYW0gKm5naHR0cDJfc3RyZWFt X2dldF9maXJzdF9jaGlsZChuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtKSB7Ci0tICByZXR1cm4gc3Ry ZWFtLT5kZXBfbmV4dDsKLSsgICh2b2lkKXN0cmVhbTsKLSsKLSsgIHJldHVybiBOVUxMOwotIH0K LSAKLSBpbnQzMl90IG5naHR0cDJfc3RyZWFtX2dldF93ZWlnaHQobmdodHRwMl9zdHJlYW0gKnN0 cmVhbSkgewotLSAgcmV0dXJuIHN0cmVhbS0+d2VpZ2h0OwotKyAgKHZvaWQpc3RyZWFtOwotKwot KyAgcmV0dXJuIE5HSFRUUDJfREVGQVVMVF9XRUlHSFQ7Ci0gfQotIAotIGludDMyX3QgbmdodHRw Ml9zdHJlYW1fZ2V0X3N1bV9kZXBlbmRlbmN5X3dlaWdodChuZ2h0dHAyX3N0cmVhbSAqc3RyZWFt KSB7Ci0tICByZXR1cm4gc3RyZWFtLT5zdW1fZGVwX3dlaWdodDsKLSsgICh2b2lkKXN0cmVhbTsK LSsKLSsgIHJldHVybiAwOwotIH0KLSAKLSBpbnQzMl90IG5naHR0cDJfc3RyZWFtX2dldF9zdHJl YW1faWQobmdodHRwMl9zdHJlYW0gKnN0cmVhbSkgewotZGlmZiAtLWdpdCBhL2RlcHMvbmdodHRw Mi9saWIvbmdodHRwMl9zdHJlYW0uaCBiL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9zdHJlYW0u aAotaW5kZXggMjhhZGQxNjUuLjYwMzIwOWVjIDEwMDY0NAotLS0tIGEvZGVwcy9uZ2h0dHAyL2xp Yi9uZ2h0dHAyX3N0cmVhbS5oCi0rKysgYi9kZXBzL25naHR0cDIvbGliL25naHR0cDJfc3RyZWFt LmgKLUBAIC0yNyw3ICsyNyw3IEBACi0gCi0gI2lmZGVmIEhBVkVfQ09ORklHX0gKLSAjICBpbmNs dWRlIDxjb25maWcuaD4KLS0jZW5kaWYgLyogSEFWRV9DT05GSUdfSCAqLwotKyNlbmRpZiAvKiBk ZWZpbmVkKEhBVkVfQ09ORklHX0gpICovCi0gCi0gI2luY2x1ZGUgPG5naHR0cDIvbmdodHRwMi5o PgotICNpbmNsdWRlICJuZ2h0dHAyX291dGJvdW5kX2l0ZW0uaCIKLUBAIC05MSw5ICs5MSw2IEBA IHR5cGVkZWYgZW51bSB7Ci0gICAvKiBiaXR3aXNlIE9SIG9mIE5HSFRUUDJfU1RSRUFNX0ZMQUdf REVGRVJSRURfRkxPV19DT05UUk9MIGFuZAotICAgICAgTkdIVFRQMl9TVFJFQU1fRkxBR19ERUZF UlJFRF9VU0VSLiAqLwotICAgTkdIVFRQMl9TVFJFQU1fRkxBR19ERUZFUlJFRF9BTEwgPSAweDBj LAotLSAgLyogSW5kaWNhdGVzIHRoYXQgdGhpcyBzdHJlYW0gaXMgbm90IHN1YmplY3QgdG8gUkZD NzU0MAotLSAgICAgcHJpb3JpdGllcyBzY2hlbWUuICovCi0tICBOR0hUVFAyX1NUUkVBTV9GTEFH X05PX1JGQzc1NDBfUFJJT1JJVElFUyA9IDB4MTAsCi0gICAvKiBJZ25vcmUgY2xpZW50IFJGQyA5 MjE4IHByaW9yaXR5IHNpZ25hbC4gKi8KLSAgIE5HSFRUUDJfU1RSRUFNX0ZMQUdfSUdOT1JFX0NM SUVOVF9QUklPUklUSUVTID0gMHgyMCwKLSAgIC8qIEluZGljYXRlcyB0aGF0IFJGQyA5MTEzIGxl YWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlIHNwYWNlcwotQEAgLTE0NiwzOSArMTQzLDE4IEBAIHR5 cGVkZWYgZW51bSB7Ci0gfSBuZ2h0dHAyX2h0dHBfZmxhZzsKLSAKLSBzdHJ1Y3QgbmdodHRwMl9z dHJlYW0gewotLSAgLyogRW50cnkgZm9yIGRlcF9wcmV2LT5vYnEgKi8KLSsgIG5naHR0cDJfc3Ry ZWFtX3N0YXRlIHN0YXRlOwotICAgbmdodHRwMl9wcV9lbnRyeSBwcV9lbnRyeTsKLS0gIC8qIFBy aW9yaXR5IFF1ZXVlIHN0b3JpbmcgZGlyZWN0IGRlc2NlbmRhbnQgKG5naHR0cDJfc3RyZWFtKS4g IE9ubHkKLS0gICAgIHN0cmVhbXMgd2hpY2ggaXRzZWxmIGhhcyBzb21lIGRhdGEgdG8gc2VuZCwg b3IgaGFzIGEgZGVzY2VuZGFudAotLSAgICAgd2hpY2ggaGFzIHNvbWUgZGF0YSB0byBzZW50LiAq LwotLSAgbmdodHRwMl9wcSBvYnE7Ci0gICAvKiBDb250ZW50LUxlbmd0aCBvZiByZXF1ZXN0L3Jl c3BvbnNlIGJvZHkuICAtMSBpZiB1bmtub3duLiAqLwotICAgaW50NjRfdCBjb250ZW50X2xlbmd0 aDsKLSAgIC8qIFJlY2VpdmVkIGJvZHkgc28gZmFyICovCi0gICBpbnQ2NF90IHJlY3ZfY29udGVu dF9sZW5ndGg7Ci0tICAvKiBCYXNlIGxhc3RfY3ljbGUgZm9yIGRpcmVjdCBkZXNjZW5kZW50IHN0 cmVhbXMuICovCi0tICB1aW50NjRfdCBkZXNjZW5kYW50X2xhc3RfY3ljbGU7Ci0gICAvKiBOZXh0 IHNjaGVkdWxlZCB0aW1lIHRvIHNlbnQgaXRlbSAqLwotICAgdWludDY0X3QgY3ljbGU7Ci0tICAv KiBOZXh0IHNlcSB1c2VkIGZvciBkaXJlY3QgZGVzY2VuZGFudCBzdHJlYW1zICovCi0tICB1aW50 NjRfdCBkZXNjZW5kYW50X25leHRfc2VxOwotICAgLyogU2Vjb25kYXJ5IGtleSBmb3IgcHJpb3Jp dGl6YXRpb24gdG8gYnJlYWsgYSB0aWUgZm9yIGN5Y2xlLiAgVGhpcwotICAgICAgdmFsdWUgaXMg bW9ub3RvbmljYWxseSBpbmNyZWFzZWQgZm9yIHNpbmdsZSBwYXJlbnQgc3RyZWFtLiAqLwotICAg dWludDY0X3Qgc2VxOwotLSAgLyogcG9pbnRlcnMgdG8gZm9ybSBkZXBlbmRlbmN5IHRyZWUuICBJ ZiBtdWx0aXBsZSBzdHJlYW1zIGRlcGVuZCBvbgotLSAgICAgYSBzdHJlYW0sIG9ubHkgb25lIHN0 cmVhbSAobGVmdCBtb3N0KSBoYXMgbm9uLU5VTEwgZGVwX3ByZXYgd2hpY2gKLS0gICAgIHBvaW50 cyB0byB0aGUgc3RyZWFtIGl0IGRlcGVuZHMgb24uIFRoZSByZW1haW5pbmcgc3RyZWFtcyBhcmUK LS0gICAgIGxpbmtlZCB1c2luZyBzaWJfcHJldiBhbmQgc2liX25leHQuICBUaGUgc3RyZWFtIHdo aWNoIGhhcwotLSAgICAgbm9uLU5VTEwgZGVwX3ByZXYgYWx3YXlzIE5VTEwgc2liX3ByZXYuICBU aGUgcmlnaHQgbW9zdCBzdHJlYW0KLS0gICAgIGhhcyBOVUxMIHNpYl9uZXh0LiAgSWYgdGhpcyBz dHJlYW0gaXMgYSByb290IG9mIGRlcGVuZGVuY3kgdHJlZSwKLS0gICAgIGRlcF9wcmV2IGFuZCBz aWJfcHJldiBhcmUgTlVMTC4gKi8KLS0gIG5naHR0cDJfc3RyZWFtICpkZXBfcHJldiwgKmRlcF9u ZXh0OwotLSAgbmdodHRwMl9zdHJlYW0gKnNpYl9wcmV2LCAqc2liX25leHQ7Ci0tICAvKiBXaGVu IHN0cmVhbSBpcyBrZXB0IGFmdGVyIGNsb3N1cmUsIGl0IG1heSBiZSBrZXB0IGluIGRvdWJseQot LSAgICAgbGlua2VkIGxpc3QgcG9pbnRlZCBieSBuZ2h0dHAyX3Nlc3Npb24gY2xvc2VkX3N0cmVh bV9oZWFkLgotLSAgICAgY2xvc2VkX25leHQgcG9pbnRzIHRvIHRoZSBuZXh0IHN0cmVhbSBvYmpl Y3QgaWYgaXQgaXMgdGhlIGVsZW1lbnQKLS0gICAgIG9mIHRoZSBsaXN0LiAqLwotLSAgbmdodHRw Ml9zdHJlYW0gKmNsb3NlZF9wcmV2LCAqY2xvc2VkX25leHQ7Ci0rICBuZ2h0dHAyX3N0cmVhbSAq Y2xvc2VkX25leHQ7Ci0gICAvKiBUaGUgYXJiaXRyYXJ5IGRhdGEgcHJvdmlkZWQgYnkgdXNlciBm b3IgdGhpcyBzdHJlYW0uICovCi0gICB2b2lkICpzdHJlYW1fdXNlcl9kYXRhOwotICAgLyogSXRl bSB0byBzZW5kICovCi1AQCAtMjA1LDEzICsxODEsOCBAQCBzdHJ1Y3QgbmdodHRwMl9zdHJlYW0g ewotICAgICAgTkdIVFRQMl9JTklUSUFMX1dJTkRPV19TSVpFIGFuZCBjb3VsZCBiZSBpbmNyZWFz ZWQvZGVjcmVhc2VkIGJ5Ci0gICAgICBzdWJtaXR0aW5nIFdJTkRPV19VUERBVEUuIFNlZSBuZ2h0 dHAyX3N1Ym1pdF93aW5kb3dfdXBkYXRlKCkuICovCi0gICBpbnQzMl90IGxvY2FsX3dpbmRvd19z aXplOwotLSAgLyogd2VpZ2h0IG9mIHRoaXMgc3RyZWFtICovCi0tICBpbnQzMl90IHdlaWdodDsK LSAgIC8qIFRoaXMgaXMgdW5wYWlkIHBlbmFsdHkgKG9mZnNldCkgd2hlbiBjYWxjdWxhdGluZyBj eWNsZS4gKi8KLSAgIHVpbnQzMl90IHBlbmRpbmdfcGVuYWx0eTsKLS0gIC8qIHN1bSBvZiB3ZWln aHQgb2YgZGlyZWN0IGRlc2NlbmRhbnRzICovCi0tICBpbnQzMl90IHN1bV9kZXBfd2VpZ2h0Owot LSAgbmdodHRwMl9zdHJlYW1fc3RhdGUgc3RhdGU7Ci0gICAvKiBzdGF0dXMgY29kZSBmcm9tIHJl bW90ZSBzZXJ2ZXIgKi8KLSAgIGludDE2X3Qgc3RhdHVzX2NvZGU7Ci0gICAvKiBCaXR3aXNlIE9S IG9mIHplcm8gb3IgbW9yZSBuZ2h0dHAyX2h0dHBfZmxhZyB2YWx1ZXMgKi8KLUBAIC0yMzksOSAr MjEwLDkgQEAgc3RydWN0IG5naHR0cDJfc3RyZWFtIHsKLSAKLSB2b2lkIG5naHR0cDJfc3RyZWFt X2luaXQobmdodHRwMl9zdHJlYW0gKnN0cmVhbSwgaW50MzJfdCBzdHJlYW1faWQsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgZmxhZ3MsIG5naHR0cDJfc3RyZWFtX3N0YXRlIGlu aXRpYWxfc3RhdGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgd2VpZ2h0LCBp bnQzMl90IHJlbW90ZV9pbml0aWFsX3dpbmRvd19zaXplLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQzMl90IHJlbW90ZV9pbml0aWFsX3dpbmRvd19zaXplLAotICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnQzMl90IGxvY2FsX2luaXRpYWxfd2luZG93X3NpemUsCi0tICAgICAgICAg ICAgICAgICAgICAgICAgIHZvaWQgKnN0cmVhbV91c2VyX2RhdGEsIG5naHR0cDJfbWVtICptZW0p OwotKyAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpzdHJlYW1fdXNlcl9kYXRhKTsKLSAK LSB2b2lkIG5naHR0cDJfc3RyZWFtX2ZyZWUobmdodHRwMl9zdHJlYW0gKnN0cmVhbSk7Ci0gCi1A QCAtMjY3LDE0ICsyMzgsOCBAQCB2b2lkIG5naHR0cDJfc3RyZWFtX2RlZmVyX2l0ZW0obmdodHRw Ml9zdHJlYW0gKnN0cmVhbSwgdWludDhfdCBmbGFncyk7Ci0gICogTkdIVFRQMl9TVFJFQU1fRkxB R19ERUZFUlJFRF9GTE9XX0NPTlRST0wgYW5kIGdpdmVuIG1hc2tzIGFyZQotICAqIGNsZWFyZWQg aWYgdGhleSBhcmUgc2V0LiAgU28gZXZlbiBpZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCwgaWYK LSAgKiBvbmUgb2YgZmxhZyBpcyBzdGlsbCBzZXQsIGRhdGEgZG9lcyBub3QgYmVjb21lIGFjdGl2 ZS4KLS0gKgotLSAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyAwIGlmIGl0IHN1Y2NlZWRzLCBvciBv bmUgb2YgdGhlIGZvbGxvd2luZwotLSAqIG5lZ2F0aXZlIGVycm9yIGNvZGVzOgotLSAqCi0tICog TkdIVFRQMl9FUlJfTk9NRU0KLS0gKiAgICAgT3V0IG9mIG1lbW9yeQotICAqLwotLWludCBuZ2h0 dHAyX3N0cmVhbV9yZXN1bWVfZGVmZXJyZWRfaXRlbShuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtLCB1 aW50OF90IGZsYWdzKTsKLSt2b2lkIG5naHR0cDJfc3RyZWFtX3Jlc3VtZV9kZWZlcnJlZF9pdGVt KG5naHR0cDJfc3RyZWFtICpzdHJlYW0sIHVpbnQ4X3QgZmxhZ3MpOwotIAotIC8qCi0gICogUmV0 dXJucyBub256ZXJvIGlmIGl0ZW0gaXMgZGVmZXJyZWQgYnkgd2hhdGV2ZXIgcmVhc29uLgotQEAg LTMxNyw1NyArMjgyLDExIEBAIGludCBuZ2h0dHAyX3N0cmVhbV91cGRhdGVfbG9jYWxfaW5pdGlh bF93aW5kb3dfc2l6ZSgKLSAgKi8KLSB2b2lkIG5naHR0cDJfc3RyZWFtX3Byb21pc2VfZnVsZmls bGVkKG5naHR0cDJfc3RyZWFtICpzdHJlYW0pOwotIAotLS8qCi0tICogUmV0dXJucyBub256ZXJv IGlmIHx0YXJnZXR8IGlzIGFuIGFuY2VzdG9yIG9mIHxzdHJlYW18LgotLSAqLwotLWludCBuZ2h0 dHAyX3N0cmVhbV9kZXBfZmluZF9hbmNlc3RvcihuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtLAotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2h0dHAyX3N0cmVhbSAqdGFyZ2V0 KTsKLS0KLS0vKgotLSAqIENvbXB1dGVzIGRpc3RyaWJ1dGVkIHdlaWdodCBvZiBhIHN0cmVhbSBv ZiB0aGUgfHdlaWdodHwgdW5kZXIgdGhlCi0tICogfHN0cmVhbXwgaWYgfHN0cmVhbXwgaXMgcmVt b3ZlZCBmcm9tIGEgZGVwZW5kZW5jeSB0cmVlLgotLSAqLwotLWludDMyX3QgbmdodHRwMl9zdHJl YW1fZGVwX2Rpc3RyaWJ1dGVkX3dlaWdodChuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtLAotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHdlaWdodCk7 Ci0tCi0tLyoKLS0gKiBNYWtlcyB0aGUgfHN0cmVhbXwgZGVwZW5kIG9uIHRoZSB8ZGVwX3N0cmVh bXwuICBUaGlzIGRlcGVuZGVuY3kgaXMKLS0gKiBleGNsdXNpdmUuICBBbGwgZXhpc3RpbmcgZGly ZWN0IGRlc2NlbmRhbnRzIG9mIHxkZXBfc3RyZWFtfCBiZWNvbWUKLS0gKiB0aGUgZGVzY2VuZGFu dHMgb2YgdGhlIHxzdHJlYW18LiAgVGhpcyBmdW5jdGlvbiBhc3N1bWVzCi0tICogfHN0cmVhbS0+ aXRlbXwgaXMgTlVMTC4KLS0gKgotLSAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyAwIGlmIGl0IHN1 Y2NlZWRzLCBvciBvbmUgb2YgdGhlIGZvbGxvd2luZwotLSAqIG5lZ2F0aXZlIGVycm9yIGNvZGVz OgotLSAqCi0tICogTkdIVFRQMl9FUlJfTk9NRU0KLS0gKiAgICAgT3V0IG9mIG1lbW9yeQotLSAq LwotLWludCBuZ2h0dHAyX3N0cmVhbV9kZXBfaW5zZXJ0KG5naHR0cDJfc3RyZWFtICpkZXBfc3Ry ZWFtLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5naHR0cDJfc3RyZWFtICpzdHJl YW0pOwotLQotLS8qCi0tICogTWFrZXMgdGhlIHxzdHJlYW18IGRlcGVuZCBvbiB0aGUgfGRlcF9z dHJlYW18LiAgVGhpcyBkZXBlbmRlbmN5IGlzCi0tICogbm90IGV4Y2x1c2l2ZS4gIFRoaXMgZnVu Y3Rpb24gYXNzdW1lcyB8c3RyZWFtLT5pdGVtfCBpcyBOVUxMLgotLSAqLwotLXZvaWQgbmdodHRw Ml9zdHJlYW1fZGVwX2FkZChuZ2h0dHAyX3N0cmVhbSAqZGVwX3N0cmVhbSwgbmdodHRwMl9zdHJl YW0gKnN0cmVhbSk7Ci0tCi0tLyoKLS0gKiBSZW1vdmVzIHRoZSB8c3RyZWFtfCBmcm9tIHRoZSBj dXJyZW50IGRlcGVuZGVuY3kgdHJlZS4gIFRoaXMKLS0gKiBmdW5jdGlvbiBhc3N1bWVzIHxzdHJl YW0tPml0ZW18IGlzIE5VTEwuCi0tICovCi0taW50IG5naHR0cDJfc3RyZWFtX2RlcF9yZW1vdmUo bmdodHRwMl9zdHJlYW0gKnN0cmVhbSk7Ci0tCi0gLyoKLSAgKiBBdHRhY2hlcyB8aXRlbXwgdG8g fHN0cmVhbXwuCi0tICoKLS0gKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgMCBpZiBpdCBzdWNjZWVk cywgb3Igb25lIG9mIHRoZSBmb2xsb3dpbmcKLS0gKiBuZWdhdGl2ZSBlcnJvciBjb2RlczoKLS0g KgotLSAqIE5HSFRUUDJfRVJSX05PTUVNCi0tICogICAgIE91dCBvZiBtZW1vcnkKLSAgKi8KLS1p bnQgbmdodHRwMl9zdHJlYW1fYXR0YWNoX2l0ZW0obmdodHRwMl9zdHJlYW0gKnN0cmVhbSwKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdodHRwMl9vdXRib3VuZF9pdGVtICppdGVt KTsKLSt2b2lkIG5naHR0cDJfc3RyZWFtX2F0dGFjaF9pdGVtKG5naHR0cDJfc3RyZWFtICpzdHJl YW0sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2h0dHAyX291dGJvdW5kX2l0 ZW0gKml0ZW0pOwotIAotIC8qCi0gICogRGV0YWNoZXMgfHN0cmVhbS0+aXRlbXwuICBUaGlzIGZ1 bmN0aW9uIGRvZXMgbm90IGZyZWUKLUBAIC0zNzUsNjYgKzI5NCw0IEBAIGludCBuZ2h0dHAyX3N0 cmVhbV9hdHRhY2hfaXRlbShuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtLAotICAqLwotIHZvaWQgbmdo dHRwMl9zdHJlYW1fZGV0YWNoX2l0ZW0obmdodHRwMl9zdHJlYW0gKnN0cmVhbSk7Ci0gCi0tLyoK LS0gKiBNYWtlcyB0aGUgfHN0cmVhbXwgZGVwZW5kIG9uIHRoZSB8ZGVwX3N0cmVhbXwuICBUaGlz IGRlcGVuZGVuY3kgaXMKLS0gKiBleGNsdXNpdmUuCi0tICoKLS0gKiBUaGlzIGZ1bmN0aW9uIHJl dHVybnMgMCBpZiBpdCBzdWNjZWVkcywgb3Igb25lIG9mIHRoZSBmb2xsb3dpbmcKLS0gKiBuZWdh dGl2ZSBlcnJvciBjb2RlczoKLS0gKgotLSAqIE5HSFRUUDJfRVJSX05PTUVNCi0tICogICAgIE91 dCBvZiBtZW1vcnkKLS0gKi8KLS1pbnQgbmdodHRwMl9zdHJlYW1fZGVwX2luc2VydF9zdWJ0cmVl KG5naHR0cDJfc3RyZWFtICpkZXBfc3RyZWFtLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbmdodHRwMl9zdHJlYW0gKnN0cmVhbSk7Ci0tCi0tLyoKLS0gKiBNYWtlcyB0 aGUgfHN0cmVhbXwgZGVwZW5kIG9uIHRoZSB8ZGVwX3N0cmVhbXwuICBUaGlzIGRlcGVuZGVuY3kg aXMKLS0gKiBub3QgZXhjbHVzaXZlLgotLSAqCi0tICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIDAg aWYgaXQgc3VjY2VlZHMsIG9yIG9uZSBvZiB0aGUgZm9sbG93aW5nCi0tICogbmVnYXRpdmUgZXJy b3IgY29kZXM6Ci0tICoKLS0gKiBOR0hUVFAyX0VSUl9OT01FTQotLSAqICAgICBPdXQgb2YgbWVt b3J5Ci0tICovCi0taW50IG5naHR0cDJfc3RyZWFtX2RlcF9hZGRfc3VidHJlZShuZ2h0dHAyX3N0 cmVhbSAqZGVwX3N0cmVhbSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5n aHR0cDJfc3RyZWFtICpzdHJlYW0pOwotLQotLS8qCi0tICogUmVtb3ZlcyBzdWJ0cmVlIHdob3Nl IHJvb3Qgc3RyZWFtIGlzIHxzdHJlYW18LiAgVGhlCi0tICogZWZmZWN0aXZlX3dlaWdodCBvZiBz dHJlYW1zIGluIHJlbW92ZWQgc3VidHJlZSBpcyBub3QgdXBkYXRlZC4KLS0gKgotLSAqIFRoaXMg ZnVuY3Rpb24gcmV0dXJucyAwIGlmIGl0IHN1Y2NlZWRzLCBvciBvbmUgb2YgdGhlIGZvbGxvd2lu ZwotLSAqIG5lZ2F0aXZlIGVycm9yIGNvZGVzOgotLSAqCi0tICogTkdIVFRQMl9FUlJfTk9NRU0K LS0gKiAgICAgT3V0IG9mIG1lbW9yeQotLSAqLwotLXZvaWQgbmdodHRwMl9zdHJlYW1fZGVwX3Jl bW92ZV9zdWJ0cmVlKG5naHR0cDJfc3RyZWFtICpzdHJlYW0pOwotLQotLS8qCi0tICogUmV0dXJu cyBub256ZXJvIGlmIHxzdHJlYW18IGlzIGluIGFueSBkZXBlbmRlbmN5IHRyZWUuCi0tICovCi0t aW50IG5naHR0cDJfc3RyZWFtX2luX2RlcF90cmVlKG5naHR0cDJfc3RyZWFtICpzdHJlYW0pOwot LQotLS8qCi0tICogU2NoZWR1bGVzIHRyYW5zbWlzc2lvbiBvZiB8c3RyZWFtfCdzIGl0ZW0sIGFz c3VtaW5nIHN0cmVhbS0+aXRlbSBpcwotLSAqIGF0dGFjaGVkLCBhbmQgc3RyZWFtLT5sYXN0X3dy aXRlbGVuIHdhcyB1cGRhdGVkLgotLSAqLwotLXZvaWQgbmdodHRwMl9zdHJlYW1fcmVzY2hlZHVs ZShuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtKTsKLS0KLS0vKgotLSAqIENoYW5nZXMgfHN0cmVhbXwn cyB3ZWlnaHQgdG8gfHdlaWdodHwuICBJZiB8c3RyZWFtfCBpcyBxdWV1ZWQsIGl0Ci0tICogd2ls bCBiZSByZXNjaGVkdWxlZCBiYXNlZCBvbiBuZXcgd2VpZ2h0LgotLSAqLwotLXZvaWQgbmdodHRw Ml9zdHJlYW1fY2hhbmdlX3dlaWdodChuZ2h0dHAyX3N0cmVhbSAqc3RyZWFtLCBpbnQzMl90IHdl aWdodCk7Ci0tCi0tLyoKLS0gKiBSZXR1cm5zIGEgc3RyZWFtIHdoaWNoIGhhcyBoaWdoZXN0IHBy aW9yaXR5LCB1cGRhdGluZwotLSAqIGRlc2NlbmRhbnRfbGFzdF9jeWNsZSBvZiBzZWxlY3RlZCBz dHJlYW0ncyBhbmNlc3RvcnMuCi0tICovCi0tbmdodHRwMl9vdXRib3VuZF9pdGVtICoKLS1uZ2h0 dHAyX3N0cmVhbV9uZXh0X291dGJvdW5kX2l0ZW0obmdodHRwMl9zdHJlYW0gKnN0cmVhbSk7Ci0t Ci0tI2VuZGlmIC8qIE5HSFRUUDJfU1RSRUFNICovCi0rI2VuZGlmIC8qICFkZWZpbmVkKE5HSFRU UDJfU1RSRUFNX0gpICovCi1kaWZmIC0tZ2l0IGEvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX3N1 Ym1pdC5jIGIvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX3N1Ym1pdC5jCi1pbmRleCA4MWMxYWI3 MC4uOGE5MGY3MTQgMTAwNjQ0Ci0tLS0gYS9kZXBzL25naHR0cDIvbGliL25naHR0cDJfc3VibWl0 LmMKLSsrKyBiL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl9zdWJtaXQuYwotQEAgLTMyLDQyICsz MiwxMiBAQAotICNpbmNsdWRlICJuZ2h0dHAyX2hlbHBlci5oIgotICNpbmNsdWRlICJuZ2h0dHAy X3ByaW9yaXR5X3NwZWMuaCIKLSAKLS0vKgotLSAqIERldGVjdHMgdGhlIGRlcGVuZGVuY3kgZXJy b3IsIHRoYXQgaXMgc3RyZWFtIGF0dGVtcHRlZCB0byBkZXBlbmQgb24KLS0gKiBpdHNlbGYuICBJ ZiB8c3RyZWFtX2lkfCBpcyAtMSwgd2UgdXNlIHNlc3Npb24tPm5leHRfc3RyZWFtX2lkIGFzCi0t ICogc3RyZWFtIElELgotLSAqCi0tICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIDAgaWYgaXQgc3Vj Y2VlZHMsIG9yIG9uZSBvZiB0aGUgZm9sbG93aW5nCi0tICogZXJyb3IgY29kZXM6Ci0tICoKLS0g KiBOR0hUVFAyX0VSUl9JTlZBTElEX0FSR1VNRU5UCi0tICogICBTdHJlYW0gYXR0ZW1wdGVkIHRv IGRlcGVuZCBvbiBpdHNlbGYuCi0tICovCi0tc3RhdGljIGludCBkZXRlY3Rfc2VsZl9kZXBlbmRl bmN5KG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwgaW50MzJfdCBzdHJlYW1faWQsCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5naHR0cDJfcHJpb3JpdHlfc3BlYyAq cHJpX3NwZWMpIHsKLS0gIGFzc2VydChwcmlfc3BlYyk7Ci0tCi0tICBpZiAoc3RyZWFtX2lkID09 IC0xKSB7Ci0tICAgIGlmICgoaW50MzJfdClzZXNzaW9uLT5uZXh0X3N0cmVhbV9pZCA9PSBwcmlf c3BlYy0+c3RyZWFtX2lkKSB7Ci0tICAgICAgcmV0dXJuIE5HSFRUUDJfRVJSX0lOVkFMSURfQVJH VU1FTlQ7Ci0tICAgIH0KLS0gICAgcmV0dXJuIDA7Ci0tICB9Ci0tCi0tICBpZiAoc3RyZWFtX2lk ID09IHByaV9zcGVjLT5zdHJlYW1faWQpIHsKLS0gICAgcmV0dXJuIE5HSFRUUDJfRVJSX0lOVkFM SURfQVJHVU1FTlQ7Ci0tICB9Ci0tCi0tICByZXR1cm4gMDsKLS19Ci0tCi0gLyogVGhpcyBmdW5j dGlvbiB0YWtlcyBvd25lcnNoaXAgb2YgfG52YV9jb3B5fC4gUmVnYXJkbGVzcyBvZiB0aGUKLSAg ICByZXR1cm4gdmFsdWUsIHRoZSBjYWxsZXIgbXVzdCBub3QgZnJlZSB8bnZhX2NvcHl8IGFmdGVy IHRoaXMKLSAgICBmdW5jdGlvbiByZXR1cm5zLiAqLwotIHN0YXRpYyBpbnQzMl90IHN1Ym1pdF9o ZWFkZXJzX3NoYXJlZChuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sIHVpbnQ4X3QgZmxhZ3MsCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgc3RyZWFtX2lkLAot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZ2h0dHAyX3ByaW9y aXR5X3NwZWMgKnByaV9zcGVjLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBuZ2h0dHAyX252ICpudmFfY29weSwgc2l6ZV90IG52bGVuLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHN0cmVhbV9pZCwgbmdodHRwMl9udiAqbnZhX2Nv cHksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBudmxlbiwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmdodHRwMl9kYXRh X3Byb3ZpZGVyX3dyYXAgKmRwdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdm9pZCAqc3RyZWFtX3VzZXJfZGF0YSkgewotICAgaW50IHJ2OwotQEAgLTExNCw4ICs4NCw4 IEBAIHN0YXRpYyBpbnQzMl90IHN1Ym1pdF9oZWFkZXJzX3NoYXJlZChuZ2h0dHAyX3Nlc3Npb24g KnNlc3Npb24sIHVpbnQ4X3QgZmxhZ3MsCi0gCi0gICBmcmFtZSA9ICZpdGVtLT5mcmFtZTsKLSAK LS0gIG5naHR0cDJfZnJhbWVfaGVhZGVyc19pbml0KCZmcmFtZS0+aGVhZGVycywgZmxhZ3NfY29w eSwgc3RyZWFtX2lkLCBoY2F0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpX3Nw ZWMsIG52YV9jb3B5LCBudmxlbik7Ci0rICBuZ2h0dHAyX2ZyYW1lX2hlYWRlcnNfaW5pdCgmZnJh bWUtPmhlYWRlcnMsIGZsYWdzX2NvcHksIHN0cmVhbV9pZCwgaGNhdCwgTlVMTCwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG52YV9jb3B5LCBudmxlbik7Ci0gCi0gICBydiA9IG5naHR0 cDJfc2Vzc2lvbl9hZGRfaXRlbShzZXNzaW9uLCBpdGVtKTsKLSAKLUBAIC0xNDEsMzEgKzExMSwy MiBAQCBmYWlsMjoKLSAKLSBzdGF0aWMgaW50MzJfdCBzdWJtaXRfaGVhZGVyc19zaGFyZWRfbnZh KG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVpbnQ4X3QgZmxhZ3MsIGludDMyX3Qgc3RyZWFtX2lkLAotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmdodHRwMl9wcmlvcml0eV9z cGVjICpwcmlfc3BlYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IG5naHR0cDJfbnYgKm52YSwgc2l6ZV90IG52bGVuLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmdodHRwMl9kYXRhX3Byb3ZpZGVyX3dyYXAg KmRwdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnN0 cmVhbV91c2VyX2RhdGEpIHsKLSAgIGludCBydjsKLSAgIG5naHR0cDJfbnYgKm52YV9jb3B5Owot LSAgbmdodHRwMl9wcmlvcml0eV9zcGVjIGNvcHlfcHJpX3NwZWM7Ci0gICBuZ2h0dHAyX21lbSAq bWVtOwotIAotICAgbWVtID0gJnNlc3Npb24tPm1lbTsKLSAKLS0gIGlmIChwcmlfc3BlYykgewot LSAgICBjb3B5X3ByaV9zcGVjID0gKnByaV9zcGVjOwotLSAgICBuZ2h0dHAyX3ByaW9yaXR5X3Nw ZWNfbm9ybWFsaXplX3dlaWdodCgmY29weV9wcmlfc3BlYyk7Ci0tICB9IGVsc2UgewotLSAgICBu Z2h0dHAyX3ByaW9yaXR5X3NwZWNfZGVmYXVsdF9pbml0KCZjb3B5X3ByaV9zcGVjKTsKLS0gIH0K LS0KLSAgIHJ2ID0gbmdodHRwMl9udl9hcnJheV9jb3B5KCZudmFfY29weSwgbnZhLCBudmxlbiwg bWVtKTsKLSAgIGlmIChydiA8IDApIHsKLSAgICAgcmV0dXJuIHJ2OwotICAgfQotIAotLSAgcmV0 dXJuIHN1Ym1pdF9oZWFkZXJzX3NoYXJlZChzZXNzaW9uLCBmbGFncywgc3RyZWFtX2lkLCAmY29w eV9wcmlfc3BlYywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnZhX2NvcHksIG52 bGVuLCBkcHcsIHN0cmVhbV91c2VyX2RhdGEpOwotKyAgcmV0dXJuIHN1Ym1pdF9oZWFkZXJzX3No YXJlZChzZXNzaW9uLCBmbGFncywgc3RyZWFtX2lkLCBudmFfY29weSwgbnZsZW4sIGRwdywKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX3VzZXJfZGF0YSk7Ci0gfQotIAot IGludCBuZ2h0dHAyX3N1Ym1pdF90cmFpbGVyKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwgaW50 MzJfdCBzdHJlYW1faWQsCi1AQCAtMTc0LDggKzEzNSw4IEBAIGludCBuZ2h0dHAyX3N1Ym1pdF90 cmFpbGVyKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwgaW50MzJfdCBzdHJlYW1faWQsCi0gICAg IHJldHVybiBOR0hUVFAyX0VSUl9JTlZBTElEX0FSR1VNRU5UOwotICAgfQotIAotLSAgcmV0dXJu IChpbnQpc3VibWl0X2hlYWRlcnNfc2hhcmVkX252YSgKLS0gICAgc2Vzc2lvbiwgTkdIVFRQMl9G TEFHX0VORF9TVFJFQU0sIHN0cmVhbV9pZCwgTlVMTCwgbnZhLCBudmxlbiwgTlVMTCwgTlVMTCk7 Ci0rICByZXR1cm4gKGludClzdWJtaXRfaGVhZGVyc19zaGFyZWRfbnZhKHNlc3Npb24sIE5HSFRU UDJfRkxBR19FTkRfU1RSRUFNLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJlYW1faWQsIG52YSwgbnZsZW4sIE5VTEwsIE5VTEwpOwotIH0KLSAKLSBpbnQzMl90 IG5naHR0cDJfc3VibWl0X2hlYWRlcnMobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLCB1aW50OF90 IGZsYWdzLAotQEAgLTE4Myw3ICsxNDQsNyBAQCBpbnQzMl90IG5naHR0cDJfc3VibWl0X2hlYWRl cnMobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLCB1aW50OF90IGZsYWdzLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBuZ2h0dHAyX3ByaW9yaXR5X3NwZWMgKnByaV9zcGVj LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZ2h0dHAyX252ICpudmEs IHNpemVfdCBudmxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqc3Ry ZWFtX3VzZXJfZGF0YSkgewotLSAgaW50IHJ2OwotKyAgKHZvaWQpcHJpX3NwZWM7Ci0gCi0gICBp ZiAoc3RyZWFtX2lkID09IC0xKSB7Ci0gICAgIGlmIChzZXNzaW9uLT5zZXJ2ZXIpIHsKLUBAIC0x OTUsMjAgKzE1Niw4IEBAIGludDMyX3QgbmdodHRwMl9zdWJtaXRfaGVhZGVycyhuZ2h0dHAyX3Nl c3Npb24gKnNlc3Npb24sIHVpbnQ4X3QgZmxhZ3MsCi0gCi0gICBmbGFncyAmPSBOR0hUVFAyX0ZM QUdfRU5EX1NUUkVBTTsKLSAKLS0gIGlmIChwcmlfc3BlYyAmJiAhbmdodHRwMl9wcmlvcml0eV9z cGVjX2NoZWNrX2RlZmF1bHQocHJpX3NwZWMpICYmCi0tICAgICAgc2Vzc2lvbi0+cmVtb3RlX3Nl dHRpbmdzLm5vX3JmYzc1NDBfcHJpb3JpdGllcyAhPSAxKSB7Ci0tICAgIHJ2ID0gZGV0ZWN0X3Nl bGZfZGVwZW5kZW5jeShzZXNzaW9uLCBzdHJlYW1faWQsIHByaV9zcGVjKTsKLS0gICAgaWYgKHJ2 ICE9IDApIHsKLS0gICAgICByZXR1cm4gcnY7Ci0tICAgIH0KLS0KLS0gICAgZmxhZ3MgfD0gTkdI VFRQMl9GTEFHX1BSSU9SSVRZOwotLSAgfSBlbHNlIHsKLS0gICAgcHJpX3NwZWMgPSBOVUxMOwot LSAgfQotLQotLSAgcmV0dXJuIHN1Ym1pdF9oZWFkZXJzX3NoYXJlZF9udmEoc2Vzc2lvbiwgZmxh Z3MsIHN0cmVhbV9pZCwgcHJpX3NwZWMsIG52YSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG52bGVuLCBOVUxMLCBzdHJlYW1fdXNlcl9kYXRhKTsKLSsgIHJldHVybiBzdWJt aXRfaGVhZGVyc19zaGFyZWRfbnZhKHNlc3Npb24sIGZsYWdzLCBzdHJlYW1faWQsIG52YSwgbnZs ZW4sIE5VTEwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fdXNl cl9kYXRhKTsKLSB9Ci0gCi0gaW50IG5naHR0cDJfc3VibWl0X3BpbmcobmdodHRwMl9zZXNzaW9u ICpzZXNzaW9uLCB1aW50OF90IGZsYWdzLAotQEAgLTIyMCw1MSArMTY5LDEwIEBAIGludCBuZ2h0 dHAyX3N1Ym1pdF9waW5nKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwgdWludDhfdCBmbGFncywK LSBpbnQgbmdodHRwMl9zdWJtaXRfcHJpb3JpdHkobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLCB1 aW50OF90IGZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHN0cmVh bV9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmdodHRwMl9wcmlvcml0 eV9zcGVjICpwcmlfc3BlYykgewotLSAgaW50IHJ2OwotLSAgbmdodHRwMl9vdXRib3VuZF9pdGVt ICppdGVtOwotLSAgbmdodHRwMl9mcmFtZSAqZnJhbWU7Ci0tICBuZ2h0dHAyX3ByaW9yaXR5X3Nw ZWMgY29weV9wcmlfc3BlYzsKLS0gIG5naHR0cDJfbWVtICptZW07Ci0rICAodm9pZClzZXNzaW9u OwotICAgKHZvaWQpZmxhZ3M7Ci0tCi0tICBtZW0gPSAmc2Vzc2lvbi0+bWVtOwotLQotLSAgaWYg KHNlc3Npb24tPnJlbW90ZV9zZXR0aW5ncy5ub19yZmM3NTQwX3ByaW9yaXRpZXMgPT0gMSkgewot LSAgICByZXR1cm4gMDsKLS0gIH0KLS0KLS0gIGlmIChzdHJlYW1faWQgPT0gMCB8fCBwcmlfc3Bl YyA9PSBOVUxMKSB7Ci0tICAgIHJldHVybiBOR0hUVFAyX0VSUl9JTlZBTElEX0FSR1VNRU5UOwot LSAgfQotLQotLSAgaWYgKHN0cmVhbV9pZCA9PSBwcmlfc3BlYy0+c3RyZWFtX2lkKSB7Ci0tICAg IHJldHVybiBOR0hUVFAyX0VSUl9JTlZBTElEX0FSR1VNRU5UOwotLSAgfQotLQotLSAgY29weV9w cmlfc3BlYyA9ICpwcmlfc3BlYzsKLS0KLS0gIG5naHR0cDJfcHJpb3JpdHlfc3BlY19ub3JtYWxp emVfd2VpZ2h0KCZjb3B5X3ByaV9zcGVjKTsKLS0KLS0gIGl0ZW0gPSBuZ2h0dHAyX21lbV9tYWxs b2MobWVtLCBzaXplb2YobmdodHRwMl9vdXRib3VuZF9pdGVtKSk7Ci0tCi0tICBpZiAoaXRlbSA9 PSBOVUxMKSB7Ci0tICAgIHJldHVybiBOR0hUVFAyX0VSUl9OT01FTTsKLS0gIH0KLS0KLS0gIG5n aHR0cDJfb3V0Ym91bmRfaXRlbV9pbml0KGl0ZW0pOwotLQotLSAgZnJhbWUgPSAmaXRlbS0+ZnJh bWU7Ci0tCi0tICBuZ2h0dHAyX2ZyYW1lX3ByaW9yaXR5X2luaXQoJmZyYW1lLT5wcmlvcml0eSwg c3RyZWFtX2lkLCAmY29weV9wcmlfc3BlYyk7Ci0tCi0tICBydiA9IG5naHR0cDJfc2Vzc2lvbl9h ZGRfaXRlbShzZXNzaW9uLCBpdGVtKTsKLS0KLS0gIGlmIChydiAhPSAwKSB7Ci0tICAgIG5naHR0 cDJfZnJhbWVfcHJpb3JpdHlfZnJlZSgmZnJhbWUtPnByaW9yaXR5KTsKLS0gICAgbmdodHRwMl9t ZW1fZnJlZShtZW0sIGl0ZW0pOwotLQotLSAgICByZXR1cm4gcnY7Ci0tICB9Ci0rICAodm9pZClz dHJlYW1faWQ7Ci0rICAodm9pZClwcmlfc3BlYzsKLSAKLSAgIHJldHVybiAwOwotIH0KLUBAIC0y NzcsNyArMTg1LDggQEAgaW50IG5naHR0cDJfc3VibWl0X3JzdF9zdHJlYW0obmdodHRwMl9zZXNz aW9uICpzZXNzaW9uLCB1aW50OF90IGZsYWdzLAotICAgICByZXR1cm4gTkdIVFRQMl9FUlJfSU5W QUxJRF9BUkdVTUVOVDsKLSAgIH0KLSAKLS0gIHJldHVybiBuZ2h0dHAyX3Nlc3Npb25fYWRkX3Jz dF9zdHJlYW0oc2Vzc2lvbiwgc3RyZWFtX2lkLCBlcnJvcl9jb2RlKTsKLSsgIHJldHVybiBuZ2h0 dHAyX3Nlc3Npb25fYWRkX3JzdF9zdHJlYW1fY29udGludWUoCi0rICAgIHNlc3Npb24sIHN0cmVh bV9pZCwgZXJyb3JfY29kZSwgLyogY29udGludWVfd2l0aG91dF9zdHJlYW0gPSAqLyAwKTsKLSB9 Ci0gCi0gaW50IG5naHR0cDJfc3VibWl0X2dvYXdheShuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24s IHVpbnQ4X3QgZmxhZ3MsCi1AQCAtNTc4LDcgKzQ4Nyw3IEBAIGludCBuZ2h0dHAyX3N1Ym1pdF9h bHRzdmMobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLCB1aW50OF90IGZsYWdzLAotICAgcmV0dXJu IDA7Ci0gCi0gZmFpbF9pdGVtX21hbGxvYzoKLS0gIGZyZWUoYnVmKTsKLSsgIG5naHR0cDJfbWVt X2ZyZWUobWVtLCBidWYpOwotIAotICAgcmV0dXJuIHJ2OwotIH0KLUBAIC02NjEsNyArNTcwLDcg QEAgaW50IG5naHR0cDJfc3VibWl0X29yaWdpbihuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sIHVp bnQ4X3QgZmxhZ3MsCi0gICByZXR1cm4gMDsKLSAKLSBmYWlsX2l0ZW1fbWFsbG9jOgotLSAgZnJl ZShvdl9jb3B5KTsKLSsgIG5naHR0cDJfbWVtX2ZyZWUobWVtLCBvdl9jb3B5KTsKLSAKLSAgIHJl dHVybiBydjsKLSB9Ci1AQCAtNzMzLDUxICs2NDIsMzQgQEAgaW50IG5naHR0cDJfc3VibWl0X3By aW9yaXR5X3VwZGF0ZShuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sIHVpbnQ4X3QgZmxhZ3MsCi0g ICByZXR1cm4gMDsKLSAKLSBmYWlsX2l0ZW1fbWFsbG9jOgotLSAgZnJlZShidWYpOwotKyAgbmdo dHRwMl9tZW1fZnJlZShtZW0sIGJ1Zik7Ci0gCi0gICByZXR1cm4gcnY7Ci0gfQotIAotLXN0YXRp YyB1aW50OF90IHNldF9yZXF1ZXN0X2ZsYWdzKGNvbnN0IG5naHR0cDJfcHJpb3JpdHlfc3BlYyAq cHJpX3NwZWMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmdodHRw Ml9kYXRhX3Byb3ZpZGVyX3dyYXAgKmRwdykgewotK3N0YXRpYyB1aW50OF90IHNldF9yZXF1ZXN0 X2ZsYWdzKGNvbnN0IG5naHR0cDJfZGF0YV9wcm92aWRlcl93cmFwICpkcHcpIHsKLSAgIHVpbnQ4 X3QgZmxhZ3MgPSBOR0hUVFAyX0ZMQUdfTk9ORTsKLSAgIGlmIChkcHcgPT0gTlVMTCB8fCBkcHct PmRhdGFfcHJkLnJlYWRfY2FsbGJhY2sgPT0gTlVMTCkgewotICAgICBmbGFncyB8PSBOR0hUVFAy X0ZMQUdfRU5EX1NUUkVBTTsKLSAgIH0KLSAKLS0gIGlmIChwcmlfc3BlYykgewotLSAgICBmbGFn cyB8PSBOR0hUVFAyX0ZMQUdfUFJJT1JJVFk7Ci0tICB9Ci0tCi0gICByZXR1cm4gZmxhZ3M7Ci0g fQotIAotIHN0YXRpYyBpbnQzMl90IHN1Ym1pdF9yZXF1ZXN0X3NoYXJlZChuZ2h0dHAyX3Nlc3Np b24gKnNlc3Npb24sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IG5naHR0cDJfcHJpb3JpdHlfc3BlYyAqcHJpX3NwZWMsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IG5naHR0cDJfbnYgKm52YSwgc2l6ZV90IG52bGVuLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZ2h0dHAyX2RhdGFfcHJv dmlkZXJfd3JhcCAqZHB3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2 b2lkICpzdHJlYW1fdXNlcl9kYXRhKSB7Ci0gICB1aW50OF90IGZsYWdzOwotLSAgaW50IHJ2Owot IAotICAgaWYgKHNlc3Npb24tPnNlcnZlcikgewotICAgICByZXR1cm4gTkdIVFRQMl9FUlJfUFJP VE87Ci0gICB9Ci0gCi0tICBpZiAocHJpX3NwZWMgJiYgIW5naHR0cDJfcHJpb3JpdHlfc3BlY19j aGVja19kZWZhdWx0KHByaV9zcGVjKSAmJgotLSAgICAgIHNlc3Npb24tPnJlbW90ZV9zZXR0aW5n cy5ub19yZmM3NTQwX3ByaW9yaXRpZXMgIT0gMSkgewotLSAgICBydiA9IGRldGVjdF9zZWxmX2Rl cGVuZGVuY3koc2Vzc2lvbiwgLTEsIHByaV9zcGVjKTsKLS0gICAgaWYgKHJ2ICE9IDApIHsKLS0g ICAgICByZXR1cm4gcnY7Ci0tICAgIH0KLS0gIH0gZWxzZSB7Ci0tICAgIHByaV9zcGVjID0gTlVM TDsKLS0gIH0KLS0KLS0gIGZsYWdzID0gc2V0X3JlcXVlc3RfZmxhZ3MocHJpX3NwZWMsIGRwdyk7 Ci0rICBmbGFncyA9IHNldF9yZXF1ZXN0X2ZsYWdzKGRwdyk7Ci0gCi0tICByZXR1cm4gc3VibWl0 X2hlYWRlcnNfc2hhcmVkX252YShzZXNzaW9uLCBmbGFncywgLTEsIHByaV9zcGVjLCBudmEsIG52 bGVuLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHB3LCBzdHJlYW1fdXNl cl9kYXRhKTsKLSsgIHJldHVybiBzdWJtaXRfaGVhZGVyc19zaGFyZWRfbnZhKHNlc3Npb24sIGZs YWdzLCAtMSwgbnZhLCBudmxlbiwgZHB3LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RyZWFtX3VzZXJfZGF0YSk7Ci0gfQotIAotIGludDMyX3QgbmdodHRwMl9zdWJtaXRf cmVxdWVzdChuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi1AQCAtNzg2LDggKzY3OCw5IEBAIGlu dDMyX3QgbmdodHRwMl9zdWJtaXRfcmVxdWVzdChuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5naHR0cDJfZGF0YV9wcm92aWRl ciAqZGF0YV9wcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnN0cmVh bV91c2VyX2RhdGEpIHsKLSAgIG5naHR0cDJfZGF0YV9wcm92aWRlcl93cmFwIGRwdzsKLSsgICh2 b2lkKXByaV9zcGVjOwotIAotLSAgcmV0dXJuIHN1Ym1pdF9yZXF1ZXN0X3NoYXJlZChzZXNzaW9u LCBwcmlfc3BlYywgbnZhLCBudmxlbiwKLSsgIHJldHVybiBzdWJtaXRfcmVxdWVzdF9zaGFyZWQo c2Vzc2lvbiwgbnZhLCBudmxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdo dHRwMl9kYXRhX3Byb3ZpZGVyX3dyYXBfdjEoJmRwdywgZGF0YV9wcmQpLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJlYW1fdXNlcl9kYXRhKTsKLSB9Ci1AQCAtNzk4LDggKzY5 MSw5IEBAIGludDMyX3QgbmdodHRwMl9zdWJtaXRfcmVxdWVzdDIobmdodHRwMl9zZXNzaW9uICpz ZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmdodHRwMl9k YXRhX3Byb3ZpZGVyMiAqZGF0YV9wcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB2b2lkICpzdHJlYW1fdXNlcl9kYXRhKSB7Ci0gICBuZ2h0dHAyX2RhdGFfcHJvdmlkZXJfd3Jh cCBkcHc7Ci0rICAodm9pZClwcmlfc3BlYzsKLSAKLS0gIHJldHVybiBzdWJtaXRfcmVxdWVzdF9z aGFyZWQoc2Vzc2lvbiwgcHJpX3NwZWMsIG52YSwgbnZsZW4sCi0rICByZXR1cm4gc3VibWl0X3Jl cXVlc3Rfc2hhcmVkKHNlc3Npb24sIG52YSwgbnZsZW4sCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG5naHR0cDJfZGF0YV9wcm92aWRlcl93cmFwX3YyKCZkcHcsIGRhdGFfcHJkKSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX3VzZXJfZGF0YSk7Ci0gfQot QEAgLTgyNiw4ICs3MjAsOCBAQCBzdGF0aWMgaW50IHN1Ym1pdF9yZXNwb25zZV9zaGFyZWQobmdo dHRwMl9zZXNzaW9uICpzZXNzaW9uLCBpbnQzMl90IHN0cmVhbV9pZCwKLSAgIH0KLSAKLSAgIGZs YWdzID0gc2V0X3Jlc3BvbnNlX2ZsYWdzKGRwdyk7Ci0tICByZXR1cm4gc3VibWl0X2hlYWRlcnNf c2hhcmVkX252YShzZXNzaW9uLCBmbGFncywgc3RyZWFtX2lkLCBOVUxMLCBudmEsIG52bGVuLAot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHB3LCBOVUxMKTsKLSsgIHJldHVy biBzdWJtaXRfaGVhZGVyc19zaGFyZWRfbnZhKHNlc3Npb24sIGZsYWdzLCBzdHJlYW1faWQsIG52 YSwgbnZsZW4sIGRwdywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwp OwotIH0KLSAKLSBpbnQgbmdodHRwMl9zdWJtaXRfcmVzcG9uc2UobmdodHRwMl9zZXNzaW9uICpz ZXNzaW9uLCBpbnQzMl90IHN0cmVhbV9pZCwKLWRpZmYgLS1naXQgYS9kZXBzL25naHR0cDIvbGli L25naHR0cDJfc3VibWl0LmggYi9kZXBzL25naHR0cDIvbGliL25naHR0cDJfc3VibWl0LmgKLWlu ZGV4IDM1MGVlMDIyLi5kZWNmODAzZCAxMDA2NDQKLS0tLSBhL2RlcHMvbmdodHRwMi9saWIvbmdo dHRwMl9zdWJtaXQuaAotKysrIGIvZGVwcy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX3N1Ym1pdC5oCi1A QCAtMjcsNyArMjcsNyBAQAotIAotICNpZmRlZiBIQVZFX0NPTkZJR19ICi0gIyAgaW5jbHVkZSA8 Y29uZmlnLmg+Ci0tI2VuZGlmIC8qIEhBVkVfQ09ORklHX0ggKi8KLSsjZW5kaWYgLyogZGVmaW5l ZChIQVZFX0NPTkZJR19IKSAqLwotIAotICNpbmNsdWRlIDxuZ2h0dHAyL25naHR0cDIuaD4KLSAK LUBAIC0zNyw0ICszNyw0IEBAIGludCBuZ2h0dHAyX3N1Ym1pdF9kYXRhX3NoYXJlZChuZ2h0dHAy X3Nlc3Npb24gKnNlc3Npb24sIHVpbnQ4X3QgZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludDMyX3Qgc3RyZWFtX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBuZ2h0dHAyX2RhdGFfcHJvdmlkZXJfd3JhcCAqZHB3KTsKLSAKLS0jZW5kaWYg LyogTkdIVFRQMl9TVUJNSVRfSCAqLwotKyNlbmRpZiAvKiAhZGVmaW5lZChOR0hUVFAyX1NVQk1J VF9IKSAqLwotZGlmZiAtLWdpdCBhL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl90aW1lLmMgYi9k ZXBzL25naHR0cDIvbGliL25naHR0cDJfdGltZS5jCi1pbmRleCAxNDhjY2ZkYy4uMThmZDdiY2Eg MTAwNjQ0Ci0tLS0gYS9kZXBzL25naHR0cDIvbGliL25naHR0cDJfdGltZS5jCi0rKysgYi9kZXBz L25naHR0cDIvbGliL25naHR0cDJfdGltZS5jCi1AQCAtMjYsNyArMjYsNyBAQAotIAotICNpZmRl ZiBIQVZFX1dJTkRPV1NfSAotICMgIGluY2x1ZGUgPHdpbmRvd3MuaD4KLS0jZW5kaWYgLyogSEFW RV9XSU5ET1dTX0ggKi8KLSsjZW5kaWYgLyogZGVmaW5lZChIQVZFX1dJTkRPV1NfSCkgKi8KLSAK LSAjaW5jbHVkZSA8dGltZS5oPgotIAotQEAgLTQwLDEyICs0MCwxMSBAQCBzdGF0aWMgdWludDY0 X3QgdGltZV9ub3dfc2VjKHZvaWQpIHsKLSAKLSAgIHJldHVybiAodWludDY0X3QpdDsKLSB9Ci0t I2VuZGlmIC8qICFIQVZFX0dFVFRJQ0tDT1VOVDY0IHx8IF9fQ1lHV0lOX18gKi8KLSsjZW5kaWYg LyogIWRlZmluZWQoSEFWRV9HRVRUSUNLQ09VTlQ2NCkgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSAq LwotIAotICNpZiBkZWZpbmVkKEhBVkVfR0VUVElDS0NPVU5UNjQpICYmICFkZWZpbmVkKF9fQ1lH V0lOX18pCi0gdWludDY0X3QgbmdodHRwMl90aW1lX25vd19zZWModm9pZCkgeyByZXR1cm4gR2V0 VGlja0NvdW50NjQoKSAvIDEwMDA7IH0KLS0jZWxpZiBkZWZpbmVkKEhBVkVfQ0xPQ0tfR0VUVElN RSkgJiYgZGVmaW5lZChIQVZFX0RFQ0xfQ0xPQ0tfTU9OT1RPTklDKSAmJiAgICAgXAotLSAgSEFW RV9ERUNMX0NMT0NLX01PTk9UT05JQwotKyNlbGlmIGRlZmluZWQoSEFWRV9DTE9DS19HRVRUSU1F KSAmJiBIQVZFX0RFQ0xfQ0xPQ0tfTU9OT1RPTklDCi0gdWludDY0X3QgbmdodHRwMl90aW1lX25v d19zZWModm9pZCkgewotICAgc3RydWN0IHRpbWVzcGVjIHRwOwotICAgaW50IHJ2ID0gY2xvY2tf Z2V0dGltZShDTE9DS19NT05PVE9OSUMsICZ0cCk7Ci1AQCAtNTYsOCArNTUsOCBAQCB1aW50NjRf dCBuZ2h0dHAyX3RpbWVfbm93X3NlYyh2b2lkKSB7Ci0gCi0gICByZXR1cm4gKHVpbnQ2NF90KXRw LnR2X3NlYzsKLSB9Ci0tI2Vsc2UgIC8qICghSEFWRV9DTE9DS19HRVRUSU1FIHx8ICFIQVZFX0RF Q0xfQ0xPQ0tfTU9OT1RPTklDKSAmJiAgICAgICAgICAgICAgIFwKLS0gICAgICAgICAgKCFIQVZF X0dFVFRJQ0tDT1VOVDY0IHx8IF9fQ1lHV0lOX18pKSAqLwotKyNlbHNlICAvKiAoIWRlZmluZWQo SEFWRV9HRVRUSUNLQ09VTlQ2NCkgfHwgIWRlZmluZWQoX19DWUdXSU5fXykpICYmICAgICAgICAg ICBcCi0rICAgICAgICAgICghZGVmaW5lZChIQVZFX0NMT0NLX0dFVFRJTUUpIHx8ICFIQVZFX0RF Q0xfQ0xPQ0tfTU9OT1RPTklDKSAqLwotIHVpbnQ2NF90IG5naHR0cDJfdGltZV9ub3dfc2VjKHZv aWQpIHsgcmV0dXJuIHRpbWVfbm93X3NlYygpOyB9Ci0tI2VuZGlmIC8qICghSEFWRV9DTE9DS19H RVRUSU1FIHx8ICFIQVZFX0RFQ0xfQ0xPQ0tfTU9OT1RPTklDKSAmJiAgICAgICAgICAgICAgIFwK LS0gICAgICAgICAoIUhBVkVfR0VUVElDS0NPVU5UNjQgfHwgX19DWUdXSU5fXykpICovCi0rI2Vu ZGlmIC8qICghZGVmaW5lZChIQVZFX0dFVFRJQ0tDT1VOVDY0KSB8fCAhZGVmaW5lZChfX0NZR1dJ Tl9fKSkgJiYgICAgICAgICAgIFwKLSsgICAgICAgICAgKCFkZWZpbmVkKEhBVkVfQ0xPQ0tfR0VU VElNRSkgfHwgIUhBVkVfREVDTF9DTE9DS19NT05PVE9OSUMpICovCi1kaWZmIC0tZ2l0IGEvZGVw cy9uZ2h0dHAyL2xpYi9uZ2h0dHAyX3RpbWUuaCBiL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl90 aW1lLmgKLWluZGV4IDAzYzBiYmU5Li5hOTFlNjJhZCAxMDA2NDQKLS0tLSBhL2RlcHMvbmdodHRw Mi9saWIvbmdodHRwMl90aW1lLmgKLSsrKyBiL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl90aW1l LmgKLUBAIC0yNyw3ICsyNyw3IEBACi0gCi0gI2lmZGVmIEhBVkVfQ09ORklHX0gKLSAjICBpbmNs dWRlIDxjb25maWcuaD4KLS0jZW5kaWYgLyogSEFWRV9DT05GSUdfSCAqLwotKyNlbmRpZiAvKiBk ZWZpbmVkKEhBVkVfQ09ORklHX0gpICovCi0gCi0gI2luY2x1ZGUgPG5naHR0cDIvbmdodHRwMi5o PgotIAotQEAgLTM1LDQgKzM1LDQgQEAKLSAgICB0aW1lcG9pbnQuICBJZiBpdCBpcyB1bmFibGUg dG8gZ2V0IHNlY29uZHMsIGl0IHJldHVybnMgMC4gKi8KLSB1aW50NjRfdCBuZ2h0dHAyX3RpbWVf bm93X3NlYyh2b2lkKTsKLSAKLS0jZW5kaWYgLyogTkdIVFRQMl9USU1FX0ggKi8KLSsjZW5kaWYg LyogIWRlZmluZWQoTkdIVFRQMl9USU1FX0gpICovCi1kaWZmIC0tZ2l0IGEvZGVwcy9uZ2h0dHAy L2xpYi9uZ2h0dHAyX3ZlcnNpb24uYyBiL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl92ZXJzaW9u LmMKLWluZGV4IDQyMTFmMmNmLi4zOWE0OWZmMyAxMDA2NDQKLS0tLSBhL2RlcHMvbmdodHRwMi9s aWIvbmdodHRwMl92ZXJzaW9uLmMKLSsrKyBiL2RlcHMvbmdodHRwMi9saWIvbmdodHRwMl92ZXJz aW9uLmMKLUBAIC0yNCw3ICsyNCw3IEBACi0gICovCi0gI2lmZGVmIEhBVkVfQ09ORklHX0gKLSAj ICBpbmNsdWRlIDxjb25maWcuaD4KLS0jZW5kaWYgLyogSEFWRV9DT05GSUdfSCAqLwotKyNlbmRp ZiAvKiBkZWZpbmVkKEhBVkVfQ09ORklHX0gpICovCi0gCi0gI2luY2x1ZGUgPG5naHR0cDIvbmdo dHRwMi5oPgotIAotZGlmZiAtLWdpdCBhL2RlcHMvbmdodHRwMi9saWIvc2ZwYXJzZS5jIGIvZGVw cy9uZ2h0dHAyL2xpYi9zZnBhcnNlLmMKLWluZGV4IGI1ZTk0Y2MyLi5jZWUwODlkMyAxMDA2NDQK LS0tLSBhL2RlcHMvbmdodHRwMi9saWIvc2ZwYXJzZS5jCi0rKysgYi9kZXBzL25naHR0cDIvbGli L3NmcGFyc2UuYwotQEAgLTMwLDM4ICszMCw0NiBAQAotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAj aW5jbHVkZSA8c3RkbGliLmg+Ci0gCi0tI2RlZmluZSBTRl9TVEFURV9ESUNUIDB4MDh1Ci0tI2Rl ZmluZSBTRl9TVEFURV9MSVNUIDB4MTB1Ci0tI2RlZmluZSBTRl9TVEFURV9JVEVNIDB4MTh1Ci0r I2lmZGVmIF9fQVZYMl9fCi0rIyAgaW5jbHVkZSA8aW1taW50cmluLmg+Ci0rI2VuZGlmIC8qIF9f QVZYMl9fICovCi0gCi0tI2RlZmluZSBTRl9TVEFURV9JTk5FUl9MSVNUIDB4MDR1Ci0rI2RlZmlu ZSBTRlBBUlNFX1NUQVRFX0RJQ1QgMHgwOHUKLSsjZGVmaW5lIFNGUEFSU0VfU1RBVEVfTElTVCAw eDEwdQotKyNkZWZpbmUgU0ZQQVJTRV9TVEFURV9JVEVNIDB4MTh1Ci0gCi0tI2RlZmluZSBTRl9T VEFURV9CRUZPUkUgMHgwMHUKLS0jZGVmaW5lIFNGX1NUQVRFX0JFRk9SRV9QQVJBTVMgMHgwMXUK LS0jZGVmaW5lIFNGX1NUQVRFX1BBUkFNUyAweDAydQotLSNkZWZpbmUgU0ZfU1RBVEVfQUZURVIg MHgwM3UKLSsjZGVmaW5lIFNGUEFSU0VfU1RBVEVfSU5ORVJfTElTVCAweDA0dQotIAotLSNkZWZp bmUgU0ZfU1RBVEVfT1BfTUFTSyAweDAzdQotKyNkZWZpbmUgU0ZQQVJTRV9TVEFURV9CRUZPUkUg MHgwMHUKLSsjZGVmaW5lIFNGUEFSU0VfU1RBVEVfQkVGT1JFX1BBUkFNUyAweDAxdQotKyNkZWZp bmUgU0ZQQVJTRV9TVEFURV9QQVJBTVMgMHgwMnUKLSsjZGVmaW5lIFNGUEFSU0VfU1RBVEVfQUZU RVIgMHgwM3UKLSAKLS0jZGVmaW5lIFNGX1NFVF9TVEFURV9BRlRFUihOQU1FKSAoU0ZfU1RBVEVf IyNOQU1FIHwgU0ZfU1RBVEVfQUZURVIpCi0tI2RlZmluZSBTRl9TRVRfU1RBVEVfQkVGT1JFX1BB UkFNUyhOQU1FKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gIChT Rl9TVEFURV8jI05BTUUgfCBTRl9TVEFURV9CRUZPUkVfUEFSQU1TKQotLSNkZWZpbmUgU0ZfU0VU X1NUQVRFX0lOTkVSX0xJU1RfQkVGT1JFKE5BTUUpICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCi0tICAoU0ZfU1RBVEVfIyNOQU1FIHwgU0ZfU1RBVEVfSU5ORVJfTElTVCB8IFNG X1NUQVRFX0JFRk9SRSkKLSsjZGVmaW5lIFNGUEFSU0VfU1RBVEVfT1BfTUFTSyAweDAzdQotIAot LSNkZWZpbmUgU0ZfU1RBVEVfRElDVF9BRlRFUiBTRl9TRVRfU1RBVEVfQUZURVIoRElDVCkKLS0j ZGVmaW5lIFNGX1NUQVRFX0RJQ1RfQkVGT1JFX1BBUkFNUyBTRl9TRVRfU1RBVEVfQkVGT1JFX1BB UkFNUyhESUNUKQotLSNkZWZpbmUgU0ZfU1RBVEVfRElDVF9JTk5FUl9MSVNUX0JFRk9SRSBTRl9T RVRfU1RBVEVfSU5ORVJfTElTVF9CRUZPUkUoRElDVCkKLSsjZGVmaW5lIFNGUEFSU0VfU0VUX1NU QVRFX0FGVEVSKE5BTUUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotKyAgKFNGUEFSU0VfU1RBVEVfIyNOQU1FIHwgU0ZQQVJTRV9TVEFURV9BRlRFUikKLSsjZGVm aW5lIFNGUEFSU0VfU0VUX1NUQVRFX0JFRk9SRV9QQVJBTVMoTkFNRSkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAotKyAgKFNGUEFSU0VfU1RBVEVfIyNOQU1FIHwgU0ZQQVJTRV9T VEFURV9CRUZPUkVfUEFSQU1TKQotKyNkZWZpbmUgU0ZQQVJTRV9TRVRfU1RBVEVfSU5ORVJfTElT VF9CRUZPUkUoTkFNRSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAoU0ZQQVJT RV9TVEFURV8jI05BTUUgfCBTRlBBUlNFX1NUQVRFX0lOTkVSX0xJU1QgfCBTRlBBUlNFX1NUQVRF X0JFRk9SRSkKLSAKLS0jZGVmaW5lIFNGX1NUQVRFX0xJU1RfQUZURVIgU0ZfU0VUX1NUQVRFX0FG VEVSKExJU1QpCi0tI2RlZmluZSBTRl9TVEFURV9MSVNUX0JFRk9SRV9QQVJBTVMgU0ZfU0VUX1NU QVRFX0JFRk9SRV9QQVJBTVMoTElTVCkKLS0jZGVmaW5lIFNGX1NUQVRFX0xJU1RfSU5ORVJfTElT VF9CRUZPUkUgU0ZfU0VUX1NUQVRFX0lOTkVSX0xJU1RfQkVGT1JFKExJU1QpCi0rI2RlZmluZSBT RlBBUlNFX1NUQVRFX0RJQ1RfQUZURVIgU0ZQQVJTRV9TRVRfU1RBVEVfQUZURVIoRElDVCkKLSsj ZGVmaW5lIFNGUEFSU0VfU1RBVEVfRElDVF9CRUZPUkVfUEFSQU1TIFNGUEFSU0VfU0VUX1NUQVRF X0JFRk9SRV9QQVJBTVMoRElDVCkKLSsjZGVmaW5lIFNGUEFSU0VfU1RBVEVfRElDVF9JTk5FUl9M SVNUX0JFRk9SRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgU0ZQQVJT RV9TRVRfU1RBVEVfSU5ORVJfTElTVF9CRUZPUkUoRElDVCkKLSAKLS0jZGVmaW5lIFNGX1NUQVRF X0lURU1fQUZURVIgU0ZfU0VUX1NUQVRFX0FGVEVSKElURU0pCi0tI2RlZmluZSBTRl9TVEFURV9J VEVNX0JFRk9SRV9QQVJBTVMgU0ZfU0VUX1NUQVRFX0JFRk9SRV9QQVJBTVMoSVRFTSkKLS0jZGVm aW5lIFNGX1NUQVRFX0lURU1fSU5ORVJfTElTVF9CRUZPUkUgU0ZfU0VUX1NUQVRFX0lOTkVSX0xJ U1RfQkVGT1JFKElURU0pCi0rI2RlZmluZSBTRlBBUlNFX1NUQVRFX0xJU1RfQUZURVIgU0ZQQVJT RV9TRVRfU1RBVEVfQUZURVIoTElTVCkKLSsjZGVmaW5lIFNGUEFSU0VfU1RBVEVfTElTVF9CRUZP UkVfUEFSQU1TIFNGUEFSU0VfU0VUX1NUQVRFX0JFRk9SRV9QQVJBTVMoTElTVCkKLSsjZGVmaW5l IFNGUEFSU0VfU1RBVEVfTElTVF9JTk5FUl9MSVNUX0JFRk9SRSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotKyAgU0ZQQVJTRV9TRVRfU1RBVEVfSU5ORVJfTElTVF9CRUZPUkUo TElTVCkKLSAKLS0jZGVmaW5lIFNGX1NUQVRFX0lOSVRJQUwgMHgwMHUKLSsjZGVmaW5lIFNGUEFS U0VfU1RBVEVfSVRFTV9BRlRFUiBTRlBBUlNFX1NFVF9TVEFURV9BRlRFUihJVEVNKQotKyNkZWZp bmUgU0ZQQVJTRV9TVEFURV9JVEVNX0JFRk9SRV9QQVJBTVMgU0ZQQVJTRV9TRVRfU1RBVEVfQkVG T1JFX1BBUkFNUyhJVEVNKQotKyNkZWZpbmUgU0ZQQVJTRV9TVEFURV9JVEVNX0lOTkVSX0xJU1Rf QkVGT1JFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBTRlBBUlNFX1NF VF9TVEFURV9JTk5FUl9MSVNUX0JFRk9SRShJVEVNKQotKwotKyNkZWZpbmUgU0ZQQVJTRV9TVEFU RV9JTklUSUFMIDB4MDB1Ci0gCi0gI2RlZmluZSBESUdJVF9DQVNFUyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIGNhc2UgJzAn OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotQEAgLTEzNSw2ICsxNDMsNzAgQEAKLSAgIFVDQUxQSEFfQ0FTRVM6ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAotICAgTENBTFBIQV9DQVNFUwotIAotKyNkZWZpbmUgVE9LRU5fQ0FTRVMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBj YXNlICchJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgJyMnOiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAn JCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0rICBjYXNlICclJzogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgJyYnOiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotKyAgY2FzZSAnXCcnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlICcqJzogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSsgIGNhc2UgJysnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAnLSc6ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0rICBjYXNlICcuJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgJy8nOiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAg RElHSVRfQ0FTRVM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlICc6JzogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIFVDQUxQ SEFfQ0FTRVM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotKyAgY2FzZSAnXic6ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlICdfJzog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSsgIGNhc2UgJ2AnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgTENBTFBIQV9DQVNFUzog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0rICBjYXNlICd8JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgJ34nCi0rCi0rI2RlZmlu ZSBMQ0hFWEFMUEhBX0NBU0VTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgJ2EnOiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAnYic6 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCi0rICBjYXNlICdjJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgJ2QnOiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAotKyAgY2FzZSAnZSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlICdmJwotKwotKyNkZWZp bmUgWDAwXzFGX0NBU0VTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4MDA6ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHgw MTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotKyAgY2FzZSAweDAyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4MDM6ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSsgIGNhc2UgMHgwNDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweDA1OiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi0rICBjYXNlIDB4MDY6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHgwNzogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot KyAgY2FzZSAweDA4OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4MDk6ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNh c2UgMHgwYTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweDBiOiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4 MGM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHgwZDogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweDBlOiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCi0rICBjYXNlIDB4MGY6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHgxMDogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAotKyAgY2FzZSAweDExOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4MTI6ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LSsgIGNhc2UgMHgxMzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweDE0OiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBj YXNlIDB4MTU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHgxNjogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAw eDE3OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4MTg6ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHgxOTog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotKyAgY2FzZSAweDFhOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4MWI6ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSsgIGNhc2UgMHgxYzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweDFkOiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0rICBjYXNlIDB4MWU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHgxZgotKwotICNkZWZpbmUgWDIw XzIxX0NBU0VTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCi0gICBjYXNlICcgJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIGNhc2UgJyEnCi1AQCAt MTc1LDYgKzI0NywxMzcgQEAKLSAgIGNhc2UgJ30nOiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgY2FzZSAnficK LSAKLSsjZGVmaW5lIFg3Rl9GRl9DQVNFUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweDdmOiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0r ICBjYXNlIDB4ODA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHg4MTogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2Fz ZSAweDgyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4ODM6ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHg4 NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotKyAgY2FzZSAweDg1OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4ODY6ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSsgIGNhc2UgMHg4NzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweDg4OiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi0rICBjYXNlIDB4ODk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHg4YTogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot KyAgY2FzZSAweDhiOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4OGM6ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNh c2UgMHg4ZDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweDhlOiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4 OGY6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHg5MDogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweDkxOiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCi0rICBjYXNlIDB4OTI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHg5MzogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAotKyAgY2FzZSAweDk0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4OTU6ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LSsgIGNhc2UgMHg5NjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweDk3OiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBj YXNlIDB4OTg6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHg5OTogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAw eDlhOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4OWI6ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHg5Yzog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotKyAgY2FzZSAweDlkOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4OWU6ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSsgIGNhc2UgMHg5ZjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweGEwOiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0rICBjYXNlIDB4YTE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhhMjogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAg Y2FzZSAweGEzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4YTQ6ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2Ug MHhhNTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweGE2OiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4YTc6 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSsgIGNhc2UgMHhhODogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweGE5OiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0rICBjYXNlIDB4YWE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhhYjogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotKyAgY2FzZSAweGFjOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4YWQ6ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsg IGNhc2UgMHhhZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweGFmOiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNl IDB4YjA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhiMTogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweGIy OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCi0rICBjYXNlIDB4YjM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhiNDogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAotKyAgY2FzZSAweGI1OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4YjY6ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLSsgIGNhc2UgMHhiNzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweGI4OiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0r ICBjYXNlIDB4Yjk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhiYTogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2Fz ZSAweGJiOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4YmM6ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhi ZDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotKyAgY2FzZSAweGJlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4YmY6ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSsgIGNhc2UgMHhjMDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweGMxOiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi0rICBjYXNlIDB4YzI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhjMzogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot KyAgY2FzZSAweGM0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4YzU6ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNh c2UgMHhjNjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweGM3OiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4 Yzg6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhjOTogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweGNhOiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCi0rICBjYXNlIDB4Y2I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhjYzogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAotKyAgY2FzZSAweGNkOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4Y2U6ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LSsgIGNhc2UgMHhjZjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweGQwOiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBj YXNlIDB4ZDE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhkMjogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAw eGQzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4ZDQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhkNTog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotKyAgY2FzZSAweGQ2OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4ZDc6ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSsgIGNhc2UgMHhkODogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweGQ5OiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0rICBjYXNlIDB4ZGE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhkYjogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAg Y2FzZSAweGRjOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4ZGQ6ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2Ug MHhkZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweGRmOiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4ZTA6 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSsgIGNhc2UgMHhlMTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweGUyOiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0rICBjYXNlIDB4ZTM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhlNDogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotKyAgY2FzZSAweGU1OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4ZTY6ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsg IGNhc2UgMHhlNzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweGU4OiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNl IDB4ZTk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhlYTogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweGVi OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCi0rICBjYXNlIDB4ZWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhlZDogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAotKyAgY2FzZSAweGVlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4ZWY6ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLSsgIGNhc2UgMHhmMDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweGYxOiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0r ICBjYXNlIDB4ZjI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhmMzogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2Fz ZSAweGY0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4ZjU6ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhm NjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotKyAgY2FzZSAweGY3OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4Zjg6ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSsgIGNhc2UgMHhmOTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgY2FzZSAweGZhOiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi0rICBjYXNlIDB4ZmI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNhc2UgMHhmYzogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot KyAgY2FzZSAweGZkOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBjYXNlIDB4ZmU6ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIGNh c2UgMHhmZgotKwotIHN0YXRpYyBpbnQgaXNfd3ModWludDhfdCBjKSB7Ci0gICBzd2l0Y2ggKGMp IHsKLSAgIGNhc2UgJyAnOgotQEAgLTE4NSw0MCArMzg4LDEwOCBAQCBzdGF0aWMgaW50IGlzX3dz KHVpbnQ4X3QgYykgewotICAgfQotIH0KLSAKLS1zdGF0aWMgaW50IHBhcnNlcl9lb2Yoc2ZfcGFy c2VyICpzZnApIHsgcmV0dXJuIHNmcC0+cG9zID09IHNmcC0+ZW5kOyB9Ci0rI2lmZGVmIF9fQVZY Ml9fCi0rIyAgaWZkZWYgX01TQ19WRVIKLSsjICAgIGluY2x1ZGUgPGludHJpbi5oPgotKwotK3N0 YXRpYyBpbnQgY3R6KHVuc2lnbmVkIGludCB2KSB7Ci0rICB1bnNpZ25lZCBsb25nIG47Ci0rCi0r ICAvKiBBc3N1bWUgdGhhdCB2IGlzIG5vdCAwLiAqLwotKyAgX0JpdFNjYW5Gb3J3YXJkKCZuLCB2 KTsKLSsKLSsgIHJldHVybiAoaW50KW47Ci0rfQotKyMgIGVsc2UgLyogIV9NU0NfVkVSICovCi0r IyAgICBkZWZpbmUgY3R6IF9fYnVpbHRpbl9jdHoKLSsjICBlbmRpZiAvKiAhX01TQ19WRVIgKi8K LSsjZW5kaWYgICAvKiBfX0FWWDJfXyAqLwotKwotK3N0YXRpYyBpbnQgcGFyc2VyX2VvZihzZnBh cnNlX3BhcnNlciAqc2ZwKSB7IHJldHVybiBzZnAtPnBvcyA9PSBzZnAtPmVuZDsgfQotIAotLXN0 YXRpYyB2b2lkIHBhcnNlcl9kaXNjYXJkX293cyhzZl9wYXJzZXIgKnNmcCkgewotK3N0YXRpYyB2 b2lkIHBhcnNlcl9kaXNjYXJkX293cyhzZnBhcnNlX3BhcnNlciAqc2ZwKSB7Ci0gICBmb3IgKDsg IXBhcnNlcl9lb2Yoc2ZwKSAmJiBpc193cygqc2ZwLT5wb3MpOyArK3NmcC0+cG9zKQotICAgICA7 Ci0gfQotIAotLXN0YXRpYyB2b2lkIHBhcnNlcl9kaXNjYXJkX3NwKHNmX3BhcnNlciAqc2ZwKSB7 Ci0rc3RhdGljIHZvaWQgcGFyc2VyX2Rpc2NhcmRfc3Aoc2ZwYXJzZV9wYXJzZXIgKnNmcCkgewot ICAgZm9yICg7ICFwYXJzZXJfZW9mKHNmcCkgJiYgKnNmcC0+cG9zID09ICcgJzsgKytzZnAtPnBv cykKLSAgICAgOwotIH0KLSAKLS1zdGF0aWMgdm9pZCBwYXJzZXJfc2V0X29wX3N0YXRlKHNmX3Bh cnNlciAqc2ZwLCB1aW50MzJfdCBvcCkgewotLSAgc2ZwLT5zdGF0ZSAmPSB+U0ZfU1RBVEVfT1Bf TUFTSzsKLStzdGF0aWMgdm9pZCBwYXJzZXJfc2V0X29wX3N0YXRlKHNmcGFyc2VfcGFyc2VyICpz ZnAsIHVpbnQzMl90IG9wKSB7Ci0rICBzZnAtPnN0YXRlICY9IH5TRlBBUlNFX1NUQVRFX09QX01B U0s7Ci0gICBzZnAtPnN0YXRlIHw9IG9wOwotIH0KLSAKLS1zdGF0aWMgdm9pZCBwYXJzZXJfdW5z ZXRfaW5uZXJfbGlzdF9zdGF0ZShzZl9wYXJzZXIgKnNmcCkgewotLSAgc2ZwLT5zdGF0ZSAmPSB+ U0ZfU1RBVEVfSU5ORVJfTElTVDsKLStzdGF0aWMgdm9pZCBwYXJzZXJfdW5zZXRfaW5uZXJfbGlz dF9zdGF0ZShzZnBhcnNlX3BhcnNlciAqc2ZwKSB7Ci0rICBzZnAtPnN0YXRlICY9IH5TRlBBUlNF X1NUQVRFX0lOTkVSX0xJU1Q7Ci0gfQotIAotLXN0YXRpYyBpbnQgcGFyc2VyX2tleShzZl9wYXJz ZXIgKnNmcCwgc2ZfdmVjICpkZXN0KSB7Ci0rI2lmZGVmIF9fQVZYMl9fCi0rc3RhdGljIGNvbnN0 IHVpbnQ4X3QgKmZpbmRfY2hhcl9rZXkoY29uc3QgdWludDhfdCAqZmlyc3QsIGNvbnN0IHVpbnQ4 X3QgKmxhc3QpIHsKLSsgIGNvbnN0IF9fbTI1NmkgdXMgPSBfbW0yNTZfc2V0MV9lcGk4KCdfJyk7 Ci0rICBjb25zdCBfX20yNTZpIGRzID0gX21tMjU2X3NldDFfZXBpOCgnLScpOwotKyAgY29uc3Qg X19tMjU2aSBkb3QgPSBfbW0yNTZfc2V0MV9lcGk4KCcuJyk7Ci0rICBjb25zdCBfX20yNTZpIGFz dCA9IF9tbTI1Nl9zZXQxX2VwaTgoJyonKTsKLSsgIGNvbnN0IF9fbTI1NmkgcjBsID0gX21tMjU2 X3NldDFfZXBpOCgnMCcgLSAxKTsKLSsgIGNvbnN0IF9fbTI1NmkgcjByID0gX21tMjU2X3NldDFf ZXBpOCgnOScgKyAxKTsKLSsgIGNvbnN0IF9fbTI1NmkgcjFsID0gX21tMjU2X3NldDFfZXBpOCgn YScgLSAxKTsKLSsgIGNvbnN0IF9fbTI1NmkgcjFyID0gX21tMjU2X3NldDFfZXBpOCgneicgKyAx KTsKLSsgIF9fbTI1NmkgcywgeDsKLSsgIHVpbnQzMl90IG07Ci0rCi0rICBmb3IgKDsgZmlyc3Qg IT0gbGFzdDsgZmlyc3QgKz0gMzIpIHsKLSsgICAgcyA9IF9tbTI1Nl9sb2FkdV9zaTI1Nigodm9p ZCAqKWZpcnN0KTsKLSsKLSsgICAgeCA9IF9tbTI1Nl9jbXBlcV9lcGk4KHMsIHVzKTsKLSsgICAg eCA9IF9tbTI1Nl9vcl9zaTI1NihfbW0yNTZfY21wZXFfZXBpOChzLCBkcyksIHgpOwotKyAgICB4 ID0gX21tMjU2X29yX3NpMjU2KF9tbTI1Nl9jbXBlcV9lcGk4KHMsIGRvdCksIHgpOwotKyAgICB4 ID0gX21tMjU2X29yX3NpMjU2KF9tbTI1Nl9jbXBlcV9lcGk4KHMsIGFzdCksIHgpOwotKyAgICB4 ID0gX21tMjU2X29yX3NpMjU2KAotKyAgICAgIF9tbTI1Nl9hbmRfc2kyNTYoX21tMjU2X2NtcGd0 X2VwaTgocywgcjBsKSwgX21tMjU2X2NtcGd0X2VwaTgocjByLCBzKSksCi0rICAgICAgeCk7Ci0r ICAgIHggPSBfbW0yNTZfb3Jfc2kyNTYoCi0rICAgICAgX21tMjU2X2FuZF9zaTI1NihfbW0yNTZf Y21wZ3RfZXBpOChzLCByMWwpLCBfbW0yNTZfY21wZ3RfZXBpOChyMXIsIHMpKSwKLSsgICAgICB4 KTsKLSsKLSsgICAgbSA9IH4odWludDMyX3QpX21tMjU2X21vdmVtYXNrX2VwaTgoeCk7Ci0rICAg IGlmIChtKSB7Ci0rICAgICAgcmV0dXJuIGZpcnN0ICsgY3R6KG0pOwotKyAgICB9Ci0rICB9Ci0r Ci0rICByZXR1cm4gbGFzdDsKLSt9Ci0rI2VuZGlmIC8qIF9fQVZYMl9fICovCi0rCi0rc3RhdGlj IGludCBwYXJzZXJfa2V5KHNmcGFyc2VfcGFyc2VyICpzZnAsIHNmcGFyc2VfdmVjICpkZXN0KSB7 Ci0gICBjb25zdCB1aW50OF90ICpiYXNlOwotKyNpZmRlZiBfX0FWWDJfXwotKyAgY29uc3QgdWlu dDhfdCAqbGFzdDsKLSsjZW5kaWYgLyogX19BVlgyX18gKi8KLSAKLSAgIHN3aXRjaCAoKnNmcC0+ cG9zKSB7Ci0gICBjYXNlICcqJzoKLSAgIExDQUxQSEFfQ0FTRVM6Ci0gICAgIGJyZWFrOwotICAg ZGVmYXVsdDoKLS0gICAgcmV0dXJuIFNGX0VSUl9QQVJTRV9FUlJPUjsKLSsgICAgcmV0dXJuIFNG UEFSU0VfRVJSX1BBUlNFOwotICAgfQotIAotICAgYmFzZSA9IHNmcC0+cG9zKys7Ci0gCi0rI2lm ZGVmIF9fQVZYMl9fCi0rICBpZiAoc2ZwLT5lbmQgLSBzZnAtPnBvcyA+PSAzMikgewotKyAgICBs YXN0ID0gc2ZwLT5wb3MgKyAoKHNmcC0+ZW5kIC0gc2ZwLT5wb3MpICYgfjB4MWZ1KTsKLSsKLSsg ICAgc2ZwLT5wb3MgPSBmaW5kX2NoYXJfa2V5KHNmcC0+cG9zLCBsYXN0KTsKLSsgICAgaWYgKHNm cC0+cG9zICE9IGxhc3QpIHsKLSsgICAgICBnb3RvIGZpbjsKLSsgICAgfQotKyAgfQotKyNlbmRp ZiAvKiBfX0FWWDJfXyAqLwotKwotICAgZm9yICg7ICFwYXJzZXJfZW9mKHNmcCk7ICsrc2ZwLT5w b3MpIHsKLSAgICAgc3dpdGNoICgqc2ZwLT5wb3MpIHsKLSAgICAgY2FzZSAnXyc6Ci1AQCAtMjMz LDYgKzUwNCw5IEBAIHN0YXRpYyBpbnQgcGFyc2VyX2tleShzZl9wYXJzZXIgKnNmcCwgc2ZfdmVj ICpkZXN0KSB7Ci0gICAgIGJyZWFrOwotICAgfQotIAotKyNpZmRlZiBfX0FWWDJfXwotK2ZpbjoK LSsjZW5kaWYgLyogX19BVlgyX18gKi8KLSAgIGlmIChkZXN0KSB7Ci0gICAgIGRlc3QtPmJhc2Ug PSAodWludDhfdCAqKWJhc2U7Ci0gICAgIGRlc3QtPmxlbiA9IChzaXplX3QpKHNmcC0+cG9zIC0g ZGVzdC0+YmFzZSk7Ci1AQCAtMjQxLDcgKzUxNSw3IEBAIHN0YXRpYyBpbnQgcGFyc2VyX2tleShz Zl9wYXJzZXIgKnNmcCwgc2ZfdmVjICpkZXN0KSB7Ci0gICByZXR1cm4gMDsKLSB9Ci0gCi0tc3Rh dGljIGludCBwYXJzZXJfbnVtYmVyKHNmX3BhcnNlciAqc2ZwLCBzZl92YWx1ZSAqZGVzdCkgewot K3N0YXRpYyBpbnQgcGFyc2VyX251bWJlcihzZnBhcnNlX3BhcnNlciAqc2ZwLCBzZnBhcnNlX3Zh bHVlICpkZXN0KSB7Ci0gICBpbnQgc2lnbiA9IDE7Ci0gICBpbnQ2NF90IHZhbHVlID0gMDsKLSAg IHNpemVfdCBsZW4gPSAwOwotQEAgLTI1MCw3ICs1MjQsNyBAQCBzdGF0aWMgaW50IHBhcnNlcl9u dW1iZXIoc2ZfcGFyc2VyICpzZnAsIHNmX3ZhbHVlICpkZXN0KSB7Ci0gICBpZiAoKnNmcC0+cG9z ID09ICctJykgewotICAgICArK3NmcC0+cG9zOwotICAgICBpZiAocGFyc2VyX2VvZihzZnApKSB7 Ci0tICAgICAgcmV0dXJuIFNGX0VSUl9QQVJTRV9FUlJPUjsKLSsgICAgICByZXR1cm4gU0ZQQVJT RV9FUlJfUEFSU0U7Ci0gICAgIH0KLSAKLSAgICAgc2lnbiA9IC0xOwotQEAgLTI2Miw3ICs1MzYs NyBAQCBzdGF0aWMgaW50IHBhcnNlcl9udW1iZXIoc2ZfcGFyc2VyICpzZnAsIHNmX3ZhbHVlICpk ZXN0KSB7Ci0gICAgIHN3aXRjaCAoKnNmcC0+cG9zKSB7Ci0gICAgIERJR0lUX0NBU0VTOgotICAg ICAgIGlmICgrK2xlbiA+IDE1KSB7Ci0tICAgICAgICByZXR1cm4gU0ZfRVJSX1BBUlNFX0VSUk9S OwotKyAgICAgICAgcmV0dXJuIFNGUEFSU0VfRVJSX1BBUlNFOwotICAgICAgIH0KLSAKLSAgICAg ICB2YWx1ZSAqPSAxMDsKLUBAIC0yNzUsMTMgKzU0OSwxMyBAQCBzdGF0aWMgaW50IHBhcnNlcl9u dW1iZXIoc2ZfcGFyc2VyICpzZnAsIHNmX3ZhbHVlICpkZXN0KSB7Ci0gICB9Ci0gCi0gICBpZiAo bGVuID09IDApIHsKLS0gICAgcmV0dXJuIFNGX0VSUl9QQVJTRV9FUlJPUjsKLSsgICAgcmV0dXJu IFNGUEFSU0VfRVJSX1BBUlNFOwotICAgfQotIAotICAgaWYgKHBhcnNlcl9lb2Yoc2ZwKSB8fCAq c2ZwLT5wb3MgIT0gJy4nKSB7Ci0gICAgIGlmIChkZXN0KSB7Ci0tICAgICAgZGVzdC0+dHlwZSA9 IFNGX1RZUEVfSU5URUdFUjsKLS0gICAgICBkZXN0LT5mbGFncyA9IFNGX1ZBTFVFX0ZMQUdfTk9O RTsKLSsgICAgICBkZXN0LT50eXBlID0gU0ZQQVJTRV9UWVBFX0lOVEVHRVI7Ci0rICAgICAgZGVz dC0+ZmxhZ3MgPSBTRlBBUlNFX1ZBTFVFX0ZMQUdfTk9ORTsKLSAgICAgICBkZXN0LT5pbnRlZ2Vy ID0gdmFsdWUgKiBzaWduOwotICAgICB9Ci0gCi1AQCAtMjkxLDcgKzU2NSw3IEBAIHN0YXRpYyBp bnQgcGFyc2VyX251bWJlcihzZl9wYXJzZXIgKnNmcCwgc2ZfdmFsdWUgKmRlc3QpIHsKLSAgIC8q IGRlY2ltYWwgKi8KLSAKLSAgIGlmIChsZW4gPiAxMikgewotLSAgICByZXR1cm4gU0ZfRVJSX1BB UlNFX0VSUk9SOwotKyAgICByZXR1cm4gU0ZQQVJTRV9FUlJfUEFSU0U7Ci0gICB9Ci0gCi0gICBm cG9zID0gbGVuOwotQEAgLTMwMiw3ICs1NzYsNyBAQCBzdGF0aWMgaW50IHBhcnNlcl9udW1iZXIo c2ZfcGFyc2VyICpzZnAsIHNmX3ZhbHVlICpkZXN0KSB7Ci0gICAgIHN3aXRjaCAoKnNmcC0+cG9z KSB7Ci0gICAgIERJR0lUX0NBU0VTOgotICAgICAgIGlmICgrK2xlbiA+IDE1KSB7Ci0tICAgICAg ICByZXR1cm4gU0ZfRVJSX1BBUlNFX0VSUk9SOwotKyAgICAgICAgcmV0dXJuIFNGUEFSU0VfRVJS X1BBUlNFOwotICAgICAgIH0KLSAKLSAgICAgICB2YWx1ZSAqPSAxMDsKLUBAIC0zMTUsMTIgKzU4 OSwxMiBAQCBzdGF0aWMgaW50IHBhcnNlcl9udW1iZXIoc2ZfcGFyc2VyICpzZnAsIHNmX3ZhbHVl ICpkZXN0KSB7Ci0gICB9Ci0gCi0gICBpZiAoZnBvcyA9PSBsZW4gfHwgbGVuIC0gZnBvcyA+IDMp IHsKLS0gICAgcmV0dXJuIFNGX0VSUl9QQVJTRV9FUlJPUjsKLSsgICAgcmV0dXJuIFNGUEFSU0Vf RVJSX1BBUlNFOwotICAgfQotIAotICAgaWYgKGRlc3QpIHsKLS0gICAgZGVzdC0+dHlwZSA9IFNG X1RZUEVfREVDSU1BTDsKLS0gICAgZGVzdC0+ZmxhZ3MgPSBTRl9WQUxVRV9GTEFHX05PTkU7Ci0r ICAgIGRlc3QtPnR5cGUgPSBTRlBBUlNFX1RZUEVfREVDSU1BTDsKLSsgICAgZGVzdC0+ZmxhZ3Mg PSBTRlBBUlNFX1ZBTFVFX0ZMQUdfTk9ORTsKLSAgICAgZGVzdC0+ZGVjaW1hbC5udW1lciA9IHZh bHVlICogc2lnbjsKLSAKLSAgICAgc3dpdGNoIChsZW4gLSBmcG9zKSB7Ci1AQCAtMzQyLDkgKzYx Niw5IEBAIHN0YXRpYyBpbnQgcGFyc2VyX251bWJlcihzZl9wYXJzZXIgKnNmcCwgc2ZfdmFsdWUg KmRlc3QpIHsKLSAgIHJldHVybiAwOwotIH0KLSAKLS1zdGF0aWMgaW50IHBhcnNlcl9kYXRlKHNm X3BhcnNlciAqc2ZwLCBzZl92YWx1ZSAqZGVzdCkgewotK3N0YXRpYyBpbnQgcGFyc2VyX2RhdGUo c2ZwYXJzZV9wYXJzZXIgKnNmcCwgc2ZwYXJzZV92YWx1ZSAqZGVzdCkgewotICAgaW50IHJ2Owot LSAgc2ZfdmFsdWUgdmFsOwotKyAgc2ZwYXJzZV92YWx1ZSB2YWw7Ci0gCi0gICAvKiBUaGUgZmly c3QgYnl0ZSBoYXMgYWxyZWFkeSBiZWVuIHZhbGlkYXRlZCBieSB0aGUgY2FsbGVyLiAqLwotICAg YXNzZXJ0KCdAJyA9PSAqc2ZwLT5wb3MpOwotQEAgLTM1Miw3ICs2MjYsNyBAQCBzdGF0aWMgaW50 IHBhcnNlcl9kYXRlKHNmX3BhcnNlciAqc2ZwLCBzZl92YWx1ZSAqZGVzdCkgewotICAgKytzZnAt PnBvczsKLSAKLSAgIGlmIChwYXJzZXJfZW9mKHNmcCkpIHsKLS0gICAgcmV0dXJuIFNGX0VSUl9Q QVJTRV9FUlJPUjsKLSsgICAgcmV0dXJuIFNGUEFSU0VfRVJSX1BBUlNFOwotICAgfQotIAotICAg cnYgPSBwYXJzZXJfbnVtYmVyKHNmcCwgJnZhbCk7Ci1AQCAtMzYwLDI3ICs2MzQsOTMgQEAgc3Rh dGljIGludCBwYXJzZXJfZGF0ZShzZl9wYXJzZXIgKnNmcCwgc2ZfdmFsdWUgKmRlc3QpIHsKLSAg ICAgcmV0dXJuIHJ2OwotICAgfQotIAotLSAgaWYgKHZhbC50eXBlICE9IFNGX1RZUEVfSU5URUdF UikgewotLSAgICByZXR1cm4gU0ZfRVJSX1BBUlNFX0VSUk9SOwotKyAgaWYgKHZhbC50eXBlICE9 IFNGUEFSU0VfVFlQRV9JTlRFR0VSKSB7Ci0rICAgIHJldHVybiBTRlBBUlNFX0VSUl9QQVJTRTsK LSAgIH0KLSAKLSAgIGlmIChkZXN0KSB7Ci0gICAgICpkZXN0ID0gdmFsOwotLSAgICBkZXN0LT50 eXBlID0gU0ZfVFlQRV9EQVRFOwotKyAgICBkZXN0LT50eXBlID0gU0ZQQVJTRV9UWVBFX0RBVEU7 Ci0gICB9Ci0gCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0tc3RhdGljIGludCBwYXJzZXJfc3RyaW5n KHNmX3BhcnNlciAqc2ZwLCBzZl92YWx1ZSAqZGVzdCkgewotKyNpZmRlZiBfX0FWWDJfXwotK3N0 YXRpYyBjb25zdCB1aW50OF90ICpmaW5kX2NoYXJfc3RyaW5nKGNvbnN0IHVpbnQ4X3QgKmZpcnN0 LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qg Kmxhc3QpIHsKLSsgIGNvbnN0IF9fbTI1NmkgYnMgPSBfbW0yNTZfc2V0MV9lcGk4KCdcXCcpOwot KyAgY29uc3QgX19tMjU2aSBkcSA9IF9tbTI1Nl9zZXQxX2VwaTgoJyInKTsKLSsgIGNvbnN0IF9f bTI1NmkgZGVsID0gX21tMjU2X3NldDFfZXBpOCgweDdmKTsKLSsgIGNvbnN0IF9fbTI1Nmkgc3Ag PSBfbW0yNTZfc2V0MV9lcGk4KCcgJyk7Ci0rICBfX20yNTZpIHMsIHg7Ci0rICB1aW50MzJfdCBt OwotKwotKyAgZm9yICg7IGZpcnN0ICE9IGxhc3Q7IGZpcnN0ICs9IDMyKSB7Ci0rICAgIHMgPSBf bW0yNTZfbG9hZHVfc2kyNTYoKHZvaWQgKilmaXJzdCk7Ci0rCi0rICAgIHggPSBfbW0yNTZfY21w Z3RfZXBpOChzcCwgcyk7Ci0rICAgIHggPSBfbW0yNTZfb3Jfc2kyNTYoX21tMjU2X2NtcGVxX2Vw aTgocywgYnMpLCB4KTsKLSsgICAgeCA9IF9tbTI1Nl9vcl9zaTI1NihfbW0yNTZfY21wZXFfZXBp OChzLCBkcSksIHgpOwotKyAgICB4ID0gX21tMjU2X29yX3NpMjU2KF9tbTI1Nl9jbXBlcV9lcGk4 KHMsIGRlbCksIHgpOwotKwotKyAgICBtID0gKHVpbnQzMl90KV9tbTI1Nl9tb3ZlbWFza19lcGk4 KHgpOwotKyAgICBpZiAobSkgewotKyAgICAgIHJldHVybiBmaXJzdCArIGN0eihtKTsKLSsgICAg fQotKyAgfQotKwotKyAgcmV0dXJuIGxhc3Q7Ci0rfQotKyNlbmRpZiAvKiBfX0FWWDJfXyAqLwot KwotK3N0YXRpYyBpbnQgcGFyc2VyX3N0cmluZyhzZnBhcnNlX3BhcnNlciAqc2ZwLCBzZnBhcnNl X3ZhbHVlICpkZXN0KSB7Ci0gICBjb25zdCB1aW50OF90ICpiYXNlOwotLSAgdWludDMyX3QgZmxh Z3MgPSBTRl9WQUxVRV9GTEFHX05PTkU7Ci0rI2lmZGVmIF9fQVZYMl9fCi0rICBjb25zdCB1aW50 OF90ICpsYXN0OwotKyNlbmRpZiAvKiBfX0FWWDJfXyAqLwotKyAgdWludDMyX3QgZmxhZ3MgPSBT RlBBUlNFX1ZBTFVFX0ZMQUdfTk9ORTsKLSAKLSAgIC8qIFRoZSBmaXJzdCBieXRlIGhhcyBhbHJl YWR5IGJlZW4gdmFsaWRhdGVkIGJ5IHRoZSBjYWxsZXIuICovCi0gICBhc3NlcnQoJyInID09ICpz ZnAtPnBvcyk7Ci0gCi0gICBiYXNlID0gKytzZnAtPnBvczsKLSAKLSsjaWZkZWYgX19BVlgyX18K LSsgIGZvciAoOyBzZnAtPmVuZCAtIHNmcC0+cG9zID49IDMyOyArK3NmcC0+cG9zKSB7Ci0rICAg IGxhc3QgPSBzZnAtPnBvcyArICgoc2ZwLT5lbmQgLSBzZnAtPnBvcykgJiB+MHgxZnUpOwotKwot KyAgICBzZnAtPnBvcyA9IGZpbmRfY2hhcl9zdHJpbmcoc2ZwLT5wb3MsIGxhc3QpOwotKyAgICBp ZiAoc2ZwLT5wb3MgPT0gbGFzdCkgewotKyAgICAgIGJyZWFrOwotKyAgICB9Ci0rCi0rICAgIHN3 aXRjaCAoKnNmcC0+cG9zKSB7Ci0rICAgIGNhc2UgJ1xcJzoKLSsgICAgICArK3NmcC0+cG9zOwot KyAgICAgIGlmIChwYXJzZXJfZW9mKHNmcCkpIHsKLSsgICAgICAgIHJldHVybiBTRlBBUlNFX0VS Ul9QQVJTRTsKLSsgICAgICB9Ci0rCi0rICAgICAgc3dpdGNoICgqc2ZwLT5wb3MpIHsKLSsgICAg ICBjYXNlICciJzoKLSsgICAgICBjYXNlICdcXCc6Ci0rICAgICAgICBmbGFncyA9IFNGUEFSU0Vf VkFMVUVfRkxBR19FU0NBUEVEX1NUUklORzsKLSsKLSsgICAgICAgIGJyZWFrOwotKyAgICAgIGRl ZmF1bHQ6Ci0rICAgICAgICByZXR1cm4gU0ZQQVJTRV9FUlJfUEFSU0U7Ci0rICAgICAgfQotKwot KyAgICAgIGJyZWFrOwotKyAgICBjYXNlICciJzoKLSsgICAgICBnb3RvIGZpbjsKLSsgICAgZGVm YXVsdDoKLSsgICAgICByZXR1cm4gU0ZQQVJTRV9FUlJfUEFSU0U7Ci0rICAgIH0KLSsgIH0KLSsj ZW5kaWYgLyogX19BVlgyX18gKi8KLSsKLSAgIGZvciAoOyAhcGFyc2VyX2VvZihzZnApOyArK3Nm cC0+cG9zKSB7Ci0gICAgIHN3aXRjaCAoKnNmcC0+cG9zKSB7Ci0gICAgIFgyMF8yMV9DQVNFUzoK LUBAIC0zOTAsNzUgKzczMCwxMzEgQEAgc3RhdGljIGludCBwYXJzZXJfc3RyaW5nKHNmX3BhcnNl ciAqc2ZwLCBzZl92YWx1ZSAqZGVzdCkgewotICAgICBjYXNlICdcXCc6Ci0gICAgICAgKytzZnAt PnBvczsKLSAgICAgICBpZiAocGFyc2VyX2VvZihzZnApKSB7Ci0tICAgICAgICByZXR1cm4gU0Zf RVJSX1BBUlNFX0VSUk9SOwotKyAgICAgICAgcmV0dXJuIFNGUEFSU0VfRVJSX1BBUlNFOwotICAg ICAgIH0KLSAKLSAgICAgICBzd2l0Y2ggKCpzZnAtPnBvcykgewotICAgICAgIGNhc2UgJyInOgot ICAgICAgIGNhc2UgJ1xcJzoKLS0gICAgICAgIGZsYWdzID0gU0ZfVkFMVUVfRkxBR19FU0NBUEVE X1NUUklORzsKLSsgICAgICAgIGZsYWdzID0gU0ZQQVJTRV9WQUxVRV9GTEFHX0VTQ0FQRURfU1RS SU5HOwotIAotICAgICAgICAgYnJlYWs7Ci0gICAgICAgZGVmYXVsdDoKLS0gICAgICAgIHJldHVy biBTRl9FUlJfUEFSU0VfRVJST1I7Ci0rICAgICAgICByZXR1cm4gU0ZQQVJTRV9FUlJfUEFSU0U7 Ci0gICAgICAgfQotIAotICAgICAgIGJyZWFrOwotICAgICBjYXNlICciJzoKLS0gICAgICBpZiAo ZGVzdCkgewotLSAgICAgICAgZGVzdC0+dHlwZSA9IFNGX1RZUEVfU1RSSU5HOwotLSAgICAgICAg ZGVzdC0+ZmxhZ3MgPSBmbGFnczsKLS0gICAgICAgIGRlc3QtPnZlYy5sZW4gPSAoc2l6ZV90KShz ZnAtPnBvcyAtIGJhc2UpOwotLSAgICAgICAgZGVzdC0+dmVjLmJhc2UgPSBkZXN0LT52ZWMubGVu ID09IDAgPyBOVUxMIDogKHVpbnQ4X3QgKiliYXNlOwotLSAgICAgIH0KLSsgICAgICBnb3RvIGZp bjsKLSsgICAgZGVmYXVsdDoKLSsgICAgICByZXR1cm4gU0ZQQVJTRV9FUlJfUEFSU0U7Ci0rICAg IH0KLSsgIH0KLSAKLS0gICAgICArK3NmcC0+cG9zOwotKyAgcmV0dXJuIFNGUEFSU0VfRVJSX1BB UlNFOwotIAotLSAgICAgIHJldHVybiAwOwotLSAgICBkZWZhdWx0OgotLSAgICAgIHJldHVybiBT Rl9FUlJfUEFSU0VfRVJST1I7Ci0rZmluOgotKyAgaWYgKGRlc3QpIHsKLSsgICAgZGVzdC0+dHlw ZSA9IFNGUEFSU0VfVFlQRV9TVFJJTkc7Ci0rICAgIGRlc3QtPmZsYWdzID0gZmxhZ3M7Ci0rICAg IGRlc3QtPnZlYy5sZW4gPSAoc2l6ZV90KShzZnAtPnBvcyAtIGJhc2UpOwotKyAgICBkZXN0LT52 ZWMuYmFzZSA9IGRlc3QtPnZlYy5sZW4gPT0gMCA/IE5VTEwgOiAodWludDhfdCAqKWJhc2U7Ci0r ICB9Ci0rCi0rICArK3NmcC0+cG9zOwotKwotKyAgcmV0dXJuIDA7Ci0rfQotKwotKyNpZmRlZiBf X0FWWDJfXwotK3N0YXRpYyBjb25zdCB1aW50OF90ICpmaW5kX2NoYXJfdG9rZW4oY29uc3QgdWlu dDhfdCAqZmlyc3QsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCB1aW50OF90ICpsYXN0KSB7Ci0rICAvKiByMDogIS4uOiwgZXhjbHVkaW5nICIoKSwKLSsgICAg IHIxOiBBLi5aCi0rICAgICByMjogXi4ufiwgZXhjbHVkaW5nIHt9ICovCi0rICBjb25zdCBfX20y NTZpIHIwbCA9IF9tbTI1Nl9zZXQxX2VwaTgoJyEnIC0gMSk7Ci0rICBjb25zdCBfX20yNTZpIHIw ciA9IF9tbTI1Nl9zZXQxX2VwaTgoJzonICsgMSk7Ci0rICBjb25zdCBfX20yNTZpIGRxID0gX21t MjU2X3NldDFfZXBpOCgnIicpOwotKyAgY29uc3QgX19tMjU2aSBwcmwgPSBfbW0yNTZfc2V0MV9l cGk4KCcoJyk7Ci0rICBjb25zdCBfX20yNTZpIHByciA9IF9tbTI1Nl9zZXQxX2VwaTgoJyknKTsK LSsgIGNvbnN0IF9fbTI1NmkgY29tbWEgPSBfbW0yNTZfc2V0MV9lcGk4KCcsJyk7Ci0rICBjb25z dCBfX20yNTZpIHIxbCA9IF9tbTI1Nl9zZXQxX2VwaTgoJ0EnIC0gMSk7Ci0rICBjb25zdCBfX20y NTZpIHIxciA9IF9tbTI1Nl9zZXQxX2VwaTgoJ1onICsgMSk7Ci0rICBjb25zdCBfX20yNTZpIHIy bCA9IF9tbTI1Nl9zZXQxX2VwaTgoJ14nIC0gMSk7Ci0rICBjb25zdCBfX20yNTZpIHIyciA9IF9t bTI1Nl9zZXQxX2VwaTgoJ34nICsgMSk7Ci0rICBjb25zdCBfX20yNTZpIGNibCA9IF9tbTI1Nl9z ZXQxX2VwaTgoJ3snKTsKLSsgIGNvbnN0IF9fbTI1NmkgY2JyID0gX21tMjU2X3NldDFfZXBpOCgn fScpOwotKyAgX19tMjU2aSBzLCB4OwotKyAgdWludDMyX3QgbTsKLSsKLSsgIGZvciAoOyBmaXJz dCAhPSBsYXN0OyBmaXJzdCArPSAzMikgewotKyAgICBzID0gX21tMjU2X2xvYWR1X3NpMjU2KCh2 b2lkICopZmlyc3QpOwotKwotKyAgICB4ID0gX21tMjU2X2FuZG5vdF9zaTI1NigKLSsgICAgICBf bW0yNTZfY21wZXFfZXBpOChzLCBjb21tYSksCi0rICAgICAgX21tMjU2X2FuZG5vdF9zaTI1NigK LSsgICAgICAgIF9tbTI1Nl9jbXBlcV9lcGk4KHMsIHByciksCi0rICAgICAgICBfbW0yNTZfYW5k bm90X3NpMjU2KAotKyAgICAgICAgICBfbW0yNTZfY21wZXFfZXBpOChzLCBwcmwpLAotKyAgICAg ICAgICBfbW0yNTZfYW5kbm90X3NpMjU2KF9tbTI1Nl9jbXBlcV9lcGk4KHMsIGRxKSwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBfbW0yNTZfYW5kX3NpMjU2KF9tbTI1Nl9jbXBndF9l cGk4KHMsIHIwbCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBfbW0yNTZfY21wZ3RfZXBpOChyMHIsIHMpKSkpKSk7Ci0rICAgIHggPSBfbW0yNTZfb3Jf c2kyNTYoCi0rICAgICAgX21tMjU2X2FuZF9zaTI1NihfbW0yNTZfY21wZ3RfZXBpOChzLCByMWwp LCBfbW0yNTZfY21wZ3RfZXBpOChyMXIsIHMpKSwKLSsgICAgICB4KTsKLSsgICAgeCA9IF9tbTI1 Nl9vcl9zaTI1NigKLSsgICAgICBfbW0yNTZfYW5kbm90X3NpMjU2KAotKyAgICAgICAgX21tMjU2 X2NtcGVxX2VwaTgocywgY2JyKSwKLSsgICAgICAgIF9tbTI1Nl9hbmRub3Rfc2kyNTYoX21tMjU2 X2NtcGVxX2VwaTgocywgY2JsKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgX21tMjU2 X2FuZF9zaTI1NihfbW0yNTZfY21wZ3RfZXBpOChzLCByMmwpLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tbTI1Nl9jbXBndF9lcGk4KHIyciwgcykpKSks Ci0rICAgICAgeCk7Ci0rCi0rICAgIG0gPSB+KHVpbnQzMl90KV9tbTI1Nl9tb3ZlbWFza19lcGk4 KHgpOwotKyAgICBpZiAobSkgewotKyAgICAgIHJldHVybiBmaXJzdCArIGN0eihtKTsKLSAgICAg fQotICAgfQotIAotLSAgcmV0dXJuIFNGX0VSUl9QQVJTRV9FUlJPUjsKLSsgIHJldHVybiBsYXN0 OwotIH0KLSsjZW5kaWYgLyogX19BVlgyX18gKi8KLSAKLS1zdGF0aWMgaW50IHBhcnNlcl90b2tl bihzZl9wYXJzZXIgKnNmcCwgc2ZfdmFsdWUgKmRlc3QpIHsKLStzdGF0aWMgaW50IHBhcnNlcl90 b2tlbihzZnBhcnNlX3BhcnNlciAqc2ZwLCBzZnBhcnNlX3ZhbHVlICpkZXN0KSB7Ci0gICBjb25z dCB1aW50OF90ICpiYXNlOwotKyNpZmRlZiBfX0FWWDJfXwotKyAgY29uc3QgdWludDhfdCAqbGFz dDsKLSsjZW5kaWYgLyogX19BVlgyX18gKi8KLSAKLSAgIC8qIFRoZSBmaXJzdCBieXRlIGhhcyBh bHJlYWR5IGJlZW4gdmFsaWRhdGVkIGJ5IHRoZSBjYWxsZXIuICovCi0gICBiYXNlID0gc2ZwLT5w b3MrKzsKLSAKLSsjaWZkZWYgX19BVlgyX18KLSsgIGlmIChzZnAtPmVuZCAtIHNmcC0+cG9zID49 IDMyKSB7Ci0rICAgIGxhc3QgPSBzZnAtPnBvcyArICgoc2ZwLT5lbmQgLSBzZnAtPnBvcykgJiB+ MHgxZnUpOwotKwotKyAgICBzZnAtPnBvcyA9IGZpbmRfY2hhcl90b2tlbihzZnAtPnBvcywgbGFz dCk7Ci0rICAgIGlmIChzZnAtPnBvcyAhPSBsYXN0KSB7Ci0rICAgICAgZ290byBmaW47Ci0rICAg IH0KLSsgIH0KLSsjZW5kaWYgLyogX19BVlgyX18gKi8KLSsKLSAgIGZvciAoOyAhcGFyc2VyX2Vv ZihzZnApOyArK3NmcC0+cG9zKSB7Ci0gICAgIHN3aXRjaCAoKnNmcC0+cG9zKSB7Ci0tICAgIGNh c2UgJyEnOgotLSAgICBjYXNlICcjJzoKLS0gICAgY2FzZSAnJCc6Ci0tICAgIGNhc2UgJyUnOgot LSAgICBjYXNlICcmJzoKLS0gICAgY2FzZSAnXCcnOgotLSAgICBjYXNlICcqJzoKLS0gICAgY2Fz ZSAnKyc6Ci0tICAgIGNhc2UgJy0nOgotLSAgICBjYXNlICcuJzoKLS0gICAgY2FzZSAnXic6Ci0t ICAgIGNhc2UgJ18nOgotLSAgICBjYXNlICdgJzoKLS0gICAgY2FzZSAnfCc6Ci0tICAgIGNhc2Ug J34nOgotLSAgICBjYXNlICc6JzoKLS0gICAgY2FzZSAnLyc6Ci0tICAgIERJR0lUX0NBU0VTOgot LSAgICBBTFBIQV9DQVNFUzoKLSsgICAgVE9LRU5fQ0FTRVM6Ci0gICAgICAgY29udGludWU7Ci0g ICAgIH0KLSAKLSAgICAgYnJlYWs7Ci0gICB9Ci0gCi0rI2lmZGVmIF9fQVZYMl9fCi0rZmluOgot KyNlbmRpZiAvKiBfX0FWWDJfXyAqLwotICAgaWYgKGRlc3QpIHsKLS0gICAgZGVzdC0+dHlwZSA9 IFNGX1RZUEVfVE9LRU47Ci0tICAgIGRlc3QtPmZsYWdzID0gU0ZfVkFMVUVfRkxBR19OT05FOwot KyAgICBkZXN0LT50eXBlID0gU0ZQQVJTRV9UWVBFX1RPS0VOOwotKyAgICBkZXN0LT5mbGFncyA9 IFNGUEFSU0VfVkFMVUVfRkxBR19OT05FOwotICAgICBkZXN0LT52ZWMuYmFzZSA9ICh1aW50OF90 ICopYmFzZTsKLSAgICAgZGVzdC0+dmVjLmxlbiA9IChzaXplX3QpKHNmcC0+cG9zIC0gYmFzZSk7 Ci0gICB9Ci1AQCAtNDY2LDE0ICs4NjIsNjMgQEAgc3RhdGljIGludCBwYXJzZXJfdG9rZW4oc2Zf cGFyc2VyICpzZnAsIHNmX3ZhbHVlICpkZXN0KSB7Ci0gICByZXR1cm4gMDsKLSB9Ci0gCi0tc3Rh dGljIGludCBwYXJzZXJfYnl0ZXNlcShzZl9wYXJzZXIgKnNmcCwgc2ZfdmFsdWUgKmRlc3QpIHsK LSsjaWZkZWYgX19BVlgyX18KLStzdGF0aWMgY29uc3QgdWludDhfdCAqZmluZF9jaGFyX2J5dGVz ZXEoY29uc3QgdWludDhfdCAqZmlyc3QsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmxhc3QpIHsKLSsgIGNvbnN0IF9fbTI1NmkgcGxzID0g X21tMjU2X3NldDFfZXBpOCgnKycpOwotKyAgY29uc3QgX19tMjU2aSBmcyA9IF9tbTI1Nl9zZXQx X2VwaTgoJy8nKTsKLSsgIGNvbnN0IF9fbTI1NmkgcjBsID0gX21tMjU2X3NldDFfZXBpOCgnMCcg LSAxKTsKLSsgIGNvbnN0IF9fbTI1NmkgcjByID0gX21tMjU2X3NldDFfZXBpOCgnOScgKyAxKTsK LSsgIGNvbnN0IF9fbTI1NmkgcjFsID0gX21tMjU2X3NldDFfZXBpOCgnQScgLSAxKTsKLSsgIGNv bnN0IF9fbTI1NmkgcjFyID0gX21tMjU2X3NldDFfZXBpOCgnWicgKyAxKTsKLSsgIGNvbnN0IF9f bTI1NmkgcjJsID0gX21tMjU2X3NldDFfZXBpOCgnYScgLSAxKTsKLSsgIGNvbnN0IF9fbTI1Nmkg cjJyID0gX21tMjU2X3NldDFfZXBpOCgneicgKyAxKTsKLSsgIF9fbTI1NmkgcywgeDsKLSsgIHVp bnQzMl90IG07Ci0rCi0rICBmb3IgKDsgZmlyc3QgIT0gbGFzdDsgZmlyc3QgKz0gMzIpIHsKLSsg ICAgcyA9IF9tbTI1Nl9sb2FkdV9zaTI1Nigodm9pZCAqKWZpcnN0KTsKLSsKLSsgICAgeCA9IF9t bTI1Nl9jbXBlcV9lcGk4KHMsIHBscyk7Ci0rICAgIHggPSBfbW0yNTZfb3Jfc2kyNTYoX21tMjU2 X2NtcGVxX2VwaTgocywgZnMpLCB4KTsKLSsgICAgeCA9IF9tbTI1Nl9vcl9zaTI1NigKLSsgICAg ICBfbW0yNTZfYW5kX3NpMjU2KF9tbTI1Nl9jbXBndF9lcGk4KHMsIHIwbCksIF9tbTI1Nl9jbXBn dF9lcGk4KHIwciwgcykpLAotKyAgICAgIHgpOwotKyAgICB4ID0gX21tMjU2X29yX3NpMjU2KAot KyAgICAgIF9tbTI1Nl9hbmRfc2kyNTYoX21tMjU2X2NtcGd0X2VwaTgocywgcjFsKSwgX21tMjU2 X2NtcGd0X2VwaTgocjFyLCBzKSksCi0rICAgICAgeCk7Ci0rICAgIHggPSBfbW0yNTZfb3Jfc2ky NTYoCi0rICAgICAgX21tMjU2X2FuZF9zaTI1NihfbW0yNTZfY21wZ3RfZXBpOChzLCByMmwpLCBf bW0yNTZfY21wZ3RfZXBpOChyMnIsIHMpKSwKLSsgICAgICB4KTsKLSsKLSsgICAgbSA9IH4odWlu dDMyX3QpX21tMjU2X21vdmVtYXNrX2VwaTgoeCk7Ci0rICAgIGlmIChtKSB7Ci0rICAgICAgcmV0 dXJuIGZpcnN0ICsgY3R6KG0pOwotKyAgICB9Ci0rICB9Ci0rCi0rICByZXR1cm4gbGFzdDsKLSt9 Ci0rI2VuZGlmIC8qIF9fQVZYMl9fICovCi0rCi0rc3RhdGljIGludCBwYXJzZXJfYnl0ZXNlcShz ZnBhcnNlX3BhcnNlciAqc2ZwLCBzZnBhcnNlX3ZhbHVlICpkZXN0KSB7Ci0gICBjb25zdCB1aW50 OF90ICpiYXNlOwotKyNpZmRlZiBfX0FWWDJfXwotKyAgY29uc3QgdWludDhfdCAqbGFzdDsKLSsj ZW5kaWYgLyogX19BVlgyX18gKi8KLSAKLSAgIC8qIFRoZSBmaXJzdCBieXRlIGhhcyBhbHJlYWR5 IGJlZW4gdmFsaWRhdGVkIGJ5IHRoZSBjYWxsZXIuICovCi0gICBhc3NlcnQoJzonID09ICpzZnAt PnBvcyk7Ci0gCi0gICBiYXNlID0gKytzZnAtPnBvczsKLSAKLSsjaWZkZWYgX19BVlgyX18KLSsg IGlmIChzZnAtPmVuZCAtIHNmcC0+cG9zID49IDMyKSB7Ci0rICAgIGxhc3QgPSBzZnAtPnBvcyAr ICgoc2ZwLT5lbmQgLSBzZnAtPnBvcykgJiB+MHgxZnUpOwotKyAgICBzZnAtPnBvcyA9IGZpbmRf Y2hhcl9ieXRlc2VxKHNmcC0+cG9zLCBsYXN0KTsKLSsgIH0KLSsjZW5kaWYgLyogX19BVlgyX18g Ki8KLSsKLSAgIGZvciAoOyAhcGFyc2VyX2VvZihzZnApOyArK3NmcC0+cG9zKSB7Ci0gICAgIHN3 aXRjaCAoKnNmcC0+cG9zKSB7Ci0gICAgIGNhc2UgJysnOgotQEAgLTQ4NSw3NSArOTMwLDQ3IEBA IHN0YXRpYyBpbnQgcGFyc2VyX2J5dGVzZXEoc2ZfcGFyc2VyICpzZnAsIHNmX3ZhbHVlICpkZXN0 KSB7Ci0gICAgICAgc3dpdGNoICgoc2ZwLT5wb3MgLSBiYXNlKSAmIDB4MykgewotICAgICAgIGNh c2UgMDoKLSAgICAgICBjYXNlIDE6Ci0tICAgICAgICByZXR1cm4gU0ZfRVJSX1BBUlNFX0VSUk9S OwotKyAgICAgICAgcmV0dXJuIFNGUEFSU0VfRVJSX1BBUlNFOwotICAgICAgIGNhc2UgMjoKLS0g ICAgICAgIHN3aXRjaCAoKihzZnAtPnBvcyAtIDEpKSB7Ci0tICAgICAgICBjYXNlICdBJzoKLS0g ICAgICAgIGNhc2UgJ1EnOgotLSAgICAgICAgY2FzZSAnZyc6Ci0tICAgICAgICBjYXNlICd3JzoK LS0gICAgICAgICAgYnJlYWs7Ci0tICAgICAgICBkZWZhdWx0OgotLSAgICAgICAgICByZXR1cm4g U0ZfRVJSX1BBUlNFX0VSUk9SOwotLSAgICAgICAgfQotLQotICAgICAgICAgKytzZnAtPnBvczsK LSAKLS0gICAgICAgIGlmIChwYXJzZXJfZW9mKHNmcCkgfHwgKnNmcC0+cG9zICE9ICc9Jykgewot LSAgICAgICAgICByZXR1cm4gU0ZfRVJSX1BBUlNFX0VSUk9SOwotKyAgICAgICAgaWYgKHBhcnNl cl9lb2Yoc2ZwKSkgewotKyAgICAgICAgICByZXR1cm4gU0ZQQVJTRV9FUlJfUEFSU0U7Ci0rICAg ICAgICB9Ci0rCi0rICAgICAgICBpZiAoKnNmcC0+cG9zID09ICc9JykgewotKyAgICAgICAgICAr K3NmcC0+cG9zOwotICAgICAgICAgfQotIAotICAgICAgICAgYnJlYWs7Ci0gICAgICAgY2FzZSAz OgotLSAgICAgICAgc3dpdGNoICgqKHNmcC0+cG9zIC0gMSkpIHsKLS0gICAgICAgIGNhc2UgJ0En OgotLSAgICAgICAgY2FzZSAnRSc6Ci0tICAgICAgICBjYXNlICdJJzoKLS0gICAgICAgIGNhc2Ug J00nOgotLSAgICAgICAgY2FzZSAnUSc6Ci0tICAgICAgICBjYXNlICdVJzoKLS0gICAgICAgIGNh c2UgJ1knOgotLSAgICAgICAgY2FzZSAnYyc6Ci0tICAgICAgICBjYXNlICdnJzoKLS0gICAgICAg IGNhc2UgJ2snOgotLSAgICAgICAgY2FzZSAnbyc6Ci0tICAgICAgICBjYXNlICdzJzoKLS0gICAg ICAgIGNhc2UgJ3cnOgotLSAgICAgICAgY2FzZSAnMCc6Ci0tICAgICAgICBjYXNlICc0JzoKLS0g ICAgICAgIGNhc2UgJzgnOgotLSAgICAgICAgICBicmVhazsKLS0gICAgICAgIGRlZmF1bHQ6Ci0t ICAgICAgICAgIHJldHVybiBTRl9FUlJfUEFSU0VfRVJST1I7Ci0tICAgICAgICB9Ci0rICAgICAg ICArK3NmcC0+cG9zOwotIAotICAgICAgICAgYnJlYWs7Ci0gICAgICAgfQotIAotLSAgICAgICsr c2ZwLT5wb3M7Ci0tCi0gICAgICAgaWYgKHBhcnNlcl9lb2Yoc2ZwKSB8fCAqc2ZwLT5wb3MgIT0g JzonKSB7Ci0tICAgICAgICByZXR1cm4gU0ZfRVJSX1BBUlNFX0VSUk9SOwotKyAgICAgICAgcmV0 dXJuIFNGUEFSU0VfRVJSX1BBUlNFOwotICAgICAgIH0KLSAKLSAgICAgICBnb3RvIGZpbjsKLSAg ICAgY2FzZSAnOic6Ci0tICAgICAgaWYgKChzZnAtPnBvcyAtIGJhc2UpICYgMHgzKSB7Ci0tICAg ICAgICByZXR1cm4gU0ZfRVJSX1BBUlNFX0VSUk9SOwotKyAgICAgIGlmICgoKHNmcC0+cG9zIC0g YmFzZSkgJiAweDMpID09IDEpIHsKLSsgICAgICAgIHJldHVybiBTRlBBUlNFX0VSUl9QQVJTRTsK LSAgICAgICB9Ci0gCi0gICAgICAgZ290byBmaW47Ci0gICAgIGRlZmF1bHQ6Ci0tICAgICAgcmV0 dXJuIFNGX0VSUl9QQVJTRV9FUlJPUjsKLSsgICAgICByZXR1cm4gU0ZQQVJTRV9FUlJfUEFSU0U7 Ci0gICAgIH0KLSAgIH0KLSAKLS0gIHJldHVybiBTRl9FUlJfUEFSU0VfRVJST1I7Ci0rICByZXR1 cm4gU0ZQQVJTRV9FUlJfUEFSU0U7Ci0gCi0gZmluOgotICAgaWYgKGRlc3QpIHsKLS0gICAgZGVz dC0+dHlwZSA9IFNGX1RZUEVfQllURVNFUTsKLS0gICAgZGVzdC0+ZmxhZ3MgPSBTRl9WQUxVRV9G TEFHX05PTkU7Ci0rICAgIGRlc3QtPnR5cGUgPSBTRlBBUlNFX1RZUEVfQllURVNFUTsKLSsgICAg ZGVzdC0+ZmxhZ3MgPSBTRlBBUlNFX1ZBTFVFX0ZMQUdfTk9ORTsKLSAgICAgZGVzdC0+dmVjLmxl biA9IChzaXplX3QpKHNmcC0+cG9zIC0gYmFzZSk7Ci0gICAgIGRlc3QtPnZlYy5iYXNlID0gZGVz dC0+dmVjLmxlbiA9PSAwID8gTlVMTCA6ICh1aW50OF90ICopYmFzZTsKLSAgIH0KLUBAIC01NjMs NyArOTgwLDcgQEAgZmluOgotICAgcmV0dXJuIDA7Ci0gfQotIAotLXN0YXRpYyBpbnQgcGFyc2Vy X2Jvb2xlYW4oc2ZfcGFyc2VyICpzZnAsIHNmX3ZhbHVlICpkZXN0KSB7Ci0rc3RhdGljIGludCBw YXJzZXJfYm9vbGVhbihzZnBhcnNlX3BhcnNlciAqc2ZwLCBzZnBhcnNlX3ZhbHVlICpkZXN0KSB7 Ci0gICBpbnQgYjsKLSAKLSAgIC8qIFRoZSBmaXJzdCBieXRlIGhhcyBhbHJlYWR5IGJlZW4gdmFs aWRhdGVkIGJ5IHRoZSBjYWxsZXIuICovCi1AQCAtNTcyLDcgKzk4OSw3IEBAIHN0YXRpYyBpbnQg cGFyc2VyX2Jvb2xlYW4oc2ZfcGFyc2VyICpzZnAsIHNmX3ZhbHVlICpkZXN0KSB7Ci0gICArK3Nm cC0+cG9zOwotIAotICAgaWYgKHBhcnNlcl9lb2Yoc2ZwKSkgewotLSAgICByZXR1cm4gU0ZfRVJS X1BBUlNFX0VSUk9SOwotKyAgICByZXR1cm4gU0ZQQVJTRV9FUlJfUEFSU0U7Ci0gICB9Ci0gCi0g ICBzd2l0Y2ggKCpzZnAtPnBvcykgewotQEAgLTU4NSwyMSArMTAwMiwxODQgQEAgc3RhdGljIGlu dCBwYXJzZXJfYm9vbGVhbihzZl9wYXJzZXIgKnNmcCwgc2ZfdmFsdWUgKmRlc3QpIHsKLSAKLSAg ICAgYnJlYWs7Ci0gICBkZWZhdWx0OgotLSAgICByZXR1cm4gU0ZfRVJSX1BBUlNFX0VSUk9SOwot KyAgICByZXR1cm4gU0ZQQVJTRV9FUlJfUEFSU0U7Ci0gICB9Ci0gCi0gICArK3NmcC0+cG9zOwot IAotICAgaWYgKGRlc3QpIHsKLS0gICAgZGVzdC0+dHlwZSA9IFNGX1RZUEVfQk9PTEVBTjsKLS0g ICAgZGVzdC0+ZmxhZ3MgPSBTRl9WQUxVRV9GTEFHX05PTkU7Ci0rICAgIGRlc3QtPnR5cGUgPSBT RlBBUlNFX1RZUEVfQk9PTEVBTjsKLSsgICAgZGVzdC0+ZmxhZ3MgPSBTRlBBUlNFX1ZBTFVFX0ZM QUdfTk9ORTsKLSAgICAgZGVzdC0+Ym9vbGVhbiA9IGI7Ci0gICB9Ci0gCi0gICByZXR1cm4gMDsK LSB9Ci0gCi0tc3RhdGljIGludCBwYXJzZXJfYmFyZV9pdGVtKHNmX3BhcnNlciAqc2ZwLCBzZl92 YWx1ZSAqZGVzdCkgewotK3N0YXRpYyBpbnQgcGN0ZGVjb2RlKHVpbnQ4X3QgKnBjLCBjb25zdCB1 aW50OF90ICoqcHBvcykgewotKyAgdWludDhfdCBjLCBiID0gKipwcG9zOwotKwotKyAgc3dpdGNo IChiKSB7Ci0rICBESUdJVF9DQVNFUzoKLSsgICAgYyA9ICh1aW50OF90KSgoYiAtICcwJykgPDwg NCk7Ci0rCi0rICAgIGJyZWFrOwotKyAgTENIRVhBTFBIQV9DQVNFUzoKLSsgICAgYyA9ICh1aW50 OF90KSgoYiAtICdhJyArIDEwKSA8PCA0KTsKLSsKLSsgICAgYnJlYWs7Ci0rICBkZWZhdWx0Ogot KyAgICByZXR1cm4gLTE7Ci0rICB9Ci0rCi0rICBiID0gKisrKnBwb3M7Ci0rCi0rICBzd2l0Y2gg KGIpIHsKLSsgIERJR0lUX0NBU0VTOgotKyAgICBjIHw9ICh1aW50OF90KShiIC0gJzAnKTsKLSsK LSsgICAgYnJlYWs7Ci0rICBMQ0hFWEFMUEhBX0NBU0VTOgotKyAgICBjIHw9ICh1aW50OF90KShi IC0gJ2EnICsgMTApOwotKwotKyAgICBicmVhazsKLSsgIGRlZmF1bHQ6Ci0rICAgIHJldHVybiAt MTsKLSsgIH0KLSsKLSsgICpwYyA9IGM7Ci0rICArKypwcG9zOwotKwotKyAgcmV0dXJuIDA7Ci0r fQotKwotKy8qIFN0YXJ0IG9mIHV0ZjggZGZhICovCi0rLyogQ29weXJpZ2h0IChjKSAyMDA4LTIw MTAgQmpvZXJuIEhvZWhybWFubiA8YmpvZXJuQGhvZWhybWFubi5kZT4KLSsgKiBTZWUgaHR0cDov L2Jqb2Vybi5ob2Vocm1hbm4uZGUvdXRmLTgvZGVjb2Rlci9kZmEvIGZvciBkZXRhaWxzLgotKyAq Ci0rICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMDkgQmpvZXJuIEhvZWhybWFubiA8YmpvZXJuQGhv ZWhybWFubi5kZT4KLSsgKgotKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUg b2YgY2hhcmdlLCB0byBhbnkgcGVyc29uCi0rICogb2J0YWluaW5nIGEgY29weSBvZiB0aGlzIHNv ZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24KLSsgKiBmaWxlcyAodGhlICJTb2Z0 d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0Ci0rICogcmVzdHJpY3Rpb24s IGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksCi0r ICogbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29y IHNlbGwgY29waWVzCi0rICogb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMg dG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKLSsgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3Qg dG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotKyAqCi0rICogVGhlIGFib3ZlIGNvcHlyaWdo dCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKLSsgKiBpbmNsdWRl ZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4K LSsgKgotKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJB TlRZIE9GIEFOWSBLSU5ELAotKyAqIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBO T1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgotKyAqIE1FUkNIQU5UQUJJTElUWSwgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECi0rICogTk9OSU5GUklOR0VNRU5ULiBJ TiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUwotKyAqIEJF IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhF UiBJTiBBTgotKyAqIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJ TkcgRlJPTSwgT1VUIE9GIE9SIElOCi0rICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP UiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQotKyAqIFNPRlRXQVJFLgotKyAqLwot KyNkZWZpbmUgVVRGOF9BQ0NFUFQgMAotKyNkZWZpbmUgVVRGOF9SRUpFQ1QgMTIKLSsKLSsvKiBj bGFuZy1mb3JtYXQgb2ZmICovCi0rc3RhdGljIGNvbnN0IHVpbnQ4X3QgdXRmOGRbXSA9IHsKLSsg IC8qCi0rICAgKiBUaGUgZmlyc3QgcGFydCBvZiB0aGUgdGFibGUgbWFwcyBieXRlcyB0byBjaGFy YWN0ZXIgY2xhc3NlcyB0aGF0Ci0rICAgKiB0byByZWR1Y2UgdGhlIHNpemUgb2YgdGhlIHRyYW5z aXRpb24gdGFibGUgYW5kIGNyZWF0ZSBiaXRtYXNrcy4KLSsgICAqLwotKyAgIDAsMCwwLDAsMCww LDAsMCwwLDAsMCwwLDAsMCwwLDAsICAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAot KyAgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsICAwLDAsMCwwLDAsMCwwLDAsMCww LDAsMCwwLDAsMCwwLAotKyAgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsICAwLDAs MCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAotKyAgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCww LDAsMCwwLDAsICAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAotKyAgIDEsMSwxLDEs MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsICA5LDksOSw5LDksOSw5LDksOSw5LDksOSw5LDksOSw5 LAotKyAgIDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsICA3LDcsNyw3LDcsNyw3LDcs Nyw3LDcsNyw3LDcsNyw3LAotKyAgIDgsOCwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsICAy LDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLAotKyAgMTAsMywzLDMsMywzLDMsMywzLDMs MywzLDMsNCwzLDMsIDExLDYsNiw2LDUsOCw4LDgsOCw4LDgsOCw4LDgsOCw4LAotKwotKyAgIC8q Ci0rICAgICogVGhlIHNlY29uZCBwYXJ0IGlzIGEgdHJhbnNpdGlvbiB0YWJsZSB0aGF0IG1hcHMg YSBjb21iaW5hdGlvbgotKyAgICAqIG9mIGEgc3RhdGUgb2YgdGhlIGF1dG9tYXRvbiBhbmQgYSBj aGFyYWN0ZXIgY2xhc3MgdG8gYSBzdGF0ZS4KLSsgICAgKi8KLSsgICAwLDEyLDI0LDM2LDYwLDk2 LDg0LDEyLDEyLDEyLDQ4LDcyLCAxMiwxMiwxMiwxMiwxMiwxMiwxMiwxMiwxMiwxMiwxMiwxMiwK LSsgIDEyLCAwLDEyLDEyLDEyLDEyLDEyLCAwLDEyLCAwLDEyLDEyLCAxMiwyNCwxMiwxMiwxMiwx MiwxMiwyNCwxMiwyNCwxMiwxMiwKLSsgIDEyLDEyLDEyLDEyLDEyLDEyLDEyLDI0LDEyLDEyLDEy LDEyLCAxMiwyNCwxMiwxMiwxMiwxMiwxMiwxMiwxMiwyNCwxMiwxMiwKLSsgIDEyLDEyLDEyLDEy LDEyLDEyLDEyLDM2LDEyLDM2LDEyLDEyLCAxMiwzNiwxMiwxMiwxMiwxMiwxMiwzNiwxMiwzNiwx MiwxMiwKLSsgIDEyLDM2LDEyLDEyLDEyLDEyLDEyLDEyLDEyLDEyLDEyLDEyLAotK307Ci0rLyog Y2xhbmctZm9ybWF0IG9uICovCi0rCi0rc3RhdGljIHZvaWQgdXRmOF9kZWNvZGUodWludDMyX3Qg KnN0YXRlLCB1aW50OF90IGJ5dGUpIHsKLSsgICpzdGF0ZSA9IHV0ZjhkWzI1NiArICpzdGF0ZSAr IHV0ZjhkW2J5dGVdXTsKLSt9Ci0rCi0rLyogRW5kIG9mIHV0ZjggZGZhICovCi0rCi0rc3RhdGlj IGludCBwYXJzZXJfZGlzcHN0cmluZyhzZnBhcnNlX3BhcnNlciAqc2ZwLCBzZnBhcnNlX3ZhbHVl ICpkZXN0KSB7Ci0rICBjb25zdCB1aW50OF90ICpiYXNlOwotKyAgdWludDhfdCBjOwotKyAgdWlu dDMyX3QgdXRmOHN0YXRlID0gVVRGOF9BQ0NFUFQ7Ci0rCi0rICBhc3NlcnQoJyUnID09ICpzZnAt PnBvcyk7Ci0rCi0rICArK3NmcC0+cG9zOwotKwotKyAgaWYgKHBhcnNlcl9lb2Yoc2ZwKSB8fCAq c2ZwLT5wb3MgIT0gJyInKSB7Ci0rICAgIHJldHVybiBTRlBBUlNFX0VSUl9QQVJTRTsKLSsgIH0K LSsKLSsgIGJhc2UgPSArK3NmcC0+cG9zOwotKwotKyAgZm9yICg7ICFwYXJzZXJfZW9mKHNmcCk7 KSB7Ci0rICAgIHN3aXRjaCAoKnNmcC0+cG9zKSB7Ci0rICAgIFgwMF8xRl9DQVNFUzoKLSsgICAg WDdGX0ZGX0NBU0VTOgotKyAgICAgIHJldHVybiBTRlBBUlNFX0VSUl9QQVJTRTsKLSsgICAgY2Fz ZSAnJSc6Ci0rICAgICAgKytzZnAtPnBvczsKLSsKLSsgICAgICBpZiAoc2ZwLT5wb3MgKyAyID4g c2ZwLT5lbmQpIHsKLSsgICAgICAgIHJldHVybiBTRlBBUlNFX0VSUl9QQVJTRTsKLSsgICAgICB9 Ci0rCi0rICAgICAgaWYgKHBjdGRlY29kZSgmYywgJnNmcC0+cG9zKSAhPSAwKSB7Ci0rICAgICAg ICByZXR1cm4gU0ZQQVJTRV9FUlJfUEFSU0U7Ci0rICAgICAgfQotKwotKyAgICAgIHV0ZjhfZGVj b2RlKCZ1dGY4c3RhdGUsIGMpOwotKyAgICAgIGlmICh1dGY4c3RhdGUgPT0gVVRGOF9SRUpFQ1Qp IHsKLSsgICAgICAgIHJldHVybiBTRlBBUlNFX0VSUl9QQVJTRTsKLSsgICAgICB9Ci0rCi0rICAg ICAgYnJlYWs7Ci0rICAgIGNhc2UgJyInOgotKyAgICAgIGlmICh1dGY4c3RhdGUgIT0gVVRGOF9B Q0NFUFQpIHsKLSsgICAgICAgIHJldHVybiBTRlBBUlNFX0VSUl9QQVJTRTsKLSsgICAgICB9Ci0r Ci0rICAgICAgaWYgKGRlc3QpIHsKLSsgICAgICAgIGRlc3QtPnR5cGUgPSBTRlBBUlNFX1RZUEVf RElTUFNUUklORzsKLSsgICAgICAgIGRlc3QtPmZsYWdzID0gU0ZQQVJTRV9WQUxVRV9GTEFHX05P TkU7Ci0rICAgICAgICBkZXN0LT52ZWMubGVuID0gKHNpemVfdCkoc2ZwLT5wb3MgLSBiYXNlKTsK LSsgICAgICAgIGRlc3QtPnZlYy5iYXNlID0gZGVzdC0+dmVjLmxlbiA9PSAwID8gTlVMTCA6ICh1 aW50OF90ICopYmFzZTsKLSsgICAgICB9Ci0rCi0rICAgICAgKytzZnAtPnBvczsKLSsKLSsgICAg ICByZXR1cm4gMDsKLSsgICAgZGVmYXVsdDoKLSsgICAgICBpZiAodXRmOHN0YXRlICE9IFVURjhf QUNDRVBUKSB7Ci0rICAgICAgICByZXR1cm4gU0ZQQVJTRV9FUlJfUEFSU0U7Ci0rICAgICAgfQot KwotKyAgICAgICsrc2ZwLT5wb3M7Ci0rICAgIH0KLSsgIH0KLSsKLSsgIHJldHVybiBTRlBBUlNF X0VSUl9QQVJTRTsKLSt9Ci0rCi0rc3RhdGljIGludCBwYXJzZXJfYmFyZV9pdGVtKHNmcGFyc2Vf cGFyc2VyICpzZnAsIHNmcGFyc2VfdmFsdWUgKmRlc3QpIHsKLSAgIHN3aXRjaCAoKnNmcC0+cG9z KSB7Ci0gICBjYXNlICciJzoKLSAgICAgcmV0dXJuIHBhcnNlcl9zdHJpbmcoc2ZwLCBkZXN0KTsK LUBAIC02MTUsMjkgKzExOTUsMzIgQEAgc3RhdGljIGludCBwYXJzZXJfYmFyZV9pdGVtKHNmX3Bh cnNlciAqc2ZwLCBzZl92YWx1ZSAqZGVzdCkgewotICAgY2FzZSAnKic6Ci0gICBBTFBIQV9DQVNF UzoKLSAgICAgcmV0dXJuIHBhcnNlcl90b2tlbihzZnAsIGRlc3QpOwotKyAgY2FzZSAnJSc6Ci0r ICAgIHJldHVybiBwYXJzZXJfZGlzcHN0cmluZyhzZnAsIGRlc3QpOwotICAgZGVmYXVsdDoKLS0g ICAgcmV0dXJuIFNGX0VSUl9QQVJTRV9FUlJPUjsKLSsgICAgcmV0dXJuIFNGUEFSU0VfRVJSX1BB UlNFOwotICAgfQotIH0KLSAKLS1zdGF0aWMgaW50IHBhcnNlcl9za2lwX2lubmVyX2xpc3Qoc2Zf cGFyc2VyICpzZnApOwotK3N0YXRpYyBpbnQgcGFyc2VyX3NraXBfaW5uZXJfbGlzdChzZnBhcnNl X3BhcnNlciAqc2ZwKTsKLSAKLS1pbnQgc2ZfcGFyc2VyX3BhcmFtKHNmX3BhcnNlciAqc2ZwLCBz Zl92ZWMgKmRlc3Rfa2V5LCBzZl92YWx1ZSAqZGVzdF92YWx1ZSkgewotK2ludCBzZnBhcnNlX3Bh cnNlcl9wYXJhbShzZnBhcnNlX3BhcnNlciAqc2ZwLCBzZnBhcnNlX3ZlYyAqZGVzdF9rZXksCi0r ICAgICAgICAgICAgICAgICAgICAgICAgIHNmcGFyc2VfdmFsdWUgKmRlc3RfdmFsdWUpIHsKLSAg IGludCBydjsKLSAKLS0gIHN3aXRjaCAoc2ZwLT5zdGF0ZSAmIFNGX1NUQVRFX09QX01BU0spIHsK LS0gIGNhc2UgU0ZfU1RBVEVfQkVGT1JFOgotKyAgc3dpdGNoIChzZnAtPnN0YXRlICYgU0ZQQVJT RV9TVEFURV9PUF9NQVNLKSB7Ci0rICBjYXNlIFNGUEFSU0VfU1RBVEVfQkVGT1JFOgotICAgICBy diA9IHBhcnNlcl9za2lwX2lubmVyX2xpc3Qoc2ZwKTsKLSAgICAgaWYgKHJ2ICE9IDApIHsKLSAg ICAgICByZXR1cm4gcnY7Ci0gICAgIH0KLSAKLSAgICAgLyogZmFsbCB0aHJvdWdoICovCi0tICBj YXNlIFNGX1NUQVRFX0JFRk9SRV9QQVJBTVM6Ci0tICAgIHBhcnNlcl9zZXRfb3Bfc3RhdGUoc2Zw LCBTRl9TVEFURV9QQVJBTVMpOwotKyAgY2FzZSBTRlBBUlNFX1NUQVRFX0JFRk9SRV9QQVJBTVM6 Ci0rICAgIHBhcnNlcl9zZXRfb3Bfc3RhdGUoc2ZwLCBTRlBBUlNFX1NUQVRFX1BBUkFNUyk7Ci0g Ci0gICAgIGJyZWFrOwotLSAgY2FzZSBTRl9TVEFURV9QQVJBTVM6Ci0rICBjYXNlIFNGUEFSU0Vf U1RBVEVfUEFSQU1TOgotICAgICBicmVhazsKLSAgIGRlZmF1bHQ6Ci0gICAgIGFzc2VydCgwKTsK LUBAIC02NDUsMTYgKzEyMjgsMTYgQEAgaW50IHNmX3BhcnNlcl9wYXJhbShzZl9wYXJzZXIgKnNm cCwgc2ZfdmVjICpkZXN0X2tleSwgc2ZfdmFsdWUgKmRlc3RfdmFsdWUpIHsKLSAgIH0KLSAKLSAg IGlmIChwYXJzZXJfZW9mKHNmcCkgfHwgKnNmcC0+cG9zICE9ICc7JykgewotLSAgICBwYXJzZXJf c2V0X29wX3N0YXRlKHNmcCwgU0ZfU1RBVEVfQUZURVIpOwotKyAgICBwYXJzZXJfc2V0X29wX3N0 YXRlKHNmcCwgU0ZQQVJTRV9TVEFURV9BRlRFUik7Ci0gCi0tICAgIHJldHVybiBTRl9FUlJfRU9G OwotKyAgICByZXR1cm4gU0ZQQVJTRV9FUlJfRU9GOwotICAgfQotIAotICAgKytzZnAtPnBvczsK LSAKLSAgIHBhcnNlcl9kaXNjYXJkX3NwKHNmcCk7Ci0gICBpZiAocGFyc2VyX2VvZihzZnApKSB7 Ci0tICAgIHJldHVybiBTRl9FUlJfUEFSU0VfRVJST1I7Ci0rICAgIHJldHVybiBTRlBBUlNFX0VS Ul9QQVJTRTsKLSAgIH0KLSAKLSAgIHJ2ID0gcGFyc2VyX2tleShzZnAsIGRlc3Rfa2V5KTsKLUBA IC02NjQsOCArMTI0Nyw4IEBAIGludCBzZl9wYXJzZXJfcGFyYW0oc2ZfcGFyc2VyICpzZnAsIHNm X3ZlYyAqZGVzdF9rZXksIHNmX3ZhbHVlICpkZXN0X3ZhbHVlKSB7Ci0gCi0gICBpZiAocGFyc2Vy X2VvZihzZnApIHx8ICpzZnAtPnBvcyAhPSAnPScpIHsKLSAgICAgaWYgKGRlc3RfdmFsdWUpIHsK LS0gICAgICBkZXN0X3ZhbHVlLT50eXBlID0gU0ZfVFlQRV9CT09MRUFOOwotLSAgICAgIGRlc3Rf dmFsdWUtPmZsYWdzID0gU0ZfVkFMVUVfRkxBR19OT05FOwotKyAgICAgIGRlc3RfdmFsdWUtPnR5 cGUgPSBTRlBBUlNFX1RZUEVfQk9PTEVBTjsKLSsgICAgICBkZXN0X3ZhbHVlLT5mbGFncyA9IFNG UEFSU0VfVkFMVUVfRkxBR19OT05FOwotICAgICAgIGRlc3RfdmFsdWUtPmJvb2xlYW4gPSAxOwot ICAgICB9Ci0gCi1AQCAtNjc1LDIzICsxMjU4LDIzIEBAIGludCBzZl9wYXJzZXJfcGFyYW0oc2Zf cGFyc2VyICpzZnAsIHNmX3ZlYyAqZGVzdF9rZXksIHNmX3ZhbHVlICpkZXN0X3ZhbHVlKSB7Ci0g ICArK3NmcC0+cG9zOwotIAotICAgaWYgKHBhcnNlcl9lb2Yoc2ZwKSkgewotLSAgICByZXR1cm4g U0ZfRVJSX1BBUlNFX0VSUk9SOwotKyAgICByZXR1cm4gU0ZQQVJTRV9FUlJfUEFSU0U7Ci0gICB9 Ci0gCi0gICByZXR1cm4gcGFyc2VyX2JhcmVfaXRlbShzZnAsIGRlc3RfdmFsdWUpOwotIH0KLSAK LS1zdGF0aWMgaW50IHBhcnNlcl9za2lwX3BhcmFtcyhzZl9wYXJzZXIgKnNmcCkgewotK3N0YXRp YyBpbnQgcGFyc2VyX3NraXBfcGFyYW1zKHNmcGFyc2VfcGFyc2VyICpzZnApIHsKLSAgIGludCBy djsKLSAKLSAgIGZvciAoOzspIHsKLS0gICAgcnYgPSBzZl9wYXJzZXJfcGFyYW0oc2ZwLCBOVUxM LCBOVUxMKTsKLSsgICAgcnYgPSBzZnBhcnNlX3BhcnNlcl9wYXJhbShzZnAsIE5VTEwsIE5VTEwp OwotICAgICBzd2l0Y2ggKHJ2KSB7Ci0gICAgIGNhc2UgMDoKLSAgICAgICBicmVhazsKLS0gICAg Y2FzZSBTRl9FUlJfRU9GOgotKyAgICBjYXNlIFNGUEFSU0VfRVJSX0VPRjoKLSAgICAgICByZXR1 cm4gMDsKLS0gICAgY2FzZSBTRl9FUlJfUEFSU0VfRVJST1I6Ci0rICAgIGNhc2UgU0ZQQVJTRV9F UlJfUEFSU0U6Ci0gICAgICAgcmV0dXJuIHJ2OwotICAgICBkZWZhdWx0OgotICAgICAgIGFzc2Vy dCgwKTsKLUBAIC03MDAsNDUgKzEyODMsNDUgQEAgc3RhdGljIGludCBwYXJzZXJfc2tpcF9wYXJh bXMoc2ZfcGFyc2VyICpzZnApIHsKLSAgIH0KLSB9Ci0gCi0taW50IHNmX3BhcnNlcl9pbm5lcl9s aXN0KHNmX3BhcnNlciAqc2ZwLCBzZl92YWx1ZSAqZGVzdCkgewotK2ludCBzZnBhcnNlX3BhcnNl cl9pbm5lcl9saXN0KHNmcGFyc2VfcGFyc2VyICpzZnAsIHNmcGFyc2VfdmFsdWUgKmRlc3QpIHsK LSAgIGludCBydjsKLSAKLS0gIHN3aXRjaCAoc2ZwLT5zdGF0ZSAmIFNGX1NUQVRFX09QX01BU0sp IHsKLS0gIGNhc2UgU0ZfU1RBVEVfQkVGT1JFOgotKyAgc3dpdGNoIChzZnAtPnN0YXRlICYgU0ZQ QVJTRV9TVEFURV9PUF9NQVNLKSB7Ci0rICBjYXNlIFNGUEFSU0VfU1RBVEVfQkVGT1JFOgotICAg ICBwYXJzZXJfZGlzY2FyZF9zcChzZnApOwotICAgICBpZiAocGFyc2VyX2VvZihzZnApKSB7Ci0t ICAgICAgcmV0dXJuIFNGX0VSUl9QQVJTRV9FUlJPUjsKLSsgICAgICByZXR1cm4gU0ZQQVJTRV9F UlJfUEFSU0U7Ci0gICAgIH0KLSAKLSAgICAgYnJlYWs7Ci0tICBjYXNlIFNGX1NUQVRFX0JFRk9S RV9QQVJBTVM6Ci0rICBjYXNlIFNGUEFSU0VfU1RBVEVfQkVGT1JFX1BBUkFNUzoKLSAgICAgcnYg PSBwYXJzZXJfc2tpcF9wYXJhbXMoc2ZwKTsKLSAgICAgaWYgKHJ2ICE9IDApIHsKLSAgICAgICBy ZXR1cm4gcnY7Ci0gICAgIH0KLSAKLS0gICAgLyogVGVjaG5pY2FsbHksIHdlIGFyZSBlbnRlcmlu ZyBTRl9TVEFURV9BRlRFUiwgYnV0IHdlIHdpbGwgc2V0Ci0rICAgIC8qIFRlY2huaWNhbGx5LCB3 ZSBhcmUgZW50ZXJpbmcgU0ZQQVJTRV9TVEFURV9BRlRFUiwgYnV0IHdlIHdpbGwgc2V0Ci0gICAg ICAgIGFub3RoZXIgc3RhdGUgd2l0aG91dCByZWFkaW5nIHRoZSBzdGF0ZS4gKi8KLS0gICAgLyog cGFyc2VyX3NldF9vcF9zdGF0ZShzZnAsIFNGX1NUQVRFX0FGVEVSKTsgKi8KLSsgICAgLyogcGFy c2VyX3NldF9vcF9zdGF0ZShzZnAsIFNGUEFSU0VfU1RBVEVfQUZURVIpOyAqLwotIAotICAgICAv KiBmYWxsIHRocm91Z2ggKi8KLS0gIGNhc2UgU0ZfU1RBVEVfQUZURVI6Ci0rICBjYXNlIFNGUEFS U0VfU1RBVEVfQUZURVI6Ci0gICAgIGlmIChwYXJzZXJfZW9mKHNmcCkpIHsKLS0gICAgICByZXR1 cm4gU0ZfRVJSX1BBUlNFX0VSUk9SOwotKyAgICAgIHJldHVybiBTRlBBUlNFX0VSUl9QQVJTRTsK LSAgICAgfQotIAotICAgICBzd2l0Y2ggKCpzZnAtPnBvcykgewotICAgICBjYXNlICcgJzoKLSAg ICAgICBwYXJzZXJfZGlzY2FyZF9zcChzZnApOwotICAgICAgIGlmIChwYXJzZXJfZW9mKHNmcCkp IHsKLS0gICAgICAgIHJldHVybiBTRl9FUlJfUEFSU0VfRVJST1I7Ci0rICAgICAgICByZXR1cm4g U0ZQQVJTRV9FUlJfUEFSU0U7Ci0gICAgICAgfQotIAotICAgICAgIGJyZWFrOwotICAgICBjYXNl ICcpJzoKLSAgICAgICBicmVhazsKLSAgICAgZGVmYXVsdDoKLS0gICAgICByZXR1cm4gU0ZfRVJS X1BBUlNFX0VSUk9SOwotKyAgICAgIHJldHVybiBTRlBBUlNFX0VSUl9QQVJTRTsKLSAgICAgfQot IAotICAgICBicmVhazsKLUBAIC03NTEsOSArMTMzNCw5IEBAIGludCBzZl9wYXJzZXJfaW5uZXJf bGlzdChzZl9wYXJzZXIgKnNmcCwgc2ZfdmFsdWUgKmRlc3QpIHsKLSAgICAgKytzZnAtPnBvczsK LSAKLSAgICAgcGFyc2VyX3Vuc2V0X2lubmVyX2xpc3Rfc3RhdGUoc2ZwKTsKLS0gICAgcGFyc2Vy X3NldF9vcF9zdGF0ZShzZnAsIFNGX1NUQVRFX0JFRk9SRV9QQVJBTVMpOwotKyAgICBwYXJzZXJf c2V0X29wX3N0YXRlKHNmcCwgU0ZQQVJTRV9TVEFURV9CRUZPUkVfUEFSQU1TKTsKLSAKLS0gICAg cmV0dXJuIFNGX0VSUl9FT0Y7Ci0rICAgIHJldHVybiBTRlBBUlNFX0VSUl9FT0Y7Ci0gICB9Ci0g Ci0gICBydiA9IHBhcnNlcl9iYXJlX2l0ZW0oc2ZwLCBkZXN0KTsKLUBAIC03NjEsMjIgKzEzNDQs MjIgQEAgaW50IHNmX3BhcnNlcl9pbm5lcl9saXN0KHNmX3BhcnNlciAqc2ZwLCBzZl92YWx1ZSAq ZGVzdCkgewotICAgICByZXR1cm4gcnY7Ci0gICB9Ci0gCi0tICBwYXJzZXJfc2V0X29wX3N0YXRl KHNmcCwgU0ZfU1RBVEVfQkVGT1JFX1BBUkFNUyk7Ci0rICBwYXJzZXJfc2V0X29wX3N0YXRlKHNm cCwgU0ZQQVJTRV9TVEFURV9CRUZPUkVfUEFSQU1TKTsKLSAKLSAgIHJldHVybiAwOwotIH0KLSAK LS1zdGF0aWMgaW50IHBhcnNlcl9za2lwX2lubmVyX2xpc3Qoc2ZfcGFyc2VyICpzZnApIHsKLStz dGF0aWMgaW50IHBhcnNlcl9za2lwX2lubmVyX2xpc3Qoc2ZwYXJzZV9wYXJzZXIgKnNmcCkgewot ICAgaW50IHJ2OwotIAotICAgZm9yICg7OykgewotLSAgICBydiA9IHNmX3BhcnNlcl9pbm5lcl9s aXN0KHNmcCwgTlVMTCk7Ci0rICAgIHJ2ID0gc2ZwYXJzZV9wYXJzZXJfaW5uZXJfbGlzdChzZnAs IE5VTEwpOwotICAgICBzd2l0Y2ggKHJ2KSB7Ci0gICAgIGNhc2UgMDoKLSAgICAgICBicmVhazsK LS0gICAgY2FzZSBTRl9FUlJfRU9GOgotKyAgICBjYXNlIFNGUEFSU0VfRVJSX0VPRjoKLSAgICAg ICByZXR1cm4gMDsKLS0gICAgY2FzZSBTRl9FUlJfUEFSU0VfRVJST1I6Ci0rICAgIGNhc2UgU0ZQ QVJTRV9FUlJfUEFSU0U6Ci0gICAgICAgcmV0dXJuIHJ2OwotICAgICBkZWZhdWx0OgotICAgICAg IGFzc2VydCgwKTsKLUBAIC03ODUsMzkgKzEzNjgsMzkgQEAgc3RhdGljIGludCBwYXJzZXJfc2tp cF9pbm5lcl9saXN0KHNmX3BhcnNlciAqc2ZwKSB7Ci0gICB9Ci0gfQotIAotLXN0YXRpYyBpbnQg cGFyc2VyX25leHRfa2V5X29yX2l0ZW0oc2ZfcGFyc2VyICpzZnApIHsKLStzdGF0aWMgaW50IHBh cnNlcl9uZXh0X2tleV9vcl9pdGVtKHNmcGFyc2VfcGFyc2VyICpzZnApIHsKLSAgIHBhcnNlcl9k aXNjYXJkX293cyhzZnApOwotIAotICAgaWYgKHBhcnNlcl9lb2Yoc2ZwKSkgewotLSAgICByZXR1 cm4gU0ZfRVJSX0VPRjsKLSsgICAgcmV0dXJuIFNGUEFSU0VfRVJSX0VPRjsKLSAgIH0KLSAKLSAg IGlmICgqc2ZwLT5wb3MgIT0gJywnKSB7Ci0tICAgIHJldHVybiBTRl9FUlJfUEFSU0VfRVJST1I7 Ci0rICAgIHJldHVybiBTRlBBUlNFX0VSUl9QQVJTRTsKLSAgIH0KLSAKLSAgICsrc2ZwLT5wb3M7 Ci0gCi0gICBwYXJzZXJfZGlzY2FyZF9vd3Moc2ZwKTsKLSAgIGlmIChwYXJzZXJfZW9mKHNmcCkp IHsKLS0gICAgcmV0dXJuIFNGX0VSUl9QQVJTRV9FUlJPUjsKLSsgICAgcmV0dXJuIFNGUEFSU0Vf RVJSX1BBUlNFOwotICAgfQotIAotICAgcmV0dXJuIDA7Ci0gfQotIAotLXN0YXRpYyBpbnQgcGFy c2VyX2RpY3RfdmFsdWUoc2ZfcGFyc2VyICpzZnAsIHNmX3ZhbHVlICpkZXN0KSB7Ci0rc3RhdGlj IGludCBwYXJzZXJfZGljdF92YWx1ZShzZnBhcnNlX3BhcnNlciAqc2ZwLCBzZnBhcnNlX3ZhbHVl ICpkZXN0KSB7Ci0gICBpbnQgcnY7Ci0gCi0gICBpZiAocGFyc2VyX2VvZihzZnApIHx8ICooc2Zw LT5wb3MpICE9ICc9JykgewotICAgICAvKiBCb29sZWFuIHRydWUgKi8KLSAgICAgaWYgKGRlc3Qp IHsKLS0gICAgICBkZXN0LT50eXBlID0gU0ZfVFlQRV9CT09MRUFOOwotLSAgICAgIGRlc3QtPmZs YWdzID0gU0ZfVkFMVUVfRkxBR19OT05FOwotKyAgICAgIGRlc3QtPnR5cGUgPSBTRlBBUlNFX1RZ UEVfQk9PTEVBTjsKLSsgICAgICBkZXN0LT5mbGFncyA9IFNGUEFSU0VfVkFMVUVfRkxBR19OT05F OwotICAgICAgIGRlc3QtPmJvb2xlYW4gPSAxOwotICAgICB9Ci0gCi0tICAgIHNmcC0+c3RhdGUg PSBTRl9TVEFURV9ESUNUX0JFRk9SRV9QQVJBTVM7Ci0rICAgIHNmcC0+c3RhdGUgPSBTRlBBUlNF X1NUQVRFX0RJQ1RfQkVGT1JFX1BBUkFNUzsKLSAKLSAgICAgcmV0dXJuIDA7Ci0gICB9Ci1AQCAt ODI1LDE4ICsxNDA4LDE4IEBAIHN0YXRpYyBpbnQgcGFyc2VyX2RpY3RfdmFsdWUoc2ZfcGFyc2Vy ICpzZnAsIHNmX3ZhbHVlICpkZXN0KSB7Ci0gICArK3NmcC0+cG9zOwotIAotICAgaWYgKHBhcnNl cl9lb2Yoc2ZwKSkgewotLSAgICByZXR1cm4gU0ZfRVJSX1BBUlNFX0VSUk9SOwotKyAgICByZXR1 cm4gU0ZQQVJTRV9FUlJfUEFSU0U7Ci0gICB9Ci0gCi0gICBpZiAoKnNmcC0+cG9zID09ICcoJykg ewotICAgICBpZiAoZGVzdCkgewotLSAgICAgIGRlc3QtPnR5cGUgPSBTRl9UWVBFX0lOTkVSX0xJ U1Q7Ci0tICAgICAgZGVzdC0+ZmxhZ3MgPSBTRl9WQUxVRV9GTEFHX05PTkU7Ci0rICAgICAgZGVz dC0+dHlwZSA9IFNGUEFSU0VfVFlQRV9JTk5FUl9MSVNUOwotKyAgICAgIGRlc3QtPmZsYWdzID0g U0ZQQVJTRV9WQUxVRV9GTEFHX05PTkU7Ci0gICAgIH0KLSAKLSAgICAgKytzZnAtPnBvczsKLSAK LS0gICAgc2ZwLT5zdGF0ZSA9IFNGX1NUQVRFX0RJQ1RfSU5ORVJfTElTVF9CRUZPUkU7Ci0rICAg IHNmcC0+c3RhdGUgPSBTRlBBUlNFX1NUQVRFX0RJQ1RfSU5ORVJfTElTVF9CRUZPUkU7Ci0gCi0g ICAgIHJldHVybiAwOwotICAgfQotQEAgLTg0Niw0MSArMTQyOSw0MiBAQCBzdGF0aWMgaW50IHBh cnNlcl9kaWN0X3ZhbHVlKHNmX3BhcnNlciAqc2ZwLCBzZl92YWx1ZSAqZGVzdCkgewotICAgICBy ZXR1cm4gcnY7Ci0gICB9Ci0gCi0tICBzZnAtPnN0YXRlID0gU0ZfU1RBVEVfRElDVF9CRUZPUkVf UEFSQU1TOwotKyAgc2ZwLT5zdGF0ZSA9IFNGUEFSU0VfU1RBVEVfRElDVF9CRUZPUkVfUEFSQU1T OwotIAotICAgcmV0dXJuIDA7Ci0gfQotIAotLWludCBzZl9wYXJzZXJfZGljdChzZl9wYXJzZXIg KnNmcCwgc2ZfdmVjICpkZXN0X2tleSwgc2ZfdmFsdWUgKmRlc3RfdmFsdWUpIHsKLStpbnQgc2Zw YXJzZV9wYXJzZXJfZGljdChzZnBhcnNlX3BhcnNlciAqc2ZwLCBzZnBhcnNlX3ZlYyAqZGVzdF9r ZXksCi0rICAgICAgICAgICAgICAgICAgICAgICAgc2ZwYXJzZV92YWx1ZSAqZGVzdF92YWx1ZSkg ewotICAgaW50IHJ2OwotIAotICAgc3dpdGNoIChzZnAtPnN0YXRlKSB7Ci0tICBjYXNlIFNGX1NU QVRFX0RJQ1RfSU5ORVJfTElTVF9CRUZPUkU6Ci0rICBjYXNlIFNGUEFSU0VfU1RBVEVfRElDVF9J Tk5FUl9MSVNUX0JFRk9SRToKLSAgICAgcnYgPSBwYXJzZXJfc2tpcF9pbm5lcl9saXN0KHNmcCk7 Ci0gICAgIGlmIChydiAhPSAwKSB7Ci0gICAgICAgcmV0dXJuIHJ2OwotICAgICB9Ci0gCi0gICAg IC8qIGZhbGwgdGhyb3VnaCAqLwotLSAgY2FzZSBTRl9TVEFURV9ESUNUX0JFRk9SRV9QQVJBTVM6 Ci0rICBjYXNlIFNGUEFSU0VfU1RBVEVfRElDVF9CRUZPUkVfUEFSQU1TOgotICAgICBydiA9IHBh cnNlcl9za2lwX3BhcmFtcyhzZnApOwotICAgICBpZiAocnYgIT0gMCkgewotICAgICAgIHJldHVy biBydjsKLSAgICAgfQotIAotICAgICAvKiBmYWxsIHRocm91Z2ggKi8KLS0gIGNhc2UgU0ZfU1RB VEVfRElDVF9BRlRFUjoKLSsgIGNhc2UgU0ZQQVJTRV9TVEFURV9ESUNUX0FGVEVSOgotICAgICBy diA9IHBhcnNlcl9uZXh0X2tleV9vcl9pdGVtKHNmcCk7Ci0gICAgIGlmIChydiAhPSAwKSB7Ci0g ICAgICAgcmV0dXJuIHJ2OwotICAgICB9Ci0gCi0gICAgIGJyZWFrOwotLSAgY2FzZSBTRl9TVEFU RV9JTklUSUFMOgotKyAgY2FzZSBTRlBBUlNFX1NUQVRFX0lOSVRJQUw6Ci0gICAgIHBhcnNlcl9k aXNjYXJkX3NwKHNmcCk7Ci0gCi0gICAgIGlmIChwYXJzZXJfZW9mKHNmcCkpIHsKLS0gICAgICBy ZXR1cm4gU0ZfRVJSX0VPRjsKLSsgICAgICByZXR1cm4gU0ZQQVJTRV9FUlJfRU9GOwotICAgICB9 Ci0gCi0gICAgIGJyZWFrOwotQEAgLTg5NywzNiArMTQ4MSwzNiBAQCBpbnQgc2ZfcGFyc2VyX2Rp Y3Qoc2ZfcGFyc2VyICpzZnAsIHNmX3ZlYyAqZGVzdF9rZXksIHNmX3ZhbHVlICpkZXN0X3ZhbHVl KSB7Ci0gICByZXR1cm4gcGFyc2VyX2RpY3RfdmFsdWUoc2ZwLCBkZXN0X3ZhbHVlKTsKLSB9Ci0g Ci0taW50IHNmX3BhcnNlcl9saXN0KHNmX3BhcnNlciAqc2ZwLCBzZl92YWx1ZSAqZGVzdCkgewot K2ludCBzZnBhcnNlX3BhcnNlcl9saXN0KHNmcGFyc2VfcGFyc2VyICpzZnAsIHNmcGFyc2VfdmFs dWUgKmRlc3QpIHsKLSAgIGludCBydjsKLSAKLSAgIHN3aXRjaCAoc2ZwLT5zdGF0ZSkgewotLSAg Y2FzZSBTRl9TVEFURV9MSVNUX0lOTkVSX0xJU1RfQkVGT1JFOgotKyAgY2FzZSBTRlBBUlNFX1NU QVRFX0xJU1RfSU5ORVJfTElTVF9CRUZPUkU6Ci0gICAgIHJ2ID0gcGFyc2VyX3NraXBfaW5uZXJf bGlzdChzZnApOwotICAgICBpZiAocnYgIT0gMCkgewotICAgICAgIHJldHVybiBydjsKLSAgICAg fQotIAotICAgICAvKiBmYWxsIHRocm91Z2ggKi8KLS0gIGNhc2UgU0ZfU1RBVEVfTElTVF9CRUZP UkVfUEFSQU1TOgotKyAgY2FzZSBTRlBBUlNFX1NUQVRFX0xJU1RfQkVGT1JFX1BBUkFNUzoKLSAg ICAgcnYgPSBwYXJzZXJfc2tpcF9wYXJhbXMoc2ZwKTsKLSAgICAgaWYgKHJ2ICE9IDApIHsKLSAg ICAgICByZXR1cm4gcnY7Ci0gICAgIH0KLSAKLSAgICAgLyogZmFsbCB0aHJvdWdoICovCi0tICBj YXNlIFNGX1NUQVRFX0xJU1RfQUZURVI6Ci0rICBjYXNlIFNGUEFSU0VfU1RBVEVfTElTVF9BRlRF UjoKLSAgICAgcnYgPSBwYXJzZXJfbmV4dF9rZXlfb3JfaXRlbShzZnApOwotICAgICBpZiAocnYg IT0gMCkgewotICAgICAgIHJldHVybiBydjsKLSAgICAgfQotIAotICAgICBicmVhazsKLS0gIGNh c2UgU0ZfU1RBVEVfSU5JVElBTDoKLSsgIGNhc2UgU0ZQQVJTRV9TVEFURV9JTklUSUFMOgotICAg ICBwYXJzZXJfZGlzY2FyZF9zcChzZnApOwotIAotICAgICBpZiAocGFyc2VyX2VvZihzZnApKSB7 Ci0tICAgICAgcmV0dXJuIFNGX0VSUl9FT0Y7Ci0rICAgICAgcmV0dXJuIFNGUEFSU0VfRVJSX0VP RjsKLSAgICAgfQotIAotICAgICBicmVhazsKLUBAIC05MzcsMTMgKzE1MjEsMTMgQEAgaW50IHNm X3BhcnNlcl9saXN0KHNmX3BhcnNlciAqc2ZwLCBzZl92YWx1ZSAqZGVzdCkgewotIAotICAgaWYg KCpzZnAtPnBvcyA9PSAnKCcpIHsKLSAgICAgaWYgKGRlc3QpIHsKLS0gICAgICBkZXN0LT50eXBl ID0gU0ZfVFlQRV9JTk5FUl9MSVNUOwotLSAgICAgIGRlc3QtPmZsYWdzID0gU0ZfVkFMVUVfRkxB R19OT05FOwotKyAgICAgIGRlc3QtPnR5cGUgPSBTRlBBUlNFX1RZUEVfSU5ORVJfTElTVDsKLSsg ICAgICBkZXN0LT5mbGFncyA9IFNGUEFSU0VfVkFMVUVfRkxBR19OT05FOwotICAgICB9Ci0gCi0g ICAgICsrc2ZwLT5wb3M7Ci0gCi0tICAgIHNmcC0+c3RhdGUgPSBTRl9TVEFURV9MSVNUX0lOTkVS X0xJU1RfQkVGT1JFOwotKyAgICBzZnAtPnN0YXRlID0gU0ZQQVJTRV9TVEFURV9MSVNUX0lOTkVS X0xJU1RfQkVGT1JFOwotIAotICAgICByZXR1cm4gMDsKLSAgIH0KLUBAIC05NTMsNDUgKzE1Mzcs NDUgQEAgaW50IHNmX3BhcnNlcl9saXN0KHNmX3BhcnNlciAqc2ZwLCBzZl92YWx1ZSAqZGVzdCkg ewotICAgICByZXR1cm4gcnY7Ci0gICB9Ci0gCi0tICBzZnAtPnN0YXRlID0gU0ZfU1RBVEVfTElT VF9CRUZPUkVfUEFSQU1TOwotKyAgc2ZwLT5zdGF0ZSA9IFNGUEFSU0VfU1RBVEVfTElTVF9CRUZP UkVfUEFSQU1TOwotIAotICAgcmV0dXJuIDA7Ci0gfQotIAotLWludCBzZl9wYXJzZXJfaXRlbShz Zl9wYXJzZXIgKnNmcCwgc2ZfdmFsdWUgKmRlc3QpIHsKLStpbnQgc2ZwYXJzZV9wYXJzZXJfaXRl bShzZnBhcnNlX3BhcnNlciAqc2ZwLCBzZnBhcnNlX3ZhbHVlICpkZXN0KSB7Ci0gICBpbnQgcnY7 Ci0gCi0gICBzd2l0Y2ggKHNmcC0+c3RhdGUpIHsKLS0gIGNhc2UgU0ZfU1RBVEVfSU5JVElBTDoK LSsgIGNhc2UgU0ZQQVJTRV9TVEFURV9JTklUSUFMOgotICAgICBwYXJzZXJfZGlzY2FyZF9zcChz ZnApOwotIAotICAgICBpZiAocGFyc2VyX2VvZihzZnApKSB7Ci0tICAgICAgcmV0dXJuIFNGX0VS Ul9QQVJTRV9FUlJPUjsKLSsgICAgICByZXR1cm4gU0ZQQVJTRV9FUlJfUEFSU0U7Ci0gICAgIH0K LSAKLSAgICAgYnJlYWs7Ci0tICBjYXNlIFNGX1NUQVRFX0lURU1fSU5ORVJfTElTVF9CRUZPUkU6 Ci0rICBjYXNlIFNGUEFSU0VfU1RBVEVfSVRFTV9JTk5FUl9MSVNUX0JFRk9SRToKLSAgICAgcnYg PSBwYXJzZXJfc2tpcF9pbm5lcl9saXN0KHNmcCk7Ci0gICAgIGlmIChydiAhPSAwKSB7Ci0gICAg ICAgcmV0dXJuIHJ2OwotICAgICB9Ci0gCi0gICAgIC8qIGZhbGwgdGhyb3VnaCAqLwotLSAgY2Fz ZSBTRl9TVEFURV9JVEVNX0JFRk9SRV9QQVJBTVM6Ci0rICBjYXNlIFNGUEFSU0VfU1RBVEVfSVRF TV9CRUZPUkVfUEFSQU1TOgotICAgICBydiA9IHBhcnNlcl9za2lwX3BhcmFtcyhzZnApOwotICAg ICBpZiAocnYgIT0gMCkgewotICAgICAgIHJldHVybiBydjsKLSAgICAgfQotIAotICAgICAvKiBm YWxsIHRocm91Z2ggKi8KLS0gIGNhc2UgU0ZfU1RBVEVfSVRFTV9BRlRFUjoKLSsgIGNhc2UgU0ZQ QVJTRV9TVEFURV9JVEVNX0FGVEVSOgotICAgICBwYXJzZXJfZGlzY2FyZF9zcChzZnApOwotIAot ICAgICBpZiAoIXBhcnNlcl9lb2Yoc2ZwKSkgewotLSAgICAgIHJldHVybiBTRl9FUlJfUEFSU0Vf RVJST1I7Ci0rICAgICAgcmV0dXJuIFNGUEFSU0VfRVJSX1BBUlNFOwotICAgICB9Ci0gCi0tICAg IHJldHVybiBTRl9FUlJfRU9GOwotKyAgICByZXR1cm4gU0ZQQVJTRV9FUlJfRU9GOwotICAgZGVm YXVsdDoKLSAgICAgYXNzZXJ0KDApOwotICAgICBhYm9ydCgpOwotQEAgLTk5OSwxMyArMTU4Mywx MyBAQCBpbnQgc2ZfcGFyc2VyX2l0ZW0oc2ZfcGFyc2VyICpzZnAsIHNmX3ZhbHVlICpkZXN0KSB7 Ci0gCi0gICBpZiAoKnNmcC0+cG9zID09ICcoJykgewotICAgICBpZiAoZGVzdCkgewotLSAgICAg IGRlc3QtPnR5cGUgPSBTRl9UWVBFX0lOTkVSX0xJU1Q7Ci0tICAgICAgZGVzdC0+ZmxhZ3MgPSBT Rl9WQUxVRV9GTEFHX05PTkU7Ci0rICAgICAgZGVzdC0+dHlwZSA9IFNGUEFSU0VfVFlQRV9JTk5F Ul9MSVNUOwotKyAgICAgIGRlc3QtPmZsYWdzID0gU0ZQQVJTRV9WQUxVRV9GTEFHX05PTkU7Ci0g ICAgIH0KLSAKLSAgICAgKytzZnAtPnBvczsKLSAKLS0gICAgc2ZwLT5zdGF0ZSA9IFNGX1NUQVRF X0lURU1fSU5ORVJfTElTVF9CRUZPUkU7Ci0rICAgIHNmcC0+c3RhdGUgPSBTRlBBUlNFX1NUQVRF X0lURU1fSU5ORVJfTElTVF9CRUZPUkU7Ci0gCi0gICAgIHJldHVybiAwOwotICAgfQotQEAgLTEw MTUsMTIgKzE1OTksMTMgQEAgaW50IHNmX3BhcnNlcl9pdGVtKHNmX3BhcnNlciAqc2ZwLCBzZl92 YWx1ZSAqZGVzdCkgewotICAgICByZXR1cm4gcnY7Ci0gICB9Ci0gCi0tICBzZnAtPnN0YXRlID0g U0ZfU1RBVEVfSVRFTV9CRUZPUkVfUEFSQU1TOwotKyAgc2ZwLT5zdGF0ZSA9IFNGUEFSU0VfU1RB VEVfSVRFTV9CRUZPUkVfUEFSQU1TOwotIAotICAgcmV0dXJuIDA7Ci0gfQotIAotLXZvaWQgc2Zf cGFyc2VyX2luaXQoc2ZfcGFyc2VyICpzZnAsIGNvbnN0IHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBk YXRhbGVuKSB7Ci0rdm9pZCBzZnBhcnNlX3BhcnNlcl9pbml0KHNmcGFyc2VfcGFyc2VyICpzZnAs IGNvbnN0IHVpbnQ4X3QgKmRhdGEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBk YXRhbGVuKSB7Ci0gICBpZiAoZGF0YWxlbiA9PSAwKSB7Ci0gICAgIHNmcC0+cG9zID0gc2ZwLT5l bmQgPSBOVUxMOwotICAgfSBlbHNlIHsKLUBAIC0xMDI4LDE2ICsxNjEzLDE2IEBAIHZvaWQgc2Zf cGFyc2VyX2luaXQoc2ZfcGFyc2VyICpzZnAsIGNvbnN0IHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBk YXRhbGVuKSB7Ci0gICAgIHNmcC0+ZW5kID0gZGF0YSArIGRhdGFsZW47Ci0gICB9Ci0gCi0tICBz ZnAtPnN0YXRlID0gU0ZfU1RBVEVfSU5JVElBTDsKLSsgIHNmcC0+c3RhdGUgPSBTRlBBUlNFX1NU QVRFX0lOSVRJQUw7Ci0gfQotIAotLXZvaWQgc2ZfdW5lc2NhcGUoc2ZfdmVjICpkZXN0LCBjb25z dCBzZl92ZWMgKnNyYykgewotK3ZvaWQgc2ZwYXJzZV91bmVzY2FwZShzZnBhcnNlX3ZlYyAqZGVz dCwgY29uc3Qgc2ZwYXJzZV92ZWMgKnNyYykgewotICAgY29uc3QgdWludDhfdCAqcCwgKnE7Ci0g ICB1aW50OF90ICpvOwotICAgc2l6ZV90IGxlbiwgc2xlbjsKLSAKLSAgIGlmIChzcmMtPmxlbiA9 PSAwKSB7Ci0tICAgICpkZXN0ID0gKnNyYzsKLSsgICAgZGVzdC0+bGVuID0gMDsKLSAKLSAgICAg cmV0dXJuOwotICAgfQotQEAgLTEwNDksMTYgKzE2MzQsMTIgQEAgdm9pZCBzZl91bmVzY2FwZShz Zl92ZWMgKmRlc3QsIGNvbnN0IHNmX3ZlYyAqc3JjKSB7Ci0gICBmb3IgKDs7KSB7Ci0gICAgIHEg PSBtZW1jaHIocCwgJ1xcJywgbGVuKTsKLSAgICAgaWYgKHEgPT0gTlVMTCkgewotLSAgICAgIGlm IChsZW4gPT0gc3JjLT5sZW4pIHsKLS0gICAgICAgICpkZXN0ID0gKnNyYzsKLS0KLS0gICAgICAg IHJldHVybjsKLS0gICAgICB9Ci0tCi0gICAgICAgbWVtY3B5KG8sIHAsIGxlbik7Ci0gICAgICAg byArPSBsZW47Ci0gCi0tICAgICAgYnJlYWs7Ci0rICAgICAgZGVzdC0+bGVuID0gKHNpemVfdCko byAtIGRlc3QtPmJhc2UpOwotKwotKyAgICAgIHJldHVybjsKLSAgICAgfQotIAotICAgICBzbGVu ID0gKHNpemVfdCkocSAtIHApOwotQEAgLTEwNjksMTEgKzE2NTAsOSBAQCB2b2lkIHNmX3VuZXNj YXBlKHNmX3ZlYyAqZGVzdCwgY29uc3Qgc2ZfdmVjICpzcmMpIHsKLSAgICAgKm8rKyA9ICpwKys7 Ci0gICAgIGxlbiAtPSBzbGVuICsgMjsKLSAgIH0KLS0KLS0gIGRlc3QtPmxlbiA9IChzaXplX3Qp KG8gLSBkZXN0LT5iYXNlKTsKLSB9Ci0gCi0tdm9pZCBzZl9iYXNlNjRkZWNvZGUoc2ZfdmVjICpk ZXN0LCBjb25zdCBzZl92ZWMgKnNyYykgewotK3ZvaWQgc2ZwYXJzZV9iYXNlNjRkZWNvZGUoc2Zw YXJzZV92ZWMgKmRlc3QsIGNvbnN0IHNmcGFyc2VfdmVjICpzcmMpIHsKLSAgIHN0YXRpYyBjb25z dCBpbnQgaW5kZXhfdGJsW10gPSB7Ci0gICAgIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAt MSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLAotICAgICAtMSwg LTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAt MSwgLTEsIC0xLCAtMSwKLUBAIC0xMDkyLDIwICsxNjcxLDIyIEBAIHZvaWQgc2ZfYmFzZTY0ZGVj b2RlKHNmX3ZlYyAqZGVzdCwgY29uc3Qgc2ZfdmVjICpzcmMpIHsKLSAgIHVpbnQ4X3QgKm87Ci0g ICBjb25zdCB1aW50OF90ICpwLCAqZW5kOwotICAgdWludDMyX3QgbjsKLS0gIHNpemVfdCBpOwot KyAgc2l6ZV90IGksIGxlZnQ7Ci0gICBpbnQgaWR4OwotIAotLSAgYXNzZXJ0KChzcmMtPmxlbiAm IDB4MykgPT0gMCk7Ci0tCi0gICBpZiAoc3JjLT5sZW4gPT0gMCkgewotLSAgICAqZGVzdCA9ICpz cmM7Ci0rICAgIGRlc3QtPmxlbiA9IDA7Ci0gCi0gICAgIHJldHVybjsKLSAgIH0KLSAKLSAgIG8g PSBkZXN0LT5iYXNlOwotICAgcCA9IHNyYy0+YmFzZTsKLS0gIGVuZCA9IHNyYy0+YmFzZSArIHNy Yy0+bGVuOwotKyAgbGVmdCA9IHNyYy0+bGVuICYgMHgzOwotKyAgaWYgKGxlZnQgPT0gMCAmJiBz cmMtPmJhc2Vbc3JjLT5sZW4gLSAxXSA9PSAnPScpIHsKLSsgICAgbGVmdCA9IDQ7Ci0rICB9Ci0r ICBlbmQgPSBzcmMtPmJhc2UgKyBzcmMtPmxlbiAtIGxlZnQ7Ci0gCi0gICBmb3IgKDsgcCAhPSBl bmQ7KSB7Ci0gICAgIG4gPSAwOwotQEAgLTExMTMsMzMgKzE2OTQsOTQgQEAgdm9pZCBzZl9iYXNl NjRkZWNvZGUoc2ZfdmVjICpkZXN0LCBjb25zdCBzZl92ZWMgKnNyYykgewotICAgICBmb3IgKGkg PSAxOyBpIDw9IDQ7ICsraSwgKytwKSB7Ci0gICAgICAgaWR4ID0gaW5kZXhfdGJsWypwXTsKLSAK LS0gICAgICBpZiAoaWR4ID09IC0xKSB7Ci0tICAgICAgICBhc3NlcnQoaSA+IDIpOwotKyAgICAg IGFzc2VydChpZHggIT0gLTEpOwotIAotLSAgICAgICAgaWYgKGkgPT0gMykgewotLSAgICAgICAg ICBhc3NlcnQoKnAgPT0gJz0nICYmICoocCArIDEpID09ICc9JyAmJiBwICsgMiA9PSBlbmQpOwot KyAgICAgIG4gKz0gKHVpbnQzMl90KShpZHggPDwgKDI0IC0gaSAqIDYpKTsKLSsgICAgfQotIAot LSAgICAgICAgICAqbysrID0gKHVpbnQ4X3QpKG4gPj4gMTYpOwotKyAgICAqbysrID0gKHVpbnQ4 X3QpKG4gPj4gMTYpOwotKyAgICAqbysrID0gKG4gPj4gOCkgJiAweGZmdTsKLSsgICAgKm8rKyA9 IG4gJiAweGZmdTsKLSsgIH0KLSAKLS0gICAgICAgICAgZ290byBmaW47Ci0tICAgICAgICB9Ci0r ICBzd2l0Y2ggKGxlZnQpIHsKLSsgIGNhc2UgMDoKLSsgICAgZ290byBmaW47Ci0rICBjYXNlIDE6 Ci0rICAgIGFzc2VydCgwKTsKLSsgICAgYWJvcnQoKTsKLSsgIGNhc2UgMzoKLSsgICAgaWYgKHNy Yy0+YmFzZVtzcmMtPmxlbiAtIDFdID09ICc9JykgewotKyAgICAgIGxlZnQgPSAyOwotKyAgICB9 Ci0gCi0tICAgICAgICBhc3NlcnQoKnAgPT0gJz0nICYmIHAgKyAxID09IGVuZCk7Ci0rICAgIGJy ZWFrOwotKyAgY2FzZSA0OgotKyAgICBhc3NlcnQoJz0nID09IHNyYy0+YmFzZVtzcmMtPmxlbiAt IDFdKTsKLSAKLS0gICAgICAgICpvKysgPSAodWludDhfdCkobiA+PiAxNik7Ci0tICAgICAgICAq bysrID0gKG4gPj4gOCkgJiAweGZmdTsKLSsgICAgaWYgKHNyYy0+YmFzZVtzcmMtPmxlbiAtIDJd ID09ICc9JykgewotKyAgICAgIGxlZnQgPSAyOwotKyAgICB9IGVsc2UgewotKyAgICAgIGxlZnQg PSAzOwotKyAgICB9Ci0gCi0tICAgICAgICBnb3RvIGZpbjsKLS0gICAgICB9Ci0rICAgIGJyZWFr OwotKyAgfQotIAotLSAgICAgIG4gKz0gKHVpbnQzMl90KShpZHggPDwgKDI0IC0gaSAqIDYpKTsK LS0gICAgfQotKyAgc3dpdGNoIChsZWZ0KSB7Ci0rICBjYXNlIDI6Ci0rICAgICpvID0gKHVpbnQ4 X3QpKGluZGV4X3RibFsqcCsrXSA8PCAyKTsKLSsgICAgKm8rKyB8PSAodWludDhfdCkoaW5kZXhf dGJsWypwKytdID4+IDQpOwotIAotLSAgICAqbysrID0gKHVpbnQ4X3QpKG4gPj4gMTYpOwotKyAg ICBicmVhazsKLSsgIGNhc2UgMzoKLSsgICAgbiA9ICh1aW50MzJfdCkoaW5kZXhfdGJsWypwKytd IDw8IDEwKTsKLSsgICAgbiArPSAodWludDMyX3QpKGluZGV4X3RibFsqcCsrXSA8PCA0KTsKLSsg ICAgbiArPSAodWludDMyX3QpKGluZGV4X3RibFsqcCsrXSA+PiAyKTsKLSAgICAgKm8rKyA9IChu ID4+IDgpICYgMHhmZnU7Ci0gICAgICpvKysgPSBuICYgMHhmZnU7Ci0rCi0rICAgIGJyZWFrOwot ICAgfQotIAotIGZpbjoKLSAgIGRlc3QtPmxlbiA9IChzaXplX3QpKG8gLSBkZXN0LT5iYXNlKTsK LSB9Ci0rCi0rdm9pZCBzZnBhcnNlX3BjdGRlY29kZShzZnBhcnNlX3ZlYyAqZGVzdCwgY29uc3Qg c2ZwYXJzZV92ZWMgKnNyYykgewotKyAgY29uc3QgdWludDhfdCAqcCwgKnE7Ci0rICB1aW50OF90 ICpvOwotKyAgc2l6ZV90IGxlbiwgc2xlbjsKLSsKLSsgIGlmIChzcmMtPmxlbiA9PSAwKSB7Ci0r ICAgIGRlc3QtPmxlbiA9IDA7Ci0rCi0rICAgIHJldHVybjsKLSsgIH0KLSsKLSsgIG8gPSBkZXN0 LT5iYXNlOwotKyAgcCA9IHNyYy0+YmFzZTsKLSsgIGxlbiA9IHNyYy0+bGVuOwotKwotKyAgZm9y ICg7OykgewotKyAgICBxID0gbWVtY2hyKHAsICclJywgbGVuKTsKLSsgICAgaWYgKHEgPT0gTlVM TCkgewotKyAgICAgIG1lbWNweShvLCBwLCBsZW4pOwotKyAgICAgIG8gKz0gbGVuOwotKwotKyAg ICAgIGRlc3QtPmxlbiA9IChzaXplX3QpKG8gLSBkZXN0LT5iYXNlKTsKLSsKLSsgICAgICByZXR1 cm47Ci0rICAgIH0KLSsKLSsgICAgc2xlbiA9IChzaXplX3QpKHEgLSBwKTsKLSsgICAgbWVtY3B5 KG8sIHAsIHNsZW4pOwotKyAgICBvICs9IHNsZW47Ci0rCi0rICAgIHAgPSBxICsgMTsKLSsKLSsg ICAgcGN0ZGVjb2RlKG8rKywgJnApOwotKwotKyAgICBsZW4gLT0gc2xlbiArIDM7Ci0rICB9Ci0r fQotZGlmZiAtLWdpdCBhL2RlcHMvbmdodHRwMi9saWIvc2ZwYXJzZS5oIGIvZGVwcy9uZ2h0dHAy L2xpYi9zZnBhcnNlLmgKLWluZGV4IDE0NzRkYjE0Li45MzQxMjIxYSAxMDA2NDQKLS0tLSBhL2Rl cHMvbmdodHRwMi9saWIvc2ZwYXJzZS5oCi0rKysgYi9kZXBzL25naHR0cDIvbGliL3NmcGFyc2Uu aAotQEAgLTMxLDg2ICszMSw5MCBAQAotICAgIGxpYmN1cmwpICovCi0gI2lmIChkZWZpbmVkKF9X SU4zMikgfHwgZGVmaW5lZChfX1dJTjMyX18pKSAmJiAhZGVmaW5lZChXSU4zMikKLSAjICBkZWZp bmUgV0lOMzIKLS0jZW5kaWYKLSsjZW5kaWYgLyogKGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVk KF9fV0lOMzJfXykpICYmICFkZWZpbmVkKFdJTjMyKSAqLwotIAotICNpZmRlZiBfX2NwbHVzcGx1 cwotIGV4dGVybiAiQyIgewotLSNlbmRpZgotKyNlbmRpZiAvKiBkZWZpbmVkKF9fY3BsdXNwbHVz KSAqLwotIAotICNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPCAxODAwKQotIC8q IE1TVkMgPCAyMDEzIGRvZXMgbm90IGhhdmUgaW50dHlwZXMuaCBiZWNhdXNlIGl0IGlzIG5vdCBD OTkKLSAgICBjb21wbGlhbnQuICBTZWUgY29tcGlsZXIgbWFjcm9zIGFuZCB2ZXJzaW9uIG51bWJl ciBpbgotICAgIGh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3AvcHJlZGVmL3dpa2kvQ29tcGlsZXJz LyAqLwotICMgIGluY2x1ZGUgPHN0ZGludC5oPgotLSNlbHNlIC8qICFkZWZpbmVkKF9NU0NfVkVS KSB8fCAoX01TQ19WRVIgPj0gMTgwMCkgKi8KLSsjZWxzZSAvKiAhKGRlZmluZWQoX01TQ19WRVIp ICYmIChfTVNDX1ZFUiA8IDE4MDApKSAqLwotICMgIGluY2x1ZGUgPGludHR5cGVzLmg+Ci0tI2Vu ZGlmIC8qICFkZWZpbmVkKF9NU0NfVkVSKSB8fCAoX01TQ19WRVIgPj0gMTgwMCkgKi8KLSsjZW5k aWYgLyogIShkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPCAxODAwKSkgKi8KLSAjaW5j bHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN0ZGRlZi5oPgotIAotIC8qKgotICAqIEBl bnVtCi0gICoKLS0gKiA6dHlwZTpgc2ZfdHlwZWAgZGVmaW5lcyB2YWx1ZSB0eXBlLgotKyAqIDp0 eXBlOmBzZnBhcnNlX3R5cGVgIGRlZmluZXMgdmFsdWUgdHlwZS4KLSAgKi8KLS10eXBlZGVmIGVu dW0gc2ZfdHlwZSB7Ci0rdHlwZWRlZiBlbnVtIHNmcGFyc2VfdHlwZSB7Ci0gICAvKioKLS0gICAq IDplbnVtOmBTRl9UWVBFX0JPT0xFQU5gIGluZGljYXRlcyBib29sZWFuIHR5cGUuCi0rICAgKiA6 ZW51bTpgU0ZQQVJTRV9UWVBFX0JPT0xFQU5gIGluZGljYXRlcyBib29sZWFuIHR5cGUuCi0gICAg Ki8KLS0gIFNGX1RZUEVfQk9PTEVBTiwKLSsgIFNGUEFSU0VfVFlQRV9CT09MRUFOLAotICAgLyoq Ci0tICAgKiA6ZW51bTpgU0ZfVFlQRV9JTlRFR0VSYCBpbmRpY2F0ZXMgaW50ZWdlciB0eXBlLgot KyAgICogOmVudW06YFNGUEFSU0VfVFlQRV9JTlRFR0VSYCBpbmRpY2F0ZXMgaW50ZWdlciB0eXBl LgotICAgICovCi0tICBTRl9UWVBFX0lOVEVHRVIsCi0rICBTRlBBUlNFX1RZUEVfSU5URUdFUiwK LSAgIC8qKgotLSAgICogOmVudW06YFNGX1RZUEVfREVDSU1BTGAgaW5kaWNhdGVzIGRlY2ltYWwg dHlwZS4KLSsgICAqIDplbnVtOmBTRlBBUlNFX1RZUEVfREVDSU1BTGAgaW5kaWNhdGVzIGRlY2lt YWwgdHlwZS4KLSAgICAqLwotLSAgU0ZfVFlQRV9ERUNJTUFMLAotKyAgU0ZQQVJTRV9UWVBFX0RF Q0lNQUwsCi0gICAvKioKLS0gICAqIDplbnVtOmBTRl9UWVBFX1NUUklOR2AgaW5kaWNhdGVzIHN0 cmluZyB0eXBlLgotKyAgICogOmVudW06YFNGUEFSU0VfVFlQRV9TVFJJTkdgIGluZGljYXRlcyBz dHJpbmcgdHlwZS4KLSAgICAqLwotLSAgU0ZfVFlQRV9TVFJJTkcsCi0rICBTRlBBUlNFX1RZUEVf U1RSSU5HLAotICAgLyoqCi0tICAgKiA6ZW51bTpgU0ZfVFlQRV9UT0tFTmAgaW5kaWNhdGVzIHRv a2VuIHR5cGUuCi0rICAgKiA6ZW51bTpgU0ZQQVJTRV9UWVBFX1RPS0VOYCBpbmRpY2F0ZXMgdG9r ZW4gdHlwZS4KLSAgICAqLwotLSAgU0ZfVFlQRV9UT0tFTiwKLSsgIFNGUEFSU0VfVFlQRV9UT0tF TiwKLSAgIC8qKgotLSAgICogOmVudW06YFNGX1RZUEVfQllURVNFUWAgaW5kaWNhdGVzIGJ5dGUg c2VxdWVuY2UgdHlwZS4KLSsgICAqIDplbnVtOmBTRlBBUlNFX1RZUEVfQllURVNFUWAgaW5kaWNh dGVzIGJ5dGUgc2VxdWVuY2UgdHlwZS4KLSAgICAqLwotLSAgU0ZfVFlQRV9CWVRFU0VRLAotKyAg U0ZQQVJTRV9UWVBFX0JZVEVTRVEsCi0gICAvKioKLS0gICAqIDplbnVtOmBTRl9UWVBFX0lOTkVS X0xJU1RgIGluZGljYXRlcyBpbm5lciBsaXN0IHR5cGUuCi0rICAgKiA6ZW51bTpgU0ZQQVJTRV9U WVBFX0lOTkVSX0xJU1RgIGluZGljYXRlcyBpbm5lciBsaXN0IHR5cGUuCi0gICAgKi8KLS0gIFNG X1RZUEVfSU5ORVJfTElTVCwKLSsgIFNGUEFSU0VfVFlQRV9JTk5FUl9MSVNULAotICAgLyoqCi0t ICAgKiA6ZW51bTpgU0ZfVFlQRV9EQVRFYCBpbmRpY2F0ZXMgZGF0ZSB0eXBlLgotKyAgICogOmVu dW06YFNGUEFSU0VfVFlQRV9EQVRFYCBpbmRpY2F0ZXMgZGF0ZSB0eXBlLgotICAgICovCi0tICBT Rl9UWVBFX0RBVEUKLS19IHNmX3R5cGU7Ci0rICBTRlBBUlNFX1RZUEVfREFURSwKLSsgIC8qKgot KyAgICogOmVudW06YFNGUEFSU0VfVFlQRV9ESVNQU1RSSU5HYCBpbmRpY2F0ZXMgZGlzcGxheSBz dHJpbmcgdHlwZS4KLSsgICAqLwotKyAgU0ZQQVJTRV9UWVBFX0RJU1BTVFJJTkcKLSt9IHNmcGFy c2VfdHlwZTsKLSAKLSAvKioKLSAgKiBAbWFjcm8KLSAgKgotLSAqIDptYWNybzpgU0ZfRVJSX1BB UlNFX0VSUk9SYCBpbmRpY2F0ZXMgZmF0YWwgcGFyc2UgZXJyb3IgaGFzCi0rICogOm1hY3JvOmBT RlBBUlNFX0VSUl9QQVJTRWAgaW5kaWNhdGVzIGZhdGFsIHBhcnNlIGVycm9yIGhhcwotICAqIG9j Y3VycmVkLCBhbmQgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGNvbnRpbnVlIHRoZSBwcm9jZXNzaW5n LgotICAqLwotLSNkZWZpbmUgU0ZfRVJSX1BBUlNFX0VSUk9SIC0xCi0rI2RlZmluZSBTRlBBUlNF X0VSUl9QQVJTRSAtMQotIAotIC8qKgotICAqIEBtYWNybwotICAqCi0tICogOm1hY3JvOmBTRl9F UlJfRU9GYCBpbmRpY2F0ZXMgdGhhdCB0aGVyZSBpcyBub3RoaW5nIGxlZnQgdG8gcmVhZC4KLS0g KiBUaGUgY29udGV4dCBvZiB0aGlzIGVycm9yIHZhcmllcyBkZXBlbmRpbmcgb24gdGhlIGZ1bmN0 aW9uIHRoYXQKLS0gKiByZXR1cm5zIHRoaXMgZXJyb3IgY29kZS4KLSsgKiA6bWFjcm86YFNGUEFS U0VfRVJSX0VPRmAgaW5kaWNhdGVzIHRoYXQgdGhlcmUgaXMgbm90aGluZyBsZWZ0IHRvCi0rICog cmVhZC4gIFRoZSBjb250ZXh0IG9mIHRoaXMgZXJyb3IgdmFyaWVzIGRlcGVuZGluZyBvbiB0aGUg ZnVuY3Rpb24KLSsgKiB0aGF0IHJldHVybnMgdGhpcyBlcnJvciBjb2RlLgotICAqLwotLSNkZWZp bmUgU0ZfRVJSX0VPRiAtMgotKyNkZWZpbmUgU0ZQQVJTRV9FUlJfRU9GIC0yCi0gCi0gLyoqCi0g ICogQHN0cnVjdAotICAqCi0tICogOnR5cGU6YHNmX3ZlY2Agc3RvcmVzIHNlcXVlbmNlIG9mIGJ5 dGVzLgotKyAqIDp0eXBlOmBzZnBhcnNlX3ZlY2Agc3RvcmVzIHNlcXVlbmNlIG9mIGJ5dGVzLgot ICAqLwotLXR5cGVkZWYgc3RydWN0IHNmX3ZlYyB7Ci0rdHlwZWRlZiBzdHJ1Y3Qgc2ZwYXJzZV92 ZWMgewotICAgLyoqCi0gICAgKiA6bWVtYmVyOmBiYXNlYCBwb2ludHMgdG8gdGhlIGJlZ2lubmlu ZyBvZiB0aGUgc2VxdWVuY2Ugb2YgYnl0ZXMuCi0gICAgKi8KLUBAIC0xMTksMjkgKzEyMywyOSBA QCB0eXBlZGVmIHN0cnVjdCBzZl92ZWMgewotICAgICogOm1lbWJlcjpgbGVuYCBpcyB0aGUgbnVt YmVyIG9mIGJ5dGVzIGNvbnRhaW5lZCBpbiB0aGlzIHNlcXVlbmNlLgotICAgICovCi0gICBzaXpl X3QgbGVuOwotLX0gc2ZfdmVjOwotK30gc2ZwYXJzZV92ZWM7Ci0gCi0gLyoqCi0gICogQG1hY3Jv Ci0gICoKLS0gKiA6bWFjcm86YFNGX1ZBTFVFX0ZMQUdfTk9ORWAgaW5kaWNhdGVzIG5vIGZsYWcg c2V0LgotKyAqIDptYWNybzpgU0ZQQVJTRV9WQUxVRV9GTEFHX05PTkVgIGluZGljYXRlcyBubyBm bGFnIHNldC4KLSAgKi8KLS0jZGVmaW5lIFNGX1ZBTFVFX0ZMQUdfTk9ORSAweDB1Ci0rI2RlZmlu ZSBTRlBBUlNFX1ZBTFVFX0ZMQUdfTk9ORSAweDB1Ci0gCi0gLyoqCi0gICogQG1hY3JvCi0gICoK LS0gKiA6bWFjcm86YFNGX1ZBTFVFX0ZMQUdfRVNDQVBFRF9TVFJJTkdgIGluZGljYXRlcyB0aGF0 IGEgc3RyaW5nCi0rICogOm1hY3JvOmBTRlBBUlNFX1ZBTFVFX0ZMQUdfRVNDQVBFRF9TVFJJTkdg IGluZGljYXRlcyB0aGF0IGEgc3RyaW5nCi0gICogY29udGFpbnMgZXNjYXBlZCBjaGFyYWN0ZXIo cykuCi0gICovCi0tI2RlZmluZSBTRl9WQUxVRV9GTEFHX0VTQ0FQRURfU1RSSU5HIDB4MXUKLSsj ZGVmaW5lIFNGUEFSU0VfVkFMVUVfRkxBR19FU0NBUEVEX1NUUklORyAweDF1Ci0gCi0gLyoqCi0g ICogQHN0cnVjdAotICAqCi0tICogOnR5cGU6YHNmX2RlY2ltYWxgIGNvbnRhaW5zIGRlY2ltYWwg dmFsdWUuCi0rICogOnR5cGU6YHNmcGFyc2VfZGVjaW1hbGAgY29udGFpbnMgZGVjaW1hbCB2YWx1 ZS4KLSAgKi8KLS10eXBlZGVmIHN0cnVjdCBzZl9kZWNpbWFsIHsKLSt0eXBlZGVmIHN0cnVjdCBz ZnBhcnNlX2RlY2ltYWwgewotICAgLyoqCi0gICAgKiA6bWVtYmVyOmBudW1lcmAgY29udGFpbnMg bnVtZXJhdG9yIG9mIHRoZSBkZWNpbWFsIHZhbHVlLgotICAgICovCi1AQCAtMTUwLDI2MCArMTU0 LDI4OSBAQCB0eXBlZGVmIHN0cnVjdCBzZl9kZWNpbWFsIHsKLSAgICAqIDptZW1iZXI6YGRlbm9t YCBjb250YWlucyBkZW5vbWluYXRvciBvZiB0aGUgZGVjaW1hbCB2YWx1ZS4KLSAgICAqLwotICAg aW50NjRfdCBkZW5vbTsKLS19IHNmX2RlY2ltYWw7Ci0rfSBzZnBhcnNlX2RlY2ltYWw7Ci0gCi0g LyoqCi0gICogQHN0cnVjdAotICAqCi0tICogOnR5cGU6YHNmX3ZhbHVlYCBzdG9yZXMgYSBTdHJ1 Y3R1cmVkIEZpZWxkIGl0ZW0uICBGb3IgSW5uZXIgTGlzdCwKLS0gKiBvbmx5IHR5cGUgaXMgc2V0 IHRvIDplbnVtOmBzZl90eXBlLlNGX1RZUEVfSU5ORVJfTElTVGAuICBJbiBvcmRlcgotLSAqIHRv IHJlYWQgdGhlIGl0ZW1zIGNvbnRhaW5lZCBpbiBhbiBpbm5lciBsaXN0LCBjYWxsCi0tICogYHNm X3BhcnNlcl9pbm5lcl9saXN0YC4KLSsgKiA6dHlwZTpgc2ZwYXJzZV92YWx1ZWAgc3RvcmVzIGEg U3RydWN0dXJlZCBGaWVsZCBpdGVtLiAgRm9yIElubmVyCi0rICogTGlzdCwgb25seSB0eXBlIGlz IHNldCB0bwotKyAqIDplbnVtOmBzZnBhcnNlX3R5cGUuU0ZQQVJTRV9UWVBFX0lOTkVSX0xJU1Rg LiAgSW4gb3JkZXIgdG8gcmVhZCB0aGUKLSsgKiBpdGVtcyBjb250YWluZWQgaW4gYW4gaW5uZXIg bGlzdCwgY2FsbCBgc2ZwYXJzZV9wYXJzZXJfaW5uZXJfbGlzdGAuCi0gICovCi0tdHlwZWRlZiBz dHJ1Y3Qgc2ZfdmFsdWUgewotK3R5cGVkZWYgc3RydWN0IHNmcGFyc2VfdmFsdWUgewotICAgLyoq Ci0gICAgKiA6bWVtYmVyOmB0eXBlYCBpcyB0aGUgdHlwZSBvZiB0aGUgdmFsdWUgY29udGFpbmVk IGluIHRoaXMKLSAgICAqIHBhcnRpY3VsYXIgb2JqZWN0LgotICAgICovCi0tICBzZl90eXBlIHR5 cGU7Ci0rICBzZnBhcnNlX3R5cGUgdHlwZTsKLSAgIC8qKgotICAgICogOm1lbWJlcjpgZmxhZ3Ng IGlzIGJpdHdpc2UgT1Igb2Ygb25lIG9yIG1vcmUgb2YKLS0gICAqIDptYWNybzpgU0ZfVkFMVUVf RkxBR18qIDxTRl9WQUxVRV9GTEFHX05PTkU+YC4KLSsgICAqIDptYWNybzpgU0ZQQVJTRV9WQUxV RV9GTEFHXyogPFNGUEFSU0VfVkFMVUVfRkxBR19OT05FPmAuCi0gICAgKi8KLSAgIHVpbnQzMl90 IGZsYWdzOwotICAgLyoqCi0gICAgKiBAYW5vbnVuaW9uX3N0YXJ0Ci0gICAgKgotLSAgICogQHNm X3ZhbHVlX3ZhbHVlCi0rICAgKiBAc2ZwYXJzZV92YWx1ZV92YWx1ZQotICAgICovCi0gICB1bmlv biB7Ci0gICAgIC8qKgotICAgICAgKiA6bWVtYmVyOmBib29sZWFuYCBjb250YWlucyBib29sZWFu IHZhbHVlIGlmIDptZW1iZXI6YHR5cGVgID09Ci0tICAgICAqIDplbnVtOmBzZl90eXBlLlNGX1RZ UEVfQk9PTEVBTmAuICAxIGluZGljYXRlcyB0cnVlLCBhbmQgMAotLSAgICAgKiBpbmRpY2F0ZXMg ZmFsc2UuCi0rICAgICAqIDplbnVtOmBzZnBhcnNlX3R5cGUuU0ZQQVJTRV9UWVBFX0JPT0xFQU5g LiAgMSBpbmRpY2F0ZXMgdHJ1ZSwKLSsgICAgICogYW5kIDAgaW5kaWNhdGVzIGZhbHNlLgotICAg ICAgKi8KLSAgICAgaW50IGJvb2xlYW47Ci0gICAgIC8qKgotICAgICAgKiA6bWVtYmVyOmBpbnRl Z2VyYCBjb250YWlucyBpbnRlZ2VyIHZhbHVlIGlmIDptZW1iZXI6YHR5cGVgIGlzCi0tICAgICAq IGVpdGhlciA6ZW51bTpgc2ZfdHlwZS5TRl9UWVBFX0lOVEVHRVJgIG9yCi0tICAgICAqIDplbnVt OmBzZl90eXBlLlNGX1RZUEVfREFURWAuCi0rICAgICAqIGVpdGhlciA6ZW51bTpgc2ZwYXJzZV90 eXBlLlNGUEFSU0VfVFlQRV9JTlRFR0VSYCBvcgotKyAgICAgKiA6ZW51bTpgc2ZwYXJzZV90eXBl LlNGUEFSU0VfVFlQRV9EQVRFYC4KLSAgICAgICovCi0gICAgIGludDY0X3QgaW50ZWdlcjsKLSAg ICAgLyoqCi0gICAgICAqIDptZW1iZXI6YGRlY2ltYWxgIGNvbnRhaW5zIGRlY2ltYWwgdmFsdWUg aWYgOm1lbWJlcjpgdHlwZWAgPT0KLS0gICAgICogOmVudW06YHNmX3R5cGUuU0ZfVFlQRV9ERUNJ TUFMYC4KLSsgICAgICogOmVudW06YHNmcGFyc2VfdHlwZS5TRlBBUlNFX1RZUEVfREVDSU1BTGAu Ci0gICAgICAqLwotLSAgICBzZl9kZWNpbWFsIGRlY2ltYWw7Ci0rICAgIHNmcGFyc2VfZGVjaW1h bCBkZWNpbWFsOwotICAgICAvKioKLSAgICAgICogOm1lbWJlcjpgdmVjYCBjb250YWlucyBzZXF1 ZW5jZSBvZiBieXRlcyBpZiA6bWVtYmVyOmB0eXBlYCBpcwotLSAgICAgKiBlaXRoZXIgOmVudW06 YHNmX3R5cGUuU0ZfVFlQRV9TVFJJTkdgLAotLSAgICAgKiA6ZW51bTpgc2ZfdHlwZS5TRl9UWVBF X1RPS0VOYCwgb3IKLS0gICAgICogOmVudW06YHNmX3R5cGUuU0ZfVFlQRV9CWVRFU0VRYC4KLSsg ICAgICogZWl0aGVyIDplbnVtOmBzZnBhcnNlX3R5cGUuU0ZQQVJTRV9UWVBFX1NUUklOR2AsCi0r ICAgICAqIDplbnVtOmBzZnBhcnNlX3R5cGUuU0ZQQVJTRV9UWVBFX1RPS0VOYCwKLSsgICAgICog OmVudW06YHNmcGFyc2VfdHlwZS5TRlBBUlNFX1RZUEVfQllURVNFUWAsIG9yCi0rICAgICAqIDpl bnVtOmBzZnBhcnNlX3R5cGUuU0ZQQVJTRV9UWVBFX0RJU1BTVFJJTkdgLgotICAgICAgKgotLSAg ICAgKiBGb3IgOmVudW06YHNmX3R5cGUuU0ZfVFlQRV9TVFJJTkdgLCB0aGlzIGZpZWxkIGNvbnRh aW5zIG9uZSBvcgotLSAgICAgKiBtb3JlIGVzY2FwZWQgY2hhcmFjdGVycyBpZiA6bWVtYmVyOmBm bGFnc2AgaGFzCi0tICAgICAqIDptYWNybzpgU0ZfVkFMVUVfRkxBR19FU0NBUEVEX1NUUklOR2Ag c2V0LiAgVG8gdW5lc2NhcGUgdGhlCi0tICAgICAqIHN0cmluZywgdXNlIGBzZl91bmVzY2FwZWAu Ci0rICAgICAqIEZvciA6ZW51bTpgc2ZwYXJzZV90eXBlLlNGUEFSU0VfVFlQRV9TVFJJTkdgLCB0 aGlzIGZpZWxkCi0rICAgICAqIGNvbnRhaW5zIG9uZSBvciBtb3JlIGVzY2FwZWQgY2hhcmFjdGVy cyBpZiA6bWVtYmVyOmBmbGFnc2AgaGFzCi0rICAgICAqIDptYWNybzpgU0ZQQVJTRV9WQUxVRV9G TEFHX0VTQ0FQRURfU1RSSU5HYCBzZXQuICBUbyB1bmVzY2FwZQotKyAgICAgKiB0aGUgc3RyaW5n LCB1c2UgYHNmcGFyc2VfdW5lc2NhcGVgLgotICAgICAgKgotLSAgICAgKiBGb3IgOmVudW06YHNm X3R5cGUuU0ZfVFlQRV9CWVRFU0VRYCwgdGhpcyBmaWVsZCBjb250YWlucyBiYXNlNjQKLS0gICAg ICogZW5jb2RlZCBzdHJpbmcuICBUbyBkZWNvZGUgdGhpcyBieXRlIHN0cmluZywgdXNlCi0tICAg ICAqIGBzZl9iYXNlNjRkZWNvZGVgLgotKyAgICAgKiBGb3IgOmVudW06YHNmcGFyc2VfdHlwZS5T RlBBUlNFX1RZUEVfQllURVNFUWAsIHRoaXMgZmllbGQKLSsgICAgICogY29udGFpbnMgYmFzZTY0 IGVuY29kZWQgc3RyaW5nLiAgVG8gZGVjb2RlIHRoaXMgYnl0ZSBzdHJpbmcsCi0rICAgICAqIHVz ZSBgc2ZwYXJzZV9iYXNlNjRkZWNvZGVgLgotICAgICAgKgotLSAgICAgKiBJZiA6bWVtYmVyOmB2 ZWMubGVuIDxzZl92ZWMubGVuPmAgPT0gMCwgOm1lbWJlcjpgdmVjLmJhc2UKLS0gICAgICogPHNm X3ZlYy5iYXNlPmAgaXMgZ3VhcmFudGVlZCB0byBiZSBOVUxMLgotKyAgICAgKiBGb3IgOmVudW06 YHNmcGFyc2VfdHlwZS5TRlBBUlNFX1RZUEVfRElTUFNUUklOR2AsIHRoaXMgZmllbGQKLSsgICAg ICogbWF5IGNvbnRhaW4gcGVyY2VudC1lbmNvZGVkIFVURi04IGJ5dGUgc2VxdWVuY2VzLiAgVG8g ZGVjb2RlCi0rICAgICAqIGl0LCB1c2UgYHNmcGFyc2VfcGN0ZGVjb2RlYC4KLSsgICAgICoKLSsg ICAgICogSWYgOm1lbWJlcjpgdmVjLmxlbiA8c2ZwYXJzZV92ZWMubGVuPmAgPT0gMCwgOm1lbWJl cjpgdmVjLmJhc2UKLSsgICAgICogPHNmcGFyc2VfdmVjLmJhc2U+YCBpcyBndWFyYW50ZWVkIHRv IGJlIE5VTEwuCi0gICAgICAqLwotLSAgICBzZl92ZWMgdmVjOwotKyAgICBzZnBhcnNlX3ZlYyB2 ZWM7Ci0gICAgIC8qKgotICAgICAgKiBAYW5vbnVuaW9uX2VuZAotICAgICAgKi8KLSAgIH07Ci0t fSBzZl92YWx1ZTsKLSt9IHNmcGFyc2VfdmFsdWU7Ci0gCi0gLyoqCi0gICogQHN0cnVjdAotICAq Ci0tICogOnR5cGU6YHNmX3BhcnNlcmAgaXMgdGhlIFN0cnVjdHVyZWQgRmllbGQgVmFsdWVzIHBh cnNlci4gIFVzZQotLSAqIGBzZl9wYXJzZXJfaW5pdGAgdG8gaW5pdGlhbGl6ZSBpdC4KLSsgKiA6 dHlwZTpgc2ZwYXJzZV9wYXJzZXJgIGlzIHRoZSBTdHJ1Y3R1cmVkIEZpZWxkIFZhbHVlcyBwYXJz ZXIuICBVc2UKLSsgKiBgc2ZwYXJzZV9wYXJzZXJfaW5pdGAgdG8gaW5pdGlhbGl6ZSBpdC4KLSAg Ki8KLS10eXBlZGVmIHN0cnVjdCBzZl9wYXJzZXIgewotK3R5cGVkZWYgc3RydWN0IHNmcGFyc2Vf cGFyc2VyIHsKLSAgIC8qIGFsbCBmaWVsZHMgYXJlIHByaXZhdGUgKi8KLSAgIGNvbnN0IHVpbnQ4 X3QgKnBvczsKLSAgIGNvbnN0IHVpbnQ4X3QgKmVuZDsKLSAgIHVpbnQzMl90IHN0YXRlOwotLX0g c2ZfcGFyc2VyOwotK30gc2ZwYXJzZV9wYXJzZXI7Ci0gCi0gLyoqCi0gICogQGZ1bmN0aW9uCi0g ICoKLS0gKiBgc2ZfcGFyc2VyX2luaXRgIGluaXRpYWxpemVzIHxzZnB8IHdpdGggdGhlIGdpdmVu IGJ1ZmZlciBwb2ludGVkIGJ5Ci0tICogfGRhdGF8IG9mIGxlbmd0aCB8ZGF0YWxlbnwuCi0rICog YHNmcGFyc2VfcGFyc2VyX2luaXRgIGluaXRpYWxpemVzIHxzZnB8IHdpdGggdGhlIGdpdmVuIGRh dGEgZW5jb2RlZAotKyAqIGluIFN0cnVjdHVyZWQgRmllbGQgVmFsdWVzIHBvaW50ZWQgYnkgfGRh dGF8IG9mIGxlbmd0aCB8ZGF0YWxlbnwuCi0gICovCi0tdm9pZCBzZl9wYXJzZXJfaW5pdChzZl9w YXJzZXIgKnNmcCwgY29uc3QgdWludDhfdCAqZGF0YSwgc2l6ZV90IGRhdGFsZW4pOwotK3ZvaWQg c2ZwYXJzZV9wYXJzZXJfaW5pdChzZnBhcnNlX3BhcnNlciAqc2ZwLCBjb25zdCB1aW50OF90ICpk YXRhLAotKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGF0YWxlbik7Ci0gCi0gLyoq Ci0gICogQGZ1bmN0aW9uCi0gICoKLS0gKiBgc2ZfcGFyc2VyX3BhcmFtYCByZWFkcyBhIHBhcmFt ZXRlci4gIElmIHRoaXMgZnVuY3Rpb24gcmV0dXJucyAwLAotLSAqIGl0IHN0b3JlcyBwYXJhbWV0 ZXIga2V5IGFuZCB2YWx1ZSBpbiB8ZGVzdF9rZXl8IGFuZCB8ZGVzdF92YWx1ZXwKLSsgKiBgc2Zw YXJzZV9wYXJzZXJfcGFyYW1gIHJlYWRzIGEgcGFyYW1ldGVyLiAgSWYgdGhpcyBmdW5jdGlvbiBy ZXR1cm5zCi0rICogMCwgaXQgc3RvcmVzIHBhcmFtZXRlciBrZXkgYW5kIHZhbHVlIGluIHxkZXN0 X2tleXwgYW5kIHxkZXN0X3ZhbHVlfAotICAqIHJlc3BlY3RpdmVseSwgaWYgdGhleSBhcmUgbm90 IE5VTEwuCi0gICoKLSAgKiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm8gZWZmb3J0IHRvIGZpbmQgZHVw bGljYXRlZCBrZXlzLiAgU2FtZSBrZXkgbWF5Ci0gICogYmUgcmVwb3J0ZWQgbW9yZSB0aGFuIG9u Y2UuCi0gICoKLSAgKiBDYWxsZXIgc2hvdWxkIGtlZXAgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIHVu dGlsIGl0IHJldHVybnMgbmVnYXRpdmUKLS0gKiBlcnJvciBjb2RlLiAgSWYgaXQgcmV0dXJucyA6 bWFjcm86YFNGX0VSUl9FT0ZgLCBhbGwgcGFyYW1ldGVycyBoYXZlCi0tICogcmVhZCwgYW5kIGNh bGxlciBjYW4gY29udGludWUgdG8gcmVhZCByZXN0IG9mIHRoZSB2YWx1ZXMuICBJZiBpdAotLSAq IHJldHVybnMgOm1hY3JvOmBTRl9FUlJfUEFSU0VfRVJST1JgLCBpdCBlbmNvdW50ZXJlZCBmYXRh bCBlcnJvcgotKyAqIGVycm9yIGNvZGUuICBJZiBpdCByZXR1cm5zIDptYWNybzpgU0ZQQVJTRV9F UlJfRU9GYCwgYWxsIHBhcmFtZXRlcnMKLSsgKiBoYXZlIHJlYWQsIGFuZCBjYWxsZXIgY2FuIGNv bnRpbnVlIHRvIHJlYWQgcmVzdCBvZiB0aGUgdmFsdWVzLiAgSWYKLSsgKiBpdCByZXR1cm5zIDpt YWNybzpgU0ZQQVJTRV9FUlJfUEFSU0VgLCBpdCBlbmNvdW50ZXJlZCBmYXRhbCBlcnJvcgotICAq IHdoaWxlIHBhcnNpbmcgZmllbGQgdmFsdWUuCi0gICovCi0taW50IHNmX3BhcnNlcl9wYXJhbShz Zl9wYXJzZXIgKnNmcCwgc2ZfdmVjICpkZXN0X2tleSwgc2ZfdmFsdWUgKmRlc3RfdmFsdWUpOwot K2ludCBzZnBhcnNlX3BhcnNlcl9wYXJhbShzZnBhcnNlX3BhcnNlciAqc2ZwLCBzZnBhcnNlX3Zl YyAqZGVzdF9rZXksCi0rICAgICAgICAgICAgICAgICAgICAgICAgIHNmcGFyc2VfdmFsdWUgKmRl c3RfdmFsdWUpOwotIAotIC8qKgotICAqIEBmdW5jdGlvbgotICAqCi0tICogYHNmX3BhcnNlcl9k aWN0YCByZWFkcyB0aGUgbmV4dCBkaWN0aW9uYXJ5IGtleSBhbmQgdmFsdWUgcGFpci4gIElmCi0t ICogdGhpcyBmdW5jdGlvbiByZXR1cm5zIDAsIGl0IHN0b3JlcyB0aGUga2V5IGFuZCB2YWx1ZSBp biB8ZGVzdF9rZXl8Ci0tICogYW5kIHxkZXN0X3ZhbHVlfCByZXNwZWN0aXZlbHksIGlmIHRoZXkg YXJlIG5vdCBOVUxMLgotKyAqIGBzZnBhcnNlX3BhcnNlcl9kaWN0YCByZWFkcyB0aGUgbmV4dCBk aWN0aW9uYXJ5IGtleSBhbmQgdmFsdWUgcGFpci4KLSsgKiBJZiB0aGlzIGZ1bmN0aW9uIHJldHVy bnMgMCwgaXQgc3RvcmVzIHRoZSBrZXkgYW5kIHZhbHVlIGluCi0rICogfGRlc3Rfa2V5fCBhbmQg fGRlc3RfdmFsdWV8IHJlc3BlY3RpdmVseSwgaWYgdGhleSBhcmUgbm90IE5VTEwuCi0gICoKLSAg KiBDYWxsZXIgY2FuIG9wdGlvbmFsbHkgcmVhZCBwYXJhbWV0ZXJzIGF0dGFjaGVkIHRvIHRoZSBw YWlyIGJ5Ci0tICogY2FsbGluZyBgc2ZfcGFyc2VyX3BhcmFtYC4KLSsgKiBjYWxsaW5nIGBzZnBh cnNlX3BhcnNlcl9wYXJhbWAuCi0gICoKLSAgKiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm8gZWZmb3J0 IHRvIGZpbmQgZHVwbGljYXRlZCBrZXlzLiAgU2FtZSBrZXkgbWF5Ci0gICogYmUgcmVwb3J0ZWQg bW9yZSB0aGFuIG9uY2UuCi0gICoKLSAgKiBDYWxsZXIgc2hvdWxkIGtlZXAgY2FsbGluZyB0aGlz IGZ1bmN0aW9uIHVudGlsIGl0IHJldHVybnMgbmVnYXRpdmUKLS0gKiBlcnJvciBjb2RlLiAgSWYg aXQgcmV0dXJucyA6bWFjcm86YFNGX0VSUl9FT0ZgLCBhbGwga2V5IGFuZCB2YWx1ZQotLSAqIHBh aXJzIGhhdmUgYmVlbiByZWFkLCBhbmQgdGhlcmUgaXMgbm90aGluZyBsZWZ0IHRvIHJlYWQuCi0r ICogZXJyb3IgY29kZS4gIElmIGl0IHJldHVybnMgOm1hY3JvOmBTRlBBUlNFX0VSUl9FT0ZgLCBh bGwga2V5IGFuZAotKyAqIHZhbHVlIHBhaXJzIGhhdmUgYmVlbiByZWFkLCBhbmQgdGhlcmUgaXMg bm90aGluZyBsZWZ0IHRvIHJlYWQuCi0gICoKLSAgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgMCBp ZiBpdCBzdWNjZWVkcywgb3Igb25lIG9mIHRoZSBmb2xsb3dpbmcKLSAgKiBuZWdhdGl2ZSBlcnJv ciBjb2RlczoKLSAgKgotLSAqIDptYWNybzpgU0ZfRVJSX0VPRmAKLSsgKiA6bWFjcm86YFNGUEFS U0VfRVJSX0VPRmAKLSAgKiAgICAgQWxsIHZhbHVlcyBpbiB0aGUgZGljdGlvbmFyeSBoYXZlIHJl YWQuCi0tICogOm1hY3JvOmBTRl9FUlJfUEFSU0VfRVJST1JgCi0rICogOm1hY3JvOmBTRlBBUlNF X0VSUl9QQVJTRWAKLSAgKiAgICAgSXQgZW5jb3VudGVyZWQgZmF0YWwgZXJyb3Igd2hpbGUgcGFy c2luZyBmaWVsZCB2YWx1ZS4KLSAgKi8KLS1pbnQgc2ZfcGFyc2VyX2RpY3Qoc2ZfcGFyc2VyICpz ZnAsIHNmX3ZlYyAqZGVzdF9rZXksIHNmX3ZhbHVlICpkZXN0X3ZhbHVlKTsKLStpbnQgc2ZwYXJz ZV9wYXJzZXJfZGljdChzZnBhcnNlX3BhcnNlciAqc2ZwLCBzZnBhcnNlX3ZlYyAqZGVzdF9rZXks Ci0rICAgICAgICAgICAgICAgICAgICAgICAgc2ZwYXJzZV92YWx1ZSAqZGVzdF92YWx1ZSk7Ci0g Ci0gLyoqCi0gICogQGZ1bmN0aW9uCi0gICoKLS0gKiBgc2ZfcGFyc2VyX2xpc3RgIHJlYWRzIHRo ZSBuZXh0IGxpc3QgaXRlbS4gIElmIHRoaXMgZnVuY3Rpb24KLSsgKiBgc2ZwYXJzZV9wYXJzZXJf bGlzdGAgcmVhZHMgdGhlIG5leHQgbGlzdCBpdGVtLiAgSWYgdGhpcyBmdW5jdGlvbgotICAqIHJl dHVybnMgMCwgaXQgc3RvcmVzIHRoZSBpdGVtIGluIHxkZXN0fCBpZiBpdCBpcyBub3QgTlVMTC4K LSAgKgotICAqIENhbGxlciBjYW4gb3B0aW9uYWxseSByZWFkIHBhcmFtZXRlcnMgYXR0YWNoZWQg dG8gdGhlIGl0ZW0gYnkKLS0gKiBjYWxsaW5nIGBzZl9wYXJzZXJfcGFyYW1gLgotKyAqIGNhbGxp bmcgYHNmcGFyc2VfcGFyc2VyX3BhcmFtYC4KLSAgKgotICAqIENhbGxlciBzaG91bGQga2VlcCBj YWxsaW5nIHRoaXMgZnVuY3Rpb24gdW50aWwgaXQgcmV0dXJucyBuZWdhdGl2ZQotLSAqIGVycm9y IGNvZGUuICBJZiBpdCByZXR1cm5zIDptYWNybzpgU0ZfRVJSX0VPRmAsIGFsbCB2YWx1ZXMgaW4g dGhlCi0tICogbGlzdCBoYXZlIGJlZW4gcmVhZCwgYW5kIHRoZXJlIGlzIG5vdGhpbmcgbGVmdCB0 byByZWFkLgotKyAqIGVycm9yIGNvZGUuICBJZiBpdCByZXR1cm5zIDptYWNybzpgU0ZQQVJTRV9F UlJfRU9GYCwgYWxsIHZhbHVlcyBpbgotKyAqIHRoZSBsaXN0IGhhdmUgYmVlbiByZWFkLCBhbmQg dGhlcmUgaXMgbm90aGluZyBsZWZ0IHRvIHJlYWQuCi0gICoKLSAgKiBUaGlzIGZ1bmN0aW9uIHJl dHVybnMgMCBpZiBpdCBzdWNjZWVkcywgb3Igb25lIG9mIHRoZSBmb2xsb3dpbmcKLSAgKiBuZWdh dGl2ZSBlcnJvciBjb2RlczoKLSAgKgotLSAqIDptYWNybzpgU0ZfRVJSX0VPRmAKLSsgKiA6bWFj cm86YFNGUEFSU0VfRVJSX0VPRmAKLSAgKiAgICAgQWxsIHZhbHVlcyBpbiB0aGUgbGlzdCBoYXZl IHJlYWQuCi0tICogOm1hY3JvOmBTRl9FUlJfUEFSU0VfRVJST1JgCi0rICogOm1hY3JvOmBTRlBB UlNFX0VSUl9QQVJTRWAKLSAgKiAgICAgSXQgZW5jb3VudGVyZWQgZmF0YWwgZXJyb3Igd2hpbGUg cGFyc2luZyBmaWVsZCB2YWx1ZS4KLSAgKi8KLS1pbnQgc2ZfcGFyc2VyX2xpc3Qoc2ZfcGFyc2Vy ICpzZnAsIHNmX3ZhbHVlICpkZXN0KTsKLStpbnQgc2ZwYXJzZV9wYXJzZXJfbGlzdChzZnBhcnNl X3BhcnNlciAqc2ZwLCBzZnBhcnNlX3ZhbHVlICpkZXN0KTsKLSAKLSAvKioKLSAgKiBAZnVuY3Rp b24KLSAgKgotLSAqIGBzZl9wYXJzZXJfaXRlbWAgcmVhZHMgYSBzaW5nbGUgaXRlbS4gIElmIHRo aXMgZnVuY3Rpb24gcmV0dXJucyAwLAotLSAqIGl0IHN0b3JlcyB0aGUgaXRlbSBpbiB8ZGVzdHwg aWYgaXQgaXMgbm90IE5VTEwuCi0rICogYHNmcGFyc2VfcGFyc2VyX2l0ZW1gIHJlYWRzIGEgc2lu Z2xlIGl0ZW0uICBJZiB0aGlzIGZ1bmN0aW9uCi0rICogcmV0dXJucyAwLCBpdCBzdG9yZXMgdGhl IGl0ZW0gaW4gfGRlc3R8IGlmIGl0IGlzIG5vdCBOVUxMLgotICAqCi0gICogVGhpcyBmdW5jdGlv biBpcyBvbmx5IHVzZWQgZm9yIHRoZSBmaWVsZCB2YWx1ZSB0aGF0IGNvbnNpc3RzIG9mIGEKLSAg KiBzaW5nbGUgaXRlbS4KLSAgKgotICAqIENhbGxlciBjYW4gb3B0aW9uYWxseSByZWFkIHBhcmFt ZXRlcnMgYXR0YWNoZWQgdG8gdGhlIGl0ZW0gYnkKLS0gKiBjYWxsaW5nIGBzZl9wYXJzZXJfcGFy YW1gLgotKyAqIGNhbGxpbmcgYHNmcGFyc2VfcGFyc2VyX3BhcmFtYC4KLSAgKgotICAqIENhbGxl ciBzaG91bGQgY2FsbCB0aGlzIGZ1bmN0aW9uIGFnYWluIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZXJl IGlzCi0gICogbm90aGluZyBsZWZ0IHRvIHJlYWQuICBJZiB0aGlzIDJuZCBmdW5jdGlvbiBjYWxs IHJldHVybnMKLS0gKiA6bWFjcm86YFNGX0VSUl9FT0ZgLCBhbGwgZGF0YSBoYXZlIGJlZW4gcHJv Y2Vzc2VkIHN1Y2Nlc3NmdWxseS4KLSsgKiA6bWFjcm86YFNGUEFSU0VfRVJSX0VPRmAsIGFsbCBk YXRhIGhhdmUgYmVlbiBwcm9jZXNzZWQKLSsgKiBzdWNjZXNzZnVsbHkuCi0gICoKLSAgKiBUaGlz IGZ1bmN0aW9uIHJldHVybnMgMCBpZiBpdCBzdWNjZWVkcywgb3Igb25lIG9mIHRoZSBmb2xsb3dp bmcKLSAgKiBuZWdhdGl2ZSBlcnJvciBjb2RlczoKLSAgKgotLSAqIDptYWNybzpgU0ZfRVJSX0VP RmAKLSsgKiA6bWFjcm86YFNGUEFSU0VfRVJSX0VPRmAKLSAgKiAgICAgVGhlcmUgaXMgbm90aGlu ZyBsZWZ0IHRvIHJlYWQuCi0tICogOm1hY3JvOmBTRl9FUlJfUEFSU0VfRVJST1JgCi0rICogOm1h Y3JvOmBTRlBBUlNFX0VSUl9QQVJTRWAKLSAgKiAgICAgSXQgZW5jb3VudGVyZWQgZmF0YWwgZXJy b3Igd2hpbGUgcGFyc2luZyBmaWVsZCB2YWx1ZS4KLSAgKi8KLS1pbnQgc2ZfcGFyc2VyX2l0ZW0o c2ZfcGFyc2VyICpzZnAsIHNmX3ZhbHVlICpkZXN0KTsKLStpbnQgc2ZwYXJzZV9wYXJzZXJfaXRl bShzZnBhcnNlX3BhcnNlciAqc2ZwLCBzZnBhcnNlX3ZhbHVlICpkZXN0KTsKLSAKLSAvKioKLSAg KiBAZnVuY3Rpb24KLSAgKgotLSAqIGBzZl9wYXJzZXJfaW5uZXJfbGlzdGAgcmVhZHMgdGhlIG5l eHQgaW5uZXIgbGlzdCBpdGVtLiAgSWYgdGhpcwotLSAqIGZ1bmN0aW9uIHJldHVybnMgMCwgaXQg c3RvcmVzIHRoZSBpdGVtIGluIHxkZXN0fCBpZiBpdCBpcyBub3QgTlVMTC4KLSsgKiBgc2ZwYXJz ZV9wYXJzZXJfaW5uZXJfbGlzdGAgcmVhZHMgdGhlIG5leHQgaW5uZXIgbGlzdCBpdGVtLiAgSWYK LSsgKiB0aGlzIGZ1bmN0aW9uIHJldHVybnMgMCwgaXQgc3RvcmVzIHRoZSBpdGVtIGluIHxkZXN0 fCBpZiBpdCBpcyBub3QKLSsgKiBOVUxMLgotICAqCi0gICogQ2FsbGVyIGNhbiBvcHRpb25hbGx5 IHJlYWQgcGFyYW1ldGVycyBhdHRhY2hlZCB0byB0aGUgaXRlbSBieQotLSAqIGNhbGxpbmcgYHNm X3BhcnNlcl9wYXJhbWAuCi0rICogY2FsbGluZyBgc2ZwYXJzZV9wYXJzZXJfcGFyYW1gLgotICAq Ci0gICogQ2FsbGVyIHNob3VsZCBrZWVwIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiB1bnRpbCBpdCBy ZXR1cm5zIG5lZ2F0aXZlCi0tICogZXJyb3IgY29kZS4gIElmIGl0IHJldHVybnMgOm1hY3JvOmBT Rl9FUlJfRU9GYCwgYWxsIHZhbHVlcyBpbiB0aGlzCi0tICogaW5uZXIgbGlzdCBoYXZlIGJlZW4g cmVhZCwgYW5kIGNhbGxlciBjYW4gb3B0aW9uYWxseSByZWFkCi0rICogZXJyb3IgY29kZS4gIElm IGl0IHJldHVybnMgOm1hY3JvOmBTRlBBUlNFX0VSUl9FT0ZgLCBhbGwgdmFsdWVzIGluCi0rICog dGhpcyBpbm5lciBsaXN0IGhhdmUgYmVlbiByZWFkLCBhbmQgY2FsbGVyIGNhbiBvcHRpb25hbGx5 IHJlYWQKLSAgKiBwYXJhbWV0ZXJzIGF0dGFjaGVkIHRvIHRoaXMgaW5uZXIgbGlzdCBieSBjYWxs aW5nCi0tICogYHNmX3BhcnNlcl9wYXJhbWAuICBUaGVuIGNhbGxlciBjYW4gY29udGludWUgdG8g cmVhZCByZXN0IG9mIHRoZQotLSAqIHZhbHVlcy4KLSsgKiBgc2ZwYXJzZV9wYXJzZXJfcGFyYW1g LiAgVGhlbiBjYWxsZXIgY2FuIGNvbnRpbnVlIHRvIHJlYWQgcmVzdCBvZgotKyAqIHRoZSB2YWx1 ZXMuCi0gICoKLSAgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgMCBpZiBpdCBzdWNjZWVkcywgb3Ig b25lIG9mIHRoZSBmb2xsb3dpbmcKLSAgKiBuZWdhdGl2ZSBlcnJvciBjb2RlczoKLSAgKgotLSAq IDptYWNybzpgU0ZfRVJSX0VPRmAKLSsgKiA6bWFjcm86YFNGUEFSU0VfRVJSX0VPRmAKLSAgKiAg ICAgQWxsIHZhbHVlcyBpbiB0aGUgaW5uZXIgbGlzdCBoYXZlIHJlYWQuCi0tICogOm1hY3JvOmBT Rl9FUlJfUEFSU0VfRVJST1JgCi0rICogOm1hY3JvOmBTRlBBUlNFX0VSUl9QQVJTRWAKLSAgKiAg ICAgSXQgZW5jb3VudGVyZWQgZmF0YWwgZXJyb3Igd2hpbGUgcGFyc2luZyBmaWVsZCB2YWx1ZS4K LSAgKi8KLS1pbnQgc2ZfcGFyc2VyX2lubmVyX2xpc3Qoc2ZfcGFyc2VyICpzZnAsIHNmX3ZhbHVl ICpkZXN0KTsKLStpbnQgc2ZwYXJzZV9wYXJzZXJfaW5uZXJfbGlzdChzZnBhcnNlX3BhcnNlciAq c2ZwLCBzZnBhcnNlX3ZhbHVlICpkZXN0KTsKLSAKLSAvKioKLSAgKiBAZnVuY3Rpb24KLSAgKgot LSAqIGBzZl91bmVzY2FwZWAgY29waWVzIHxzcmN8IHRvIHxkZXN0fCBieSByZW1vdmluZyBlc2Nh cGVzIChgYFxgYCkuCi0tICogfHNyY3wgc2hvdWxkIGJlIHRoZSBwb2ludGVyIHRvIDptZW1iZXI6 YHNmX3ZhbHVlLnZlY2Agb2YgdHlwZQotLSAqIDplbnVtOmBzZl90eXBlLlNGX1RZUEVfU1RSSU5H YCBwcm9kdWNlZCBieSBlaXRoZXIgYHNmX3BhcnNlcl9kaWN0YCwKLS0gKiBgc2ZfcGFyc2VyX2xp c3RgLCBgc2ZfcGFyc2VyX2lubmVyX2xpc3RgLCBgc2ZfcGFyc2VyX2l0ZW1gLCBvcgotLSAqIGBz Zl9wYXJzZXJfcGFyYW1gLCBvdGhlcndpc2UgdGhlIGJlaGF2aW9yIGlzIHVuZGVmaW5lZC4KLSsg KiBgc2ZwYXJzZV91bmVzY2FwZWAgY29waWVzIHxzcmN8IHRvIHxkZXN0fCBieSByZW1vdmluZyBl c2NhcGVzCi0rICogKGBgXGBgKS4gIHxzcmN8IHNob3VsZCBiZSB0aGUgcG9pbnRlciB0bwotKyAq IDptZW1iZXI6YHNmcGFyc2VfdmFsdWUudmVjYCBvZiB0eXBlCi0rICogOmVudW06YHNmcGFyc2Vf dHlwZS5TRlBBUlNFX1RZUEVfU1RSSU5HYCBwcm9kdWNlZCBieSBlaXRoZXIKLSsgKiBgc2ZwYXJz ZV9wYXJzZXJfZGljdGAsIGBzZnBhcnNlX3BhcnNlcl9saXN0YCwKLSsgKiBgc2ZwYXJzZV9wYXJz ZXJfaW5uZXJfbGlzdGAsIGBzZnBhcnNlX3BhcnNlcl9pdGVtYCwgb3IKLSsgKiBgc2ZwYXJzZV9w YXJzZXJfcGFyYW1gLCBvdGhlcndpc2UgdGhlIGJlaGF2aW9yIGlzIHVuZGVmaW5lZC4KLSAgKgot LSAqIDptZW1iZXI6YGRlc3QtPmJhc2UgPHNmX3ZlYy5iYXNlPmAgbXVzdCBwb2ludCB0byB0aGUg YnVmZmVyIHRoYXQKLS0gKiBoYXMgc3VmZmljaWVudCBzcGFjZSB0byBzdG9yZSB0aGUgdW5lc2Nh cGVkIHN0cmluZy4KLS0gKgotLSAqIElmIHRoZXJlIGlzIG5vIGVzY2FwZSBjaGFyYWN0ZXIgaW4g fHNyY3wsIHwqc3JjfCBpcyBhc3NpZ25lZCB0bwotLSAqIHwqZGVzdHwuICBUaGlzIGluY2x1ZGVz IHRoZSBjYXNlIHRoYXQgOm1lbWJlcjpgc3JjLT5sZW4KLS0gKiA8c2ZfdmVjLmxlbj5gID09IDAu Ci0rICogOm1lbWJlcjpgZGVzdC0+YmFzZSA8c2ZwYXJzZV92ZWMuYmFzZT5gIG11c3QgcG9pbnQg dG8gdGhlIGJ1ZmZlcgotKyAqIHRoYXQgaGFzIHN1ZmZpY2llbnQgc3BhY2UgdG8gc3RvcmUgdGhl IHVuZXNjYXBlZCBzdHJpbmcuICBUaGUKLSsgKiBtZW1vcnkgYXJlYXMgcG9pbnRlZCBieSA6bWVt YmVyOmBkZXN0LT5iYXNlIDxzZnBhcnNlX3ZlYy5iYXNlPmAgYW5kCi0rICogOm1lbWJlcjpgc3Jj LT5iYXNlIDxzZnBhcnNlX3ZlYy5iYXNlPmAgbXVzdCBub3Qgb3ZlcmxhcC4KLSAgKgotICAqIFRo aXMgZnVuY3Rpb24gc2V0cyB0aGUgbGVuZ3RoIG9mIHVuZXNjYXBlZCBzdHJpbmcgdG8KLS0gKiA6 bWVtYmVyOmBkZXN0LT5sZW4gPHNmX3ZlYy5sZW4+YC4KLSsgKiA6bWVtYmVyOmBkZXN0LT5sZW4g PHNmcGFyc2VfdmVjLmxlbj5gLgotICAqLwotLXZvaWQgc2ZfdW5lc2NhcGUoc2ZfdmVjICpkZXN0 LCBjb25zdCBzZl92ZWMgKnNyYyk7Ci0rdm9pZCBzZnBhcnNlX3VuZXNjYXBlKHNmcGFyc2VfdmVj ICpkZXN0LCBjb25zdCBzZnBhcnNlX3ZlYyAqc3JjKTsKLSAKLSAvKioKLSAgKiBAZnVuY3Rpb24K LSAgKgotLSAqIGBzZl9iYXNlNjRkZWNvZGVgIGRlY29kZXMgQmFzZTY0IGVuY29kZWQgc3RyaW5n IHxzcmN8IGFuZCB3cml0ZXMKLS0gKiB0aGUgcmVzdWx0IGludG8gfGRlc3R8LiAgfHNyY3wgc2hv dWxkIGJlIHRoZSBwb2ludGVyIHRvCi0tICogOm1lbWJlcjpgc2ZfdmFsdWUudmVjYCBvZiB0eXBl IDplbnVtOmBzZl90eXBlLlNGX1RZUEVfQllURVNFUWAKLS0gKiBwcm9kdWNlZCBieSBlaXRoZXIg YHNmX3BhcnNlcl9kaWN0YCwgYHNmX3BhcnNlcl9saXN0YCwKLS0gKiBgc2ZfcGFyc2VyX2lubmVy X2xpc3RgLCBgc2ZfcGFyc2VyX2l0ZW1gLCBvciBgc2ZfcGFyc2VyX3BhcmFtYCwKLS0gKiBvdGhl cndpc2UgdGhlIGJlaGF2aW9yIGlzIHVuZGVmaW5lZC4KLSsgKiBgc2ZwYXJzZV9iYXNlNjRkZWNv ZGVgIGRlY29kZXMgQmFzZTY0IGVuY29kZWQgc3RyaW5nIHxzcmN8IGFuZAotKyAqIHdyaXRlcyB0 aGUgcmVzdWx0IGludG8gfGRlc3R8LiAgfHNyY3wgc2hvdWxkIGJlIHRoZSBwb2ludGVyIHRvCi0r ICogOm1lbWJlcjpgc2ZwYXJzZV92YWx1ZS52ZWNgIG9mIHR5cGUKLSsgKiA6ZW51bTpgc2ZwYXJz ZV90eXBlLlNGUEFSU0VfVFlQRV9CWVRFU0VRYCBwcm9kdWNlZCBieSBlaXRoZXIKLSsgKiBgc2Zw YXJzZV9wYXJzZXJfZGljdGAsIGBzZnBhcnNlX3BhcnNlcl9saXN0YCwKLSsgKiBgc2ZwYXJzZV9w YXJzZXJfaW5uZXJfbGlzdGAsIGBzZnBhcnNlX3BhcnNlcl9pdGVtYCwgb3IKLSsgKiBgc2ZwYXJz ZV9wYXJzZXJfcGFyYW1gLCBvdGhlcndpc2UgdGhlIGJlaGF2aW9yIGlzIHVuZGVmaW5lZC4KLSsg KgotKyAqIDptZW1iZXI6YGRlc3QtPmJhc2UgPHNmcGFyc2VfdmVjLmJhc2U+YCBtdXN0IHBvaW50 IHRvIHRoZSBidWZmZXIKLSsgKiB0aGF0IGhhcyBzdWZmaWNpZW50IHNwYWNlIHRvIHN0b3JlIHRo ZSBkZWNvZGVkIGJ5dGUgc3RyaW5nLgotICAqCi0tICogOm1lbWJlcjpgZGVzdC0+YmFzZSA8c2Zf dmVjLmJhc2U+YCBtdXN0IHBvaW50IHRvIHRoZSBidWZmZXIgdGhhdAotLSAqIGhhcyBzdWZmaWNp ZW50IHNwYWNlIHRvIHN0b3JlIHRoZSBkZWNvZGVkIGJ5dGUgc3RyaW5nLgotKyAqIFRoaXMgZnVu Y3Rpb24gc2V0cyB0aGUgbGVuZ3RoIG9mIGRlY29kZWQgYnl0ZSBzdHJpbmcgdG8KLSsgKiA6bWVt YmVyOmBkZXN0LT5sZW4gPHNmcGFyc2VfdmVjLmxlbj5gLgotKyAqLwotK3ZvaWQgc2ZwYXJzZV9i YXNlNjRkZWNvZGUoc2ZwYXJzZV92ZWMgKmRlc3QsIGNvbnN0IHNmcGFyc2VfdmVjICpzcmMpOwot KwotKy8qKgotKyAqIEBmdW5jdGlvbgotKyAqCi0rICogYHNmcGFyc2VfcGN0ZGVjb2RlYCBkZWNv ZGVzIHBlcmNlbnQtZW5jb2RlZCBzdHJpbmcgfHNyY3wgYW5kIHdyaXRlcwotKyAqIHRoZSByZXN1 bHQgaW50byB8ZGVzdHwuICB8c3JjfCBzaG91bGQgYmUgdGhlIHBvaW50ZXIgdG8KLSsgKiA6bWVt YmVyOmBzZnBhcnNlX3ZhbHVlLnZlY2Agb2YgdHlwZQotKyAqIDplbnVtOmBzZnBhcnNlX3R5cGUu U0ZQQVJTRV9UWVBFX0RJU1BTVFJJTkdgIHByb2R1Y2VkIGJ5IGVpdGhlcgotKyAqIGBzZnBhcnNl X3BhcnNlcl9kaWN0YCwgYHNmcGFyc2VfcGFyc2VyX2xpc3RgLAotKyAqIGBzZnBhcnNlX3BhcnNl cl9pbm5lcl9saXN0YCwgYHNmcGFyc2VfcGFyc2VyX2l0ZW1gLCBvcgotKyAqIGBzZnBhcnNlX3Bh cnNlcl9wYXJhbWAsIG90aGVyd2lzZSB0aGUgYmVoYXZpb3IgaXMgdW5kZWZpbmVkLgotICAqCi0t ICogSWYgOm1lbWJlcjpgc3JjLT5sZW4gPHNmX3ZlYy5sZW4+YCA9PSAwLCB8KnNyY3wgaXMgYXNz aWduZWQgdG8KLS0gKiB8KmRlc3R8LgotKyAqIDptZW1iZXI6YGRlc3QtPmJhc2UgPHNmcGFyc2Vf dmVjLmJhc2U+YCBtdXN0IHBvaW50IHRvIHRoZSBidWZmZXIKLSsgKiB0aGF0IGhhcyBzdWZmaWNp ZW50IHNwYWNlIHRvIHN0b3JlIHRoZSBkZWNvZGVkIGJ5dGUgc3RyaW5nLiAgVGhlCi0rICogbWVt b3J5IGFyZWFzIHBvaW50ZWQgYnkgOm1lbWJlcjpgZGVzdC0+YmFzZSA8c2ZwYXJzZV92ZWMuYmFz ZT5gIGFuZAotKyAqIDptZW1iZXI6YHNyYy0+YmFzZSA8c2ZwYXJzZV92ZWMuYmFzZT5gIG11c3Qg bm90IG92ZXJsYXAuCi0gICoKLSAgKiBUaGlzIGZ1bmN0aW9uIHNldHMgdGhlIGxlbmd0aCBvZiBk ZWNvZGVkIGJ5dGUgc3RyaW5nIHRvCi0tICogOm1lbWJlcjpgZGVzdC0+bGVuIDxzZl92ZWMubGVu PmAuCi0rICogOm1lbWJlcjpgZGVzdC0+bGVuIDxzZnBhcnNlX3ZlYy5sZW4+YC4KLSAgKi8KLS12 b2lkIHNmX2Jhc2U2NGRlY29kZShzZl92ZWMgKmRlc3QsIGNvbnN0IHNmX3ZlYyAqc3JjKTsKLSt2 b2lkIHNmcGFyc2VfcGN0ZGVjb2RlKHNmcGFyc2VfdmVjICpkZXN0LCBjb25zdCBzZnBhcnNlX3Zl YyAqc3JjKTsKLSAKLSAjaWZkZWYgX19jcGx1c3BsdXMKLSB9Ci0tI2VuZGlmCi0rI2VuZGlmIC8q IGRlZmluZWQoX19jcGx1c3BsdXMpICovCi0gCi0tI2VuZGlmIC8qIFNGUEFSU0VfSCAqLwotKyNl bmRpZiAvKiAhZGVmaW5lZChTRlBBUlNFX0gpICovCi0tLSAKLTIuNTMuMAotCgpkaWZmIC0tZ2l0 IGEvbm9kZWpzMjIuc3BlYyBiL25vZGVqczIyLnNwZWMKaW5kZXggZDM0YWI3Zi4uZWYyZGViYiAx MDA2NDQKLS0tIGEvbm9kZWpzMjIuc3BlYworKysgYi9ub2RlanMyMi5zcGVjCkBAIC0zLDcgKzMs NyBAQAogJXtsb2FkOiV7X3NvdXJjZWRpcn0vbm9kZWpzLnNycG0ubWFjcm9zfQogCiAjID09PSBW ZXJzaW9ucyBvZiBhbnkgc29mdHdhcmUgc2hpcHBlZCBpbiB0aGUgbWFpbiBub2RlanMgdGFyYmFs bAotJW5vZGVqc19kZWZpbmVfdmVyc2lvbiBub2RlIDE6MjIuMjIuMi0le2F1dG9yZWxlYXNlfSAt cAorJW5vZGVqc19kZWZpbmVfdmVyc2lvbiBub2RlIDE6MjIuMjMuMS0le2F1dG9yZWxlYXNlfSAt cAogCiAjIFNwZWNpYWwgcmVsZWFzZSBmb3Igc3ViLXBhY2thZ2VzIHdpdGggdGhlaXIgb3duIHZl cnNpb24gc3RyaW5nLgogIyBUaGUgY29tcGxleCByZWxlYXNlIHN0cmluZyBlbnN1cmVzIHRoYXQg dGhlIHN1YnBhY2thZ2UgcmVsZWFzZSBpcyBhbHdheXMgaW5jcmVhc2luZywKQEAgLTE1LDQ0ICsx NSw0NCBAQAogIyBleHBlY3QgYW55dGhpbmcgYmV0d2VlbiB0aGUgbWFya2VycyB0byBiZSBvdmVy d3JpdHRlbiBvbiBhbnkgdXBkYXRlLgogCiAjIEJFR0lOIGF1dG9tYXRpYy12ZXJzaW9uLW1hY3Jv cyAgIyBETyBOT1QgUkVNT1ZFIFRISVMgTElORSEKLSMgVmVyc2lvbiBmcm9tIG5vZGUtdjIyLjIy LjIvc3JjL25vZGVfdmVyc2lvbi5oCisjIFZlcnNpb24gZnJvbSBub2RlLXYyMi4yMy4xL3NyYy9u b2RlX3ZlcnNpb24uaAogJWdsb2JhbCBub2RlX3NvdmVyc2lvbiAxMjcKIAotIyBWZXJzaW9uIGZy b20gbm9kZS12MjIuMjIuMi9kZXBzL2FkYS9hZGEuaAorIyBWZXJzaW9uIGZyb20gbm9kZS12MjIu MjMuMS9kZXBzL2FkYS9hZGEuaAogJW5vZGVqc19kZWZpbmVfdmVyc2lvbiBhZGEgMi45LjIKLSMg VmVyc2lvbiBmcm9tIG5vZGUtdjIyLjIyLjIvZGVwcy9icm90bGkvYy9jb21tb24vdmVyc2lvbi5o CisjIFZlcnNpb24gZnJvbSBub2RlLXYyMi4yMy4xL2RlcHMvYnJvdGxpL2MvY29tbW9uL3ZlcnNp b24uaAogJW5vZGVqc19kZWZpbmVfdmVyc2lvbiBicm90bGkgMS4xLjAKLSMgVmVyc2lvbiBmcm9t IG5vZGUtdjIyLjIyLjIvZGVwcy9jYXJlcy9pbmNsdWRlL2FyZXNfdmVyc2lvbi5oCisjIFZlcnNp b24gZnJvbSBub2RlLXYyMi4yMy4xL2RlcHMvY2FyZXMvaW5jbHVkZS9hcmVzX3ZlcnNpb24uaAog JW5vZGVqc19kZWZpbmVfdmVyc2lvbiBjX2FyZXMgMS4zNC42Ci0jIFZlcnNpb24gZnJvbSBub2Rl LXYyMi4yMi4yL2RlcHMvaGlzdG9ncmFtL2luY2x1ZGUvaGRyL2hkcl9oaXN0b2dyYW1fdmVyc2lv bi5oCisjIFZlcnNpb24gZnJvbSBub2RlLXYyMi4yMy4xL2RlcHMvaGlzdG9ncmFtL2luY2x1ZGUv aGRyL2hkcl9oaXN0b2dyYW1fdmVyc2lvbi5oCiAlbm9kZWpzX2RlZmluZV92ZXJzaW9uIGhpc3Rv Z3JhbSAwLjExLjkKLSMgVmVyc2lvbiBmcm9tIG5vZGUtdjIyLjIyLjIvdG9vbHMvaWN1L2N1cnJl bnRfdmVyLmRlcAorIyBWZXJzaW9uIGZyb20gbm9kZS12MjIuMjMuMS90b29scy9pY3UvY3VycmVu dF92ZXIuZGVwCiAlbm9kZWpzX2RlZmluZV92ZXJzaW9uIGljdSA3OC4yIC1wCi0jIFZlcnNpb24g ZnJvbSBub2RlLXYyMi4yMi4yL2RlcHMvdXYvaW5jbHVkZS91di92ZXJzaW9uLmgKKyMgVmVyc2lv biBmcm9tIG5vZGUtdjIyLjIzLjEvZGVwcy91di9pbmNsdWRlL3V2L3ZlcnNpb24uaAogJW5vZGVq c19kZWZpbmVfdmVyc2lvbiBsaWJ1diAxLjUxLjAKLSMgVmVyc2lvbiBmcm9tIG5vZGUtdjIyLjIy LjIvZGVwcy9sbGh0dHAvaW5jbHVkZS9sbGh0dHAuaAotJW5vZGVqc19kZWZpbmVfdmVyc2lvbiBs bGh0dHAgOS4zLjAKLSMgVmVyc2lvbiBmcm9tIG5vZGUtdjIyLjIyLjIvZGVwcy9uZ2h0dHAyL2xp Yi9pbmNsdWRlcy9uZ2h0dHAyL25naHR0cDJ2ZXIuaAotJW5vZGVqc19kZWZpbmVfdmVyc2lvbiBu Z2h0dHAyIDEuNjguMQotIyBWZXJzaW9uIGZyb20gbm9kZS12MjIuMjIuMi9kZXBzL25ndGNwMi9u Z2h0dHAzL2xpYi9pbmNsdWRlcy9uZ2h0dHAzL3ZlcnNpb24uaAorIyBWZXJzaW9uIGZyb20gbm9k ZS12MjIuMjMuMS9kZXBzL2xsaHR0cC9pbmNsdWRlL2xsaHR0cC5oCislbm9kZWpzX2RlZmluZV92 ZXJzaW9uIGxsaHR0cCA5LjQuMgorIyBWZXJzaW9uIGZyb20gbm9kZS12MjIuMjMuMS9kZXBzL25n aHR0cDIvbGliL2luY2x1ZGVzL25naHR0cDIvbmdodHRwMnZlci5oCislbm9kZWpzX2RlZmluZV92 ZXJzaW9uIG5naHR0cDIgMS42OS4wCisjIFZlcnNpb24gZnJvbSBub2RlLXYyMi4yMy4xL2RlcHMv bmd0Y3AyL25naHR0cDMvbGliL2luY2x1ZGVzL25naHR0cDMvdmVyc2lvbi5oCiAlbm9kZWpzX2Rl ZmluZV92ZXJzaW9uIG5naHR0cDMgMS42LjAKLSMgVmVyc2lvbiBmcm9tIG5vZGUtdjIyLjIyLjIv ZGVwcy9uZ3RjcDIvbmd0Y3AyL2xpYi9pbmNsdWRlcy9uZ3RjcDIvdmVyc2lvbi5oCisjIFZlcnNp b24gZnJvbSBub2RlLXYyMi4yMy4xL2RlcHMvbmd0Y3AyL25ndGNwMi9saWIvaW5jbHVkZXMvbmd0 Y3AyL3ZlcnNpb24uaAogJW5vZGVqc19kZWZpbmVfdmVyc2lvbiBuZ3RjcDIgMS4xMS4wCi0jIFZl cnNpb24gZnJvbSBub2RlLXYyMi4yMi4yL2RlcHMvY2pzLW1vZHVsZS1sZXhlci9zcmMvcGFja2Fn ZS5qc29uCisjIFZlcnNpb24gZnJvbSBub2RlLXYyMi4yMy4xL2RlcHMvY2pzLW1vZHVsZS1sZXhl ci9zcmMvcGFja2FnZS5qc29uCiAlbm9kZWpzX2RlZmluZV92ZXJzaW9uIG5vZGVqcy1janMtbW9k dWxlLWxleGVyIDIuMi4wCi0jIFZlcnNpb24gZnJvbSBub2RlLXYyMi4yMi4yL2xpYi9wdW55Y29k ZS5qcworIyBWZXJzaW9uIGZyb20gbm9kZS12MjIuMjMuMS9saWIvcHVueWNvZGUuanMKICVub2Rl anNfZGVmaW5lX3ZlcnNpb24gbm9kZWpzLXB1bnljb2RlIDIuMS4wCi0jIFZlcnNpb24gZnJvbSBu b2RlLXYyMi4yMi4yL2RlcHMvdW5kaWNpL3NyYy9wYWNrYWdlLmpzb24KLSVub2RlanNfZGVmaW5l X3ZlcnNpb24gbm9kZWpzLXVuZGljaSA2LjI0LjEKLSMgVmVyc2lvbiBmcm9tIG5vZGUtdjIyLjIy LjIvZGVwcy9ucG0vcGFja2FnZS5qc29uCi0lbm9kZWpzX2RlZmluZV92ZXJzaW9uIG5wbSAxOjEw LjkuNy0le25vZGVqc19zdWJwYWNrYWdlX3JlbGVhc2V9Ci0jIFZlcnNpb24gZnJvbSBub2RlLXYy Mi4yMi4yL2RlcHMvc3FsaXRlL3NxbGl0ZTMuaAotJW5vZGVqc19kZWZpbmVfdmVyc2lvbiBzcWxp dGUgMy41MS4yCi0jIFZlcnNpb24gZnJvbSBub2RlLXYyMi4yMi4yL2RlcHMvdXZ3YXNpL2luY2x1 ZGUvdXZ3YXNpLmgKKyMgVmVyc2lvbiBmcm9tIG5vZGUtdjIyLjIzLjEvZGVwcy91bmRpY2kvc3Jj L3BhY2thZ2UuanNvbgorJW5vZGVqc19kZWZpbmVfdmVyc2lvbiBub2RlanMtdW5kaWNpIDYuMjcu MAorIyBWZXJzaW9uIGZyb20gbm9kZS12MjIuMjMuMS9kZXBzL25wbS9wYWNrYWdlLmpzb24KKyVu b2RlanNfZGVmaW5lX3ZlcnNpb24gbnBtIDE6MTAuOS44LSV7bm9kZWpzX3N1YnBhY2thZ2VfcmVs ZWFzZX0KKyMgVmVyc2lvbiBmcm9tIG5vZGUtdjIyLjIzLjEvZGVwcy9zcWxpdGUvc3FsaXRlMy5o Cislbm9kZWpzX2RlZmluZV92ZXJzaW9uIHNxbGl0ZSAzLjUxLjMKKyMgVmVyc2lvbiBmcm9tIG5v ZGUtdjIyLjIzLjEvZGVwcy91dndhc2kvaW5jbHVkZS91dndhc2kuaAogJW5vZGVqc19kZWZpbmVf dmVyc2lvbiB1dndhc2kgMC4wLjIzCi0jIFZlcnNpb24gZnJvbSBub2RlLXYyMi4yMi4yL2RlcHMv djgvaW5jbHVkZS92OC12ZXJzaW9uLmgKKyMgVmVyc2lvbiBmcm9tIG5vZGUtdjIyLjIzLjEvZGVw cy92OC9pbmNsdWRlL3Y4LXZlcnNpb24uaAogJW5vZGVqc19kZWZpbmVfdmVyc2lvbiB2OCAzOjEy LjQuMjU0LjIxLSV7bm9kZWpzX3N1YnBhY2thZ2VfcmVsZWFzZX0gLXAKLSMgVmVyc2lvbiBmcm9t IG5vZGUtdjIyLjIyLjIvZGVwcy96bGliL3psaWIuaAorIyBWZXJzaW9uIGZyb20gbm9kZS12MjIu MjMuMS9kZXBzL3psaWIvemxpYi5oCiAlbm9kZWpzX2RlZmluZV92ZXJzaW9uIHpsaWIgMS4zLjEK ICMgRU5EIGF1dG9tYXRpYy12ZXJzaW9uLW1hY3JvcyAgIyBETyBOT1QgUkVNT1ZFIFRISVMgTElO RSEKIApAQCAtMTAyLDYgKzEwMiw3IEBAIEJ1aWxkUmVxdWlyZXM6ICBweXRob24le3B5dGhvbjNf cGtndmVyc2lvbn0tZGV2ZWwKIEJ1aWxkUmVxdWlyZXM6ICAle3B5M19kaXN0IHNldHVwdG9vbHMg amluamEyfQogIyBBZGRpdGlvbmFsIGxpYnJhcmllcywgZWl0aGVyIHN5c3RlbSBvciB2ZW5kb3Jl ZCBvbmVzCiBCdWlsZFJlcXVpcmVzOiAgcGtnY29uZmlnKG9wZW5zc2wpID49IDMuMC4yCitCdWls ZFJlcXVpcmVzOiAocGtnY29uZmlnKG9wZW5zc2wpID49IDMuMC4yIHdpdGggcGtnY29uZmlnKG9w ZW5zc2wpIDwgNC4wKQogJW5vZGVqc19kZWNsYXJlX2J1bmRsZWQgLWEgIGFkYQogJW5vZGVqc19k ZWNsYXJlX2J1bmRsZWQgLWEgIGJyb3RsaSAgICAgIC1wbGliYnJvdGxpZGVjLGxpYmJyb3RsaWVu YwogJW5vZGVqc19kZWNsYXJlX2J1bmRsZWQgLWEgIGMtYXJlcyAgICAgIC1wbGliY2FyZXMKQEAg LTE2NCw3ICsxNjUsNiBAQCBTb3VyY2UxMDE6ICAgICAgbm9kZWpzLnNycG0ubWFjcm9zCiAlcGF0 Y2hsaXN0CiAwMDAxLVJlbW92ZS11bnVzZWQtT3BlblNTTC1jb25maWcucGF0Y2gKIDAwMDEtZmlw cy1kaXNhYmxlLW9wdGlvbnMucGF0Y2gKLTAwMDEtZGVwcy11cGRhdGUtbmdodHRwMi10by0xLjY4 LjEucGF0Y2gKIAogJWRlc2NyaXB0aW9uCiBOb2RlLmpzIGlzIGEgcGxhdGZvcm0gYnVpbHQgb24g Q2hyb21lJ3MgSmF2YVNjcmlwdCBydW50aW1lCkBAIC0yOTYsNyArMjk2LDcgQEAgQmluYXJ5IHN5 bWxpbmtzIGZvciBOb2RlLmpzIFBhY2thZ2UgTWFuYWdlci4KIHJlYWRvbmx5IC1hIGRldmVuZG9y ZWRfcGF0aHM9KAogICAgIGRlcHMvdjgvdGhpcmRfcGFydHkvamluamEyIHRvb2xzL2luc3BlY3Rv cl9wcm90b2NvbC9qaW5qYTIKICAgICAlez8hd2l0aF9idW5kbGVkX2Jyb3RsaTpkZXBzL2Jyb3Rs aX0KLSAgICAlez8hd2l0aF9idW5kbGVkX2NfYXJlczpkZXBzL2NhcmVzfQorICAgICMlez8hd2l0 aF9idW5kbGVkX2NfYXJlczpkZXBzL2NhcmVzfQogICAgICV7PyF3aXRoX2J1bmRsZWRfbGlidXY6 ZGVwcy91dn0KICAgICAlez8hd2l0aF9idW5kbGVkX25vZGVqc19janNfbW9kdWxlX2xleGVyOmRl cHMvY2pzLW1vZHVsZS1sZXhlcn0KICAgICAlez8hd2l0aF9idW5kbGVkX25vZGVqc191bmRpY2k6 ZGVwcy91bmRpY2l9CkBAIC0zNDMsNyArMzQzLDEwIEBAIHJlYWRvbmx5IC1hIGNvbmZpZ3VyZV9m bGFncz0oCiAgICAgLS1vcGVuc3NsLXVzZS1kZWYtY2Etc3RvcmUKICAgICAjIExpbmsgd2l0aCBz eXN0ZW0gbGlicmFyaWVzIHdoZXJlIGFwcHJvcHJpYXRlCiAgICAgJXs/IXdpdGhfYnVuZGxlZF9i cm90bGk6LS1zaGFyZWQtYnJvdGxpfQotICAgICV7PyF3aXRoX2J1bmRsZWRfY19hcmVzOi0tc2hh cmVkLWNhcmVzfQorICAgICMgU3dpdGNoaW5nIHRvIGJ1bmRsZWQgYy1hcmVzIGZvciAyMi4yMy4x CisgICAgIyBEdWUgdG86CisgICAgIyAuLi8uLi9zcmMvY2FyZXNfd3JhcC5jYzoxNzMwOjIxOiBl cnJvcjogbm8gbWF0Y2hlcyBjb252ZXJ0aW5nIGZ1bmN0aW9uIOKAmENhbGxiYWNr4oCZIHRvIHR5 cGUg4oCYYXJlc19ob3N0X2NhbGxiYWNr4oCZCisgICAgIyV7PyF3aXRoX2J1bmRsZWRfY19hcmVz Oi0tc2hhcmVkLWNhcmVzfQogICAgICV7PyF3aXRoX2J1bmRsZWRfbGlidXY6LS1zaGFyZWQtbGli dXZ9CiAgICAgJXs/IXdpdGhfYnVuZGxlZF9zcWxpdGU6LS1zaGFyZWQtc3FsaXRlfQogICAgICV7 PyF3aXRoX2J1bmRsZWRfemxpYjotLXNoYXJlZC16bGlifQoKZGlmZiAtLWdpdCBhL3NvdXJjZXMg Yi9zb3VyY2VzCmluZGV4IGI3Y2QwMjMuLjMwOWZkYTEgMTAwNjQ0Ci0tLSBhL3NvdXJjZXMKKysr IGIvc291cmNlcwpAQCAtMSw0ICsxLDQgQEAKLVNIQTUxMiAobm9kZS12MjIuMjIuMi1zdHJpcHBl ZC50YXIuZ3opID0gN2ViMTNmY2FhZjhhZWFkZmU4MTM1YzM2YTM1NmRlZGUxY2Q2ODIzZjY1YzRk NDQ2ZjA4OTMzMjZiOWQ1ZDNjYWY2YTg1MmE5OWYwNGRiMzlhNDlhZTNmNmViMzczOGY5MzJiZDI5 NTNkOTdlMDY4MGExYzMxMGRmYTU4ZWM2MDcKK1NIQTUxMiAobm9kZS12MjIuMjMuMS1zdHJpcHBl ZC50YXIuZ3opID0gMzE1YjA4M2M5YmUwNTllZDY5NjU4ZWVmY2Q5YjIzOWM5YWRjNmQzZjhhYmZj NDNjYjViZTk0YjFiNmU0ZmRmZDA3MzJkMmExMTI3MDUwYWQ3ZDJmYTlhNDRmYWYwMTBjMmQzOGJl NWEyZGU4MGNmNzBiOWQyMDBkNWQ2YTVjMTQKIFNIQTUxMiAoaWN1NGMtNzguMi1kYXRhLWJpbi1i LnppcCkgPSAwMzJhMWU1MTliZjkyZGZhNzkzNmVmODVlYmVkNjk3NTUwZGJjYjRlMzJjNmVjZDI4 ZmZlY2IxNThhNDAzZWVmZjZjMGEzNTQ1YjI1NTFlYmE3M2YyODhlMzE2OTNiZTY4ODBlMjAyYTM4 Y2Q4NmMxMjlkZmZhMzk1ZThhYjYyNQogU0hBNTEyIChpY3U0Yy03OC4yLWRhdGEtYmluLWwuemlw KSA9IGMwYjQ2ZGUxMTUzMzI5NDBkMzI3Njc2MzkwNGNhYTYyNTdlYjUxNmVkY2U0MzgyNjMyZjRi OTZhNWIwMTBmZWU0Y2IwNmE1ZTEwZWY1ZWVlMmY4ODE1MTVjMWVlODI3N2Q5YWU1OTAxNWY2ZGU2 ZmUxZDE3NWI5ZDAwZGJiMWNhCiBTSEE1MTIgKHBhY2thZ2luZy1zY3JpcHRzLnRhci5neikgPSA1 MTJmMjFkYzY1M2FkODQxYjc2ODUxZDUxYTcxYmE4ZThkMzBlODU2MWQ4YTc0NTU3N2RmOTYzMWQx OWZkNGY3MzYwOWNjYjA0YTgxYzZjMjU0ZWEyY2Y5ZTJhOTVkZjBjNDk3MWVkOTNkZWI0ZDYzNzFi YThmOGExN2FlZjQ2MAo=