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: Neal Gompa To: git-commits@fedoraproject.org Subject: [rpms/ffmpeg] epel9: Add patches to support enhanced RTMP and AV1 encoding through VA-API Date: Fri, 18 Sep 2026 18:45:19 GMT Message-ID: <178975711906.1.13630053170085543863.rpms-ffmpeg-d30a3b67b368@fedoraproject.org> List-ID: X-Git-Repo: rpms/ffmpeg X-Git-Branch: epel9 X-Git-Rev: d30a3b67b3683d62ac44a073e0cc730e4089fb1d ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZmZtcGVnCiAgICAgICAgICAgIEJyYW5jaCA6IGVwZWw5CiAgICAgICAgICAg IENvbW1pdCA6IGQzMGEzYjY3YjM2ODNkNjJhYzQ0YTA3M2UwY2M3MzBlNDA4OWZiMWQKICAgICAg ICAgICAgQXV0aG9yIDogTmVhbCBHb21wYSA8bmdvbXBhQGZlZG9yYXByb2plY3Qub3JnPgogICAg ICAgICAgICBEYXRlICAgOiAyMDIzLTExLTEwVDA3OjEzOjMxLTA1OjAwCiAgICAgICAgICAgIFN0 YXRzICA6ICs1MjMwLy0yIGluIDUgZmlsZShzKQogICAgICAgICAgICBVUkwgICAgOiBodHRwczov L3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2ZmbXBlZy9jL2QzMGEzYjY3YjM2ODNkNjJhYzQ0 YTA3M2UwY2M3MzBlNDA4OWZiMWQ/YnJhbmNoPWVwZWw5CgogICAgICAgICAgICBMb2c6CiAgICAg ICAgICAgIEFkZCBwYXRjaGVzIHRvIHN1cHBvcnQgZW5oYW5jZWQgUlRNUCBhbmQgQVYxIGVuY29k aW5nIHRocm91Z2ggVkEtQVBJCgotIEZvcmNlIEFBQyBkZWNvZGluZyB0aHJvdWdoIGZkay1hYWMt ZnJlZQoKLS0tCmRpZmYgLS1naXQgYS9GRm1wZWctZGV2ZWwtdjEwLVN1cHBvcnQtZW5oYW5jZWQt Zmx2LWluLUZGbXBlZy5wYXRjaCBiL0ZGbXBlZy1kZXZlbC12MTAtU3VwcG9ydC1lbmhhbmNlZC1m bHYtaW4tRkZtcGVnLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4 ZmY3YmIKLS0tIC9kZXYvbnVsbAorKysgYi9GRm1wZWctZGV2ZWwtdjEwLVN1cHBvcnQtZW5oYW5j ZWQtZmx2LWluLUZGbXBlZy5wYXRjaApAQCAtMCwwICsxLDEyMzAgQEAKK0Zyb20gcGF0Y2h3b3Jr IE1vbiBNYXkgMTUgMDg6MzE6NTYgMjAyMworQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFy c2V0PSJ1dGYtOCIKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5n OiA3Yml0CitYLVBhdGNod29yay1TdWJtaXR0ZXI6IFN0ZXZlbiBMaXUgPGxxQGNoaW5hZmZtcGVn Lm9yZz4KK1gtUGF0Y2h3b3JrLUlkOiA0MTYxNQorRGVsaXZlcmVkLVRvOiBmZm1wZWdwYXRjaHdv cmsyQGdtYWlsLmNvbQorUmVjZWl2ZWQ6IGJ5IDIwMDI6YTA1OjZhMjA6YmE5MTpiMDoxMDU6ZmVi OjcxZjIgd2l0aCBTTVRQIGlkCisgZmIxN2NzcDE0NDM4OTZwemI7CisgICAgICAgIE1vbiwgMTUg TWF5IDIwMjMgMDE6MzM6MDEgLTA3MDAgKFBEVCkKK1gtR29vZ2xlLVNtdHAtU291cmNlOiAKKyBB Q0hIVVo2OVBnRzZmcS9LRjZJSWVLb1ZWMjlma2c3Y0FKZm1QRDNMbm5UbUk5WVlWQVBvL2FsWm03 Qis3ZitGb09nbjlySGRZVW81CitYLVJlY2VpdmVkOiBieSAyMDAyOmExNzo5MDc6OTdjYjpiMDo5 NmE6NDY1NDo5YTU3IHdpdGggU01UUCBpZAorIGpzMTEtMjAwMjBhMTcwOTA3OTdjYjAwYjAwOTZh NDY1NDlhNTdtcjE2ODY5NzU4ZWpjLjU0LjE2ODQxMzk1ODA5NTE7CisgICAgICAgIE1vbiwgMTUg TWF5IDIwMjMgMDE6MzM6MDAgLTA3MDAgKFBEVCkKK0FSQy1TZWFsOiBpPTE7IGE9cnNhLXNoYTI1 NjsgdD0xNjg0MTM5NTgwOyBjdj1ub25lOworICAgICAgICBkPWdvb2dsZS5jb207IHM9YXJjLTIw MTYwODE2OworICAgICAgICBiPWlPUkVVa3ZXRExxU0psNDB0ck03d2czdWZFUTIzRk9CTGpwc2xY c2RzNUhXeUs0OGIvNzZsRmdRd1JmSEpiSHFiaAorICAgICAgICAgdmM0TjZEb3BCNW1zUmkwVksv cEpuREFkdHV5UVIydHFFZ0x2YlpwSEp6aksxekhVS1JWNUpIbG1WaE52UU9mWVdwTVIKKyAgICAg ICAgIFZMLzFPTW1iVGN0RXphMlo3L1ZZc3JWTEhMeTRRT2xMaDR3L0pkUmN4LzdyaGlPQTFpeHBN eEM0cVViNUlHTWhucWVuCisgICAgICAgICBQMmREYkFvcWRtR1VadG1BNFZPZnhrZ2tIbklhZUZ2 K1VmZkpHSVpzMUx5YjdjM3p5dHdkcExMaWV6UnpWTFdRYVN0VworICAgICAgICAgVFZkY0RrNDVw T3JBMjlsWjQ2VHE4WU5KUDdPNXpmU2V2RklxckI4NW1ValNOb3laaTI0Z3oxOXl4SmEvMDlPMXFi K28KKyAgICAgICAgIHRoenc9PQorQVJDLU1lc3NhZ2UtU2lnbmF0dXJlOiBpPTE7IGE9cnNhLXNo YTI1NjsgYz1yZWxheGVkL3JlbGF4ZWQ7IGQ9Z29vZ2xlLmNvbTsKKyBzPWFyYy0yMDE2MDgxNjsK KyAgICAgICAgaD1zZW5kZXI6ZXJyb3JzLXRvOmNvbnRlbnQtdHJhbnNmZXItZW5jb2Rpbmc6Y2M6 cmVwbHktdG8KKyAgICAgICAgIDpsaXN0LXN1YnNjcmliZTpsaXN0LWhlbHA6bGlzdC1wb3N0Omxp c3QtYXJjaGl2ZTpsaXN0LXVuc3Vic2NyaWJlCisgICAgICAgICA6bGlzdC1pZDpwcmVjZWRlbmNl OnN1YmplY3Q6ZmVlZGJhY2staWQ6bWltZS12ZXJzaW9uOnJlZmVyZW5jZXMKKyAgICAgICAgIDpp bi1yZXBseS10bzptZXNzYWdlLWlkOmRhdGU6dG86ZnJvbTpkZWxpdmVyZWQtdG87CisgICAgICAg IGJoPVFnN3V1Z082dXFRQ1g2NytTZE5FTFZZRjM5L1dEUFJERnQxK0g3dG9RK3M9OworICAgICAg ICBiPWIxY3hkcVNWRzFPYzE1N0hsTlVBK0xmSmhrblUvbnIzZzV3blNMWG1QN0RyUitSUXAyQ0Z3 R2ZqVit3VGtmV0xvaworICAgICAgICAgV3lkdW1rWUcyYmlPcG1oTWkrbUc0Y2k1V3ZVMlI5YnYx cXBLR3JlUnBzSW1HbWp1YlF4dTVDQzlnd21lbnozYysxdjgKKyAgICAgICAgIHB1K3FrdzE0Mnc5 dU1lcmpPcGF3Nm9XdmFIcTloV0dWeTZVbmkzM0FxTUpoZmo5V3FTd0JDZXprNjJrcnh6QmFyL1ZO CisgICAgICAgICBYTmJ6enBBTUl1WGNqMERjSFM3MG9ESE9UYnRMcTR1RExHcGtRd25CcFlic3dm R0QwaDhOK0IrQlNDczNacU4vbDVKYworICAgICAgICAganVJUVk0aTNqYTJXMXlIbTZabHplMnFV OGxGUlB6UndWQlpCdjl2cm84OFZ5RmljMFVaeDl3UnVJcUpCOUJaSWIwaC8KKyAgICAgICAgIHZr aUE9PQorQVJDLUF1dGhlbnRpY2F0aW9uLVJlc3VsdHM6IGk9MTsgbXguZ29vZ2xlLmNvbTsKKyAg ICAgICBzcGY9cGFzcyAoZ29vZ2xlLmNvbTogZG9tYWluIG9mIGZmbXBlZy1kZXZlbC1ib3VuY2Vz QGZmbXBlZy5vcmcKKyBkZXNpZ25hdGVzIDc5LjEyNC4xNy4xMDAgYXMgcGVybWl0dGVkIHNlbmRl cikKKyBzbXRwLm1haWxmcm9tPWZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmcKK1JldHVy bi1QYXRoOiA8ZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZz4KK1JlY2VpdmVkOiBmcm9t IGZmYm94MC1iZy5tcGxheWVyaHEuaHUgKGZmYm94MC1iZy5mZm1wZWcub3JnLiBbNzkuMTI0LjE3 LjEwMF0pCisgICAgICAgIGJ5IG14Lmdvb2dsZS5jb20gd2l0aCBFU01UUCBpZAorIGd0MzctMjAw MjBhMTcwOTA3MmRhNTAwYjAwOTZiMWMzODQ1OGRzaTI4MjgxMTZlamMuNDA5LjIwMjMuMDUuMTUu MDEuMzMuMDA7CisgICAgICAgIE1vbiwgMTUgTWF5IDIwMjMgMDE6MzM6MDAgLTA3MDAgKFBEVCkK K1JlY2VpdmVkLVNQRjogcGFzcyAoZ29vZ2xlLmNvbTogZG9tYWluIG9mIGZmbXBlZy1kZXZlbC1i b3VuY2VzQGZmbXBlZy5vcmcKKyBkZXNpZ25hdGVzIDc5LjEyNC4xNy4xMDAgYXMgcGVybWl0dGVk IHNlbmRlcikgY2xpZW50LWlwPTc5LjEyNC4xNy4xMDA7CitBdXRoZW50aWNhdGlvbi1SZXN1bHRz OiBteC5nb29nbGUuY29tOworICAgICAgIHNwZj1wYXNzIChnb29nbGUuY29tOiBkb21haW4gb2Yg ZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZworIGRlc2lnbmF0ZXMgNzkuMTI0LjE3LjEw MCBhcyBwZXJtaXR0ZWQgc2VuZGVyKQorIHNtdHAubWFpbGZyb209ZmZtcGVnLWRldmVsLWJvdW5j ZXNAZmZtcGVnLm9yZworUmVjZWl2ZWQ6IGZyb20gWzEyNy4wLjEuMV0gKGxvY2FsaG9zdCBbMTI3 LjAuMC4xXSkKKwlieSBmZmJveDAtYmcubXBsYXllcmhxLmh1IChQb3N0Zml4KSB3aXRoIEVTTVRQ IGlkIEQ5MzA1NjhCRTBDOworCU1vbiwgMTUgTWF5IDIwMjMgMTE6MzI6NTcgKzAzMDAgKEVFU1Qp CitYLU9yaWdpbmFsLVRvOiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZworRGVsaXZlcmVkLVRvOiBm Zm1wZWctZGV2ZWxAZmZtcGVnLm9yZworUmVjZWl2ZWQ6IGZyb20gYmc0LmV4bWFpbC5xcS5jb20g KGJnNC5leG1haWwucXEuY29tIFs0My4xNTUuNjcuMTU4XSkKKyBieSBmZmJveDAtYmcubXBsYXll cmhxLmh1IChQb3N0Zml4KSB3aXRoIEVTTVRQUyBpZCA1MjJGNzY4MDI3NAorIGZvciA8ZmZtcGVn LWRldmVsQGZmbXBlZy5vcmc+OyBNb24sIDE1IE1heSAyMDIzIDExOjMyOjQ5ICswMzAwIChFRVNU KQorWC1RUS1taWQ6IGJpemVzbXRwNjh0MTY4NDEzOTU2NHRnNjQycGJsCitSZWNlaXZlZDogZnJv bSBsb2NhbGhvc3QgKCBbMTAzLjEwMi4yMDMuMjA0XSkgYnkgYml6ZXNtdHAucXEuY29tIChFU01U UCkgd2l0aAorIGlkIDsgTW9uLCAxNSBNYXkgMjAyMyAxNjozMjo0MiArMDgwMCAoQ1NUKQorWC1R US1TU0Y6IDAxMTAwMDAwMDAwMDAwWjBaMDAwMDAwQTAwMDAwMDAKK1gtUVEtRkVBVDogbkNNVDBZ S1MzaTFNVTdJWFNzaVMxUndkZTZpLzRScTJrdVBPMlBvWHczT3Z0SkIyNE1VK1kyR3dkRWc0WQor IHBnMFpmU2dnTTNWQm1SQ2tISTNpb1NPSDJtdlZ5WUc5TGd3aGh5Zml4UGFGSXRjcEY0RUY2eG9a ZXBRcGExSDV2MUJEaTdzCisgaXdDd0Yzc2hnSDhkbDk2aUpLS3J5VDRUdGpVVG5ZUm9SaENQdExD R2ZVdGhhTS9SNDR4ZHF4UnZqRHFJVm4xQlVNYjVHUHUKKyBETXVhc2t6TzhRUUNGeHZkdVV2b3Zr WGpKYzV2MTdLcm0ybGY5NDVUbW0vcElwVi9xTGpBZ0FoWUhxT294cmdCR0haRFlXWQorIDBYZVM3 UnZZa0tUUjI0ejltOVNrNzV2ZU9US3RGemtzbmJMSllrSURZait2b0FkMWRqWFBKV3R1QjJlbGht L0RJYTkrNWxXCisgMkRuS3JKL0JiMk9rMTNnZ1hvQzYwMGpIY3hrTGJ1T3FEdUs1azVEaHViN0VD T1RQSnl0aGtNVitGWVFDdz09CitYLVFRLUdvb2RCZzogMAorWC1CSVpNQUlMLUlEOiAxNDU0NzM0 ODE1NjI4MDYzODc5MQorRnJvbTogU3RldmVuIExpdSA8bHFAY2hpbmFmZm1wZWcub3JnPgorVG86 IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCitEYXRlOiBNb24sIDE1IE1heSAyMDIzIDE2OjMxOjU2 ICswODAwCitNZXNzYWdlLUlkOiA8MjAyMzA1MTUwODMyMDEuNDgyMDEtMi1scUBjaGluYWZmbXBl Zy5vcmc+CitYLU1haWxlcjogZ2l0LXNlbmQtZW1haWwgMi40MC4wCitJbi1SZXBseS1UbzogPDIw MjMwNTE1MDgzMjAxLjQ4MjAxLTEtbHFAY2hpbmFmZm1wZWcub3JnPgorUmVmZXJlbmNlczogCisg PENBRWctSmUtdllEOTdLbmJhcVRrSzU9VUo5VDNodG10SDNReWtjd28zK3JOQ3g9dytqUUBtYWls LmdtYWlsLmNvbT4KKyA8MjAyMzA1MTUwODMyMDEuNDgyMDEtMS1scUBjaGluYWZmbXBlZy5vcmc+ CitNSU1FLVZlcnNpb246IDEuMAorWC1RUS1TRU5EU0laRTogNTIwCitGZWVkYmFjay1JRDogYml6 ZXNtdHA6Y2hpbmFmZm1wZWcub3JnOnF5Ymdsb2dpY3N2cnN6OnF5Ymdsb2dpY3N2cnN6M2EtMwor U3ViamVjdDogW0ZGbXBlZy1kZXZlbF0gW1BBVENIIHYxMCAxLzZdIGF2Zm9ybWF0L2ZsdmVuYzog c3VwcG9ydCBtdXggaGV2YyBpbgorIGVuaGFuY2VkIGZsdgorWC1CZWVuVGhlcmU6IGZmbXBlZy1k ZXZlbEBmZm1wZWcub3JnCitYLU1haWxtYW4tVmVyc2lvbjogMi4xLjI5CitQcmVjZWRlbmNlOiBs aXN0CitMaXN0LUlkOiBGRm1wZWcgZGV2ZWxvcG1lbnQgZGlzY3Vzc2lvbnMgYW5kIHBhdGNoZXMg PGZmbXBlZy1kZXZlbC5mZm1wZWcub3JnPgorTGlzdC1VbnN1YnNjcmliZTogPGh0dHBzOi8vZmZt cGVnLm9yZy9tYWlsbWFuL29wdGlvbnMvZmZtcGVnLWRldmVsPiwKKyA8bWFpbHRvOmZmbXBlZy1k ZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmc/c3ViamVjdD11bnN1YnNjcmliZT4KK0xpc3QtQXJjaGl2 ZTogPGh0dHBzOi8vZmZtcGVnLm9yZy9waXBlcm1haWwvZmZtcGVnLWRldmVsPgorTGlzdC1Qb3N0 OiA8bWFpbHRvOmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnPgorTGlzdC1IZWxwOiA8bWFpbHRvOmZm bXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmc/c3ViamVjdD1oZWxwPgorTGlzdC1TdWJzY3Jp YmU6IDxodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWw+LAor IDxtYWlsdG86ZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZz9zdWJqZWN0PXN1YnNjcmli ZT4KK1JlcGx5LVRvOiBGRm1wZWcgZGV2ZWxvcG1lbnQgZGlzY3Vzc2lvbnMgYW5kIHBhdGNoZXMg PGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnPgorQ2M6IFN0ZXZlbiBMaXUgPGxxQGNoaW5hZmZtcGVn Lm9yZz4KK0Vycm9ycy1UbzogZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZworU2VuZGVy OiAiZmZtcGVnLWRldmVsIiA8ZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZz4KK1gtVFVJ RDogV1VoSEM0L2RYdWsrCisKK1NpZ25lZC1vZmYtYnk6IFN0ZXZlbiBMaXUgPGxxQGNoaW5hZmZt cGVnLm9yZz4KKy0tLQorIGxpYmF2Zm9ybWF0L01ha2VmaWxlIHwgIDIgKy0KKyBsaWJhdmZvcm1h dC9mbHYuaCAgICB8IDE1ICsrKysrKysrKysrKysrKworIGxpYmF2Zm9ybWF0L2ZsdmVuYy5jIHwg MzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KKyAzIGZpbGVzIGNoYW5n ZWQsIDQ1IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGli YXZmb3JtYXQvTWFrZWZpbGUgYi9saWJhdmZvcm1hdC9NYWtlZmlsZQoraW5kZXggZjhhZDdjNmEx MS4uMWVmM2QxNTQ2NyAxMDA2NDQKKy0tLSBhL2xpYmF2Zm9ybWF0L01ha2VmaWxlCisrKysgYi9s aWJhdmZvcm1hdC9NYWtlZmlsZQorQEAgLTIxNCw3ICsyMTQsNyBAQCBPQkpTLSQoQ09ORklHX0ZM QUNfTVVYRVIpICAgICAgICAgICAgICAgICs9IGZsYWNlbmMubyBmbGFjZW5jX2hlYWRlci5vIFwK KyBPQkpTLSQoQ09ORklHX0ZMSUNfREVNVVhFUikgICAgICAgICAgICAgICs9IGZsaWMubworIE9C SlMtJChDT05GSUdfRkxWX0RFTVVYRVIpICAgICAgICAgICAgICAgKz0gZmx2ZGVjLm8KKyBPQkpT LSQoQ09ORklHX0xJVkVfRkxWX0RFTVVYRVIpICAgICAgICAgICs9IGZsdmRlYy5vCistT0JKUy0k KENPTkZJR19GTFZfTVVYRVIpICAgICAgICAgICAgICAgICArPSBmbHZlbmMubyBhdmMubworK09C SlMtJChDT05GSUdfRkxWX01VWEVSKSAgICAgICAgICAgICAgICAgKz0gZmx2ZW5jLm8gYXZjLm8g aGV2Yy5vCisgT0JKUy0kKENPTkZJR19GT1VSWE1fREVNVVhFUikgICAgICAgICAgICArPSA0eG0u bworIE9CSlMtJChDT05GSUdfRlJBTUVDUkNfTVVYRVIpICAgICAgICAgICAgKz0gZnJhbWVjcmNl bmMubyBmcmFtZWhhc2gubworIE9CSlMtJChDT05GSUdfRlJBTUVIQVNIX01VWEVSKSAgICAgICAg ICAgKz0gaGFzaGVuYy5vIGZyYW1laGFzaC5vCitkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvZmx2 LmggYi9saWJhdmZvcm1hdC9mbHYuaAoraW5kZXggMzU3MWI5MDI3OS4uOTFlMGE0MTQwYyAxMDA2 NDQKKy0tLSBhL2xpYmF2Zm9ybWF0L2Zsdi5oCisrKysgYi9saWJhdmZvcm1hdC9mbHYuaAorQEAg LTM1LDYgKzM1LDEyIEBACisgCisgI2RlZmluZSBGTFZfVklERU9fRlJBTUVUWVBFX09GRlNFVCAg IDQKKyAKKysvKiBFeHRlbmRlZCBWaWRlb1RhZ0hlYWRlcgorKyAqIGRlZmluZWQgaW4gcmVmZXJl bmNlIGxpbms6CisrICogaHR0cHM6Ly9naXRodWIuY29tL3Zlb3ZlcmEvZW5oYW5jZWQtcnRtcC9i bG9iL21haW4vZW5oYW5jZWQtcnRtcC12MS5wZGYKKysgKiAqLworKyNkZWZpbmUgRkxWX0lTX0VY X0hFQURFUiAgICAgICAgICAweDgwCisrCisgLyogYml0bWFza3MgdG8gaXNvbGF0ZSBzcGVjaWZp YyB2YWx1ZXMgKi8KKyAjZGVmaW5lIEZMVl9BVURJT19DSEFOTkVMX01BU0sgICAgMHgwMQorICNk ZWZpbmUgRkxWX0FVRElPX1NBTVBMRVNJWkVfTUFTSyAweDAyCitAQCAtMTEyLDYgKzExOCwxNSBA QCBlbnVtIHsKKyAgICAgRkxWX0NPREVDSURfTVBFRzQgICA9IDksCisgfTsKKyAKKytlbnVtIHsK KysgICAgUGFja2V0VHlwZVNlcXVlbmNlU3RhcnQgICAgICAgICA9IDAsCisrICAgIFBhY2tldFR5 cGVDb2RlZEZyYW1lcyAgICAgICAgICAgPSAxLAorKyAgICBQYWNrZXRUeXBlU2VxdWVuY2VFbmQg ICAgICAgICAgID0gMiwKKysgICAgUGFja2V0VHlwZUNvZGVkRnJhbWVzWCAgICAgICAgICA9IDMs CisrICAgIFBhY2tldFR5cGVNZXRhZGF0YSAgICAgICAgICAgICAgPSA0LAorKyAgICBQYWNrZXRU eXBlTVBFRzJUU1NlcXVlbmNlU3RhcnQgID0gNSwKKyt9OworKworIGVudW0geworICAgICBGTFZf RlJBTUVfS0VZICAgICAgICAgICAgPSAxIDw8IEZMVl9WSURFT19GUkFNRVRZUEVfT0ZGU0VULCAv Ly88IGtleSBmcmFtZSAoZm9yIEFWQywgYSBzZWVrYWJsZSBmcmFtZSkKKyAgICAgRkxWX0ZSQU1F X0lOVEVSICAgICAgICAgID0gMiA8PCBGTFZfVklERU9fRlJBTUVUWVBFX09GRlNFVCwgLy8vPCBp bnRlciBmcmFtZSAoZm9yIEFWQywgYSBub24tc2Vla2FibGUgZnJhbWUpCitkaWZmIC0tZ2l0IGEv bGliYXZmb3JtYXQvZmx2ZW5jLmMgYi9saWJhdmZvcm1hdC9mbHZlbmMuYworaW5kZXggNzIxZjA2 MjgxMS4uMzVlMTk4ZmExNSAxMDA2NDQKKy0tLSBhL2xpYmF2Zm9ybWF0L2ZsdmVuYy5jCisrKysg Yi9saWJhdmZvcm1hdC9mbHZlbmMuYworQEAgLTI4LDYgKzI4LDcgQEAKKyAjaW5jbHVkZSAibGli YXZjb2RlYy9tcGVnNGF1ZGlvLmgiCisgI2luY2x1ZGUgImF2aW8uaCIKKyAjaW5jbHVkZSAiYXZj LmgiCisrI2luY2x1ZGUgImhldmMuaCIKKyAjaW5jbHVkZSAiYXZmb3JtYXQuaCIKKyAjaW5jbHVk ZSAiZmx2LmgiCisgI2luY2x1ZGUgImludGVybmFsLmgiCitAQCAtNDYsNiArNDcsNyBAQCBzdGF0 aWMgY29uc3QgQVZDb2RlY1RhZyBmbHZfdmlkZW9fY29kZWNfaWRzW10gPSB7CisgICAgIHsgQVZf Q09ERUNfSURfVlA2LCAgICAgIEZMVl9DT0RFQ0lEX1ZQNiB9LAorICAgICB7IEFWX0NPREVDX0lE X1ZQNkEsICAgICBGTFZfQ09ERUNJRF9WUDZBIH0sCisgICAgIHsgQVZfQ09ERUNfSURfSDI2NCwg ICAgIEZMVl9DT0RFQ0lEX0gyNjQgfSwKKysgICAgeyBBVl9DT0RFQ19JRF9IRVZDLCAgICAgTUtC RVRBRygnaCcsICd2JywgJ2MnLCAnMScpIH0sCisgICAgIHsgQVZfQ09ERUNfSURfTk9ORSwgICAg IDAgfQorIH07CisgCitAQCAtNDg5LDcgKzQ5MSw3IEBAIHN0YXRpYyB2b2lkIGZsdl93cml0ZV9j b2RlY19oZWFkZXIoQVZGb3JtYXRDb250ZXh0KiBzLCBBVkNvZGVjUGFyYW1ldGVycyogcGFyLCBp CisgICAgIEZMVkNvbnRleHQgKmZsdiA9IHMtPnByaXZfZGF0YTsKKyAKKyAgICAgaWYgKHBhci0+ Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQUFDIHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNf SURfSDI2NAorLSAgICAgICAgICAgIHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBF RzQpIHsKKysgICAgICAgICAgICB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUc0 IHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQykgeworICAgICAgICAgaW50NjRf dCBwb3M7CisgICAgICAgICBhdmlvX3c4KHBiLAorICAgICAgICAgICAgICAgICBwYXItPmNvZGVj X3R5cGUgPT0gQVZNRURJQV9UWVBFX1ZJREVPID8KK0BAIC01MzIsMTAgKzUzNCwxOSBAQCBzdGF0 aWMgdm9pZCBmbHZfd3JpdGVfY29kZWNfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCogcywgQVZDb2Rl Y1BhcmFtZXRlcnMqIHBhciwgaQorICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBhdmlvX3dy aXRlKHBiLCBwYXItPmV4dHJhZGF0YSwgcGFyLT5leHRyYWRhdGFfc2l6ZSk7CisgICAgICAgICB9 IGVsc2UgeworLSAgICAgICAgICAgIGF2aW9fdzgocGIsIHBhci0+Y29kZWNfdGFnIHwgRkxWX0ZS QU1FX0tFWSk7IC8vIGZsYWdzCistICAgICAgICAgICAgYXZpb193OChwYiwgMCk7IC8vIEFWQyBz ZXF1ZW5jZSBoZWFkZXIKKy0gICAgICAgICAgICBhdmlvX3diMjQocGIsIDApOyAvLyBjb21wb3Np dGlvbiB0aW1lCistICAgICAgICAgICAgZmZfaXNvbV93cml0ZV9hdmNjKHBiLCBwYXItPmV4dHJh ZGF0YSwgcGFyLT5leHRyYWRhdGFfc2l6ZSk7CisrICAgICAgICAgICAgaWYgKHBhci0+Y29kZWNf aWQgPT0gQVZfQ09ERUNfSURfSEVWQykgeworKyAgICAgICAgICAgICAgICBhdmlvX3c4KHBiLCBG TFZfSVNfRVhfSEVBREVSIHwgUGFja2V0VHlwZVNlcXVlbmNlU3RhcnQpOyAvLyBFeFZpZGVvVGFn SGVhZGVyIG1vZGUgd2l0aCBQYWNrZXRUeXBlU2VxdWVuY2VTdGFydAorKyAgICAgICAgICAgICAg ICBhdmlvX3dyaXRlKHBiLCAiaHZjMSIsIDQpOworKyAgICAgICAgICAgIH0gZWxzZSB7CisrICAg ICAgICAgICAgICAgIGF2aW9fdzgocGIsIHBhci0+Y29kZWNfdGFnIHwgRkxWX0ZSQU1FX0tFWSk7 IC8vIGZsYWdzCisrICAgICAgICAgICAgICAgIGF2aW9fdzgocGIsIDApOyAvLyBBVkMgc2VxdWVu Y2UgaGVhZGVyCisrICAgICAgICAgICAgICAgIGF2aW9fd2IyNChwYiwgMCk7IC8vIGNvbXBvc2l0 aW9uIHRpbWUKKysgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgaWYgKHBhci0+Y29kZWNf aWQgPT0gQVZfQ09ERUNfSURfSEVWQykKKysgICAgICAgICAgICAgICAgZmZfaXNvbV93cml0ZV9o dmNjKHBiLCBwYXItPmV4dHJhZGF0YSwgcGFyLT5leHRyYWRhdGFfc2l6ZSwgMCk7CisrICAgICAg ICAgICAgZWxzZQorKyAgICAgICAgICAgICAgICBmZl9pc29tX3dyaXRlX2F2Y2MocGIsIHBhci0+ ZXh0cmFkYXRhLCBwYXItPmV4dHJhZGF0YV9zaXplKTsKKyAgICAgICAgIH0KKyAgICAgICAgIGRh dGFfc2l6ZSA9IGF2aW9fdGVsbChwYikgLSBwb3M7CisgICAgICAgICBhdmlvX3NlZWsocGIsIC1k YXRhX3NpemUgLSAxMCwgU0VFS19DVVIpOworQEAgLTgzMiwxMyArODQzLDEzIEBAIHN0YXRpYyBp bnQgZmx2X3dyaXRlX3BhY2tldChBVkZvcm1hdENvbnRleHQgKnMsIEFWUGFja2V0ICpwa3QpCisg ICAgIGlmIChwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1ZQNkYgfHwgcGFyLT5jb2RlY19p ZCA9PSBBVl9DT0RFQ19JRF9WUDZBIHx8CisgICAgICAgICBwYXItPmNvZGVjX2lkID09IEFWX0NP REVDX0lEX1ZQNiAgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BQUMpCisgICAgICAg ICBmbGFnc19zaXplID0gMjsKKy0gICAgZWxzZSBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RF Q19JRF9IMjY0IHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzQpCisrICAgIGVs c2UgaWYgKHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSDI2NCB8fCBwYXItPmNvZGVjX2lk ID09IEFWX0NPREVDX0lEX01QRUc0IHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVW QykKKyAgICAgICAgIGZsYWdzX3NpemUgPSA1OworICAgICBlbHNlCisgICAgICAgICBmbGFnc19z aXplID0gMTsKKyAKKyAgICAgaWYgKHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQUFDIHx8 IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSDI2NAorLSAgICAgICAgICAgIHx8IHBhci0+ Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzQpIHsKKysgICAgICAgICAgICB8fCBwYXItPmNv ZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUc0IHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNf SURfSEVWQykgeworICAgICAgICAgc2l6ZV90IHNpZGVfc2l6ZTsKKyAgICAgICAgIHVpbnQ4X3Qg KnNpZGUgPSBhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0YShwa3QsIEFWX1BLVF9EQVRBX05FV19FWFRS QURBVEEsICZzaWRlX3NpemUpOworICAgICAgICAgaWYgKHNpZGUgJiYgc2lkZV9zaXplID4gMCAm JiAoc2lkZV9zaXplICE9IHBhci0+ZXh0cmFkYXRhX3NpemUgfHwgbWVtY21wKHNpZGUsIHBhci0+ ZXh0cmFkYXRhLCBzaWRlX3NpemUpKSkgeworQEAgLTg1OCw3ICs4NjksNyBAQCBzdGF0aWMgaW50 IGZsdl93cml0ZV9wYWNrZXQoQVZGb3JtYXRDb250ZXh0ICpzLCBBVlBhY2tldCAqcGt0KQorICAg ICAgICAgICAgICAgICJQYWNrZXRzIGFyZSBub3QgaW4gdGhlIHByb3BlciBvcmRlciB3aXRoIHJl c3BlY3QgdG8gRFRTXG4iKTsKKyAgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7CisgICAg IH0KKy0gICAgaWYgKHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSDI2NCB8fCBwYXItPmNv ZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUc0KSB7CisrICAgIGlmIChwYXItPmNvZGVjX2lkID09 IEFWX0NPREVDX0lEX0gyNjQgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHNCB8 fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkMpIHsKKyAgICAgICAgIGlmIChwa3Qt PnB0cyA9PSBBVl9OT1BUU19WQUxVRSkgeworICAgICAgICAgICAgIGF2X2xvZyhzLCBBVl9MT0df RVJST1IsICJQYWNrZXQgaXMgbWlzc2luZyBQVFNcbiIpOworICAgICAgICAgICAgIHJldHVybiBB VkVSUk9SKEVJTlZBTCk7CitAQCAtOTAzLDYgKzkxNCwxMCBAQCBzdGF0aWMgaW50IGZsdl93cml0 ZV9wYWNrZXQoQVZGb3JtYXRDb250ZXh0ICpzLCBBVlBhY2tldCAqcGt0KQorICAgICAgICAgaWYg KHBhci0+ZXh0cmFkYXRhX3NpemUgPiAwICYmICoodWludDhfdCopcGFyLT5leHRyYWRhdGEgIT0g MSkKKyAgICAgICAgICAgICBpZiAoKHJldCA9IGZmX2F2Y19wYXJzZV9uYWxfdW5pdHNfYnVmKHBr dC0+ZGF0YSwgJmRhdGEsICZzaXplKSkgPCAwKQorICAgICAgICAgICAgICAgICByZXR1cm4gcmV0 OworKyAgICB9IGVsc2UgaWYgKHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQykgewor KyAgICAgICAgaWYgKHBhci0+ZXh0cmFkYXRhX3NpemUgPiAwICYmICoodWludDhfdCopcGFyLT5l eHRyYWRhdGEgIT0gMSkKKysgICAgICAgICAgICBpZiAoKHJldCA9IGZmX2hldmNfYW5uZXhiMm1w NF9idWYocGt0LT5kYXRhLCAmZGF0YSwgJnNpemUsIDAsIE5VTEwpKSA8IDApCisrICAgICAgICAg ICAgICAgIHJldHVybiByZXQ7CisgICAgIH0gZWxzZSBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9D T0RFQ19JRF9BQUMgJiYgcGt0LT5zaXplID4gMiAmJgorICAgICAgICAgICAgICAgIChBVl9SQjE2 KHBrdC0+ZGF0YSkgJiAweGZmZjApID09IDB4ZmZmMCkgeworICAgICAgICAgaWYgKCFzLT5zdHJl YW1zW3BrdC0+c3RyZWFtX2luZGV4XS0+bmJfZnJhbWVzKSB7CitAQCAtOTY0LDcgKzk3OSwxMiBA QCBzdGF0aWMgaW50IGZsdl93cml0ZV9wYWNrZXQoQVZGb3JtYXRDb250ZXh0ICpzLCBBVlBhY2tl dCAqcGt0KQorICAgICAgICAgYXZpb193YjMyKHBiLCBkYXRhX3NpemUgKyAxMSk7CisgICAgIH0g ZWxzZSB7CisgICAgICAgICBhdl9hc3NlcnQxKGZsYWdzPj0wKTsKKy0gICAgICAgIGF2aW9fdzgo cGIsZmxhZ3MpOworKyAgICAgICAgaWYgKHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVW QykgeworKyAgICAgICAgICAgIGF2aW9fdzgocGIsIEZMVl9JU19FWF9IRUFERVIgfCBQYWNrZXRU eXBlQ29kZWRGcmFtZXNYKTsgLy8gRXhWaWRlb1RhZ0hlYWRlciBtb2RlIHdpdGggUGFja2V0VHlw ZUNvZGVkRnJhbWVzWAorKyAgICAgICAgICAgIGF2aW9fd3JpdGUocGIsICJodmMxIiwgNCk7Cisr ICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgIGF2aW9fdzgocGIsIGZsYWdzKTsKKysgICAg ICAgIH0KKyAgICAgICAgIGlmIChwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1ZQNikKKyAg ICAgICAgICAgICBhdmlvX3c4KHBiLDApOworICAgICAgICAgaWYgKHBhci0+Y29kZWNfaWQgPT0g QVZfQ09ERUNfSURfVlA2RiB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1ZQNkEpIHsK KworRnJvbSBwYXRjaHdvcmsgTW9uIE1heSAxNSAwODozMTo1NyAyMDIzCitDb250ZW50LVR5cGU6 IHRleHQvcGxhaW47IGNoYXJzZXQ9InV0Zi04IgorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQt VHJhbnNmZXItRW5jb2Rpbmc6IDdiaXQKK1gtUGF0Y2h3b3JrLVN1Ym1pdHRlcjogU3RldmVuIExp dSA8bHFAY2hpbmFmZm1wZWcub3JnPgorWC1QYXRjaHdvcmstSWQ6IDQxNjE2CitEZWxpdmVyZWQt VG86IGZmbXBlZ3BhdGNod29yazJAZ21haWwuY29tCitSZWNlaXZlZDogYnkgMjAwMjphMDU6NmEy MDpiYTkxOmIwOjEwNTpmZWI6NzFmMiB3aXRoIFNNVFAgaWQKKyBmYjE3Y3NwMTQ0NDEyM3B6YjsK KyAgICAgICAgTW9uLCAxNSBNYXkgMjAyMyAwMTozMzoyMiAtMDcwMCAoUERUKQorWC1Hb29nbGUt U210cC1Tb3VyY2U6IAorIEFDSEhVWjRxU3FuSEFSQVRZdk5UT2lYaE1JSWdHV1VIbzYxMndOM1Vp MXIzY1lQUWQ1N0UrQjlraUNSWWlqRGh6Z09iS01La0RtNTQKK1gtUmVjZWl2ZWQ6IGJ5IDIwMDI6 YTE3OjkwNzo2ZThlOmIwOjk0ZjozNTIxOjM5NiB3aXRoIFNNVFAgaWQKKyBzaDE0LTIwMDIwYTE3 MDkwNzZlOGUwMGIwMDk0ZjM1MjEwMzk2bXIzNTc0MDg4M2VqYy4yMy4xNjg0MTM5NjAyMDExOwor ICAgICAgICBNb24sIDE1IE1heSAyMDIzIDAxOjMzOjIyIC0wNzAwIChQRFQpCitBUkMtU2VhbDog aT0xOyBhPXJzYS1zaGEyNTY7IHQ9MTY4NDEzOTYwMTsgY3Y9bm9uZTsKKyAgICAgICAgZD1nb29n bGUuY29tOyBzPWFyYy0yMDE2MDgxNjsKKyAgICAgICAgYj1FRkpneDljbTVldzIrUElwVGVIaTdR Q3pvcy8vb09zNXEvSG5kUXhjMCtkSFlsanU1WDRyVlNBQ21mazlMMERIM2oKKyAgICAgICAgICtj RzBuMi8zd0FzZ3VBMXJDM0I4YStxWGtSZkFYQzFyb3B1aER3S0NaQ2R3MEl2NDBWbTRKZUhvbEVR V1JuaThLbytGCisgICAgICAgICBNaFdZN0F2eHJYNEdzTzBwcDRTZktzVkZhSmRvMThkbHBuK0JV ZDlGWDVON1Y2bFVUYWRRc1ZjSllKQmQyQjJNSVJVaQorICAgICAgICAgbUphRVBwOFdwUmtpUzky RGdXaFB6VUM5RUxud3J5U25OTDBtT285RENkOWNqRlhROUtYVzZxalJvUDBibGJMOE4yd3MKKyAg ICAgICAgIEJsWTJkSlZtU00zNm4vR0s5Z1piKzZmVWczeFZ1ZkRVZmRScjBtNGpwYS9JTEQ5My9u d0Fac3FoazNrNGowMHNlK0NPCisgICAgICAgICA3VnJ3PT0KK0FSQy1NZXNzYWdlLVNpZ25hdHVy ZTogaT0xOyBhPXJzYS1zaGEyNTY7IGM9cmVsYXhlZC9yZWxheGVkOyBkPWdvb2dsZS5jb207Cisg cz1hcmMtMjAxNjA4MTY7CisgICAgICAgIGg9c2VuZGVyOmVycm9ycy10bzpjb250ZW50LXRyYW5z ZmVyLWVuY29kaW5nOmNjOnJlcGx5LXRvCisgICAgICAgICA6bGlzdC1zdWJzY3JpYmU6bGlzdC1o ZWxwOmxpc3QtcG9zdDpsaXN0LWFyY2hpdmU6bGlzdC11bnN1YnNjcmliZQorICAgICAgICAgOmxp c3QtaWQ6cHJlY2VkZW5jZTpzdWJqZWN0OmZlZWRiYWNrLWlkOm1pbWUtdmVyc2lvbjpyZWZlcmVu Y2VzCisgICAgICAgICA6aW4tcmVwbHktdG86bWVzc2FnZS1pZDpkYXRlOnRvOmZyb206ZGVsaXZl cmVkLXRvOworICAgICAgICBiaD15Z1ViNjBUcjVMYlBuaGlTMUFzK2hMK3FYNDVLSUkrb2NwWTlY M0pxNFRJPTsKKyAgICAgICAgYj1VcEdocWJmby8rbTlXVzVxRTkyTEtPZE9seGtDV3l5MlFWcWlY Q2pYcHhlcGREZDBJS2toR3FTc3B0ZTl6SnJVVDgKKyAgICAgICAgIFFXZzhJaURLNkpUbkdudnAr aE82ZG9aamhYYzFHeXlUeDZjTVFRWCsySnpxVHRiV0YwM1M5NEd3QmdtTi9VMlJJSzlNCisgICAg ICAgICBmOTgwU1NnZk5aUlNKRjVrSitkTzJpeDRNNVdJV2h4RVlCL01Sem4vUmJ4QXZZa3dMTkcx Z01NQlROaW1vZ2JGc1hSbworICAgICAgICAgaDVXZ0d4TzRrOG14L3g4UEJydE52MWFQWjg2RkFj WEMzQWllYW83YVZuUkR2V2plcEV1czVqRWZHdTJRdXFudk0ycUsKKyAgICAgICAgIFdJalV5RnJw cEpML2NyQU50Z1IrdEZjTDgzOTViUkdZT2JZdElCYmxVUS9nNWRkSHpqc2FDbEovNDJyM2gxdmV6 MzlxCisgICAgICAgICBuUGpRPT0KK0FSQy1BdXRoZW50aWNhdGlvbi1SZXN1bHRzOiBpPTE7IG14 Lmdvb2dsZS5jb207CisgICAgICAgc3BmPXBhc3MgKGdvb2dsZS5jb206IGRvbWFpbiBvZiBmZm1w ZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnCisgZGVzaWduYXRlcyA3OS4xMjQuMTcuMTAwIGFz IHBlcm1pdHRlZCBzZW5kZXIpCisgc210cC5tYWlsZnJvbT1mZm1wZWctZGV2ZWwtYm91bmNlc0Bm Zm1wZWcub3JnCitSZXR1cm4tUGF0aDogPGZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmc+ CitSZWNlaXZlZDogZnJvbSBmZmJveDAtYmcubXBsYXllcmhxLmh1IChmZmJveDAtYmcuZmZtcGVn Lm9yZy4gWzc5LjEyNC4xNy4xMDBdKQorICAgICAgICBieSBteC5nb29nbGUuY29tIHdpdGggRVNN VFAgaWQKKyB2MjEtMjAwMjBhMTcwOTA2MGI1NTAwYjAwOTVlYzU0YTIyYmNzaTEwOTA3NTk1ZWpn LjEwNi4yMDIzLjA1LjE1LjAxLjMzLjIxOworICAgICAgICBNb24sIDE1IE1heSAyMDIzIDAxOjMz OjIxIC0wNzAwIChQRFQpCitSZWNlaXZlZC1TUEY6IHBhc3MgKGdvb2dsZS5jb206IGRvbWFpbiBv ZiBmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnCisgZGVzaWduYXRlcyA3OS4xMjQuMTcu MTAwIGFzIHBlcm1pdHRlZCBzZW5kZXIpIGNsaWVudC1pcD03OS4xMjQuMTcuMTAwOworQXV0aGVu dGljYXRpb24tUmVzdWx0czogbXguZ29vZ2xlLmNvbTsKKyAgICAgICBzcGY9cGFzcyAoZ29vZ2xl LmNvbTogZG9tYWluIG9mIGZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmcKKyBkZXNpZ25h dGVzIDc5LjEyNC4xNy4xMDAgYXMgcGVybWl0dGVkIHNlbmRlcikKKyBzbXRwLm1haWxmcm9tPWZm bXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmcKK1JlY2VpdmVkOiBmcm9tIFsxMjcuMC4xLjFd IChsb2NhbGhvc3QgWzEyNy4wLjAuMV0pCisJYnkgZmZib3gwLWJnLm1wbGF5ZXJocS5odSAoUG9z dGZpeCkgd2l0aCBFU01UUCBpZCBEM0Y3NjY4QzA5MjsKKwlNb24sIDE1IE1heSAyMDIzIDExOjMz OjE4ICswMzAwIChFRVNUKQorWC1PcmlnaW5hbC1UbzogZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcK K0RlbGl2ZXJlZC1UbzogZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKK1JlY2VpdmVkOiBmcm9tIGJn NC5leG1haWwucXEuY29tIChiZzQuZXhtYWlsLnFxLmNvbSBbNDMuMTU1LjY3LjE1OF0pCisgYnkg ZmZib3gwLWJnLm1wbGF5ZXJocS5odSAoUG9zdGZpeCkgd2l0aCBFU01UUFMgaWQgODE4MDM2OEMw MDQKKyBmb3IgPGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnPjsgTW9uLCAxNSBNYXkgMjAyMyAxMToz MzoxMSArMDMwMCAoRUVTVCkKK1gtUVEtbWlkOiBiaXplc210cDYydDE2ODQxMzk1ODV0eGhwMzJv dQorUmVjZWl2ZWQ6IGZyb20gbG9jYWxob3N0ICggWzEwMy4xMDIuMjAzLjIwNF0pIGJ5IGJpemVz bXRwLnFxLmNvbSAoRVNNVFApIHdpdGgKKyBpZCA7IE1vbiwgMTUgTWF5IDIwMjMgMTY6MzM6MDQg KzA4MDAgKENTVCkKK1gtUVEtU1NGOiAwMTEwMDAwMDAwMDAwMFowWjAwMDAwMEEwMDAwMDAwCitY LVFRLUZFQVQ6IDZBcm51U0RKK2luVkMwNk1IMW5ySmV1NTYrMzVkaXB0VzNkQ2RIdDNiTWF5Rlpv Q3lFOFF5VU8wUVk5em0KKyBpWTYySkNTcFNLWUVLNGNhMmtweGtCOTlQSTUwRmlXZk50ekxEWitW elVUeTAxM0dNcEx3aDFDV2VWWDVjRjE1UnlFQUlDOQorIHUzT3pnN0lZOG12K0dpRHRmNkZEZ1N5 dW1FMUQ5M3F4VjFSMnNKNXYzOFYzTmJOUGNpa2cwYUR4WlhPbEMrSHIrTGRoc1ppCisgNFg1dERp M05vdmhwQ2YrOFdvK1phZWpIT3JFOE1VY1VHcGJoOGRIUmV3NmRubWtka0s1eXRTSFNaRXllOFJz WFpuTWRwNEEKKyBtcUJacUlER3cxYTRlMDRKQWMvTkRDczdxcTRxdGh4TUZCMXNraGFPdjZETGNM K0VxVjJRRnduSm43VjVPb2Y3QndmamFURworIG1FQVZwaVpEblFoRnZPZ0hlbUgxdjYxQmx1YjJu Q25BdXJyR2hHTWF5d0l6RlhUODdhT1NMQ0RsRnByU2c9PQorWC1RUS1Hb29kQmc6IDAKK1gtQkla TUFJTC1JRDogMTEyMTA4MzkxOTEyOTI1ODczNTcKK0Zyb206IFN0ZXZlbiBMaXUgPGxxQGNoaW5h ZmZtcGVnLm9yZz4KK1RvOiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZworRGF0ZTogTW9uLCAxNSBN YXkgMjAyMyAxNjozMTo1NyArMDgwMAorTWVzc2FnZS1JZDogPDIwMjMwNTE1MDgzMjAxLjQ4MjAx LTMtbHFAY2hpbmFmZm1wZWcub3JnPgorWC1NYWlsZXI6IGdpdC1zZW5kLWVtYWlsIDIuNDAuMAor SW4tUmVwbHktVG86IDwyMDIzMDUxNTA4MzIwMS40ODIwMS0xLWxxQGNoaW5hZmZtcGVnLm9yZz4K K1JlZmVyZW5jZXM6IAorIDxDQUVnLUplLXZZRDk3S25iYXFUa0s1PVVKOVQzaHRtdEgzUXlrY3dv MytyTkN4PXcralFAbWFpbC5nbWFpbC5jb20+CisgPDIwMjMwNTE1MDgzMjAxLjQ4MjAxLTEtbHFA Y2hpbmFmZm1wZWcub3JnPgorTUlNRS1WZXJzaW9uOiAxLjAKK1gtUVEtU0VORFNJWkU6IDUyMAor RmVlZGJhY2stSUQ6IGJpemVzbXRwOmNoaW5hZmZtcGVnLm9yZzpxeWJnbG9naWNzdnJzejpxeWJn bG9naWNzdnJzejNhLTMKK1N1YmplY3Q6IFtGRm1wZWctZGV2ZWxdIFtQQVRDSCB2MTAgMi82XSBh dmZvcm1hdC9mbHZkZWM6IHN1cHBvcnQgZGVtdXggaGV2YworIGluIGVuaGFuY2VkIGZsdgorWC1C ZWVuVGhlcmU6IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCitYLU1haWxtYW4tVmVyc2lvbjogMi4x LjI5CitQcmVjZWRlbmNlOiBsaXN0CitMaXN0LUlkOiBGRm1wZWcgZGV2ZWxvcG1lbnQgZGlzY3Vz c2lvbnMgYW5kIHBhdGNoZXMgPGZmbXBlZy1kZXZlbC5mZm1wZWcub3JnPgorTGlzdC1VbnN1YnNj cmliZTogPGh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL29wdGlvbnMvZmZtcGVnLWRldmVsPiwK KyA8bWFpbHRvOmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmc/c3ViamVjdD11bnN1YnNj cmliZT4KK0xpc3QtQXJjaGl2ZTogPGh0dHBzOi8vZmZtcGVnLm9yZy9waXBlcm1haWwvZmZtcGVn LWRldmVsPgorTGlzdC1Qb3N0OiA8bWFpbHRvOmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnPgorTGlz dC1IZWxwOiA8bWFpbHRvOmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmc/c3ViamVjdD1o ZWxwPgorTGlzdC1TdWJzY3JpYmU6IDxodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5m by9mZm1wZWctZGV2ZWw+LAorIDxtYWlsdG86ZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9y Zz9zdWJqZWN0PXN1YnNjcmliZT4KK1JlcGx5LVRvOiBGRm1wZWcgZGV2ZWxvcG1lbnQgZGlzY3Vz c2lvbnMgYW5kIHBhdGNoZXMgPGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnPgorQ2M6IFN0ZXZlbiBM aXUgPGxxQGNoaW5hZmZtcGVnLm9yZz4KK0Vycm9ycy1UbzogZmZtcGVnLWRldmVsLWJvdW5jZXNA ZmZtcGVnLm9yZworU2VuZGVyOiAiZmZtcGVnLWRldmVsIiA8ZmZtcGVnLWRldmVsLWJvdW5jZXNA ZmZtcGVnLm9yZz4KK1gtVFVJRDogU0ZzakhNSHUySVNsCisKK1NpZ25lZC1vZmYtYnk6IFN0ZXZl biBMaXUgPGxxQGNoaW5hZmZtcGVnLm9yZz4KKy0tLQorIGxpYmF2Zm9ybWF0L2ZsdmRlYy5jIHwg NTggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0KKyAxIGZpbGUg Y2hhbmdlZCwgNTAgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBh L2xpYmF2Zm9ybWF0L2ZsdmRlYy5jIGIvbGliYXZmb3JtYXQvZmx2ZGVjLmMKK2luZGV4IGQ4M2Vk ZmY3MjcuLmM4ZTZjYWRmMWMgMTAwNjQ0CistLS0gYS9saWJhdmZvcm1hdC9mbHZkZWMuYworKysr IGIvbGliYXZmb3JtYXQvZmx2ZGVjLmMKK0BAIC03OSw2ICs3OSw4IEBAIHR5cGVkZWYgc3RydWN0 IEZMVkNvbnRleHQgeworICAgICBpbnQ2NF90IGxhc3RfdHM7CisgICAgIGludDY0X3QgdGltZV9v ZmZzZXQ7CisgICAgIGludDY0X3QgdGltZV9wb3M7CisrCisrICAgIHVpbnQ4X3QgZXhoZWFkZXI7 CisgfSBGTFZDb250ZXh0OworIAorIC8qIEFNRiBkYXRlIHR5cGUgKi8KK0BAIC0zMDIsMTMgKzMw NCwyNSBAQCBzdGF0aWMgdm9pZCBmbHZfc2V0X2F1ZGlvX2NvZGVjKEFWRm9ybWF0Q29udGV4dCAq cywgQVZTdHJlYW0gKmFzdHJlYW0sCisgICAgIH0KKyB9CisgCistc3RhdGljIGludCBmbHZfc2Ft ZV92aWRlb19jb2RlYyhBVkNvZGVjUGFyYW1ldGVycyAqdnBhciwgaW50IGZsYWdzKQorK3N0YXRp YyBpbnQgZmx2X3NhbWVfdmlkZW9fY29kZWMoQVZGb3JtYXRDb250ZXh0ICpzLCBBVkNvZGVjUGFy YW1ldGVycyAqdnBhciwgaW50IGZsYWdzKQorIHsKKyAgICAgaW50IGZsdl9jb2RlY2lkID0gZmxh Z3MgJiBGTFZfVklERU9fQ09ERUNJRF9NQVNLOworKyAgICBGTFZDb250ZXh0ICpmbHYgPSBzLT5w cml2X2RhdGE7CisgCisgICAgIGlmICghdnBhci0+Y29kZWNfaWQgJiYgIXZwYXItPmNvZGVjX3Rh ZykKKyAgICAgICAgIHJldHVybiAxOworIAorKyAgICBpZiAoZmx2LT5leGhlYWRlcikgeworKyAg ICAgICAgdWludDhfdCAqY29kZWNfaWRfc3RyID0gKHVpbnQ4X3QgKilzLT5wYi0+YnVmX3B0cjsK KysgICAgICAgIHVpbnQzMl90IGNvZGVjX2lkID0gY29kZWNfaWRfc3RyWzNdIHwgY29kZWNfaWRf c3RyWzJdIDw8IDggfCBjb2RlY19pZF9zdHJbMV0gPDwgMTYgfCBjb2RlY19pZF9zdHJbMF0gPDwg MjQ7CisrICAgICAgICBzd2l0Y2goY29kZWNfaWQpIHsKKysgICAgICAgICAgICBjYXNlIE1LQkVU QUcoJ2gnLCAndicsICdjJywgJzEnKToKKysgICAgICAgICAgICAgICAgcmV0dXJuIHZwYXItPmNv ZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkM7CisrICAgICAgICAgICAgZGVmYXVsdDoKKysgICAg ICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICB9CisrICAgIH0KKysKKyAgICAgc3dpdGNoIChm bHZfY29kZWNpZCkgeworICAgICBjYXNlIEZMVl9DT0RFQ0lEX0gyNjM6CisgICAgICAgICByZXR1 cm4gdnBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfRkxWMTsKK0BAIC0zMzEsOSArMzQ1LDI0 IEBAIHN0YXRpYyBpbnQgZmx2X3NldF92aWRlb19jb2RlYyhBVkZvcm1hdENvbnRleHQgKnMsIEFW U3RyZWFtICp2c3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmx2 X2NvZGVjaWQsIGludCByZWFkKQorIHsKKyAgICAgRkZTdHJlYW0gKmNvbnN0IHZzdHJlYW1pID0g ZmZzdHJlYW0odnN0cmVhbSk7CisrICAgIEZMVkNvbnRleHQgKmZsdiA9IHMtPnByaXZfZGF0YTsK KyAgICAgaW50IHJldCA9IDA7CisgICAgIEFWQ29kZWNQYXJhbWV0ZXJzICpwYXIgPSB2c3RyZWFt LT5jb2RlY3BhcjsKKyAgICAgZW51bSBBVkNvZGVjSUQgb2xkX2NvZGVjX2lkID0gdnN0cmVhbS0+ Y29kZWNwYXItPmNvZGVjX2lkOworKyAgICBmbHZfY29kZWNpZCAmPSBGTFZfVklERU9fQ09ERUNJ RF9NQVNLOworKworKyAgICBpZiAoZmx2LT5leGhlYWRlcikgeworKyAgICAgICAgdWludDMyX3Qg Y29kZWNfaWQgPSBhdmlvX3JiMzIocy0+cGIpOworKworKyAgICAgICAgc3dpdGNoKGNvZGVjX2lk KSB7CisrICAgICAgICAgICAgY2FzZSBNS0JFVEFHKCdoJywgJ3YnLCAnYycsICcxJyk6CisrICAg ICAgICAgICAgICAgIHBhci0+Y29kZWNfaWQgPSBBVl9DT0RFQ19JRF9IRVZDOworKyAgICAgICAg ICAgICAgICB2c3RyZWFtaS0+bmVlZF9wYXJzaW5nID0gQVZTVFJFQU1fUEFSU0VfSEVBREVSUzsK KysgICAgICAgICAgICAgICAgcmV0dXJuIDQ7CisrICAgICAgICAgICAgZGVmYXVsdDoKKysgICAg ICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICB9CisrICAgIH0KKyAgICAgc3dpdGNoIChmbHZf Y29kZWNpZCkgeworICAgICBjYXNlIEZMVl9DT0RFQ0lEX0gyNjM6CisgICAgICAgICBwYXItPmNv ZGVjX2lkID0gQVZfQ09ERUNfSURfRkxWMTsKK0BAIC03OTYsNiArODI1LDcgQEAgc3RhdGljIGlu dCBmbHZfcmVhZF9oZWFkZXIoQVZGb3JtYXRDb250ZXh0ICpzKQorICAgICBzLT5zdGFydF90aW1l ID0gMDsKKyAgICAgZmx2LT5zdW1fZmx2X3RhZ19zaXplID0gMDsKKyAgICAgZmx2LT5sYXN0X2tl eWZyYW1lX3N0cmVhbV9pbmRleCA9IC0xOworKyAgICBmbHYtPmV4aGVhZGVyID0gMDsKKyAKKyAg ICAgcmV0dXJuIDA7CisgfQorQEAgLTEwNzEsNiArMTEwMSwxMSBAQCByZXRyeToKKyAgICAgfSBl bHNlIGlmICh0eXBlID09IEZMVl9UQUdfVFlQRV9WSURFTykgeworICAgICAgICAgc3RyZWFtX3R5 cGUgPSBGTFZfU1RSRUFNX1RZUEVfVklERU87CisgICAgICAgICBmbGFncyAgICA9IGF2aW9fcjgo cy0+cGIpOworKyAgICAgICAgLyoKKysgICAgICAgICAqIFJlZmVyZW5jZSBFbmhhbmNpbmcgRkxW IDIwMjMtMDMtdjEuMC4wLUIuOAorKyAgICAgICAgICogaHR0cHM6Ly9naXRodWIuY29tL3Zlb3Zl cmEvZW5oYW5jZWQtcnRtcC9ibG9iL21haW4vZW5oYW5jZWQtcnRtcC12MS5wZGYKKysgICAgICAg ICAqICovCisrICAgICAgICBmbHYtPmV4aGVhZGVyID0gKGZsYWdzID4+IDcpICYgMTsKKyAgICAg ICAgIHNpemUtLTsKKyAgICAgICAgIGlmICgoZmxhZ3MgJiBGTFZfVklERU9fRlJBTUVUWVBFX01B U0spID09IEZMVl9GUkFNRV9WSURFT19JTkZPX0NNRCkKKyAgICAgICAgICAgICBnb3RvIHNraXA7 CitAQCAtMTEyOSw3ICsxMTY0LDcgQEAgc2tpcDoKKyAgICAgICAgICAgICAgICAgYnJlYWs7Cisg ICAgICAgICB9IGVsc2UgaWYgKHN0cmVhbV90eXBlID09IEZMVl9TVFJFQU1fVFlQRV9WSURFTykg eworICAgICAgICAgICAgIGlmIChzdC0+Y29kZWNwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9U WVBFX1ZJREVPICYmCistICAgICAgICAgICAgICAgIChzLT52aWRlb19jb2RlY19pZCB8fCBmbHZf c2FtZV92aWRlb19jb2RlYyhzdC0+Y29kZWNwYXIsIGZsYWdzKSkpCisrICAgICAgICAgICAgICAg IChzLT52aWRlb19jb2RlY19pZCB8fCBmbHZfc2FtZV92aWRlb19jb2RlYyhzLCBzdC0+Y29kZWNw YXIsIGZsYWdzKSkpCisgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgfSBlbHNlIGlm IChzdHJlYW1fdHlwZSA9PSBGTFZfU1RSRUFNX1RZUEVfU1VCVElUTEUpIHsKKyAgICAgICAgICAg ICBpZiAoc3QtPmNvZGVjcGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9TVUJUSVRMRSkK K0BAIC0xMjMwLDcgKzEyNjUsNyBAQCByZXRyeV9kdXJhdGlvbjoKKyAgICAgICAgICAgICBhdmNv ZGVjX3BhcmFtZXRlcnNfZnJlZSgmcGFyKTsKKyAgICAgICAgIH0KKyAgICAgfSBlbHNlIGlmIChz dHJlYW1fdHlwZSA9PSBGTFZfU1RSRUFNX1RZUEVfVklERU8pIHsKKy0gICAgICAgIGludCByZXQg PSBmbHZfc2V0X3ZpZGVvX2NvZGVjKHMsIHN0LCBmbGFncyAmIEZMVl9WSURFT19DT0RFQ0lEX01B U0ssIDEpOworKyAgICAgICAgaW50IHJldCA9IGZsdl9zZXRfdmlkZW9fY29kZWMocywgc3QsIGZs YWdzLCAxKTsKKyAgICAgICAgIGlmIChyZXQgPCAwKQorICAgICAgICAgICAgIHJldHVybiByZXQ7 CisgICAgICAgICBzaXplIC09IHJldDsKK0BAIC0xMjQyLDE2ICsxMjc3LDIzIEBAIHJldHJ5X2R1 cmF0aW9uOgorIAorICAgICBpZiAoc3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19J RF9BQUMgfHwKKyAgICAgICAgIHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURf SDI2NCB8fAorLSAgICAgICAgc3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9N UEVHNCkgeworLSAgICAgICAgaW50IHR5cGUgPSBhdmlvX3I4KHMtPnBiKTsKKy0gICAgICAgIHNp emUtLTsKKysgICAgICAgIHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBF RzQgfHwKKysgICAgICAgIHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVW QykgeworKyAgICAgICAgaW50IHR5cGUgPSAwOworKyAgICAgICAgaWYgKGZsdi0+ZXhoZWFkZXIg JiYgc3RyZWFtX3R5cGUgPT0gRkxWX1NUUkVBTV9UWVBFX1ZJREVPKSB7CisrICAgICAgICAgICAg dHlwZSA9IGZsYWdzICYgMHgwRjsKKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgdHlw ZSA9IGF2aW9fcjgocy0+cGIpOworKyAgICAgICAgICAgIHNpemUtLTsKKysgICAgICAgIH0KKyAK KyAgICAgICAgIGlmIChzaXplIDwgMCkgeworICAgICAgICAgICAgIHJldCA9IEFWRVJST1JfSU5W QUxJRERBVEE7CisgICAgICAgICAgICAgZ290byBsZWF2ZTsKKyAgICAgICAgIH0KKyAKKy0gICAg ICAgIGlmIChzdC0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjQgfHwgc3Qt PmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHNCkgeworKyAgICAgICAgaWYg KHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSDI2NCB8fCBzdC0+Y29kZWNw YXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUc0IHx8CisrICAgICAgICAgICAgKHN0LT5j b2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQyAmJiB0eXBlID09IFBhY2tldFR5 cGVDb2RlZEZyYW1lcykpIHsKKyAgICAgICAgICAgICAvLyBzaWduIGV4dGVuc2lvbgorICAgICAg ICAgICAgIGludDMyX3QgY3RzID0gKGF2aW9fcmIyNChzLT5wYikgKyAweGZmODAwMDAwKSBeIDB4 ZmY4MDAwMDA7CisgICAgICAgICAgICAgcHRzID0gYXZfc2F0X2FkZDY0KGR0cywgY3RzKTsKK0BA IC0xMjY3LDcgKzEzMDksNyBAQCByZXRyeV9kdXJhdGlvbjoKKyAgICAgICAgICAgICB9CisgICAg ICAgICB9CisgICAgICAgICBpZiAodHlwZSA9PSAwICYmICghc3QtPmNvZGVjcGFyLT5leHRyYWRh dGEgfHwgc3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BQUMgfHwKKy0gICAg ICAgICAgICBzdC0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjQpKSB7Cisr ICAgICAgICAgICAgc3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0IHx8 IHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQykpIHsKKyAgICAgICAg ICAgICBBVkRpY3Rpb25hcnlFbnRyeSAqdDsKKyAKKyAgICAgICAgICAgICBpZiAoc3QtPmNvZGVj cGFyLT5leHRyYWRhdGEpIHsKKworRnJvbSBwYXRjaHdvcmsgTW9uIE1heSAxNSAwODozMTo1OCAy MDIzCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9InV0Zi04IgorTUlNRS1WZXJz aW9uOiAxLjAKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDdiaXQKK1gtUGF0Y2h3b3JrLVN1 Ym1pdHRlcjogU3RldmVuIExpdSA8bHFAY2hpbmFmZm1wZWcub3JnPgorWC1QYXRjaHdvcmstSWQ6 IDQxNjE3CitEZWxpdmVyZWQtVG86IGZmbXBlZ3BhdGNod29yazJAZ21haWwuY29tCitSZWNlaXZl ZDogYnkgMjAwMjphMDU6NmEyMDpiYTkxOmIwOjEwNTpmZWI6NzFmMiB3aXRoIFNNVFAgaWQKKyBm YjE3Y3NwMTQ0NDIwOXB6YjsKKyAgICAgICAgTW9uLCAxNSBNYXkgMjAyMyAwMTozMzozMSAtMDcw MCAoUERUKQorWC1Hb29nbGUtU210cC1Tb3VyY2U6IAorIEFDSEhVWjVOL01XbGQ5Zlh6b2trUlZT MWUxM0FZYWtrUnlIL1J2eUJpSjd4QTUxMkVXZFdnckdFNGZlcnVnY1RSb0hOYWh2amF5QzkKK1gt UmVjZWl2ZWQ6IGJ5IDIwMDI6YTE3OjkwNzo5NzI0OmIwOjk2YToxMjYwOmRiZjUgd2l0aCBTTVRQ IGlkCisgamczNi0yMDAyMGExNzA5MDc5NzI0MDBiMDA5NmExMjYwZGJmNW1yMTgwODI1NTRlamMu NDUuMTY4NDEzOTYxMTQ0NzsKKyAgICAgICAgTW9uLCAxNSBNYXkgMjAyMyAwMTozMzozMSAtMDcw MCAoUERUKQorQVJDLVNlYWw6IGk9MTsgYT1yc2Etc2hhMjU2OyB0PTE2ODQxMzk2MTE7IGN2PW5v bmU7CisgICAgICAgIGQ9Z29vZ2xlLmNvbTsgcz1hcmMtMjAxNjA4MTY7CisgICAgICAgIGI9b3A2 WGwzWWluT1NkOGQvWWE0WXBRakhTYkp4MHQ3ZkhhQ0h2dnF2a0pnVGJLZmptVEpqREZzTVdrZVQv Y2VBMWxBCisgICAgICAgICB4VjlZMUpHckFsWm11ZHBnYUp0WEh1a0xKZXNzbkJycWFCeTVnbTBs WDZiSjBYNEFLSnQvRjdHQjNGUjNPUElTcTc5dworICAgICAgICAgN2RqZUhVeDJWQXhmV24xYXdD Y0ZyY3l5TVByR0IyR1BNZG9YeGNVVm15U05OSzBvaHVyb1EySmhWUmFqd2owc0lCRmcKKyAgICAg ICAgIGYwcHU3dlhYOWN0NDk5dEZsNXJIRWQvLzJYbDNyWTZrTkhmUGxNT2NKRWNsVCszNVRVYVRX RTg4K3JKT0RhaU1BcmNaCisgICAgICAgICBSYUZLOHhxZkFPSmp3MFg5dDZZaXdCazFLbC9zRktF ajcxRnh1NWtoZzdJdmhGN2t6UkRTWlhMQ2tLVzlVdlBZaEdPbAorICAgICAgICAgMjVCdz09CitB UkMtTWVzc2FnZS1TaWduYXR1cmU6IGk9MTsgYT1yc2Etc2hhMjU2OyBjPXJlbGF4ZWQvcmVsYXhl ZDsgZD1nb29nbGUuY29tOworIHM9YXJjLTIwMTYwODE2OworICAgICAgICBoPXNlbmRlcjplcnJv cnMtdG86Y29udGVudC10cmFuc2Zlci1lbmNvZGluZzpjYzpyZXBseS10bworICAgICAgICAgOmxp c3Qtc3Vic2NyaWJlOmxpc3QtaGVscDpsaXN0LXBvc3Q6bGlzdC1hcmNoaXZlOmxpc3QtdW5zdWJz Y3JpYmUKKyAgICAgICAgIDpsaXN0LWlkOnByZWNlZGVuY2U6c3ViamVjdDpmZWVkYmFjay1pZDpt aW1lLXZlcnNpb246cmVmZXJlbmNlcworICAgICAgICAgOmluLXJlcGx5LXRvOm1lc3NhZ2UtaWQ6 ZGF0ZTp0bzpmcm9tOmRlbGl2ZXJlZC10bzsKKyAgICAgICAgYmg9ME8wa1VHRDVyOGxnWEVpQzJS VWZpWjFjY1ZSUGQwM2xXZHMwZHFkVkVxMD07CisgICAgICAgIGI9T0F2WkFUZW9OcS9CSTNwSmQy MVh6Mm5LaCtaSThaa29mZTRPYjZVU3UxWkVPeVp6SzJ4eGd0eEw2U2pKQXhlY0c2CisgICAgICAg ICBOZkVDZzhlMTNETGJuVkFCNU9uTUs4VFkvSFYvNE4vaXFQa3NuNlBiSlNrQ3lhZlJxZzQ3NytT UnM3dE9sODljM2lzcgorICAgICAgICAgQ3A4bytqN3QrZ1cyZmtWOVk2TDhNWmE5ZXRKcHVzYTBM WVhWQkxQRHMrdEhOZ1hOZWM5VVRBMVlub1N5TXFFcnJoNTgKKyAgICAgICAgIGNoTWg2QjZQKzVh UmNLckJmS1pZMUY4V0F6TWpwaGRRNzhjM1laK2lrZ0dma29QZ1JLVEVVcSt4UUFNbTdVWGlyTWNu CisgICAgICAgICBxdG5kZURpUXlwTjFlZzdMaUViQXNMaGo3SzJqaWJJbERtd1VrKzZKREUxQVN6 MDVGVmlBYmszbkZmV3lkTlA4aVVsaAorICAgICAgICAgeitDUT09CitBUkMtQXV0aGVudGljYXRp b24tUmVzdWx0czogaT0xOyBteC5nb29nbGUuY29tOworICAgICAgIHNwZj1wYXNzIChnb29nbGUu Y29tOiBkb21haW4gb2YgZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZworIGRlc2lnbmF0 ZXMgNzkuMTI0LjE3LjEwMCBhcyBwZXJtaXR0ZWQgc2VuZGVyKQorIHNtdHAubWFpbGZyb209ZmZt cGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZworUmV0dXJuLVBhdGg6IDxmZm1wZWctZGV2ZWwt Ym91bmNlc0BmZm1wZWcub3JnPgorUmVjZWl2ZWQ6IGZyb20gZmZib3gwLWJnLm1wbGF5ZXJocS5o dSAoZmZib3gwLWJnLmZmbXBlZy5vcmcuIFs3OS4xMjQuMTcuMTAwXSkKKyAgICAgICAgYnkgbXgu Z29vZ2xlLmNvbSB3aXRoIEVTTVRQIGlkCisgcnYyMi0yMDAyMGExNzA5MDcxMGQ2MDBiMDA5NjVl OGM2N2Q3ZHNpMTEzOTkxOTJlamIuMjg1LjIwMjMuMDUuMTUuMDEuMzMuMzE7CisgICAgICAgIE1v biwgMTUgTWF5IDIwMjMgMDE6MzM6MzEgLTA3MDAgKFBEVCkKK1JlY2VpdmVkLVNQRjogcGFzcyAo Z29vZ2xlLmNvbTogZG9tYWluIG9mIGZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmcKKyBk ZXNpZ25hdGVzIDc5LjEyNC4xNy4xMDAgYXMgcGVybWl0dGVkIHNlbmRlcikgY2xpZW50LWlwPTc5 LjEyNC4xNy4xMDA7CitBdXRoZW50aWNhdGlvbi1SZXN1bHRzOiBteC5nb29nbGUuY29tOworICAg ICAgIHNwZj1wYXNzIChnb29nbGUuY29tOiBkb21haW4gb2YgZmZtcGVnLWRldmVsLWJvdW5jZXNA ZmZtcGVnLm9yZworIGRlc2lnbmF0ZXMgNzkuMTI0LjE3LjEwMCBhcyBwZXJtaXR0ZWQgc2VuZGVy KQorIHNtdHAubWFpbGZyb209ZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZworUmVjZWl2 ZWQ6IGZyb20gWzEyNy4wLjEuMV0gKGxvY2FsaG9zdCBbMTI3LjAuMC4xXSkKKwlieSBmZmJveDAt YmcubXBsYXllcmhxLmh1IChQb3N0Zml4KSB3aXRoIEVTTVRQIGlkIENBRjM2NjhDMDhCOworCU1v biwgMTUgTWF5IDIwMjMgMTE6MzM6MjIgKzAzMDAgKEVFU1QpCitYLU9yaWdpbmFsLVRvOiBmZm1w ZWctZGV2ZWxAZmZtcGVnLm9yZworRGVsaXZlcmVkLVRvOiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9y ZworUmVjZWl2ZWQ6IGZyb20gYmc0LmV4bWFpbC5xcS5jb20gKGJnNC5leG1haWwucXEuY29tIFs0 My4xNTUuNjcuMTU4XSkKKyBieSBmZmJveDAtYmcubXBsYXllcmhxLmh1IChQb3N0Zml4KSB3aXRo IEVTTVRQUyBpZCA1NjEzMDY4QzA4QgorIGZvciA8ZmZtcGVnLWRldmVsQGZmbXBlZy5vcmc+OyBN b24sIDE1IE1heSAyMDIzIDExOjMzOjE2ICswMzAwIChFRVNUKQorWC1RUS1taWQ6IGJpemVzbXRw NjJ0MTY4NDEzOTU5MXQ1dmY1aXNzCitSZWNlaXZlZDogZnJvbSBsb2NhbGhvc3QgKCBbMTAzLjEw Mi4yMDMuMjA0XSkgYnkgYml6ZXNtdHAucXEuY29tIChFU01UUCkgd2l0aAorIGlkIDsgTW9uLCAx NSBNYXkgMjAyMyAxNjozMzowOSArMDgwMCAoQ1NUKQorWC1RUS1TU0Y6IDAxMTAwMDAwMDAwMDAw WjBaMDAwMDAwQTAwMDAwMDAKK1gtUVEtRkVBVDogMFZZV0xMQ2Y0cmQ4c2Y0QjB4ZEk0NXlPOXBh N2NBNUxrVU41cjhqcnlsLzlIVVRjRU9jRG5xNnNFRkxwVQorIHBaL0pud1NJcWZxRnRSQjhCcTgr MDMyV2N3WklCZEdXbU9VcElaTGNEbEJQSFZ0UzlZd1NPNTZwN3RlMDkzMm1oUUhRVldyCisgMk1K NjBFaFBjeGZoWEczTTg5UVN5c1lEZ0xqVUlSYmIvY1AvQnIwNW1DSjA1YytRNE56V3dsUnd3ZU9H MGxVSjRhTU5saTkKKyBpM1FmOGxTQUs4aEszSldZWlAwRmc2NkphRmtadnc2WXo2TjRFU1ZmNFZw ODVyd1dLUGZwQno1MzhJaUN6ZS9lUGJWZ1pXQgorIHp2YlUxbVZBa2FwVDA1Y1RMeXFBbHY3dGVm Zmxnb1ljclc3OVorT3B5MndTWURaTHBDa1JJZSt3NHlXRzdlQ2c3MWRVZ25jCisgNzlEK01WeUhT Smp1WFMvc1FMYWVGYW5TMVY1NVdLNGl6eTlKL2JGSGRTcHJteVN3bXBrOGhmNXpoSVpPUT09CitY LVFRLUdvb2RCZzogMAorWC1CSVpNQUlMLUlEOiA1Mzc3OTk2MTY1MzQwNTI1NjE5CitGcm9tOiBT dGV2ZW4gTGl1IDxscUBjaGluYWZmbXBlZy5vcmc+CitUbzogZmZtcGVnLWRldmVsQGZmbXBlZy5v cmcKK0RhdGU6IE1vbiwgMTUgTWF5IDIwMjMgMTY6MzE6NTggKzA4MDAKK01lc3NhZ2UtSWQ6IDwy MDIzMDUxNTA4MzIwMS40ODIwMS00LWxxQGNoaW5hZmZtcGVnLm9yZz4KK1gtTWFpbGVyOiBnaXQt c2VuZC1lbWFpbCAyLjQwLjAKK0luLVJlcGx5LVRvOiA8MjAyMzA1MTUwODMyMDEuNDgyMDEtMS1s cUBjaGluYWZmbXBlZy5vcmc+CitSZWZlcmVuY2VzOiAKKyA8Q0FFZy1KZS12WUQ5N0tuYmFxVGtL NT1VSjlUM2h0bXRIM1F5a2N3bzMrck5DeD13K2pRQG1haWwuZ21haWwuY29tPgorIDwyMDIzMDUx NTA4MzIwMS40ODIwMS0xLWxxQGNoaW5hZmZtcGVnLm9yZz4KK01JTUUtVmVyc2lvbjogMS4wCitY LVFRLVNFTkRTSVpFOiA1MjAKK0ZlZWRiYWNrLUlEOiBiaXplc210cDpjaGluYWZmbXBlZy5vcmc6 cXliZ2xvZ2ljc3Zyc3o6cXliZ2xvZ2ljc3Zyc3ozYS0zCitTdWJqZWN0OiBbRkZtcGVnLWRldmVs XSBbUEFUQ0ggdjEwIDMvNl0gYXZmb3JtYXQvZmx2ZW5jOiBzdXBwb3J0IG11eCBhdjEgaW4KKyBl bmhhbmNlZCBmbHYKK1gtQmVlblRoZXJlOiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZworWC1NYWls bWFuLVZlcnNpb246IDIuMS4yOQorUHJlY2VkZW5jZTogbGlzdAorTGlzdC1JZDogRkZtcGVnIGRl dmVsb3BtZW50IGRpc2N1c3Npb25zIGFuZCBwYXRjaGVzIDxmZm1wZWctZGV2ZWwuZmZtcGVnLm9y Zz4KK0xpc3QtVW5zdWJzY3JpYmU6IDxodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9vcHRpb25z L2ZmbXBlZy1kZXZlbD4sCisgPG1haWx0bzpmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3Jn P3N1YmplY3Q9dW5zdWJzY3JpYmU+CitMaXN0LUFyY2hpdmU6IDxodHRwczovL2ZmbXBlZy5vcmcv cGlwZXJtYWlsL2ZmbXBlZy1kZXZlbD4KK0xpc3QtUG9zdDogPG1haWx0bzpmZm1wZWctZGV2ZWxA ZmZtcGVnLm9yZz4KK0xpc3QtSGVscDogPG1haWx0bzpmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1w ZWcub3JnP3N1YmplY3Q9aGVscD4KK0xpc3QtU3Vic2NyaWJlOiA8aHR0cHM6Ly9mZm1wZWcub3Jn L21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsPiwKKyA8bWFpbHRvOmZmbXBlZy1kZXZlbC1y ZXF1ZXN0QGZmbXBlZy5vcmc/c3ViamVjdD1zdWJzY3JpYmU+CitSZXBseS1UbzogRkZtcGVnIGRl dmVsb3BtZW50IGRpc2N1c3Npb25zIGFuZCBwYXRjaGVzIDxmZm1wZWctZGV2ZWxAZmZtcGVnLm9y Zz4KK0NjOiBTdGV2ZW4gTGl1IDxscUBjaGluYWZmbXBlZy5vcmc+CitFcnJvcnMtVG86IGZmbXBl Zy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmcKK1NlbmRlcjogImZmbXBlZy1kZXZlbCIgPGZmbXBl Zy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmc+CitYLVRVSUQ6IGRSZlBkc0l2ZXh6aAorCitTaWdu ZWQtb2ZmLWJ5OiBTdGV2ZW4gTGl1IDxscUBjaGluYWZmbXBlZy5vcmc+CistLS0KKyBsaWJhdmZv cm1hdC9NYWtlZmlsZSB8ICAyICstCisgbGliYXZmb3JtYXQvZmx2ZW5jLmMgfCAyMiArKysrKysr KysrKysrKysrKystLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCA1IGRl bGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvTWFrZWZpbGUgYi9saWJhdmZv cm1hdC9NYWtlZmlsZQoraW5kZXggMWVmM2QxNTQ2Ny4uYzg2OGUxNjI2YyAxMDA2NDQKKy0tLSBh L2xpYmF2Zm9ybWF0L01ha2VmaWxlCisrKysgYi9saWJhdmZvcm1hdC9NYWtlZmlsZQorQEAgLTIx NCw3ICsyMTQsNyBAQCBPQkpTLSQoQ09ORklHX0ZMQUNfTVVYRVIpICAgICAgICAgICAgICAgICs9 IGZsYWNlbmMubyBmbGFjZW5jX2hlYWRlci5vIFwKKyBPQkpTLSQoQ09ORklHX0ZMSUNfREVNVVhF UikgICAgICAgICAgICAgICs9IGZsaWMubworIE9CSlMtJChDT05GSUdfRkxWX0RFTVVYRVIpICAg ICAgICAgICAgICAgKz0gZmx2ZGVjLm8KKyBPQkpTLSQoQ09ORklHX0xJVkVfRkxWX0RFTVVYRVIp ICAgICAgICAgICs9IGZsdmRlYy5vCistT0JKUy0kKENPTkZJR19GTFZfTVVYRVIpICAgICAgICAg ICAgICAgICArPSBmbHZlbmMubyBhdmMubyBoZXZjLm8KKytPQkpTLSQoQ09ORklHX0ZMVl9NVVhF UikgICAgICAgICAgICAgICAgICs9IGZsdmVuYy5vIGF2Yy5vIGhldmMubyBhdjEubworIE9CSlMt JChDT05GSUdfRk9VUlhNX0RFTVVYRVIpICAgICAgICAgICAgKz0gNHhtLm8KKyBPQkpTLSQoQ09O RklHX0ZSQU1FQ1JDX01VWEVSKSAgICAgICAgICAgICs9IGZyYW1lY3JjZW5jLm8gZnJhbWVoYXNo Lm8KKyBPQkpTLSQoQ09ORklHX0ZSQU1FSEFTSF9NVVhFUikgICAgICAgICAgICs9IGhhc2hlbmMu byBmcmFtZWhhc2gubworZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L2ZsdmVuYy5jIGIvbGliYXZm b3JtYXQvZmx2ZW5jLmMKK2luZGV4IDM1ZTE5OGZhMTUuLmMxNzg0YjMzMmQgMTAwNjQ0CistLS0g YS9saWJhdmZvcm1hdC9mbHZlbmMuYworKysrIGIvbGliYXZmb3JtYXQvZmx2ZW5jLmMKK0BAIC0y OCw2ICsyOCw3IEBACisgI2luY2x1ZGUgImxpYmF2Y29kZWMvbXBlZzRhdWRpby5oIgorICNpbmNs dWRlICJhdmlvLmgiCisgI2luY2x1ZGUgImF2Yy5oIgorKyNpbmNsdWRlICJhdjEuaCIKKyAjaW5j bHVkZSAiaGV2Yy5oIgorICNpbmNsdWRlICJhdmZvcm1hdC5oIgorICNpbmNsdWRlICJmbHYuaCIK K0BAIC00OCw2ICs0OSw3IEBAIHN0YXRpYyBjb25zdCBBVkNvZGVjVGFnIGZsdl92aWRlb19jb2Rl Y19pZHNbXSA9IHsKKyAgICAgeyBBVl9DT0RFQ19JRF9WUDZBLCAgICAgRkxWX0NPREVDSURfVlA2 QSB9LAorICAgICB7IEFWX0NPREVDX0lEX0gyNjQsICAgICBGTFZfQ09ERUNJRF9IMjY0IH0sCisg ICAgIHsgQVZfQ09ERUNfSURfSEVWQywgICAgIE1LQkVUQUcoJ2gnLCAndicsICdjJywgJzEnKSB9 LAorKyAgICB7IEFWX0NPREVDX0lEX0FWMSwgICAgICBNS0JFVEFHKCdhJywgJ3YnLCAnMCcsICcx JykgfSwKKyAgICAgeyBBVl9DT0RFQ19JRF9OT05FLCAgICAgMCB9CisgfTsKKyAKK0BAIC00OTEs NyArNDkzLDggQEAgc3RhdGljIHZvaWQgZmx2X3dyaXRlX2NvZGVjX2hlYWRlcihBVkZvcm1hdENv bnRleHQqIHMsIEFWQ29kZWNQYXJhbWV0ZXJzKiBwYXIsIGkKKyAgICAgRkxWQ29udGV4dCAqZmx2 ID0gcy0+cHJpdl9kYXRhOworIAorICAgICBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19J RF9BQUMgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0CistICAgICAgICAgICAg fHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHNCB8fCBwYXItPmNvZGVjX2lkID09 IEFWX0NPREVDX0lEX0hFVkMpIHsKKysgICAgICAgICAgICB8fCBwYXItPmNvZGVjX2lkID09IEFW X0NPREVDX0lEX01QRUc0IHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQworKyAg ICAgICAgICAgIHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYxKSB7CisgICAgICAg ICBpbnQ2NF90IHBvczsKKyAgICAgICAgIGF2aW9fdzgocGIsCisgICAgICAgICAgICAgICAgIHBh ci0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfVklERU8gPworQEAgLTUzNyw2ICs1NDAsOSBA QCBzdGF0aWMgdm9pZCBmbHZfd3JpdGVfY29kZWNfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCogcywg QVZDb2RlY1BhcmFtZXRlcnMqIHBhciwgaQorICAgICAgICAgICAgIGlmIChwYXItPmNvZGVjX2lk ID09IEFWX0NPREVDX0lEX0hFVkMpIHsKKyAgICAgICAgICAgICAgICAgYXZpb193OChwYiwgRkxW X0lTX0VYX0hFQURFUiB8IFBhY2tldFR5cGVTZXF1ZW5jZVN0YXJ0KTsgLy8gRXhWaWRlb1RhZ0hl YWRlciBtb2RlIHdpdGggUGFja2V0VHlwZVNlcXVlbmNlU3RhcnQKKyAgICAgICAgICAgICAgICAg YXZpb193cml0ZShwYiwgImh2YzEiLCA0KTsKKysgICAgICAgICAgICB9IGVsc2UgaWYgKHBhci0+ Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYxKSB7CisrICAgICAgICAgICAgICAgIGF2aW9fdzgo cGIsIEZMVl9JU19FWF9IRUFERVIgfCBQYWNrZXRUeXBlU2VxdWVuY2VTdGFydCk7CisrICAgICAg ICAgICAgICAgIGF2aW9fd3JpdGUocGIsICJhdjAxIiwgNCk7CisgICAgICAgICAgICAgfSBlbHNl IHsKKyAgICAgICAgICAgICAgICAgYXZpb193OChwYiwgcGFyLT5jb2RlY190YWcgfCBGTFZfRlJB TUVfS0VZKTsgLy8gZmxhZ3MKKyAgICAgICAgICAgICAgICAgYXZpb193OChwYiwgMCk7IC8vIEFW QyBzZXF1ZW5jZSBoZWFkZXIKK0BAIC01NDUsNiArNTUxLDggQEAgc3RhdGljIHZvaWQgZmx2X3dy aXRlX2NvZGVjX2hlYWRlcihBVkZvcm1hdENvbnRleHQqIHMsIEFWQ29kZWNQYXJhbWV0ZXJzKiBw YXIsIGkKKyAKKyAgICAgICAgICAgICBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9I RVZDKQorICAgICAgICAgICAgICAgICBmZl9pc29tX3dyaXRlX2h2Y2MocGIsIHBhci0+ZXh0cmFk YXRhLCBwYXItPmV4dHJhZGF0YV9zaXplLCAwKTsKKysgICAgICAgICAgICBlbHNlIGlmIChwYXIt PmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FWMSkKKysgICAgICAgICAgICAgICAgZmZfaXNvbV93 cml0ZV9hdjFjKHBiLCBwYXItPmV4dHJhZGF0YSwgcGFyLT5leHRyYWRhdGFfc2l6ZSwgMSk7Cisg ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICBmZl9pc29tX3dyaXRlX2F2Y2MocGIs IHBhci0+ZXh0cmFkYXRhLCBwYXItPmV4dHJhZGF0YV9zaXplKTsKKyAgICAgICAgIH0KK0BAIC04 NDMsMTMgKzg1MSwxNSBAQCBzdGF0aWMgaW50IGZsdl93cml0ZV9wYWNrZXQoQVZGb3JtYXRDb250 ZXh0ICpzLCBBVlBhY2tldCAqcGt0KQorICAgICBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RF Q19JRF9WUDZGIHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA2QSB8fAorICAgICAg ICAgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDYgIHx8IHBhci0+Y29kZWNfaWQgPT0g QVZfQ09ERUNfSURfQUFDKQorICAgICAgICAgZmxhZ3Nfc2l6ZSA9IDI7CistICAgIGVsc2UgaWYg KHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSDI2NCB8fCBwYXItPmNvZGVjX2lkID09IEFW X0NPREVDX0lEX01QRUc0IHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQykKKysg ICAgZWxzZSBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0IHx8IHBhci0+Y29k ZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzQgfHwKKysgICAgICAgICAgICAgcGFyLT5jb2RlY19p ZCA9PSBBVl9DT0RFQ19JRF9IRVZDIHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYx KQorICAgICAgICAgZmxhZ3Nfc2l6ZSA9IDU7CisgICAgIGVsc2UKKyAgICAgICAgIGZsYWdzX3Np emUgPSAxOworIAorICAgICBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BQUMgfHwg cGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0CistICAgICAgICAgICAgfHwgcGFyLT5j b2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHNCB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVD X0lEX0hFVkMpIHsKKysgICAgICAgICAgICB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lE X01QRUc0IHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQworKyAgICAgICAgICAg IHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYxKSB7CisgICAgICAgICBzaXplX3Qg c2lkZV9zaXplOworICAgICAgICAgdWludDhfdCAqc2lkZSA9IGF2X3BhY2tldF9nZXRfc2lkZV9k YXRhKHBrdCwgQVZfUEtUX0RBVEFfTkVXX0VYVFJBREFUQSwgJnNpZGVfc2l6ZSk7CisgICAgICAg ICBpZiAoc2lkZSAmJiBzaWRlX3NpemUgPiAwICYmIChzaWRlX3NpemUgIT0gcGFyLT5leHRyYWRh dGFfc2l6ZSB8fCBtZW1jbXAoc2lkZSwgcGFyLT5leHRyYWRhdGEsIHNpZGVfc2l6ZSkpKSB7CitA QCAtODY5LDcgKzg3OSw4IEBAIHN0YXRpYyBpbnQgZmx2X3dyaXRlX3BhY2tldChBVkZvcm1hdENv bnRleHQgKnMsIEFWUGFja2V0ICpwa3QpCisgICAgICAgICAgICAgICAgIlBhY2tldHMgYXJlIG5v dCBpbiB0aGUgcHJvcGVyIG9yZGVyIHdpdGggcmVzcGVjdCB0byBEVFNcbiIpOworICAgICAgICAg cmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKKyAgICAgfQorLSAgICBpZiAocGFyLT5jb2RlY19pZCA9 PSBBVl9DT0RFQ19JRF9IMjY0IHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzQg fHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDKSB7CisrICAgIGlmIChwYXItPmNv ZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjQgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19J RF9NUEVHNCB8fAorKyAgICAgICAgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDIHx8 ICBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FWMSkgeworICAgICAgICAgaWYgKHBrdC0+ cHRzID09IEFWX05PUFRTX1ZBTFVFKSB7CisgICAgICAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19F UlJPUiwgIlBhY2tldCBpcyBtaXNzaW5nIFBUU1xuIik7CisgICAgICAgICAgICAgcmV0dXJuIEFW RVJST1IoRUlOVkFMKTsKK0BAIC05ODIsNiArOTkzLDkgQEAgc3RhdGljIGludCBmbHZfd3JpdGVf cGFja2V0KEFWRm9ybWF0Q29udGV4dCAqcywgQVZQYWNrZXQgKnBrdCkKKyAgICAgICAgIGlmIChw YXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkMpIHsKKyAgICAgICAgICAgICBhdmlvX3c4 KHBiLCBGTFZfSVNfRVhfSEVBREVSIHwgUGFja2V0VHlwZUNvZGVkRnJhbWVzWCk7IC8vIEV4Vmlk ZW9UYWdIZWFkZXIgbW9kZSB3aXRoIFBhY2tldFR5cGVDb2RlZEZyYW1lc1gKKyAgICAgICAgICAg ICBhdmlvX3dyaXRlKHBiLCAiaHZjMSIsIDQpOworKyAgICAgICAgfSBlbHNlIGlmIChwYXItPmNv ZGVjX2lkID09IEFWX0NPREVDX0lEX0FWMSkgeworKyAgICAgICAgICAgIGF2aW9fdzgocGIsIEZM Vl9JU19FWF9IRUFERVIgfCBQYWNrZXRUeXBlQ29kZWRGcmFtZXMpOworKyAgICAgICAgICAgIGF2 aW9fd3JpdGUocGIsICJhdjAxIiwgNCk7CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg IGF2aW9fdzgocGIsIGZsYWdzKTsKKyAgICAgICAgIH0KKworRnJvbSBwYXRjaHdvcmsgTW9uIE1h eSAxNSAwODozMTo1OSAyMDIzCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9InV0 Zi04IgorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDdiaXQK K1gtUGF0Y2h3b3JrLVN1Ym1pdHRlcjogU3RldmVuIExpdSA8bHFAY2hpbmFmZm1wZWcub3JnPgor WC1QYXRjaHdvcmstSWQ6IDQxNjE4CitEZWxpdmVyZWQtVG86IGZmbXBlZ3BhdGNod29yazJAZ21h aWwuY29tCitSZWNlaXZlZDogYnkgMjAwMjphMDU6NmEyMDpiYTkxOmIwOjEwNTpmZWI6NzFmMiB3 aXRoIFNNVFAgaWQKKyBmYjE3Y3NwMTQ0NDI5MHB6YjsKKyAgICAgICAgTW9uLCAxNSBNYXkgMjAy MyAwMTozMzo0MSAtMDcwMCAoUERUKQorWC1Hb29nbGUtU210cC1Tb3VyY2U6IAorIEFDSEhVWjdr NUhTWVZwS2x1dERDSDNCVk4wM29RMWVROU5Xakt3QmViTEd2NWZLMGQycVZHR2dDdEJvM1hkRUds RFREVXV2bER6UlgKK1gtUmVjZWl2ZWQ6IGJ5IDIwMDI6YTE3OjkwNzo5MzQ3OmIwOjk0ZjozMjJk OjkwOWMgd2l0aCBTTVRQIGlkCisgYnY3LTIwMDIwYTE3MDkwNzkzNDcwMGIwMDk0ZjMyMmQ5MDlj bXIyNjk5NDExOGVqYy4zNC4xNjg0MTM5NjIwOTg2OworICAgICAgICBNb24sIDE1IE1heSAyMDIz IDAxOjMzOjQwIC0wNzAwIChQRFQpCitBUkMtU2VhbDogaT0xOyBhPXJzYS1zaGEyNTY7IHQ9MTY4 NDEzOTYyMDsgY3Y9bm9uZTsKKyAgICAgICAgZD1nb29nbGUuY29tOyBzPWFyYy0yMDE2MDgxNjsK KyAgICAgICAgYj1CQlNnZWdYUjF1MEs3NjdSOU1BeFFkZHQ0OWhaTmhEUytZZ0NIR1lvMEIwN0Ns dGVLMDE4NzM5VEs5dHVwVmg3cEsKKyAgICAgICAgIHd1dmsvZ3prRXBJWnBmMkkzTFFucGF4dlF4 MFpubGxTS3l6K3grNTYwd0VWS2tRdzV0bHdwZ3I0cUEzbTBBcEJCbVFSCisgICAgICAgICAyWlV1 NldScEJuVmVYSmJUNW4reW1JVHJMZDFOVlhMTlBxb3o3a0wwaURNTDBiMmlDOVBxQ29HUlRIRjZ6 SlpGdENIMgorICAgICAgICAgWllVcTRPZGNiZmx2cXFMQnZLdlNnRXd1Vm9mMGJxRHdEOGtmcTlu b0tUZjd3cng1YmNkSWJxNlhNWUcxbjZBblBxN1IKKyAgICAgICAgIFIrZWttaG9zRm9aN0lnb2hB a2o5azhqNmw0aXBDYzZ5Vk4yTThUTjFUZlR3UkMwMXZ6eitTUllPWFpXTE5iMGVxWnpoCisgICAg ICAgICBacDJBPT0KK0FSQy1NZXNzYWdlLVNpZ25hdHVyZTogaT0xOyBhPXJzYS1zaGEyNTY7IGM9 cmVsYXhlZC9yZWxheGVkOyBkPWdvb2dsZS5jb207Cisgcz1hcmMtMjAxNjA4MTY7CisgICAgICAg IGg9c2VuZGVyOmVycm9ycy10bzpjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nOmNjOnJlcGx5LXRv CisgICAgICAgICA6bGlzdC1zdWJzY3JpYmU6bGlzdC1oZWxwOmxpc3QtcG9zdDpsaXN0LWFyY2hp dmU6bGlzdC11bnN1YnNjcmliZQorICAgICAgICAgOmxpc3QtaWQ6cHJlY2VkZW5jZTpzdWJqZWN0 OmZlZWRiYWNrLWlkOm1pbWUtdmVyc2lvbjpyZWZlcmVuY2VzCisgICAgICAgICA6aW4tcmVwbHkt dG86bWVzc2FnZS1pZDpkYXRlOnRvOmZyb206ZGVsaXZlcmVkLXRvOworICAgICAgICBiaD1KNWhJ dDgvNmw3OTgzSFdRT0FHQTFxeTZtaldtTVd1NkRKMlJaUmZKZXVRPTsKKyAgICAgICAgYj1yWDg4 a1dISnRVaXFuTnV0RVFDT3dVdmZsNWxWL0ZWSHZpYURISXNpYXR2QjkyWEc3MXBnZUZWWG9wVGpK K3N0M0YKKyAgICAgICAgIGx1Ky9yS25ZS0FWWEZxRjRXSE1QNmJ1MFZUNWJGRTJBOTgwNmdURDVS ZjFEMnlHVmpLV1JIOGZoWTZKbDJLaEVoUUErCisgICAgICAgICBFZmM2Zk1aMnFaUm1keDVTMklO RTJrK3NZM3pnV1pzRmt2Mk5Eb3dGTG5qbnBtVEduZVZXODJ5YkNiTDA2RFJIN0p0cworICAgICAg ICAgd3hXRGZGZlRxbnAyVk53RDBDNDYyZjVvZ0xCOGNIN2Y5dW9GdmlUb3ZFWWNYYzhpTHBIUDM4 Y0phM2hkQXVKZzk3MlMKKyAgICAgICAgIGNnakpTdVpVYVEzOGJxbXc3dGgyTURrYUZTenJ5Y2sw d2FmbmVSZEpVeHlLRzdsdGJ3azRoZ0F6ODl5elVCN25aZVU2CisgICAgICAgICB5dWNBPT0KK0FS Qy1BdXRoZW50aWNhdGlvbi1SZXN1bHRzOiBpPTE7IG14Lmdvb2dsZS5jb207CisgICAgICAgc3Bm PXBhc3MgKGdvb2dsZS5jb206IGRvbWFpbiBvZiBmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcu b3JnCisgZGVzaWduYXRlcyA3OS4xMjQuMTcuMTAwIGFzIHBlcm1pdHRlZCBzZW5kZXIpCisgc210 cC5tYWlsZnJvbT1mZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnCitSZXR1cm4tUGF0aDog PGZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmc+CitSZWNlaXZlZDogZnJvbSBmZmJveDAt YmcubXBsYXllcmhxLmh1IChmZmJveDAtYmcuZmZtcGVnLm9yZy4gWzc5LjEyNC4xNy4xMDBdKQor ICAgICAgICBieSBteC5nb29nbGUuY29tIHdpdGggRVNNVFAgaWQKKyBndjQxLTIwMDIwYTE3MDkw NzJiZTkwMGIwMDk2NWYxNzE1NDNlc2kxMTU3NTE0OGVqYy4xNDguMjAyMy4wNS4xNS4wMS4zMy40 MDsKKyAgICAgICAgTW9uLCAxNSBNYXkgMjAyMyAwMTozMzo0MCAtMDcwMCAoUERUKQorUmVjZWl2 ZWQtU1BGOiBwYXNzIChnb29nbGUuY29tOiBkb21haW4gb2YgZmZtcGVnLWRldmVsLWJvdW5jZXNA ZmZtcGVnLm9yZworIGRlc2lnbmF0ZXMgNzkuMTI0LjE3LjEwMCBhcyBwZXJtaXR0ZWQgc2VuZGVy KSBjbGllbnQtaXA9NzkuMTI0LjE3LjEwMDsKK0F1dGhlbnRpY2F0aW9uLVJlc3VsdHM6IG14Lmdv b2dsZS5jb207CisgICAgICAgc3BmPXBhc3MgKGdvb2dsZS5jb206IGRvbWFpbiBvZiBmZm1wZWct ZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnCisgZGVzaWduYXRlcyA3OS4xMjQuMTcuMTAwIGFzIHBl cm1pdHRlZCBzZW5kZXIpCisgc210cC5tYWlsZnJvbT1mZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1w ZWcub3JnCitSZWNlaXZlZDogZnJvbSBbMTI3LjAuMS4xXSAobG9jYWxob3N0IFsxMjcuMC4wLjFd KQorCWJ5IGZmYm94MC1iZy5tcGxheWVyaHEuaHUgKFBvc3RmaXgpIHdpdGggRVNNVFAgaWQgRDY1 QUQ2OEMwQTg7CisJTW9uLCAxNSBNYXkgMjAyMyAxMTozMzoyOSArMDMwMCAoRUVTVCkKK1gtT3Jp Z2luYWwtVG86IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCitEZWxpdmVyZWQtVG86IGZmbXBlZy1k ZXZlbEBmZm1wZWcub3JnCitSZWNlaXZlZDogZnJvbSBiZzQuZXhtYWlsLnFxLmNvbSAoYmc0LmV4 bWFpbC5xcS5jb20gWzQzLjE1NS42Ny4xNThdKQorIGJ5IGZmYm94MC1iZy5tcGxheWVyaHEuaHUg KFBvc3RmaXgpIHdpdGggRVNNVFBTIGlkIDVBQTY3NjhDMDlGCisgZm9yIDxmZm1wZWctZGV2ZWxA ZmZtcGVnLm9yZz47IE1vbiwgMTUgTWF5IDIwMjMgMTE6MzM6MjIgKzAzMDAgKEVFU1QpCitYLVFR LW1pZDogYml6ZXNtdHA3NXQxNjg0MTM5NTk2dDRva2Y4Nm0KK1JlY2VpdmVkOiBmcm9tIGxvY2Fs aG9zdCAoIFsxMDMuMTAyLjIwMy4yMDRdKSBieSBiaXplc210cC5xcS5jb20gKEVTTVRQKSB3aXRo CisgaWQgOyBNb24sIDE1IE1heSAyMDIzIDE2OjMzOjE1ICswODAwIChDU1QpCitYLVFRLVNTRjog MDExMDAwMDAwMDAwMDBaMFowMDAwMDBBMDAwMDAwMAorWC1RUS1GRUFUOiBLdnZ3Ui9oY1BBM3dZ Nkg4NHVYMVo0T2hXOUkyYlExUVYzNXpuQno0NGg4R1ovb1V1TWFGcERjclQzZFNnCisgTVVrVFZU TUV5aFhoSE54MkpJTXhmdzUrcS8zVENVdHZuS1hzeExadFFzeS8wTnEveStwMHhWc0hKelFtTThD dmJUNkw2UTMKKyBPbXh3dkdBTzZsanZJL2lBK1NYVSszK0hVTnlldERFOFVUUlcxWkdDdEc5aUpS Yks5d1hQb2lBTXpMZXBUMitDSEdPMmJycQorIEN3SDZSQS9lOS9JNHhPSExsZXl3dEM0b0RsUHV5 SG92eHp6ZWRzQlRyWFlpYzV0YjArRDY1YWJjNk5qZkhyN3pyWUQvRFF1CisgSFkwTk53ZVg5WVAv akU4akowVFBMaGN4N3dpZ2h3K0tERmJZZitVY1V1YVBIaHpmQVpoMmY2YXBsaWJ6VnV2Vjc4T1Bx MlMKKyB0aFEvWGVNR2YvVzlDL095NEVxMTQ1K0crcFVRN3p4L09LWThKai8zM2Rtdndaa1VyOD0K K1gtUVEtR29vZEJnOiAwCitYLUJJWk1BSUwtSUQ6IDk1MzAzODc5OTU5MzAxMjA5MzIKK0Zyb206 IFN0ZXZlbiBMaXUgPGxxQGNoaW5hZmZtcGVnLm9yZz4KK1RvOiBmZm1wZWctZGV2ZWxAZmZtcGVn Lm9yZworRGF0ZTogTW9uLCAxNSBNYXkgMjAyMyAxNjozMTo1OSArMDgwMAorTWVzc2FnZS1JZDog PDIwMjMwNTE1MDgzMjAxLjQ4MjAxLTUtbHFAY2hpbmFmZm1wZWcub3JnPgorWC1NYWlsZXI6IGdp dC1zZW5kLWVtYWlsIDIuNDAuMAorSW4tUmVwbHktVG86IDwyMDIzMDUxNTA4MzIwMS40ODIwMS0x LWxxQGNoaW5hZmZtcGVnLm9yZz4KK1JlZmVyZW5jZXM6IAorIDxDQUVnLUplLXZZRDk3S25iYXFU a0s1PVVKOVQzaHRtdEgzUXlrY3dvMytyTkN4PXcralFAbWFpbC5nbWFpbC5jb20+CisgPDIwMjMw NTE1MDgzMjAxLjQ4MjAxLTEtbHFAY2hpbmFmZm1wZWcub3JnPgorTUlNRS1WZXJzaW9uOiAxLjAK K1gtUVEtU0VORFNJWkU6IDUyMAorRmVlZGJhY2stSUQ6IGJpemVzbXRwOmNoaW5hZmZtcGVnLm9y ZzpxeWJnbG9naWNzdnJzejpxeWJnbG9naWNzdnJzejNhLTMKK1N1YmplY3Q6IFtGRm1wZWctZGV2 ZWxdIFtQQVRDSCB2MTAgNC82XSBhdmZvcm1hdC9mbHZkZWM6IHN1cHBvcnQgZGVtdXggYXYxCisg aW4gZW5oYW5jZWQgZmx2CitYLUJlZW5UaGVyZTogZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKK1gt TWFpbG1hbi1WZXJzaW9uOiAyLjEuMjkKK1ByZWNlZGVuY2U6IGxpc3QKK0xpc3QtSWQ6IEZGbXBl ZyBkZXZlbG9wbWVudCBkaXNjdXNzaW9ucyBhbmQgcGF0Y2hlcyA8ZmZtcGVnLWRldmVsLmZmbXBl Zy5vcmc+CitMaXN0LVVuc3Vic2NyaWJlOiA8aHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vb3B0 aW9ucy9mZm1wZWctZGV2ZWw+LAorIDxtYWlsdG86ZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVn Lm9yZz9zdWJqZWN0PXVuc3Vic2NyaWJlPgorTGlzdC1BcmNoaXZlOiA8aHR0cHM6Ly9mZm1wZWcu b3JnL3BpcGVybWFpbC9mZm1wZWctZGV2ZWw+CitMaXN0LVBvc3Q6IDxtYWlsdG86ZmZtcGVnLWRl dmVsQGZmbXBlZy5vcmc+CitMaXN0LUhlbHA6IDxtYWlsdG86ZmZtcGVnLWRldmVsLXJlcXVlc3RA ZmZtcGVnLm9yZz9zdWJqZWN0PWhlbHA+CitMaXN0LVN1YnNjcmliZTogPGh0dHBzOi8vZmZtcGVn Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbD4sCisgPG1haWx0bzpmZm1wZWctZGV2 ZWwtcmVxdWVzdEBmZm1wZWcub3JnP3N1YmplY3Q9c3Vic2NyaWJlPgorUmVwbHktVG86IEZGbXBl ZyBkZXZlbG9wbWVudCBkaXNjdXNzaW9ucyBhbmQgcGF0Y2hlcyA8ZmZtcGVnLWRldmVsQGZmbXBl Zy5vcmc+CitDYzogU3RldmVuIExpdSA8bHFAY2hpbmFmZm1wZWcub3JnPgorRXJyb3JzLVRvOiBm Zm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnCitTZW5kZXI6ICJmZm1wZWctZGV2ZWwiIDxm Zm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnPgorWC1UVUlEOiBNS3FqVmluaXdJeSsKKwor U2lnbmVkLW9mZi1ieTogU3RldmVuIExpdSA8bHFAY2hpbmFmZm1wZWcub3JnPgorLS0tCisgbGli YXZmb3JtYXQvZmx2ZGVjLmMgfCAxMiArKysrKysrKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTAg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0 L2ZsdmRlYy5jIGIvbGliYXZmb3JtYXQvZmx2ZGVjLmMKK2luZGV4IGM4ZTZjYWRmMWMuLmEwMzYy ZmYxMWMgMTAwNjQ0CistLS0gYS9saWJhdmZvcm1hdC9mbHZkZWMuYworKysrIGIvbGliYXZmb3Jt YXQvZmx2ZGVjLmMKK0BAIC0zMTgsNiArMzE4LDggQEAgc3RhdGljIGludCBmbHZfc2FtZV92aWRl b19jb2RlYyhBVkZvcm1hdENvbnRleHQgKnMsIEFWQ29kZWNQYXJhbWV0ZXJzICp2cGFyLCBpbnQK KyAgICAgICAgIHN3aXRjaChjb2RlY19pZCkgeworICAgICAgICAgICAgIGNhc2UgTUtCRVRBRygn aCcsICd2JywgJ2MnLCAnMScpOgorICAgICAgICAgICAgICAgICByZXR1cm4gdnBhci0+Y29kZWNf aWQgPT0gQVZfQ09ERUNfSURfSEVWQzsKKysgICAgICAgICAgICBjYXNlIE1LQkVUQUcoJ2EnLCAn dicsICcwJywgJzEnKToKKysgICAgICAgICAgICAgICAgcmV0dXJuIHZwYXItPmNvZGVjX2lkID09 IEFWX0NPREVDX0lEX0FWMTsKKyAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg ICBicmVhazsKKyAgICAgICAgIH0KK0BAIC0zNTksNiArMzYxLDEwIEBAIHN0YXRpYyBpbnQgZmx2 X3NldF92aWRlb19jb2RlYyhBVkZvcm1hdENvbnRleHQgKnMsIEFWU3RyZWFtICp2c3RyZWFtLAor ICAgICAgICAgICAgICAgICBwYXItPmNvZGVjX2lkID0gQVZfQ09ERUNfSURfSEVWQzsKKyAgICAg ICAgICAgICAgICAgdnN0cmVhbWktPm5lZWRfcGFyc2luZyA9IEFWU1RSRUFNX1BBUlNFX0hFQURF UlM7CisgICAgICAgICAgICAgICAgIHJldHVybiA0OworKyAgICAgICAgICAgIGNhc2UgTUtCRVRB RygnYScsICd2JywgJzAnLCAnMScpOgorKyAgICAgICAgICAgICAgICBwYXItPmNvZGVjX2lkID0g QVZfQ09ERUNfSURfQVYxOworKyAgICAgICAgICAgICAgICB2c3RyZWFtaS0+bmVlZF9wYXJzaW5n ID0gQVZTVFJFQU1fUEFSU0VfSEVBREVSUzsKKysgICAgICAgICAgICAgICAgcmV0dXJuIDQ7Cisg ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICB9 CitAQCAtMTI3OCw3ICsxMjg0LDggQEAgcmV0cnlfZHVyYXRpb246CisgICAgIGlmIChzdC0+Y29k ZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FBQyB8fAorICAgICAgICAgc3QtPmNvZGVj cGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0IHx8CisgICAgICAgICBzdC0+Y29kZWNw YXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUc0IHx8CistICAgICAgICBzdC0+Y29kZWNw YXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkMpIHsKKysgICAgICAgIHN0LT5jb2RlY3Bh ci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQyB8fAorKyAgICAgICAgc3QtPmNvZGVjcGFy LT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BVjEpIHsKKyAgICAgICAgIGludCB0eXBlID0gMDsK KyAgICAgICAgIGlmIChmbHYtPmV4aGVhZGVyICYmIHN0cmVhbV90eXBlID09IEZMVl9TVFJFQU1f VFlQRV9WSURFTykgeworICAgICAgICAgICAgIHR5cGUgPSBmbGFncyAmIDB4MEY7CitAQCAtMTMw OSw3ICsxMzE2LDggQEAgcmV0cnlfZHVyYXRpb246CisgICAgICAgICAgICAgfQorICAgICAgICAg fQorICAgICAgICAgaWYgKHR5cGUgPT0gMCAmJiAoIXN0LT5jb2RlY3Bhci0+ZXh0cmFkYXRhIHx8 IHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQUFDIHx8CistICAgICAgICAg ICAgc3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0IHx8IHN0LT5jb2Rl Y3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQykpIHsKKysgICAgICAgICAgICBzdC0+ Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjQgfHwgc3QtPmNvZGVjcGFyLT5j b2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDIHx8CisrICAgICAgICAgICAgc3QtPmNvZGVjcGFy LT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BVjEpKSB7CisgICAgICAgICAgICAgQVZEaWN0aW9u YXJ5RW50cnkgKnQ7CisgCisgICAgICAgICAgICAgaWYgKHN0LT5jb2RlY3Bhci0+ZXh0cmFkYXRh KSB7CisKK0Zyb20gcGF0Y2h3b3JrIE1vbiBNYXkgMTUgMDg6MzI6MDAgMjAyMworQ29udGVudC1U eXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1dGYtOCIKK01JTUUtVmVyc2lvbjogMS4wCitDb250 ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA3Yml0CitYLVBhdGNod29yay1TdWJtaXR0ZXI6IFN0ZXZl biBMaXUgPGxxQGNoaW5hZmZtcGVnLm9yZz4KK1gtUGF0Y2h3b3JrLUlkOiA0MTYxOQorRGVsaXZl cmVkLVRvOiBmZm1wZWdwYXRjaHdvcmsyQGdtYWlsLmNvbQorUmVjZWl2ZWQ6IGJ5IDIwMDI6YTA1 OjZhMjA6YmE5MTpiMDoxMDU6ZmViOjcxZjIgd2l0aCBTTVRQIGlkCisgZmIxN2NzcDE0NDQ1MzJw emI7CisgICAgICAgIE1vbiwgMTUgTWF5IDIwMjMgMDE6MzQ6MTAgLTA3MDAgKFBEVCkKK1gtR29v Z2xlLVNtdHAtU291cmNlOiAKKyBBQ0hIVVo0UWxGcVhNYTBXTkhLM1ozSExnUG0yVXNrdVFaWDJ3 bWJGaFltK1pMMEJzRFJQaEx4SmJvRzBZaERQRmk5OTlhVkNRWkUrCitYLVJlY2VpdmVkOiBieSAy MDAyOmEwNTo2NDAyOjE0YzM6YjA6NTBkOmZjZmI6ODYzMyB3aXRoIFNNVFAgaWQKKyBmMy0yMDAy MGEwNTY0MDIxNGMzMDBiMDA1MGRmY2ZiODYzM21yOTYxMzc4OWVkeC45LjE2ODQxMzk2NTAxOTY7 CisgICAgICAgIE1vbiwgMTUgTWF5IDIwMjMgMDE6MzQ6MTAgLTA3MDAgKFBEVCkKK0FSQy1TZWFs OiBpPTE7IGE9cnNhLXNoYTI1NjsgdD0xNjg0MTM5NjUwOyBjdj1ub25lOworICAgICAgICBkPWdv b2dsZS5jb207IHM9YXJjLTIwMTYwODE2OworICAgICAgICBiPXNqZm00eGhUUHFqR055SGx4UzMv a01QaWx4MTNFQis3UzBZeGpPSTVsUjlNTWc4U3kzS2dMMTg3QzZ0dVpxVXdvWgorICAgICAgICAg ZEpvN0EzcTQxRUs0V0p5V1RUVXlxVU9yOHE4SlBqYkJUQ0pwVnNFUnVNdU1XcEhyaFF4dndFRGli dmZ1REkwWkkydksKKyAgICAgICAgIHk1cHFSWjIzT01OWkxDQytmc2M4NWdRREtQZ3ZrWVpUWWlz U09zV1ZSaVpRR2wwNFRpcGZaRTFVemE4UjdaRVhSZ2RICisgICAgICAgICBaVzc3MFljZnpWWG1L S3pyYWxINHRoU0ZoR2ZNWlJwWDdrajZvQnRtcFVjbzRaNml1NDJvM2lCVGNhaW9HQnpkV2RQWQor ICAgICAgICAgS0w5NFdBSWFNbkN5TzFKSmFVQUpHekVjUVRHaFBiWFV6RzdKdm1xRXdTYTE2OEdC U0VqUUozcUpjOG9PcitVVldjdm4KKyAgICAgICAgIEh2YVE9PQorQVJDLU1lc3NhZ2UtU2lnbmF0 dXJlOiBpPTE7IGE9cnNhLXNoYTI1NjsgYz1yZWxheGVkL3JlbGF4ZWQ7IGQ9Z29vZ2xlLmNvbTsK KyBzPWFyYy0yMDE2MDgxNjsKKyAgICAgICAgaD1zZW5kZXI6ZXJyb3JzLXRvOmNvbnRlbnQtdHJh bnNmZXItZW5jb2Rpbmc6Y2M6cmVwbHktdG8KKyAgICAgICAgIDpsaXN0LXN1YnNjcmliZTpsaXN0 LWhlbHA6bGlzdC1wb3N0Omxpc3QtYXJjaGl2ZTpsaXN0LXVuc3Vic2NyaWJlCisgICAgICAgICA6 bGlzdC1pZDpwcmVjZWRlbmNlOnN1YmplY3Q6ZmVlZGJhY2staWQ6bWltZS12ZXJzaW9uOnJlZmVy ZW5jZXMKKyAgICAgICAgIDppbi1yZXBseS10bzptZXNzYWdlLWlkOmRhdGU6dG86ZnJvbTpkZWxp dmVyZWQtdG87CisgICAgICAgIGJoPWIxU3A1b3FaQU13YWtJN2EzWnZ3NE1kbktQeW9tWm84Y1hx RG55SmFtamc9OworICAgICAgICBiPWpjRkpPbGkxNk5QcUdQbk1EY0pWRVIzVEVrV3JlTkoyVnU3 NzExR2hKaEZrbVhMTkZoUzJGVUFvVDlRQlR5K0pXbQorICAgICAgICAganhhQmppVnZzMU1NUSth M2szeVQ3QXpWU1VNTUREU2FnaUUvald6USt2Qk45ZHIvalFPTXRKV3h3Zm00b1RiQmMwL3IKKyAg ICAgICAgIEdjSFRnUEtCMkh2RWlMT1dhSjRDU2ZaY1lCdm9zb2V3L0lmUGdLbTA2UDJCdG1jK2Zh U1hMQ1o2M25LRVZUcTdOQ3B4CisgICAgICAgICBxbGxKUGtGbXZsd0IvK3NveE43blpnVHpYbS91 dXJTT0JNYWpJbVJHUE9aVU9aUUUxSTVUazhPdEpYWlA2UXRsU3ZYVAorICAgICAgICAgWmNnbGV3 aFRZdUhsQVhicFQ0c1l5ZGRNd0tnOXlQdTYvV21yb2wvd2czUXBYUFowbFZ0TGVUb3p1cy8yVVRJ U0pyUjUKKyAgICAgICAgIExwM1E9PQorQVJDLUF1dGhlbnRpY2F0aW9uLVJlc3VsdHM6IGk9MTsg bXguZ29vZ2xlLmNvbTsKKyAgICAgICBzcGY9cGFzcyAoZ29vZ2xlLmNvbTogZG9tYWluIG9mIGZm bXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmcKKyBkZXNpZ25hdGVzIDc5LjEyNC4xNy4xMDAg YXMgcGVybWl0dGVkIHNlbmRlcikKKyBzbXRwLm1haWxmcm9tPWZmbXBlZy1kZXZlbC1ib3VuY2Vz QGZmbXBlZy5vcmcKK1JldHVybi1QYXRoOiA8ZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9y Zz4KK1JlY2VpdmVkOiBmcm9tIGZmYm94MC1iZy5tcGxheWVyaHEuaHUgKGZmYm94MC1iZy5mZm1w ZWcub3JnLiBbNzkuMTI0LjE3LjEwMF0pCisgICAgICAgIGJ5IG14Lmdvb2dsZS5jb20gd2l0aCBF U01UUCBpZAorIGYyNS0yMDAyMGEwNTY0MDIxNTE5MDBiMDA1MGJkMzcyNzhkOXNpMTE4NTY5MjVl ZHcuNDM1LjIwMjMuMDUuMTUuMDEuMzQuMDk7CisgICAgICAgIE1vbiwgMTUgTWF5IDIwMjMgMDE6 MzQ6MTAgLTA3MDAgKFBEVCkKK1JlY2VpdmVkLVNQRjogcGFzcyAoZ29vZ2xlLmNvbTogZG9tYWlu IG9mIGZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmcKKyBkZXNpZ25hdGVzIDc5LjEyNC4x Ny4xMDAgYXMgcGVybWl0dGVkIHNlbmRlcikgY2xpZW50LWlwPTc5LjEyNC4xNy4xMDA7CitBdXRo ZW50aWNhdGlvbi1SZXN1bHRzOiBteC5nb29nbGUuY29tOworICAgICAgIHNwZj1wYXNzIChnb29n bGUuY29tOiBkb21haW4gb2YgZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZworIGRlc2ln bmF0ZXMgNzkuMTI0LjE3LjEwMCBhcyBwZXJtaXR0ZWQgc2VuZGVyKQorIHNtdHAubWFpbGZyb209 ZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZworUmVjZWl2ZWQ6IGZyb20gWzEyNy4wLjEu MV0gKGxvY2FsaG9zdCBbMTI3LjAuMC4xXSkKKwlieSBmZmJveDAtYmcubXBsYXllcmhxLmh1IChQ b3N0Zml4KSB3aXRoIEVTTVRQIGlkIDBEQjY1NjhDMDkyOworCU1vbiwgMTUgTWF5IDIwMjMgMTE6 MzQ6MDcgKzAzMDAgKEVFU1QpCitYLU9yaWdpbmFsLVRvOiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9y ZworRGVsaXZlcmVkLVRvOiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZworUmVjZWl2ZWQ6IGZyb20g Ymc0LmV4bWFpbC5xcS5jb20gKGJnNC5leG1haWwucXEuY29tIFs0My4xNTQuMjIxLjU4XSkKKyBi eSBmZmJveDAtYmcubXBsYXllcmhxLmh1IChQb3N0Zml4KSB3aXRoIEVTTVRQUyBpZCA5NkExNDY4 MDI3NAorIGZvciA8ZmZtcGVnLWRldmVsQGZmbXBlZy5vcmc+OyBNb24sIDE1IE1heSAyMDIzIDEx OjMzOjU5ICswMzAwIChFRVNUKQorWC1RUS1taWQ6IGJpemVzbXRwNzZ0MTY4NDEzOTYzNHRnODNi ZXUwCitSZWNlaXZlZDogZnJvbSBsb2NhbGhvc3QgKCBbMTAzLjEwMi4yMDMuMjA0XSkgYnkgYml6 ZXNtdHAucXEuY29tIChFU01UUCkgd2l0aAorIGlkIDsgTW9uLCAxNSBNYXkgMjAyMyAxNjozMzo1 MiArMDgwMCAoQ1NUKQorWC1RUS1TU0Y6IDAxMTAwMDAwMDAwMDAwWjBaMDAwMDAwQTAwMDAwMDAK K1gtUVEtRkVBVDogRFdTQ2N3Vy9hUWI4M1U1QnE5TjAwdzNra0l1b2ZOaVV2bFFiZ1Iwc2dHakZF YXMrdmg3d1h5UnljRlQvegorIHczM1NIN3VOUlg4bG1QKzgraXk2alFIL2dzYVFSVkFhdTJ6OEsw dXRkeDlHdVpNdlkwZTVTWmZCMHpCZm5jYjFOZEJaSnhCCisgUHR2aWJhdm5qMnJEbHFyR0xPOWR2 RkVmbVlqMUs0OEhZcDZyZGpDYit4UlBmeU90bmN0M1pxNlNUN0YxRHhVMStLbXQ4Y3cKKyAycVZn ZUE3OUROSG0xSmJjRHppLzJXL1NweldIV2svamFtTjRjQVFmS3lQOUI0QXZNUGFGZDhrZGw2YWtZ YlIwUTg0SDczTQorIFBjeDhVWHo2aXc0c0NUU1BGemYwenJzSTQrc2hseTlLRnA0VUVTVGZSYkRF SjQ2cGN5dzgrNlV6K1E3dys3Q1J0UGxPc21zCisgSzZJQWJjTHdpY2YvdjhSbTJuSGRyTlBvdGNh TWdZNXA3SXFta1kvWS9iMmZlcUtpQU09CitYLVFRLUdvb2RCZzogMAorWC1CSVpNQUlMLUlEOiA0 NjExNzE4NDgzMDU2Nzg5MzY0CitGcm9tOiBTdGV2ZW4gTGl1IDxscUBjaGluYWZmbXBlZy5vcmc+ CitUbzogZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKK0RhdGU6IE1vbiwgMTUgTWF5IDIwMjMgMTY6 MzI6MDAgKzA4MDAKK01lc3NhZ2UtSWQ6IDwyMDIzMDUxNTA4MzIwMS40ODIwMS02LWxxQGNoaW5h ZmZtcGVnLm9yZz4KK1gtTWFpbGVyOiBnaXQtc2VuZC1lbWFpbCAyLjQwLjAKK0luLVJlcGx5LVRv OiA8MjAyMzA1MTUwODMyMDEuNDgyMDEtMS1scUBjaGluYWZmbXBlZy5vcmc+CitSZWZlcmVuY2Vz OiAKKyA8Q0FFZy1KZS12WUQ5N0tuYmFxVGtLNT1VSjlUM2h0bXRIM1F5a2N3bzMrck5DeD13K2pR QG1haWwuZ21haWwuY29tPgorIDwyMDIzMDUxNTA4MzIwMS40ODIwMS0xLWxxQGNoaW5hZmZtcGVn Lm9yZz4KK01JTUUtVmVyc2lvbjogMS4wCitYLVFRLVNFTkRTSVpFOiA1MjAKK0ZlZWRiYWNrLUlE OiBiaXplc210cDpjaGluYWZmbXBlZy5vcmc6cXliZ2xvZ2ljc3Zyc3o6cXliZ2xvZ2ljc3Zyc3oz YS0zCitTdWJqZWN0OiBbRkZtcGVnLWRldmVsXSBbUEFUQ0ggdjEwIDUvNl0gYXZmb3JtYXQvZmx2 ZW5jOiBzdXBwb3J0IG11eCB2cDkgaW4KKyBlbmhhbmNlZCBmbHYKK1gtQmVlblRoZXJlOiBmZm1w ZWctZGV2ZWxAZmZtcGVnLm9yZworWC1NYWlsbWFuLVZlcnNpb246IDIuMS4yOQorUHJlY2VkZW5j ZTogbGlzdAorTGlzdC1JZDogRkZtcGVnIGRldmVsb3BtZW50IGRpc2N1c3Npb25zIGFuZCBwYXRj aGVzIDxmZm1wZWctZGV2ZWwuZmZtcGVnLm9yZz4KK0xpc3QtVW5zdWJzY3JpYmU6IDxodHRwczov L2ZmbXBlZy5vcmcvbWFpbG1hbi9vcHRpb25zL2ZmbXBlZy1kZXZlbD4sCisgPG1haWx0bzpmZm1w ZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnP3N1YmplY3Q9dW5zdWJzY3JpYmU+CitMaXN0LUFy Y2hpdmU6IDxodHRwczovL2ZmbXBlZy5vcmcvcGlwZXJtYWlsL2ZmbXBlZy1kZXZlbD4KK0xpc3Qt UG9zdDogPG1haWx0bzpmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZz4KK0xpc3QtSGVscDogPG1haWx0 bzpmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnP3N1YmplY3Q9aGVscD4KK0xpc3QtU3Vi c2NyaWJlOiA8aHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVs PiwKKyA8bWFpbHRvOmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmc/c3ViamVjdD1zdWJz Y3JpYmU+CitSZXBseS1UbzogRkZtcGVnIGRldmVsb3BtZW50IGRpc2N1c3Npb25zIGFuZCBwYXRj aGVzIDxmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZz4KK0NjOiBTdGV2ZW4gTGl1IDxscUBjaGluYWZm bXBlZy5vcmc+CitFcnJvcnMtVG86IGZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmcKK1Nl bmRlcjogImZmbXBlZy1kZXZlbCIgPGZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmc+CitY LVRVSUQ6IGFwcGN5TFVKZWVGVworCitTaWduZWQtb2ZmLWJ5OiBTdGV2ZW4gTGl1IDxscUBjaGlu YWZmbXBlZy5vcmc+CistLS0KKyBsaWJhdmZvcm1hdC9NYWtlZmlsZSB8ICAyICstCisgbGliYXZm b3JtYXQvZmx2ZW5jLmMgfCAyMiArKysrKysrKysrKysrKy0tLS0tLS0tCisgMiBmaWxlcyBjaGFu Z2VkLCAxNSBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGli YXZmb3JtYXQvTWFrZWZpbGUgYi9saWJhdmZvcm1hdC9NYWtlZmlsZQoraW5kZXggYzg2OGUxNjI2 Yy4uMTZjZmUxMDdlYSAxMDA2NDQKKy0tLSBhL2xpYmF2Zm9ybWF0L01ha2VmaWxlCisrKysgYi9s aWJhdmZvcm1hdC9NYWtlZmlsZQorQEAgLTIxNCw3ICsyMTQsNyBAQCBPQkpTLSQoQ09ORklHX0ZM QUNfTVVYRVIpICAgICAgICAgICAgICAgICs9IGZsYWNlbmMubyBmbGFjZW5jX2hlYWRlci5vIFwK KyBPQkpTLSQoQ09ORklHX0ZMSUNfREVNVVhFUikgICAgICAgICAgICAgICs9IGZsaWMubworIE9C SlMtJChDT05GSUdfRkxWX0RFTVVYRVIpICAgICAgICAgICAgICAgKz0gZmx2ZGVjLm8KKyBPQkpT LSQoQ09ORklHX0xJVkVfRkxWX0RFTVVYRVIpICAgICAgICAgICs9IGZsdmRlYy5vCistT0JKUy0k KENPTkZJR19GTFZfTVVYRVIpICAgICAgICAgICAgICAgICArPSBmbHZlbmMubyBhdmMubyBoZXZj Lm8gYXYxLm8KKytPQkpTLSQoQ09ORklHX0ZMVl9NVVhFUikgICAgICAgICAgICAgICAgICs9IGZs dmVuYy5vIGF2Yy5vIGhldmMubyBhdjEubyB2cGNjLm8KKyBPQkpTLSQoQ09ORklHX0ZPVVJYTV9E RU1VWEVSKSAgICAgICAgICAgICs9IDR4bS5vCisgT0JKUy0kKENPTkZJR19GUkFNRUNSQ19NVVhF UikgICAgICAgICAgICArPSBmcmFtZWNyY2VuYy5vIGZyYW1laGFzaC5vCisgT0JKUy0kKENPTkZJ R19GUkFNRUhBU0hfTVVYRVIpICAgICAgICAgICArPSBoYXNoZW5jLm8gZnJhbWVoYXNoLm8KK2Rp ZmYgLS1naXQgYS9saWJhdmZvcm1hdC9mbHZlbmMuYyBiL2xpYmF2Zm9ybWF0L2ZsdmVuYy5jCitp bmRleCBjMTc4NGIzMzJkLi40NzVkZDBiZjQ0IDEwMDY0NAorLS0tIGEvbGliYXZmb3JtYXQvZmx2 ZW5jLmMKKysrKyBiL2xpYmF2Zm9ybWF0L2ZsdmVuYy5jCitAQCAtMjksNiArMjksNyBAQAorICNp bmNsdWRlICJhdmlvLmgiCisgI2luY2x1ZGUgImF2Yy5oIgorICNpbmNsdWRlICJhdjEuaCIKKysj aW5jbHVkZSAidnBjYy5oIgorICNpbmNsdWRlICJoZXZjLmgiCisgI2luY2x1ZGUgImF2Zm9ybWF0 LmgiCisgI2luY2x1ZGUgImZsdi5oIgorQEAgLTUwLDYgKzUxLDcgQEAgc3RhdGljIGNvbnN0IEFW Q29kZWNUYWcgZmx2X3ZpZGVvX2NvZGVjX2lkc1tdID0geworICAgICB7IEFWX0NPREVDX0lEX0gy NjQsICAgICBGTFZfQ09ERUNJRF9IMjY0IH0sCisgICAgIHsgQVZfQ09ERUNfSURfSEVWQywgICAg IE1LQkVUQUcoJ2gnLCAndicsICdjJywgJzEnKSB9LAorICAgICB7IEFWX0NPREVDX0lEX0FWMSwg ICAgICBNS0JFVEFHKCdhJywgJ3YnLCAnMCcsICcxJykgfSwKKysgICAgeyBBVl9DT0RFQ19JRF9W UDksICAgICAgTUtCRVRBRygndicsICdwJywgJzAnLCAnOScpIH0sCisgICAgIHsgQVZfQ09ERUNf SURfTk9ORSwgICAgIDAgfQorIH07CisgCitAQCAtNDk0LDcgKzQ5Niw3IEBAIHN0YXRpYyB2b2lk IGZsdl93cml0ZV9jb2RlY19oZWFkZXIoQVZGb3JtYXRDb250ZXh0KiBzLCBBVkNvZGVjUGFyYW1l dGVycyogcGFyLCBpCisgCisgICAgIGlmIChwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FB QyB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjQKKyAgICAgICAgICAgICB8fCBw YXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUc0IHx8IHBhci0+Y29kZWNfaWQgPT0gQVZf Q09ERUNfSURfSEVWQworLSAgICAgICAgICAgIHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNf SURfQVYxKSB7CisrICAgICAgICAgICAgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9B VjEgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDkpIHsKKyAgICAgICAgIGludDY0 X3QgcG9zOworICAgICAgICAgYXZpb193OChwYiwKKyAgICAgICAgICAgICAgICAgcGFyLT5jb2Rl Y190eXBlID09IEFWTUVESUFfVFlQRV9WSURFTyA/CitAQCAtNTQwLDkgKzU0Miw5IEBAIHN0YXRp YyB2b2lkIGZsdl93cml0ZV9jb2RlY19oZWFkZXIoQVZGb3JtYXRDb250ZXh0KiBzLCBBVkNvZGVj UGFyYW1ldGVycyogcGFyLCBpCisgICAgICAgICAgICAgaWYgKHBhci0+Y29kZWNfaWQgPT0gQVZf Q09ERUNfSURfSEVWQykgeworICAgICAgICAgICAgICAgICBhdmlvX3c4KHBiLCBGTFZfSVNfRVhf SEVBREVSIHwgUGFja2V0VHlwZVNlcXVlbmNlU3RhcnQpOyAvLyBFeFZpZGVvVGFnSGVhZGVyIG1v ZGUgd2l0aCBQYWNrZXRUeXBlU2VxdWVuY2VTdGFydAorICAgICAgICAgICAgICAgICBhdmlvX3dy aXRlKHBiLCAiaHZjMSIsIDQpOworLSAgICAgICAgICAgIH0gZWxzZSBpZiAocGFyLT5jb2RlY19p ZCA9PSBBVl9DT0RFQ19JRF9BVjEpIHsKKysgICAgICAgICAgICB9IGVsc2UgaWYgKHBhci0+Y29k ZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYxIHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURf VlA5KSB7CisgICAgICAgICAgICAgICAgIGF2aW9fdzgocGIsIEZMVl9JU19FWF9IRUFERVIgfCBQ YWNrZXRUeXBlU2VxdWVuY2VTdGFydCk7CistICAgICAgICAgICAgICAgIGF2aW9fd3JpdGUocGIs ICJhdjAxIiwgNCk7CisrICAgICAgICAgICAgICAgIGF2aW9fd3JpdGUocGIsIHBhci0+Y29kZWNf aWQgPT0gQVZfQ09ERUNfSURfQVYxID8gImF2MDEiIDogInZwMDkiLCA0KTsKKyAgICAgICAgICAg ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICBhdmlvX3c4KHBiLCBwYXItPmNvZGVjX3RhZyB8 IEZMVl9GUkFNRV9LRVkpOyAvLyBmbGFncworICAgICAgICAgICAgICAgICBhdmlvX3c4KHBiLCAw KTsgLy8gQVZDIHNlcXVlbmNlIGhlYWRlcgorQEAgLTU1Myw2ICs1NTUsOCBAQCBzdGF0aWMgdm9p ZCBmbHZfd3JpdGVfY29kZWNfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCogcywgQVZDb2RlY1BhcmFt ZXRlcnMqIHBhciwgaQorICAgICAgICAgICAgICAgICBmZl9pc29tX3dyaXRlX2h2Y2MocGIsIHBh ci0+ZXh0cmFkYXRhLCBwYXItPmV4dHJhZGF0YV9zaXplLCAwKTsKKyAgICAgICAgICAgICBlbHNl IGlmIChwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FWMSkKKyAgICAgICAgICAgICAgICAg ZmZfaXNvbV93cml0ZV9hdjFjKHBiLCBwYXItPmV4dHJhZGF0YSwgcGFyLT5leHRyYWRhdGFfc2l6 ZSwgMSk7CisrICAgICAgICAgICAgZWxzZSBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19J RF9WUDkpCisrICAgICAgICAgICAgICAgIGZmX2lzb21fd3JpdGVfdnBjYyhzLCBwYiwgcGFyLT5l eHRyYWRhdGEsIHBhci0+ZXh0cmFkYXRhX3NpemUsIHBhcik7CisgICAgICAgICAgICAgZWxzZQor ICAgICAgICAgICAgICAgICBmZl9pc29tX3dyaXRlX2F2Y2MocGIsIHBhci0+ZXh0cmFkYXRhLCBw YXItPmV4dHJhZGF0YV9zaXplKTsKKyAgICAgICAgIH0KK0BAIC04NTIsMTQgKzg1NiwxNSBAQCBz dGF0aWMgaW50IGZsdl93cml0ZV9wYWNrZXQoQVZGb3JtYXRDb250ZXh0ICpzLCBBVlBhY2tldCAq cGt0KQorICAgICAgICAgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDYgIHx8IHBhci0+ Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQUFDKQorICAgICAgICAgZmxhZ3Nfc2l6ZSA9IDI7Cisg ICAgIGVsc2UgaWYgKHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSDI2NCB8fCBwYXItPmNv ZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUc0IHx8CistICAgICAgICAgICAgIHBhci0+Y29kZWNf aWQgPT0gQVZfQ09ERUNfSURfSEVWQyB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FW MSkKKysgICAgICAgICAgICAgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDIHx8IHBh ci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYxIHx8CisrICAgICAgICAgICAgIHBhci0+Y29k ZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA5KQorICAgICAgICAgZmxhZ3Nfc2l6ZSA9IDU7CisgICAg IGVsc2UKKyAgICAgICAgIGZsYWdzX3NpemUgPSAxOworIAorICAgICBpZiAocGFyLT5jb2RlY19p ZCA9PSBBVl9DT0RFQ19JRF9BQUMgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0 CisgICAgICAgICAgICAgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHNCB8fCBw YXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkMKKy0gICAgICAgICAgICB8fCBwYXItPmNv ZGVjX2lkID09IEFWX0NPREVDX0lEX0FWMSkgeworKyAgICAgICAgICAgIHx8IHBhci0+Y29kZWNf aWQgPT0gQVZfQ09ERUNfSURfQVYxIHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA5 KSB7CisgICAgICAgICBzaXplX3Qgc2lkZV9zaXplOworICAgICAgICAgdWludDhfdCAqc2lkZSA9 IGF2X3BhY2tldF9nZXRfc2lkZV9kYXRhKHBrdCwgQVZfUEtUX0RBVEFfTkVXX0VYVFJBREFUQSwg JnNpZGVfc2l6ZSk7CisgICAgICAgICBpZiAoc2lkZSAmJiBzaWRlX3NpemUgPiAwICYmIChzaWRl X3NpemUgIT0gcGFyLT5leHRyYWRhdGFfc2l6ZSB8fCBtZW1jbXAoc2lkZSwgcGFyLT5leHRyYWRh dGEsIHNpZGVfc2l6ZSkpKSB7CitAQCAtODgwLDcgKzg4NSw4IEBAIHN0YXRpYyBpbnQgZmx2X3dy aXRlX3BhY2tldChBVkZvcm1hdENvbnRleHQgKnMsIEFWUGFja2V0ICpwa3QpCisgICAgICAgICBy ZXR1cm4gQVZFUlJPUihFSU5WQUwpOworICAgICB9CisgICAgIGlmIChwYXItPmNvZGVjX2lkID09 IEFWX0NPREVDX0lEX0gyNjQgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHNCB8 fAorLSAgICAgICAgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDIHx8ICBwYXItPmNv ZGVjX2lkID09IEFWX0NPREVDX0lEX0FWMSkgeworKyAgICAgICAgcGFyLT5jb2RlY19pZCA9PSBB Vl9DT0RFQ19JRF9IRVZDIHx8ICBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FWMSB8fAor KyAgICAgICAgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDkpIHsKKyAgICAgICAgIGlm IChwa3QtPnB0cyA9PSBBVl9OT1BUU19WQUxVRSkgeworICAgICAgICAgICAgIGF2X2xvZyhzLCBB Vl9MT0dfRVJST1IsICJQYWNrZXQgaXMgbWlzc2luZyBQVFNcbiIpOworICAgICAgICAgICAgIHJl dHVybiBBVkVSUk9SKEVJTlZBTCk7CitAQCAtOTkzLDkgKzk5OSw5IEBAIHN0YXRpYyBpbnQgZmx2 X3dyaXRlX3BhY2tldChBVkZvcm1hdENvbnRleHQgKnMsIEFWUGFja2V0ICpwa3QpCisgICAgICAg ICBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDKSB7CisgICAgICAgICAgICAg YXZpb193OChwYiwgRkxWX0lTX0VYX0hFQURFUiB8IFBhY2tldFR5cGVDb2RlZEZyYW1lc1gpOyAv LyBFeFZpZGVvVGFnSGVhZGVyIG1vZGUgd2l0aCBQYWNrZXRUeXBlQ29kZWRGcmFtZXNYCisgICAg ICAgICAgICAgYXZpb193cml0ZShwYiwgImh2YzEiLCA0KTsKKy0gICAgICAgIH0gZWxzZSBpZiAo cGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BVjEpIHsKKysgICAgICAgIH0gZWxzZSBpZiAo cGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BVjEgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9D T0RFQ19JRF9WUDkpIHsKKyAgICAgICAgICAgICBhdmlvX3c4KHBiLCBGTFZfSVNfRVhfSEVBREVS IHwgUGFja2V0VHlwZUNvZGVkRnJhbWVzKTsKKy0gICAgICAgICAgICBhdmlvX3dyaXRlKHBiLCAi YXYwMSIsIDQpOworKyAgICAgICAgICAgIGF2aW9fd3JpdGUocGIsIHBhci0+Y29kZWNfaWQgPT0g QVZfQ09ERUNfSURfQVYxID8gImF2MDEiIDogInZwMDkiLCA0KTsKKyAgICAgICAgIH0gZWxzZSB7 CisgICAgICAgICAgICAgYXZpb193OChwYiwgZmxhZ3MpOworICAgICAgICAgfQorCitGcm9tIHBh dGNod29yayBNb24gTWF5IDE1IDA4OjMyOjAxIDIwMjMKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFp bjsgY2hhcnNldD0idXRmLTgiCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UcmFuc2Zlci1F bmNvZGluZzogN2JpdAorWC1QYXRjaHdvcmstU3VibWl0dGVyOiBTdGV2ZW4gTGl1IDxscUBjaGlu YWZmbXBlZy5vcmc+CitYLVBhdGNod29yay1JZDogNDE2MjAKK0RlbGl2ZXJlZC1UbzogZmZtcGVn cGF0Y2h3b3JrMkBnbWFpbC5jb20KK1JlY2VpdmVkOiBieSAyMDAyOmEwNTo2YTIwOmJhOTE6YjA6 MTA1OmZlYjo3MWYyIHdpdGggU01UUCBpZAorIGZiMTdjc3AxNDQ0NjE2cHpiOworICAgICAgICBN b24sIDE1IE1heSAyMDIzIDAxOjM0OjE5IC0wNzAwIChQRFQpCitYLUdvb2dsZS1TbXRwLVNvdXJj ZTogCisgQUNISFVaNEs2ZU9Kd3duN2pQZnkwZGhUUDRJUXIyWHpEQjhQZkI3RXI2YVF0ckNyeG5k ZGlSSWdkQnFaQjcyZEhoeXFmYklMWGQ1RQorWC1SZWNlaXZlZDogYnkgMjAwMjphMTc6OTA2OmVl OGU6YjA6OTVlOmM1NDk6OWFjZSB3aXRoIFNNVFAgaWQKKyB3dDE0LTIwMDIwYTE3MDkwNmVlOGUw MGIwMDk1ZWM1NDk5YWNlbXIyODA4MjE4MmVqYi42Mi4xNjg0MTM5NjU5NDk2OworICAgICAgICBN b24sIDE1IE1heSAyMDIzIDAxOjM0OjE5IC0wNzAwIChQRFQpCitBUkMtU2VhbDogaT0xOyBhPXJz YS1zaGEyNTY7IHQ9MTY4NDEzOTY1OTsgY3Y9bm9uZTsKKyAgICAgICAgZD1nb29nbGUuY29tOyBz PWFyYy0yMDE2MDgxNjsKKyAgICAgICAgYj1GTTlTUWJrWW1xV2FPQWE4WVJLc2RvajNCU29OTi9T c0RxWGdFYVJMOGxDeWdKdWFoQ1QxeWJvY1YxSXFtVVNUeFMKKyAgICAgICAgIGw1QWNVSkdiWmJs MkJlTmhLNW1YNDNhQ2ZLQlNTRjNETGhtUkNNQkM4cFUyaVBtdjdUdVNWNThrUmZMWTZyODNqOElj CisgICAgICAgICBkVjU2UVVZWXROK1ZlMEJXbmFIRk96aXZTTkFnSHh3ZVBzdFFMMDQzTEhEMnJu K0I1Q3lOdnE3bDJDYWhuaE1KOEpVRworICAgICAgICAgekpOU0JlL0xGRjBMaGt5bXFkODc3dmtK K3grVWpTV0VJZG9tSUpkQWNBdDJEMDZqRHh3SUYvbm5MRERIbXZRZW55Mk4KKyAgICAgICAgIDh4 cXNzRTQwMVFjWUNxNkd0UmkwVVRBeU1yWWlEVTRSVVBPaDhLamI1WW9NWFlwYkkrQkNzcjZWSmxo Ni9GNmNGRDU4CisgICAgICAgICBZU3R3PT0KK0FSQy1NZXNzYWdlLVNpZ25hdHVyZTogaT0xOyBh PXJzYS1zaGEyNTY7IGM9cmVsYXhlZC9yZWxheGVkOyBkPWdvb2dsZS5jb207Cisgcz1hcmMtMjAx NjA4MTY7CisgICAgICAgIGg9c2VuZGVyOmVycm9ycy10bzpjb250ZW50LXRyYW5zZmVyLWVuY29k aW5nOmNjOnJlcGx5LXRvCisgICAgICAgICA6bGlzdC1zdWJzY3JpYmU6bGlzdC1oZWxwOmxpc3Qt cG9zdDpsaXN0LWFyY2hpdmU6bGlzdC11bnN1YnNjcmliZQorICAgICAgICAgOmxpc3QtaWQ6cHJl Y2VkZW5jZTpzdWJqZWN0OmZlZWRiYWNrLWlkOm1pbWUtdmVyc2lvbjpyZWZlcmVuY2VzCisgICAg ICAgICA6aW4tcmVwbHktdG86bWVzc2FnZS1pZDpkYXRlOnRvOmZyb206ZGVsaXZlcmVkLXRvOwor ICAgICAgICBiaD1KQ0tmcXR5blA4NVV5TjRPRzVQUXVDMkdPTTQ1RUM3NXJQYS9UTjlQa2lzPTsK KyAgICAgICAgYj1NRjc4aGcrMEtralVOcTVCano2YjRyamNKREpxckZ1ZldIaERXektnV0NHbzE1 ZnZuVmczVVk4UER2cHNVWXh4U0EKKyAgICAgICAgIFNYUUpQMXVydnV4THZKOW02TjIwL21CQ2dy TjlDcWNhNTM3b2lXV05iYXlBT0JMdWloWFBORFBaTHFZZ0Q5eWcrMDNVCisgICAgICAgICBRbzQ2 cktzOEJ4a3V6VEtzcWZGdTFjZjhiM3FncXAyd3QybU9GRm5SVThwOUo1Zm9BNUhDcEhvRUIxU1dv OEtxS2pxegorICAgICAgICAgTmVGb3loNGsvQ0hrOFF5MnJoUS9haHVObzB6QnlYRVZ1R3FCRUsx R2FrVzhiQzZEcFgvZ1g5UG5zRTdCdnBPck8vK3oKKyAgICAgICAgIGlFSnhVZDFSeVVGRFJFVGpk Y3FmTGVSbEVCTzBOYkZpOUdUUmpnMG9ZN20yT004Z2g5enc3VElPb0tmS2FDVmVwYSsxCisgICAg ICAgICB6cytnPT0KK0FSQy1BdXRoZW50aWNhdGlvbi1SZXN1bHRzOiBpPTE7IG14Lmdvb2dsZS5j b207CisgICAgICAgc3BmPXBhc3MgKGdvb2dsZS5jb206IGRvbWFpbiBvZiBmZm1wZWctZGV2ZWwt Ym91bmNlc0BmZm1wZWcub3JnCisgZGVzaWduYXRlcyA3OS4xMjQuMTcuMTAwIGFzIHBlcm1pdHRl ZCBzZW5kZXIpCisgc210cC5tYWlsZnJvbT1mZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3Jn CitSZXR1cm4tUGF0aDogPGZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmc+CitSZWNlaXZl ZDogZnJvbSBmZmJveDAtYmcubXBsYXllcmhxLmh1IChmZmJveDAtYmcuZmZtcGVnLm9yZy4gWzc5 LjEyNC4xNy4xMDBdKQorICAgICAgICBieSBteC5nb29nbGUuY29tIHdpdGggRVNNVFAgaWQKKyBm MjEtMjAwMjBhMTcwOTA2ODI1NTAwYjAwOTY1YzU1YzcxZDlzaTEwNDkyODc2ZWp4Ljk4OC4yMDIz LjA1LjE1LjAxLjM0LjE5OworICAgICAgICBNb24sIDE1IE1heSAyMDIzIDAxOjM0OjE5IC0wNzAw IChQRFQpCitSZWNlaXZlZC1TUEY6IHBhc3MgKGdvb2dsZS5jb206IGRvbWFpbiBvZiBmZm1wZWct ZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnCisgZGVzaWduYXRlcyA3OS4xMjQuMTcuMTAwIGFzIHBl cm1pdHRlZCBzZW5kZXIpIGNsaWVudC1pcD03OS4xMjQuMTcuMTAwOworQXV0aGVudGljYXRpb24t UmVzdWx0czogbXguZ29vZ2xlLmNvbTsKKyAgICAgICBzcGY9cGFzcyAoZ29vZ2xlLmNvbTogZG9t YWluIG9mIGZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmcKKyBkZXNpZ25hdGVzIDc5LjEy NC4xNy4xMDAgYXMgcGVybWl0dGVkIHNlbmRlcikKKyBzbXRwLm1haWxmcm9tPWZmbXBlZy1kZXZl bC1ib3VuY2VzQGZmbXBlZy5vcmcKK1JlY2VpdmVkOiBmcm9tIFsxMjcuMC4xLjFdIChsb2NhbGhv c3QgWzEyNy4wLjAuMV0pCisJYnkgZmZib3gwLWJnLm1wbGF5ZXJocS5odSAoUG9zdGZpeCkgd2l0 aCBFU01UUCBpZCAzNDg2NDY4QzA3MjsKKwlNb24sIDE1IE1heSAyMDIzIDExOjM0OjEzICswMzAw IChFRVNUKQorWC1PcmlnaW5hbC1UbzogZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKK0RlbGl2ZXJl ZC1UbzogZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKK1JlY2VpdmVkOiBmcm9tIGJnNC5leG1haWwu cXEuY29tIChiZzQuZXhtYWlsLnFxLmNvbSBbNDMuMTU0LjIyMS41OF0pCisgYnkgZmZib3gwLWJn Lm1wbGF5ZXJocS5odSAoUG9zdGZpeCkgd2l0aCBFU01UUFMgaWQgNjQ4MkI2OEMwQTAKKyBmb3Ig PGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnPjsgTW9uLCAxNSBNYXkgMjAyMyAxMTozNDowNSArMDMw MCAoRUVTVCkKK1gtUVEtbWlkOiBiaXplc210cDcxdDE2ODQxMzk2Mzl0c2ZwNm9zcQorUmVjZWl2 ZWQ6IGZyb20gbG9jYWxob3N0ICggWzEwMy4xMDIuMjAzLjIwNF0pIGJ5IGJpemVzbXRwLnFxLmNv bSAoRVNNVFApIHdpdGgKKyBpZCA7IE1vbiwgMTUgTWF5IDIwMjMgMTY6MzM6NTggKzA4MDAgKENT VCkKK1gtUVEtU1NGOiAwMTEwMDAwMDAwMDAwMFowWjAwMDAwMEEwMDAwMDAwCitYLVFRLUZFQVQ6 IHYyVEJBaHR5aTVIbU9JOFJINjJZWFdWYW1sMHVOWHhjc0p3dFhycVZ6WGRwSndKcGtZY3BLUzBq T241YjgKKyB2cHV0Q1lLMUZOQ2xCTk9tdjlBekVMalQvSzI2Y0ZPc1VZS0JwQXVkcmY4QWwvS213 bDhDanlUNm5ESzA2UUJ5ckh1NjdBNAorIHNYOFZRcmF6SVhPNlpQSXJmQTlFbHVzWHRzc21SMjJl OGp1MG5YWDdvTnkvQVM0dDBiWmt1SlJWbVlDb0hTQ25McW52RjlyCisgWWJvVmRtZzBaYkxvdnJY QnkyNmJnUXI5NDRHL3RRUlRlQUdvckF3RTYxTGY5dHFsUkt1VDhUTzgvQkEvVjd6QnVhWlRTeEEK KyBuZ2hsNjFhd1BvZHVZNHZkOU5lcHc0M1YyQ3VuNHdmUFR2QU1KbjlFUWhyZFVnZTRzSU4wUTRF dVdrQmQ5ZEMvblRPd1ZLVgorIFdzakx4YnlMNmFwRmUwOFhteWVTOU1ESmtMK2JGTjN5a3BESnFi bEJnOEMxQVlPalZ5WUZTMll0L2F0Y1E9PQorWC1RUS1Hb29kQmc6IDAKK1gtQklaTUFJTC1JRDog MTQyMjE1OTUwNTE2MDMwMjI5ODcKK0Zyb206IFN0ZXZlbiBMaXUgPGxxQGNoaW5hZmZtcGVnLm9y Zz4KK1RvOiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZworRGF0ZTogTW9uLCAxNSBNYXkgMjAyMyAx NjozMjowMSArMDgwMAorTWVzc2FnZS1JZDogPDIwMjMwNTE1MDgzMjAxLjQ4MjAxLTctbHFAY2hp bmFmZm1wZWcub3JnPgorWC1NYWlsZXI6IGdpdC1zZW5kLWVtYWlsIDIuNDAuMAorSW4tUmVwbHkt VG86IDwyMDIzMDUxNTA4MzIwMS40ODIwMS0xLWxxQGNoaW5hZmZtcGVnLm9yZz4KK1JlZmVyZW5j ZXM6IAorIDxDQUVnLUplLXZZRDk3S25iYXFUa0s1PVVKOVQzaHRtdEgzUXlrY3dvMytyTkN4PXcr alFAbWFpbC5nbWFpbC5jb20+CisgPDIwMjMwNTE1MDgzMjAxLjQ4MjAxLTEtbHFAY2hpbmFmZm1w ZWcub3JnPgorTUlNRS1WZXJzaW9uOiAxLjAKK1gtUVEtU0VORFNJWkU6IDUyMAorRmVlZGJhY2st SUQ6IGJpemVzbXRwOmNoaW5hZmZtcGVnLm9yZzpxeWJnbG9naWNzdnJzejpxeWJnbG9naWNzdnJz ejNhLTMKK1N1YmplY3Q6IFtGRm1wZWctZGV2ZWxdIFtQQVRDSCB2MTAgNi82XSBhdmZvcm1hdC9m bHZkZWM6IHN1cHBvcnQgZGVtdXggdnA5CisgaW4gZW5oYW5jZWQgZmx2CitYLUJlZW5UaGVyZTog ZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKK1gtTWFpbG1hbi1WZXJzaW9uOiAyLjEuMjkKK1ByZWNl ZGVuY2U6IGxpc3QKK0xpc3QtSWQ6IEZGbXBlZyBkZXZlbG9wbWVudCBkaXNjdXNzaW9ucyBhbmQg cGF0Y2hlcyA8ZmZtcGVnLWRldmVsLmZmbXBlZy5vcmc+CitMaXN0LVVuc3Vic2NyaWJlOiA8aHR0 cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vb3B0aW9ucy9mZm1wZWctZGV2ZWw+LAorIDxtYWlsdG86 ZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZz9zdWJqZWN0PXVuc3Vic2NyaWJlPgorTGlz dC1BcmNoaXZlOiA8aHR0cHM6Ly9mZm1wZWcub3JnL3BpcGVybWFpbC9mZm1wZWctZGV2ZWw+CitM aXN0LVBvc3Q6IDxtYWlsdG86ZmZtcGVnLWRldmVsQGZmbXBlZy5vcmc+CitMaXN0LUhlbHA6IDxt YWlsdG86ZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZz9zdWJqZWN0PWhlbHA+CitMaXN0 LVN1YnNjcmliZTogPGh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1k ZXZlbD4sCisgPG1haWx0bzpmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnP3N1YmplY3Q9 c3Vic2NyaWJlPgorUmVwbHktVG86IEZGbXBlZyBkZXZlbG9wbWVudCBkaXNjdXNzaW9ucyBhbmQg cGF0Y2hlcyA8ZmZtcGVnLWRldmVsQGZmbXBlZy5vcmc+CitDYzogU3RldmVuIExpdSA8bHFAY2hp bmFmZm1wZWcub3JnPgorRXJyb3JzLVRvOiBmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3Jn CitTZW5kZXI6ICJmZm1wZWctZGV2ZWwiIDxmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3Jn PgorWC1UVUlEOiB3T3R2VHprK3poZHcKKworU2lnbmVkLW9mZi1ieTogU3RldmVuIExpdSA8bHFA Y2hpbmFmZm1wZWcub3JnPgorLS0tCisgbGliYXZmb3JtYXQvZmx2ZGVjLmMgfCAxMSArKysrKysr KystLQorIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisK K2RpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9mbHZkZWMuYyBiL2xpYmF2Zm9ybWF0L2ZsdmRlYy5j CitpbmRleCBhMDM2MmZmMTFjLi5hNmE5NGE0MDIxIDEwMDY0NAorLS0tIGEvbGliYXZmb3JtYXQv Zmx2ZGVjLmMKKysrKyBiL2xpYmF2Zm9ybWF0L2ZsdmRlYy5jCitAQCAtMzIwLDYgKzMyMCw4IEBA IHN0YXRpYyBpbnQgZmx2X3NhbWVfdmlkZW9fY29kZWMoQVZGb3JtYXRDb250ZXh0ICpzLCBBVkNv ZGVjUGFyYW1ldGVycyAqdnBhciwgaW50CisgICAgICAgICAgICAgICAgIHJldHVybiB2cGFyLT5j b2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDOworICAgICAgICAgICAgIGNhc2UgTUtCRVRBRygn YScsICd2JywgJzAnLCAnMScpOgorICAgICAgICAgICAgICAgICByZXR1cm4gdnBhci0+Y29kZWNf aWQgPT0gQVZfQ09ERUNfSURfQVYxOworKyAgICAgICAgICAgIGNhc2UgTUtCRVRBRygndicsICdw JywgJzAnLCAnOScpOgorKyAgICAgICAgICAgICAgICByZXR1cm4gdnBhci0+Y29kZWNfaWQgPT0g QVZfQ09ERUNfSURfVlA5OworICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg IGJyZWFrOworICAgICAgICAgfQorQEAgLTM2NSw2ICszNjcsMTAgQEAgc3RhdGljIGludCBmbHZf c2V0X3ZpZGVvX2NvZGVjKEFWRm9ybWF0Q29udGV4dCAqcywgQVZTdHJlYW0gKnZzdHJlYW0sCisg ICAgICAgICAgICAgICAgIHBhci0+Y29kZWNfaWQgPSBBVl9DT0RFQ19JRF9BVjE7CisgICAgICAg ICAgICAgICAgIHZzdHJlYW1pLT5uZWVkX3BhcnNpbmcgPSBBVlNUUkVBTV9QQVJTRV9IRUFERVJT OworICAgICAgICAgICAgICAgICByZXR1cm4gNDsKKysgICAgICAgICAgICBjYXNlIE1LQkVUQUco J3YnLCAncCcsICcwJywgJzknKToKKysgICAgICAgICAgICAgICAgcGFyLT5jb2RlY19pZCA9IEFW X0NPREVDX0lEX1ZQOTsKKysgICAgICAgICAgICAgICAgdnN0cmVhbWktPm5lZWRfcGFyc2luZyA9 IEFWU1RSRUFNX1BBUlNFX0hFQURFUlM7CisrICAgICAgICAgICAgICAgIHJldHVybiA0OworICAg ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgfQor QEAgLTEyODUsNyArMTI5MSw4IEBAIHJldHJ5X2R1cmF0aW9uOgorICAgICAgICAgc3QtPmNvZGVj cGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0IHx8CisgICAgICAgICBzdC0+Y29kZWNw YXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUc0IHx8CisgICAgICAgICBzdC0+Y29kZWNw YXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkMgfHwKKy0gICAgICAgIHN0LT5jb2RlY3Bh ci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYxKSB7CisrICAgICAgICBzdC0+Y29kZWNwYXIt PmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FWMSB8fAorKyAgICAgICAgc3QtPmNvZGVjcGFyLT5j b2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDkpIHsKKyAgICAgICAgIGludCB0eXBlID0gMDsKKyAg ICAgICAgIGlmIChmbHYtPmV4aGVhZGVyICYmIHN0cmVhbV90eXBlID09IEZMVl9TVFJFQU1fVFlQ RV9WSURFTykgeworICAgICAgICAgICAgIHR5cGUgPSBmbGFncyAmIDB4MEY7CitAQCAtMTMxNyw3 ICsxMzI0LDcgQEAgcmV0cnlfZHVyYXRpb246CisgICAgICAgICB9CisgICAgICAgICBpZiAodHlw ZSA9PSAwICYmICghc3QtPmNvZGVjcGFyLT5leHRyYWRhdGEgfHwgc3QtPmNvZGVjcGFyLT5jb2Rl Y19pZCA9PSBBVl9DT0RFQ19JRF9BQUMgfHwKKyAgICAgICAgICAgICBzdC0+Y29kZWNwYXItPmNv ZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjQgfHwgc3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBB Vl9DT0RFQ19JRF9IRVZDIHx8CistICAgICAgICAgICAgc3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9 PSBBVl9DT0RFQ19JRF9BVjEpKSB7CisrICAgICAgICAgICAgc3QtPmNvZGVjcGFyLT5jb2RlY19p ZCA9PSBBVl9DT0RFQ19JRF9BVjEgfHwgc3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RF Q19JRF9WUDkpKSB7CisgICAgICAgICAgICAgQVZEaWN0aW9uYXJ5RW50cnkgKnQ7CisgCisgICAg ICAgICAgICAgaWYgKHN0LT5jb2RlY3Bhci0+ZXh0cmFkYXRhKSB7CgpkaWZmIC0tZ2l0IGEvZW5h YmxlX2RlY29kZXJzIGIvZW5hYmxlX2RlY29kZXJzCmluZGV4IDI5NmMzYTMuLmVhMWMzOGUgMTAw NjQ0Ci0tLSBhL2VuYWJsZV9kZWNvZGVycworKysgYi9lbmFibGVfZGVjb2RlcnMKQEAgLTEsNSAr MSw0IEBACiAjIyBtb2R1bGUgbmFtZSAjIHJlYXNvbiBmb3IgZW5hYmxlbWVudCBpbiBmZm1wZWcg KHVzdWFsbHkgdGhlcmUgaXMgYW5vdGhlciBwYWNrYWdlIHRoYXQgYWxyZWFkeSBnb3QgbGVnYWwg cmV2aWV3KQotYWFjCiBhYXNjCiBsaWJmZGtfYWFjICMgZmRrLWFhYy1mcmVlCiBhYzMKCmRpZmYg LS1naXQgYS9lbmFibGVfZW5jb2RlcnMgYi9lbmFibGVfZW5jb2RlcnMKaW5kZXggZTBmM2NmYi4u MTBkZDUzYSAxMDA2NDQKLS0tIGEvZW5hYmxlX2VuY29kZXJzCisrKyBiL2VuYWJsZV9lbmNvZGVy cwpAQCAtMzAsNiArMzAsNyBAQCBhc3YyCiBhdjFfYW1mCiBhdjFfbnZlbmMKIGF2MV9xc3YKK2F2 MV92YWFwaQogYXl1diAjIHRyaXZhbAogYml0cGFja2VkICMgdHJpdmlhbAogYm1wICMgdHJpdmlh bAoKZGlmZiAtLWdpdCBhL2ZmbXBlZy1nZS1hdjEtdmFhcGktZW5jb2RlLXN1cHBvcnQucGF0Y2gg Yi9mZm1wZWctZ2UtYXYxLXZhYXBpLWVuY29kZS1zdXBwb3J0LnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhZTgyNTgKLS0tIC9kZXYvbnVsbAorKysgYi9mZm1wZWct Z2UtYXYxLXZhYXBpLWVuY29kZS1zdXBwb3J0LnBhdGNoCkBAIC0wLDAgKzEsMzk4NCBAQAorRnJv bSA3YzJlYTQ1MDUzYjdhM2Q0MTkzYmIwYWJiOWMwZjNiMGNkYmVlYzdhIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQorRnJvbTogR2xvcmlvdXNFZ2dyb2xsIDxnbG9yaW91c2VnZ3JvbGxAZ21haWwu Y29tPgorRGF0ZTogVGh1LCA5IE5vdiAyMDIzIDE3OjUxOjE5IC0wNzAwCitTdWJqZWN0OiBbUEFU Q0hdIGJhY2twb3J0IGF2MSBlbmNvZGUgc3VwcG9ydAorCitBZGFwdGVkIGZyb20gaHR0cHM6Ly9w YXRjaHdvcmsuZmZtcGVnLm9yZy9wcm9qZWN0L2ZmbXBlZy9saXN0Lz9zZXJpZXM9OTU5NAorCist LS0KKyBjb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKworIGRvYy9l bmNvZGVycy50ZXhpICAgICAgICAgICAgICAgICAgICB8ICAxNCArCisgbGliYXZjb2RlYy9NYWtl ZmlsZSAgICAgICAgICAgICAgICAgIHwgICAyICsKKyBsaWJhdmNvZGVjL2FsbGNvZGVjcy5jICAg ICAgICAgICAgICAgfCAgIDEgKworIGxpYmF2Y29kZWMvYXYxLmggICAgICAgICAgICAgICAgICAg ICB8ICAgNyArCisgbGliYXZjb2RlYy9hdjFfbGV2ZWxzLmMgICAgICAgICAgICAgIHwgIDkyICsr KworIGxpYmF2Y29kZWMvYXYxX2xldmVscy5oICAgICAgICAgICAgICB8ICA1OCArKworIGxpYmF2 Y29kZWMvY2JzLmMgICAgICAgICAgICAgICAgICAgICB8IDE1NSArKystLQorIGxpYmF2Y29kZWMv Y2JzLmggICAgICAgICAgICAgICAgICAgICB8ICA4OCArKy0KKyBsaWJhdmNvZGVjL2Nic19hdjEu YyAgICAgICAgICAgICAgICAgfCAyNjIgKysrLS0tLS0KKyBsaWJhdmNvZGVjL2Nic19hdjEuaCAg ICAgICAgICAgICAgICAgfCAgIDEgKworIGxpYmF2Y29kZWMvY2JzX2F2MV9zeW50YXhfdGVtcGxh dGUuYyB8ICAgNCArLQorIGxpYmF2Y29kZWMvY2JzX2JzZi5jICAgICAgICAgICAgICAgICB8ICAg NSArCisgbGliYXZjb2RlYy9jYnNfaDI2NDUuYyAgICAgICAgICAgICAgIHwgMTQ5ICsrLS0tCisg bGliYXZjb2RlYy9jYnNfaW50ZXJuYWwuaCAgICAgICAgICAgIHwgIDk2ICsrLQorIGxpYmF2Y29k ZWMvY2JzX21wZWcyLmMgICAgICAgICAgICAgICB8ICAxNSArLQorIGxpYmF2Y29kZWMvY2JzX3Zw OS5jICAgICAgICAgICAgICAgICB8IDEyMiArKy0tCisgbGliYXZjb2RlYy9leHRyYWN0X2V4dHJh ZGF0YV9ic2YuYyAgIHwgICA3ICstCisgbGliYXZjb2RlYy90cmFjZV9oZWFkZXJzX2JzZi5jICAg ICAgIHwgICAyICsKKyBsaWJhdmNvZGVjL3ZhYXBpX2VuY29kZS5jICAgICAgICAgICAgfCAzNzAg KysrKysrKystLS0KKyBsaWJhdmNvZGVjL3ZhYXBpX2VuY29kZS5oICAgICAgICAgICAgfCAgMzkg Ky0KKyBsaWJhdmNvZGVjL3ZhYXBpX2VuY29kZV9hdjEuYyAgICAgICAgfCA5NDkgKysrKysrKysr KysrKysrKysrKysrKysrKysrCisgbGliYXZjb2RlYy92YWFwaV9lbmNvZGVfaDI2NC5jICAgICAg IHwgIDk0ICstLQorIGxpYmF2Y29kZWMvdmFhcGlfZW5jb2RlX2gyNjUuYyAgICAgICB8ICA3NiAr Ky0KKyBsaWJhdmNvZGVjL3ZhYXBpX2VuY29kZV9tcGVnMi5jICAgICAgfCAgIDYgKy0KKyBsaWJh dmNvZGVjL3ZhYXBpX2VuY29kZV92cDguYyAgICAgICAgfCAgIDYgKy0KKyBsaWJhdmNvZGVjL3Zh YXBpX2VuY29kZV92cDkuYyAgICAgICAgfCAgMjYgKy0KKyAyNyBmaWxlcyBjaGFuZ2VkLCAyMDU0 IGluc2VydGlvbnMoKyksIDU5NSBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbGli YXZjb2RlYy9hdjFfbGV2ZWxzLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9hdjFf bGV2ZWxzLmgKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy92YWFwaV9lbmNvZGVfYXYx LmMKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQoraW5kZXggYjY2MTZmMC4u ZjVhOTFiNiAxMDA3NTUKKy0tLSBhL2NvbmZpZ3VyZQorKysrIGIvY29uZmlndXJlCitAQCAtMzI1 OSw2ICszMjU5LDggQEAgYXYxX3Fzdl9kZWNvZGVyX3NlbGVjdD0icXN2ZGVjIgorIGF2MV9xc3Zf ZW5jb2Rlcl9zZWxlY3Q9InFzdmVuYyIKKyBhdjFfcXN2X2VuY29kZXJfZGVwcz0ibGlidnBsIgor IGF2MV9hbWZfZW5jb2Rlcl9kZXBzPSJhbWYiCisrYXYxX3ZhYXBpX2VuY29kZXJfZGVwcz0iVkFF bmNQaWN0dXJlUGFyYW1ldGVyQnVmZmVyQVYxIgorK2F2MV92YWFwaV9lbmNvZGVyX3NlbGVjdD0i Y2JzX2F2MSB2YWFwaV9lbmNvZGUiCisgCisgIyBwYXJzZXJzCisgYWFjX3BhcnNlcl9zZWxlY3Q9 ImFkdHNfaGVhZGVyIG1wZWc0YXVkaW8iCitAQCAtNjk3Myw2ICs2OTc1LDcgQEAgaWYgZW5hYmxl ZCB2YWFwaTsgdGhlbgorICAgICBjaGVja190eXBlICJ2YS92YS5oIHZhL3ZhX2VuY19qcGVnLmgi ICJWQUVuY1BpY3R1cmVQYXJhbWV0ZXJCdWZmZXJKUEVHIgorICAgICBjaGVja190eXBlICJ2YS92 YS5oIHZhL3ZhX2VuY192cDguaCIgICJWQUVuY1BpY3R1cmVQYXJhbWV0ZXJCdWZmZXJWUDgiCisg ICAgIGNoZWNrX3R5cGUgInZhL3ZhLmggdmEvdmFfZW5jX3ZwOS5oIiAgIlZBRW5jUGljdHVyZVBh cmFtZXRlckJ1ZmZlclZQOSIKKysgICAgY2hlY2tfdHlwZSAidmEvdmEuaCB2YS92YV9lbmNfYXYx LmgiICAiVkFFbmNQaWN0dXJlUGFyYW1ldGVyQnVmZmVyQVYxIgorIGZpCisgCisgaWYgZW5hYmxl ZF9hbGwgb3BlbmNsIGxpYmRybSA7IHRoZW4KK2RpZmYgLS1naXQgYS9kb2MvZW5jb2RlcnMudGV4 aSBiL2RvYy9lbmNvZGVycy50ZXhpCitpbmRleCBiMDI3MzdiLi45OTRlMjdmIDEwMDY0NAorLS0t IGEvZG9jL2VuY29kZXJzLnRleGkKKysrKyBiL2RvYy9lbmNvZGVycy50ZXhpCitAQCAtMzk2NSw2 ICszOTY1LDIwIEBAIEF2ZXJhZ2UgdmFyaWFibGUgYml0cmF0ZS4KKyBFYWNoIGVuY29kZXIgYWxz byBoYXMgaXRzIG93biBzcGVjaWZpYyBvcHRpb25zOgorIEB0YWJsZSBAb3B0aW9uCisgCisrQGl0 ZW0gYXYxX3ZhYXBpCisrQG9wdGlvbntwcm9maWxlfSBzZXRzIHRoZSB2YWx1ZSBvZiBAZW1waHtz ZXFfcHJvZmlsZX0uCisrQG9wdGlvbnt0aWVyfSBzZXRzIHRoZSB2YWx1ZSBvZiBAZW1waHtzZXFf dGllcn0uCisrQG9wdGlvbntsZXZlbH0gc2V0cyB0aGUgdmFsdWUgb2YgQGVtcGh7c2VxX2xldmVs X2lkeH0uCisrCisrQHRhYmxlIEBvcHRpb24KKytAaXRlbSB0aWxlcworK1NldCB0aGUgbnVtYmVy IG9mIHRpbGVzIHRvIGVuY29kZSB0aGUgaW5wdXQgdmlkZW8gd2l0aCwgYXMgY29sdW1ucyB4IHJv d3MuCisrKGRlZmF1bHQgaXMgYXV0bywgd2hpY2ggbWVhbnMgdXNlIG1pbmltYWwgdGlsZSBjb2x1 bW4vcm93IG51bWJlcikuCisrQGl0ZW0gdGlsZV9ncm91cHMKKytTZXQgdGlsZSBncm91cHMgbnVt YmVyLiBBbGwgdGhlIHRpbGVzIHdpbGwgYmUgZGlzdHJpYnV0ZWQgYXMgZXZlbmx5IGFzIHBvc3Np YmxlIHRvCisrZWFjaCB0aWxlIGdyb3VwLiAoZGVmYXVsdCBpcyAxKS4KKytAZW5kIHRhYmxlCisr CisgQGl0ZW0gaDI2NF92YWFwaQorIEBvcHRpb257cHJvZmlsZX0gc2V0cyB0aGUgdmFsdWUgb2Yg QGVtcGh7cHJvZmlsZV9pZGN9IGFuZCB0aGUgQGVtcGh7Y29uc3RyYWludF9zZXQqX2ZsYWd9cy4K KyBAb3B0aW9ue2xldmVsfSBzZXRzIHRoZSB2YWx1ZSBvZiBAZW1waHtsZXZlbF9pZGN9LgorZGlm ZiAtLWdpdCBhL2xpYmF2Y29kZWMvTWFrZWZpbGUgYi9saWJhdmNvZGVjL01ha2VmaWxlCitpbmRl eCAzODkyNTNmLi41ZjYyMGU2IDEwMDY0NAorLS0tIGEvbGliYXZjb2RlYy9NYWtlZmlsZQorKysr IGIvbGliYXZjb2RlYy9NYWtlZmlsZQorQEAgLTI1NSw2ICsyNTUsNyBAQCBPQkpTLSQoQ09ORklH X0FWMV9DVVZJRF9ERUNPREVSKSAgICAgICArPSBjdXZpZGRlYy5vCisgT0JKUy0kKENPTkZJR19B VjFfTUVESUFDT0RFQ19ERUNPREVSKSAgKz0gbWVkaWFjb2RlY2RlYy5vCisgT0JKUy0kKENPTkZJ R19BVjFfTlZFTkNfRU5DT0RFUikgICAgICAgKz0gbnZlbmNfYXYxLm8gbnZlbmMubworIE9CSlMt JChDT05GSUdfQVYxX1FTVl9FTkNPREVSKSAgICAgICAgICs9IHFzdmVuY19hdjEubworK09CSlMt JChDT05GSUdfQVYxX1ZBQVBJX0VOQ09ERVIpICAgICAgICs9IHZhYXBpX2VuY29kZV9hdjEubyBh djFfbGV2ZWxzLm8KKyBPQkpTLSQoQ09ORklHX0FWUk5fREVDT0RFUikgICAgICAgICAgICArPSBh dnJuZGVjLm8KKyBPQkpTLSQoQ09ORklHX0FWUlBfREVDT0RFUikgICAgICAgICAgICArPSByMjEw ZGVjLm8KKyBPQkpTLSQoQ09ORklHX0FWUlBfRU5DT0RFUikgICAgICAgICAgICArPSByMjEwZW5j Lm8KK0BAIC0xMjk4LDYgKzEyOTksNyBAQCBURVNUUFJPR1MgPSBhdmNvZGVjICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAg anBlZzIwMDBkd3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAorICAgICAgICAgICAgIG1hdGhvcHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorIAorK1RFU1RQUk9HUy0kKENPTkZJR19BVjFfVkFBUElf RU5DT0RFUikgICAgICs9IGF2MV9sZXZlbHMKKyBURVNUUFJPR1MtJChDT05GSUdfQ0FCQUMpICAg ICAgICAgICAgICAgICArPSBjYWJhYworIFRFU1RQUk9HUy0kKENPTkZJR19EQ1QpICAgICAgICAg ICAgICAgICAgICs9IGF2ZmZ0CisgVEVTVFBST0dTLSQoQ09ORklHX0ZGVCkgICAgICAgICAgICAg ICAgICAgKz0gZmZ0IGZmdC1maXhlZDMyCitkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9hbGxjb2Rl Y3MuYyBiL2xpYmF2Y29kZWMvYWxsY29kZWNzLmMKK2luZGV4IGU1OTNhZDEuLjQ3MDZmYzMgMTAw NjQ0CistLS0gYS9saWJhdmNvZGVjL2FsbGNvZGVjcy5jCisrKysgYi9saWJhdmNvZGVjL2FsbGNv ZGVjcy5jCitAQCAtODM4LDYgKzgzOCw3IEBAIGV4dGVybiBjb25zdCBGRkNvZGVjIGZmX2F2MV9u dmVuY19lbmNvZGVyOworIGV4dGVybiBjb25zdCBGRkNvZGVjIGZmX2F2MV9xc3ZfZGVjb2RlcjsK KyBleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9hdjFfcXN2X2VuY29kZXI7CisgZXh0ZXJuIGNvbnN0 IEZGQ29kZWMgZmZfYXYxX2FtZl9lbmNvZGVyOworK2V4dGVybiBjb25zdCBGRkNvZGVjIGZmX2F2 MV92YWFwaV9lbmNvZGVyOworIGV4dGVybiBjb25zdCBGRkNvZGVjIGZmX2xpYm9wZW5oMjY0X2Vu Y29kZXI7CisgZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfbGlib3BlbmgyNjRfZGVjb2RlcjsKKyBl eHRlcm4gY29uc3QgRkZDb2RlYyBmZl9oMjY0X2FtZl9lbmNvZGVyOworZGlmZiAtLWdpdCBhL2xp YmF2Y29kZWMvYXYxLmggYi9saWJhdmNvZGVjL2F2MS5oCitpbmRleCAzODRmN2NkLi44NzA0YmM0 IDEwMDY0NAorLS0tIGEvbGliYXZjb2RlYy9hdjEuaAorKysrIGIvbGliYXZjb2RlYy9hdjEuaAor QEAgLTE3NSw2ICsxNzUsMTMgQEAgZW51bSB7CisgICAgIEFWMV9SRVNUT1JFX1NXSVRDSEFCTEUg PSAzLAorIH07CisgCisrLy8gVFggbW9kZSAoc2VjdGlvbiA2LjguMjEpCisrZW51bSB7CisrICAg IEFWMV9PTkxZXzRYNCAgICAgICAgPSAwLAorKyAgICBBVjFfVFhfTU9ERV9MQVJHRVNUID0gMSwK KysgICAgQVYxX1RYX01PREVfU0VMRUNUICA9IDIsCisrfTsKKysKKyAvLyBTZXF1ZW5jZSBIZWFk ZXJzIGFyZSBhY3R1YWxseSB1bmJvdW5kZWQgYmVjYXVzZSBvbmUgY2FuIHVzZQorIC8vIGFuIGFy Yml0cmFyeSBudW1iZXIgb2YgbGVhZGluZyB6ZXJvZXMgd2hlbiBlbmNvZGluZyB2aWEgdXZsYy4K KyAvLyBUaGUgZm9sbG93aW5nIGVzdGltYXRlIGlzIGJhc2VkIGFyb3VuZCB1c2luZyB0aGUgbG93 ZXN0IG51bWJlcgorZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYXYxX2xldmVscy5jIGIvbGliYXZj b2RlYy9hdjFfbGV2ZWxzLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4x OWI2ZWUxCistLS0gL2Rldi9udWxsCisrKysgYi9saWJhdmNvZGVjL2F2MV9sZXZlbHMuYworQEAg LTAsMCArMSw5MiBAQAorKy8qCisrICogQ29weXJpZ2h0IChjKSAyMDIzIEludGVsIENvcnBvcmF0 aW9uCisrICoKKysgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisrICoKKysgKiBGRm1w ZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICog bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp YworKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlcgorKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAqCisrICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICogYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgKiBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl IEdOVQorKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisrICoKKysgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVz c2VyIEdlbmVyYWwgUHVibGljCisrICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90 LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKysg Ki8KKysKKysjaW5jbHVkZSA8c3RkZGVmLmg+CisrI2luY2x1ZGUgImxpYmF2dXRpbC9tYWNyb3Mu aCIKKysjaW5jbHVkZSAiYXYxX2xldmVscy5oIgorKworKy8qKiBpZ25vcmUgZW50cmllcyB3aGlj aCBuYW1lZCBpbiBzcGVjIGJ1dCBubyBkZXRhaWxzLiBMaWtlIGxldmVsIDIuMiBhbmQgNy4wLiAq LworK3N0YXRpYyBjb25zdCBBVjFMZXZlbERlc2NyaXB0b3IgYXYxX2xldmVsc1tdID0geworKyAg ICAvLyBOYW1lICAgICAgICAgICAgICAgICAgICAgIE1heFZTaXplICAgICAgICAgICAgICAgICAg ICAgICAgICAgTWFpbk1icHMgICAgICAgICAgICAgIE1heFRpbGVzCisrICAgIC8vIHwgIGxldmVs X2lkeCAgICAgICAgICAgICAgICAgfCBNYXhEaXNwbGF5UmF0ZSAgICAgICAgICAgICAgICAgICAg fCBIaWdoTWJwcyAgICAgICAgIHwgTWF4VGlsZUNvbHMKKysgICAgLy8gfCAgICAgIHwgICBNYXhQ aWNTaXplICAgICAgICB8ICAgICAgIHwgICAgIE1heERlY29kZVJhdGUgICAgICAgICB8ICAgIHwg ICBNYWluQ1IgICAgfCAgIHwKKysgICAgLy8gfCAgICAgIHwgICAgIHwgICAgTWF4SFNpemUgICB8 ICAgICAgIHwgICAgICAgICAgIHwgTWF4SGVhZGVyUmF0ZSB8ICAgIHwgICAgIHwgSGlnaENSfCAg IHwKKysgICAgLy8gfCAgICAgIHwgICAgIHwgICAgICAgIHwgICAgICB8ICAgICAgIHwgICAgICAg ICAgIHwgICAgICAgfCAgICAgICB8ICAgIHwgICAgIHwgIHwgICAgfCAgIHwKKysgICAgeyAiMi4w IiwgIDAsICAgMTQ3NDU2LCAgMjA0OCwgMTE1MiwgICA0NDIzNjgwLCAgICAgNTUyOTYwMCwgMTUw LCAgIDEuNSwgICAgIDAsIDIsIDAsICAgOCwgIDQgfSwKKysgICAgeyAiMi4xIiwgIDEsICAgMjc4 Nzg0LCAgMjgxNiwgMTU4NCwgICA4MzYzNTIwLCAgICAxMDQ1NDQwMCwgMTUwLCAgIDMuMCwgICAg IDAsIDIsIDAsICAgOCwgIDQgfSwKKysgICAgeyAiMy4wIiwgIDQsICAgNjY1ODU2LCAgNDM1Miwg MjQ0OCwgIDE5OTc1NjgwLCAgICAyNDk2OTYwMCwgMTUwLCAgIDYuMCwgICAgIDAsIDIsIDAsICAx NiwgIDYgfSwKKysgICAgeyAiMy4xIiwgIDUsICAxMDY1MDI0LCAgNTUwNCwgMzA5NiwgIDMxOTUw NzIwLCAgICAzOTkzODQwMCwgMTUwLCAgMTAuMCwgICAgIDAsIDIsIDAsICAxNiwgIDYgfSwKKysg ICAgeyAiNC4wIiwgIDgsICAyMzU5Mjk2LCAgNjE0NCwgMzQ1NiwgIDcwNzc4ODgwLCAgICA3Nzg1 Njc2OCwgMzAwLCAgMTIuMCwgIDMwLjAsIDQsIDQsICAzMiwgIDggfSwKKysgICAgeyAiNC4xIiwg IDksICAyMzU5Mjk2LCAgNjE0NCwgMzQ1NiwgIDE0MTU1Nzc2MCwgIDE1NTcxMzUzNiwgMzAwLCAg MjAuMCwgIDUwLjAsIDQsIDQsICAzMiwgIDggfSwKKysgICAgeyAiNS4wIiwgMTIsICA4OTEyODk2 LCAgODE5MiwgNDM1MiwgIDI2NzM4Njg4MCwgIDI3MzcxNTIwMCwgMzAwLCAgMzAuMCwgMTAwLjAs IDYsIDQsICA2NCwgIDggfSwKKysgICAgeyAiNS4xIiwgMTMsICA4OTEyODk2LCAgODE5MiwgNDM1 MiwgIDUzNDc3Mzc2MCwgIDU0NzQzMDQwMCwgMzAwLCAgNDAuMCwgMTYwLjAsIDgsIDQsICA2NCwg IDggfSwKKysgICAgeyAiNS4yIiwgMTQsICA4OTEyODk2LCAgODE5MiwgNDM1MiwgMTA2OTU0NzUy MCwgMTA5NDg2MDgwMCwgMzAwLCAgNjAuMCwgMjQwLjAsIDgsIDQsICA2NCwgIDggfSwKKysgICAg eyAiNS4zIiwgMTUsICA4OTEyODk2LCAgODE5MiwgNDM1MiwgMTA2OTU0NzUyMCwgMTE3NjUwMjI3 MiwgMzAwLCAgNjAuMCwgMjQwLjAsIDgsIDQsICA2NCwgIDggfSwKKysgICAgeyAiNi4wIiwgMTYs IDM1NjUxNTg0LCAxNjM4NCwgODcwNCwgMTA2OTU0NzUyMCwgMTE3NjUwMjI3MiwgMzAwLCAgNjAu MCwgMjQwLjAsIDgsIDQsIDEyOCwgMTYgfSwKKysgICAgeyAiNi4xIiwgMTcsIDM1NjUxNTg0LCAx NjM4NCwgODcwNCwgMjEzOTA5NTA0MCwgMjE4OTcyMTYwMCwgMzAwLCAxMDAuMCwgNDgwLjAsIDgs IDQsIDEyOCwgMTYgfSwKKysgICAgeyAiNi4yIiwgMTgsIDM1NjUxNTg0LCAxNjM4NCwgODcwNCwg NDI3ODE5MDA4MCwgNDM3OTQ0MzIwMCwgMzAwLCAxNjAuMCwgODAwLjAsIDgsIDQsIDEyOCwgMTYg fSwKKysgICAgeyAiNi4zIiwgMTksIDM1NjUxNTg0LCAxNjM4NCwgODcwNCwgNDI3ODE5MDA4MCwg NDcwNjAwOTA4OCwgMzAwLCAxNjAuMCwgODAwLjAsIDgsIDQsIDEyOCwgMTYgfSwKKyt9OworKwor K2NvbnN0IEFWMUxldmVsRGVzY3JpcHRvciAqZmZfYXYxX2d1ZXNzX2xldmVsKGludDY0X3QgYml0 cmF0ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg dGllciwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg d2lkdGgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 IGhlaWdodCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgdGlsZXMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50IHRpbGVfY29scywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmbG9hdCBmcHMpCisreworKyAgICBpbnQgcGljX3NpemU7CisrICAgIHVpbnQ2NF90IGRp c3BsYXlfcmF0ZTsKKysgICAgZmxvYXQgbWF4X2JyOworKworKyAgICBwaWNfc2l6ZSA9IHdpZHRo ICogaGVpZ2h0OworKyAgICBkaXNwbGF5X3JhdGUgPSAodWludDY0X3QpcGljX3NpemUgKiBmcHM7 CisrCisrICAgIGZvciAoaW50IGkgPSAwOyBpIDwgRkZfQVJSQVlfRUxFTVMoYXYxX2xldmVscyk7 IGkrKykgeworKyAgICAgICAgY29uc3QgQVYxTGV2ZWxEZXNjcmlwdG9yICpsZXZlbCA9ICZhdjFf bGV2ZWxzW2ldOworKyAgICAgICAgLy8gTGltaXRhdGlvbjogZGVjb2RlIHJhdGUsIGhlYWRlciBy YXRlLCBjb21wcmVzcyByYXRlLCBldGMuIGFyZSBub3QgY29uc2lkZXJlZC4KKysgICAgICAgIGlm IChwaWNfc2l6ZSA+IGxldmVsLT5tYXhfcGljX3NpemUpCisrICAgICAgICAgICAgY29udGludWU7 CisrICAgICAgICBpZiAod2lkdGggPiBsZXZlbC0+bWF4X2hfc2l6ZSkKKysgICAgICAgICAgICBj b250aW51ZTsKKysgICAgICAgIGlmIChoZWlnaHQgPiBsZXZlbC0+bWF4X3Zfc2l6ZSkKKysgICAg ICAgICAgICBjb250aW51ZTsKKysgICAgICAgIGlmIChkaXNwbGF5X3JhdGUgPiBsZXZlbC0+bWF4 X2Rpc3BsYXlfcmF0ZSkKKysgICAgICAgICAgICBjb250aW51ZTsKKysKKysgICAgICAgIGlmICh0 aWVyKQorKyAgICAgICAgICAgIG1heF9iciA9IGxldmVsLT5oaWdoX21icHM7CisrICAgICAgICBl bHNlCisrICAgICAgICAgICAgbWF4X2JyID0gbGV2ZWwtPm1haW5fbWJwczsKKysgICAgICAgIGlm ICghbWF4X2JyKQorKyAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgaWYgKGJpdHJhdGUg PiAoaW50NjRfdCkoMTAwMDAwMC4wICogbWF4X2JyKSkKKysgICAgICAgICAgICBjb250aW51ZTsK KysKKysgICAgICAgIGlmICh0aWxlcyA+IGxldmVsLT5tYXhfdGlsZXMpCisrICAgICAgICAgICAg Y29udGludWU7CisrICAgICAgICBpZiAodGlsZV9jb2xzID4gbGV2ZWwtPm1heF90aWxlX2NvbHMp CisrICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICByZXR1cm4gbGV2ZWw7CisrICAgIH0K KysKKysgICAgcmV0dXJuIE5VTEw7CisrfQorZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYXYxX2xl dmVscy5oIGIvbGliYXZjb2RlYy9hdjFfbGV2ZWxzLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0Citp bmRleCAwMDAwMDAwLi4xNjRjYjg3CistLS0gL2Rldi9udWxsCisrKysgYi9saWJhdmNvZGVjL2F2 MV9sZXZlbHMuaAorQEAgLTAsMCArMSw1OCBAQAorKy8qCisrICogQ29weXJpZ2h0IChjKSAyMDIz IEludGVsIENvcnBvcmF0aW9uCisrICoKKysgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcu CisrICoKKysgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yCisrICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNl LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAqCisrICogRkZtcGVn IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICog YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKysgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlIEdOVQorKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisrICoKKysgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICogTGljZW5zZSBhbG9uZyB3aXRo IEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyAqIEZvdW5kYXRp b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIx MTAtMTMwMSBVU0EKKysgKi8KKysKKysjaWZuZGVmIEFWQ09ERUNfQVYxX0xFVkVMU19ICisrI2Rl ZmluZSBBVkNPREVDX0FWMV9MRVZFTFNfSAorKworKyNpbmNsdWRlIDxzdGRpbnQuaD4KKysKKyt0 eXBlZGVmIHN0cnVjdCBBVjFMZXZlbERlc2NyaXB0b3IgeworKyAgICBjaGFyICAgICBuYW1lWzRd OworKyAgICB1aW50OF90ICBsZXZlbF9pZHg7CisrCisrICAgIHVpbnQzMl90IG1heF9waWNfc2l6 ZTsKKysgICAgdWludDMyX3QgbWF4X2hfc2l6ZTsKKysgICAgdWludDMyX3QgbWF4X3Zfc2l6ZTsK KysgICAgdWludDY0X3QgbWF4X2Rpc3BsYXlfcmF0ZTsKKysgICAgdWludDY0X3QgbWF4X2RlY29k ZV9yYXRlOworKworKyAgICB1aW50MzJfdCBtYXhfaGVhZGVyX3JhdGU7CisrICAgIGZsb2F0ICAg IG1haW5fbWJwczsKKysgICAgZmxvYXQgICAgaGlnaF9tYnBzOworKyAgICB1aW50MzJfdCBtYWlu X2NyOworKyAgICB1aW50MzJfdCBoaWdoX2NyOworKyAgICB1aW50MzJfdCBtYXhfdGlsZXM7Cisr ICAgIHVpbnQzMl90IG1heF90aWxlX2NvbHM7CisrfSBBVjFMZXZlbERlc2NyaXB0b3I7CisrCisr LyoqCisrICogR3Vlc3MgdGhlIGxldmVsIG9mIGEgc3RyZWFtIGZyb20gc29tZSBwYXJhbWV0ZXJz LgorKyAqCisrICogVW5rbm93biBwYXJhbWV0ZXJzIG1heSBiZSB6ZXJvLCBpbiB3aGljaCBjYXNl IHRoZXkgd2lsbCBiZSBpZ25vcmVkLgorKyAqLworK2NvbnN0IEFWMUxldmVsRGVzY3JpcHRvciAq ZmZfYXYxX2d1ZXNzX2xldmVsKGludDY0X3QgYml0cmF0ZSwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGllciwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGgsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGhlaWdodCwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGlsZV9yb3dzLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0aWxlX2NvbHMsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZnBzKTsKKysKKysj ZW5kaWYgLyogQVZDT0RFQ19BVjFfTEVWRUxTX0ggKi8KK2RpZmYgLS1naXQgYS9saWJhdmNvZGVj L2Nicy5jIGIvbGliYXZjb2RlYy9jYnMuYworaW5kZXggNTA0MTk3ZS4uNjRiOWFlZSAxMDA2NDQK Ky0tLSBhL2xpYmF2Y29kZWMvY2JzLmMKKysrKyBiL2xpYmF2Y29kZWMvY2JzLmMKK0BAIC0xMTEs OCArMTExLDkgQEAgYXZfY29sZCBpbnQgZmZfY2JzX2luaXQoQ29kZWRCaXRzdHJlYW1Db250ZXh0 ICoqY3R4X3B0ciwKKyAKKyAgICAgY3R4LT5kZWNvbXBvc2VfdW5pdF90eXBlcyA9IE5VTEw7Cisg CistICAgIGN0eC0+dHJhY2VfZW5hYmxlID0gMDsKKy0gICAgY3R4LT50cmFjZV9sZXZlbCAgPSBB Vl9MT0dfVFJBQ0U7CisrICAgIGN0eC0+dHJhY2VfZW5hYmxlICA9IDA7CisrICAgIGN0eC0+dHJh Y2VfbGV2ZWwgICA9IEFWX0xPR19UUkFDRTsKKysgICAgY3R4LT50cmFjZV9jb250ZXh0ID0gY3R4 OworIAorICAgICAqY3R4X3B0ciA9IGN0eDsKKyAgICAgcmV0dXJuIDA7CitAQCAtNDkwLDE5ICs0 OTEsMjcgQEAgdm9pZCBmZl9jYnNfdHJhY2VfaGVhZGVyKENvZGVkQml0c3RyZWFtQ29udGV4dCAq Y3R4LAorICAgICBhdl9sb2coY3R4LT5sb2dfY3R4LCBjdHgtPnRyYWNlX2xldmVsLCAiJXNcbiIs IG5hbWUpOworIH0KKyAKKy12b2lkIGZmX2Nic190cmFjZV9zeW50YXhfZWxlbWVudChDb2RlZEJp dHN0cmVhbUNvbnRleHQgKmN0eCwgaW50IHBvc2l0aW9uLAorLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnN0ciwgY29uc3QgaW50ICpzdWJzY3JpcHRzLAorLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJpdHMsIGludDY0X3Qg dmFsdWUpCisrdm9pZCBmZl9jYnNfdHJhY2VfcmVhZF9sb2codm9pZCAqdHJhY2VfY29udGV4dCwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRCaXRDb250ZXh0ICpnYmMsIGludCBsZW5n dGgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3RyLCBjb25zdCBp bnQgKnN1YnNjcmlwdHMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCB2YWx1 ZSkKKyB7CisrICAgIENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4ID0gdHJhY2VfY29udGV4dDsK KyAgICAgY2hhciBuYW1lWzI1Nl07CisrICAgIGNoYXIgYml0c1syNTZdOworICAgICBzaXplX3Qg bmFtZV9sZW4sIGJpdHNfbGVuOworICAgICBpbnQgcGFkLCBzdWJzLCBpLCBqLCBrLCBuOworLQor LSAgICBpZiAoIWN0eC0+dHJhY2VfZW5hYmxlKQorLSAgICAgICAgcmV0dXJuOworKyAgICBpbnQg cG9zaXRpb247CisgCisgICAgIGF2X2Fzc2VydDAodmFsdWUgPj0gSU5UX01JTiAmJiB2YWx1ZSA8 PSBVSU5UMzJfTUFYKTsKKyAKKysgICAgcG9zaXRpb24gPSBnZXRfYml0c19jb3VudChnYmMpOwor KworKyAgICBhdl9hc3NlcnQwKGxlbmd0aCA8IDI1Nik7CisrICAgIGZvciAoaSA9IDA7IGkgPCBs ZW5ndGg7IGkrKykKKysgICAgICAgIGJpdHNbaV0gPSBnZXRfYml0czEoZ2JjKSA/ICcxJyA6ICcw JzsKKysgICAgYml0c1tsZW5ndGhdID0gMDsKKysKKyAgICAgc3VicyA9IHN1YnNjcmlwdHMgPyBz dWJzY3JpcHRzWzBdIDogMDsKKyAgICAgbiA9IDA7CisgICAgIGZvciAoaSA9IGogPSAwOyBzdHJb aV07KSB7CitAQCAtNTI5LDcgKzUzOCw3IEBAIHZvaWQgZmZfY2JzX3RyYWNlX3N5bnRheF9lbGVt ZW50KENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBpbnQgcG9zaXRpb24sCisgICAgIGF2X2Fz c2VydDAobiA9PSBzdWJzKTsKKyAKKyAgICAgbmFtZV9sZW4gPSBzdHJsZW4obmFtZSk7CistICAg IGJpdHNfbGVuID0gc3RybGVuKGJpdHMpOworKyAgICBiaXRzX2xlbiA9IGxlbmd0aDsKKyAKKyAg ICAgaWYgKG5hbWVfbGVuICsgYml0c19sZW4gPiA2MCkKKyAgICAgICAgIHBhZCA9IGJpdHNfbGVu ICsgMjsKK0BAIC01NDAsMTQgKzU0OSw0OCBAQCB2b2lkIGZmX2Nic190cmFjZV9zeW50YXhfZWxl bWVudChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgaW50IHBvc2l0aW9uLAorICAgICAgICAg ICAgcG9zaXRpb24sIG5hbWUsIHBhZCwgYml0cywgdmFsdWUpOworIH0KKyAKKy1pbnQgZmZfY2Jz X3JlYWRfdW5zaWduZWQoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIEdldEJpdENvbnRleHQg KmdiYywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdpZHRoLCBjb25zdCBjaGFyICpu YW1lLAorLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgKnN1YnNjcmlwdHMsIHVp bnQzMl90ICp3cml0ZV90bywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgcmFu Z2VfbWluLCB1aW50MzJfdCByYW5nZV9tYXgpCisrdm9pZCBmZl9jYnNfdHJhY2Vfd3JpdGVfbG9n KHZvaWQgKnRyYWNlX2NvbnRleHQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1dEJp dENvbnRleHQgKnBiYywgaW50IGxlbmd0aCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgY2hhciAqc3RyLCBjb25zdCBpbnQgKnN1YnNjcmlwdHMsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGludDY0X3QgdmFsdWUpCisgeworLSAgICB1aW50MzJfdCB2YWx1ZTsKKysg ICAgQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHggPSB0cmFjZV9jb250ZXh0OworKworKyAgICAv LyBFbnN1cmUgdGhhdCB0aGUgc3ludGF4IGVsZW1lbnQgaXMgd3JpdHRlbiB0byB0aGUgb3V0cHV0 IGJ1ZmZlciwKKysgICAgLy8gbWFrZSBhIEdldEJpdENvbnRleHQgcG9pbnRlZCBhdCB0aGUgc3Rh cnQgcG9zaXRpb24sIHRoZW4gY2FsbCB0aGUKKysgICAgLy8gcmVhZCBsb2cgZnVuY3Rpb24gd2hp Y2ggY2FuIHJlYWQgdGhlIGJpdHMgYmFjayB0byBsb2cgdGhlbS4KKysKKysgICAgR2V0Qml0Q29u dGV4dCBnYmM7CisgICAgIGludCBwb3NpdGlvbjsKKyAKKysgICAgaWYgKGxlbmd0aCA+IDApIHsK KysgICAgICAgIFB1dEJpdENvbnRleHQgZmx1c2g7CisrICAgICAgICBmbHVzaCA9ICpwYmM7Cisr ICAgICAgICBmbHVzaF9wdXRfYml0cygmZmx1c2gpOworKyAgICB9CisrCisrICAgIHBvc2l0aW9u ID0gcHV0X2JpdHNfY291bnQocGJjKTsKKysgICAgYXZfYXNzZXJ0MChwb3NpdGlvbiA+PSBsZW5n dGgpOworKworKyAgICBpbml0X2dldF9iaXRzKCZnYmMsIHBiYy0+YnVmLCBwb3NpdGlvbik7Cisr CisrICAgIHNraXBfYml0c19sb25nKCZnYmMsIHBvc2l0aW9uIC0gbGVuZ3RoKTsKKysKKysgICAg ZmZfY2JzX3RyYWNlX3JlYWRfbG9nKGN0eCwgJmdiYywgbGVuZ3RoLCBzdHIsIHN1YnNjcmlwdHMs IHZhbHVlKTsKKyt9CisrCisrc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgaW50IGNic19yZWFkX3Vu c2lnbmVkKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRCaXRDb250ZXh0ICpnYmMsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3aWR0aCwgY29uc3QgY2hh ciAqbmFtZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgaW50ICpzdWJzY3JpcHRzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1aW50MzJfdCAqd3JpdGVfdG8sCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHJhbmdlX21pbiwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgcmFuZ2VfbWF4KQor K3sKKysgICAgdWludDMyX3QgdmFsdWU7CisrCisrICAgIENCU19UUkFDRV9SRUFEX1NUQVJUKCk7 CisrCisgICAgIGF2X2Fzc2VydDAod2lkdGggPiAwICYmIHdpZHRoIDw9IDMyKTsKKyAKKyAgICAg aWYgKGdldF9iaXRzX2xlZnQoZ2JjKSA8IHdpZHRoKSB7CitAQCAtNTU2LDIxICs1OTksOSBAQCBp bnQgZmZfY2JzX3JlYWRfdW5zaWduZWQoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIEdldEJp dENvbnRleHQgKmdiYywKKyAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAg ICB9CisgCistICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkKKy0gICAgICAgIHBvc2l0aW9uID0g Z2V0X2JpdHNfY291bnQoZ2JjKTsKKy0KKyAgICAgdmFsdWUgPSBnZXRfYml0c19sb25nKGdiYywg d2lkdGgpOworIAorLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpIHsKKy0gICAgICAgIGNoYXIg Yml0c1szM107CistICAgICAgICBpbnQgaTsKKy0gICAgICAgIGZvciAoaSA9IDA7IGkgPCB3aWR0 aDsgaSsrKQorLSAgICAgICAgICAgIGJpdHNbaV0gPSB2YWx1ZSA+PiAod2lkdGggLSBpIC0gMSkg JiAxID8gJzEnIDogJzAnOworLSAgICAgICAgYml0c1tpXSA9IDA7CistCistICAgICAgICBmZl9j YnNfdHJhY2Vfc3ludGF4X2VsZW1lbnQoY3R4LCBwb3NpdGlvbiwgbmFtZSwgc3Vic2NyaXB0cywK Ky0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRzLCB2YWx1ZSk7CistICAg IH0KKysgICAgQ0JTX1RSQUNFX1JFQURfRU5EKCk7CisgCisgICAgIGlmICh2YWx1ZSA8IHJhbmdl X21pbiB8fCB2YWx1ZSA+IHJhbmdlX21heCkgeworICAgICAgICAgYXZfbG9nKGN0eC0+bG9nX2N0 eCwgQVZfTE9HX0VSUk9SLCAiJXMgb3V0IG9mIHJhbmdlOiAiCitAQCAtNTgzLDExICs2MTQsMjkg QEAgaW50IGZmX2Nic19yZWFkX3Vuc2lnbmVkKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBH ZXRCaXRDb250ZXh0ICpnYmMsCisgICAgIHJldHVybiAwOworIH0KKyAKKytpbnQgZmZfY2JzX3Jl YWRfdW5zaWduZWQoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIEdldEJpdENvbnRleHQgKmdi YywKKysgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdpZHRoLCBjb25zdCBjaGFyICpuYW1l LAorKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgKnN1YnNjcmlwdHMsIHVpbnQz Ml90ICp3cml0ZV90bywKKysgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgcmFuZ2Vf bWluLCB1aW50MzJfdCByYW5nZV9tYXgpCisreworKyAgICByZXR1cm4gY2JzX3JlYWRfdW5zaWdu ZWQoY3R4LCBnYmMsIHdpZHRoLCBuYW1lLCBzdWJzY3JpcHRzLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgd3JpdGVfdG8sIHJhbmdlX21pbiwgcmFuZ2VfbWF4KTsKKyt9CisrCisraW50 IGZmX2Nic19yZWFkX3NpbXBsZV91bnNpZ25lZChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwg R2V0Qml0Q29udGV4dCAqZ2JjLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 IHdpZHRoLCBjb25zdCBjaGFyICpuYW1lLCB1aW50MzJfdCAqd3JpdGVfdG8pCisreworKyAgICBy ZXR1cm4gY2JzX3JlYWRfdW5zaWduZWQoY3R4LCBnYmMsIHdpZHRoLCBuYW1lLCBOVUxMLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVfdG8sIDAsIFVJTlQzMl9NQVgpOworK30K KysKKyBpbnQgZmZfY2JzX3dyaXRlX3Vuc2lnbmVkKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4 LCBQdXRCaXRDb250ZXh0ICpwYmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2lk dGgsIGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBp bnQgKnN1YnNjcmlwdHMsIHVpbnQzMl90IHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgdWludDMyX3QgcmFuZ2VfbWluLCB1aW50MzJfdCByYW5nZV9tYXgpCisgeworKyAgICBDQlNf VFJBQ0VfV1JJVEVfU1RBUlQoKTsKKysKKyAgICAgYXZfYXNzZXJ0MCh3aWR0aCA+IDAgJiYgd2lk dGggPD0gMzIpOworIAorICAgICBpZiAodmFsdWUgPCByYW5nZV9taW4gfHwgdmFsdWUgPiByYW5n ZV9tYXgpIHsKK0BAIC02MDAsMzIgKzY0OSwzMSBAQCBpbnQgZmZfY2JzX3dyaXRlX3Vuc2lnbmVk KENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBQdXRCaXRDb250ZXh0ICpwYmMsCisgICAgIGlm IChwdXRfYml0c19sZWZ0KHBiYykgPCB3aWR0aCkKKyAgICAgICAgIHJldHVybiBBVkVSUk9SKEVO T1NQQyk7CisgCistICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkgeworLSAgICAgICAgY2hhciBi aXRzWzMzXTsKKy0gICAgICAgIGludCBpOworLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHdpZHRo OyBpKyspCistICAgICAgICAgICAgYml0c1tpXSA9IHZhbHVlID4+ICh3aWR0aCAtIGkgLSAxKSAm IDEgPyAnMScgOiAnMCc7CistICAgICAgICBiaXRzW2ldID0gMDsKKy0KKy0gICAgICAgIGZmX2Ni c190cmFjZV9zeW50YXhfZWxlbWVudChjdHgsIHB1dF9iaXRzX2NvdW50KHBiYyksCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgc3Vic2NyaXB0cywgYml0cywgdmFs dWUpOworLSAgICB9CistCisgICAgIGlmICh3aWR0aCA8IDMyKQorICAgICAgICAgcHV0X2JpdHMo cGJjLCB3aWR0aCwgdmFsdWUpOworICAgICBlbHNlCisgICAgICAgICBwdXRfYml0czMyKHBiYywg dmFsdWUpOworIAorKyAgICBDQlNfVFJBQ0VfV1JJVEVfRU5EKCk7CisrCisgICAgIHJldHVybiAw OworIH0KKyAKKytpbnQgZmZfY2JzX3dyaXRlX3NpbXBsZV91bnNpZ25lZChDb2RlZEJpdHN0cmVh bUNvbnRleHQgKmN0eCwgUHV0Qml0Q29udGV4dCAqcGJjLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGludCB3aWR0aCwgY29uc3QgY2hhciAqbmFtZSwgdWludDMyX3QgdmFsdWUp CisreworKyAgICByZXR1cm4gZmZfY2JzX3dyaXRlX3Vuc2lnbmVkKGN0eCwgcGJjLCB3aWR0aCwg bmFtZSwgTlVMTCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSwgMCwg TUFYX1VJTlRfQklUUyh3aWR0aCkpOworK30KKysKKyBpbnQgZmZfY2JzX3JlYWRfc2lnbmVkKENv ZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBHZXRCaXRDb250ZXh0ICpnYmMsCisgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgd2lkdGgsIGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBpbnQgKnN1YnNjcmlwdHMsIGludDMyX3QgKndyaXRlX3RvLAorICAg ICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCByYW5nZV9taW4sIGludDMyX3QgcmFuZ2VfbWF4 KQorIHsKKyAgICAgaW50MzJfdCB2YWx1ZTsKKy0gICAgaW50IHBvc2l0aW9uOworKworKyAgICBD QlNfVFJBQ0VfUkVBRF9TVEFSVCgpOworIAorICAgICBhdl9hc3NlcnQwKHdpZHRoID4gMCAmJiB3 aWR0aCA8PSAzMik7CisgCitAQCAtNjM1LDIxICs2ODMsOSBAQCBpbnQgZmZfY2JzX3JlYWRfc2ln bmVkKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBHZXRCaXRDb250ZXh0ICpnYmMsCisgICAg ICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICAgfQorIAorLSAgICBpZiAoY3R4 LT50cmFjZV9lbmFibGUpCistICAgICAgICBwb3NpdGlvbiA9IGdldF9iaXRzX2NvdW50KGdiYyk7 CistCisgICAgIHZhbHVlID0gZ2V0X3NiaXRzX2xvbmcoZ2JjLCB3aWR0aCk7CisgCistICAgIGlm IChjdHgtPnRyYWNlX2VuYWJsZSkgeworLSAgICAgICAgY2hhciBiaXRzWzMzXTsKKy0gICAgICAg IGludCBpOworLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHdpZHRoOyBpKyspCistICAgICAgICAg ICAgYml0c1tpXSA9IHZhbHVlICYgKDFVIDw8ICh3aWR0aCAtIGkgLSAxKSkgPyAnMScgOiAnMCc7 CistICAgICAgICBiaXRzW2ldID0gMDsKKy0KKy0gICAgICAgIGZmX2Nic190cmFjZV9zeW50YXhf ZWxlbWVudChjdHgsIHBvc2l0aW9uLCBuYW1lLCBzdWJzY3JpcHRzLAorLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJpdHMsIHZhbHVlKTsKKy0gICAgfQorKyAgICBDQlNfVFJB Q0VfUkVBRF9FTkQoKTsKKyAKKyAgICAgaWYgKHZhbHVlIDwgcmFuZ2VfbWluIHx8IHZhbHVlID4g cmFuZ2VfbWF4KSB7CisgICAgICAgICBhdl9sb2coY3R4LT5sb2dfY3R4LCBBVl9MT0dfRVJST1Is ICIlcyBvdXQgb2YgcmFuZ2U6ICIKK0BAIC02NjcsNiArNzAzLDggQEAgaW50IGZmX2Nic193cml0 ZV9zaWduZWQoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBiYywK KyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgKnN1YnNjcmlwdHMsIGludDMyX3Qg dmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCByYW5nZV9taW4sIGludDMy X3QgcmFuZ2VfbWF4KQorIHsKKysgICAgQ0JTX1RSQUNFX1dSSVRFX1NUQVJUKCk7CisrCisgICAg IGF2X2Fzc2VydDAod2lkdGggPiAwICYmIHdpZHRoIDw9IDMyKTsKKyAKKyAgICAgaWYgKHZhbHVl IDwgcmFuZ2VfbWluIHx8IHZhbHVlID4gcmFuZ2VfbWF4KSB7CitAQCAtNjc5LDIyICs3MTcsMTMg QEAgaW50IGZmX2Nic193cml0ZV9zaWduZWQoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIFB1 dEJpdENvbnRleHQgKnBiYywKKyAgICAgaWYgKHB1dF9iaXRzX2xlZnQocGJjKSA8IHdpZHRoKQor ICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PU1BDKTsKKyAKKy0gICAgaWYgKGN0eC0+dHJhY2Vf ZW5hYmxlKSB7CistICAgICAgICBjaGFyIGJpdHNbMzNdOworLSAgICAgICAgaW50IGk7CistICAg ICAgICBmb3IgKGkgPSAwOyBpIDwgd2lkdGg7IGkrKykKKy0gICAgICAgICAgICBiaXRzW2ldID0g dmFsdWUgJiAoMVUgPDwgKHdpZHRoIC0gaSAtIDEpKSA/ICcxJyA6ICcwJzsKKy0gICAgICAgIGJp dHNbaV0gPSAwOworLQorLSAgICAgICAgZmZfY2JzX3RyYWNlX3N5bnRheF9lbGVtZW50KGN0eCwg cHV0X2JpdHNfY291bnQocGJjKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBuYW1lLCBzdWJzY3JpcHRzLCBiaXRzLCB2YWx1ZSk7CistICAgIH0KKy0KKyAgICAgaWYgKHdp ZHRoIDwgMzIpCisgICAgICAgICBwdXRfc2JpdHMocGJjLCB3aWR0aCwgdmFsdWUpOworICAgICBl bHNlCisgICAgICAgICBwdXRfYml0czMyKHBiYywgdmFsdWUpOworIAorKyAgICBDQlNfVFJBQ0Vf V1JJVEVfRU5EKCk7CisrCisgICAgIHJldHVybiAwOworIH0KKyAKK2RpZmYgLS1naXQgYS9saWJh dmNvZGVjL2Nicy5oIGIvbGliYXZjb2RlYy9jYnMuaAoraW5kZXggZWUyMTYyMy4uZjY1MDlhMiAx MDA2NDQKKy0tLSBhL2xpYmF2Y29kZWMvY2JzLmgKKysrKyBiL2xpYmF2Y29kZWMvY2JzLmgKK0BA IC0xNjcsNiArMTY3LDUxIEBAIHR5cGVkZWYgc3RydWN0IENvZGVkQml0c3RyZWFtRnJhZ21lbnQg eworICAgICBDb2RlZEJpdHN0cmVhbVVuaXQgKnVuaXRzOworIH0gQ29kZWRCaXRzdHJlYW1GcmFn bWVudDsKKyAKKysKKytzdHJ1Y3QgQ29kZWRCaXRzdHJlYW1Db250ZXh0OworK3N0cnVjdCBHZXRC aXRDb250ZXh0OworK3N0cnVjdCBQdXRCaXRDb250ZXh0OworKworKy8qKgorKyAqIENhbGxiYWNr IHR5cGUgZm9yIHJlYWQgdHJhY2luZy4KKysgKgorKyAqIEBwYXJhbSBjdHggICAgICAgICBVc2Vy LXNldCB0cmFjZSBjb250ZXh0LgorKyAqIEBwYXJhbSBnYmMgICAgICAgICBBIEdldEJpdENvbnRl eHQgc2V0IGF0IHRoZSBzdGFydCBvZiB0aGUgc3ludGF4CisrICogICAgICAgICAgICAgICAgICAg IGVsZW1lbnQuICBUaGlzIGlzIGEgY29weSwgdGhlIGNhbGxlZSBkb2VzIG5vdAorKyAqICAgICAg ICAgICAgICAgICAgICBuZWVkIHRvIHByZXNlcnZlIGl0LgorKyAqIEBwYXJhbSBsZW5ndGggICAg ICBMZW5ndGggaW4gYml0cyBvZiB0aGUgc3ludGF4IGVsZW1lbnQuCisrICogQHBhcmFtIG5hbWUg ICAgICAgIFN0cmluZyBuYW1lIG9mIHRoZSBzeW50YXggZWxlbWVudHMuCisrICogQHBhcmFtIHN1 YnNjcmlwdHMgIElmIHRoZSBzeW50YXggZWxlbWVudCBpcyBhbiBhcnJheSwgYSBwb2ludGVyIHRv CisrICogICAgICAgICAgICAgICAgICAgIGFuIGFycmF5IG9mIHN1YnNjcmlwdHMgaW50byB0aGUg YXJyYXkuCisrICogQHBhcmFtIHZhbHVlICAgICAgIFBhcnNlZCB2YWx1ZSBvZiB0aGUgc3ludGF4 IGVsZW1lbnQuCisrICovCisrdHlwZWRlZiB2b2lkICgqQ0JTVHJhY2VSZWFkQ2FsbGJhY2spKHZv aWQgKnRyYWNlX2NvbnRleHQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBHZXRCaXRDb250ZXh0ICpnYmMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludCBzdGFydF9wb3NpdGlvbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgaW50ICpzdWJzY3JpcHRzLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQ2NF90IHZhbHVlKTsKKysKKysvKioKKysgKiBDYWxsYmFjayB0 eXBlIGZvciB3cml0ZSB0cmFjaW5nLgorKyAqCisrICogQHBhcmFtIGN0eCAgICAgICAgIFVzZXIt c2V0IHRyYWNlIGNvbnRleHQuCisrICogQHBhcmFtIHBiYyAgICAgICAgIEEgUHV0Qml0Q29udGV4 dCBzZXQgYXQgdGhlIGVuZCBvZiB0aGUgc3ludGF4CisrICogICAgICAgICAgICAgICAgICAgIGVs ZW1lbnQuICBUaGUgdXNlciBtdXN0IG5vdCBtb2RpZnkgdGhpcywgYnV0IG1heQorKyAqICAgICAg ICAgICAgICAgICAgICBpbnNwZWN0IGl0IHRvIGRldGVybWluZSBzdGF0ZS4KKysgKiBAcGFyYW0g bGVuZ3RoICAgICAgTGVuZ3RoIGluIGJpdHMgb2YgdGhlIHN5bnRheCBlbGVtZW50LgorKyAqIEBw YXJhbSBuYW1lICAgICAgICBTdHJpbmcgbmFtZSBvZiB0aGUgc3ludGF4IGVsZW1lbnRzLgorKyAq IEBwYXJhbSBzdWJzY3JpcHRzICBJZiB0aGUgc3ludGF4IGVsZW1lbnQgaXMgYW4gYXJyYXksIGEg cG9pbnRlciB0bworKyAqICAgICAgICAgICAgICAgICAgICBhbiBhcnJheSBvZiBzdWJzY3JpcHRz IGludG8gdGhlIGFycmF5LgorKyAqIEBwYXJhbSB2YWx1ZSAgICAgICBXcml0dGVuIHZhbHVlIG9m IHRoZSBzeW50YXggZWxlbWVudC4KKysgKi8KKyt0eXBlZGVmIHZvaWQgKCpDQlNUcmFjZVdyaXRl Q2FsbGJhY2spKHZvaWQgKnRyYWNlX2NvbnRleHQsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgUHV0Qml0Q29udGV4dCAqcGJjLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0X3Bvc2l0aW9uLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCAqc3Vic2NyaXB0cywKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgdmFsdWUpOworKworIC8q KgorICAqIENvbnRleHQgc3RydWN0dXJlIGZvciBjb2RlZCBiaXRzdHJlYW0gb3BlcmF0aW9ucy4K KyAgKi8KK0BAIC0yMTAsMTEgKzI1NSwyOSBAQCB0eXBlZGVmIHN0cnVjdCBDb2RlZEJpdHN0cmVh bUNvbnRleHQgeworICAgICAgKi8KKyAgICAgaW50IHRyYWNlX2VuYWJsZTsKKyAgICAgLyoqCist ICAgICAqIExvZyBsZXZlbCB0byB1c2UgZm9yIHRyYWNlIG91dHB1dC4KKysgICAgICogTG9nIGxl dmVsIHRvIHVzZSBmb3IgZGVmYXVsdCB0cmFjZSBvdXRwdXQuCisgICAgICAqCisgICAgICAqIEZy b20gQVZfTE9HXyo7IGRlZmF1bHRzIHRvIEFWX0xPR19UUkFDRS4KKyAgICAgICovCisgICAgIGlu dCB0cmFjZV9sZXZlbDsKKysgICAgLyoqCisrICAgICAqIFVzZXIgY29udGV4dCBwb2ludGVyIHRv IHBhc3MgdG8gdHJhY2UgY2FsbGJhY2tzLgorKyAgICAgKi8KKysgICAgdm9pZCAqdHJhY2VfY29u dGV4dDsKKysgICAgLyoqCisrICAgICAqIENhbGxiYWNrIGZvciByZWFkIHRyYWNpbmcuCisrICAg ICAqCisrICAgICAqIElmIHRyYWNpbmcgaXMgZW5hYmxlZCB0aGVuIHRoaXMgaXMgY2FsbGVkIG9u Y2UgZm9yIGVhY2ggc3ludGF4CisrICAgICAqIGVsZW1lbnQgcGFyc2VkLgorKyAgICAgKi8KKysg ICAgQ0JTVHJhY2VSZWFkQ2FsbGJhY2sgIHRyYWNlX3JlYWRfY2FsbGJhY2s7CisrICAgIC8qKgor KyAgICAgKiBDYWxsYmFjayBmb3Igd3JpdGUgdHJhY2luZy4KKysgICAgICoKKysgICAgICogSWYg dHJhY2luZyBpcyBlbmFibGVkIHRoZW4gdGhpcyBpcyBjYWxsZWQgb25jZSBmb3IgZWFjaCBzeW50 YXgKKysgICAgICogZWxlbWVudCB3cml0dGVuLgorKyAgICAgKi8KKysgICAgQ0JTVHJhY2VXcml0 ZUNhbGxiYWNrIHRyYWNlX3dyaXRlX2NhbGxiYWNrOworIAorICAgICAvKioKKyAgICAgICogV3Jp dGUgYnVmZmVyLiBVc2VkIGFzIGludGVybWVkaWF0ZSBidWZmZXIgd2hlbiB3cml0aW5nIHVuaXRz LgorQEAgLTQzMyw0ICs0OTYsMjcgQEAgaW50IGZmX2Nic19tYWtlX3VuaXRfd3JpdGFibGUoQ29k ZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Q29kZWRCaXRzdHJlYW1Vbml0ICp1bml0KTsKKyAKKyAKKysKKysvKioKKysgKiBIZWxwZXIgZnVu Y3Rpb24gZm9yIHJlYWQgdHJhY2luZyB3aGljaCBmb3JtYXRzIHRoZSBzeW50YXggZWxlbWVudAor KyAqIGFuZCBsb2dzIHRoZSByZXN1bHQuCisrICoKKysgKiBUcmFjZSBjb250ZXh0IHNob3VsZCBi ZSBzZXQgdG8gdGhlIENvZGVkQml0c3RyZWFtQ29udGV4dC4KKysgKi8KKyt2b2lkIGZmX2Nic190 cmFjZV9yZWFkX2xvZyh2b2lkICp0cmFjZV9jb250ZXh0LAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBHZXRCaXRDb250ZXh0ICpnYmMsIGludCBsZW5ndGgsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3RyLCBjb25zdCBpbnQgKnN1YnNjcmlwdHMs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCB2YWx1ZSk7CisrCisrLyoqCisr ICogSGVscGVyIGZ1bmN0aW9uIGZvciB3cml0ZSB0cmFjaW5nIHdoaWNoIGZvcm1hdHMgdGhlIHN5 bnRheCBlbGVtZW50CisrICogYW5kIGxvZ3MgdGhlIHJlc3VsdC4KKysgKgorKyAqIFRyYWNlIGNv bnRleHQgc2hvdWxkIGJlIHNldCB0byB0aGUgQ29kZWRCaXRzdHJlYW1Db250ZXh0LgorKyAqLwor K3ZvaWQgZmZfY2JzX3RyYWNlX3dyaXRlX2xvZyh2b2lkICp0cmFjZV9jb250ZXh0LAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgUHV0Qml0Q29udGV4dCAqcGJjLCBpbnQgbGVu Z3RoLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzdHIsIGNvbnN0 IGludCAqc3Vic2NyaXB0cywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCB2 YWx1ZSk7CisrCisgI2VuZGlmIC8qIEFWQ09ERUNfQ0JTX0ggKi8KK2RpZmYgLS1naXQgYS9saWJh dmNvZGVjL2Nic19hdjEuYyBiL2xpYmF2Y29kZWMvY2JzX2F2MS5jCitpbmRleCA0NWUxMjg4Li42 MDk4Yzk3IDEwMDY0NAorLS0tIGEvbGliYXZjb2RlYy9jYnNfYXYxLmMKKysrKyBiL2xpYmF2Y29k ZWMvY2JzX2F2MS5jCitAQCAtMzEsMTAgKzMxLDggQEAgc3RhdGljIGludCBjYnNfYXYxX3JlYWRf dXZsYyhDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgR2V0Qml0Q29udGV4dCAqZ2JjLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgcmFuZ2VfbWluLCB1aW50MzJfdCBy YW5nZV9tYXgpCisgeworICAgICB1aW50MzJfdCB6ZXJvZXMsIGJpdHNfdmFsdWUsIHZhbHVlOwor LSAgICBpbnQgcG9zaXRpb247CisgCistICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkKKy0gICAg ICAgIHBvc2l0aW9uID0gZ2V0X2JpdHNfY291bnQoZ2JjKTsKKysgICAgQ0JTX1RSQUNFX1JFQURf U1RBUlQoKTsKKyAKKyAgICAgemVyb2VzID0gMDsKKyAgICAgd2hpbGUgKDEpIHsKK0BAIC01MCw2 ICs0OCw5IEBAIHN0YXRpYyBpbnQgY2JzX2F2MV9yZWFkX3V2bGMoQ29kZWRCaXRzdHJlYW1Db250 ZXh0ICpjdHgsIEdldEJpdENvbnRleHQgKmdiYywKKyAgICAgfQorIAorICAgICBpZiAoemVyb2Vz ID49IDMyKSB7CisrICAgICAgICAvLyBOb3RlIHRoYXQgdGhlIHNwZWMgYWxsb3dzIGFuIGFyYml0 cmFyaWx5IGxhcmdlIG51bWJlciBvZgorKyAgICAgICAgLy8gemVybyBiaXRzIGZvbGxvd2VkIGJ5 IGEgb25lIGJpdCBpbiB0aGlzIGNhc2UsIGJ1dCB0aGUKKysgICAgICAgIC8vIGxpYmFvbSBpbXBs ZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IGl0LgorICAgICAgICAgdmFsdWUgPSBNQVhfVUlO VF9CSVRTKDMyKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdi YykgPCB6ZXJvZXMpIHsKK0BAIC02MiwzNiArNjMsNyBAQCBzdGF0aWMgaW50IGNic19hdjFfcmVh ZF91dmxjKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBHZXRCaXRDb250ZXh0ICpnYmMsCisg ICAgICAgICB2YWx1ZSA9IGJpdHNfdmFsdWUgKyAoVUlOVDMyX0MoMSkgPDwgemVyb2VzKSAtIDE7 CisgICAgIH0KKyAKKy0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKSB7CistICAgICAgICBjaGFy IGJpdHNbNjVdOworLSAgICAgICAgaW50IGksIGosIGs7CistCistICAgICAgICBpZiAoemVyb2Vz ID49IDMyKSB7CistICAgICAgICAgICAgd2hpbGUgKHplcm9lcyA+IDMyKSB7CistICAgICAgICAg ICAgICAgIGsgPSBGRk1JTih6ZXJvZXMgLSAzMiwgMzIpOworLSAgICAgICAgICAgICAgICBmb3Ig KGkgPSAwOyBpIDwgazsgaSsrKQorLSAgICAgICAgICAgICAgICAgICAgYml0c1tpXSA9ICcwJzsK Ky0gICAgICAgICAgICAgICAgYml0c1tpXSA9IDA7CistICAgICAgICAgICAgICAgIGZmX2Nic190 cmFjZV9zeW50YXhfZWxlbWVudChjdHgsIHBvc2l0aW9uLCBuYW1lLAorLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgYml0cywgMCk7CistICAgICAgICAg ICAgICAgIHplcm9lcyAtPSBrOworLSAgICAgICAgICAgICAgICBwb3NpdGlvbiArPSBrOworLSAg ICAgICAgICAgIH0KKy0gICAgICAgIH0KKy0KKy0gICAgICAgIGZvciAoaSA9IDA7IGkgPCB6ZXJv ZXM7IGkrKykKKy0gICAgICAgICAgICBiaXRzW2ldID0gJzAnOworLSAgICAgICAgYml0c1tpKytd ID0gJzEnOworLQorLSAgICAgICAgaWYgKHplcm9lcyA8IDMyKSB7CistICAgICAgICAgICAgZm9y IChqID0gMDsgaiA8IHplcm9lczsgaisrKQorLSAgICAgICAgICAgICAgICBiaXRzW2krK10gPSAo Yml0c192YWx1ZSA+PiAoemVyb2VzIC0gaiAtIDEpICYgMSkgPyAnMScgOiAnMCc7CistICAgICAg ICB9CistCistICAgICAgICBiaXRzW2ldID0gMDsKKy0gICAgICAgIGZmX2Nic190cmFjZV9zeW50 YXhfZWxlbWVudChjdHgsIHBvc2l0aW9uLCBuYW1lLAorLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE5VTEwsIGJpdHMsIHZhbHVlKTsKKy0gICAgfQorKyAgICBDQlNfVFJBQ0Vf UkVBRF9FTkRfTk9fU1VCU0NSSVBUUygpOworIAorICAgICBpZiAodmFsdWUgPCByYW5nZV9taW4g fHwgdmFsdWUgPiByYW5nZV9tYXgpIHsKKyAgICAgICAgIGF2X2xvZyhjdHgtPmxvZ19jdHgsIEFW X0xPR19FUlJPUiwgIiVzIG91dCBvZiByYW5nZTogIgorQEAgLTEwOSw3ICs4MSw5IEBAIHN0YXRp YyBpbnQgY2JzX2F2MV93cml0ZV91dmxjKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBQdXRC aXRDb250ZXh0ICpwYmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg cmFuZ2VfbWluLCB1aW50MzJfdCByYW5nZV9tYXgpCisgeworICAgICB1aW50MzJfdCB2OworLSAg ICBpbnQgcG9zaXRpb24sIHplcm9lczsKKysgICAgaW50IHplcm9lczsKKysKKysgICAgQ0JTX1RS QUNFX1dSSVRFX1NUQVJUKCk7CisgCisgICAgIGlmICh2YWx1ZSA8IHJhbmdlX21pbiB8fCB2YWx1 ZSA+IHJhbmdlX21heCkgeworICAgICAgICAgYXZfbG9nKGN0eC0+bG9nX2N0eCwgQVZfTE9HX0VS Uk9SLCAiJXMgb3V0IG9mIHJhbmdlOiAiCitAQCAtMTE4LDI4ICs5MiwxNyBAQCBzdGF0aWMgaW50 IGNic19hdjFfd3JpdGVfdXZsYyhDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUHV0Qml0Q29u dGV4dCAqcGJjLAorICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisgICAgIH0K KyAKKy0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKQorLSAgICAgICAgcG9zaXRpb24gPSBwdXRf Yml0c19jb3VudChwYmMpOworLQorICAgICB6ZXJvZXMgPSBhdl9sb2cyKHZhbHVlICsgMSk7Cisg ICAgIHYgPSB2YWx1ZSAtICgxVSA8PCB6ZXJvZXMpICsgMTsKKysKKysgICAgaWYgKHB1dF9iaXRz X2xlZnQocGJjKSA8IDIgKiB6ZXJvZXMgKyAxKQorKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5P U1BDKTsKKysKKyAgICAgcHV0X2JpdHMocGJjLCB6ZXJvZXMsIDApOworICAgICBwdXRfYml0cyhw YmMsIDEsIDEpOworICAgICBwdXRfYml0cyhwYmMsIHplcm9lcywgdik7CisgCistICAgIGlmIChj dHgtPnRyYWNlX2VuYWJsZSkgeworLSAgICAgICAgY2hhciBiaXRzWzY1XTsKKy0gICAgICAgIGlu dCBpLCBqOworLSAgICAgICAgaSA9IDA7CistICAgICAgICBmb3IgKGogPSAwOyBqIDwgemVyb2Vz OyBqKyspCistICAgICAgICAgICAgYml0c1tpKytdID0gJzAnOworLSAgICAgICAgYml0c1tpKytd ID0gJzEnOworLSAgICAgICAgZm9yIChqID0gMDsgaiA8IHplcm9lczsgaisrKQorLSAgICAgICAg ICAgIGJpdHNbaSsrXSA9ICh2ID4+ICh6ZXJvZXMgLSBqIC0gMSkgJiAxKSA/ICcxJyA6ICcwJzsK Ky0gICAgICAgIGJpdHNbaSsrXSA9IDA7CistICAgICAgICBmZl9jYnNfdHJhY2Vfc3ludGF4X2Vs ZW1lbnQoY3R4LCBwb3NpdGlvbiwgbmFtZSwgTlVMTCwKKy0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBiaXRzLCB2YWx1ZSk7CistICAgIH0KKysgICAgQ0JTX1RSQUNFX1dSSVRF X0VORF9OT19TVUJTQ1JJUFRTKCk7CisgCisgICAgIHJldHVybiAwOworIH0KK0BAIC0xNDgsMjAg KzExMSwxOSBAQCBzdGF0aWMgaW50IGNic19hdjFfcmVhZF9sZWIxMjgoQ29kZWRCaXRzdHJlYW1D b250ZXh0ICpjdHgsIEdldEJpdENvbnRleHQgKmdiYywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwgdWludDY0X3QgKndyaXRlX3RvKQorIHsKKyAgICAg dWludDY0X3QgdmFsdWU7CistICAgIGludCBwb3NpdGlvbiwgZXJyLCBpOworKyAgICB1aW50MzJf dCBieXRlOworKyAgICBpbnQgaTsKKyAKKy0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKQorLSAg ICAgICAgcG9zaXRpb24gPSBnZXRfYml0c19jb3VudChnYmMpOworKyAgICBDQlNfVFJBQ0VfUkVB RF9TVEFSVCgpOworIAorICAgICB2YWx1ZSA9IDA7CisgICAgIGZvciAoaSA9IDA7IGkgPCA4OyBp KyspIHsKKy0gICAgICAgIGludCBzdWJzY3JpcHRbMl0gPSB7IDEsIGkgfTsKKy0gICAgICAgIHVp bnQzMl90IGJ5dGU7CistICAgICAgICBlcnIgPSBmZl9jYnNfcmVhZF91bnNpZ25lZChjdHgsIGdi YywgOCwgImxlYjEyOF9ieXRlW2ldIiwgc3Vic2NyaXB0LAorLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJmJ5dGUsIDB4MDAsIDB4ZmYpOworLSAgICAgICAgaWYgKGVyciA8IDAp CistICAgICAgICAgICAgcmV0dXJuIGVycjsKKy0KKysgICAgICAgIGlmIChnZXRfYml0c19sZWZ0 KGdiYykgPCA4KSB7CisrICAgICAgICAgICAgYXZfbG9nKGN0eC0+bG9nX2N0eCwgQVZfTE9HX0VS Uk9SLCAiSW52YWxpZCBsZWIxMjggYXQgIgorKyAgICAgICAgICAgICAgICAgICAiJXM6IGJpdHN0 cmVhbSBlbmRlZC5cbiIsIG5hbWUpOworKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFM SUREQVRBOworKyAgICAgICAgfQorKyAgICAgICAgYnl0ZSA9IGdldF9iaXRzKGdiYywgOCk7Cisg ICAgICAgICB2YWx1ZSB8PSAodWludDY0X3QpKGJ5dGUgJiAweDdmKSA8PCAoaSAqIDcpOworICAg ICAgICAgaWYgKCEoYnl0ZSAmIDB4ODApKQorICAgICAgICAgICAgIGJyZWFrOworQEAgLTE3MCwz OSArMTMyLDM4IEBAIHN0YXRpYyBpbnQgY2JzX2F2MV9yZWFkX2xlYjEyOChDb2RlZEJpdHN0cmVh bUNvbnRleHQgKmN0eCwgR2V0Qml0Q29udGV4dCAqZ2JjLAorICAgICBpZiAodmFsdWUgPiBVSU5U MzJfTUFYKQorICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisgCistICAgIGlm IChjdHgtPnRyYWNlX2VuYWJsZSkKKy0gICAgICAgIGZmX2Nic190cmFjZV9zeW50YXhfZWxlbWVu dChjdHgsIHBvc2l0aW9uLCBuYW1lLCBOVUxMLCAiIiwgdmFsdWUpOworKyAgICBDQlNfVFJBQ0Vf UkVBRF9FTkRfTk9fU1VCU0NSSVBUUygpOworIAorICAgICAqd3JpdGVfdG8gPSB2YWx1ZTsKKyAg ICAgcmV0dXJuIDA7CisgfQorIAorKy8qKiBNaW5pbXVtIGJ5dGUgbGVuZ3RoIHdpbGwgYmUgdXNl ZCB0byBpbmRpY2F0ZSB0aGUgbGVuMTI4IG9mIHZhbHVlIGlmIGJ5dGVfbGVuIGlzIDAuICovCisg c3RhdGljIGludCBjYnNfYXYxX3dyaXRlX2xlYjEyOChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0 eCwgUHV0Qml0Q29udGV4dCAqcGJjLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgY2hhciAqbmFtZSwgdWludDY0X3QgdmFsdWUpCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLCB1aW50NjRfdCB2YWx1ZSwgdWludDhfdCBieXRl X2xlbikKKyB7CistICAgIGludCBwb3NpdGlvbiwgZXJyLCBsZW4sIGk7CisrICAgIGludCBsZW4s IGk7CisgICAgIHVpbnQ4X3QgYnl0ZTsKKyAKKy0gICAgbGVuID0gKGF2X2xvZzIodmFsdWUpICsg NykgLyA3OworKyAgICBDQlNfVFJBQ0VfV1JJVEVfU1RBUlQoKTsKKysKKysgICAgaWYgKGJ5dGVf bGVuKQorKyAgICAgICAgYXZfYXNzZXJ0MChieXRlX2xlbiA+PSAoYXZfbG9nMih2YWx1ZSkgKyA3 KSAvIDcpOworIAorLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpCistICAgICAgICBwb3NpdGlv biA9IHB1dF9iaXRzX2NvdW50KHBiYyk7CisrICAgIGxlbiA9IGJ5dGVfbGVuID8gYnl0ZV9sZW4g OiAoYXZfbG9nMih2YWx1ZSkgKyA3KSAvIDc7CisgCisgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47 IGkrKykgeworLSAgICAgICAgaW50IHN1YnNjcmlwdFsyXSA9IHsgMSwgaSB9OworKyAgICAgICAg aWYgKHB1dF9iaXRzX2xlZnQocGJjKSA8IDgpCisrICAgICAgICAgICAgcmV0dXJuIEFWRVJST1Io RU5PU1BDKTsKKyAKKyAgICAgICAgIGJ5dGUgPSB2YWx1ZSA+PiAoNyAqIGkpICYgMHg3ZjsKKyAg ICAgICAgIGlmIChpIDwgbGVuIC0gMSkKKyAgICAgICAgICAgICBieXRlIHw9IDB4ODA7CisgCist ICAgICAgICBlcnIgPSBmZl9jYnNfd3JpdGVfdW5zaWduZWQoY3R4LCBwYmMsIDgsICJsZWIxMjhf Ynl0ZVtpXSIsIHN1YnNjcmlwdCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBieXRlLCAweDAwLCAweGZmKTsKKy0gICAgICAgIGlmIChlcnIgPCAwKQorLSAgICAgICAgICAg IHJldHVybiBlcnI7CisrICAgICAgICBwdXRfYml0cyhwYmMsIDgsIGJ5dGUpOworICAgICB9Cisg CistICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkKKy0gICAgICAgIGZmX2Nic190cmFjZV9zeW50 YXhfZWxlbWVudChjdHgsIHBvc2l0aW9uLCBuYW1lLCBOVUxMLCAiIiwgdmFsdWUpOworKyAgICBD QlNfVFJBQ0VfV1JJVEVfRU5EX05PX1NVQlNDUklQVFMoKTsKKyAKKyAgICAgcmV0dXJuIDA7Cisg fQorQEAgLTIxMiwxMiArMTczLDExIEBAIHN0YXRpYyBpbnQgY2JzX2F2MV9yZWFkX25zKENvZGVk Qml0c3RyZWFtQ29udGV4dCAqY3R4LCBHZXRCaXRDb250ZXh0ICpnYmMsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgaW50ICpzdWJzY3JpcHRzLCB1aW50MzJfdCAqd3JpdGVfdG8p CisgeworICAgICB1aW50MzJfdCBtLCB2LCBleHRyYV9iaXQsIHZhbHVlOworLSAgICBpbnQgcG9z aXRpb24sIHc7CisrICAgIGludCB3OworIAorLSAgICBhdl9hc3NlcnQwKG4gPiAwKTsKKysgICAg Q0JTX1RSQUNFX1JFQURfU1RBUlQoKTsKKyAKKy0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKQor LSAgICAgICAgcG9zaXRpb24gPSBnZXRfYml0c19jb3VudChnYmMpOworKyAgICBhdl9hc3NlcnQw KG4gPiAwKTsKKyAKKyAgICAgdyA9IGF2X2xvZzIobikgKyAxOworICAgICBtID0gKDEgPDwgdykg LSBuOworQEAgLTI0MCwxOCArMjAwLDcgQEAgc3RhdGljIGludCBjYnNfYXYxX3JlYWRfbnMoQ29k ZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIEdldEJpdENvbnRleHQgKmdiYywKKyAgICAgICAgIHZh bHVlID0gKHYgPDwgMSkgLSBtICsgZXh0cmFfYml0OworICAgICB9CisgCistICAgIGlmIChjdHgt PnRyYWNlX2VuYWJsZSkgeworLSAgICAgICAgY2hhciBiaXRzWzMzXTsKKy0gICAgICAgIGludCBp OworLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHcgLSAxOyBpKyspCistICAgICAgICAgICAgYml0 c1tpXSA9ICh2ID4+IGkgJiAxKSA/ICcxJyA6ICcwJzsKKy0gICAgICAgIGlmICh2ID49IG0pCist ICAgICAgICAgICAgYml0c1tpKytdID0gZXh0cmFfYml0ID8gJzEnIDogJzAnOworLSAgICAgICAg Yml0c1tpXSA9IDA7CistCistICAgICAgICBmZl9jYnNfdHJhY2Vfc3ludGF4X2VsZW1lbnQoY3R4 LCBwb3NpdGlvbiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBz dWJzY3JpcHRzLCBiaXRzLCB2YWx1ZSk7CistICAgIH0KKysgICAgQ0JTX1RSQUNFX1JFQURfRU5E KCk7CisgCisgICAgICp3cml0ZV90byA9IHZhbHVlOworICAgICByZXR1cm4gMDsKK0BAIC0yNjIs NyArMjExLDggQEAgc3RhdGljIGludCBjYnNfYXYxX3dyaXRlX25zKENvZGVkQml0c3RyZWFtQ29u dGV4dCAqY3R4LCBQdXRCaXRDb250ZXh0ICpwYmMsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IGludCAqc3Vic2NyaXB0cywgdWludDMyX3QgdmFsdWUpCisgeworICAgICB1aW50 MzJfdCB3LCBtLCB2LCBleHRyYV9iaXQ7CistICAgIGludCBwb3NpdGlvbjsKKysKKysgICAgQ0JT X1RSQUNFX1dSSVRFX1NUQVJUKCk7CisgCisgICAgIGlmICh2YWx1ZSA+IG4pIHsKKyAgICAgICAg IGF2X2xvZyhjdHgtPmxvZ19jdHgsIEFWX0xPR19FUlJPUiwgIiVzIG91dCBvZiByYW5nZTogIgor QEAgLTI3MSw5ICsyMjEsNiBAQCBzdGF0aWMgaW50IGNic19hdjFfd3JpdGVfbnMoQ29kZWRCaXRz dHJlYW1Db250ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBiYywKKyAgICAgICAgIHJldHVybiBB VkVSUk9SX0lOVkFMSUREQVRBOworICAgICB9CisgCistICAgIGlmIChjdHgtPnRyYWNlX2VuYWJs ZSkKKy0gICAgICAgIHBvc2l0aW9uID0gcHV0X2JpdHNfY291bnQocGJjKTsKKy0KKyAgICAgdyA9 IGF2X2xvZzIobikgKyAxOworICAgICBtID0gKDEgPDwgdykgLSBuOworIAorQEAgLTI5MCwxOCAr MjM3LDcgQEAgc3RhdGljIGludCBjYnNfYXYxX3dyaXRlX25zKENvZGVkQml0c3RyZWFtQ29udGV4 dCAqY3R4LCBQdXRCaXRDb250ZXh0ICpwYmMsCisgICAgICAgICBwdXRfYml0cyhwYmMsIDEsIGV4 dHJhX2JpdCk7CisgICAgIH0KKyAKKy0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKSB7CistICAg ICAgICBjaGFyIGJpdHNbMzNdOworLSAgICAgICAgaW50IGk7CistICAgICAgICBmb3IgKGkgPSAw OyBpIDwgdyAtIDE7IGkrKykKKy0gICAgICAgICAgICBiaXRzW2ldID0gKHYgPj4gaSAmIDEpID8g JzEnIDogJzAnOworLSAgICAgICAgaWYgKHZhbHVlID49IG0pCistICAgICAgICAgICAgYml0c1tp KytdID0gZXh0cmFfYml0ID8gJzEnIDogJzAnOworLSAgICAgICAgYml0c1tpXSA9IDA7CistCist ICAgICAgICBmZl9jYnNfdHJhY2Vfc3ludGF4X2VsZW1lbnQoY3R4LCBwb3NpdGlvbiwKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBzdWJzY3JpcHRzLCBiaXRzLCB2 YWx1ZSk7CistICAgIH0KKysgICAgQ0JTX1RSQUNFX1dSSVRFX0VORCgpOworIAorICAgICByZXR1 cm4gMDsKKyB9CitAQCAtMzExLDMzICsyNDcsMjQgQEAgc3RhdGljIGludCBjYnNfYXYxX3JlYWRf aW5jcmVtZW50KENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBHZXRCaXRDb250ZXh0ICpnYmMK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwgdWlu dDMyX3QgKndyaXRlX3RvKQorIHsKKyAgICAgdWludDMyX3QgdmFsdWU7CistICAgIGludCBwb3Np dGlvbiwgaTsKKy0gICAgY2hhciBiaXRzWzMzXTsKKyAKKy0gICAgYXZfYXNzZXJ0MChyYW5nZV9t aW4gPD0gcmFuZ2VfbWF4ICYmIHJhbmdlX21heCAtIHJhbmdlX21pbiA8IHNpemVvZihiaXRzKSAt IDEpOworLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpCistICAgICAgICBwb3NpdGlvbiA9IGdl dF9iaXRzX2NvdW50KGdiYyk7CisrICAgIENCU19UUkFDRV9SRUFEX1NUQVJUKCk7CisrCisrICAg IGF2X2Fzc2VydDAocmFuZ2VfbWluIDw9IHJhbmdlX21heCAmJiByYW5nZV9tYXggLSByYW5nZV9t aW4gPCAzMik7CisgCistICAgIGZvciAoaSA9IDAsIHZhbHVlID0gcmFuZ2VfbWluOyB2YWx1ZSA8 IHJhbmdlX21heDspIHsKKysgICAgZm9yICh2YWx1ZSA9IHJhbmdlX21pbjsgdmFsdWUgPCByYW5n ZV9tYXg7KSB7CisgICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYmMpIDwgMSkgeworICAgICAg ICAgICAgIGF2X2xvZyhjdHgtPmxvZ19jdHgsIEFWX0xPR19FUlJPUiwgIkludmFsaWQgaW5jcmVt ZW50IHZhbHVlIGF0ICIKKyAgICAgICAgICAgICAgICAgICAgIiVzOiBiaXRzdHJlYW0gZW5kZWQu XG4iLCBuYW1lKTsKKyAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAg ICAgICAgIH0KKy0gICAgICAgIGlmIChnZXRfYml0czEoZ2JjKSkgeworLSAgICAgICAgICAgIGJp dHNbaSsrXSA9ICcxJzsKKysgICAgICAgIGlmIChnZXRfYml0czEoZ2JjKSkKKyAgICAgICAgICAg ICArK3ZhbHVlOworLSAgICAgICAgfSBlbHNlIHsKKy0gICAgICAgICAgICBiaXRzW2krK10gPSAn MCc7CisrICAgICAgICBlbHNlCisgICAgICAgICAgICAgYnJlYWs7CistICAgICAgICB9CisgICAg IH0KKyAKKy0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKSB7CistICAgICAgICBiaXRzW2ldID0g MDsKKy0gICAgICAgIGZmX2Nic190cmFjZV9zeW50YXhfZWxlbWVudChjdHgsIHBvc2l0aW9uLAor LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIE5VTEwsIGJpdHMsIHZh bHVlKTsKKy0gICAgfQorKyAgICBDQlNfVFJBQ0VfUkVBRF9FTkRfTk9fU1VCU0NSSVBUUygpOwor IAorICAgICAqd3JpdGVfdG8gPSB2YWx1ZTsKKyAgICAgcmV0dXJuIDA7CitAQCAtMzQ5LDYgKzI3 Niw4IEBAIHN0YXRpYyBpbnQgY2JzX2F2MV93cml0ZV9pbmNyZW1lbnQoQ29kZWRCaXRzdHJlYW1D b250ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBiCisgeworICAgICBpbnQgbGVuOworIAorKyAg ICBDQlNfVFJBQ0VfV1JJVEVfU1RBUlQoKTsKKysKKyAgICAgYXZfYXNzZXJ0MChyYW5nZV9taW4g PD0gcmFuZ2VfbWF4ICYmIHJhbmdlX21heCAtIHJhbmdlX21pbiA8IDMyKTsKKyAgICAgaWYgKHZh bHVlIDwgcmFuZ2VfbWluIHx8IHZhbHVlID4gcmFuZ2VfbWF4KSB7CisgICAgICAgICBhdl9sb2co Y3R4LT5sb2dfY3R4LCBBVl9MT0dfRVJST1IsICIlcyBvdXQgb2YgcmFuZ2U6ICIKK0BAIC0zNjQs MjMgKzI5MywxMSBAQCBzdGF0aWMgaW50IGNic19hdjFfd3JpdGVfaW5jcmVtZW50KENvZGVkQml0 c3RyZWFtQ29udGV4dCAqY3R4LCBQdXRCaXRDb250ZXh0ICpwYgorICAgICBpZiAocHV0X2JpdHNf bGVmdChwYmMpIDwgbGVuKQorICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PU1BDKTsKKyAKKy0g ICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKSB7CistICAgICAgICBjaGFyIGJpdHNbMzNdOworLSAg ICAgICAgaW50IGk7CistICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKy0gICAg ICAgICAgICBpZiAocmFuZ2VfbWluICsgaSA9PSB2YWx1ZSkKKy0gICAgICAgICAgICAgICAgYml0 c1tpXSA9ICcwJzsKKy0gICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgIGJpdHNbaV0g PSAnMSc7CistICAgICAgICB9CistICAgICAgICBiaXRzW2ldID0gMDsKKy0gICAgICAgIGZmX2Ni c190cmFjZV9zeW50YXhfZWxlbWVudChjdHgsIHB1dF9iaXRzX2NvdW50KHBiYyksCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgTlVMTCwgYml0cywgdmFsdWUpOwor LSAgICB9CistCisgICAgIGlmIChsZW4gPiAwKQorICAgICAgICAgcHV0X2JpdHMocGJjLCBsZW4s ICgxIDw8IGxlbikgLSAxIC0gKHZhbHVlICE9IHJhbmdlX21heCkpOworIAorKyAgICBDQlNfVFJB Q0VfV1JJVEVfRU5EX05PX1NVQlNDUklQVFMoKTsKKysKKyAgICAgcmV0dXJuIDA7CisgfQorIAor QEAgLTM4OCwxMiArMzA1LDEwIEBAIHN0YXRpYyBpbnQgY2JzX2F2MV9yZWFkX3N1YmV4cChDb2Rl ZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgR2V0Qml0Q29udGV4dCAqZ2JjLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCByYW5nZV9tYXgsIGNvbnN0IGNoYXIgKm5hbWUs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCAqc3Vic2NyaXB0cywg dWludDMyX3QgKndyaXRlX3RvKQorIHsKKy0gICAgdWludDMyX3QgdmFsdWU7CistICAgIGludCBw b3NpdGlvbiwgZXJyOworLSAgICB1aW50MzJfdCBtYXhfbGVuLCBsZW4sIHJhbmdlX29mZnNldCwg cmFuZ2VfYml0czsKKysgICAgdWludDMyX3QgdmFsdWUsIG1heF9sZW4sIGxlbiwgcmFuZ2Vfb2Zm c2V0LCByYW5nZV9iaXRzOworKyAgICBpbnQgZXJyOworIAorLSAgICBpZiAoY3R4LT50cmFjZV9l bmFibGUpCistICAgICAgICBwb3NpdGlvbiA9IGdldF9iaXRzX2NvdW50KGdiYyk7CisrICAgIENC U19UUkFDRV9SRUFEX1NUQVJUKCk7CisgCisgICAgIGF2X2Fzc2VydDAocmFuZ2VfbWF4ID4gMCk7 CisgICAgIG1heF9sZW4gPSBhdl9sb2cyKHJhbmdlX21heCAtIDEpIC0gMzsKK0BAIC00MTIsOSAr MzI3LDggQEAgc3RhdGljIGludCBjYnNfYXYxX3JlYWRfc3ViZXhwKENvZGVkQml0c3RyZWFtQ29u dGV4dCAqY3R4LCBHZXRCaXRDb250ZXh0ICpnYmMsCisgICAgIH0KKyAKKyAgICAgaWYgKGxlbiA8 IG1heF9sZW4pIHsKKy0gICAgICAgIGVyciA9IGZmX2Nic19yZWFkX3Vuc2lnbmVkKGN0eCwgZ2Jj LCByYW5nZV9iaXRzLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1YmV4 cF9iaXRzIiwgTlVMTCwgJnZhbHVlLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMCwgTUFYX1VJTlRfQklUUyhyYW5nZV9iaXRzKSk7CisrICAgICAgICBlcnIgPSBmZl9jYnNf cmVhZF9zaW1wbGVfdW5zaWduZWQoY3R4LCBnYmMsIHJhbmdlX2JpdHMsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1YmV4cF9iaXRzIiwgJnZhbHVlKTsKKyAg ICAgICAgIGlmIChlcnIgPCAwKQorICAgICAgICAgICAgIHJldHVybiBlcnI7CisgCitAQCAtNDI2 LDkgKzM0MCw3IEBAIHN0YXRpYyBpbnQgY2JzX2F2MV9yZWFkX3N1YmV4cChDb2RlZEJpdHN0cmVh bUNvbnRleHQgKmN0eCwgR2V0Qml0Q29udGV4dCAqZ2JjLAorICAgICB9CisgICAgIHZhbHVlICs9 IHJhbmdlX29mZnNldDsKKyAKKy0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKQorLSAgICAgICAg ZmZfY2JzX3RyYWNlX3N5bnRheF9lbGVtZW50KGN0eCwgcG9zaXRpb24sCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgc3Vic2NyaXB0cywgIiIsIHZhbHVlKTsKKysg ICAgQ0JTX1RSQUNFX1JFQURfRU5EX1ZBTFVFX09OTFkoKTsKKyAKKyAgICAgKndyaXRlX3RvID0g dmFsdWU7CisgICAgIHJldHVybiBlcnI7CitAQCAtNDM4LDkgKzM1MCwxMSBAQCBzdGF0aWMgaW50 IGNic19hdjFfd3JpdGVfc3ViZXhwKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBQdXRCaXRD b250ZXh0ICpwYmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBy YW5nZV9tYXgsIGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBpbnQgKnN1YnNjcmlwdHMsIHVpbnQzMl90IHZhbHVlKQorIHsKKy0gICAgaW50 IHBvc2l0aW9uLCBlcnI7CisrICAgIGludCBlcnI7CisgICAgIHVpbnQzMl90IG1heF9sZW4sIGxl biwgcmFuZ2Vfb2Zmc2V0LCByYW5nZV9iaXRzOworIAorKyAgICBDQlNfVFJBQ0VfV1JJVEVfU1RB UlQoKTsKKysKKyAgICAgaWYgKHZhbHVlID4gcmFuZ2VfbWF4KSB7CisgICAgICAgICBhdl9sb2co Y3R4LT5sb2dfY3R4LCBBVl9MT0dfRVJST1IsICIlcyBvdXQgb2YgcmFuZ2U6ICIKKyAgICAgICAg ICAgICAgICAiJSJQUkl1MzIiLCBidXQgbXVzdCBiZSBpbiBbMCwlIlBSSXUzMiJdLlxuIiwKK0BA IC00NDgsOSArMzYyLDYgQEAgc3RhdGljIGludCBjYnNfYXYxX3dyaXRlX3N1YmV4cChDb2RlZEJp dHN0cmVhbUNvbnRleHQgKmN0eCwgUHV0Qml0Q29udGV4dCAqcGJjLAorICAgICAgICAgcmV0dXJu IEFWRVJST1JfSU5WQUxJRERBVEE7CisgICAgIH0KKyAKKy0gICAgaWYgKGN0eC0+dHJhY2VfZW5h YmxlKQorLSAgICAgICAgcG9zaXRpb24gPSBwdXRfYml0c19jb3VudChwYmMpOworLQorICAgICBh dl9hc3NlcnQwKHJhbmdlX21heCA+IDApOworICAgICBtYXhfbGVuID0gYXZfbG9nMihyYW5nZV9t YXggLSAxKSAtIDM7CisgCitAQCAtNDc2LDEwICszODcsOSBAQCBzdGF0aWMgaW50IGNic19hdjFf d3JpdGVfc3ViZXhwKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBQdXRCaXRDb250ZXh0ICpw YmMsCisgICAgICAgICByZXR1cm4gZXJyOworIAorICAgICBpZiAobGVuIDwgbWF4X2xlbikgewor LSAgICAgICAgZXJyID0gZmZfY2JzX3dyaXRlX3Vuc2lnbmVkKGN0eCwgcGJjLCByYW5nZV9iaXRz LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdWJleHBfYml0cyIsIE5V TEwsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgLSByYW5nZV9v ZmZzZXQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgTUFYX1VJTlRf QklUUyhyYW5nZV9iaXRzKSk7CisrICAgICAgICBlcnIgPSBmZl9jYnNfd3JpdGVfc2ltcGxlX3Vu c2lnbmVkKGN0eCwgcGJjLCByYW5nZV9iaXRzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAic3ViZXhwX2JpdHMiLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB2YWx1ZSAtIHJhbmdlX29mZnNldCk7CisgICAgICAgICBpZiAo ZXJyIDwgMCkKKyAgICAgICAgICAgICByZXR1cm4gZXJyOworIAorQEAgLTQ5MSw5ICs0MDEsNyBA QCBzdGF0aWMgaW50IGNic19hdjFfd3JpdGVfc3ViZXhwKENvZGVkQml0c3RyZWFtQ29udGV4dCAq Y3R4LCBQdXRCaXRDb250ZXh0ICpwYmMsCisgICAgICAgICAgICAgcmV0dXJuIGVycjsKKyAgICAg fQorIAorLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpCistICAgICAgICBmZl9jYnNfdHJhY2Vf c3ludGF4X2VsZW1lbnQoY3R4LCBwb3NpdGlvbiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBuYW1lLCBzdWJzY3JpcHRzLCAiIiwgdmFsdWUpOworKyAgICBDQlNfVFJBQ0Vf V1JJVEVfRU5EX1ZBTFVFX09OTFkoKTsKKyAKKyAgICAgcmV0dXJuIGVycjsKKyB9CitAQCAtNTQ2 LDggKzQ1NCw2IEBAIHN0YXRpYyBzaXplX3QgY2JzX2F2MV9nZXRfcGF5bG9hZF9ieXRlc19sZWZ0 KEdldEJpdENvbnRleHQgKmdiYykKKyAKKyAjZGVmaW5lIFNVQlNDUklQVFMoc3VicywgLi4uKSAo c3VicyA+IDAgPyAoKGludFtzdWJzICsgMV0peyBzdWJzLCBfX1ZBX0FSR1NfXyB9KSA6IE5VTEwp CisgCistI2RlZmluZSBmYih3aWR0aCwgbmFtZSkgXAorLSAgICAgICAgeGYod2lkdGgsIG5hbWUs IGN1cnJlbnQtPm5hbWUsIDAsIE1BWF9VSU5UX0JJVFMod2lkdGgpLCAwLCApCisgI2RlZmluZSBm Yyh3aWR0aCwgbmFtZSwgcmFuZ2VfbWluLCByYW5nZV9tYXgpIFwKKyAgICAgICAgIHhmKHdpZHRo LCBuYW1lLCBjdXJyZW50LT5uYW1lLCByYW5nZV9taW4sIHJhbmdlX21heCwgMCwgKQorICNkZWZp bmUgZmxhZyhuYW1lKSBmYigxLCBuYW1lKQorQEAgLTU3Myw2ICs0NzksMTMgQEAgc3RhdGljIHNp emVfdCBjYnNfYXYxX2dldF9wYXlsb2FkX2J5dGVzX2xlZnQoR2V0Qml0Q29udGV4dCAqZ2JjKQor ICNkZWZpbmUgUkVBRFdSSVRFIHJlYWQKKyAjZGVmaW5lIFJXQ29udGV4dCBHZXRCaXRDb250ZXh0 CisgCisrI2RlZmluZSBmYih3aWR0aCwgbmFtZSkgZG8geyBcCisrICAgICAgICB1aW50MzJfdCB2 YWx1ZTsgXAorKyAgICAgICAgQ0hFQ0soZmZfY2JzX3JlYWRfc2ltcGxlX3Vuc2lnbmVkKGN0eCwg cncsIHdpZHRoLCBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg I25hbWUsICZ2YWx1ZSkpOyBcCisrICAgICAgICBjdXJyZW50LT5uYW1lID0gdmFsdWU7IFwKKysg ICAgfSB3aGlsZSAoMCkKKysKKyAjZGVmaW5lIHhmKHdpZHRoLCBuYW1lLCB2YXIsIHJhbmdlX21p biwgcmFuZ2VfbWF4LCBzdWJzLCAuLi4pIGRvIHsgXAorICAgICAgICAgdWludDMyX3QgdmFsdWU7 IFwKKyAgICAgICAgIENIRUNLKGZmX2Nic19yZWFkX3Vuc2lnbmVkKGN0eCwgcncsIHdpZHRoLCAj bmFtZSwgXAorQEAgLTY0NSw2ICs1NTgsNyBAQCBzdGF0aWMgc2l6ZV90IGNic19hdjFfZ2V0X3Bh eWxvYWRfYnl0ZXNfbGVmdChHZXRCaXRDb250ZXh0ICpnYmMpCisgI3VuZGVmIFJFQUQKKyAjdW5k ZWYgUkVBRFdSSVRFCisgI3VuZGVmIFJXQ29udGV4dAorKyN1bmRlZiBmYgorICN1bmRlZiB4Zgor ICN1bmRlZiB4c3UKKyAjdW5kZWYgdXZsYworQEAgLTY2MSw2ICs1NzUsMTEgQEAgc3RhdGljIHNp emVfdCBjYnNfYXYxX2dldF9wYXlsb2FkX2J5dGVzX2xlZnQoR2V0Qml0Q29udGV4dCAqZ2JjKQor ICNkZWZpbmUgUkVBRFdSSVRFIHdyaXRlCisgI2RlZmluZSBSV0NvbnRleHQgUHV0Qml0Q29udGV4 dAorIAorKyNkZWZpbmUgZmIod2lkdGgsIG5hbWUpIGRvIHsgXAorKyAgICAgICAgQ0hFQ0soZmZf Y2JzX3dyaXRlX3NpbXBsZV91bnNpZ25lZChjdHgsIHJ3LCB3aWR0aCwgI25hbWUsIFwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudC0+bmFtZSkpOyBc CisrICAgIH0gd2hpbGUgKDApCisrCisgI2RlZmluZSB4Zih3aWR0aCwgbmFtZSwgdmFyLCByYW5n ZV9taW4sIHJhbmdlX21heCwgc3VicywgLi4uKSBkbyB7IFwKKyAgICAgICAgIENIRUNLKGZmX2Ni c193cml0ZV91bnNpZ25lZChjdHgsIHJ3LCB3aWR0aCwgI25hbWUsIFwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBTVUJTQ1JJUFRTKHN1YnMsIF9fVkFfQVJHU19fKSwgXAor QEAgLTcwMyw3ICs2MjIsNyBAQCBzdGF0aWMgc2l6ZV90IGNic19hdjFfZ2V0X3BheWxvYWRfYnl0 ZXNfbGVmdChHZXRCaXRDb250ZXh0ICpnYmMpCisgICAgIH0gd2hpbGUgKDApCisgCisgI2RlZmlu ZSBsZWIxMjgobmFtZSkgZG8geyBcCistICAgICAgICBDSEVDSyhjYnNfYXYxX3dyaXRlX2xlYjEy OChjdHgsIHJ3LCAjbmFtZSwgY3VycmVudC0+bmFtZSkpOyBcCisrICAgICAgICBDSEVDSyhjYnNf YXYxX3dyaXRlX2xlYjEyOChjdHgsIHJ3LCAjbmFtZSwgY3VycmVudC0+bmFtZSwgMCkpOyBcCisg ICAgIH0gd2hpbGUgKDApCisgCisgI2RlZmluZSBpbmZlcihuYW1lLCB2YWx1ZSkgZG8geyBcCitA QCAtNzIzLDYgKzY0Miw3IEBAIHN0YXRpYyBzaXplX3QgY2JzX2F2MV9nZXRfcGF5bG9hZF9ieXRl c19sZWZ0KEdldEJpdENvbnRleHQgKmdiYykKKyAjdW5kZWYgV1JJVEUKKyAjdW5kZWYgUkVBRFdS SVRFCisgI3VuZGVmIFJXQ29udGV4dAorKyN1bmRlZiBmYgorICN1bmRlZiB4ZgorICN1bmRlZiB4 c3UKKyAjdW5kZWYgdXZsYworQEAgLTEwODYsOSArMTAwNiwxNCBAQCBzdGF0aWMgaW50IGNic19h djFfd3JpdGVfb2J1KENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LAorIAorICAgICBpZiAob2J1 LT5oZWFkZXIub2J1X2hhc19zaXplX2ZpZWxkKSB7CisgICAgICAgICBwYmNfdG1wID0gKnBiYzsK Ky0gICAgICAgIC8vIEFkZCBzcGFjZSBmb3IgdGhlIHNpemUgZmllbGQgdG8gZmlsbCBsYXRlci4K Ky0gICAgICAgIHB1dF9iaXRzMzIocGJjLCAwKTsKKy0gICAgICAgIHB1dF9iaXRzMzIocGJjLCAw KTsKKysgICAgICAgIGlmIChvYnUtPm9idV9zaXplX2J5dGVfbGVuKSB7CisrICAgICAgICAgICAg Zm9yIChpbnQgaSA9IDA7IGkgPCBvYnUtPm9idV9zaXplX2J5dGVfbGVuOyBpKyspCisrICAgICAg ICAgICAgICAgIHB1dF9iaXRzKHBiYywgOCwgMCk7CisrICAgICAgICB9IGVsc2UgeworKyAgICAg ICAgICAgIC8vIEFkZCBzcGFjZSBmb3IgdGhlIHNpemUgZmllbGQgdG8gZmlsbCBsYXRlci4KKysg ICAgICAgICAgICBwdXRfYml0czMyKHBiYywgMCk7CisrICAgICAgICAgICAgcHV0X2JpdHMzMihw YmMsIDApOworKyAgICAgICAgfQorICAgICB9CisgCisgICAgIHRkID0gTlVMTDsKK0BAIC0xMjA4 LDcgKzExMzMsNyBAQCBzdGF0aWMgaW50IGNic19hdjFfd3JpdGVfb2J1KENvZGVkQml0c3RyZWFt Q29udGV4dCAqY3R4LAorICAgICBlbmRfcG9zICAgLz0gODsKKyAKKyAgICAgKnBiYyA9IHBiY190 bXA7CistICAgIGVyciA9IGNic19hdjFfd3JpdGVfbGViMTI4KGN0eCwgcGJjLCAib2J1X3NpemUi LCBvYnUtPm9idV9zaXplKTsKKysgICAgZXJyID0gY2JzX2F2MV93cml0ZV9sZWIxMjgoY3R4LCBw YmMsICJvYnVfc2l6ZSIsIG9idS0+b2J1X3NpemUsIG9idS0+b2J1X3NpemVfYnl0ZV9sZW4pOwor ICAgICBpZiAoZXJyIDwgMCkKKyAgICAgICAgIGdvdG8gZXJyb3I7CisgCitAQCAtMTIyNSw4ICsx MTUwLDExIEBAIHN0YXRpYyBpbnQgY2JzX2F2MV93cml0ZV9vYnUoQ29kZWRCaXRzdHJlYW1Db250 ZXh0ICpjdHgsCisgICAgIH0KKyAKKyAgICAgaWYgKG9idS0+b2J1X3NpemUgPiAwKSB7CistICAg ICAgICBtZW1tb3ZlKHBiYy0+YnVmICsgZGF0YV9wb3MsCistICAgICAgICAgICAgICAgIHBiYy0+ YnVmICsgc3RhcnRfcG9zLCBoZWFkZXJfc2l6ZSk7CisrICAgICAgICBpZiAoIW9idS0+b2J1X3Np emVfYnl0ZV9sZW4pIHsKKysgICAgICAgICAgICBvYnUtPm9idV9zaXplX2J5dGVfbGVuID0gc3Rh cnRfcG9zIC0gZGF0YV9wb3M7CisrICAgICAgICAgICAgbWVtbW92ZShwYmMtPmJ1ZiArIGRhdGFf cG9zLAorKyAgICAgICAgICAgICAgICAgICAgcGJjLT5idWYgKyBzdGFydF9wb3MsIGhlYWRlcl9z aXplKTsKKysgICAgICAgIH0KKyAgICAgICAgIHNraXBfcHV0X2J5dGVzKHBiYywgaGVhZGVyX3Np emUpOworIAorICAgICAgICAgaWYgKHRkKSB7CitkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9jYnNf YXYxLmggYi9saWJhdmNvZGVjL2Nic19hdjEuaAoraW5kZXggMWZjODBkYy4uYzVkYWUzYyAxMDA2 NDQKKy0tLSBhL2xpYmF2Y29kZWMvY2JzX2F2MS5oCisrKysgYi9saWJhdmNvZGVjL2Nic19hdjEu aAorQEAgLTM5Miw2ICszOTIsNyBAQCB0eXBlZGVmIHN0cnVjdCBBVjFSYXdPQlUgeworICAgICBB VjFSYXdPQlVIZWFkZXIgaGVhZGVyOworIAorICAgICBzaXplX3Qgb2J1X3NpemU7CisrICAgIHVp bnQ4X3Qgb2J1X3NpemVfYnl0ZV9sZW47CisgCisgICAgIHVuaW9uIHsKKyAgICAgICAgIEFWMVJh d1NlcXVlbmNlSGVhZGVyIHNlcXVlbmNlX2hlYWRlcjsKK2RpZmYgLS1naXQgYS9saWJhdmNvZGVj L2Nic19hdjFfc3ludGF4X3RlbXBsYXRlLmMgYi9saWJhdmNvZGVjL2Nic19hdjFfc3ludGF4X3Rl bXBsYXRlLmMKK2luZGV4IGU5NTkyNWEuLmNmMmUyNTkgMTAwNjQ0CistLS0gYS9saWJhdmNvZGVj L2Nic19hdjFfc3ludGF4X3RlbXBsYXRlLmMKKysrKyBiL2xpYmF2Y29kZWMvY2JzX2F2MV9zeW50 YXhfdGVtcGxhdGUuYworQEAgLTEwMTgsOSArMTAxOCw5IEBAIHN0YXRpYyBpbnQgRlVOQyhyZWFk X3R4X21vZGUpKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBSV0NvbnRleHQgKnJ3LAorICAg ICBpbnQgZXJyOworIAorICAgICBpZiAocHJpdi0+Y29kZWRfbG9zc2xlc3MpCistICAgICAgICBp bmZlcih0eF9tb2RlLCAwKTsKKysgICAgICAgIGluZmVyKHR4X21vZGUsIEFWMV9PTkxZXzRYNCk7 CisgICAgIGVsc2UKKy0gICAgICAgIGluY3JlbWVudCh0eF9tb2RlLCAxLCAyKTsKKysgICAgICAg IGluY3JlbWVudCh0eF9tb2RlLCBBVjFfVFhfTU9ERV9MQVJHRVNULCBBVjFfVFhfTU9ERV9TRUxF Q1QpOworIAorICAgICByZXR1cm4gMDsKKyB9CitkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9jYnNf YnNmLmMgYi9saWJhdmNvZGVjL2Nic19ic2YuYworaW5kZXggMDY5ZjZlOS4uYjI1Mjg1NCAxMDA2 NDQKKy0tLSBhL2xpYmF2Y29kZWMvY2JzX2JzZi5jCisrKysgYi9saWJhdmNvZGVjL2Nic19ic2Yu YworQEAgLTEyMyw2ICsxMjMsMTEgQEAgaW50IGZmX2Nic19ic2ZfZ2VuZXJpY19pbml0KEFWQlNG Q29udGV4dCAqYnNmLCBjb25zdCBDQlNCU0ZUeXBlICp0eXBlKQorICAgICBpZiAoZXJyIDwgMCkK KyAgICAgICAgIHJldHVybiBlcnI7CisgCisrICAgIGN0eC0+b3V0cHV0LT50cmFjZV9lbmFibGUg PSAxOworKyAgICBjdHgtPm91dHB1dC0+dHJhY2VfbGV2ZWwgID0gQVZfTE9HX1RSQUNFOworKyAg ICBjdHgtPm91dHB1dC0+dHJhY2VfY29udGV4dCA9IGN0eC0+b3V0cHV0OworKyAgICBjdHgtPm91 dHB1dC0+dHJhY2Vfd3JpdGVfY2FsbGJhY2sgPSBmZl9jYnNfdHJhY2Vfd3JpdGVfbG9nOworKwor ICAgICBpZiAoYnNmLT5wYXJfaW4tPmV4dHJhZGF0YSkgeworICAgICAgICAgZXJyID0gZmZfY2Jz X3JlYWRfZXh0cmFkYXRhKGN0eC0+aW5wdXQsIGZyYWcsIGJzZi0+cGFyX2luKTsKKyAgICAgICAg IGlmIChlcnIgPCAwKSB7CitkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9jYnNfaDI2NDUuYyBiL2xp YmF2Y29kZWMvY2JzX2gyNjQ1LmMKK2luZGV4IDgwZTQ4ODIuLjM1NWY0ZDUgMTAwNjQ0CistLS0g YS9saWJhdmNvZGVjL2Nic19oMjY0NS5jCisrKysgYi9saWJhdmNvZGVjL2Nic19oMjY0NS5jCitA QCAtMzQsNDEgKzM0LDM4IEBAIHN0YXRpYyBpbnQgY2JzX3JlYWRfdWVfZ29sb21iKENvZGVkQml0 c3RyZWFtQ29udGV4dCAqY3R4LCBHZXRCaXRDb250ZXh0ICpnYmMsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdWludDMyX3QgKndyaXRlX3RvLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVpbnQzMl90IHJhbmdlX21pbiwgdWludDMyX3QgcmFuZ2VfbWF4KQorIHsKKy0g ICAgdWludDMyX3QgdmFsdWU7CistICAgIGludCBwb3NpdGlvbiwgaSwgajsKKy0gICAgdW5zaWdu ZWQgaW50IGs7CistICAgIGNoYXIgYml0c1s2NV07CisrICAgIHVpbnQzMl90IGxlYWRpbmdfYml0 cywgdmFsdWU7CisrICAgIGludCBtYXhfbGVuZ3RoLCBsZWFkaW5nX3plcm9lczsKKyAKKy0gICAg cG9zaXRpb24gPSBnZXRfYml0c19jb3VudChnYmMpOworKyAgICBDQlNfVFJBQ0VfUkVBRF9TVEFS VCgpOworIAorLSAgICBmb3IgKGkgPSAwOyBpIDwgMzI7IGkrKykgeworLSAgICAgICAgaWYgKGdl dF9iaXRzX2xlZnQoZ2JjKSA8IGkgKyAxKSB7CisrICAgIG1heF9sZW5ndGggPSBGRk1JTihnZXRf Yml0c19sZWZ0KGdiYyksIDMyKTsKKysKKysgICAgbGVhZGluZ19iaXRzID0gc2hvd19iaXRzX2xv bmcoZ2JjLCBtYXhfbGVuZ3RoKTsKKysgICAgaWYgKGxlYWRpbmdfYml0cyA9PSAwKSB7CisrICAg ICAgICBpZiAobWF4X2xlbmd0aCA+PSAzMikgeworKyAgICAgICAgICAgIGF2X2xvZyhjdHgtPmxv Z19jdHgsIEFWX0xPR19FUlJPUiwgIkludmFsaWQgdWUtZ29sb21iIGNvZGUgYXQgIgorKyAgICAg ICAgICAgICAgICAgICAiJXM6IG1vcmUgdGhhbiAzMSB6ZXJvZXMuXG4iLCBuYW1lKTsKKysgICAg ICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKysgICAgICAgIH0gZWxzZSB7Cisg ICAgICAgICAgICAgYXZfbG9nKGN0eC0+bG9nX2N0eCwgQVZfTE9HX0VSUk9SLCAiSW52YWxpZCB1 ZS1nb2xvbWIgY29kZSBhdCAiCisgICAgICAgICAgICAgICAgICAgICIlczogYml0c3RyZWFtIGVu ZGVkLlxuIiwgbmFtZSk7CisgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7 CisgICAgICAgICB9CistICAgICAgICBrID0gZ2V0X2JpdHMxKGdiYyk7CistICAgICAgICBiaXRz W2ldID0gayA/ICcxJyA6ICcwJzsKKy0gICAgICAgIGlmIChrKQorLSAgICAgICAgICAgIGJyZWFr OworICAgICB9CistICAgIGlmIChpID49IDMyKSB7CisrCisrICAgIGxlYWRpbmdfemVyb2VzID0g bWF4X2xlbmd0aCAtIDEgLSBhdl9sb2cyKGxlYWRpbmdfYml0cyk7CisrICAgIHNraXBfYml0c19s b25nKGdiYywgbGVhZGluZ196ZXJvZXMpOworKworKyAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYmMp IDwgbGVhZGluZ196ZXJvZXMgKyAxKSB7CisgICAgICAgICBhdl9sb2coY3R4LT5sb2dfY3R4LCBB Vl9MT0dfRVJST1IsICJJbnZhbGlkIHVlLWdvbG9tYiBjb2RlIGF0ICIKKy0gICAgICAgICAgICAg ICAiJXM6IG1vcmUgdGhhbiAzMSB6ZXJvZXMuXG4iLCBuYW1lKTsKKysgICAgICAgICAgICAgICAi JXM6IGJpdHN0cmVhbSBlbmRlZC5cbiIsIG5hbWUpOworICAgICAgICAgcmV0dXJuIEFWRVJST1Jf SU5WQUxJRERBVEE7CisgICAgIH0KKy0gICAgdmFsdWUgPSAxOworLSAgICBmb3IgKGogPSAwOyBq IDwgaTsgaisrKSB7CistICAgICAgICBrID0gZ2V0X2JpdHMxKGdiYyk7CistICAgICAgICBiaXRz W2kgKyBqICsgMV0gPSBrID8gJzEnIDogJzAnOworLSAgICAgICAgdmFsdWUgPSB2YWx1ZSA8PCAx IHwgazsKKy0gICAgfQorLSAgICBiaXRzW2kgKyBqICsgMV0gPSAwOworLSAgICAtLXZhbHVlOwor IAorLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpCistICAgICAgICBmZl9jYnNfdHJhY2Vfc3lu dGF4X2VsZW1lbnQoY3R4LCBwb3NpdGlvbiwgbmFtZSwgc3Vic2NyaXB0cywKKy0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRzLCB2YWx1ZSk7CisrICAgIHZhbHVlID0gZ2V0 X2JpdHNfbG9uZyhnYmMsIGxlYWRpbmdfemVyb2VzICsgMSkgLSAxOworKworKyAgICBDQlNfVFJB Q0VfUkVBRF9FTkQoKTsKKyAKKyAgICAgaWYgKHZhbHVlIDwgcmFuZ2VfbWluIHx8IHZhbHVlID4g cmFuZ2VfbWF4KSB7CisgICAgICAgICBhdl9sb2coY3R4LT5sb2dfY3R4LCBBVl9MT0dfRVJST1Is ICIlcyBvdXQgb2YgcmFuZ2U6ICIKK0BAIC04Niw0NSArODMsNDQgQEAgc3RhdGljIGludCBjYnNf cmVhZF9zZV9nb2xvbWIoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIEdldEJpdENvbnRleHQg KmdiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90ICp3cml0ZV90bywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHJhbmdlX21pbiwgaW50MzJf dCByYW5nZV9tYXgpCisgeworKyAgICB1aW50MzJfdCBsZWFkaW5nX2JpdHMsIHVuc2lnbmVkX3Zh bHVlOworKyAgICBpbnQgbWF4X2xlbmd0aCwgbGVhZGluZ196ZXJvZXM7CisgICAgIGludDMyX3Qg dmFsdWU7CistICAgIGludCBwb3NpdGlvbiwgaSwgajsKKy0gICAgdW5zaWduZWQgaW50IGs7Cist ICAgIHVpbnQzMl90IHY7CistICAgIGNoYXIgYml0c1s2NV07CisgCistICAgIHBvc2l0aW9uID0g Z2V0X2JpdHNfY291bnQoZ2JjKTsKKysgICAgQ0JTX1RSQUNFX1JFQURfU1RBUlQoKTsKKyAKKy0g ICAgZm9yIChpID0gMDsgaSA8IDMyOyBpKyspIHsKKy0gICAgICAgIGlmIChnZXRfYml0c19sZWZ0 KGdiYykgPCBpICsgMSkgeworKyAgICBtYXhfbGVuZ3RoID0gRkZNSU4oZ2V0X2JpdHNfbGVmdChn YmMpLCAzMik7CisrCisrICAgIGxlYWRpbmdfYml0cyA9IHNob3dfYml0c19sb25nKGdiYywgbWF4 X2xlbmd0aCk7CisrICAgIGlmIChsZWFkaW5nX2JpdHMgPT0gMCkgeworKyAgICAgICAgaWYgKG1h eF9sZW5ndGggPj0gMzIpIHsKKysgICAgICAgICAgICBhdl9sb2coY3R4LT5sb2dfY3R4LCBBVl9M T0dfRVJST1IsICJJbnZhbGlkIHNlLWdvbG9tYiBjb2RlIGF0ICIKKysgICAgICAgICAgICAgICAg ICAgIiVzOiBtb3JlIHRoYW4gMzEgemVyb2VzLlxuIiwgbmFtZSk7CisrICAgICAgICAgICAgcmV0 dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisrICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg IGF2X2xvZyhjdHgtPmxvZ19jdHgsIEFWX0xPR19FUlJPUiwgIkludmFsaWQgc2UtZ29sb21iIGNv ZGUgYXQgIgorICAgICAgICAgICAgICAgICAgICAiJXM6IGJpdHN0cmVhbSBlbmRlZC5cbiIsIG5h bWUpOworICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgICAgICAg fQorLSAgICAgICAgayA9IGdldF9iaXRzMShnYmMpOworLSAgICAgICAgYml0c1tpXSA9IGsgPyAn MScgOiAnMCc7CistICAgICAgICBpZiAoaykKKy0gICAgICAgICAgICBicmVhazsKKyAgICAgfQor LSAgICBpZiAoaSA+PSAzMikgeworKworKyAgICBsZWFkaW5nX3plcm9lcyA9IG1heF9sZW5ndGgg LSAxIC0gYXZfbG9nMihsZWFkaW5nX2JpdHMpOworKyAgICBza2lwX2JpdHNfbG9uZyhnYmMsIGxl YWRpbmdfemVyb2VzKTsKKysKKysgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2JjKSA8IGxlYWRpbmdf emVyb2VzICsgMSkgeworICAgICAgICAgYXZfbG9nKGN0eC0+bG9nX2N0eCwgQVZfTE9HX0VSUk9S LCAiSW52YWxpZCBzZS1nb2xvbWIgY29kZSBhdCAiCistICAgICAgICAgICAgICAgIiVzOiBtb3Jl IHRoYW4gMzEgemVyb2VzLlxuIiwgbmFtZSk7CisrICAgICAgICAgICAgICAgIiVzOiBiaXRzdHJl YW0gZW5kZWQuXG4iLCBuYW1lKTsKKyAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRB OworICAgICB9CistICAgIHYgPSAxOworLSAgICBmb3IgKGogPSAwOyBqIDwgaTsgaisrKSB7Cist ICAgICAgICBrID0gZ2V0X2JpdHMxKGdiYyk7CistICAgICAgICBiaXRzW2kgKyBqICsgMV0gPSBr ID8gJzEnIDogJzAnOworLSAgICAgICAgdiA9IHYgPDwgMSB8IGs7CistICAgIH0KKy0gICAgYml0 c1tpICsgaiArIDFdID0gMDsKKy0gICAgaWYgKHYgJiAxKQorLSAgICAgICAgdmFsdWUgPSAtKGlu dDMyX3QpKHYgLyAyKTsKKysKKysgICAgdW5zaWduZWRfdmFsdWUgPSBnZXRfYml0c19sb25nKGdi YywgbGVhZGluZ196ZXJvZXMgKyAxKTsKKysKKysgICAgaWYgKHVuc2lnbmVkX3ZhbHVlICYgMSkK KysgICAgICAgIHZhbHVlID0gLShpbnQzMl90KSh1bnNpZ25lZF92YWx1ZSAvIDIpOworICAgICBl bHNlCistICAgICAgICB2YWx1ZSA9IHYgLyAyOworKyAgICAgICAgdmFsdWUgPSB1bnNpZ25lZF92 YWx1ZSAvIDI7CisgCistICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkKKy0gICAgICAgIGZmX2Ni c190cmFjZV9zeW50YXhfZWxlbWVudChjdHgsIHBvc2l0aW9uLCBuYW1lLCBzdWJzY3JpcHRzLAor LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdHMsIHZhbHVlKTsKKysgICAg Q0JTX1RSQUNFX1JFQURfRU5EKCk7CisgCisgICAgIGlmICh2YWx1ZSA8IHJhbmdlX21pbiB8fCB2 YWx1ZSA+IHJhbmdlX21heCkgeworICAgICAgICAgYXZfbG9nKGN0eC0+bG9nX2N0eCwgQVZfTE9H X0VSUk9SLCAiJXMgb3V0IG9mIHJhbmdlOiAiCitAQCAtMTQ0LDYgKzE0MCw4IEBAIHN0YXRpYyBp bnQgY2JzX3dyaXRlX3VlX2dvbG9tYihDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUHV0Qml0 Q29udGV4dCAqcGJjLAorIHsKKyAgICAgaW50IGxlbjsKKyAKKysgICAgQ0JTX1RSQUNFX1dSSVRF X1NUQVJUKCk7CisrCisgICAgIGlmICh2YWx1ZSA8IHJhbmdlX21pbiB8fCB2YWx1ZSA+IHJhbmdl X21heCkgeworICAgICAgICAgYXZfbG9nKGN0eC0+bG9nX2N0eCwgQVZfTE9HX0VSUk9SLCAiJXMg b3V0IG9mIHJhbmdlOiAiCisgICAgICAgICAgICAgICAgIiUiUFJJdTMyIiwgYnV0IG11c3QgYmUg aW4gWyUiUFJJdTMyIiwlIlBSSXUzMiJdLlxuIiwKK0BAIC0xNTYsMjcgKzE1NCwxNCBAQCBzdGF0 aWMgaW50IGNic193cml0ZV91ZV9nb2xvbWIoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIFB1 dEJpdENvbnRleHQgKnBiYywKKyAgICAgaWYgKHB1dF9iaXRzX2xlZnQocGJjKSA8IDIgKiBsZW4g KyAxKQorICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PU1BDKTsKKyAKKy0gICAgaWYgKGN0eC0+ dHJhY2VfZW5hYmxlKSB7CistICAgICAgICBjaGFyIGJpdHNbNjVdOworLSAgICAgICAgaW50IGk7 CistCistICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCistICAgICAgICAgICAgYml0 c1tpXSA9ICcwJzsKKy0gICAgICAgIGJpdHNbbGVuXSA9ICcxJzsKKy0gICAgICAgIGZvciAoaSA9 IDA7IGkgPCBsZW47IGkrKykKKy0gICAgICAgICAgICBiaXRzW2xlbiArIGkgKyAxXSA9ICh2YWx1 ZSArIDEpID4+IChsZW4gLSBpIC0gMSkgJiAxID8gJzEnIDogJzAnOworLSAgICAgICAgYml0c1ts ZW4gKyBsZW4gKyAxXSA9IDA7CistCistICAgICAgICBmZl9jYnNfdHJhY2Vfc3ludGF4X2VsZW1l bnQoY3R4LCBwdXRfYml0c19jb3VudChwYmMpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG5hbWUsIHN1YnNjcmlwdHMsIGJpdHMsIHZhbHVlKTsKKy0gICAgfQorLQorICAg ICBwdXRfYml0cyhwYmMsIGxlbiwgMCk7CisgICAgIGlmIChsZW4gKyAxIDwgMzIpCisgICAgICAg ICBwdXRfYml0cyhwYmMsIGxlbiArIDEsIHZhbHVlICsgMSk7CisgICAgIGVsc2UKKyAgICAgICAg IHB1dF9iaXRzMzIocGJjLCB2YWx1ZSArIDEpOworIAorKyAgICBDQlNfVFJBQ0VfV1JJVEVfRU5E KCk7CisrCisgICAgIHJldHVybiAwOworIH0KKyAKK0BAIC0xODgsNiArMTczLDggQEAgc3RhdGlj IGludCBjYnNfd3JpdGVfc2VfZ29sb21iKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBQdXRC aXRDb250ZXh0ICpwYmMsCisgICAgIGludCBsZW47CisgICAgIHVpbnQzMl90IHV2YWx1ZTsKKyAK KysgICAgQ0JTX1RSQUNFX1dSSVRFX1NUQVJUKCk7CisrCisgICAgIGlmICh2YWx1ZSA8IHJhbmdl X21pbiB8fCB2YWx1ZSA+IHJhbmdlX21heCkgeworICAgICAgICAgYXZfbG9nKGN0eC0+bG9nX2N0 eCwgQVZfTE9HX0VSUk9SLCAiJXMgb3V0IG9mIHJhbmdlOiAiCisgICAgICAgICAgICAgICAgIiUi UFJJZDMyIiwgYnV0IG11c3QgYmUgaW4gWyUiUFJJZDMyIiwlIlBSSWQzMiJdLlxuIiwKK0BAIC0y MDcsMjcgKzE5NCwxNCBAQCBzdGF0aWMgaW50IGNic193cml0ZV9zZV9nb2xvbWIoQ29kZWRCaXRz dHJlYW1Db250ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBiYywKKyAgICAgaWYgKHB1dF9iaXRz X2xlZnQocGJjKSA8IDIgKiBsZW4gKyAxKQorICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PU1BD KTsKKyAKKy0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKSB7CistICAgICAgICBjaGFyIGJpdHNb NjVdOworLSAgICAgICAgaW50IGk7CistCistICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBp KyspCistICAgICAgICAgICAgYml0c1tpXSA9ICcwJzsKKy0gICAgICAgIGJpdHNbbGVuXSA9ICcx JzsKKy0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKKy0gICAgICAgICAgICBiaXRz W2xlbiArIGkgKyAxXSA9ICh1dmFsdWUgKyAxKSA+PiAobGVuIC0gaSAtIDEpICYgMSA/ICcxJyA6 ICcwJzsKKy0gICAgICAgIGJpdHNbbGVuICsgbGVuICsgMV0gPSAwOworLQorLSAgICAgICAgZmZf Y2JzX3RyYWNlX3N5bnRheF9lbGVtZW50KGN0eCwgcHV0X2JpdHNfY291bnQocGJjKSwKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBzdWJzY3JpcHRzLCBiaXRzLCB2 YWx1ZSk7CistICAgIH0KKy0KKyAgICAgcHV0X2JpdHMocGJjLCBsZW4sIDApOworICAgICBpZiAo bGVuICsgMSA8IDMyKQorICAgICAgICAgcHV0X2JpdHMocGJjLCBsZW4gKyAxLCB1dmFsdWUgKyAx KTsKKyAgICAgZWxzZQorICAgICAgICAgcHV0X2JpdHMzMihwYmMsIHV2YWx1ZSArIDEpOworIAor KyAgICBDQlNfVFJBQ0VfV1JJVEVfRU5EKCk7CisrCisgICAgIHJldHVybiAwOworIH0KKyAKK0BA IC0yNjEsOCArMjM1LDYgQEAgc3RhdGljIGludCBjYnNfaDI2NV9wYXlsb2FkX2V4dGVuc2lvbl9w cmVzZW50KEdldEJpdENvbnRleHQgKmdiYywgdWludDMyX3QgcGF5bG8KKyAKKyAjZGVmaW5lIHUo d2lkdGgsIG5hbWUsIHJhbmdlX21pbiwgcmFuZ2VfbWF4KSBcCisgICAgICAgICB4dSh3aWR0aCwg bmFtZSwgY3VycmVudC0+bmFtZSwgcmFuZ2VfbWluLCByYW5nZV9tYXgsIDAsICkKKy0jZGVmaW5l IHViKHdpZHRoLCBuYW1lKSBcCistICAgICAgICB4dSh3aWR0aCwgbmFtZSwgY3VycmVudC0+bmFt ZSwgMCwgTUFYX1VJTlRfQklUUyh3aWR0aCksIDAsICkKKyAjZGVmaW5lIGZsYWcobmFtZSkgdWIo MSwgbmFtZSkKKyAjZGVmaW5lIHVlKG5hbWUsIHJhbmdlX21pbiwgcmFuZ2VfbWF4KSBcCisgICAg ICAgICB4dWUobmFtZSwgY3VycmVudC0+bmFtZSwgcmFuZ2VfbWluLCByYW5nZV9tYXgsIDAsICkK K0BAIC0yOTgsNiArMjcwLDEyIEBAIHN0YXRpYyBpbnQgY2JzX2gyNjVfcGF5bG9hZF9leHRlbnNp b25fcHJlc2VudChHZXRCaXRDb250ZXh0ICpnYmMsIHVpbnQzMl90IHBheWxvCisgI2RlZmluZSBS RUFEV1JJVEUgcmVhZAorICNkZWZpbmUgUldDb250ZXh0IEdldEJpdENvbnRleHQKKyAKKysjZGVm aW5lIHViKHdpZHRoLCBuYW1lKSBkbyB7IFwKKysgICAgICAgIHVpbnQzMl90IHZhbHVlOyBcCisr ICAgICAgICBDSEVDSyhmZl9jYnNfcmVhZF9zaW1wbGVfdW5zaWduZWQoY3R4LCBydywgd2lkdGgs ICNuYW1lLCBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZh bHVlKSk7IFwKKysgICAgICAgIGN1cnJlbnQtPm5hbWUgPSB2YWx1ZTsgXAorKyAgICB9IHdoaWxl ICgwKQorICNkZWZpbmUgeHUod2lkdGgsIG5hbWUsIHZhciwgcmFuZ2VfbWluLCByYW5nZV9tYXgs IHN1YnMsIC4uLikgZG8geyBcCisgICAgICAgICB1aW50MzJfdCB2YWx1ZTsgXAorICAgICAgICAg Q0hFQ0soZmZfY2JzX3JlYWRfdW5zaWduZWQoY3R4LCBydywgd2lkdGgsICNuYW1lLCBcCitAQCAt MzcyLDYgKzM1MCw3IEBAIHN0YXRpYyBpbnQgY2JzX2gyNjQ1X3JlYWRfbW9yZV9yYnNwX2RhdGEo R2V0Qml0Q29udGV4dCAqZ2JjKQorICN1bmRlZiBSRUFECisgI3VuZGVmIFJFQURXUklURQorICN1 bmRlZiBSV0NvbnRleHQKKysjdW5kZWYgdWIKKyAjdW5kZWYgeHUKKyAjdW5kZWYgeGkKKyAjdW5k ZWYgeHVlCitAQCAtMzg3LDYgKzM2NiwxMSBAQCBzdGF0aWMgaW50IGNic19oMjY0NV9yZWFkX21v cmVfcmJzcF9kYXRhKEdldEJpdENvbnRleHQgKmdiYykKKyAjZGVmaW5lIFJFQURXUklURSB3cml0 ZQorICNkZWZpbmUgUldDb250ZXh0IFB1dEJpdENvbnRleHQKKyAKKysjZGVmaW5lIHViKHdpZHRo LCBuYW1lKSBkbyB7IFwKKysgICAgICAgIHVpbnQzMl90IHZhbHVlID0gY3VycmVudC0+bmFtZTsg XAorKyAgICAgICAgQ0hFQ0soZmZfY2JzX3dyaXRlX3NpbXBsZV91bnNpZ25lZChjdHgsIHJ3LCB3 aWR0aCwgI25hbWUsIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdmFsdWUpKTsgXAorKyAgICB9IHdoaWxlICgwKQorICNkZWZpbmUgeHUod2lkdGgsIG5hbWUs IHZhciwgcmFuZ2VfbWluLCByYW5nZV9tYXgsIHN1YnMsIC4uLikgZG8geyBcCisgICAgICAgICB1 aW50MzJfdCB2YWx1ZSA9IHZhcjsgXAorICAgICAgICAgQ0hFQ0soZmZfY2JzX3dyaXRlX3Vuc2ln bmVkKGN0eCwgcncsIHdpZHRoLCAjbmFtZSwgXAorQEAgLTQ1MCw2ICs0MzQsNyBAQCBzdGF0aWMg aW50IGNic19oMjY0NV9yZWFkX21vcmVfcmJzcF9kYXRhKEdldEJpdENvbnRleHQgKmdiYykKKyAj dW5kZWYgV1JJVEUKKyAjdW5kZWYgUkVBRFdSSVRFCisgI3VuZGVmIFJXQ29udGV4dAorKyN1bmRl ZiB1YgorICN1bmRlZiB4dQorICN1bmRlZiB4aQorICN1bmRlZiB4dWUKK2RpZmYgLS1naXQgYS9s aWJhdmNvZGVjL2Nic19pbnRlcm5hbC5oIGIvbGliYXZjb2RlYy9jYnNfaW50ZXJuYWwuaAoraW5k ZXggZTU4NWM3Ny4uNjBlMzFlYiAxMDA2NDQKKy0tLSBhL2xpYmF2Y29kZWMvY2JzX2ludGVybmFs LmgKKysrKyBiL2xpYmF2Y29kZWMvY2JzX2ludGVybmFsLmgKK0BAIC0xNTEsMjQgKzE1MSwyOSBA QCB0eXBlZGVmIHN0cnVjdCBDb2RlZEJpdHN0cmVhbVR5cGUgeworIHZvaWQgZmZfY2JzX3RyYWNl X2hlYWRlcihDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgY2hhciAqbmFtZSk7CisgCistdm9pZCBmZl9jYnNfdHJhY2Vfc3ludGF4X2Vs ZW1lbnQoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIGludCBwb3NpdGlvbiwKKy0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBpbnQgKnN1 YnNjcmlwdHMsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq Yml0c3RyaW5nLCBpbnQ2NF90IHZhbHVlKTsKKy0KKyAKKyAvLyBIZWxwZXIgZnVuY3Rpb25zIGZv ciByZWFkL3dyaXRlIG9mIGNvbW1vbiBiaXRzdHJlYW0gZWxlbWVudHMsIGluY2x1ZGluZworLS8v IGdlbmVyYXRpb24gb2YgdHJhY2Ugb3V0cHV0LgorKy8vIGdlbmVyYXRpb24gb2YgdHJhY2Ugb3V0 cHV0LiBUaGUgc2ltcGxlIGZ1bmN0aW9ucyBhcmUgZXF1aXZhbGVudCB0bworKy8vIHRoZWlyIG5v bi1zaW1wbGUgY291bnRlcnBhcnRzIGV4Y2VwdCB0aGF0IHRoZWlyIHJhbmdlIGlzIHVucmVzdHJp Y3RlZAorKy8vIChpLmUuIG9ubHkgbGltaXRlZCBieSB0aGUgYW1vdW50IG9mIGJpdHMgdXNlZCkg YW5kIHRoZXkgbGFjaworKy8vIHRoZSBhYmlsaXR5IHRvIHVzZSBzdWJzY3JpcHRzLgorIAorIGlu dCBmZl9jYnNfcmVhZF91bnNpZ25lZChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgR2V0Qml0 Q29udGV4dCAqZ2JjLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGgsIGNvbnN0 IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCAqc3Vic2Ny aXB0cywgdWludDMyX3QgKndyaXRlX3RvLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50 MzJfdCByYW5nZV9taW4sIHVpbnQzMl90IHJhbmdlX21heCk7CisgCisraW50IGZmX2Nic19yZWFk X3NpbXBsZV91bnNpZ25lZChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgR2V0Qml0Q29udGV4 dCAqZ2JjLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdpZHRoLCBjb25z dCBjaGFyICpuYW1lLCB1aW50MzJfdCAqd3JpdGVfdG8pOworKworIGludCBmZl9jYnNfd3JpdGVf dW5zaWduZWQoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBiYywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3aWR0aCwgY29uc3QgY2hhciAqbmFtZSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCAqc3Vic2NyaXB0cywgdWludDMy X3QgdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCByYW5nZV9taW4s IHVpbnQzMl90IHJhbmdlX21heCk7CisgCisraW50IGZmX2Nic193cml0ZV9zaW1wbGVfdW5zaWdu ZWQoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBiYywKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGgsIGNvbnN0IGNoYXIgKm5hbWUs IHVpbnQzMl90IHZhbHVlKTsKKysKKyBpbnQgZmZfY2JzX3JlYWRfc2lnbmVkKENvZGVkQml0c3Ry ZWFtQ29udGV4dCAqY3R4LCBHZXRCaXRDb250ZXh0ICpnYmMsCisgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgd2lkdGgsIGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBpbnQgKnN1YnNjcmlwdHMsIGludDMyX3QgKndyaXRlX3RvLAorQEAgLTE5MSw2ICsx OTYsODcgQEAgaW50IGZmX2Nic193cml0ZV9zaWduZWQoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpj dHgsIFB1dEJpdENvbnRleHQgKnBiYywKKyAvLyByYW5nZV9taW4gaW4gdGhlIGFib3ZlIGZ1bmN0 aW9ucy4KKyAjZGVmaW5lIE1JTl9JTlRfQklUUyhsZW5ndGgpICgtKElOVDY0X0MoMSkgPDwgKChs ZW5ndGgpIC0gMSkpKQorIAorKworKy8vIFN0YXJ0IG9mIGEgc3ludGF4IGVsZW1lbnQgZHVyaW5n IHJlYWQgdHJhY2luZy4KKysjZGVmaW5lIENCU19UUkFDRV9SRUFEX1NUQVJUKCkgXAorKyAgICBH ZXRCaXRDb250ZXh0IHRyYWNlX3N0YXJ0OyBcCisrICAgIGRvIHsgXAorKyAgICAgICAgaWYgKGN0 eC0+dHJhY2VfZW5hYmxlKSBcCisrICAgICAgICAgICAgdHJhY2Vfc3RhcnQgPSAqZ2JjOyBcCisr ICAgIH0gd2hpbGUgKDApCisrCisrLy8gRW5kIG9mIGEgc3ludGF4IGVsZW1lbnQgZm9yIHRyYWNp bmcsIG1ha2UgY2FsbGJhY2suCisrI2RlZmluZSBDQlNfVFJBQ0VfUkVBRF9FTkQoKSBcCisrICAg IGRvIHsgXAorKyAgICAgICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKSB7IFwKKysgICAgICAgICAg ICBpbnQgc3RhcnRfcG9zaXRpb24gPSBnZXRfYml0c19jb3VudCgmdHJhY2Vfc3RhcnQpOyBcCisr ICAgICAgICAgICAgaW50IGVuZF9wb3NpdGlvbiAgID0gZ2V0X2JpdHNfY291bnQoZ2JjKTsgXAor KyAgICAgICAgICAgIGF2X2Fzc2VydDAoc3RhcnRfcG9zaXRpb24gPD0gZW5kX3Bvc2l0aW9uKTsg XAorKyAgICAgICAgICAgIGN0eC0+dHJhY2VfcmVhZF9jYWxsYmFjayhjdHgtPnRyYWNlX2NvbnRl eHQsICZ0cmFjZV9zdGFydCwgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBlbmRfcG9zaXRpb24gLSBzdGFydF9wb3NpdGlvbiwgXAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBuYW1lLCBzdWJzY3JpcHRzLCB2YWx1ZSk7IFwKKysgICAgICAgIH0g XAorKyAgICB9IHdoaWxlICgwKQorKworKy8vIEVuZCBvZiBhIHN5bnRheCBlbGVtZW50IHdpdGgg bm8gc3Vic2NyaXB0IGVudHJpZXMuCisrI2RlZmluZSBDQlNfVFJBQ0VfUkVBRF9FTkRfTk9fU1VC U0NSSVBUUygpIFwKKysgICAgZG8geyBcCisrICAgICAgICBjb25zdCBpbnQgKnN1YnNjcmlwdHMg PSBOVUxMOyBcCisrICAgICAgICBDQlNfVFJBQ0VfUkVBRF9FTkQoKTsgXAorKyAgICB9IHdoaWxl ICgwKQorKworKy8vIEVuZCBvZiBhIHN5bnRheCBlbGVtZW50IHdoaWNoIGlzIG1hZGUgdXAgb2Yg c3ViZWxlbWVudHMgd2hpY2gKKysvLyBhcmUgYWxlYWR5IHRyYWNlZCwgc28gd2UgYXJlIG9ubHkg c2hvd2luZyB0aGUgdmFsdWUuCisrI2RlZmluZSBDQlNfVFJBQ0VfUkVBRF9FTkRfVkFMVUVfT05M WSgpIFwKKysgICAgZG8geyBcCisrICAgICAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpIHsgXAor KyAgICAgICAgICAgIGN0eC0+dHJhY2VfcmVhZF9jYWxsYmFjayhjdHgtPnRyYWNlX2NvbnRleHQs ICZ0cmFjZV9zdGFydCwgMCwgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBuYW1lLCBzdWJzY3JpcHRzLCB2YWx1ZSk7IFwKKysgICAgICAgIH0gXAorKyAgICB9IHdoaWxl ICgwKQorKworKy8vIFN0YXJ0IG9mIGEgc3ludGF4IGVsZW1lbnQgZHVyaW5nIHdyaXRlIHRyYWNp bmcuCisrI2RlZmluZSBDQlNfVFJBQ0VfV1JJVEVfU1RBUlQoKSBcCisrICAgIGludCBzdGFydF9w b3NpdGlvbjsgXAorKyAgICBkbyB7IFwKKysgICAgICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkg XAorKyAgICAgICAgICAgIHN0YXJ0X3Bvc2l0aW9uID0gcHV0X2JpdHNfY291bnQocGJjKTs7IFwK KysgICAgfSB3aGlsZSAoMCkKKysKKysvLyBFbmQgb2YgYSBzeW50YXggZWxlbWVudCBmb3IgdHJh Y2luZywgbWFrZSBjYWxsYmFjay4KKysjZGVmaW5lIENCU19UUkFDRV9XUklURV9FTkQoKSBcCisr ICAgIGRvIHsgXAorKyAgICAgICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKSB7IFwKKysgICAgICAg ICAgICBpbnQgZW5kX3Bvc2l0aW9uICAgPSBwdXRfYml0c19jb3VudChwYmMpOyBcCisrICAgICAg ICAgICAgYXZfYXNzZXJ0MChzdGFydF9wb3NpdGlvbiA8PSBlbmRfcG9zaXRpb24pOyBcCisrICAg ICAgICAgICAgY3R4LT50cmFjZV93cml0ZV9jYWxsYmFjayhjdHgtPnRyYWNlX2NvbnRleHQsIHBi YywgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX3Bvc2l0aW9u IC0gc3RhcnRfcG9zaXRpb24sIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5hbWUsIHN1YnNjcmlwdHMsIHZhbHVlKTsgXAorKyAgICAgICAgfSBcCisrICAgIH0gd2hp bGUgKDApCisrCisrLy8gRW5kIG9mIGEgc3ludGF4IGVsZW1lbnQgd2l0aCBubyBzdWJzY3JpcHQg ZW50cmllcy4KKysjZGVmaW5lIENCU19UUkFDRV9XUklURV9FTkRfTk9fU1VCU0NSSVBUUygpIFwK KysgICAgZG8geyBcCisrICAgICAgICBjb25zdCBpbnQgKnN1YnNjcmlwdHMgPSBOVUxMOyBcCisr ICAgICAgICBDQlNfVFJBQ0VfV1JJVEVfRU5EKCk7IFwKKysgICAgfSB3aGlsZSAoMCkKKysKKysv LyBFbmQgb2YgYSBzeW50YXggZWxlbWVudCB3aGljaCBpcyBtYWRlIHVwIG9mIHN1YmVsZW1lbnRz IHdoaWNoIGFyZQorKy8vIGFsZWFkeSB0cmFjZWQsIHNvIHdlIGFyZSBvbmx5IHNob3dpbmcgdGhl IHZhbHVlLiAgVGhpcyBmb3JnZXMgYQorKy8vIFB1dEJpdENvbnRleHQgdG8gcG9pbnQgdG8gdGhl IHBvc2l0aW9uIG9mIHRoZSBzdGFydCBvZiB0aGUgc3ludGF4CisrLy8gZWxlbWVudCwgYnV0IHRo ZSBvdGhlciBzdGF0ZSBkb2Vzbid0IG1hdHRlciBiZWNhdXNlIGxlbmd0aCBpcyB6ZXJvLgorKyNk ZWZpbmUgQ0JTX1RSQUNFX1dSSVRFX0VORF9WQUxVRV9PTkxZKCkgXAorKyAgICBkbyB7IFwKKysg ICAgICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkgeyBcCisrICAgICAgICAgICAgUHV0Qml0Q29u dGV4dCB0bXA7IFwKKysgICAgICAgICAgICBpbml0X3B1dF9iaXRzKCZ0bXAsIHBiYy0+YnVmLCBz dGFydF9wb3NpdGlvbik7IFwKKysgICAgICAgICAgICBza2lwX3B1dF9iaXRzKCZ0bXAsIHN0YXJ0 X3Bvc2l0aW9uKTsgXAorKyAgICAgICAgICAgIGN0eC0+dHJhY2Vfd3JpdGVfY2FsbGJhY2soY3R4 LT50cmFjZV9jb250ZXh0LCAmdG1wLCAwLCBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBuYW1lLCBzdWJzY3JpcHRzLCB2YWx1ZSk7IFwKKysgICAgICAgIH0gXAorKyAg ICB9IHdoaWxlICgwKQorKworICNkZWZpbmUgVFlQRV9MSVNUKC4uLikgeyBfX1ZBX0FSR1NfXyB9 CisgI2RlZmluZSBDQlNfVU5JVF9UWVBFX1BPRCh0eXBlXywgc3RydWN0dXJlKSB7IFwKKyAgICAg ICAgIC5uYl91bml0X3R5cGVzICA9IDEsIFwKK2RpZmYgLS1naXQgYS9saWJhdmNvZGVjL2Nic19t cGVnMi5jIGIvbGliYXZjb2RlYy9jYnNfbXBlZzIuYworaW5kZXggMDRiMGM3Zi4uMzdmYzI4YSAx MDA2NDQKKy0tLSBhL2xpYmF2Y29kZWMvY2JzX21wZWcyLmMKKysrKyBiL2xpYmF2Y29kZWMvY2Jz X21wZWcyLmMKK0BAIC00MCw4ICs0MCw2IEBACisgCisgI2RlZmluZSBTVUJTQ1JJUFRTKHN1YnMs IC4uLikgKHN1YnMgPiAwID8gKChpbnRbc3VicyArIDFdKXsgc3VicywgX19WQV9BUkdTX18gfSkg OiBOVUxMKQorIAorLSNkZWZpbmUgdWkod2lkdGgsIG5hbWUpIFwKKy0gICAgICAgIHh1aSh3aWR0 aCwgbmFtZSwgY3VycmVudC0+bmFtZSwgMCwgTUFYX1VJTlRfQklUUyh3aWR0aCksIDAsICkKKyAj ZGVmaW5lIHVpcih3aWR0aCwgbmFtZSkgXAorICAgICAgICAgeHVpKHdpZHRoLCBuYW1lLCBjdXJy ZW50LT5uYW1lLCAxLCBNQVhfVUlOVF9CSVRTKHdpZHRoKSwgMCwgKQorICNkZWZpbmUgdWlzKHdp ZHRoLCBuYW1lLCBzdWJzLCAuLi4pIFwKK0BAIC02NSw2ICs2MywxMiBAQAorICNkZWZpbmUgUkVB RFdSSVRFIHJlYWQKKyAjZGVmaW5lIFJXQ29udGV4dCBHZXRCaXRDb250ZXh0CisgCisrI2RlZmlu ZSB1aSh3aWR0aCwgbmFtZSkgZG8geyBcCisrICAgICAgICB1aW50MzJfdCB2YWx1ZTsgXAorKyAg ICAgICAgQ0hFQ0soZmZfY2JzX3JlYWRfc2ltcGxlX3Vuc2lnbmVkKGN0eCwgcncsIHdpZHRoLCAj bmFtZSwgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2YWx1 ZSkpOyBcCisrICAgICAgICBjdXJyZW50LT5uYW1lID0gdmFsdWU7IFwKKysgICAgfSB3aGlsZSAo MCkKKyAjZGVmaW5lIHh1aWEod2lkdGgsIHN0cmluZywgdmFyLCByYW5nZV9taW4sIHJhbmdlX21h eCwgc3VicywgLi4uKSBkbyB7IFwKKyAgICAgICAgIHVpbnQzMl90IHZhbHVlOyBcCisgICAgICAg ICBDSEVDSyhmZl9jYnNfcmVhZF91bnNpZ25lZChjdHgsIHJ3LCB3aWR0aCwgc3RyaW5nLCBcCitA QCAtOTUsNiArOTksNyBAQAorICN1bmRlZiBSRUFECisgI3VuZGVmIFJFQURXUklURQorICN1bmRl ZiBSV0NvbnRleHQKKysjdW5kZWYgdWkKKyAjdW5kZWYgeHVpYQorICN1bmRlZiB4c2kKKyAjdW5k ZWYgbmV4dGJpdHMKK0BAIC0xMDUsNiArMTEwLDExIEBACisgI2RlZmluZSBSRUFEV1JJVEUgd3Jp dGUKKyAjZGVmaW5lIFJXQ29udGV4dCBQdXRCaXRDb250ZXh0CisgCisrI2RlZmluZSB1aSh3aWR0 aCwgbmFtZSkgZG8geyBcCisrICAgICAgICBDSEVDSyhmZl9jYnNfd3JpdGVfc2ltcGxlX3Vuc2ln bmVkKGN0eCwgcncsIHdpZHRoLCAjbmFtZSwgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjdXJyZW50LT5uYW1lKSk7IFwKKysgICAgfSB3aGlsZSAoMCkKKysK KyAjZGVmaW5lIHh1aWEod2lkdGgsIHN0cmluZywgdmFyLCByYW5nZV9taW4sIHJhbmdlX21heCwg c3VicywgLi4uKSBkbyB7IFwKKyAgICAgICAgIENIRUNLKGZmX2Nic193cml0ZV91bnNpZ25lZChj dHgsIHJ3LCB3aWR0aCwgc3RyaW5nLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgU1VCU0NSSVBUUyhzdWJzLCBfX1ZBX0FSR1NfXyksIFwKK0BAIC0xMzQsNiArMTQ0LDcg QEAKKyAjdW5kZWYgV1JJVEUKKyAjdW5kZWYgUkVBRFdSSVRFCisgI3VuZGVmIFJXQ29udGV4dAor KyN1bmRlZiB1aQorICN1bmRlZiB4dWlhCisgI3VuZGVmIHhzaQorICN1bmRlZiBuZXh0Yml0cwor ZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvY2JzX3ZwOS5jIGIvbGliYXZjb2RlYy9jYnNfdnA5LmMK K2luZGV4IDE4NGZkY2EuLjgxNmQwNmQgMTAwNjQ0CistLS0gYS9saWJhdmNvZGVjL2Nic192cDku YworKysrIGIvbGliYXZjb2RlYy9jYnNfdnA5LmMKK0BAIC0yOCwxMSArMjgsMTAgQEAgc3RhdGlj IGludCBjYnNfdnA5X3JlYWRfcyhDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgR2V0Qml0Q29u dGV4dCAqZ2JjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ICpzdWJzY3Jp cHRzLCBpbnQzMl90ICp3cml0ZV90bykKKyB7CisgICAgIHVpbnQzMl90IG1hZ25pdHVkZTsKKy0g ICAgaW50IHBvc2l0aW9uLCBzaWduOworKyAgICBpbnQgc2lnbjsKKyAgICAgaW50MzJfdCB2YWx1 ZTsKKyAKKy0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKQorLSAgICAgICAgcG9zaXRpb24gPSBn ZXRfYml0c19jb3VudChnYmMpOworKyAgICBDQlNfVFJBQ0VfUkVBRF9TVEFSVCgpOworIAorICAg ICBpZiAoZ2V0X2JpdHNfbGVmdChnYmMpIDwgd2lkdGggKyAxKSB7CisgICAgICAgICBhdl9sb2co Y3R4LT5sb2dfY3R4LCBBVl9MT0dfRVJST1IsICJJbnZhbGlkIHNpZ25lZCB2YWx1ZSBhdCAiCitA QCAtNDQsMTcgKzQzLDcgQEAgc3RhdGljIGludCBjYnNfdnA5X3JlYWRfcyhDb2RlZEJpdHN0cmVh bUNvbnRleHQgKmN0eCwgR2V0Qml0Q29udGV4dCAqZ2JjLAorICAgICBzaWduICAgICAgPSBnZXRf Yml0czEoZ2JjKTsKKyAgICAgdmFsdWUgICAgID0gc2lnbiA/IC0oaW50MzJfdCltYWduaXR1ZGUg OiBtYWduaXR1ZGU7CisgCistICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkgeworLSAgICAgICAg Y2hhciBiaXRzWzMzXTsKKy0gICAgICAgIGludCBpOworLSAgICAgICAgZm9yIChpID0gMDsgaSA8 IHdpZHRoOyBpKyspCistICAgICAgICAgICAgYml0c1tpXSA9IG1hZ25pdHVkZSA+PiAod2lkdGgg LSBpIC0gMSkgJiAxID8gJzEnIDogJzAnOworLSAgICAgICAgYml0c1tpXSA9IHNpZ24gPyAnMScg OiAnMCc7CistICAgICAgICBiaXRzW2kgKyAxXSA9IDA7CistCistICAgICAgICBmZl9jYnNfdHJh Y2Vfc3ludGF4X2VsZW1lbnQoY3R4LCBwb3NpdGlvbiwgbmFtZSwgc3Vic2NyaXB0cywKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRzLCB2YWx1ZSk7CistICAgIH0KKysg ICAgQ0JTX1RSQUNFX1JFQURfRU5EKCk7CisgCisgICAgICp3cml0ZV90byA9IHZhbHVlOworICAg ICByZXR1cm4gMDsKK0BAIC02NywyNyArNTYsMTkgQEAgc3RhdGljIGludCBjYnNfdnA5X3dyaXRl X3MoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBiYywKKyAgICAg dWludDMyX3QgbWFnbml0dWRlOworICAgICBpbnQgc2lnbjsKKyAKKysgICAgQ0JTX1RSQUNFX1dS SVRFX1NUQVJUKCk7CisrCisgICAgIGlmIChwdXRfYml0c19sZWZ0KHBiYykgPCB3aWR0aCArIDEp CisgICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9TUEMpOworIAorICAgICBzaWduICAgICAgPSB2 YWx1ZSA8IDA7CisgICAgIG1hZ25pdHVkZSA9IHNpZ24gPyAtdmFsdWUgOiB2YWx1ZTsKKyAKKy0g ICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKSB7CistICAgICAgICBjaGFyIGJpdHNbMzNdOworLSAg ICAgICAgaW50IGk7CistICAgICAgICBmb3IgKGkgPSAwOyBpIDwgd2lkdGg7IGkrKykKKy0gICAg ICAgICAgICBiaXRzW2ldID0gbWFnbml0dWRlID4+ICh3aWR0aCAtIGkgLSAxKSAmIDEgPyAnMScg OiAnMCc7CistICAgICAgICBiaXRzW2ldID0gc2lnbiA/ICcxJyA6ICcwJzsKKy0gICAgICAgIGJp dHNbaSArIDFdID0gMDsKKy0KKy0gICAgICAgIGZmX2Nic190cmFjZV9zeW50YXhfZWxlbWVudChj dHgsIHB1dF9iaXRzX2NvdW50KHBiYyksCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbmFtZSwgc3Vic2NyaXB0cywgYml0cywgdmFsdWUpOworLSAgICB9CistCisgICAgIHB1 dF9iaXRzKHBiYywgd2lkdGgsIG1hZ25pdHVkZSk7CisgICAgIHB1dF9iaXRzKHBiYywgMSwgc2ln bik7CisgCisrICAgIENCU19UUkFDRV9XUklURV9FTkQoKTsKKysKKyAgICAgcmV0dXJuIDA7Cisg fQorIAorQEAgLTk2LDMyICs3NywyNCBAQCBzdGF0aWMgaW50IGNic192cDlfcmVhZF9pbmNyZW1l bnQoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIEdldEJpdENvbnRleHQgKmdiYworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLCB1aW50MzJfdCAq d3JpdGVfdG8pCisgeworICAgICB1aW50MzJfdCB2YWx1ZTsKKy0gICAgaW50IHBvc2l0aW9uLCBp OworLSAgICBjaGFyIGJpdHNbOF07CisgCistICAgIGF2X2Fzc2VydDAocmFuZ2VfbWluIDw9IHJh bmdlX21heCAmJiByYW5nZV9tYXggLSByYW5nZV9taW4gPCBzaXplb2YoYml0cykgLSAxKTsKKy0g ICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKQorLSAgICAgICAgcG9zaXRpb24gPSBnZXRfYml0c19j b3VudChnYmMpOworKyAgICBDQlNfVFJBQ0VfUkVBRF9TVEFSVCgpOworKworKyAgICBhdl9hc3Nl cnQwKHJhbmdlX21pbiA8PSByYW5nZV9tYXggJiYgcmFuZ2VfbWF4IC0gcmFuZ2VfbWluIDwgMzIp OworIAorLSAgICBmb3IgKGkgPSAwLCB2YWx1ZSA9IHJhbmdlX21pbjsgdmFsdWUgPCByYW5nZV9t YXg7KSB7CisrICAgIGZvciAodmFsdWUgPSByYW5nZV9taW47IHZhbHVlIDwgcmFuZ2VfbWF4Oykg eworICAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2JjKSA8IDEpIHsKKyAgICAgICAgICAgICBh dl9sb2coY3R4LT5sb2dfY3R4LCBBVl9MT0dfRVJST1IsICJJbnZhbGlkIGluY3JlbWVudCB2YWx1 ZSBhdCAiCisgICAgICAgICAgICAgICAgICAgICIlczogYml0c3RyZWFtIGVuZGVkLlxuIiwgbmFt ZSk7CisgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisgICAgICAgICB9 CistICAgICAgICBpZiAoZ2V0X2JpdHMxKGdiYykpIHsKKy0gICAgICAgICAgICBiaXRzW2krK10g PSAnMSc7CisrICAgICAgICBpZiAoZ2V0X2JpdHMxKGdiYykpCisgICAgICAgICAgICAgKyt2YWx1 ZTsKKy0gICAgICAgIH0gZWxzZSB7CistICAgICAgICAgICAgYml0c1tpKytdID0gJzAnOworKyAg ICAgICAgZWxzZQorICAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgfQorICAgICB9CisgCist ICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkgeworLSAgICAgICAgYml0c1tpXSA9IDA7CistICAg ICAgICBmZl9jYnNfdHJhY2Vfc3ludGF4X2VsZW1lbnQoY3R4LCBwb3NpdGlvbiwgbmFtZSwgTlVM TCwgYml0cywgdmFsdWUpOworLSAgICB9CisrICAgIENCU19UUkFDRV9SRUFEX0VORF9OT19TVUJT Q1JJUFRTKCk7CisgCisgICAgICp3cml0ZV90byA9IHZhbHVlOworICAgICByZXR1cm4gMDsKK0BA IC0xMzMsNiArMTA2LDggQEAgc3RhdGljIGludCBjYnNfdnA5X3dyaXRlX2luY3JlbWVudChDb2Rl ZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUHV0Qml0Q29udGV4dCAqcGIKKyB7CisgICAgIGludCBs ZW47CisgCisrICAgIENCU19UUkFDRV9XUklURV9TVEFSVCgpOworKworICAgICBhdl9hc3NlcnQw KHJhbmdlX21pbiA8PSByYW5nZV9tYXggJiYgcmFuZ2VfbWF4IC0gcmFuZ2VfbWluIDwgOCk7Cisg ICAgIGlmICh2YWx1ZSA8IHJhbmdlX21pbiB8fCB2YWx1ZSA+IHJhbmdlX21heCkgeworICAgICAg ICAgYXZfbG9nKGN0eC0+bG9nX2N0eCwgQVZfTE9HX0VSUk9SLCAiJXMgb3V0IG9mIHJhbmdlOiAi CitAQCAtMTQ4LDIzICsxMjMsMTEgQEAgc3RhdGljIGludCBjYnNfdnA5X3dyaXRlX2luY3JlbWVu dChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUHV0Qml0Q29udGV4dCAqcGIKKyAgICAgaWYg KHB1dF9iaXRzX2xlZnQocGJjKSA8IGxlbikKKyAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT1NQ Qyk7CisgCistICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkgeworLSAgICAgICAgY2hhciBiaXRz WzhdOworLSAgICAgICAgaW50IGk7CistICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKysp IHsKKy0gICAgICAgICAgICBpZiAocmFuZ2VfbWluICsgaSA9PSB2YWx1ZSkKKy0gICAgICAgICAg ICAgICAgYml0c1tpXSA9ICcwJzsKKy0gICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAg IGJpdHNbaV0gPSAnMSc7CistICAgICAgICB9CistICAgICAgICBiaXRzW2ldID0gMDsKKy0gICAg ICAgIGZmX2Nic190cmFjZV9zeW50YXhfZWxlbWVudChjdHgsIHB1dF9iaXRzX2NvdW50KHBiYyks CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgTlVMTCwgYml0cywg dmFsdWUpOworLSAgICB9CistCisgICAgIGlmIChsZW4gPiAwKQorICAgICAgICAgcHV0X2JpdHMo cGJjLCBsZW4sICgxIDw8IGxlbikgLSAxIC0gKHZhbHVlICE9IHJhbmdlX21heCkpOworIAorKyAg ICBDQlNfVFJBQ0VfV1JJVEVfRU5EX05PX1NVQlNDUklQVFMoKTsKKysKKyAgICAgcmV0dXJuIDA7 CisgfQorIAorQEAgLTE3MywxMiArMTM2LDExIEBAIHN0YXRpYyBpbnQgY2JzX3ZwOV9yZWFkX2xl KENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBHZXRCaXRDb250ZXh0ICpnYmMsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ICpzdWJzY3JpcHRzLCB1aW50MzJfdCAqd3Jp dGVfdG8pCisgeworICAgICB1aW50MzJfdCB2YWx1ZTsKKy0gICAgaW50IHBvc2l0aW9uLCBiOwor KyAgICBpbnQgYjsKKyAKKy0gICAgYXZfYXNzZXJ0MCh3aWR0aCAlIDggPT0gMCk7CisrICAgIENC U19UUkFDRV9SRUFEX1NUQVJUKCk7CisgCistICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkKKy0g ICAgICAgIHBvc2l0aW9uID0gZ2V0X2JpdHNfY291bnQoZ2JjKTsKKysgICAgYXZfYXNzZXJ0MCh3 aWR0aCAlIDggPT0gMCk7CisgCisgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiYykgPCB3aWR0aCkg eworICAgICAgICAgYXZfbG9nKGN0eC0+bG9nX2N0eCwgQVZfTE9HX0VSUk9SLCAiSW52YWxpZCBs ZSB2YWx1ZSBhdCAiCitAQCAtMTkwLDE3ICsxNTIsNyBAQCBzdGF0aWMgaW50IGNic192cDlfcmVh ZF9sZShDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgR2V0Qml0Q29udGV4dCAqZ2JjLAorICAg ICBmb3IgKGIgPSAwOyBiIDwgd2lkdGg7IGIgKz0gOCkKKyAgICAgICAgIHZhbHVlIHw9IGdldF9i aXRzKGdiYywgOCkgPDwgYjsKKyAKKy0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKSB7CistICAg ICAgICBjaGFyIGJpdHNbMzNdOworLSAgICAgICAgaW50IGk7CistICAgICAgICBmb3IgKGIgPSAw OyBiIDwgd2lkdGg7IGIgKz0gOCkKKy0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgODsgaSsr KQorLSAgICAgICAgICAgICAgICBiaXRzW2IgKyBpXSA9IHZhbHVlID4+IChiICsgaSkgJiAxID8g JzEnIDogJzAnOworLSAgICAgICAgYml0c1tiXSA9IDA7CistCistICAgICAgICBmZl9jYnNfdHJh Y2Vfc3ludGF4X2VsZW1lbnQoY3R4LCBwb3NpdGlvbiwgbmFtZSwgc3Vic2NyaXB0cywKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRzLCB2YWx1ZSk7CistICAgIH0KKysg ICAgQ0JTX1RSQUNFX1JFQURfRU5EKCk7CisgCisgICAgICp3cml0ZV90byA9IHZhbHVlOworICAg ICByZXR1cm4gMDsKK0BAIC0yMTIsMjYgKzE2NCwxOCBAQCBzdGF0aWMgaW50IGNic192cDlfd3Jp dGVfbGUoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBiYywKKyB7 CisgICAgIGludCBiOworIAorKyAgICBDQlNfVFJBQ0VfV1JJVEVfU1RBUlQoKTsKKysKKyAgICAg YXZfYXNzZXJ0MCh3aWR0aCAlIDggPT0gMCk7CisgCisgICAgIGlmIChwdXRfYml0c19sZWZ0KHBi YykgPCB3aWR0aCkKKyAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT1NQQyk7CisgCistICAgIGlm IChjdHgtPnRyYWNlX2VuYWJsZSkgeworLSAgICAgICAgY2hhciBiaXRzWzMzXTsKKy0gICAgICAg IGludCBpOworLSAgICAgICAgZm9yIChiID0gMDsgYiA8IHdpZHRoOyBiICs9IDgpCistICAgICAg ICAgICAgZm9yIChpID0gMDsgaSA8IDg7IGkrKykKKy0gICAgICAgICAgICAgICAgYml0c1tiICsg aV0gPSB2YWx1ZSA+PiAoYiArIGkpICYgMSA/ICcxJyA6ICcwJzsKKy0gICAgICAgIGJpdHNbYl0g PSAwOworLQorLSAgICAgICAgZmZfY2JzX3RyYWNlX3N5bnRheF9lbGVtZW50KGN0eCwgcHV0X2Jp dHNfY291bnQocGJjKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1l LCBzdWJzY3JpcHRzLCBiaXRzLCB2YWx1ZSk7CistICAgIH0KKy0KKyAgICAgZm9yIChiID0gMDsg YiA8IHdpZHRoOyBiICs9IDgpCisgICAgICAgICBwdXRfYml0cyhwYmMsIDgsIHZhbHVlID4+IGIg JiAweGZmKTsKKyAKKysgICAgQ0JTX1RSQUNFX1dSSVRFX0VORCgpOworKworICAgICByZXR1cm4g MDsKKyB9CisgCitAQCAtMjUxLDggKzE5NSw2IEBAIHN0YXRpYyBpbnQgY2JzX3ZwOV93cml0ZV9s ZShDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUHV0Qml0Q29udGV4dCAqcGJjLAorIAorICNk ZWZpbmUgU1VCU0NSSVBUUyhzdWJzLCAuLi4pIChzdWJzID4gMCA/ICgoaW50W3N1YnMgKyAxXSl7 IHN1YnMsIF9fVkFfQVJHU19fIH0pIDogTlVMTCkKKyAKKy0jZGVmaW5lIGYod2lkdGgsIG5hbWUp IFwKKy0gICAgICAgIHhmKHdpZHRoLCBuYW1lLCBjdXJyZW50LT5uYW1lLCAwLCApCisgI2RlZmlu ZSBzKHdpZHRoLCBuYW1lKSBcCisgICAgICAgICB4cyh3aWR0aCwgbmFtZSwgY3VycmVudC0+bmFt ZSwgMCwgKQorICNkZWZpbmUgZnMod2lkdGgsIG5hbWUsIHN1YnMsIC4uLikgXAorQEAgLTI2NCw2 ICsyMDYsMTIgQEAgc3RhdGljIGludCBjYnNfdnA5X3dyaXRlX2xlKENvZGVkQml0c3RyZWFtQ29u dGV4dCAqY3R4LCBQdXRCaXRDb250ZXh0ICpwYmMsCisgI2RlZmluZSBSRUFEV1JJVEUgcmVhZAor ICNkZWZpbmUgUldDb250ZXh0IEdldEJpdENvbnRleHQKKyAKKysjZGVmaW5lIGYod2lkdGgsIG5h bWUpIGRvIHsgXAorKyAgICAgICAgdWludDMyX3QgdmFsdWU7IFwKKysgICAgICAgIENIRUNLKGZm X2Nic19yZWFkX3NpbXBsZV91bnNpZ25lZChjdHgsIHJ3LCB3aWR0aCwgI25hbWUsIFwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmFsdWUpKTsgXAorKyAgICAg ICAgY3VycmVudC0+bmFtZSA9IHZhbHVlOyBcCisrICAgIH0gd2hpbGUgKDApCisgI2RlZmluZSB4 Zih3aWR0aCwgbmFtZSwgdmFyLCBzdWJzLCAuLi4pIGRvIHsgXAorICAgICAgICAgdWludDMyX3Qg dmFsdWU7IFwKKyAgICAgICAgIENIRUNLKGZmX2Nic19yZWFkX3Vuc2lnbmVkKGN0eCwgcncsIHdp ZHRoLCAjbmFtZSwgXAorQEAgLTMyOSw2ICsyNzcsNyBAQCBzdGF0aWMgaW50IGNic192cDlfd3Jp dGVfbGUoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBiYywKKyAj dW5kZWYgUkVBRAorICN1bmRlZiBSRUFEV1JJVEUKKyAjdW5kZWYgUldDb250ZXh0CisrI3VuZGVm IGYKKyAjdW5kZWYgeGYKKyAjdW5kZWYgeHMKKyAjdW5kZWYgaW5jcmVtZW50CitAQCAtMzQ0LDYg KzI5MywxMCBAQCBzdGF0aWMgaW50IGNic192cDlfd3JpdGVfbGUoQ29kZWRCaXRzdHJlYW1Db250 ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBiYywKKyAjZGVmaW5lIFJFQURXUklURSB3cml0ZQor ICNkZWZpbmUgUldDb250ZXh0IFB1dEJpdENvbnRleHQKKyAKKysjZGVmaW5lIGYod2lkdGgsIG5h bWUpIGRvIHsgXAorKyAgICAgICAgQ0hFQ0soZmZfY2JzX3dyaXRlX3NpbXBsZV91bnNpZ25lZChj dHgsIHJ3LCB3aWR0aCwgI25hbWUsIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY3VycmVudC0+bmFtZSkpOyBcCisrICAgIH0gd2hpbGUgKDApCisgI2RlZmlu ZSB4Zih3aWR0aCwgbmFtZSwgdmFyLCBzdWJzLCAuLi4pIGRvIHsgXAorICAgICAgICAgQ0hFQ0so ZmZfY2JzX3dyaXRlX3Vuc2lnbmVkKGN0eCwgcncsIHdpZHRoLCAjbmFtZSwgXAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNVQlNDUklQVFMoc3VicywgX19WQV9BUkdTX18p LCBcCitAQCAtMzk2LDYgKzM0OSw3IEBAIHN0YXRpYyBpbnQgY2JzX3ZwOV93cml0ZV9sZShDb2Rl ZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUHV0Qml0Q29udGV4dCAqcGJjLAorICN1bmRlZiBXUklU RQorICN1bmRlZiBSRUFEV1JJVEUKKyAjdW5kZWYgUldDb250ZXh0CisrI3VuZGVmIGYKKyAjdW5k ZWYgeGYKKyAjdW5kZWYgeHMKKyAjdW5kZWYgaW5jcmVtZW50CitkaWZmIC0tZ2l0IGEvbGliYXZj b2RlYy9leHRyYWN0X2V4dHJhZGF0YV9ic2YuYyBiL2xpYmF2Y29kZWMvZXh0cmFjdF9leHRyYWRh dGFfYnNmLmMKK2luZGV4IDMyOWIxYTYuLjdlZWRiMTYgMTAwNjQ0CistLS0gYS9saWJhdmNvZGVj L2V4dHJhY3RfZXh0cmFkYXRhX2JzZi5jCisrKysgYi9saWJhdmNvZGVjL2V4dHJhY3RfZXh0cmFk YXRhX2JzZi5jCitAQCAtNDgsMTAgKzQ4LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgRXh0cmFjdEV4dHJh ZGF0YUNvbnRleHQgeworICAgICBpbnQgcmVtb3ZlOworIH0gRXh0cmFjdEV4dHJhZGF0YUNvbnRl eHQ7CisgCistc3RhdGljIGludCB2YWxfaW5fYXJyYXkoY29uc3QgaW50ICphcnIsIGludCBsZW4s IGludCB2YWwpCisrc3RhdGljIGludCB2YWxfaW5fYXJyYXkoY29uc3QgaW50ICphcnIsIHNpemVf dCBsZW4sIGludCB2YWwpCisgeworLSAgICBpbnQgaTsKKy0gICAgZm9yIChpID0gMDsgaSA8IGxl bjsgaSsrKQorKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbjsgaSsrKQorICAgICAgICAg aWYgKGFycltpXSA9PSB2YWwpCisgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgIHJldHVybiAw OworQEAgLTE0NSw3ICsxNDQsNyBAQCBzdGF0aWMgaW50IGV4dHJhY3RfZXh0cmFkYXRhX2gyNjQ1 KEFWQlNGQ29udGV4dCAqY3R4LCBBVlBhY2tldCAqcGt0LAorIAorICAgICBpbnQgZXh0cmFkYXRh X3NpemUgPSAwLCBmaWx0ZXJlZF9zaXplID0gMDsKKyAgICAgY29uc3QgaW50ICpleHRyYWRhdGFf bmFsX3R5cGVzOworLSAgICBpbnQgbmJfZXh0cmFkYXRhX25hbF90eXBlczsKKysgICAgc2l6ZV90 IG5iX2V4dHJhZGF0YV9uYWxfdHlwZXM7CisgICAgIGludCBpLCBoYXNfc3BzID0gMCwgaGFzX3Zw cyA9IDAsIHJldCA9IDA7CisgCisgICAgIGlmIChjdHgtPnBhcl9pbi0+Y29kZWNfaWQgPT0gQVZf Q09ERUNfSURfSEVWQykgeworZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdHJhY2VfaGVhZGVyc19i c2YuYyBiL2xpYmF2Y29kZWMvdHJhY2VfaGVhZGVyc19ic2YuYworaW5kZXggMDI4YjBhMS4uODc4 MWY1ZiAxMDA2NDQKKy0tLSBhL2xpYmF2Y29kZWMvdHJhY2VfaGVhZGVyc19ic2YuYworKysrIGIv bGliYXZjb2RlYy90cmFjZV9oZWFkZXJzX2JzZi5jCitAQCAtNDQsNiArNDQsOCBAQCBzdGF0aWMg aW50IHRyYWNlX2hlYWRlcnNfaW5pdChBVkJTRkNvbnRleHQgKmJzZikKKyAKKyAgICAgY3R4LT5j YmMtPnRyYWNlX2VuYWJsZSA9IDE7CisgICAgIGN0eC0+Y2JjLT50cmFjZV9sZXZlbCAgPSBBVl9M T0dfSU5GTzsKKysgICAgY3R4LT5jYmMtPnRyYWNlX2NvbnRleHQgPSBjdHgtPmNiYzsKKysgICAg Y3R4LT5jYmMtPnRyYWNlX3JlYWRfY2FsbGJhY2sgPSBmZl9jYnNfdHJhY2VfcmVhZF9sb2c7Cisg CisgICAgIGlmIChic2YtPnBhcl9pbi0+ZXh0cmFkYXRhKSB7CisgICAgICAgICBDb2RlZEJpdHN0 cmVhbUZyYWdtZW50ICpmcmFnID0gJmN0eC0+ZnJhZ21lbnQ7CitkaWZmIC0tZ2l0IGEvbGliYXZj b2RlYy92YWFwaV9lbmNvZGUuYyBiL2xpYmF2Y29kZWMvdmFhcGlfZW5jb2RlLmMKK2luZGV4IGJm Y2EzMTUuLmY1YmY1YWIgMTAwNjQ0CistLS0gYS9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZS5jCisr KysgYi9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZS5jCitAQCAtMjc2LDIxICsyNzYsMzQgQEAgc3Rh dGljIGludCB2YWFwaV9lbmNvZGVfaXNzdWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAorICAgICBh dl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywgIklzc3VpbmcgZW5jb2RlIGZvciBwaWMgJSJQUklk NjQiLyUiUFJJZDY0IiAiCisgICAgICAgICAgICAiYXMgdHlwZSAlcy5cbiIsIHBpYy0+ZGlzcGxh eV9vcmRlciwgcGljLT5lbmNvZGVfb3JkZXIsCisgICAgICAgICAgICBwaWN0dXJlX3R5cGVfbmFt ZVtwaWMtPnR5cGVdKTsKKy0gICAgaWYgKHBpYy0+bmJfcmVmcyA9PSAwKSB7CisrICAgIGlmIChw aWMtPm5iX3JlZnNbMF0gPT0gMCAmJiBwaWMtPm5iX3JlZnNbMV0gPT0gMCkgeworICAgICAgICAg YXZfbG9nKGF2Y3R4LCBBVl9MT0dfREVCVUcsICJObyByZWZlcmVuY2UgcGljdHVyZXMuXG4iKTsK KyAgICAgfSBlbHNlIHsKKy0gICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0RFQlVHLCAiUmVm ZXJzIHRvOiIpOworLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHBpYy0+bmJfcmVmczsgaSsrKSB7 CisrICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywgIkwwIHJlZmVycyB0byIpOwor KyAgICAgICAgZm9yIChpID0gMDsgaSA8IHBpYy0+bmJfcmVmc1swXTsgaSsrKSB7CisgICAgICAg ICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfREVCVUcsICIgJSJQUklkNjQiLyUiUFJJZDY0LAor LSAgICAgICAgICAgICAgICAgICBwaWMtPnJlZnNbaV0tPmRpc3BsYXlfb3JkZXIsIHBpYy0+cmVm c1tpXS0+ZW5jb2RlX29yZGVyKTsKKysgICAgICAgICAgICAgICAgICAgcGljLT5yZWZzWzBdW2ld LT5kaXNwbGF5X29yZGVyLCBwaWMtPnJlZnNbMF1baV0tPmVuY29kZV9vcmRlcik7CisgICAgICAg ICB9CisgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywgIi5cbiIpOworKworKyAg ICAgICAgaWYgKHBpYy0+bmJfcmVmc1sxXSkgeworKyAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwg QVZfTE9HX0RFQlVHLCAiTDEgcmVmZXJzIHRvIik7CisrICAgICAgICAgICAgZm9yIChpID0gMDsg aSA8IHBpYy0+bmJfcmVmc1sxXTsgaSsrKSB7CisrICAgICAgICAgICAgICAgIGF2X2xvZyhhdmN0 eCwgQVZfTE9HX0RFQlVHLCAiICUiUFJJZDY0Ii8lIlBSSWQ2NCwKKysgICAgICAgICAgICAgICAg ICAgICAgIHBpYy0+cmVmc1sxXVtpXS0+ZGlzcGxheV9vcmRlciwgcGljLT5yZWZzWzFdW2ldLT5l bmNvZGVfb3JkZXIpOworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBhdl9sb2coYXZjdHgs IEFWX0xPR19ERUJVRywgIi5cbiIpOworKyAgICAgICAgfQorICAgICB9CisgCisgICAgIGF2X2Fz c2VydDAoIXBpYy0+ZW5jb2RlX2lzc3VlZCk7CistICAgIGZvciAoaSA9IDA7IGkgPCBwaWMtPm5i X3JlZnM7IGkrKykgeworLSAgICAgICAgYXZfYXNzZXJ0MChwaWMtPnJlZnNbaV0pOworLSAgICAg ICAgYXZfYXNzZXJ0MChwaWMtPnJlZnNbaV0tPmVuY29kZV9pc3N1ZWQpOworKyAgICBmb3IgKGkg PSAwOyBpIDwgcGljLT5uYl9yZWZzWzBdOyBpKyspIHsKKysgICAgICAgIGF2X2Fzc2VydDAocGlj LT5yZWZzWzBdW2ldKTsKKysgICAgICAgIGF2X2Fzc2VydDAocGljLT5yZWZzWzBdW2ldLT5lbmNv ZGVfaXNzdWVkKTsKKysgICAgfQorKyAgICBmb3IgKGkgPSAwOyBpIDwgcGljLT5uYl9yZWZzWzFd OyBpKyspIHsKKysgICAgICAgIGF2X2Fzc2VydDAocGljLT5yZWZzWzFdW2ldKTsKKysgICAgICAg IGF2X2Fzc2VydDAocGljLT5yZWZzWzFdW2ldLT5lbmNvZGVfaXNzdWVkKTsKKyAgICAgfQorIAor ICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywgIklucHV0IHN1cmZhY2UgaXMgJSN4Llxu IiwgcGljLT5pbnB1dF9zdXJmYWNlKTsKK0BAIC02NTAsNzkgKzY2MywyMDAgQEAgZmFpbF9hdF9l bmQ6CisgICAgIHJldHVybiBlcnI7CisgfQorIAorLXN0YXRpYyBpbnQgdmFhcGlfZW5jb2RlX291 dHB1dChBVkNvZGVjQ29udGV4dCAqYXZjdHgsCistICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFZBQVBJRW5jb2RlUGljdHVyZSAqcGljLCBBVlBhY2tldCAqcGt0KQorK3N0YXRpYyBpbnQg dmFhcGlfZW5jb2RlX3NldF9vdXRwdXRfcHJvcGVydHkoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkFBUElFbmNvZGVQ aWN0dXJlICpwaWMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBBVlBhY2tldCAqcGt0KQorK3sKKysgICAgVkFBUElFbmNvZGVDb250ZXh0ICpjdHggPSBhdmN0 eC0+cHJpdl9kYXRhOworKworKyAgICBpZiAocGljLT50eXBlID09IFBJQ1RVUkVfVFlQRV9JRFIp CisrICAgICAgICBwa3QtPmZsYWdzIHw9IEFWX1BLVF9GTEFHX0tFWTsKKysKKysgICAgcGt0LT5w dHMgPSBwaWMtPnB0czsKKysgICAgcGt0LT5kdXJhdGlvbiA9IHBpYy0+ZHVyYXRpb247CisrCisr ICAgIC8vIGZvciBuby1kZWxheSBlbmNvZGVycyB0aGlzIGlzIGhhbmRsZWQgaW4gZ2VuZXJpYyBj b2RlYworKyAgICBpZiAoYXZjdHgtPmNvZGVjLT5jYXBhYmlsaXRpZXMgJiBBVl9DT0RFQ19DQVBf REVMQVkgJiYKKysgICAgICAgIGF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfQ09QWV9PUEFR VUUpIHsKKysgICAgICAgIHBrdC0+b3BhcXVlICAgICA9IHBpYy0+b3BhcXVlOworKyAgICAgICAg cGt0LT5vcGFxdWVfcmVmID0gcGljLT5vcGFxdWVfcmVmOworKyAgICAgICAgcGljLT5vcGFxdWVf cmVmID0gTlVMTDsKKysgICAgfQorKworKyAgICBpZiAoY3R4LT5jb2RlYy0+ZmxhZ3MgJiBGTEFH X1RJTUVTVEFNUF9OT19ERUxBWSkgeworKyAgICAgICAgcGt0LT5kdHMgPSBwa3QtPnB0czsKKysg ICAgICAgIHJldHVybiAwOworKyAgICB9CisrCisrICAgIGlmIChjdHgtPm91dHB1dF9kZWxheSA9 PSAwKSB7CisrICAgICAgICBwa3QtPmR0cyA9IHBrdC0+cHRzOworKyAgICB9IGVsc2UgaWYgKHBp Yy0+ZW5jb2RlX29yZGVyIDwgY3R4LT5kZWNvZGVfZGVsYXkpIHsKKysgICAgICAgIGlmIChjdHgt PnRzX3JpbmdbcGljLT5lbmNvZGVfb3JkZXJdIDwgSU5UNjRfTUlOICsgY3R4LT5kdHNfcHRzX2Rp ZmYpCisrICAgICAgICAgICAgcGt0LT5kdHMgPSBJTlQ2NF9NSU47CisrICAgICAgICBlbHNlCisr ICAgICAgICAgICAgcGt0LT5kdHMgPSBjdHgtPnRzX3JpbmdbcGljLT5lbmNvZGVfb3JkZXJdIC0g Y3R4LT5kdHNfcHRzX2RpZmY7CisrICAgIH0gZWxzZSB7CisrICAgICAgICBwa3QtPmR0cyA9IGN0 eC0+dHNfcmluZ1socGljLT5lbmNvZGVfb3JkZXIgLSBjdHgtPmRlY29kZV9kZWxheSkgJQorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDMgKiBjdHgtPm91dHB1dF9kZWxheSArIGN0 eC0+YXN5bmNfZGVwdGgpXTsKKysgICAgfQorKworKyAgICByZXR1cm4gMDsKKyt9CisrCisrc3Rh dGljIGludCB2YWFwaV9lbmNvZGVfZ2V0X2NvZGVkX2J1ZmZlcl9zaXplKEFWQ29kZWNDb250ZXh0 ICphdmN0eCwgVkFCdWZmZXJJRCBidWZfaWQpCisgeworICAgICBWQUFQSUVuY29kZUNvbnRleHQg KmN0eCA9IGF2Y3R4LT5wcml2X2RhdGE7CisgICAgIFZBQ29kZWRCdWZmZXJTZWdtZW50ICpidWZf bGlzdCwgKmJ1ZjsKKysgICAgaW50IHNpemUgPSAwOworICAgICBWQVN0YXR1cyB2YXM7CistICAg IGludCB0b3RhbF9zaXplID0gMDsKKy0gICAgdWludDhfdCAqcHRyOworICAgICBpbnQgZXJyOwor IAorLSAgICBlcnIgPSB2YWFwaV9lbmNvZGVfd2FpdChhdmN0eCwgcGljKTsKKy0gICAgaWYgKGVy ciA8IDApCistICAgICAgICByZXR1cm4gZXJyOworLQorLSAgICBidWZfbGlzdCA9IE5VTEw7Cist ICAgIHZhcyA9IHZhTWFwQnVmZmVyKGN0eC0+aHdjdHgtPmRpc3BsYXksIHBpYy0+b3V0cHV0X2J1 ZmZlciwKKysgICAgdmFzID0gdmFNYXBCdWZmZXIoY3R4LT5od2N0eC0+ZGlzcGxheSwgYnVmX2lk LAorICAgICAgICAgICAgICAgICAgICAgICAodm9pZCoqKSZidWZfbGlzdCk7CisgICAgIGlmICh2 YXMgIT0gVkFfU1RBVFVTX1NVQ0NFU1MpIHsKKyAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9H X0VSUk9SLCAiRmFpbGVkIHRvIG1hcCBvdXRwdXQgYnVmZmVyczogIgorICAgICAgICAgICAgICAg ICIlZCAoJXMpLlxuIiwgdmFzLCB2YUVycm9yU3RyKHZhcykpOworICAgICAgICAgZXJyID0gQVZF UlJPUihFSU8pOworLSAgICAgICAgZ290byBmYWlsOworKyAgICAgICAgcmV0dXJuIGVycjsKKyAg ICAgfQorIAorICAgICBmb3IgKGJ1ZiA9IGJ1Zl9saXN0OyBidWY7IGJ1ZiA9IGJ1Zi0+bmV4dCkK Ky0gICAgICAgIHRvdGFsX3NpemUgKz0gYnVmLT5zaXplOworKyAgICAgICAgc2l6ZSArPSBidWYt PnNpemU7CisgCistICAgIGVyciA9IGZmX2dldF9lbmNvZGVfYnVmZmVyKGF2Y3R4LCBwa3QsIHRv dGFsX3NpemUsIDApOworLSAgICBwdHIgPSBwa3QtPmRhdGE7CisrICAgIHZhcyA9IHZhVW5tYXBC dWZmZXIoY3R4LT5od2N0eC0+ZGlzcGxheSwgYnVmX2lkKTsKKysgICAgaWYgKHZhcyAhPSBWQV9T VEFUVVNfU1VDQ0VTUykgeworKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJG YWlsZWQgdG8gdW5tYXAgb3V0cHV0IGJ1ZmZlcnM6ICIKKysgICAgICAgICAgICAgICAiJWQgKCVz KS5cbiIsIHZhcywgdmFFcnJvclN0cih2YXMpKTsKKysgICAgICAgIGVyciA9IEFWRVJST1IoRUlP KTsKKysgICAgICAgIHJldHVybiBlcnI7CisrICAgIH0KKyAKKy0gICAgaWYgKGVyciA8IDApCist ICAgICAgICBnb3RvIGZhaWxfbWFwcGVkOworKyAgICByZXR1cm4gc2l6ZTsKKyt9CisrCisrc3Rh dGljIGludCB2YWFwaV9lbmNvZGVfZ2V0X2NvZGVkX2J1ZmZlcl9kYXRhKEFWQ29kZWNDb250ZXh0 ICphdmN0eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg VkFCdWZmZXJJRCBidWZfaWQsIHVpbnQ4X3QgKipkc3QpCisreworKyAgICBWQUFQSUVuY29kZUNv bnRleHQgKmN0eCA9IGF2Y3R4LT5wcml2X2RhdGE7CisrICAgIFZBQ29kZWRCdWZmZXJTZWdtZW50 ICpidWZfbGlzdCwgKmJ1ZjsKKysgICAgVkFTdGF0dXMgdmFzOworKyAgICBpbnQgZXJyOworKwor KyAgICB2YXMgPSB2YU1hcEJ1ZmZlcihjdHgtPmh3Y3R4LT5kaXNwbGF5LCBidWZfaWQsCisrICAg ICAgICAgICAgICAgICAgICAgICh2b2lkKiopJmJ1Zl9saXN0KTsKKysgICAgaWYgKHZhcyAhPSBW QV9TVEFUVVNfU1VDQ0VTUykgeworKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1Is ICJGYWlsZWQgdG8gbWFwIG91dHB1dCBidWZmZXJzOiAiCisrICAgICAgICAgICAgICAgIiVkICgl cykuXG4iLCB2YXMsIHZhRXJyb3JTdHIodmFzKSk7CisrICAgICAgICBlcnIgPSBBVkVSUk9SKEVJ Tyk7CisrICAgICAgICByZXR1cm4gZXJyOworKyAgICB9CisgCisgICAgIGZvciAoYnVmID0gYnVm X2xpc3Q7IGJ1ZjsgYnVmID0gYnVmLT5uZXh0KSB7CisgICAgICAgICBhdl9sb2coYXZjdHgsIEFW X0xPR19ERUJVRywgIk91dHB1dCBidWZmZXI6ICV1IGJ5dGVzICIKKyAgICAgICAgICAgICAgICAi KHN0YXR1cyAlMDh4KS5cbiIsIGJ1Zi0+c2l6ZSwgYnVmLT5zdGF0dXMpOworIAorLSAgICAgICAg bWVtY3B5KHB0ciwgYnVmLT5idWYsIGJ1Zi0+c2l6ZSk7CistICAgICAgICBwdHIgKz0gYnVmLT5z aXplOworKyAgICAgICAgbWVtY3B5KCpkc3QsIGJ1Zi0+YnVmLCBidWYtPnNpemUpOworKyAgICAg ICAgKmRzdCArPSBidWYtPnNpemU7CisgICAgIH0KKyAKKy0gICAgaWYgKHBpYy0+dHlwZSA9PSBQ SUNUVVJFX1RZUEVfSURSKQorLSAgICAgICAgcGt0LT5mbGFncyB8PSBBVl9QS1RfRkxBR19LRVk7 CistCistICAgIHBrdC0+cHRzID0gcGljLT5wdHM7CistICAgIHBrdC0+ZHVyYXRpb24gPSBwaWMt PmR1cmF0aW9uOworLQorLSAgICB2YXMgPSB2YVVubWFwQnVmZmVyKGN0eC0+aHdjdHgtPmRpc3Bs YXksIHBpYy0+b3V0cHV0X2J1ZmZlcik7CisrICAgIHZhcyA9IHZhVW5tYXBCdWZmZXIoY3R4LT5o d2N0eC0+ZGlzcGxheSwgYnVmX2lkKTsKKyAgICAgaWYgKHZhcyAhPSBWQV9TVEFUVVNfU1VDQ0VT UykgeworICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJGYWlsZWQgdG8gdW5t YXAgb3V0cHV0IGJ1ZmZlcnM6ICIKKyAgICAgICAgICAgICAgICAiJWQgKCVzKS5cbiIsIHZhcywg dmFFcnJvclN0cih2YXMpKTsKKyAgICAgICAgIGVyciA9IEFWRVJST1IoRUlPKTsKKy0gICAgICAg IGdvdG8gZmFpbDsKKysgICAgICAgIHJldHVybiBlcnI7CisgICAgIH0KKyAKKy0gICAgLy8gZm9y IG5vLWRlbGF5IGVuY29kZXJzIHRoaXMgaXMgaGFuZGxlZCBpbiBnZW5lcmljIGNvZGVjCistICAg IGlmIChhdmN0eC0+Y29kZWMtPmNhcGFiaWxpdGllcyAmIEFWX0NPREVDX0NBUF9ERUxBWSAmJgor LSAgICAgICAgYXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19DT1BZX09QQVFVRSkgeworLSAg ICAgICAgcGt0LT5vcGFxdWUgICAgID0gcGljLT5vcGFxdWU7CistICAgICAgICBwa3QtPm9wYXF1 ZV9yZWYgPSBwaWMtPm9wYXF1ZV9yZWY7CistICAgICAgICBwaWMtPm9wYXF1ZV9yZWYgPSBOVUxM OworKyAgICByZXR1cm4gMDsKKyt9CisrCisrc3RhdGljIGludCB2YWFwaV9lbmNvZGVfZ2V0X2Nv ZGVkX2RhdGEoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFZBQVBJRW5jb2RlUGljdHVyZSAqcGljLCBBVlBhY2tldCAqcGt0KQor K3sKKysgICAgVkFBUElFbmNvZGVDb250ZXh0ICpjdHggPSBhdmN0eC0+cHJpdl9kYXRhOworKyAg ICBWQUJ1ZmZlcklEIG91dHB1dF9idWZmZXJfcHJldjsKKysgICAgaW50IHRvdGFsX3NpemUgPSAw OworKyAgICB1aW50OF90ICpwdHI7CisrICAgIGludCByZXQ7CisrCisrICAgIGlmIChjdHgtPmNv ZGVkX2J1ZmZlcl9yZWYpIHsKKysgICAgICAgIG91dHB1dF9idWZmZXJfcHJldiA9IChWQUJ1ZmZl cklEKSh1aW50cHRyX3QpY3R4LT5jb2RlZF9idWZmZXJfcmVmLT5kYXRhOworKyAgICAgICAgcmV0 ID0gdmFhcGlfZW5jb2RlX2dldF9jb2RlZF9idWZmZXJfc2l6ZShhdmN0eCwgb3V0cHV0X2J1ZmZl cl9wcmV2KTsKKysgICAgICAgIGlmIChyZXQgPCAwKQorKyAgICAgICAgICAgIGdvdG8gZW5kOwor KyAgICAgICAgdG90YWxfc2l6ZSArPSByZXQ7CisrICAgIH0KKysKKysgICAgcmV0ID0gdmFhcGlf ZW5jb2RlX2dldF9jb2RlZF9idWZmZXJfc2l6ZShhdmN0eCwgcGljLT5vdXRwdXRfYnVmZmVyKTsK KysgICAgaWYgKHJldCA8IDApCisrICAgICAgICBnb3RvIGVuZDsKKysgICAgdG90YWxfc2l6ZSAr PSByZXQ7CisrCisrICAgIHJldCA9IGZmX2dldF9lbmNvZGVfYnVmZmVyKGF2Y3R4LCBwa3QsIHRv dGFsX3NpemUsIDApOworKyAgICBpZiAocmV0IDwgMCkKKysgICAgICAgIGdvdG8gZW5kOworKyAg ICBwdHIgPSBwa3QtPmRhdGE7CisrCisrICAgIGlmIChjdHgtPmNvZGVkX2J1ZmZlcl9yZWYpIHsK KysgICAgICAgIHJldCA9IHZhYXBpX2VuY29kZV9nZXRfY29kZWRfYnVmZmVyX2RhdGEoYXZjdHgs IG91dHB1dF9idWZmZXJfcHJldiwgJnB0cik7CisrICAgICAgICBpZiAocmV0IDwgMCkKKysgICAg ICAgICAgICBnb3RvIGVuZDsKKyAgICAgfQorIAorKyAgICByZXQgPSB2YWFwaV9lbmNvZGVfZ2V0 X2NvZGVkX2J1ZmZlcl9kYXRhKGF2Y3R4LCBwaWMtPm91dHB1dF9idWZmZXIsICZwdHIpOworKyAg ICBpZiAocmV0IDwgMCkKKysgICAgICAgIGdvdG8gZW5kOworKworK2VuZDoKKysgICAgaWYgKGN0 eC0+Y29kZWRfYnVmZmVyX3JlZikgeworKyAgICAgICAgYXZfYnVmZmVyX3VucmVmKCZjdHgtPmNv ZGVkX2J1ZmZlcl9yZWYpOworKyAgICB9CisgICAgIGF2X2J1ZmZlcl91bnJlZigmcGljLT5vdXRw dXRfYnVmZmVyX3JlZik7CisgICAgIHBpYy0+b3V0cHV0X2J1ZmZlciA9IFZBX0lOVkFMSURfSUQ7 CisgCisrICAgIHJldHVybiByZXQ7CisrfQorKworK3N0YXRpYyBpbnQgdmFhcGlfZW5jb2RlX291 dHB1dChBVkNvZGVjQ29udGV4dCAqYXZjdHgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFZBQVBJRW5jb2RlUGljdHVyZSAqcGljLCBBVlBhY2tldCAqcGt0KQorK3sKKysgICAgVkFB UElFbmNvZGVDb250ZXh0ICpjdHggPSBhdmN0eC0+cHJpdl9kYXRhOworKyAgICBBVlBhY2tldCAq cGt0X3B0ciA9IHBrdDsKKysgICAgaW50IGVycjsKKysKKysgICAgZXJyID0gdmFhcGlfZW5jb2Rl X3dhaXQoYXZjdHgsIHBpYyk7CisrICAgIGlmIChlcnIgPCAwKQorKyAgICAgICAgcmV0dXJuIGVy cjsKKysKKysgICAgaWYgKHBpYy0+bm9uX2luZGVwZW5kZW50X2ZyYW1lKSB7CisrICAgICAgICBh dl9hc3NlcnQwKCFjdHgtPmNvZGVkX2J1ZmZlcl9yZWYpOworKyAgICAgICAgY3R4LT5jb2RlZF9i dWZmZXJfcmVmID0gYXZfYnVmZmVyX3JlZihwaWMtPm91dHB1dF9idWZmZXJfcmVmKTsKKysKKysg ICAgICAgIGlmIChwaWMtPnRhaWxfc2l6ZSkgeworKyAgICAgICAgICAgIGlmIChjdHgtPnRhaWxf cGt0LT5zaXplKSB7CisrICAgICAgICAgICAgICAgIGVyciA9IEFWRVJST1IoQVZFUlJPUl9CVUcp OworKyAgICAgICAgICAgICAgICBnb3RvIGVuZDsKKysgICAgICAgICAgICB9CisrCisrICAgICAg ICAgICAgZXJyID0gZmZfZ2V0X2VuY29kZV9idWZmZXIoYXZjdHgsIGN0eC0+dGFpbF9wa3QsIHBp Yy0+dGFpbF9zaXplLCAwKTsKKysgICAgICAgICAgICBpZiAoZXJyIDwgMCkKKysgICAgICAgICAg ICAgICAgZ290byBlbmQ7CisrCisrICAgICAgICAgICAgbWVtY3B5KGN0eC0+dGFpbF9wa3QtPmRh dGEsIHBpYy0+dGFpbF9kYXRhLCBwaWMtPnRhaWxfc2l6ZSk7CisrICAgICAgICAgICAgcGt0X3B0 ciA9IGN0eC0+dGFpbF9wa3Q7CisrICAgICAgICB9CisrICAgIH0gZWxzZSB7CisrICAgICAgICBl cnIgPSB2YWFwaV9lbmNvZGVfZ2V0X2NvZGVkX2RhdGEoYXZjdHgsIHBpYywgcGt0KTsKKysgICAg ICAgIGlmIChlcnIgPCAwKQorKyAgICAgICAgICAgIGdvdG8gZW5kOworKyAgICB9CisrCisgICAg IGF2X2xvZyhhdmN0eCwgQVZfTE9HX0RFQlVHLCAiT3V0cHV0IHJlYWQgZm9yIHBpYyAlIlBSSWQ2 NCIvJSJQUklkNjQiLlxuIiwKKyAgICAgICAgICAgIHBpYy0+ZGlzcGxheV9vcmRlciwgcGljLT5l bmNvZGVfb3JkZXIpOworLSAgICByZXR1cm4gMDsKKyAKKy1mYWlsX21hcHBlZDoKKy0gICAgdmFV bm1hcEJ1ZmZlcihjdHgtPmh3Y3R4LT5kaXNwbGF5LCBwaWMtPm91dHB1dF9idWZmZXIpOworLWZh aWw6CisrICAgIHZhYXBpX2VuY29kZV9zZXRfb3V0cHV0X3Byb3BlcnR5KGF2Y3R4LCBwaWMsIHBr dF9wdHIpOworKworK2VuZDoKKyAgICAgYXZfYnVmZmVyX3VucmVmKCZwaWMtPm91dHB1dF9idWZm ZXJfcmVmKTsKKyAgICAgcGljLT5vdXRwdXRfYnVmZmVyID0gVkFfSU5WQUxJRF9JRDsKKyAgICAg cmV0dXJuIGVycjsKK0BAIC04MTEsOCArOTQ1LDEyIEBAIHN0YXRpYyB2b2lkIHZhYXBpX2VuY29k ZV9hZGRfcmVmKEFWQ29kZWNDb250ZXh0ICphdmN0eCwKKyAKKyAgICAgaWYgKGlzX3JlZikgewor ICAgICAgICAgYXZfYXNzZXJ0MChwaWMgIT0gdGFyZ2V0KTsKKy0gICAgICAgIGF2X2Fzc2VydDAo cGljLT5uYl9yZWZzIDwgTUFYX1BJQ1RVUkVfUkVGRVJFTkNFUyk7CistICAgICAgICBwaWMtPnJl ZnNbcGljLT5uYl9yZWZzKytdID0gdGFyZ2V0OworKyAgICAgICAgYXZfYXNzZXJ0MChwaWMtPm5i X3JlZnNbMF0gPCBNQVhfUElDVFVSRV9SRUZFUkVOQ0VTICYmCisrICAgICAgICAgICAgICAgICAg IHBpYy0+bmJfcmVmc1sxXSA8IE1BWF9QSUNUVVJFX1JFRkVSRU5DRVMpOworKyAgICAgICAgaWYg KHRhcmdldC0+ZGlzcGxheV9vcmRlciA8IHBpYy0+ZGlzcGxheV9vcmRlcikKKysgICAgICAgICAg ICBwaWMtPnJlZnNbMF1bcGljLT5uYl9yZWZzWzBdKytdID0gdGFyZ2V0OworKyAgICAgICAgZWxz ZQorKyAgICAgICAgICAgIHBpYy0+cmVmc1sxXVtwaWMtPm5iX3JlZnNbMV0rK10gPSB0YXJnZXQ7 CisgICAgICAgICArK3JlZnM7CisgICAgIH0KKyAKK0BAIC04NDEsMTAgKzk3OSwxNiBAQCBzdGF0 aWMgdm9pZCB2YWFwaV9lbmNvZGVfcmVtb3ZlX3JlZnMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAor ICAgICBpZiAocGljLT5yZWZfcmVtb3ZlZFtsZXZlbF0pCisgICAgICAgICByZXR1cm47CisgCist ICAgIGZvciAoaSA9IDA7IGkgPCBwaWMtPm5iX3JlZnM7IGkrKykgeworLSAgICAgICAgYXZfYXNz ZXJ0MChwaWMtPnJlZnNbaV0pOworLSAgICAgICAgLS1waWMtPnJlZnNbaV0tPnJlZl9jb3VudFts ZXZlbF07CistICAgICAgICBhdl9hc3NlcnQwKHBpYy0+cmVmc1tpXS0+cmVmX2NvdW50W2xldmVs XSA+PSAwKTsKKysgICAgZm9yIChpID0gMDsgaSA8IHBpYy0+bmJfcmVmc1swXTsgaSsrKSB7Cisr ICAgICAgICBhdl9hc3NlcnQwKHBpYy0+cmVmc1swXVtpXSk7CisrICAgICAgICAtLXBpYy0+cmVm c1swXVtpXS0+cmVmX2NvdW50W2xldmVsXTsKKysgICAgICAgIGF2X2Fzc2VydDAocGljLT5yZWZz WzBdW2ldLT5yZWZfY291bnRbbGV2ZWxdID49IDApOworKyAgICB9CisrCisrICAgIGZvciAoaSA9 IDA7IGkgPCBwaWMtPm5iX3JlZnNbMV07IGkrKykgeworKyAgICAgICAgYXZfYXNzZXJ0MChwaWMt PnJlZnNbMV1baV0pOworKyAgICAgICAgLS1waWMtPnJlZnNbMV1baV0tPnJlZl9jb3VudFtsZXZl bF07CisrICAgICAgICBhdl9hc3NlcnQwKHBpYy0+cmVmc1sxXVtpXS0+cmVmX2NvdW50W2xldmVs XSA+PSAwKTsKKyAgICAgfQorIAorICAgICBmb3IgKGkgPSAwOyBpIDwgcGljLT5uYl9kcGJfcGlj czsgaSsrKSB7CitAQCAtODg5LDcgKzEwMzMsNyBAQCBzdGF0aWMgdm9pZCB2YWFwaV9lbmNvZGVf c2V0X2JfcGljdHVyZXMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAorICAgICAgICAgICAgIHZhYXBp X2VuY29kZV9hZGRfcmVmKGF2Y3R4LCBwaWMsIGVuZCwgICAxLCAxLCAwKTsKKyAgICAgICAgICAg ICB2YWFwaV9lbmNvZGVfYWRkX3JlZihhdmN0eCwgcGljLCBwcmV2LCAgMCwgMCwgMSk7CisgCist ICAgICAgICAgICAgZm9yIChyZWYgPSBlbmQtPnJlZnNbMV07IHJlZjsgcmVmID0gcmVmLT5yZWZz WzFdKQorKyAgICAgICAgICAgIGZvciAocmVmID0gZW5kLT5yZWZzWzFdWzBdOyByZWY7IHJlZiA9 IHJlZi0+cmVmc1sxXVswXSkKKyAgICAgICAgICAgICAgICAgdmFhcGlfZW5jb2RlX2FkZF9yZWYo YXZjdHgsIHBpYywgcmVmLCAwLCAxLCAwKTsKKyAgICAgICAgIH0KKyAgICAgICAgICpsYXN0ID0g cHJldjsKK0BAIC05MTIsNyArMTA1Niw3IEBAIHN0YXRpYyB2b2lkIHZhYXBpX2VuY29kZV9zZXRf Yl9waWN0dXJlcyhBVkNvZGVjQ29udGV4dCAqYXZjdHgsCisgICAgICAgICB2YWFwaV9lbmNvZGVf YWRkX3JlZihhdmN0eCwgcGljLCBlbmQsICAgMSwgMSwgMCk7CisgICAgICAgICB2YWFwaV9lbmNv ZGVfYWRkX3JlZihhdmN0eCwgcGljLCBwcmV2LCAgMCwgMCwgMSk7CisgCistICAgICAgICBmb3Ig KHJlZiA9IGVuZC0+cmVmc1sxXTsgcmVmOyByZWYgPSByZWYtPnJlZnNbMV0pCisrICAgICAgICBm b3IgKHJlZiA9IGVuZC0+cmVmc1sxXVswXTsgcmVmOyByZWYgPSByZWYtPnJlZnNbMV1bMF0pCisg ICAgICAgICAgICAgdmFhcGlfZW5jb2RlX2FkZF9yZWYoYXZjdHgsIHBpYywgcmVmLCAwLCAxLCAw KTsKKyAKKyAgICAgICAgIGlmIChpID4gMSkKK0BAIC05MjYsMTEgKzEwNzAsNDQgQEAgc3RhdGlj IHZvaWQgdmFhcGlfZW5jb2RlX3NldF9iX3BpY3R1cmVzKEFWQ29kZWNDb250ZXh0ICphdmN0eCwK KyAgICAgfQorIH0KKyAKKytzdGF0aWMgdm9pZCB2YWFwaV9lbmNvZGVfYWRkX25leHRfcHJldihB VkNvZGVjQ29udGV4dCAqYXZjdHgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgVkFBUElFbmNvZGVQaWN0dXJlICpwaWMpCisreworKyAgICBWQUFQSUVuY29kZUNvbnRl eHQgKmN0eCA9IGF2Y3R4LT5wcml2X2RhdGE7CisrICAgIGludCBpOworKworKyAgICBpZiAoIXBp YykKKysgICAgICAgIHJldHVybjsKKysKKysgICAgaWYgKHBpYy0+dHlwZSA9PSBQSUNUVVJFX1RZ UEVfSURSKSB7CisrICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY3R4LT5uYl9uZXh0X3ByZXY7IGkr KykgeworKyAgICAgICAgICAgIC0tY3R4LT5uZXh0X3ByZXZbaV0tPnJlZl9jb3VudFswXTsKKysg ICAgICAgICAgICBjdHgtPm5leHRfcHJldltpXSA9IE5VTEw7CisrICAgICAgICB9CisrICAgICAg ICBjdHgtPm5leHRfcHJldlswXSA9IHBpYzsKKysgICAgICAgICsrcGljLT5yZWZfY291bnRbMF07 CisrICAgICAgICBjdHgtPm5iX25leHRfcHJldiA9IDE7CisrCisrICAgICAgICByZXR1cm47Cisr ICAgIH0KKysKKysgICAgaWYgKGN0eC0+bmJfbmV4dF9wcmV2IDwgTUFYX1BJQ1RVUkVfUkVGRVJF TkNFUykgeworKyAgICAgICAgY3R4LT5uZXh0X3ByZXZbY3R4LT5uYl9uZXh0X3ByZXYrK10gPSBw aWM7CisrICAgICAgICArK3BpYy0+cmVmX2NvdW50WzBdOworKyAgICB9IGVsc2UgeworKyAgICAg ICAgLS1jdHgtPm5leHRfcHJldlswXS0+cmVmX2NvdW50WzBdOworKyAgICAgICAgZm9yIChpID0g MDsgaSA8IE1BWF9QSUNUVVJFX1JFRkVSRU5DRVMgLSAxOyBpKyspCisrICAgICAgICAgICAgY3R4 LT5uZXh0X3ByZXZbaV0gPSBjdHgtPm5leHRfcHJldltpICsgMV07CisrICAgICAgICBjdHgtPm5l eHRfcHJldltpXSA9IHBpYzsKKysgICAgICAgICsrcGljLT5yZWZfY291bnRbMF07CisrICAgIH0K Kyt9CisrCisgc3RhdGljIGludCB2YWFwaV9lbmNvZGVfcGlja19uZXh0KEFWQ29kZWNDb250ZXh0 ICphdmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkFBUElFbmNvZGVQ aWN0dXJlICoqcGljX291dCkKKyB7CisgICAgIFZBQVBJRW5jb2RlQ29udGV4dCAqY3R4ID0gYXZj dHgtPnByaXZfZGF0YTsKKy0gICAgVkFBUElFbmNvZGVQaWN0dXJlICpwaWMgPSBOVUxMLCAqbmV4 dCwgKnN0YXJ0OworKyAgICBWQUFQSUVuY29kZVBpY3R1cmUgKnBpYyA9IE5VTEwsICpwcmV2ID0g TlVMTCwgKm5leHQsICpzdGFydDsKKyAgICAgaW50IGksIGJfY291bnRlciwgY2xvc2VkX2dvcF9l bmQ7CisgCisgICAgIC8vIElmIHRoZXJlIGFyZSBhbnkgQi1mcmFtZXMgYWxyZWFkeSBxdWV1ZWQs IHRoZSBuZXh0IG9uZSB0byBlbmNvZGUKK0BAIC05NDEsMTEgKzExMTgsMTggQEAgc3RhdGljIGlu dCB2YWFwaV9lbmNvZGVfcGlja19uZXh0KEFWQ29kZWNDb250ZXh0ICphdmN0eCwKKyAgICAgICAg ICAgICBjb250aW51ZTsKKyAgICAgICAgIGlmIChwaWMtPnR5cGUgIT0gUElDVFVSRV9UWVBFX0Ip CisgICAgICAgICAgICAgY29udGludWU7CistICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGljLT5u Yl9yZWZzOyBpKyspIHsKKy0gICAgICAgICAgICBpZiAoIXBpYy0+cmVmc1tpXS0+ZW5jb2RlX2lz c3VlZCkKKysgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwaWMtPm5iX3JlZnNbMF07IGkrKykgewor KyAgICAgICAgICAgIGlmICghcGljLT5yZWZzWzBdW2ldLT5lbmNvZGVfaXNzdWVkKQorKyAgICAg ICAgICAgICAgICBicmVhazsKKysgICAgICAgIH0KKysgICAgICAgIGlmIChpICE9IHBpYy0+bmJf cmVmc1swXSkKKysgICAgICAgICAgICBjb250aW51ZTsKKysKKysgICAgICAgIGZvciAoaSA9IDA7 IGkgPCBwaWMtPm5iX3JlZnNbMV07IGkrKykgeworKyAgICAgICAgICAgIGlmICghcGljLT5yZWZz WzFdW2ldLT5lbmNvZGVfaXNzdWVkKQorICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg IH0KKy0gICAgICAgIGlmIChpID09IHBpYy0+bmJfcmVmcykKKysgICAgICAgIGlmIChpID09IHBp Yy0+bmJfcmVmc1sxXSkKKyAgICAgICAgICAgICBicmVhazsKKyAgICAgfQorIAorQEAgLTEwNDQs MjEgKzEyMjgsMzAgQEAgc3RhdGljIGludCB2YWFwaV9lbmNvZGVfcGlja19uZXh0KEFWQ29kZWND b250ZXh0ICphdmN0eCwKKyAKKyAgICAgdmFhcGlfZW5jb2RlX2FkZF9yZWYoYXZjdHgsIHBpYywg cGljLCAwLCAxLCAwKTsKKyAgICAgaWYgKHBpYy0+dHlwZSAhPSBQSUNUVVJFX1RZUEVfSURSKSB7 CistICAgICAgICB2YWFwaV9lbmNvZGVfYWRkX3JlZihhdmN0eCwgcGljLCBzdGFydCwKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBpYy0+dHlwZSA9PSBQSUNUVVJFX1RZUEVfUCwKKy0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJfY291bnRlciA+IDAsIDApOworLSAgICAgICAg dmFhcGlfZW5jb2RlX2FkZF9yZWYoYXZjdHgsIHBpYywgY3R4LT5uZXh0X3ByZXYsIDAsIDAsIDEp OworKyAgICAgICAgLy8gVE9ETzogYXBwbHkgYm90aCBwcmV2aW91cyBhbmQgZm9yd2FyZCBtdWx0 aSByZWZlcmVuY2UgZm9yIGFsbCB2YWFwaSBlbmNvZGVycy4KKysgICAgICAgIC8vIEFuZCBMMC9M MSByZWZlcmVuY2UgZnJhbWUgbnVtYmVyIGNhbiBiZSBzZXQgZHluYW1pY2FsbHkgdGhyb3VnaCBx dWVyeQorKyAgICAgICAgLy8gVkFDb25maWdBdHRyaWJFbmNNYXhSZWZGcmFtZXMgYXR0cmlidXRl LgorKyAgICAgICAgaWYgKGF2Y3R4LT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BVjEpIHsKKysg ICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY3R4LT5uYl9uZXh0X3ByZXY7IGkrKykKKysgICAg ICAgICAgICAgICAgdmFhcGlfZW5jb2RlX2FkZF9yZWYoYXZjdHgsIHBpYywgY3R4LT5uZXh0X3By ZXZbaV0sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYy0+dHlwZSA9 PSBQSUNUVVJFX1RZUEVfUCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Yl9jb3VudGVyID4gMCwgMCk7CisrICAgICAgICB9IGVsc2UKKysgICAgICAgICAgICB2YWFwaV9l bmNvZGVfYWRkX3JlZihhdmN0eCwgcGljLCBzdGFydCwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwaWMtPnR5cGUgPT0gUElDVFVSRV9UWVBFX1AsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYl9jb3VudGVyID4gMCwgMCk7CisrCisrICAgICAgICB2YWFwaV9l bmNvZGVfYWRkX3JlZihhdmN0eCwgcGljLCBjdHgtPm5leHRfcHJldltjdHgtPm5iX25leHRfcHJl diAtIDFdLCAwLCAwLCAxKTsKKyAgICAgfQorLSAgICBpZiAoY3R4LT5uZXh0X3ByZXYpCistICAg ICAgICAtLWN0eC0+bmV4dF9wcmV2LT5yZWZfY291bnRbMF07CisgCisgICAgIGlmIChiX2NvdW50 ZXIgPiAwKSB7CisgICAgICAgICB2YWFwaV9lbmNvZGVfc2V0X2JfcGljdHVyZXMoYXZjdHgsIHN0 YXJ0LCBwaWMsIHBpYywgMSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm Y3R4LT5uZXh0X3ByZXYpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZw cmV2KTsKKyAgICAgfSBlbHNlIHsKKy0gICAgICAgIGN0eC0+bmV4dF9wcmV2ID0gcGljOworKyAg ICAgICAgcHJldiA9IHBpYzsKKyAgICAgfQorLSAgICArK2N0eC0+bmV4dF9wcmV2LT5yZWZfY291 bnRbMF07CisrICAgIHZhYXBpX2VuY29kZV9hZGRfbmV4dF9wcmV2KGF2Y3R4LCBwcmV2KTsKKysK KyAgICAgcmV0dXJuIDA7CisgfQorIAorQEAgLTEyMDUsMTAgKzEzOTgsMjMgQEAgZmFpbDoKKyBp bnQgZmZfdmFhcGlfZW5jb2RlX3JlY2VpdmVfcGFja2V0KEFWQ29kZWNDb250ZXh0ICphdmN0eCwg QVZQYWNrZXQgKnBrdCkKKyB7CisgICAgIFZBQVBJRW5jb2RlQ29udGV4dCAqY3R4ID0gYXZjdHgt PnByaXZfZGF0YTsKKy0gICAgVkFBUElFbmNvZGVQaWN0dXJlICpwaWM7CisrICAgIFZBQVBJRW5j b2RlUGljdHVyZSAqcGljID0gTlVMTDsKKyAgICAgQVZGcmFtZSAqZnJhbWUgPSBjdHgtPmZyYW1l OworICAgICBpbnQgZXJyOworIAorK3N0YXJ0OgorKyAgICAvKiogaWYgbm8gQiBmcmFtZSBiZWZv cmUgcmVwZWF0IFAgZnJhbWUsIHNlbnQgcmVwZWF0IFAgZnJhbWUgb3V0LiAqLworKyAgICBpZiAo Y3R4LT50YWlsX3BrdC0+c2l6ZSkgeworKyAgICAgICAgZm9yIChWQUFQSUVuY29kZVBpY3R1cmUg KnRtcCA9IGN0eC0+cGljX3N0YXJ0OyB0bXA7IHRtcCA9IHRtcC0+bmV4dCkgeworKyAgICAgICAg ICAgIGlmICh0bXAtPnR5cGUgPT0gUElDVFVSRV9UWVBFX0IgJiYgdG1wLT5wdHMgPCBjdHgtPnRh aWxfcGt0LT5wdHMpCisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIGVsc2Ug aWYgKCF0bXAtPm5leHQpIHsKKysgICAgICAgICAgICAgICAgYXZfcGFja2V0X21vdmVfcmVmKHBr dCwgY3R4LT50YWlsX3BrdCk7CisrICAgICAgICAgICAgICAgIGdvdG8gZW5kOworKyAgICAgICAg ICAgIH0KKysgICAgICAgIH0KKysgICAgfQorKworICAgICBlcnIgPSBmZl9lbmNvZGVfZ2V0X2Zy YW1lKGF2Y3R4LCBmcmFtZSk7CisgICAgIGlmIChlcnIgPCAwICYmIGVyciAhPSBBVkVSUk9SX0VP RikKKyAgICAgICAgIHJldHVybiBlcnI7CitAQCAtMTIyOCw4ICsxNDM0LDYgQEAgaW50IGZmX3Zh YXBpX2VuY29kZV9yZWNlaXZlX3BhY2tldChBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWUGFja2V0 ICpwa3QpCisgICAgIH0KKyAKKyAgICAgaWYgKGN0eC0+aGFzX3N5bmNfYnVmZmVyX2Z1bmMpIHsK Ky0gICAgICAgIHBpYyA9IE5VTEw7CistCisgICAgICAgICBpZiAoYXZfZmlmb19jYW5fd3JpdGUo Y3R4LT5lbmNvZGVfZmlmbykpIHsKKyAgICAgICAgICAgICBlcnIgPSB2YWFwaV9lbmNvZGVfcGlj a19uZXh0KGF2Y3R4LCAmcGljKTsKKyAgICAgICAgICAgICBpZiAoIWVycikgeworQEAgLTEyNTUs NyArMTQ1OSw2IEBAIGludCBmZl92YWFwaV9lbmNvZGVfcmVjZWl2ZV9wYWNrZXQoQVZDb2RlY0Nv bnRleHQgKmF2Y3R4LCBBVlBhY2tldCAqcGt0KQorICAgICAgICAgYXZfZmlmb19yZWFkKGN0eC0+ ZW5jb2RlX2ZpZm8sICZwaWMsIDEpOworICAgICAgICAgY3R4LT5lbmNvZGVfb3JkZXIgPSBwaWMt PmVuY29kZV9vcmRlciArIDE7CisgICAgIH0gZWxzZSB7CistICAgICAgICBwaWMgPSBOVUxMOwor ICAgICAgICAgZXJyID0gdmFhcGlfZW5jb2RlX3BpY2tfbmV4dChhdmN0eCwgJnBpYyk7CisgICAg ICAgICBpZiAoZXJyIDwgMCkKKyAgICAgICAgICAgICByZXR1cm4gZXJyOworQEAgLTEyNzYsMjcg KzE0NzksMjEgQEAgaW50IGZmX3ZhYXBpX2VuY29kZV9yZWNlaXZlX3BhY2tldChBVkNvZGVjQ29u dGV4dCAqYXZjdHgsIEFWUGFja2V0ICpwa3QpCisgICAgICAgICByZXR1cm4gZXJyOworICAgICB9 CisgCistICAgIGlmIChjdHgtPm91dHB1dF9kZWxheSA9PSAwKSB7CistICAgICAgICBwa3QtPmR0 cyA9IHBrdC0+cHRzOworLSAgICB9IGVsc2UgaWYgKHBpYy0+ZW5jb2RlX29yZGVyIDwgY3R4LT5k ZWNvZGVfZGVsYXkpIHsKKy0gICAgICAgIGlmIChjdHgtPnRzX3JpbmdbcGljLT5lbmNvZGVfb3Jk ZXJdIDwgSU5UNjRfTUlOICsgY3R4LT5kdHNfcHRzX2RpZmYpCistICAgICAgICAgICAgcGt0LT5k dHMgPSBJTlQ2NF9NSU47CistICAgICAgICBlbHNlCistICAgICAgICAgICAgcGt0LT5kdHMgPSBj dHgtPnRzX3JpbmdbcGljLT5lbmNvZGVfb3JkZXJdIC0gY3R4LT5kdHNfcHRzX2RpZmY7CistICAg IH0gZWxzZSB7CistICAgICAgICBwa3QtPmR0cyA9IGN0eC0+dHNfcmluZ1socGljLT5lbmNvZGVf b3JkZXIgLSBjdHgtPmRlY29kZV9kZWxheSkgJQorLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKDMgKiBjdHgtPm91dHB1dF9kZWxheSArIGN0eC0+YXN5bmNfZGVwdGgpXTsKKy0gICAg fQorLSAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywgIk91dHB1dCBwYWNrZXQ6IHB0cyAl IlBSSWQ2NCIgZHRzICUiUFJJZDY0Ii5cbiIsCistICAgICAgICAgICBwa3QtPnB0cywgcGt0LT5k dHMpOworLQorICAgICBjdHgtPm91dHB1dF9vcmRlciA9IHBpYy0+ZW5jb2RlX29yZGVyOworICAg ICB2YWFwaV9lbmNvZGVfY2xlYXJfb2xkKGF2Y3R4KTsKKyAKKysgICAgLyoqIGxvb3AgdG8gZ2V0 IGFuIGF2YWlsYWJsZSBwa3QgaW4gZW5jb2RlciBmbHVzaGluZy4gKi8KKysgICAgaWYgKGN0eC0+ ZW5kX29mX3N0cmVhbSAmJiAhcGt0LT5zaXplKQorKyAgICAgICAgZ290byBzdGFydDsKKysKKytl bmQ6CisrICAgIGlmIChwa3QtPnNpemUpCisrICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19E RUJVRywgIk91dHB1dCBwYWNrZXQ6IHB0cyAlIlBSSWQ2NCIsIGR0cyAlIlBSSWQ2NCIsICIKKysg ICAgICAgICAgICAgICAic2l6ZSAlZCBieXRlcy5cbiIsIHBrdC0+cHRzLCBwa3QtPmR0cywgcGt0 LT5zaXplKTsKKysKKyAgICAgcmV0dXJuIDA7CisgfQorIAorLQorIHN0YXRpYyBhdl9jb2xkIHZv aWQgdmFhcGlfZW5jb2RlX2FkZF9nbG9iYWxfcGFyYW0oQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBp bnQgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHZvaWQgKmJ1ZmZlciwgc2l6ZV90IHNpemUpCisgeworQEAgLTI1OTcsNiArMjc5NCwxMiBA QCBhdl9jb2xkIGludCBmZl92YWFwaV9lbmNvZGVfaW5pdChBVkNvZGVjQ29udGV4dCAqYXZjdHgp CisgICAgIGN0eC0+ZGV2aWNlID0gKEFWSFdEZXZpY2VDb250ZXh0KiljdHgtPmRldmljZV9yZWYt PmRhdGE7CisgICAgIGN0eC0+aHdjdHggPSBjdHgtPmRldmljZS0+aHdjdHg7CisgCisrICAgIGN0 eC0+dGFpbF9wa3QgPSBhdl9wYWNrZXRfYWxsb2MoKTsKKysgICAgaWYgKCFjdHgtPnRhaWxfcGt0 KSB7CisrICAgICAgICBlcnIgPSBBVkVSUk9SKEVOT01FTSk7CisrICAgICAgICBnb3RvIGZhaWw7 CisrICAgIH0KKysKKyAgICAgZXJyID0gdmFhcGlfZW5jb2RlX3Byb2ZpbGVfZW50cnlwb2ludChh dmN0eCk7CisgICAgIGlmIChlcnIgPCAwKQorICAgICAgICAgZ290byBmYWlsOworQEAgLTI3ODks NiArMjk5Miw3IEBAIGF2X2NvbGQgaW50IGZmX3ZhYXBpX2VuY29kZV9jbG9zZShBVkNvZGVjQ29u dGV4dCAqYXZjdHgpCisgICAgIH0KKyAKKyAgICAgYXZfZnJhbWVfZnJlZSgmY3R4LT5mcmFtZSk7 CisrICAgIGF2X3BhY2tldF9mcmVlKCZjdHgtPnRhaWxfcGt0KTsKKyAKKyAgICAgYXZfZnJlZXAo JmN0eC0+Y29kZWNfc2VxdWVuY2VfcGFyYW1zKTsKKyAgICAgYXZfZnJlZXAoJmN0eC0+Y29kZWNf cGljdHVyZV9wYXJhbXMpOworZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdmFhcGlfZW5jb2RlLmgg Yi9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZS5oCitpbmRleCBhMWU2MzlmLi40MTZhM2NlIDEwMDY0 NAorLS0tIGEvbGliYXZjb2RlYy92YWFwaV9lbmNvZGUuaAorKysrIGIvbGliYXZjb2RlYy92YWFw aV9lbmNvZGUuaAorQEAgLTQ5LDYgKzQ5LDcgQEAgZW51bSB7CisgICAgIC8vIEEuNC4xOiB0YWJs ZSBBLjYgYWxsb3dzIGF0IG1vc3QgMjAgdGlsZSBjb2x1bW5zIGZvciBhbnkgbGV2ZWwuCisgICAg IE1BWF9USUxFX0NPTFMgICAgICAgICAgPSAyMCwKKyAgICAgTUFYX0FTWU5DX0RFUFRIICAgICAg ICA9IDY0LAorKyAgICBNQVhfUkVGRVJFTkNFX0xJU1RfTlVNID0gMiwKKyB9OworIAorIGV4dGVy biBjb25zdCBBVkNvZGVjSFdDb25maWdJbnRlcm5hbCAqY29uc3QgZmZfdmFhcGlfZW5jb2RlX2h3 X2NvbmZpZ3NbXTsKK0BAIC0xMTYsMTAgKzExNywxMSBAQCB0eXBlZGVmIHN0cnVjdCBWQUFQSUVu Y29kZVBpY3R1cmUgeworICAgICAvLyBidXQgbm90IGlmIGl0IGlzbid0LgorICAgICBpbnQgICAg ICAgICAgICAgICAgICAgICBuYl9kcGJfcGljczsKKyAgICAgc3RydWN0IFZBQVBJRW5jb2RlUGlj dHVyZSAqZHBiW01BWF9EUEJfU0laRV07CistICAgIC8vIFRoZSByZWZlcmVuY2UgcGljdHVyZXMg dXNlZCBpbiBkZWNvZGluZyB0aGlzIHBpY3R1cmUuICBJZiB0aGV5IGFyZQorLSAgICAvLyB1c2Vk IGJ5IGxhdGVyIHBpY3R1cmVzIHRoZXkgd2lsbCBhbHNvIGFwcGVhciBpbiB0aGUgRFBCLgorLSAg ICBpbnQgICAgICAgICAgICAgICAgICAgICBuYl9yZWZzOworLSAgICBzdHJ1Y3QgVkFBUElFbmNv ZGVQaWN0dXJlICpyZWZzW01BWF9QSUNUVVJFX1JFRkVSRU5DRVNdOworKyAgICAvLyBUaGUgcmVm ZXJlbmNlIHBpY3R1cmVzIHVzZWQgaW4gZGVjb2RpbmcgdGhpcyBwaWN0dXJlLiBJZiB0aGV5IGFy ZQorKyAgICAvLyB1c2VkIGJ5IGxhdGVyIHBpY3R1cmVzIHRoZXkgd2lsbCBhbHNvIGFwcGVhciBp biB0aGUgRFBCLiByZWZbMF1bXSBmb3IKKysgICAgLy8gcHJldmlvdXMgcmVmZXJlbmNlIGZyYW1l cy4gcmVmWzFdW10gZm9yIGZ1dHVyZSByZWZlcmVuY2UgZnJhbWVzLgorKyAgICBpbnQgICAgICAg ICAgICAgICAgICAgICBuYl9yZWZzW01BWF9SRUZFUkVOQ0VfTElTVF9OVU1dOworKyAgICBzdHJ1 Y3QgVkFBUElFbmNvZGVQaWN0dXJlICpyZWZzW01BWF9SRUZFUkVOQ0VfTElTVF9OVU1dW01BWF9Q SUNUVVJFX1JFRkVSRU5DRVNdOworICAgICAvLyBUaGUgcHJldmlvdXMgcmVmZXJlbmNlIHBpY3R1 cmUgaW4gZW5jb2RlIG9yZGVyLiAgTXVzdCBiZSBpbiBhdCBsZWFzdAorICAgICAvLyBvbmUgb2Yg dGhlIHJlZmVyZW5jZSBsaXN0IGFuZCBEUEIgbGlzdC4KKyAgICAgc3RydWN0IFZBQVBJRW5jb2Rl UGljdHVyZSAqcHJldjsKK0BAIC0xMzEsNiArMTMzLDE3IEBAIHR5cGVkZWYgc3RydWN0IFZBQVBJ RW5jb2RlUGljdHVyZSB7CisgCisgICAgIGludCAgICAgICAgICBuYl9zbGljZXM7CisgICAgIFZB QVBJRW5jb2RlU2xpY2UgKnNsaWNlczsKKysKKysgICAgLyoqCisrICAgICAqIGluZGljYXRlIGlm IGN1cnJlbnQgZnJhbWUgaXMgYW4gaW5kZXBlbmRlbnQgZnJhbWUgdGhhdCB0aGUgY29kZWQgZGF0 YQorKyAgICAgKiBjYW4gYmUgcHVzaGVkIHRvIGRvd25zdHJlYW0gZGlyZWN0bHkuIENvZGVkIG9m IG5vbi1pbmRlcGVuZGVudCBmcmFtZQorKyAgICAgKiBkYXRhIHdpbGwgYmUgY29uY2F0ZW5hdGVk IGludG8gbmV4dCBpbmRlcGVuZGVudCBmcmFtZS4KKysgICAgICovCisrICAgIGludCBub25faW5k ZXBlbmRlbnRfZnJhbWU7CisrICAgIC8qKiBUYWlsIGRhdGEgb2YgY3VycmVudCBwaWMsIHVzZWQg b25seSBmb3IgcmVwZWF0IGhlYWRlciBvZiBBVjEuICovCisrICAgIGNoYXIgdGFpbF9kYXRhW01B WF9QQVJBTV9CVUZGRVJfU0laRV07CisrICAgIC8qKiBCeXRlIGxlbmd0aCBvZiB0YWlsX2RhdGEu ICovCisrICAgIHNpemVfdCB0YWlsX3NpemU7CisgfSBWQUFQSUVuY29kZVBpY3R1cmU7CisgCisg dHlwZWRlZiBzdHJ1Y3QgVkFBUElFbmNvZGVQcm9maWxlIHsKK0BAIC0yOTAsOCArMzAzLDkgQEAg dHlwZWRlZiBzdHJ1Y3QgVkFBUElFbmNvZGVDb250ZXh0IHsKKyAgICAgLy8gQ3VycmVudCBlbmNv ZGluZyB3aW5kb3csIGluIGRpc3BsYXkgKGlucHV0KSBvcmRlci4KKyAgICAgVkFBUElFbmNvZGVQ aWN0dXJlICpwaWNfc3RhcnQsICpwaWNfZW5kOworICAgICAvLyBUaGUgbmV4dCBwaWN0dXJlIHRv IHVzZSBhcyB0aGUgcHJldmlvdXMgcmVmZXJlbmNlIHBpY3R1cmUgaW4KKy0gICAgLy8gZW5jb2Rp bmcgb3JkZXIuCistICAgIFZBQVBJRW5jb2RlUGljdHVyZSAqbmV4dF9wcmV2OworKyAgICAvLyBl bmNvZGluZyBvcmRlci4gT3JkZXIgZnJvbSBzbWFsbCB0byBsYXJnZSBpbiBlbmNvZGluZyBvcmRl ci4KKysgICAgVkFBUElFbmNvZGVQaWN0dXJlICpuZXh0X3ByZXZbTUFYX1BJQ1RVUkVfUkVGRVJF TkNFU107CisrICAgIGludCAgICAgICAgICAgICAgICAgbmJfbmV4dF9wcmV2OworIAorICAgICAv LyBOZXh0IGlucHV0IG9yZGVyIGluZGV4IChkaXNwbGF5IG9yZGVyKS4KKyAgICAgaW50NjRfdCAg ICAgICAgIGlucHV0X29yZGVyOworQEAgLTM2NCw2ICszNzgsMTYgQEAgdHlwZWRlZiBzdHJ1Y3Qg VkFBUElFbmNvZGVDb250ZXh0IHsKKyAgICAgQVZGaWZvICAgICAgICAgICplbmNvZGVfZmlmbzsK KyAgICAgLy8gTWF4IG51bWJlciBvZiBmcmFtZSBidWZmZXJlZCBpbiBlbmNvZGVyLgorICAgICBp bnQgICAgICAgICAgICAgYXN5bmNfZGVwdGg7CisrCisrICAgIC8qKiBIZWFkIGRhdGEgZm9yIGN1 cnJlbnQgb3V0cHV0IHBrdCwgdXNlZCBvbmx5IGZvciBBVjEuICovCisrICAgIC8vdm9pZCAgKmhl YWRlcl9kYXRhOworKyAgICAvL3NpemVfdCBoZWFkZXJfZGF0YV9zaXplOworKworKyAgICAvKiog QnVmZmVyZWQgY29kZWQgZGF0YSBvZiBhIHBpYyBpZiBpdCBpcyBhbiBub24taW5kZXBlbmRlbnQg ZnJhbWUuICovCisrICAgIEFWQnVmZmVyUmVmICAgICAqY29kZWRfYnVmZmVyX3JlZjsKKysKKysg ICAgLyoqIFRhaWwgZGF0YSBvZiBhIHBpYywgbm93IG9ubHkgdXNlZCBmb3IgYXYxIHJlcGVhdCBm cmFtZSBoZWFkZXIuICovCisrICAgIEFWUGFja2V0ICAgICAgICAqdGFpbF9wa3Q7CisgfSBWQUFQ SUVuY29kZUNvbnRleHQ7CisgCisgZW51bSB7CitAQCAtMzgwLDYgKzQwNCw5IEBAIGVudW0gewor ICAgICAvLyBDb2RlYyBzdXBwb3J0cyBub24tSURSIGtleSBwaWN0dXJlcyAodGhhdCBpcywga2V5 IHBpY3R1cmVzIGRvCisgICAgIC8vIG5vdCBuZWNlc3NhcmlseSBlbXB0eSB0aGUgRFBCKS4KKyAg ICAgRkxBR19OT05fSURSX0tFWV9QSUNUVVJFUyAgPSAxIDw8IDUsCisrICAgIC8vIENvZGVjIG91 dHB1dCBwYWNrZXQgd2l0aG91dCB0aW1lc3RhbXAgZGVsYXksIHdoaWNoIG1lYW5zIHRoZQorKyAg ICAvLyBvdXRwdXQgcGFja2V0IGhhcyBzYW1lIFBUUyBhbmQgRFRTLgorKyAgICBGTEFHX1RJTUVT VEFNUF9OT19ERUxBWSAgICA9IDEgPDwgNiwKKyB9OworIAorIHR5cGVkZWYgc3RydWN0IFZBQVBJ RW5jb2RlVHlwZSB7CitkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92YWFwaV9lbmNvZGVfYXYxLmMg Yi9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZV9hdjEuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2lu ZGV4IDAwMDAwMDAuLjlkMTAxZmEKKy0tLSAvZGV2L251bGwKKysrKyBiL2xpYmF2Y29kZWMvdmFh cGlfZW5jb2RlX2F2MS5jCitAQCAtMCwwICsxLDk0OSBAQAorKy8qCisrICogQ29weXJpZ2h0IChj KSAyMDIzIEludGVsIENvcnBvcmF0aW9uCisrICoKKysgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBG Rm1wZWcuCisrICoKKysgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yCisrICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBM aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAqCisrICog RkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws CisrICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKysgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICogTGljZW5zZSBhbG9u ZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyAqIEZv dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rvbiwg TUEgMDIxMTAtMTMwMSBVU0EKKysgKi8KKysKKysjaW5jbHVkZSA8dmEvdmEuaD4KKysjaW5jbHVk ZSA8dmEvdmFfZW5jX2F2MS5oPgorKworKyNpbmNsdWRlICJsaWJhdnV0aWwvcGl4ZGVzYy5oIgor KyNpbmNsdWRlICJsaWJhdnV0aWwvb3B0LmgiCisrCisrI2luY2x1ZGUgImNic19hdjEuaCIKKysj aW5jbHVkZSAicHV0X2JpdHMuaCIKKysjaW5jbHVkZSAiY29kZWNfaW50ZXJuYWwuaCIKKysjaW5j bHVkZSAiYXYxX2xldmVscy5oIgorKyNpbmNsdWRlICJ2YWFwaV9lbmNvZGUuaCIKKysKKysjZGVm aW5lIEFWMV9NQVhfUVVBTlQgMjU1CisrCisrdHlwZWRlZiBzdHJ1Y3QgVkFBUElFbmNvZGVBVjFQ aWN0dXJlIHsKKysgICAgaW50NjRfdCBsYXN0X2lkcl9mcmFtZTsKKysgICAgaW50IHNsb3Q7Cisr fSBWQUFQSUVuY29kZUFWMVBpY3R1cmU7CisrCisrdHlwZWRlZiBzdHJ1Y3QgVkFBUElFbmNvZGVB VjFDb250ZXh0IHsKKysgICAgVkFBUElFbmNvZGVDb250ZXh0IGNvbW1vbjsKKysgICAgQVYxUmF3 T0JVIHNoOyAvKio8IHNlcXVlbmNlIGhlYWRlci4qLworKyAgICBBVjFSYXdPQlUgZmg7IC8qKjwg ZnJhbWUgaGVhZGVyLiovCisrICAgIENvZGVkQml0c3RyZWFtQ29udGV4dCAqY2JjOworKyAgICBD b2RlZEJpdHN0cmVhbUZyYWdtZW50IGN1cnJlbnRfb2J1OworKyAgICBWQUNvbmZpZ0F0dHJpYlZh bEVuY0FWMSBhdHRyOworKyAgICBWQUNvbmZpZ0F0dHJpYlZhbEVuY0FWMUV4dDEgYXR0cl9leHQx OworKyAgICBWQUNvbmZpZ0F0dHJpYlZhbEVuY0FWMUV4dDIgYXR0cl9leHQyOworKworKyAgICBj aGFyIHNoX2RhdGFbTUFYX1BBUkFNX0JVRkZFUl9TSVpFXTsgLyoqPCBjb2RlZCBzZXF1ZW5jZSBo ZWFkZXIgZGF0YS4gKi8KKysgICAgc2l6ZV90IHNoX2RhdGFfbGVuOyAvKio8IGJpdCBsZW5ndGgg b2Ygc2hfZGF0YS4gKi8KKysgICAgY2hhciBmaF9kYXRhW01BWF9QQVJBTV9CVUZGRVJfU0laRV07 IC8qKjwgY29kZWQgZnJhbWUgaGVhZGVyIGRhdGEuICovCisrICAgIHNpemVfdCBmaF9kYXRhX2xl bjsgLyoqPCBiaXQgbGVuZ3RoIG9mIGZoX2RhdGEuICovCisrCisrICAgIHVpbnQ4X3QgdW5pZm9y bV90aWxlOworKyAgICB1aW50OF90IHVzZV8xMjh4MTI4X3N1cGVyYmxvY2s7CisrICAgIGludCBz Yl9jb2xzOworKyAgICBpbnQgc2Jfcm93czsKKysgICAgaW50IHRpbGVfY29sc19sb2cyOworKyAg ICBpbnQgdGlsZV9yb3dzX2xvZzI7CisrICAgIGludCBtYXhfdGlsZV93aWR0aF9zYjsKKysgICAg aW50IG1heF90aWxlX2hlaWdodF9zYjsKKysgICAgdWludDhfdCB3aWR0aF9pbl9zYnNfbWludXNf MVtBVjFfTUFYX1RJTEVfQ09MU107CisrICAgIHVpbnQ4X3QgaGVpZ2h0X2luX3Nic19taW51c18x W0FWMV9NQVhfVElMRV9ST1dTXTsKKysKKysgICAgaW50IG1pbl9sb2cyX3RpbGVfY29sczsKKysg ICAgaW50IG1heF9sb2cyX3RpbGVfY29sczsKKysgICAgaW50IG1pbl9sb2cyX3RpbGVfcm93czsK KysgICAgaW50IG1heF9sb2cyX3RpbGVfcm93czsKKysKKysgICAgaW50IHFfaWR4X2lkcjsKKysg ICAgaW50IHFfaWR4X3A7CisrICAgIGludCBxX2lkeF9iOworKworKyAgICAvKiogYml0IHBvc2l0 aW9ucyBpbiBjdXJyZW50IGZyYW1lIGhlYWRlciAqLworKyAgICBpbnQgcWluZGV4X29mZnNldDsK KysgICAgaW50IGxvb3BmaWx0ZXJfb2Zmc2V0OworKyAgICBpbnQgY2RlZl9zdGFydF9vZmZzZXQ7 CisrICAgIGludCBjZGVmX3BhcmFtX3NpemU7CisrCisrICAgIC8qKiB1c2VyIG9wdGlvbnMgKi8K KysgICAgaW50IHByb2ZpbGU7CisrICAgIGludCBsZXZlbDsKKysgICAgaW50IHRpZXI7CisrICAg IGludCB0aWxlX2NvbHMsIHRpbGVfcm93czsKKysgICAgaW50IHRpbGVfZ3JvdXBzOworK30gVkFB UElFbmNvZGVBVjFDb250ZXh0OworKworK3N0YXRpYyB2b2lkIHZhYXBpX2VuY29kZV9hdjFfdHJh Y2Vfd3JpdGVfbG9nKHZvaWQgKmN0eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQdXRCaXRDb250ZXh0ICpwYmMsIGludCBsZW5ndGgsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3RyLCBjb25z dCBpbnQgKnN1YnNjcmlwdHMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50NjRfdCB2YWx1ZSkKKyt7CisrICAgIFZBQVBJRW5jb2RlQVYxQ29udGV4dCAq cHJpdiA9IGN0eDsKKysgICAgaW50IHBvc2l0aW9uOworKworKyAgICBwb3NpdGlvbiA9IHB1dF9i aXRzX2NvdW50KHBiYyk7CisrICAgIGF2X2Fzc2VydDAocG9zaXRpb24gPj0gbGVuZ3RoKTsKKysK KysgICAgaWYgKCFzdHJjbXAoc3RyLCAiYmFzZV9xX2lkeCIpKQorKyAgICAgICAgcHJpdi0+cWlu ZGV4X29mZnNldCA9IHBvc2l0aW9uIC0gbGVuZ3RoOworKyAgICBlbHNlIGlmICghc3RyY21wKHN0 ciwgImxvb3BfZmlsdGVyX2xldmVsWzBdIikpCisrICAgICAgICBwcml2LT5sb29wZmlsdGVyX29m ZnNldCA9IHBvc2l0aW9uIC0gbGVuZ3RoOworKyAgICBlbHNlIGlmICghc3RyY21wKHN0ciwgImNk ZWZfZGFtcGluZ19taW51c18zIikpCisrICAgICAgICBwcml2LT5jZGVmX3N0YXJ0X29mZnNldCA9 IHBvc2l0aW9uIC0gbGVuZ3RoOworKyAgICBlbHNlIGlmICghc3RyY21wKHN0ciwgImNkZWZfdXZf c2VjX3N0cmVuZ3RoW2ldIikpCisrICAgICAgICBwcml2LT5jZGVmX3BhcmFtX3NpemUgPSBwb3Np dGlvbiAtIHByaXYtPmNkZWZfc3RhcnRfb2Zmc2V0OworK30KKysKKytzdGF0aWMgYXZfY29sZCBp bnQgdmFhcGlfZW5jb2RlX2F2MV9nZXRfZW5jb2Rlcl9jYXBzKEFWQ29kZWNDb250ZXh0ICphdmN0 eCkKKyt7CisrICAgIFZBQVBJRW5jb2RlQ29udGV4dCAqY3R4ID0gYXZjdHgtPnByaXZfZGF0YTsK KysgICAgVkFBUElFbmNvZGVBVjFDb250ZXh0ICpwcml2ID0gYXZjdHgtPnByaXZfZGF0YTsKKysK KysgICAgLy8gU3VyZmFjZXMgbXVzdCBiZSBhbGlnbmVkIHRvIHN1cGVyYmxvY2sgYm91bmRhcmll cy4KKysgICAgY3R4LT5zdXJmYWNlX3dpZHRoICA9IEZGQUxJR04oYXZjdHgtPndpZHRoLCAgcHJp di0+dXNlXzEyOHgxMjhfc3VwZXJibG9jayA/IDEyOCA6IDY0KTsKKysgICAgY3R4LT5zdXJmYWNl X2hlaWdodCA9IEZGQUxJR04oYXZjdHgtPmhlaWdodCwgcHJpdi0+dXNlXzEyOHgxMjhfc3VwZXJi bG9jayA/IDEyOCA6IDY0KTsKKysKKysgICAgcmV0dXJuIDA7CisrfQorKworK3N0YXRpYyBhdl9j b2xkIGludCB2YWFwaV9lbmNvZGVfYXYxX2NvbmZpZ3VyZShBVkNvZGVjQ29udGV4dCAqYXZjdHgp CisreworKyAgICBWQUFQSUVuY29kZUNvbnRleHQgICAgICpjdHggPSBhdmN0eC0+cHJpdl9kYXRh OworKyAgICBWQUFQSUVuY29kZUFWMUNvbnRleHQgKnByaXYgPSBhdmN0eC0+cHJpdl9kYXRhOwor KyAgICBpbnQgcmV0OworKworKyAgICByZXQgPSBmZl9jYnNfaW5pdCgmcHJpdi0+Y2JjLCBBVl9D T0RFQ19JRF9BVjEsIGF2Y3R4KTsKKysgICAgaWYgKHJldCA8IDApCisrICAgICAgICByZXR1cm4g cmV0OworKyAgICBwcml2LT5jYmMtPnRyYWNlX2VuYWJsZSAgPSAxOworKyAgICBwcml2LT5jYmMt PnRyYWNlX2xldmVsICAgPSBBVl9MT0dfREVCVUc7CisrICAgIHByaXYtPmNiYy0+dHJhY2VfY29u dGV4dCA9IGN0eDsKKysgICAgcHJpdi0+Y2JjLT50cmFjZV93cml0ZV9jYWxsYmFjayA9IHZhYXBp X2VuY29kZV9hdjFfdHJhY2Vfd3JpdGVfbG9nOworKworKyAgICBpZiAoY3R4LT5yY19tb2RlLT5x dWFsaXR5KSB7CisrICAgICAgICBwcml2LT5xX2lkeF9wID0gYXZfY2xpcChjdHgtPnJjX3F1YWxp dHksIDAsIEFWMV9NQVhfUVVBTlQpOworKyAgICAgICAgaWYgKGZhYnMoYXZjdHgtPmlfcXVhbnRf ZmFjdG9yKSA+IDAuMCkKKysgICAgICAgICAgICBwcml2LT5xX2lkeF9pZHIgPQorKyAgICAgICAg ICAgICAgICBhdl9jbGlwKChmYWJzKGF2Y3R4LT5pX3F1YW50X2ZhY3RvcikgKiBwcml2LT5xX2lk eF9wICArCisrICAgICAgICAgICAgICAgICAgICAgICAgIGF2Y3R4LT5pX3F1YW50X29mZnNldCkg KyAwLjUsCisrICAgICAgICAgICAgICAgICAgICAgICAgMCwgQVYxX01BWF9RVUFOVCk7CisrICAg ICAgICBlbHNlCisrICAgICAgICAgICAgcHJpdi0+cV9pZHhfaWRyID0gcHJpdi0+cV9pZHhfcDsK KysKKysgICAgICAgIGlmIChmYWJzKGF2Y3R4LT5iX3F1YW50X2ZhY3RvcikgPiAwLjApCisrICAg ICAgICAgICAgcHJpdi0+cV9pZHhfYiA9CisrICAgICAgICAgICAgICAgIGF2X2NsaXAoKGZhYnMo YXZjdHgtPmJfcXVhbnRfZmFjdG9yKSAqIHByaXYtPnFfaWR4X3AgICsKKysgICAgICAgICAgICAg ICAgICAgICAgICAgYXZjdHgtPmJfcXVhbnRfb2Zmc2V0KSArIDAuNSwKKysgICAgICAgICAgICAg ICAgICAgICAgICAwLCBBVjFfTUFYX1FVQU5UKTsKKysgICAgICAgIGVsc2UKKysgICAgICAgICAg ICBwcml2LT5xX2lkeF9iID0gcHJpdi0+cV9pZHhfcDsKKysgICAgfSBlbHNlIHsKKysgICAgICAg IC8qKiBBcmJpdHJhcnkgdmFsdWUgKi8KKysgICAgICAgIHByaXYtPnFfaWR4X2lkciA9IHByaXYt PnFfaWR4X3AgPSBwcml2LT5xX2lkeF9iID0gMTI4OworKyAgICB9CisrCisrICAgIHJldHVybiAw OworK30KKysKKytzdGF0aWMgaW50IHZhYXBpX2VuY29kZV9hdjFfYWRkX29idShBVkNvZGVjQ29u dGV4dCAqYXZjdHgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29kZWRC aXRzdHJlYW1GcmFnbWVudCAqYXUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdWludDhfdCB0eXBlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZv aWQgKm9idV91bml0KQorK3sKKysgICAgaW50IHJldDsKKysKKysgICAgcmV0ID0gZmZfY2JzX2lu c2VydF91bml0X2NvbnRlbnQoYXUsIC0xLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0eXBlLCBvYnVfdW5pdCwgTlVMTCk7CisrICAgIGlmIChyZXQgPCAwKSB7CisrICAg ICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkZhaWxlZCB0byBhZGQgT0JVIHVuaXQ6 ICIKKysgICAgICAgICAgICAgICAidHlwZSA9ICVkLlxuIiwgdHlwZSk7CisrICAgICAgICByZXR1 cm4gcmV0OworKyAgICB9CisrCisrICAgIHJldHVybiAwOworK30KKysKKytzdGF0aWMgaW50IHZh YXBpX2VuY29kZV9hdjFfd3JpdGVfb2J1KEFWQ29kZWNDb250ZXh0ICphdmN0eCwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmRhdGEsIHNpemVfdCAqZGF0YV9s ZW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2RlZEJpdHN0cmVh bUZyYWdtZW50ICpicykKKyt7CisrICAgIFZBQVBJRW5jb2RlQVYxQ29udGV4dCAqcHJpdiA9IGF2 Y3R4LT5wcml2X2RhdGE7CisrICAgIGludCByZXQ7CisrCisrICAgIHJldCA9IGZmX2Nic193cml0 ZV9mcmFnbWVudF9kYXRhKHByaXYtPmNiYywgYnMpOworKyAgICBpZiAocmV0IDwgMCkgeworKyAg ICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJGYWlsZWQgdG8gd3JpdGUgcGFja2Vk IGhlYWRlci5cbiIpOworKyAgICAgICAgcmV0dXJuIHJldDsKKysgICAgfQorKworKyAgICBpZiAo KHNpemVfdCk4ICogTUFYX1BBUkFNX0JVRkZFUl9TSVpFIDwgOCAqIGJzLT5kYXRhX3NpemUgLSBi cy0+ZGF0YV9iaXRfcGFkZGluZykgeworKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJS T1IsICJBY2Nlc3MgdW5pdCB0b28gbGFyZ2U6ICIKKysgICAgICAgICAgICAgICAiJXp1IDwgJXp1 LlxuIiwgKHNpemVfdCk4ICogTUFYX1BBUkFNX0JVRkZFUl9TSVpFLAorKyAgICAgICAgICAgICAg IDggKiBicy0+ZGF0YV9zaXplIC0gYnMtPmRhdGFfYml0X3BhZGRpbmcpOworKyAgICAgICAgcmV0 dXJuIEFWRVJST1IoRU5PU1BDKTsKKysgICAgfQorKworKyAgICBtZW1jcHkoZGF0YSwgYnMtPmRh dGEsIGJzLT5kYXRhX3NpemUpOworKyAgICAqZGF0YV9sZW4gPSA4ICogYnMtPmRhdGFfc2l6ZSAt IGJzLT5kYXRhX2JpdF9wYWRkaW5nOworKworKyAgICByZXR1cm4gMDsKKyt9CisrCisrc3RhdGlj IGludCB0aWxlX2xvZzIoaW50IGJsa1NpemUsIGludCB0YXJnZXQpIHsKKysgICAgaW50IGs7Cisr ICAgIGZvciAoayA9IDA7IChibGtTaXplIDw8IGspIDwgdGFyZ2V0OyBrKyspOworKyAgICByZXR1 cm4gazsKKyt9CisrCisrc3RhdGljIGludCB2YWFwaV9lbmNvZGVfYXYxX3NldF90aWxlKEFWQ29k ZWNDb250ZXh0ICphdmN0eCkKKyt7CisrICAgIFZBQVBJRW5jb2RlQVYxQ29udGV4dCAqcHJpdiA9 IGF2Y3R4LT5wcml2X2RhdGE7CisrICAgIGludCBtaV9jb2xzLCBtaV9yb3dzLCBzYl9zaGlmdCwg c2Jfc2l6ZTsKKysgICAgaW50IG1heF90aWxlX2FyZWFfc2IsIG1heF90aWxlX2FyZWFfc2JfdmFy aWVkOworKyAgICBpbnQgdGlsZV93aWR0aF9zYiwgdGlsZV9oZWlnaHRfc2IsIHdpZGVzdF90aWxl X3NiOworKyAgICBpbnQgdGlsZV9jb2xzLCB0aWxlX3Jvd3M7CisrICAgIGludCBtaW5fbG9nMl90 aWxlczsKKysgICAgaW50IGk7CisrCisrICAgIGlmIChwcml2LT50aWxlX2NvbHMgPiBBVjFfTUFY X1RJTEVfQ09MUyB8fAorKyAgICAgICAgcHJpdi0+dGlsZV9yb3dzID4gQVYxX01BWF9USUxFX1JP V1MpIHsKKysgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiSW52YWxpZCB0aWxl IG51bWJlciAlZHglZCwgc2hvdWxkIGxlc3MgdGhhbiAlZHglZC5cbiIsCisrICAgICAgICAgICAg ICAgcHJpdi0+dGlsZV9jb2xzLCBwcml2LT50aWxlX3Jvd3MsIEFWMV9NQVhfVElMRV9DT0xTLCBB VjFfTUFYX1RJTEVfUk9XUyk7CisrICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOworKyAg ICB9CisrCisrICAgIG1pX2NvbHMgPSAyICogKChhdmN0eC0+d2lkdGggKyA3KSA+PiAzKTsKKysg ICAgbWlfcm93cyA9IDIgKiAoKGF2Y3R4LT5oZWlnaHQgKyA3KSA+PiAzKTsKKysgICAgcHJpdi0+ c2JfY29scyA9IHByaXYtPnVzZV8xMjh4MTI4X3N1cGVyYmxvY2sgPworKyAgICAgICAgICAgICAg ICAgICAgKChtaV9jb2xzICsgMzEpID4+IDUpIDogKChtaV9jb2xzICsgMTUpID4+IDQpOworKyAg ICBwcml2LT5zYl9yb3dzID0gcHJpdi0+dXNlXzEyOHgxMjhfc3VwZXJibG9jayA/CisrICAgICAg ICAgICAgICAgICAgICAoKG1pX3Jvd3MgKyAzMSkgPj4gNSkgOiAoKG1pX3Jvd3MgKyAxNSkgPj4g NCk7CisrICAgIHNiX3NoaWZ0ID0gcHJpdi0+dXNlXzEyOHgxMjhfc3VwZXJibG9jayA/IDUgOiA0 OworKyAgICBzYl9zaXplICA9IHNiX3NoaWZ0ICsgMjsKKysgICAgcHJpdi0+bWF4X3RpbGVfd2lk dGhfc2IgPSBBVjFfTUFYX1RJTEVfV0lEVEggPj4gc2Jfc2l6ZTsKKysgICAgbWF4X3RpbGVfYXJl YV9zYiA9IEFWMV9NQVhfVElMRV9BUkVBICA+PiAoMiAqIHNiX3NpemUpOworKworKyAgICBwcml2 LT5taW5fbG9nMl90aWxlX2NvbHMgPSB0aWxlX2xvZzIocHJpdi0+bWF4X3RpbGVfd2lkdGhfc2Is IHByaXYtPnNiX2NvbHMpOworKyAgICBwcml2LT5tYXhfbG9nMl90aWxlX2NvbHMgPSB0aWxlX2xv ZzIoMSwgRkZNSU4ocHJpdi0+c2JfY29scywgQVYxX01BWF9USUxFX0NPTFMpKTsKKysgICAgcHJp di0+bWF4X2xvZzJfdGlsZV9yb3dzID0gdGlsZV9sb2cyKDEsIEZGTUlOKHByaXYtPnNiX3Jvd3Ms IEFWMV9NQVhfVElMRV9ST1dTKSk7CisrICAgIG1pbl9sb2cyX3RpbGVzID0gRkZNQVgocHJpdi0+ bWluX2xvZzJfdGlsZV9jb2xzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbGVfbG9n MihtYXhfdGlsZV9hcmVhX3NiLCBwcml2LT5zYl9yb3dzICogcHJpdi0+c2JfY29scykpOworKwor KyAgICB0aWxlX2NvbHMgPSBhdl9jbGlwKHByaXYtPnRpbGVfY29scywgKHByaXYtPnNiX2NvbHMg KyBwcml2LT5tYXhfdGlsZV93aWR0aF9zYiAtIDEpIC8gcHJpdi0+bWF4X3RpbGVfd2lkdGhfc2Is IHByaXYtPnNiX2NvbHMpOworKworKyAgICBpZiAoIXByaXYtPnRpbGVfY29scykKKysgICAgICAg IHByaXYtPnRpbGVfY29scyA9IHRpbGVfY29sczsKKysgICAgZWxzZSBpZiAocHJpdi0+dGlsZV9j b2xzICE9IHRpbGVfY29scyl7CisrICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwg IkludmFsaWQgdGlsZSBjb2xzICVkLCBzaG91bGQgYmUgaW4gcmFuZ2Ugb2YgJWR+JWRcbiIsCisr ICAgICAgICAgICAgICAgcHJpdi0+dGlsZV9jb2xzLAorKyAgICAgICAgICAgICAgIChwcml2LT5z Yl9jb2xzICsgcHJpdi0+bWF4X3RpbGVfd2lkdGhfc2IgLSAxKSAvIHByaXYtPm1heF90aWxlX3dp ZHRoX3NiLAorKyAgICAgICAgICAgICAgIHByaXYtPnNiX2NvbHMpOworKyAgICAgICAgcmV0dXJu IEFWRVJST1IoRUlOVkFMKTsKKysgICAgfQorKworKyAgICBwcml2LT50aWxlX2NvbHNfbG9nMiA9 IHRpbGVfbG9nMigxLCBwcml2LT50aWxlX2NvbHMpOworKyAgICB0aWxlX3dpZHRoX3NiID0gKHBy aXYtPnNiX2NvbHMgKyAoMSA8PCBwcml2LT50aWxlX2NvbHNfbG9nMikgLSAxKSA+PgorKyAgICAg ICAgICAgICAgICAgICAgcHJpdi0+dGlsZV9jb2xzX2xvZzI7CisrCisrICAgIGlmIChwcml2LT50 aWxlX3Jvd3MgPiBwcml2LT5zYl9yb3dzKSB7CisrICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xP R19FUlJPUiwgIkludmFsaWQgdGlsZSByb3dzICVkLCBzaG91bGQgYmUgbGVzcyB0aGFuICVkLlxu IiwKKysgICAgICAgICAgICAgICBwcml2LT50aWxlX3Jvd3MsIHByaXYtPnNiX3Jvd3MpOworKyAg ICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKKysgICAgfQorKworKyAgICAvKiogVHJ5IHVz ZXIgc2V0dGluZyB0aWxlIHJvd3MgbnVtYmVyIGZpcnN0LiAqLworKyAgICB0aWxlX3Jvd3MgPSBw cml2LT50aWxlX3Jvd3MgPyBwcml2LT50aWxlX3Jvd3MgOiAxOworKyAgICBmb3IgKDsgdGlsZV9y b3dzIDw9IHByaXYtPnNiX3Jvd3MgJiYgdGlsZV9yb3dzIDw9IEFWMV9NQVhfVElMRV9ST1dTOyB0 aWxlX3Jvd3MrKykgeworKyAgICAgICAgLyoqIHRyeSB1bmlmb3JtZWQgdGlsZS4gKi8KKysgICAg ICAgIHByaXYtPnRpbGVfcm93c19sb2cyID0gdGlsZV9sb2cyKDEsIHRpbGVfcm93cyk7CisrICAg ICAgICBpZiAoKHByaXYtPnNiX2NvbHMgKyB0aWxlX3dpZHRoX3NiIC0gMSkgLyB0aWxlX3dpZHRo X3NiID09IHByaXYtPnRpbGVfY29scykgeworKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBw cml2LT50aWxlX2NvbHMgLSAxOyBpKyspCisrICAgICAgICAgICAgICAgIHByaXYtPndpZHRoX2lu X3Nic19taW51c18xW2ldID0gdGlsZV93aWR0aF9zYiAtIDE7CisrICAgICAgICAgICAgcHJpdi0+ d2lkdGhfaW5fc2JzX21pbnVzXzFbaV0gPSBwcml2LT5zYl9jb2xzIC0gKHByaXYtPnRpbGVfY29s cyAtIDEpICogdGlsZV93aWR0aF9zYiAtIDE7CisrCisrICAgICAgICAgICAgdGlsZV9oZWlnaHRf c2IgPSAocHJpdi0+c2Jfcm93cyArICgxIDw8IHByaXYtPnRpbGVfcm93c19sb2cyKSAtIDEpID4+ CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2LT50aWxlX3Jvd3NfbG9nMjsKKysK KysgICAgICAgICAgICBpZiAoKHByaXYtPnNiX3Jvd3MgKyB0aWxlX2hlaWdodF9zYiAtIDEpIC8g dGlsZV9oZWlnaHRfc2IgPT0gdGlsZV9yb3dzICYmCisrICAgICAgICAgICAgICAgIHRpbGVfaGVp Z2h0X3NiIDw9IG1heF90aWxlX2FyZWFfc2IgLyB0aWxlX3dpZHRoX3NiKSB7CisrICAgICAgICAg ICAgICAgIGZvciAoaSA9IDA7IGkgPCB0aWxlX3Jvd3MgLSAxOyBpKyspCisrICAgICAgICAgICAg ICAgICAgICBwcml2LT5oZWlnaHRfaW5fc2JzX21pbnVzXzFbaV0gPSB0aWxlX2hlaWdodF9zYiAt IDE7CisrICAgICAgICAgICAgICAgIHByaXYtPmhlaWdodF9pbl9zYnNfbWludXNfMVtpXSA9IHBy aXYtPnNiX3Jvd3MgLSAodGlsZV9yb3dzIC0gMSkgKiB0aWxlX2hlaWdodF9zYiAtIDE7CisrCisr ICAgICAgICAgICAgICAgIHByaXYtPnVuaWZvcm1fdGlsZSA9IDE7CisrICAgICAgICAgICAgICAg IHByaXYtPm1pbl9sb2cyX3RpbGVfcm93cyA9IEZGTUFYKG1pbl9sb2cyX3RpbGVzIC0gcHJpdi0+ dGlsZV9jb2xzX2xvZzIsIDApOworKworKyAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAg ICAgICB9CisrICAgICAgICB9CisrCisrICAgICAgICAvKiogdHJ5IG5vbi11bmlmb3JtZWQgdGls ZS4gKi8KKysgICAgICAgIHdpZGVzdF90aWxlX3NiID0gMDsKKysgICAgICAgIGZvciAoaSA9IDA7 IGkgPCBwcml2LT50aWxlX2NvbHM7IGkrKykgeworKyAgICAgICAgICAgIHByaXYtPndpZHRoX2lu X3Nic19taW51c18xW2ldID0gKGkgKyAxKSAqIHByaXYtPnNiX2NvbHMgLyBwcml2LT50aWxlX2Nv bHMgLSBpICogcHJpdi0+c2JfY29scyAvIHByaXYtPnRpbGVfY29scyAtIDE7CisrICAgICAgICAg ICAgd2lkZXN0X3RpbGVfc2IgPSBGRk1BWCh3aWRlc3RfdGlsZV9zYiwgcHJpdi0+d2lkdGhfaW5f c2JzX21pbnVzXzFbaV0gKyAxKTsKKysgICAgICAgIH0KKysKKysgICAgICAgIGlmIChtaW5fbG9n Ml90aWxlcykKKysgICAgICAgICAgICBtYXhfdGlsZV9hcmVhX3NiX3ZhcmllZCA9IChwcml2LT5z Yl9yb3dzICogcHJpdi0+c2JfY29scykgPj4gKG1pbl9sb2cyX3RpbGVzICsgMSk7CisrICAgICAg ICBlbHNlCisrICAgICAgICAgICAgbWF4X3RpbGVfYXJlYV9zYl92YXJpZWQgPSBwcml2LT5zYl9y b3dzICogcHJpdi0+c2JfY29sczsKKysgICAgICAgIHByaXYtPm1heF90aWxlX2hlaWdodF9zYiA9 IEZGTUFYKDEsIG1heF90aWxlX2FyZWFfc2JfdmFyaWVkIC8gd2lkZXN0X3RpbGVfc2IpOworKwor KyAgICAgICAgaWYgKHRpbGVfcm93cyA9PSBhdl9jbGlwKHRpbGVfcm93cywgKHByaXYtPnNiX3Jv d3MgKyBwcml2LT5tYXhfdGlsZV9oZWlnaHRfc2IgLSAxKSAvIHByaXYtPm1heF90aWxlX2hlaWdo dF9zYiwgcHJpdi0+c2Jfcm93cykpIHsKKysgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGls ZV9yb3dzOyBpKyspCisrICAgICAgICAgICAgICAgIHByaXYtPmhlaWdodF9pbl9zYnNfbWludXNf MVtpXSA9IChpICsgMSkgKiBwcml2LT5zYl9yb3dzIC8gdGlsZV9yb3dzIC0gaSAqIHByaXYtPnNi X3Jvd3MgLyB0aWxlX3Jvd3MgLSAxOworKworKyAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAg fQorKworKyAgICAgICAgLyoqIFJldHVybiBpbnZhbGlkIHBhcmFtZXRlciBpZiBleHBsaWNpdCB0 aWxlIHJvd3MgaXMgc2V0LiAqLworKyAgICAgICAgaWYgKHByaXYtPnRpbGVfcm93cykgeworKyAg ICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiSW52YWxpZCB0aWxlIHJvd3Mg JWQuXG4iLCBwcml2LT50aWxlX3Jvd3MpOworKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVJ TlZBTCk7CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgcHJpdi0+dGlsZV9yb3dzID0gdGls ZV9yb3dzOworKyAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywgIlNldHRpbmcgdGlsZSBj b2xzL3Jvd3MgdG8gJWQvJWQuXG4iLAorKyAgICAgICAgICAgcHJpdi0+dGlsZV9jb2xzLCBwcml2 LT50aWxlX3Jvd3MpOworKworKyAgICAvKiogY2hlY2sgaWYgdGlsZSBjb2xzL3Jvd3MgaXMgc3Vw cG9ydGVkIGJ5IGRyaXZlci4gKi8KKysgICAgaWYgKHByaXYtPmF0dHJfZXh0Mi5iaXRzLm1heF90 aWxlX251bV9taW51czEpIHsKKysgICAgICAgIGlmICgocHJpdi0+dGlsZV9jb2xzICogcHJpdi0+ dGlsZV9yb3dzIC0gMSkgPiBwcml2LT5hdHRyX2V4dDIuYml0cy5tYXhfdGlsZV9udW1fbWludXMx KSB7CisrICAgICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJVbnN1cHBvcnRl ZCB0aWxlIG51bSAlZCAqICVkID0gJWQgYnkgZHJpdmVyLCAiCisrICAgICAgICAgICAgICAgICAg ICJzaG91bGQgYmUgYXQgbW9zdCAlZC5cbiIsIHByaXYtPnRpbGVfY29scywgcHJpdi0+dGlsZV9y b3dzLAorKyAgICAgICAgICAgICAgICAgICBwcml2LT50aWxlX2NvbHMgKiBwcml2LT50aWxlX3Jv d3MsCisrICAgICAgICAgICAgICAgICAgIHByaXYtPmF0dHJfZXh0Mi5iaXRzLm1heF90aWxlX251 bV9taW51czEgKyAxKTsKKysgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOworKyAg ICAgICAgfQorKyAgICB9CisrCisrICAgIC8qKiBjaGVjayBpZiB0aWxlIGdyb3VwIG51bWJlcnMg aXMgdmFsaWQuICovCisrICAgIGlmIChwcml2LT50aWxlX2dyb3VwcyA+IHByaXYtPnRpbGVfY29s cyAqIHByaXYtPnRpbGVfcm93cykgeworKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfV0FS TklORywgIkludmFsaWQgdGlsZSBncm91cHMgbnVtYmVyICVkLCAiCisrICAgICAgICAiY29ycmVj dCB0byAlZC5cbiIsIHByaXYtPnRpbGVfZ3JvdXBzLCBwcml2LT50aWxlX2NvbHMgKiBwcml2LT50 aWxlX3Jvd3MpOworKyAgICAgICAgcHJpdi0+dGlsZV9ncm91cHMgPSBwcml2LT50aWxlX2NvbHMg KiBwcml2LT50aWxlX3Jvd3M7CisrICAgIH0KKysKKysgICAgcmV0dXJuIDA7CisrfQorKworK3N0 YXRpYyBpbnQgdmFhcGlfZW5jb2RlX2F2MV93cml0ZV9zZXF1ZW5jZV9oZWFkZXIoQVZDb2RlY0Nv bnRleHQgKmF2Y3R4LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY2hhciAqZGF0YSwgc2l6ZV90ICpkYXRhX2xlbikKKyt7CisrICAgIFZBQVBJRW5j b2RlQVYxQ29udGV4dCAqcHJpdiA9IGF2Y3R4LT5wcml2X2RhdGE7CisrCisrICAgIG1lbWNweShk YXRhLCAmcHJpdi0+c2hfZGF0YSwgTUFYX1BBUkFNX0JVRkZFUl9TSVpFICogc2l6ZW9mKGNoYXIp KTsKKysgICAgKmRhdGFfbGVuID0gcHJpdi0+c2hfZGF0YV9sZW47CisrCisrICAgIHJldHVybiAw OworK30KKysKKytzdGF0aWMgaW50IHZhYXBpX2VuY29kZV9hdjFfaW5pdF9zZXF1ZW5jZV9wYXJh bXMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQorK3sKKysgICAgVkFBUElFbmNvZGVDb250ZXh0ICAg ICAgICAgICAgICAgKmN0eCA9IGF2Y3R4LT5wcml2X2RhdGE7CisrICAgIFZBQVBJRW5jb2RlQVYx Q29udGV4dCAgICAgICAgICAgKnByaXYgPSBhdmN0eC0+cHJpdl9kYXRhOworKyAgICBBVjFSYXdP QlUgICAgICAgICAgICAgICAgICAgICAqc2hfb2J1ID0gJnByaXYtPnNoOworKyAgICBBVjFSYXdT ZXF1ZW5jZUhlYWRlciAgICAgICAgICAgICAgKnNoID0gJnNoX29idS0+b2J1LnNlcXVlbmNlX2hl YWRlcjsKKysgICAgVkFFbmNTZXF1ZW5jZVBhcmFtZXRlckJ1ZmZlckFWMSAqdnNlcSA9IGN0eC0+ Y29kZWNfc2VxdWVuY2VfcGFyYW1zOworKyAgICBDb2RlZEJpdHN0cmVhbUZyYWdtZW50ICAgICAg ICAgICAqb2J1ID0gJnByaXYtPmN1cnJlbnRfb2J1OworKyAgICBjb25zdCBBVlBpeEZtdERlc2Ny aXB0b3IgKmRlc2M7CisrICAgIGludCByZXQ7CisrCisrICAgIG1lbXNldChzaF9vYnUsIDAsIHNp emVvZigqc2hfb2J1KSk7CisrICAgIHNoX29idS0+aGVhZGVyLm9idV90eXBlID0gQVYxX09CVV9T RVFVRU5DRV9IRUFERVI7CisrCisrICAgIGRlc2MgPSBhdl9waXhfZm10X2Rlc2NfZ2V0KHByaXYt PmNvbW1vbi5pbnB1dF9mcmFtZXMtPnN3X2Zvcm1hdCk7CisrICAgIGF2X2Fzc2VydDAoZGVzYyk7 CisrCisrICAgIHNoLT5zZXFfcHJvZmlsZSAgPSBhdmN0eC0+cHJvZmlsZTsKKysgICAgaWYgKCFz aC0+c2VxX2ZvcmNlX3NjcmVlbl9jb250ZW50X3Rvb2xzKQorKyAgICAgICAgc2gtPnNlcV9mb3Jj ZV9pbnRlZ2VyX212ID0gQVYxX1NFTEVDVF9JTlRFR0VSX01WOworKyAgICBzaC0+ZnJhbWVfd2lk dGhfYml0c19taW51c18xICA9IGF2X2xvZzIoYXZjdHgtPndpZHRoKTsKKysgICAgc2gtPmZyYW1l X2hlaWdodF9iaXRzX21pbnVzXzEgPSBhdl9sb2cyKGF2Y3R4LT5oZWlnaHQpOworKyAgICBzaC0+ bWF4X2ZyYW1lX3dpZHRoX21pbnVzXzEgICA9IGF2Y3R4LT53aWR0aCAtIDE7CisrICAgIHNoLT5t YXhfZnJhbWVfaGVpZ2h0X21pbnVzXzEgID0gYXZjdHgtPmhlaWdodCAtIDE7CisrICAgIHNoLT5z ZXFfdGllclswXSAgICAgICAgICAgICAgID0gcHJpdi0+dGllcjsKKysgICAgLyoqIGVuYWJsZSBv cmRlciBoaW50IGFuZCByZXNlcnZlIG1heGltdW0gOCBiaXRzIGZvciBpdCBieSBkZWZhdWx0LiAq LworKyAgICBzaC0+ZW5hYmxlX29yZGVyX2hpbnQgICAgICAgICA9IDE7CisrICAgIHNoLT5vcmRl cl9oaW50X2JpdHNfbWludXNfMSAgID0gNzsKKysKKysgICAgc2gtPmNvbG9yX2NvbmZpZyA9IChB VjFSYXdDb2xvckNvbmZpZykgeworKyAgICAgICAgLmhpZ2hfYml0ZGVwdGggICAgICAgICAgICAg ICAgICA9IGRlc2MtPmNvbXBbMF0uZGVwdGggPT0gOCA/IDAgOiAxLAorKyAgICAgICAgLmNvbG9y X3ByaW1hcmllcyAgICAgICAgICAgICAgICA9IGF2Y3R4LT5jb2xvcl9wcmltYXJpZXMsCisrICAg ICAgICAudHJhbnNmZXJfY2hhcmFjdGVyaXN0aWNzICAgICAgID0gYXZjdHgtPmNvbG9yX3RyYywK KysgICAgICAgIC5tYXRyaXhfY29lZmZpY2llbnRzICAgICAgICAgICAgPSBhdmN0eC0+Y29sb3Jz cGFjZSwKKysgICAgICAgIC5jb2xvcl9kZXNjcmlwdGlvbl9wcmVzZW50X2ZsYWcgPSAoYXZjdHgt PmNvbG9yX3ByaW1hcmllcyAhPSBBVkNPTF9QUklfVU5TUEVDSUZJRUQgfHwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZjdHgtPmNvbG9yX3RyYyAgICAgICAh PSBBVkNPTF9UUkNfVU5TUEVDSUZJRUQgfHwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYXZjdHgtPmNvbG9yc3BhY2UgICAgICAhPSBBVkNPTF9TUENfVU5TUEVD SUZJRUQpLAorKyAgICAgICAgLmNvbG9yX3JhbmdlICAgICAgICAgICAgICAgICAgICA9IGF2Y3R4 LT5jb2xvcl9yYW5nZSA9PSBBVkNPTF9SQU5HRV9KUEVHLAorKyAgICAgICAgLnN1YnNhbXBsaW5n X3ggICAgICAgICAgICAgICAgICA9IGRlc2MtPmxvZzJfY2hyb21hX3csCisrICAgICAgICAuc3Vi c2FtcGxpbmdfeSAgICAgICAgICAgICAgICAgID0gZGVzYy0+bG9nMl9jaHJvbWFfaCwKKysgICAg fTsKKysKKysgICAgc3dpdGNoIChhdmN0eC0+Y2hyb21hX3NhbXBsZV9sb2NhdGlvbikgeworKyAg ICAgICAgY2FzZSBBVkNIUk9NQV9MT0NfTEVGVDoKKysgICAgICAgICAgICBzaC0+Y29sb3JfY29u ZmlnLmNocm9tYV9zYW1wbGVfcG9zaXRpb24gPSBBVjFfQ1NQX1ZFUlRJQ0FMOworKyAgICAgICAg ICAgIGJyZWFrOworKyAgICAgICAgY2FzZSBBVkNIUk9NQV9MT0NfVE9QTEVGVDoKKysgICAgICAg ICAgICBzaC0+Y29sb3JfY29uZmlnLmNocm9tYV9zYW1wbGVfcG9zaXRpb24gPSBBVjFfQ1NQX0NP TE9DQVRFRDsKKysgICAgICAgICAgICBicmVhazsKKysgICAgICAgIGRlZmF1bHQ6CisrICAgICAg ICAgICAgc2gtPmNvbG9yX2NvbmZpZy5jaHJvbWFfc2FtcGxlX3Bvc2l0aW9uID0gQVYxX0NTUF9V TktOT1dOOworKyAgICAgICAgICAgIGJyZWFrOworKyAgICB9CisrCisrICAgIGlmIChhdmN0eC0+ bGV2ZWwgIT0gRkZfUFJPRklMRV9VTktOT1dOKSB7CisrICAgICAgICBzaC0+c2VxX2xldmVsX2lk eFswXSA9IGF2Y3R4LT5sZXZlbDsKKysgICAgfSBlbHNlIHsKKysgICAgICAgIGNvbnN0IEFWMUxl dmVsRGVzY3JpcHRvciAqbGV2ZWw7CisrICAgICAgICBmbG9hdCBmcmFtZXJhdGU7CisrCisrICAg ICAgICBpZiAoYXZjdHgtPmZyYW1lcmF0ZS5udW0gPiAwICYmIGF2Y3R4LT5mcmFtZXJhdGUuZGVu ID4gMCkKKysgICAgICAgICAgICBmcmFtZXJhdGUgPSBhdmN0eC0+ZnJhbWVyYXRlLm51bSAvIGF2 Y3R4LT5mcmFtZXJhdGUuZGVuOworKyAgICAgICAgZWxzZQorKyAgICAgICAgICAgIGZyYW1lcmF0 ZSA9IDA7CisrCisrICAgICAgICBsZXZlbCA9IGZmX2F2MV9ndWVzc19sZXZlbChhdmN0eC0+Yml0 X3JhdGUsIHByaXYtPnRpZXIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj dHgtPnN1cmZhY2Vfd2lkdGgsIGN0eC0+c3VyZmFjZV9oZWlnaHQsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwcml2LT50aWxlX3Jvd3MgKiBwcml2LT50aWxlX2NvbHMsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2LT50aWxlX2NvbHMsIGZyYW1l cmF0ZSk7CisrICAgICAgICBpZiAobGV2ZWwpIHsKKysgICAgICAgICAgICBhdl9sb2coYXZjdHgs IEFWX0xPR19WRVJCT1NFLCAiVXNpbmcgbGV2ZWwgJXMuXG4iLCBsZXZlbC0+bmFtZSk7CisrICAg ICAgICAgICAgc2gtPnNlcV9sZXZlbF9pZHhbMF0gPSBsZXZlbC0+bGV2ZWxfaWR4OworKyAgICAg ICAgfSBlbHNlIHsKKysgICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19WRVJCT1NFLCAi U3RyZWFtIHdpbGwgbm90IGNvbmZvcm0gdG8gIgorKyAgICAgICAgICAgICAgICAgICAiYW55IG5v cm1hbCBsZXZlbCwgdXNpbmcgbWF4aW11bSBwYXJhbWV0ZXJzIGxldmVsIGJ5IGRlZmF1bHQuXG4i KTsKKysgICAgICAgICAgICBzaC0+c2VxX2xldmVsX2lkeFswXSA9IDMxOworKyAgICAgICAgICAg IHNoLT5zZXFfdGllclswXSA9IDE7CisrICAgICAgICB9CisrICAgIH0KKysgICAgdnNlcS0+c2Vx X3Byb2ZpbGUgICAgICAgICAgICAgPSBzaC0+c2VxX3Byb2ZpbGU7CisrICAgIHZzZXEtPnNlcV9s ZXZlbF9pZHggICAgICAgICAgID0gc2gtPnNlcV9sZXZlbF9pZHhbMF07CisrICAgIHZzZXEtPnNl cV90aWVyICAgICAgICAgICAgICAgID0gc2gtPnNlcV90aWVyWzBdOworKyAgICB2c2VxLT5vcmRl cl9oaW50X2JpdHNfbWludXNfMSA9IHNoLT5vcmRlcl9oaW50X2JpdHNfbWludXNfMTsKKysgICAg dnNlcS0+aW50cmFfcGVyaW9kICAgICAgICAgICAgPSBjdHgtPmdvcF9zaXplOworKyAgICB2c2Vx LT5pcF9wZXJpb2QgICAgICAgICAgICAgICA9IGN0eC0+Yl9wZXJfcCArIDE7CisrCisrICAgIHZz ZXEtPnNlcV9maWVsZHMuYml0cy5lbmFibGVfb3JkZXJfaGludCA9IHNoLT5lbmFibGVfb3JkZXJf aGludDsKKysKKysgICAgaWYgKCEoY3R4LT52YV9yY19tb2RlICYgVkFfUkNfQ1FQKSkgeworKyAg ICAgICAgdnNlcS0+Yml0c19wZXJfc2Vjb25kID0gY3R4LT52YV9iaXRfcmF0ZTsKKysgICAgICAg IHZzZXEtPnNlcV9maWVsZHMuYml0cy5lbmFibGVfY2RlZiA9IHNoLT5lbmFibGVfY2RlZiA9IDE7 CisrICAgIH0KKysKKysgICAgcmV0ID0gdmFhcGlfZW5jb2RlX2F2MV9hZGRfb2J1KGF2Y3R4LCBv YnUsIEFWMV9PQlVfU0VRVUVOQ0VfSEVBREVSLCAmcHJpdi0+c2gpOworKyAgICBpZiAocmV0IDwg MCkKKysgICAgICAgIGdvdG8gZW5kOworKworKyAgICByZXQgPSB2YWFwaV9lbmNvZGVfYXYxX3dy aXRlX29idShhdmN0eCwgcHJpdi0+c2hfZGF0YSwgJnByaXYtPnNoX2RhdGFfbGVuLCBvYnUpOwor KyAgICBpZiAocmV0IDwgMCkKKysgICAgICAgIGdvdG8gZW5kOworKworK2VuZDoKKysgICAgZmZf Y2JzX2ZyYWdtZW50X3Jlc2V0KG9idSk7CisrICAgIHJldHVybiByZXQ7CisrfQorKworK3N0YXRp YyBpbnQgdmFhcGlfZW5jb2RlX2F2MV9pbml0X3BpY3R1cmVfcGFyYW1zKEFWQ29kZWNDb250ZXh0 ICphdmN0eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBWQUFQSUVuY29kZVBpY3R1cmUgKnBpYykKKyt7CisrICAgIFZBQVBJRW5jb2RlQ29udGV4dCAg ICAgICAgICAgICAgKmN0eCA9IGF2Y3R4LT5wcml2X2RhdGE7CisrICAgIFZBQVBJRW5jb2RlQVYx Q29udGV4dCAgICAgICAgICAqcHJpdiA9IGF2Y3R4LT5wcml2X2RhdGE7CisrICAgIFZBQVBJRW5j b2RlQVYxUGljdHVyZSAgICAgICAgICAqaHBpYyA9IHBpYy0+cHJpdl9kYXRhOworKyAgICBBVjFS YXdPQlUgICAgICAgICAgICAgICAgICAgICpmaF9vYnUgPSAmcHJpdi0+Zmg7CisrICAgIEFWMVJh d0ZyYW1lSGVhZGVyICAgICAgICAgICAgICAgICpmaCA9ICZmaF9vYnUtPm9idS5mcmFtZS5oZWFk ZXI7CisrICAgIFZBRW5jUGljdHVyZVBhcmFtZXRlckJ1ZmZlckFWMSAqdnBpYyA9IHBpYy0+Y29k ZWNfcGljdHVyZV9wYXJhbXM7CisrICAgIENvZGVkQml0c3RyZWFtRnJhZ21lbnQgICAgICAgICAg Km9idSA9ICZwcml2LT5jdXJyZW50X29idTsKKysgICAgVkFBUElFbmNvZGVQaWN0dXJlICAgICpy ZWY7CisrICAgIFZBQVBJRW5jb2RlQVYxUGljdHVyZSAqaHJlZjsKKysgICAgaW50IHNsb3QsIGk7 CisrICAgIGludCByZXQ7CisrICAgIHN0YXRpYyBjb25zdCBpbnQ4X3QgZGVmYXVsdF9sb29wX2Zp bHRlcl9yZWZfZGVsdGFzW0FWMV9UT1RBTF9SRUZTX1BFUl9GUkFNRV0gPQorKyAgICAgICAgeyAx LCAwLCAwLCAwLCAtMSwgMCwgLTEsIC0xIH07CisrCisrICAgIG1lbXNldChmaF9vYnUsIDAsIHNp emVvZigqZmhfb2J1KSk7CisrICAgIHBpYy0+bmJfc2xpY2VzID0gcHJpdi0+dGlsZV9ncm91cHM7 CisrICAgIHBpYy0+bm9uX2luZGVwZW5kZW50X2ZyYW1lID0gcGljLT5lbmNvZGVfb3JkZXIgPCBw aWMtPmRpc3BsYXlfb3JkZXI7CisrICAgIGZoX29idS0+aGVhZGVyLm9idV90eXBlID0gQVYxX09C VV9GUkFNRV9IRUFERVI7CisrICAgIGZoX29idS0+aGVhZGVyLm9idV9oYXNfc2l6ZV9maWVsZCA9 IDE7CisrCisrICAgIHN3aXRjaCAocGljLT50eXBlKSB7CisrICAgIGNhc2UgUElDVFVSRV9UWVBF X0lEUjoKKysgICAgICAgIGF2X2Fzc2VydDAocGljLT5uYl9yZWZzWzBdID09IDAgfHwgcGljLT5u Yl9yZWZzWzFdKTsKKysgICAgICAgIGZoLT5mcmFtZV90eXBlID0gQVYxX0ZSQU1FX0tFWTsKKysg ICAgICAgIGZoLT5yZWZyZXNoX2ZyYW1lX2ZsYWdzID0gMHhGRjsKKysgICAgICAgIGZoLT5iYXNl X3FfaWR4ID0gcHJpdi0+cV9pZHhfaWRyOworKyAgICAgICAgaHBpYy0+c2xvdCA9IDA7CisrICAg ICAgICBocGljLT5sYXN0X2lkcl9mcmFtZSA9IHBpYy0+ZGlzcGxheV9vcmRlcjsKKysgICAgICAg IGJyZWFrOworKyAgICBjYXNlIFBJQ1RVUkVfVFlQRV9QOgorKyAgICAgICAgYXZfYXNzZXJ0MChw aWMtPm5iX3JlZnNbMF0pOworKyAgICAgICAgZmgtPmZyYW1lX3R5cGUgPSBBVjFfRlJBTUVfSU5U RVI7CisrICAgICAgICBmaC0+YmFzZV9xX2lkeCA9IHByaXYtPnFfaWR4X3A7CisrICAgICAgICBy ZWYgPSBwaWMtPnJlZnNbMF1bcGljLT5uYl9yZWZzWzBdIC0gMV07CisrICAgICAgICBocmVmID0g cmVmLT5wcml2X2RhdGE7CisrICAgICAgICBocGljLT5zbG90ID0gIWhyZWYtPnNsb3Q7CisrICAg ICAgICBocGljLT5sYXN0X2lkcl9mcmFtZSA9IGhyZWYtPmxhc3RfaWRyX2ZyYW1lOworKyAgICAg ICAgZmgtPnJlZnJlc2hfZnJhbWVfZmxhZ3MgPSAxIDw8IGhwaWMtPnNsb3Q7CisrCisrICAgICAg ICAvKiogc2V0IHRoZSBuZWFyZXN0IGZyYW1lIGluIEwwIGFzIGFsbCByZWZlcmVuY2UgZnJhbWUu ICovCisrICAgICAgICBmb3IgKGkgPSAwOyBpIDwgQVYxX1JFRlNfUEVSX0ZSQU1FOyBpKyspIHsK KysgICAgICAgICAgICBmaC0+cmVmX2ZyYW1lX2lkeFtpXSA9IGhyZWYtPnNsb3Q7CisrICAgICAg ICB9CisrICAgICAgICBmaC0+cHJpbWFyeV9yZWZfZnJhbWUgPSBocmVmLT5zbG90OworKyAgICAg ICAgZmgtPnJlZl9vcmRlcl9oaW50W2hyZWYtPnNsb3RdID0gcmVmLT5kaXNwbGF5X29yZGVyIC0g aHJlZi0+bGFzdF9pZHJfZnJhbWU7CisrICAgICAgICB2cGljLT5yZWZfZnJhbWVfY3RybF9sMC5m aWVsZHMuc2VhcmNoX2lkeDAgPSBBVjFfUkVGX0ZSQU1FX0xBU1Q7CisrCisrICAgICAgICAvKiog c2V0IHRoZSAybmQgbmVhcmVzdCBmcmFtZSBpbiBMMCBhcyBHb2xkZW4gZnJhbWUuICovCisrICAg ICAgICBpZiAocGljLT5uYl9yZWZzWzBdID4gMSkgeworKyAgICAgICAgICAgIHJlZiA9IHBpYy0+ cmVmc1swXVtwaWMtPm5iX3JlZnNbMF0gLSAyXTsKKysgICAgICAgICAgICBocmVmID0gcmVmLT5w cml2X2RhdGE7CisrICAgICAgICAgICAgZmgtPnJlZl9mcmFtZV9pZHhbM10gPSBocmVmLT5zbG90 OworKyAgICAgICAgICAgIGZoLT5yZWZfb3JkZXJfaGludFtocmVmLT5zbG90XSA9IHJlZi0+ZGlz cGxheV9vcmRlciAtIGhyZWYtPmxhc3RfaWRyX2ZyYW1lOworKyAgICAgICAgICAgIHZwaWMtPnJl Zl9mcmFtZV9jdHJsX2wwLmZpZWxkcy5zZWFyY2hfaWR4MSA9IEFWMV9SRUZfRlJBTUVfR09MREVO OworKyAgICAgICAgfQorKyAgICAgICAgYnJlYWs7CisrICAgIGNhc2UgUElDVFVSRV9UWVBFX0I6 CisrICAgICAgICBhdl9hc3NlcnQwKHBpYy0+bmJfcmVmc1swXSAmJiBwaWMtPm5iX3JlZnNbMV0p OworKyAgICAgICAgZmgtPmZyYW1lX3R5cGUgPSBBVjFfRlJBTUVfSU5URVI7CisrICAgICAgICBm aC0+YmFzZV9xX2lkeCA9IHByaXYtPnFfaWR4X2I7CisrICAgICAgICBmaC0+cmVmcmVzaF9mcmFt ZV9mbGFncyA9IDB4MDsKKysgICAgICAgIGZoLT5yZWZlcmVuY2Vfc2VsZWN0ID0gMTsKKysKKysg ICAgICAgIC8qKiBCIGZyYW1lIHdpbGwgbm90IGJlIHJlZmVyZW5jZWQsIGRpc2FibGUgaXRzIHJl Y29uIGZyYW1lLiAqLworKyAgICAgICAgdnBpYy0+cGljdHVyZV9mbGFncy5iaXRzLmRpc2FibGVf ZnJhbWVfcmVjb24gPSAxOworKworKyAgICAgICAgLyoqIFVzZSBMQVNUX0ZSQU1FIGFuZCBCV0RS RUZfRlJBTUUgZm9yIHJlZmVyZW5jZS4gKi8KKysgICAgICAgIHZwaWMtPnJlZl9mcmFtZV9jdHJs X2wwLmZpZWxkcy5zZWFyY2hfaWR4MCA9IEFWMV9SRUZfRlJBTUVfTEFTVDsKKysgICAgICAgIHZw aWMtPnJlZl9mcmFtZV9jdHJsX2wxLmZpZWxkcy5zZWFyY2hfaWR4MCA9IEFWMV9SRUZfRlJBTUVf QldEUkVGOworKworKyAgICAgICAgcmVmICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gcGlj LT5yZWZzWzBdW3BpYy0+bmJfcmVmc1swXSAtIDFdOworKyAgICAgICAgaHJlZiAgICAgICAgICAg ICAgICAgICAgICAgICAgID0gcmVmLT5wcml2X2RhdGE7CisrICAgICAgICBocGljLT5sYXN0X2lk cl9mcmFtZSAgICAgICAgICAgPSBocmVmLT5sYXN0X2lkcl9mcmFtZTsKKysgICAgICAgIGZoLT5w cmltYXJ5X3JlZl9mcmFtZSAgICAgICAgICA9IGhyZWYtPnNsb3Q7CisrICAgICAgICBmaC0+cmVm X29yZGVyX2hpbnRbaHJlZi0+c2xvdF0gPSByZWYtPmRpc3BsYXlfb3JkZXIgLSBocmVmLT5sYXN0 X2lkcl9mcmFtZTsKKysgICAgICAgIGZvciAoaSA9IDA7IGkgPCBBVjFfUkVGX0ZSQU1FX0dPTERF TjsgaSsrKSB7CisrICAgICAgICAgICAgZmgtPnJlZl9mcmFtZV9pZHhbaV0gPSBocmVmLT5zbG90 OworKyAgICAgICAgfQorKworKyAgICAgICAgcmVmICAgICAgICAgICAgICAgICAgICAgICAgICAg ID0gcGljLT5yZWZzWzFdW3BpYy0+bmJfcmVmc1sxXSAtIDFdOworKyAgICAgICAgaHJlZiAgICAg ICAgICAgICAgICAgICAgICAgICAgID0gcmVmLT5wcml2X2RhdGE7CisrICAgICAgICBmaC0+cmVm X29yZGVyX2hpbnRbaHJlZi0+c2xvdF0gPSByZWYtPmRpc3BsYXlfb3JkZXIgLSBocmVmLT5sYXN0 X2lkcl9mcmFtZTsKKysgICAgICAgIGZvciAoaSA9IEFWMV9SRUZfRlJBTUVfR09MREVOOyBpIDwg QVYxX1JFRlNfUEVSX0ZSQU1FOyBpKyspIHsKKysgICAgICAgICAgICBmaC0+cmVmX2ZyYW1lX2lk eFtpXSA9IGhyZWYtPnNsb3Q7CisrICAgICAgICB9CisrICAgICAgICBicmVhazsKKysgICAgZGVm YXVsdDoKKysgICAgICAgIGF2X2Fzc2VydDAoMCAmJiAiaW52YWxpZCBwaWN0dXJlIHR5cGUiKTsK KysgICAgfQorKworKyAgICBmaC0+c2hvd19mcmFtZSAgICAgICAgICAgICAgICA9IHBpYy0+ZGlz cGxheV9vcmRlciA8PSBwaWMtPmVuY29kZV9vcmRlcjsKKysgICAgZmgtPnNob3dhYmxlX2ZyYW1l ICAgICAgICAgICAgPSBmaC0+ZnJhbWVfdHlwZSAhPSBBVjFfRlJBTUVfS0VZOworKyAgICBmaC0+ ZnJhbWVfd2lkdGhfbWludXNfMSAgICAgICA9IGF2Y3R4LT53aWR0aCAtIDE7CisrICAgIGZoLT5m cmFtZV9oZWlnaHRfbWludXNfMSAgICAgID0gYXZjdHgtPmhlaWdodCAtIDE7CisrICAgIGZoLT5y ZW5kZXJfd2lkdGhfbWludXNfMSAgICAgID0gZmgtPmZyYW1lX3dpZHRoX21pbnVzXzE7CisrICAg IGZoLT5yZW5kZXJfaGVpZ2h0X21pbnVzXzEgICAgID0gZmgtPmZyYW1lX2hlaWdodF9taW51c18x OworKyAgICBmaC0+b3JkZXJfaGludCAgICAgICAgICAgICAgICA9IHBpYy0+ZGlzcGxheV9vcmRl ciAtIGhwaWMtPmxhc3RfaWRyX2ZyYW1lOworKyAgICBmaC0+dGlsZV9jb2xzICAgICAgICAgICAg ICAgICA9IHByaXYtPnRpbGVfY29sczsKKysgICAgZmgtPnRpbGVfcm93cyAgICAgICAgICAgICAg ICAgPSBwcml2LT50aWxlX3Jvd3M7CisrICAgIGZoLT50aWxlX2NvbHNfbG9nMiAgICAgICAgICAg ID0gcHJpdi0+dGlsZV9jb2xzX2xvZzI7CisrICAgIGZoLT50aWxlX3Jvd3NfbG9nMiAgICAgICAg ICAgID0gcHJpdi0+dGlsZV9yb3dzX2xvZzI7CisrICAgIGZoLT51bmlmb3JtX3RpbGVfc3BhY2lu Z19mbGFnID0gcHJpdi0+dW5pZm9ybV90aWxlOworKyAgICBmaC0+dGlsZV9zaXplX2J5dGVzX21p bnVzMSAgICA9IHByaXYtPmF0dHJfZXh0Mi5iaXRzLnRpbGVfc2l6ZV9ieXRlc19taW51czE7Cisr CisrICAgIC8qKiBpZ25vcmUgT05MWV80eDQgbW9kZSBmb3IgY29kZWRsb3NzbGVzcyBpcyBub3Qg ZnVsbHkgaW1wbGVtZW50ZWQuICovCisrICAgIGlmIChwcml2LT5hdHRyX2V4dDIuYml0cy50eF9t b2RlX3N1cHBvcnQgJiAweDA0KQorKyAgICAgICAgZmgtPnR4X21vZGUgPSBBVjFfVFhfTU9ERV9T RUxFQ1Q7CisrICAgIGVsc2UgaWYgKHByaXYtPmF0dHJfZXh0Mi5iaXRzLnR4X21vZGVfc3VwcG9y dCAmIDB4MDIpCisrICAgICAgICBmaC0+dHhfbW9kZSA9IEFWMV9UWF9NT0RFX0xBUkdFU1Q7Cisr ICAgIGVsc2UgeworKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJObyBhdmFp bGFibGUgdHggbW9kZSBmb3VuZC5cbiIpOworKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFM KTsKKysgICAgfQorKworKyAgICBmb3IgKGkgPSAwOyBpIDwgZmgtPnRpbGVfY29sczsgaSsrKQor KyAgICAgICAgZmgtPndpZHRoX2luX3Nic19taW51c18xW2ldID0gdnBpYy0+d2lkdGhfaW5fc2Jz X21pbnVzXzFbaV0gPSBwcml2LT53aWR0aF9pbl9zYnNfbWludXNfMVtpXTsKKysKKysgICAgZm9y IChpID0gMDsgaSA8IGZoLT50aWxlX3Jvd3M7IGkrKykKKysgICAgICAgIGZoLT5oZWlnaHRfaW5f c2JzX21pbnVzXzFbaV0gPSB2cGljLT5oZWlnaHRfaW5fc2JzX21pbnVzXzFbaV0gPSBwcml2LT5o ZWlnaHRfaW5fc2JzX21pbnVzXzFbaV07CisrCisrICAgIG1lbWNweShmaC0+bG9vcF9maWx0ZXJf cmVmX2RlbHRhcywgZGVmYXVsdF9sb29wX2ZpbHRlcl9yZWZfZGVsdGFzLAorKyAgICAgICAgICAg QVYxX1RPVEFMX1JFRlNfUEVSX0ZSQU1FICogc2l6ZW9mKGludDhfdCkpOworKworKyAgICBpZiAo ZmgtPmZyYW1lX3R5cGUgPT0gQVYxX0ZSQU1FX0tFWSAmJiBmaC0+c2hvd19mcmFtZSkgeworKyAg ICAgICAgZmgtPmVycm9yX3Jlc2lsaWVudF9tb2RlID0gMTsKKysgICAgfQorKworKyAgICBpZiAo ZmgtPmZyYW1lX3R5cGUgPT0gQVYxX0ZSQU1FX0tFWSB8fCBmaC0+ZXJyb3JfcmVzaWxpZW50X21v ZGUpCisrICAgICAgICBmaC0+cHJpbWFyeV9yZWZfZnJhbWUgPSBBVjFfUFJJTUFSWV9SRUZfTk9O RTsKKysKKysgICAgdnBpYy0+YmFzZV9xaW5kZXggICAgICAgICAgPSBmaC0+YmFzZV9xX2lkeDsK KysgICAgdnBpYy0+ZnJhbWVfd2lkdGhfbWludXNfMSAgPSBmaC0+ZnJhbWVfd2lkdGhfbWludXNf MTsKKysgICAgdnBpYy0+ZnJhbWVfaGVpZ2h0X21pbnVzXzEgPSBmaC0+ZnJhbWVfaGVpZ2h0X21p bnVzXzE7CisrICAgIHZwaWMtPnByaW1hcnlfcmVmX2ZyYW1lICAgID0gZmgtPnByaW1hcnlfcmVm X2ZyYW1lOworKyAgICB2cGljLT5yZWNvbnN0cnVjdGVkX2ZyYW1lICA9IHBpYy0+cmVjb25fc3Vy ZmFjZTsKKysgICAgdnBpYy0+Y29kZWRfYnVmICAgICAgICAgICAgPSBwaWMtPm91dHB1dF9idWZm ZXI7CisrICAgIHZwaWMtPnRpbGVfY29scyAgICAgICAgICAgID0gZmgtPnRpbGVfY29sczsKKysg ICAgdnBpYy0+dGlsZV9yb3dzICAgICAgICAgICAgPSBmaC0+dGlsZV9yb3dzOworKyAgICB2cGlj LT5vcmRlcl9oaW50ICAgICAgICAgICA9IGZoLT5vcmRlcl9oaW50OworKyNpZiBWQV9DSEVDS19W RVJTSU9OKDEsIDE1LCAwKQorKyAgICB2cGljLT5yZWZyZXNoX2ZyYW1lX2ZsYWdzICA9IGZoLT5y ZWZyZXNoX2ZyYW1lX2ZsYWdzOworKyNlbmRpZgorKworKyAgICB2cGljLT5waWN0dXJlX2ZsYWdz LmJpdHMuZW5hYmxlX2ZyYW1lX29idSAgICAgPSAwOworKyAgICB2cGljLT5waWN0dXJlX2ZsYWdz LmJpdHMuZnJhbWVfdHlwZSAgICAgICAgICAgPSBmaC0+ZnJhbWVfdHlwZTsKKysgICAgdnBpYy0+ cGljdHVyZV9mbGFncy5iaXRzLnJlZHVjZWRfdHhfc2V0ICAgICAgID0gZmgtPnJlZHVjZWRfdHhf c2V0OworKyAgICB2cGljLT5waWN0dXJlX2ZsYWdzLmJpdHMuZXJyb3JfcmVzaWxpZW50X21vZGUg PSBmaC0+ZXJyb3JfcmVzaWxpZW50X21vZGU7CisrCisrICAgIC8qKiBsZXQgZHJpdmVyIGRlY2lk ZSB0byB1c2Ugc2luZ2xlIG9yIGNvbXBvdW5kIHJlZmVyZW5jZSBwcmVkaWN0aW9uIG1vZGUuICov CisrICAgIHZwaWMtPm1vZGVfY29udHJvbF9mbGFncy5iaXRzLnJlZmVyZW5jZV9tb2RlID0gZmgt PnJlZmVyZW5jZV9zZWxlY3QgPyAyIDogMDsKKysgICAgdnBpYy0+bW9kZV9jb250cm9sX2ZsYWdz LmJpdHMudHhfbW9kZSA9IGZoLT50eF9tb2RlOworKworKyAgICB2cGljLT50aWxlX2dyb3VwX29i dV9oZHJfaW5mby5iaXRzLm9idV9oYXNfc2l6ZV9maWVsZCA9IDE7CisrCisrICAgIC8qKiBzZXQg cmVmZXJlbmNlLiAqLworKyAgICBmb3IgKGkgPSAwOyBpIDwgQVYxX1JFRlNfUEVSX0ZSQU1FOyBp KyspCisrICAgICAgICB2cGljLT5yZWZfZnJhbWVfaWR4W2ldID0gZmgtPnJlZl9mcmFtZV9pZHhb aV07CisrCisrICAgIGZvciAoaSA9IDA7IGkgPCBGRl9BUlJBWV9FTEVNUyh2cGljLT5yZWZlcmVu Y2VfZnJhbWVzKTsgaSsrKQorKyAgICAgICAgdnBpYy0+cmVmZXJlbmNlX2ZyYW1lc1tpXSA9IFZB X0lOVkFMSURfU1VSRkFDRTsKKysKKysgICAgZm9yIChpID0gMDsgaSA8IE1BWF9SRUZFUkVOQ0Vf TElTVF9OVU07IGkrKykgeworKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBwaWMtPm5iX3Jl ZnNbaV07IGorKykgeworKyAgICAgICAgICAgIFZBQVBJRW5jb2RlUGljdHVyZSAqcmVmX3BpYyA9 IHBpYy0+cmVmc1tpXVtqXTsKKysKKysgICAgICAgICAgICBzbG90ID0gKChWQUFQSUVuY29kZUFW MVBpY3R1cmUqKXJlZl9waWMtPnByaXZfZGF0YSktPnNsb3Q7CisrICAgICAgICAgICAgYXZfYXNz ZXJ0MCh2cGljLT5yZWZlcmVuY2VfZnJhbWVzW3Nsb3RdID09IFZBX0lOVkFMSURfU1VSRkFDRSk7 CisrCisrICAgICAgICAgICAgdnBpYy0+cmVmZXJlbmNlX2ZyYW1lc1tzbG90XSA9IHJlZl9waWMt PnJlY29uX3N1cmZhY2U7CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgZmhfb2J1LT5vYnVf c2l6ZV9ieXRlX2xlbiA9IHByaXYtPmF0dHJfZXh0Mi5iaXRzLm9idV9zaXplX2J5dGVzX21pbnVz MSArIDE7CisrICAgIHJldCA9IHZhYXBpX2VuY29kZV9hdjFfYWRkX29idShhdmN0eCwgb2J1LCBB VjFfT0JVX0ZSQU1FX0hFQURFUiwgJnByaXYtPmZoKTsKKysgICAgaWYgKHJldCA8IDApCisrICAg ICAgICBnb3RvIGVuZDsKKysKKysgICAgcmV0ID0gdmFhcGlfZW5jb2RlX2F2MV93cml0ZV9vYnUo YXZjdHgsIHByaXYtPmZoX2RhdGEsICZwcml2LT5maF9kYXRhX2xlbiwgb2J1KTsKKysgICAgaWYg KHJldCA8IDApCisrICAgICAgICBnb3RvIGVuZDsKKysKKysgICAgaWYgKCEoY3R4LT52YV9yY19t b2RlICYgVkFfUkNfQ1FQKSkgeworKyAgICAgICAgdnBpYy0+bWluX2Jhc2VfcWluZGV4ID0gYXZf Y2xpcChhdmN0eC0+cW1pbiwgMSwgQVYxX01BWF9RVUFOVCk7CisrICAgICAgICB2cGljLT5tYXhf YmFzZV9xaW5kZXggPSBhdl9jbGlwKGF2Y3R4LT5xbWF4LCAxLCBBVjFfTUFYX1FVQU5UKTsKKysK KysgICAgICAgIHZwaWMtPmJpdF9vZmZzZXRfcWluZGV4ICAgICAgICAgICAgICA9IHByaXYtPnFp bmRleF9vZmZzZXQ7CisrICAgICAgICB2cGljLT5iaXRfb2Zmc2V0X2xvb3BmaWx0ZXJfcGFyYW1z ICAgPSBwcml2LT5sb29wZmlsdGVyX29mZnNldDsKKysgICAgICAgIHZwaWMtPmJpdF9vZmZzZXRf Y2RlZl9wYXJhbXMgICAgICAgICA9IHByaXYtPmNkZWZfc3RhcnRfb2Zmc2V0OworKyAgICAgICAg dnBpYy0+c2l6ZV9pbl9iaXRzX2NkZWZfcGFyYW1zICAgICAgID0gcHJpdi0+Y2RlZl9wYXJhbV9z aXplOworKyAgICAgICAgdnBpYy0+c2l6ZV9pbl9iaXRzX2ZyYW1lX2hkcl9vYnUgICAgID0gcHJp di0+ZmhfZGF0YV9sZW47CisrICAgICAgICB2cGljLT5ieXRlX29mZnNldF9mcmFtZV9oZHJfb2J1 X3NpemUgPSAoKChwaWMtPnR5cGUgPT0gUElDVFVSRV9UWVBFX0lEUikgPworKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+c2hfZGF0YV9sZW4gLyA4 IDogMCkgKworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGZoX29idS0+aGVhZGVyLm9idV9leHRlbnNpb25fZmxhZyA/CisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyIDogMSkpOworKyAgICB9CisrCisrZW5kOgor KyAgICBmZl9jYnNfZnJhZ21lbnRfcmVzZXQob2J1KTsKKysgICAgcmV0dXJuIHJldDsKKyt9Cisr Cisrc3RhdGljIGludCB2YWFwaV9lbmNvZGVfYXYxX2luaXRfc2xpY2VfcGFyYW1zKEFWQ29kZWND b250ZXh0ICphdmN0eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgVkFBUElFbmNvZGVQaWN0dXJlICpwaWMsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFZBQVBJRW5jb2RlU2xpY2UgKnNsaWNlKQorK3sKKysgICAg VkFBUElFbmNvZGVBVjFDb250ZXh0ICAgICAgKnByaXYgPSBhdmN0eC0+cHJpdl9kYXRhOworKyAg ICBWQUVuY1RpbGVHcm91cEJ1ZmZlckFWMSAgKnZzbGljZSA9IHNsaWNlLT5jb2RlY19zbGljZV9w YXJhbXM7CisrICAgIENvZGVkQml0c3RyZWFtQVYxQ29udGV4dCAgKmNiY3R4ID0gcHJpdi0+Y2Jj LT5wcml2X2RhdGE7CisrICAgIGludCBkaXY7CisrCisrICAgIC8qKiBTZXQgdGlsZSBncm91cCBp bmZvLiAqLworKyAgICBkaXYgPSBwcml2LT50aWxlX2NvbHMgKiBwcml2LT50aWxlX3Jvd3MgLyBw cml2LT50aWxlX2dyb3VwczsKKysgICAgdnNsaWNlLT50Z19zdGFydCA9IHNsaWNlLT5pbmRleCAq IGRpdjsKKysgICAgaWYgKHNsaWNlLT5pbmRleCA9PSAocHJpdi0+dGlsZV9ncm91cHMgLSAxKSkg eworKyAgICAgICAgdnNsaWNlLT50Z19lbmQgPSBwcml2LT50aWxlX2NvbHMgKiBwcml2LT50aWxl X3Jvd3MgLSAxOworKyAgICAgICAgY2JjdHgtPnNlZW5fZnJhbWVfaGVhZGVyID0gMDsKKysgICAg fSBlbHNlIHsKKysgICAgICAgIHZzbGljZS0+dGdfZW5kID0gKHNsaWNlLT5pbmRleCArIDEpICog ZGl2IC0gMTsKKysgICAgfQorKworKyAgICByZXR1cm4gMDsKKyt9CisrCisrc3RhdGljIGludCB2 YWFwaV9lbmNvZGVfYXYxX3dyaXRlX3BpY3R1cmVfaGVhZGVyKEFWQ29kZWNDb250ZXh0ICphdmN0 eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkFB UElFbmNvZGVQaWN0dXJlICpwaWMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNoYXIgKmRhdGEsIHNpemVfdCAqZGF0YV9sZW4pCisreworKyAgICBW QUFQSUVuY29kZUFWMUNvbnRleHQgICAgICpwcml2ID0gYXZjdHgtPnByaXZfZGF0YTsKKysgICAg Q29kZWRCaXRzdHJlYW1GcmFnbWVudCAgICAgKm9idSA9ICZwcml2LT5jdXJyZW50X29idTsKKysg ICAgQ29kZWRCaXRzdHJlYW1BVjFDb250ZXh0ICpjYmN0eCA9IHByaXYtPmNiYy0+cHJpdl9kYXRh OworKyAgICBBVjFSYXdPQlUgICAgICAgICAgICAgICAqZmhfb2J1ID0gJnByaXYtPmZoOworKyAg ICBBVjFSYXdGcmFtZUhlYWRlciAgICAgICAqcmVwX2ZoID0gJmZoX29idS0+b2J1LmZyYW1lX2hl YWRlcjsKKysgICAgVkFBUElFbmNvZGVBVjFQaWN0dXJlICpocmVmOworKyAgICBpbnQgcmV0ID0g MDsKKysKKysgICAgcGljLT50YWlsX3NpemUgPSAwOworKyAgICAvKiogUGFjayByZXBlYXQgZnJh bWUgaGVhZGVyLiAqLworKyAgICBpZiAocGljLT5kaXNwbGF5X29yZGVyID4gcGljLT5lbmNvZGVf b3JkZXIpIHsKKysgICAgICAgIG1lbXNldChmaF9vYnUsIDAsIHNpemVvZigqZmhfb2J1KSk7Cisr ICAgICAgICBocmVmID0gcGljLT5yZWZzWzBdW3BpYy0+bmJfcmVmc1swXSAtIDFdLT5wcml2X2Rh dGE7CisrICAgICAgICBmaF9vYnUtPmhlYWRlci5vYnVfdHlwZSA9IEFWMV9PQlVfRlJBTUVfSEVB REVSOworKyAgICAgICAgZmhfb2J1LT5oZWFkZXIub2J1X2hhc19zaXplX2ZpZWxkID0gMTsKKysK KysgICAgICAgIHJlcF9maC0+c2hvd19leGlzdGluZ19mcmFtZSAgID0gMTsKKysgICAgICAgIHJl cF9maC0+ZnJhbWVfdG9fc2hvd19tYXBfaWR4ID0gaHJlZi0+c2xvdCA9PSAwOworKyAgICAgICAg cmVwX2ZoLT5mcmFtZV90eXBlICAgICAgICAgICAgPSBBVjFfRlJBTUVfSU5URVI7CisrICAgICAg ICByZXBfZmgtPmZyYW1lX3dpZHRoX21pbnVzXzEgICA9IGF2Y3R4LT53aWR0aCAtIDE7CisrICAg ICAgICByZXBfZmgtPmZyYW1lX2hlaWdodF9taW51c18xICA9IGF2Y3R4LT5oZWlnaHQgLSAxOwor KyAgICAgICAgcmVwX2ZoLT5yZW5kZXJfd2lkdGhfbWludXNfMSAgPSByZXBfZmgtPmZyYW1lX3dp ZHRoX21pbnVzXzE7CisrICAgICAgICByZXBfZmgtPnJlbmRlcl9oZWlnaHRfbWludXNfMSA9IHJl cF9maC0+ZnJhbWVfaGVpZ2h0X21pbnVzXzE7CisrCisrICAgICAgICBjYmN0eC0+c2Vlbl9mcmFt ZV9oZWFkZXIgPSAwOworKworKyAgICAgICAgcmV0ID0gdmFhcGlfZW5jb2RlX2F2MV9hZGRfb2J1 KGF2Y3R4LCBvYnUsIEFWMV9PQlVfRlJBTUVfSEVBREVSLCAmcHJpdi0+ZmgpOworKyAgICAgICAg aWYgKHJldCA8IDApCisrICAgICAgICAgICAgZ290byBlbmQ7CisrCisrICAgICAgICByZXQgPSB2 YWFwaV9lbmNvZGVfYXYxX3dyaXRlX29idShhdmN0eCwgcGljLT50YWlsX2RhdGEsICZwaWMtPnRh aWxfc2l6ZSwgb2J1KTsKKysgICAgICAgIGlmIChyZXQgPCAwKQorKyAgICAgICAgICAgIGdvdG8g ZW5kOworKworKyAgICAgICAgcGljLT50YWlsX3NpemUgLz0gODsKKysgICAgfQorKworKyAgICBt ZW1jcHkoZGF0YSwgJnByaXYtPmZoX2RhdGEsIE1BWF9QQVJBTV9CVUZGRVJfU0laRSAqIHNpemVv ZihjaGFyKSk7CisrICAgICpkYXRhX2xlbiA9IHByaXYtPmZoX2RhdGFfbGVuOworKworK2VuZDoK KysgICAgZmZfY2JzX2ZyYWdtZW50X3Jlc2V0KG9idSk7CisrICAgIHJldHVybiByZXQ7CisrfQor KworK3N0YXRpYyBjb25zdCBWQUFQSUVuY29kZVByb2ZpbGUgdmFhcGlfZW5jb2RlX2F2MV9wcm9m aWxlc1tdID0geworKyAgICB7IEZGX1BST0ZJTEVfQVYxX01BSU4sICA4LCAzLCAxLCAxLCBWQVBy b2ZpbGVBVjFQcm9maWxlMCB9LAorKyAgICB7IEZGX1BST0ZJTEVfQVYxX01BSU4sIDEwLCAzLCAx LCAxLCBWQVByb2ZpbGVBVjFQcm9maWxlMCB9LAorKyAgICB7IEZGX1BST0ZJTEVfVU5LTk9XTiB9 CisrfTsKKysKKytzdGF0aWMgY29uc3QgVkFBUElFbmNvZGVUeXBlIHZhYXBpX2VuY29kZV90eXBl X2F2MSA9IHsKKysgICAgLnByb2ZpbGVzICAgICAgICA9IHZhYXBpX2VuY29kZV9hdjFfcHJvZmls ZXMsCisrICAgIC5mbGFncyAgICAgICAgICAgPSBGTEFHX0JfUElDVFVSRVMgfCBGTEFHX1RJTUVT VEFNUF9OT19ERUxBWSwKKysgICAgLmRlZmF1bHRfcXVhbGl0eSA9IDI1LAorKworKyAgICAuZ2V0 X2VuY29kZXJfY2FwcyA9ICZ2YWFwaV9lbmNvZGVfYXYxX2dldF9lbmNvZGVyX2NhcHMsCisrICAg IC5jb25maWd1cmUgICAgICAgID0gJnZhYXBpX2VuY29kZV9hdjFfY29uZmlndXJlLAorKworKyAg ICAuc2VxdWVuY2VfaGVhZGVyX3R5cGUgID0gVkFFbmNQYWNrZWRIZWFkZXJTZXF1ZW5jZSwKKysg ICAgLnNlcXVlbmNlX3BhcmFtc19zaXplICA9IHNpemVvZihWQUVuY1NlcXVlbmNlUGFyYW1ldGVy QnVmZmVyQVYxKSwKKysgICAgLmluaXRfc2VxdWVuY2VfcGFyYW1zICA9ICZ2YWFwaV9lbmNvZGVf YXYxX2luaXRfc2VxdWVuY2VfcGFyYW1zLAorKyAgICAud3JpdGVfc2VxdWVuY2VfaGVhZGVyID0g JnZhYXBpX2VuY29kZV9hdjFfd3JpdGVfc2VxdWVuY2VfaGVhZGVyLAorKworKyAgICAucGljdHVy ZV9wcml2X2RhdGFfc2l6ZSA9IHNpemVvZihWQUFQSUVuY29kZUFWMVBpY3R1cmUpLAorKyAgICAu cGljdHVyZV9oZWFkZXJfdHlwZSAgICA9IFZBRW5jUGFja2VkSGVhZGVyUGljdHVyZSwKKysgICAg LnBpY3R1cmVfcGFyYW1zX3NpemUgICAgPSBzaXplb2YoVkFFbmNQaWN0dXJlUGFyYW1ldGVyQnVm ZmVyQVYxKSwKKysgICAgLmluaXRfcGljdHVyZV9wYXJhbXMgICAgPSAmdmFhcGlfZW5jb2RlX2F2 MV9pbml0X3BpY3R1cmVfcGFyYW1zLAorKyAgICAud3JpdGVfcGljdHVyZV9oZWFkZXIgICA9ICZ2 YWFwaV9lbmNvZGVfYXYxX3dyaXRlX3BpY3R1cmVfaGVhZGVyLAorKworKyAgICAuc2xpY2VfcGFy YW1zX3NpemUgPSBzaXplb2YoVkFFbmNUaWxlR3JvdXBCdWZmZXJBVjEpLAorKyAgICAuaW5pdF9z bGljZV9wYXJhbXMgPSAmdmFhcGlfZW5jb2RlX2F2MV9pbml0X3NsaWNlX3BhcmFtcywKKyt9Owor KworK3N0YXRpYyBhdl9jb2xkIGludCB2YWFwaV9lbmNvZGVfYXYxX2luaXQoQVZDb2RlY0NvbnRl eHQgKmF2Y3R4KQorK3sKKysgICAgVkFBUElFbmNvZGVDb250ZXh0ICAgICAgKmN0eCA9IGF2Y3R4 LT5wcml2X2RhdGE7CisrICAgIFZBQVBJRW5jb2RlQVYxQ29udGV4dCAgKnByaXYgPSBhdmN0eC0+ cHJpdl9kYXRhOworKyAgICBWQUNvbmZpZ0F0dHJpYiBhdHRyOworKyAgICBWQVN0YXR1cyB2YXM7 CisrICAgIGludCByZXQ7CisrCisrICAgIGN0eC0+Y29kZWMgPSAmdmFhcGlfZW5jb2RlX3R5cGVf YXYxOworKworKyAgICBjdHgtPmRlc2lyZWRfcGFja2VkX2hlYWRlcnMgPQorKyAgICAgICAgVkFf RU5DX1BBQ0tFRF9IRUFERVJfU0VRVUVOQ0UgfAorKyAgICAgICAgVkFfRU5DX1BBQ0tFRF9IRUFE RVJfUElDVFVSRTsKKysKKysgICAgaWYgKGF2Y3R4LT5wcm9maWxlID09IEZGX1BST0ZJTEVfVU5L Tk9XTikKKysgICAgICAgIGF2Y3R4LT5wcm9maWxlID0gcHJpdi0+cHJvZmlsZTsKKysgICAgaWYg KGF2Y3R4LT5sZXZlbCA9PSBGRl9QUk9GSUxFX1VOS05PV04pCisrICAgICAgICBhdmN0eC0+bGV2 ZWwgPSBwcml2LT5sZXZlbDsKKysKKysgICAgaWYgKGF2Y3R4LT5sZXZlbCAhPSBGRl9QUk9GSUxF X1VOS05PV04gJiYgYXZjdHgtPmxldmVsICYgfjB4MWYpIHsKKysgICAgICAgIGF2X2xvZyhhdmN0 eCwgQVZfTE9HX0VSUk9SLCAiSW52YWxpZCBsZXZlbCAlZFxuIiwgYXZjdHgtPmxldmVsKTsKKysg ICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7CisrICAgIH0KKysKKysgICAgcmV0ID0gZmZf dmFhcGlfZW5jb2RlX2luaXQoYXZjdHgpOworKyAgICBpZiAocmV0IDwgMCkKKysgICAgICAgIHJl dHVybiByZXQ7CisrCisrICAgIGF0dHIudHlwZSA9IFZBQ29uZmlnQXR0cmliRW5jQVYxOworKyAg ICB2YXMgPSB2YUdldENvbmZpZ0F0dHJpYnV0ZXMoY3R4LT5od2N0eC0+ZGlzcGxheSwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+dmFfcHJvZmlsZSwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGN0eC0+dmFfZW50cnlwb2ludCwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZhdHRyLCAxKTsKKysgICAgaWYgKHZhcyAhPSBWQV9TVEFUVVNf U1VDQ0VTUykgeworKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJGYWlsZWQg dG8gcXVlcnkgIgorKyAgICAgICAgICAgICAgICJjb25maWcgYXR0cmlidXRlOiAlZCAoJXMpLlxu IiwgdmFzLCB2YUVycm9yU3RyKHZhcykpOworKyAgICAgICAgcmV0dXJuIEFWRVJST1JfRVhURVJO QUw7CisrICAgIH0gZWxzZSBpZiAoYXR0ci52YWx1ZSA9PSBWQV9BVFRSSUJfTk9UX1NVUFBPUlRF RCkgeworKyAgICAgICAgcHJpdi0+YXR0ci52YWx1ZSA9IDA7CisrICAgICAgICBhdl9sb2coYXZj dHgsIEFWX0xPR19XQVJOSU5HLCAiQXR0cmlidXRlIHR5cGU6JWQgaXMgbm90ICIKKysgICAgICAg ICAgICAgICAic3VwcG9ydGVkLlxuIiwgYXR0ci50eXBlKTsKKysgICAgfSBlbHNlIHsKKysgICAg ICAgIHByaXYtPmF0dHIudmFsdWUgPSBhdHRyLnZhbHVlOworKyAgICB9CisrCisrICAgIGF0dHIu dHlwZSA9IFZBQ29uZmlnQXR0cmliRW5jQVYxRXh0MTsKKysgICAgdmFzID0gdmFHZXRDb25maWdB dHRyaWJ1dGVzKGN0eC0+aHdjdHgtPmRpc3BsYXksCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjdHgtPnZhX3Byb2ZpbGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjdHgtPnZhX2VudHJ5cG9pbnQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm YXR0ciwgMSk7CisrICAgIGlmICh2YXMgIT0gVkFfU1RBVFVTX1NVQ0NFU1MpIHsKKysgICAgICAg IGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiRmFpbGVkIHRvIHF1ZXJ5ICIKKysgICAgICAg ICAgICAgICAiY29uZmlnIGF0dHJpYnV0ZTogJWQgKCVzKS5cbiIsIHZhcywgdmFFcnJvclN0cih2 YXMpKTsKKysgICAgICAgIHJldHVybiBBVkVSUk9SX0VYVEVSTkFMOworKyAgICB9IGVsc2UgaWYg KGF0dHIudmFsdWUgPT0gVkFfQVRUUklCX05PVF9TVVBQT1JURUQpIHsKKysgICAgICAgIHByaXYt PmF0dHJfZXh0MS52YWx1ZSA9IDA7CisrICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19XQVJO SU5HLCAiQXR0cmlidXRlIHR5cGU6JWQgaXMgbm90ICIKKysgICAgICAgICAgICAgICAic3VwcG9y dGVkLlxuIiwgYXR0ci50eXBlKTsKKysgICAgfSBlbHNlIHsKKysgICAgICAgIHByaXYtPmF0dHJf ZXh0MS52YWx1ZSA9IGF0dHIudmFsdWU7CisrICAgIH0KKysKKysgICAgLyoqIFRoaXMgYXR0ciBw cm92aWRlcyBlc3NlbnRpYWwgaW5kaWNhdG9ycywgcmV0dXJuIGVycm9yIGlmIG5vdCBzdXBwb3J0 LiAqLworKyAgICBhdHRyLnR5cGUgPSBWQUNvbmZpZ0F0dHJpYkVuY0FWMUV4dDI7CisrICAgIHZh cyA9IHZhR2V0Q29uZmlnQXR0cmlidXRlcyhjdHgtPmh3Y3R4LT5kaXNwbGF5LAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT52YV9wcm9maWxlLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY3R4LT52YV9lbnRyeXBvaW50LAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJmF0dHIsIDEpOworKyAgICBpZiAodmFzICE9IFZBX1NUQVRVU19TVUND RVNTIHx8IGF0dHIudmFsdWUgPT0gVkFfQVRUUklCX05PVF9TVVBQT1JURUQpIHsKKysgICAgICAg IGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiRmFpbGVkIHRvIHF1ZXJ5ICIKKysgICAgICAg ICAgICAgICAiY29uZmlnIGF0dHJpYnV0ZTogJWQgKCVzKS5cbiIsIHZhcywgdmFFcnJvclN0cih2 YXMpKTsKKysgICAgICAgIHJldHVybiBBVkVSUk9SX0VYVEVSTkFMOworKyAgICB9IGVsc2Ugewor KyAgICAgICAgcHJpdi0+YXR0cl9leHQyLnZhbHVlID0gYXR0ci52YWx1ZTsKKysgICAgfQorKwor KyAgICByZXQgPSB2YWFwaV9lbmNvZGVfYXYxX3NldF90aWxlKGF2Y3R4KTsKKysgICAgaWYgKHJl dCA8IDApCisrICAgICAgICByZXR1cm4gcmV0OworKworKyAgICByZXR1cm4gMDsKKyt9CisrCisr c3RhdGljIGF2X2NvbGQgaW50IHZhYXBpX2VuY29kZV9hdjFfY2xvc2UoQVZDb2RlY0NvbnRleHQg KmF2Y3R4KQorK3sKKysgICAgVkFBUElFbmNvZGVBVjFDb250ZXh0ICpwcml2ID0gYXZjdHgtPnBy aXZfZGF0YTsKKysKKysgICAgZmZfY2JzX2ZyYWdtZW50X2ZyZWUoJnByaXYtPmN1cnJlbnRfb2J1 KTsKKysgICAgZmZfY2JzX2Nsb3NlKCZwcml2LT5jYmMpOworKworKyAgICByZXR1cm4gZmZfdmFh cGlfZW5jb2RlX2Nsb3NlKGF2Y3R4KTsKKyt9CisrCisrI2RlZmluZSBPRkZTRVQoeCkgb2Zmc2V0 b2YoVkFBUElFbmNvZGVBVjFDb250ZXh0LCB4KQorKyNkZWZpbmUgRkxBR1MgKEFWX09QVF9GTEFH X1ZJREVPX1BBUkFNIHwgQVZfT1BUX0ZMQUdfRU5DT0RJTkdfUEFSQU0pCisrCisrc3RhdGljIGNv bnN0IEFWT3B0aW9uIHZhYXBpX2VuY29kZV9hdjFfb3B0aW9uc1tdID0geworKyAgICBWQUFQSV9F TkNPREVfQ09NTU9OX09QVElPTlMsCisrICAgIFZBQVBJX0VOQ09ERV9SQ19PUFRJT05TLAorKyAg ICB7ICJwcm9maWxlIiwgIlNldCBwcm9maWxlIChzZXFfcHJvZmlsZSkiLAorKyAgICAgIE9GRlNF VChwcm9maWxlKSwgQVZfT1BUX1RZUEVfSU5ULAorKyAgICAgIHsgLmk2NCA9IEZGX1BST0ZJTEVf VU5LTk9XTiB9LCBGRl9QUk9GSUxFX1VOS05PV04sIDB4ZmYsIEZMQUdTLCAicHJvZmlsZSIgfSwK KysKKysjZGVmaW5lIFBST0ZJTEUobmFtZSwgdmFsdWUpICBuYW1lLCBOVUxMLCAwLCBBVl9PUFRf VFlQRV9DT05TVCwgXAorKyAgICB7IC5pNjQgPSB2YWx1ZSB9LCAwLCAwLCBGTEFHUywgInByb2Zp bGUiCisrICAgIHsgUFJPRklMRSgibWFpbiIsICAgICAgICAgICAgICAgRkZfUFJPRklMRV9BVjFf TUFJTikgfSwKKysgICAgeyBQUk9GSUxFKCJoaWdoIiwgICAgICAgICAgICAgICBGRl9QUk9GSUxF X0FWMV9ISUdIKSB9LAorKyAgICB7IFBST0ZJTEUoInByb2Zlc3Npb25hbCIsICAgICAgIEZGX1BS T0ZJTEVfQVYxX1BST0ZFU1NJT05BTCkgfSwKKysjdW5kZWYgUFJPRklMRQorKworKyAgICB7ICJ0 aWVyIiwgIlNldCB0aWVyIChzZXFfdGllcikiLAorKyAgICAgIE9GRlNFVCh0aWVyKSwgQVZfT1BU X1RZUEVfSU5ULCB7IC5pNjQgPSAwIH0sIDAsIDEsIEZMQUdTLCAidGllciIgfSwKKysgICAgeyAi bWFpbiIsIE5VTEwsIDAsIEFWX09QVF9UWVBFX0NPTlNULAorKyAgICAgIHsgLmk2NCA9IDAgfSwg MCwgMCwgRkxBR1MsICJ0aWVyIiB9LAorKyAgICB7ICJoaWdoIiwgTlVMTCwgMCwgQVZfT1BUX1RZ UEVfQ09OU1QsCisrICAgICAgeyAuaTY0ID0gMSB9LCAwLCAwLCBGTEFHUywgInRpZXIiIH0sCisr ICAgIHsgImxldmVsIiwgIlNldCBsZXZlbCAoc2VxX2xldmVsX2lkeCkiLAorKyAgICAgIE9GRlNF VChsZXZlbCksIEFWX09QVF9UWVBFX0lOVCwKKysgICAgICB7IC5pNjQgPSBGRl9QUk9GSUxFX1VO S05PV04gfSwgRkZfUFJPRklMRV9VTktOT1dOLCAweDFmLCBGTEFHUywgImxldmVsIiB9LAorKwor KyNkZWZpbmUgTEVWRUwobmFtZSwgdmFsdWUpIG5hbWUsIE5VTEwsIDAsIEFWX09QVF9UWVBFX0NP TlNULCBcCisrICAgICAgeyAuaTY0ID0gdmFsdWUgfSwgMCwgMCwgRkxBR1MsICJsZXZlbCIKKysg ICAgeyBMRVZFTCgiMi4wIiwgIDApIH0sCisrICAgIHsgTEVWRUwoIjIuMSIsICAxKSB9LAorKyAg ICB7IExFVkVMKCIzLjAiLCAgNCkgfSwKKysgICAgeyBMRVZFTCgiMy4xIiwgIDUpIH0sCisrICAg IHsgTEVWRUwoIjQuMCIsICA4KSB9LAorKyAgICB7IExFVkVMKCI0LjEiLCAgOSkgfSwKKysgICAg eyBMRVZFTCgiNS4wIiwgMTIpIH0sCisrICAgIHsgTEVWRUwoIjUuMSIsIDEzKSB9LAorKyAgICB7 IExFVkVMKCI1LjIiLCAxNCkgfSwKKysgICAgeyBMRVZFTCgiNS4zIiwgMTUpIH0sCisrICAgIHsg TEVWRUwoIjYuMCIsIDE2KSB9LAorKyAgICB7IExFVkVMKCI2LjEiLCAxNykgfSwKKysgICAgeyBM RVZFTCgiNi4yIiwgMTgpIH0sCisrICAgIHsgTEVWRUwoIjYuMyIsIDE5KSB9LAorKyN1bmRlZiBM RVZFTAorKworKyAgICB7ICJ0aWxlcyIsICJUaWxlIGNvbHVtbnMgeCByb3dzIChVc2UgbWluaW1h bCB0aWxlIGNvbHVtbi9yb3cgbnVtYmVyIGF1dG9tYXRpY2FsbHkgYnkgZGVmYXVsdCkiLAorKyAg ICAgIE9GRlNFVCh0aWxlX2NvbHMpLCBBVl9PUFRfVFlQRV9JTUFHRV9TSVpFLCB7IC5zdHIgPSBO VUxMIH0sIDAsIDAsIEZMQUdTIH0sCisrICAgIHsgInRpbGVfZ3JvdXBzIiwgIk51bWJlciBvZiB0 aWxlIGdyb3VwcyBmb3IgZW5jb2RpbmciLAorKyAgICAgIE9GRlNFVCh0aWxlX2dyb3VwcyksIEFW X09QVF9UWVBFX0lOVCwgeyAuaTY0ID0gMSB9LCAxLCBBVjFfTUFYX1RJTEVfUk9XUyAqIEFWMV9N QVhfVElMRV9DT0xTLCBGTEFHUyB9LAorKworKyAgICB7IE5VTEwgfSwKKyt9OworKworK3N0YXRp YyBjb25zdCBGRkNvZGVjRGVmYXVsdCB2YWFwaV9lbmNvZGVfYXYxX2RlZmF1bHRzW10gPSB7Cisr ICAgIHsgImIiLCAgICAgICAgICAgICAgIjAiICAgfSwKKysgICAgeyAiYmYiLCAgICAgICAgICAg ICAiMiIgICB9LAorKyAgICB7ICJnIiwgICAgICAgICAgICAgICIxMjAiIH0sCisrICAgIHsgInFt aW4iLCAgICAgICAgICAgIjEiICAgfSwKKysgICAgeyAicW1heCIsICAgICAgICAgICAiMjU1IiB9 LAorKyAgICB7IE5VTEwgfSwKKyt9OworKworK3N0YXRpYyBjb25zdCBBVkNsYXNzIHZhYXBpX2Vu Y29kZV9hdjFfY2xhc3MgPSB7CisrICAgIC5jbGFzc19uYW1lID0gImF2MV92YWFwaSIsCisrICAg IC5pdGVtX25hbWUgID0gYXZfZGVmYXVsdF9pdGVtX25hbWUsCisrICAgIC5vcHRpb24gICAgID0g dmFhcGlfZW5jb2RlX2F2MV9vcHRpb25zLAorKyAgICAudmVyc2lvbiAgICA9IExJQkFWVVRJTF9W RVJTSU9OX0lOVCwKKyt9OworKworK2NvbnN0IEZGQ29kZWMgZmZfYXYxX3ZhYXBpX2VuY29kZXIg PSB7CisrICAgIC5wLm5hbWUgICAgICAgICA9ICJhdjFfdmFhcGkiLAorKyAgICBDT0RFQ19MT05H X05BTUUoIkFWMSAoVkFBUEkpIiksCisrICAgIC5wLnR5cGUgICAgICAgICA9IEFWTUVESUFfVFlQ RV9WSURFTywKKysgICAgLnAuaWQgICAgICAgICAgID0gQVZfQ09ERUNfSURfQVYxLAorKyAgICAu cHJpdl9kYXRhX3NpemUgPSBzaXplb2YoVkFBUElFbmNvZGVBVjFDb250ZXh0KSwKKysgICAgLmlu aXQgICAgICAgICAgID0gJnZhYXBpX2VuY29kZV9hdjFfaW5pdCwKKysgICAgRkZfQ09ERUNfUkVD RUlWRV9QQUNLRVRfQ0IoJmZmX3ZhYXBpX2VuY29kZV9yZWNlaXZlX3BhY2tldCksCisrICAgIC5j bG9zZSAgICAgICAgICA9ICZ2YWFwaV9lbmNvZGVfYXYxX2Nsb3NlLAorKyAgICAucC5wcml2X2Ns YXNzICAgPSAmdmFhcGlfZW5jb2RlX2F2MV9jbGFzcywKKysgICAgLnAuY2FwYWJpbGl0aWVzID0g QVZfQ09ERUNfQ0FQX0RFTEFZIHwgQVZfQ09ERUNfQ0FQX0hBUkRXQVJFIHwKKysgICAgICAgICAg ICAgICAgICAgICAgQVZfQ09ERUNfQ0FQX0RSMSB8IEFWX0NPREVDX0NBUF9FTkNPREVSX1JFT1JE RVJFRF9PUEFRVUUsCisrICAgIC5jYXBzX2ludGVybmFsICA9IEZGX0NPREVDX0NBUF9OT1RfSU5J VF9USFJFQURTQUZFIHwKKysgICAgICAgICAgICAgICAgICAgICAgRkZfQ09ERUNfQ0FQX0lOSVRf Q0xFQU5VUCwKKysgICAgLmRlZmF1bHRzICAgICAgID0gdmFhcGlfZW5jb2RlX2F2MV9kZWZhdWx0 cywKKysgICAgLnAucGl4X2ZtdHMgPSAoY29uc3QgZW51bSBBVlBpeGVsRm9ybWF0W10pIHsKKysg ICAgICAgIEFWX1BJWF9GTVRfVkFBUEksCisrICAgICAgICBBVl9QSVhfRk1UX05PTkUsCisrICAg IH0sCisrICAgIC5od19jb25maWdzICAgICA9IGZmX3ZhYXBpX2VuY29kZV9od19jb25maWdzLAor KyAgICAucC53cmFwcGVyX25hbWUgPSAidmFhcGkiLAorK307CitkaWZmIC0tZ2l0IGEvbGliYXZj b2RlYy92YWFwaV9lbmNvZGVfaDI2NC5jIGIvbGliYXZjb2RlYy92YWFwaV9lbmNvZGVfaDI2NC5j CitpbmRleCA2NDVmNmE5Li5jMjA1ZDFlIDEwMDY0NAorLS0tIGEvbGliYXZjb2RlYy92YWFwaV9l bmNvZGVfaDI2NC5jCisrKysgYi9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZV9oMjY0LmMKK0BAIC02 MTQsNyArNjE0LDcgQEAgc3RhdGljIGludCB2YWFwaV9lbmNvZGVfaDI2NF9pbml0X3BpY3R1cmVf cGFyYW1zKEFWQ29kZWNDb250ZXh0ICphdmN0eCwKKyAgICAgVkFBUElFbmNvZGVQaWN0dXJlICAg ICAgICAgICAgICAqcHJldiA9IHBpYy0+cHJldjsKKyAgICAgVkFBUElFbmNvZGVIMjY0UGljdHVy ZSAgICAgICAgICpocHJldiA9IHByZXYgPyBwcmV2LT5wcml2X2RhdGEgOiBOVUxMOworICAgICBW QUVuY1BpY3R1cmVQYXJhbWV0ZXJCdWZmZXJIMjY0ICp2cGljID0gcGljLT5jb2RlY19waWN0dXJl X3BhcmFtczsKKy0gICAgaW50IGk7CisrICAgIGludCBpLCBqID0gMDsKKyAKKyAgICAgaWYgKHBp Yy0+dHlwZSA9PSBQSUNUVVJFX1RZUEVfSURSKSB7CisgICAgICAgICBhdl9hc3NlcnQwKHBpYy0+ ZGlzcGxheV9vcmRlciA9PSBwaWMtPmVuY29kZV9vcmRlcik7CitAQCAtNzE1LDI0ICs3MTUsMjYg QEAgc3RhdGljIGludCB2YWFwaV9lbmNvZGVfaDI2NF9pbml0X3BpY3R1cmVfcGFyYW1zKEFWQ29k ZWNDb250ZXh0ICphdmN0eCwKKyAgICAgICAgIC5Ub3BGaWVsZE9yZGVyQ250ICAgID0gaHBpYy0+ cGljX29yZGVyX2NudCwKKyAgICAgICAgIC5Cb3R0b21GaWVsZE9yZGVyQ250ID0gaHBpYy0+cGlj X29yZGVyX2NudCwKKyAgICAgfTsKKy0KKy0gICAgZm9yIChpID0gMDsgaSA8IHBpYy0+bmJfcmVm czsgaSsrKSB7CistICAgICAgICBWQUFQSUVuY29kZVBpY3R1cmUgICAgICAqcmVmID0gcGljLT5y ZWZzW2ldOworLSAgICAgICAgVkFBUElFbmNvZGVIMjY0UGljdHVyZSAqaHJlZjsKKy0KKy0gICAg ICAgIGF2X2Fzc2VydDAocmVmICYmIHJlZi0+ZW5jb2RlX29yZGVyIDwgcGljLT5lbmNvZGVfb3Jk ZXIpOworLSAgICAgICAgaHJlZiA9IHJlZi0+cHJpdl9kYXRhOworLQorLSAgICAgICAgdnBpYy0+ UmVmZXJlbmNlRnJhbWVzW2ldID0gKFZBUGljdHVyZUgyNjQpIHsKKy0gICAgICAgICAgICAucGlj dHVyZV9pZCAgICAgICAgICA9IHJlZi0+cmVjb25fc3VyZmFjZSwKKy0gICAgICAgICAgICAuZnJh bWVfaWR4ICAgICAgICAgICA9IGhyZWYtPmZyYW1lX251bSwKKy0gICAgICAgICAgICAuZmxhZ3Mg ICAgICAgICAgICAgICA9IFZBX1BJQ1RVUkVfSDI2NF9TSE9SVF9URVJNX1JFRkVSRU5DRSwKKy0g ICAgICAgICAgICAuVG9wRmllbGRPcmRlckNudCAgICA9IGhyZWYtPnBpY19vcmRlcl9jbnQsCist ICAgICAgICAgICAgLkJvdHRvbUZpZWxkT3JkZXJDbnQgPSBocmVmLT5waWNfb3JkZXJfY250LAor LSAgICAgICAgfTsKKysgICAgZm9yIChpbnQgayA9IDA7IGsgPCBNQVhfUkVGRVJFTkNFX0xJU1Rf TlVNOyBrKyspIHsKKysgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwaWMtPm5iX3JlZnNba107IGkr KykgeworKyAgICAgICAgICAgIFZBQVBJRW5jb2RlUGljdHVyZSAgICAgICpyZWYgPSBwaWMtPnJl ZnNba11baV07CisrICAgICAgICAgICAgVkFBUElFbmNvZGVIMjY0UGljdHVyZSAqaHJlZjsKKysK KysgICAgICAgICAgICBhdl9hc3NlcnQwKHJlZiAmJiByZWYtPmVuY29kZV9vcmRlciA8IHBpYy0+ ZW5jb2RlX29yZGVyKTsKKysgICAgICAgICAgICBocmVmID0gcmVmLT5wcml2X2RhdGE7CisrCisr ICAgICAgICAgICAgdnBpYy0+UmVmZXJlbmNlRnJhbWVzW2orK10gPSAoVkFQaWN0dXJlSDI2NCkg eworKyAgICAgICAgICAgICAgICAucGljdHVyZV9pZCAgICAgICAgICA9IHJlZi0+cmVjb25fc3Vy ZmFjZSwKKysgICAgICAgICAgICAgICAgLmZyYW1lX2lkeCAgICAgICAgICAgPSBocmVmLT5mcmFt ZV9udW0sCisrICAgICAgICAgICAgICAgIC5mbGFncyAgICAgICAgICAgICAgID0gVkFfUElDVFVS RV9IMjY0X1NIT1JUX1RFUk1fUkVGRVJFTkNFLAorKyAgICAgICAgICAgICAgICAuVG9wRmllbGRP cmRlckNudCAgICA9IGhyZWYtPnBpY19vcmRlcl9jbnQsCisrICAgICAgICAgICAgICAgIC5Cb3R0 b21GaWVsZE9yZGVyQ250ID0gaHJlZi0+cGljX29yZGVyX2NudCwKKysgICAgICAgICAgICB9Owor KyAgICAgICAgfQorICAgICB9CistICAgIGZvciAoOyBpIDwgRkZfQVJSQVlfRUxFTVModnBpYy0+ UmVmZXJlbmNlRnJhbWVzKTsgaSsrKSB7CistICAgICAgICB2cGljLT5SZWZlcmVuY2VGcmFtZXNb aV0gPSAoVkFQaWN0dXJlSDI2NCkgeworKworKyAgICBmb3IgKDsgaiA8IEZGX0FSUkFZX0VMRU1T KHZwaWMtPlJlZmVyZW5jZUZyYW1lcyk7IGorKykgeworKyAgICAgICAgdnBpYy0+UmVmZXJlbmNl RnJhbWVzW2pdID0gKFZBUGljdHVyZUgyNjQpIHsKKyAgICAgICAgICAgICAucGljdHVyZV9pZCA9 IFZBX0lOVkFMSURfSUQsCisgICAgICAgICAgICAgLmZsYWdzICAgICAgPSBWQV9QSUNUVVJFX0gy NjRfSU5WQUxJRCwKKyAgICAgICAgIH07CitAQCAtOTM0LDE3ICs5MzYsMTcgQEAgc3RhdGljIGlu dCB2YWFwaV9lbmNvZGVfaDI2NF9pbml0X3NsaWNlX3BhcmFtcyhBVkNvZGVjQ29udGV4dCAqYXZj dHgsCisgCisgICAgICAgICBpZiAocGljLT50eXBlID09IFBJQ1RVUkVfVFlQRV9QKSB7CisgICAg ICAgICAgICAgaW50IG5lZWRfcnBsbSA9IDA7CistICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8 IHBpYy0+bmJfcmVmczsgaSsrKSB7CistICAgICAgICAgICAgICAgIGF2X2Fzc2VydDAocGljLT5y ZWZzW2ldKTsKKy0gICAgICAgICAgICAgICAgaWYgKHBpYy0+cmVmc1tpXSAhPSBkZWZfbDBbaV0p CisrICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHBpYy0+bmJfcmVmc1swXTsgaSsrKSB7Cisr ICAgICAgICAgICAgICAgIGF2X2Fzc2VydDAocGljLT5yZWZzWzBdW2ldKTsKKysgICAgICAgICAg ICAgICAgaWYgKHBpYy0+cmVmc1swXVtpXSAhPSBkZWZfbDBbaV0pCisgICAgICAgICAgICAgICAg ICAgICBuZWVkX3JwbG0gPSAxOworICAgICAgICAgICAgIH0KKyAKKyAgICAgICAgICAgICBzaC0+ cmVmX3BpY19saXN0X21vZGlmaWNhdGlvbl9mbGFnX2wwID0gbmVlZF9ycGxtOworICAgICAgICAg ICAgIGlmIChuZWVkX3JwbG0pIHsKKyAgICAgICAgICAgICAgICAgaW50IHBpY19udW0gPSBocGlj LT5mcmFtZV9udW07CistICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwaWMtPm5iX3Jl ZnM7IGkrKykgeworLSAgICAgICAgICAgICAgICAgICAgaHJlZiA9IHBpYy0+cmVmc1tpXS0+cHJp dl9kYXRhOworKyAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGljLT5uYl9yZWZzWzBd OyBpKyspIHsKKysgICAgICAgICAgICAgICAgICAgIGhyZWYgPSBwaWMtPnJlZnNbMF1baV0tPnBy aXZfZGF0YTsKKyAgICAgICAgICAgICAgICAgICAgIGF2X2Fzc2VydDAoaHJlZi0+ZnJhbWVfbnVt ICE9IHBpY19udW0pOworICAgICAgICAgICAgICAgICAgICAgaWYgKGhyZWYtPmZyYW1lX251bSA8 IHBpY19udW0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaC0+cnBsbV9sMFtpXS5tb2Rp ZmljYXRpb25fb2ZfcGljX251bXNfaWRjID0gMDsKK0BAIC05NjMsMjggKzk2NSwyOSBAQCBzdGF0 aWMgaW50IHZhYXBpX2VuY29kZV9oMjY0X2luaXRfc2xpY2VfcGFyYW1zKEFWQ29kZWNDb250ZXh0 ICphdmN0eCwKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgaW50IG5lZWRfcnBsbV9s MCA9IDAsIG5lZWRfcnBsbV9sMSA9IDA7CisgICAgICAgICAgICAgaW50IG4wID0gMCwgbjEgPSAw OworLSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwaWMtPm5iX3JlZnM7IGkrKykgeworLSAg ICAgICAgICAgICAgICBhdl9hc3NlcnQwKHBpYy0+cmVmc1tpXSk7CistICAgICAgICAgICAgICAg IGhyZWYgPSBwaWMtPnJlZnNbaV0tPnByaXZfZGF0YTsKKy0gICAgICAgICAgICAgICAgYXZfYXNz ZXJ0MChocmVmLT5waWNfb3JkZXJfY250ICE9IGhwaWMtPnBpY19vcmRlcl9jbnQpOworLSAgICAg ICAgICAgICAgICBpZiAoaHJlZi0+cGljX29yZGVyX2NudCA8IGhwaWMtPnBpY19vcmRlcl9jbnQp IHsKKy0gICAgICAgICAgICAgICAgICAgIGlmIChwaWMtPnJlZnNbaV0gIT0gZGVmX2wwW24wXSkK Ky0gICAgICAgICAgICAgICAgICAgICAgICBuZWVkX3JwbG1fbDAgPSAxOworLSAgICAgICAgICAg ICAgICAgICAgKytuMDsKKy0gICAgICAgICAgICAgICAgfSBlbHNlIHsKKy0gICAgICAgICAgICAg ICAgICAgIGlmIChwaWMtPnJlZnNbaV0gIT0gZGVmX2wxW24xXSkKKy0gICAgICAgICAgICAgICAg ICAgICAgICBuZWVkX3JwbG1fbDEgPSAxOworLSAgICAgICAgICAgICAgICAgICAgKytuMTsKKy0g ICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwaWMtPm5iX3Jl ZnNbMF07IGkrKykgeworKyAgICAgICAgICAgICAgICBhdl9hc3NlcnQwKHBpYy0+cmVmc1swXVtp XSk7CisrICAgICAgICAgICAgICAgIGhyZWYgPSBwaWMtPnJlZnNbMF1baV0tPnByaXZfZGF0YTsK KysgICAgICAgICAgICAgICAgYXZfYXNzZXJ0MChocmVmLT5waWNfb3JkZXJfY250IDwgaHBpYy0+ cGljX29yZGVyX2NudCk7CisrICAgICAgICAgICAgICAgIGlmIChwaWMtPnJlZnNbMF1baV0gIT0g ZGVmX2wwW24wXSkKKysgICAgICAgICAgICAgICAgICAgIG5lZWRfcnBsbV9sMCA9IDE7CisrICAg ICAgICAgICAgICAgICsrbjA7CisrICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgIGZvciAo aSA9IDA7IGkgPCBwaWMtPm5iX3JlZnNbMV07IGkrKykgeworKyAgICAgICAgICAgICAgICBhdl9h c3NlcnQwKHBpYy0+cmVmc1sxXVtpXSk7CisrICAgICAgICAgICAgICAgIGhyZWYgPSBwaWMtPnJl ZnNbMV1baV0tPnByaXZfZGF0YTsKKysgICAgICAgICAgICAgICAgYXZfYXNzZXJ0MChocmVmLT5w aWNfb3JkZXJfY250ID4gaHBpYy0+cGljX29yZGVyX2NudCk7CisrICAgICAgICAgICAgICAgIGlm IChwaWMtPnJlZnNbMV1baV0gIT0gZGVmX2wxW24xXSkKKysgICAgICAgICAgICAgICAgICAgIG5l ZWRfcnBsbV9sMSA9IDE7CisrICAgICAgICAgICAgICAgICsrbjE7CisgICAgICAgICAgICAgfQor IAorICAgICAgICAgICAgIHNoLT5yZWZfcGljX2xpc3RfbW9kaWZpY2F0aW9uX2ZsYWdfbDAgPSBu ZWVkX3JwbG1fbDA7CisgICAgICAgICAgICAgaWYgKG5lZWRfcnBsbV9sMCkgeworICAgICAgICAg ICAgICAgICBpbnQgcGljX251bSA9IGhwaWMtPmZyYW1lX251bTsKKy0gICAgICAgICAgICAgICAg Zm9yIChpID0gaiA9IDA7IGkgPCBwaWMtPm5iX3JlZnM7IGkrKykgeworLSAgICAgICAgICAgICAg ICAgICAgaHJlZiA9IHBpYy0+cmVmc1tpXS0+cHJpdl9kYXRhOworLSAgICAgICAgICAgICAgICAg ICAgaWYgKGhyZWYtPnBpY19vcmRlcl9jbnQgPiBocGljLT5waWNfb3JkZXJfY250KQorLSAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgICAgICAgICBmb3IgKGkgPSBq ID0gMDsgaSA8IHBpYy0+bmJfcmVmc1swXTsgaSsrKSB7CisrICAgICAgICAgICAgICAgICAgICBo cmVmID0gcGljLT5yZWZzWzBdW2ldLT5wcml2X2RhdGE7CisgICAgICAgICAgICAgICAgICAgICBh dl9hc3NlcnQwKGhyZWYtPmZyYW1lX251bSAhPSBwaWNfbnVtKTsKKyAgICAgICAgICAgICAgICAg ICAgIGlmIChocmVmLT5mcmFtZV9udW0gPCBwaWNfbnVtKSB7CisgICAgICAgICAgICAgICAgICAg ICAgICAgc2gtPnJwbG1fbDBbal0ubW9kaWZpY2F0aW9uX29mX3BpY19udW1zX2lkYyA9IDA7CitA QCAtMTAwNSwxMCArMTAwOCw4IEBAIHN0YXRpYyBpbnQgdmFhcGlfZW5jb2RlX2gyNjRfaW5pdF9z bGljZV9wYXJhbXMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAorICAgICAgICAgICAgIHNoLT5yZWZf cGljX2xpc3RfbW9kaWZpY2F0aW9uX2ZsYWdfbDEgPSBuZWVkX3JwbG1fbDE7CisgICAgICAgICAg ICAgaWYgKG5lZWRfcnBsbV9sMSkgeworICAgICAgICAgICAgICAgICBpbnQgcGljX251bSA9IGhw aWMtPmZyYW1lX251bTsKKy0gICAgICAgICAgICAgICAgZm9yIChpID0gaiA9IDA7IGkgPCBwaWMt Pm5iX3JlZnM7IGkrKykgeworLSAgICAgICAgICAgICAgICAgICAgaHJlZiA9IHBpYy0+cmVmc1tp XS0+cHJpdl9kYXRhOworLSAgICAgICAgICAgICAgICAgICAgaWYgKGhyZWYtPnBpY19vcmRlcl9j bnQgPCBocGljLT5waWNfb3JkZXJfY250KQorLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRp bnVlOworKyAgICAgICAgICAgICAgICBmb3IgKGkgPSBqID0gMDsgaSA8IHBpYy0+bmJfcmVmc1sx XTsgaSsrKSB7CisrICAgICAgICAgICAgICAgICAgICBocmVmID0gcGljLT5yZWZzWzFdW2ldLT5w cml2X2RhdGE7CisgICAgICAgICAgICAgICAgICAgICBhdl9hc3NlcnQwKGhyZWYtPmZyYW1lX251 bSAhPSBwaWNfbnVtKTsKKyAgICAgICAgICAgICAgICAgICAgIGlmIChocmVmLT5mcmFtZV9udW0g PCBwaWNfbnVtKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgc2gtPnJwbG1fbDFbal0ubW9k aWZpY2F0aW9uX29mX3BpY19udW1zX2lkYyA9IDA7CitAQCAtMTA0OCwxNCArMTA0OSwxMyBAQCBz dGF0aWMgaW50IHZhYXBpX2VuY29kZV9oMjY0X2luaXRfc2xpY2VfcGFyYW1zKEFWQ29kZWNDb250 ZXh0ICphdmN0eCwKKyAgICAgICAgIHZzbGljZS0+UmVmUGljTGlzdDFbaV0uZmxhZ3MgICAgICA9 IFZBX1BJQ1RVUkVfSDI2NF9JTlZBTElEOworICAgICB9CisgCistICAgIGF2X2Fzc2VydDAocGlj LT5uYl9yZWZzIDw9IDIpOworLSAgICBpZiAocGljLT5uYl9yZWZzID49IDEpIHsKKysgICAgaWYg KHBpYy0+bmJfcmVmc1swXSkgeworICAgICAgICAgLy8gQmFja3dhcmQgcmVmZXJlbmNlIGZvciBQ LSBvciBCLWZyYW1lLgorICAgICAgICAgYXZfYXNzZXJ0MChwaWMtPnR5cGUgPT0gUElDVFVSRV9U WVBFX1AgfHwKKyAgICAgICAgICAgICAgICAgICAgcGljLT50eXBlID09IFBJQ1RVUkVfVFlQRV9C KTsKKyAgICAgICAgIHZzbGljZS0+UmVmUGljTGlzdDBbMF0gPSB2cGljLT5SZWZlcmVuY2VGcmFt ZXNbMF07CisgICAgIH0KKy0gICAgaWYgKHBpYy0+bmJfcmVmcyA+PSAyKSB7CisrICAgIGlmIChw aWMtPm5iX3JlZnNbMV0pIHsKKyAgICAgICAgIC8vIEZvcndhcmQgcmVmZXJlbmNlIGZvciBCLWZy YW1lLgorICAgICAgICAgYXZfYXNzZXJ0MChwaWMtPnR5cGUgPT0gUElDVFVSRV9UWVBFX0IpOwor ICAgICAgICAgdnNsaWNlLT5SZWZQaWNMaXN0MVswXSA9IHZwaWMtPlJlZmVyZW5jZUZyYW1lc1sx XTsKK2RpZmYgLS1naXQgYS9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZV9oMjY1LmMgYi9saWJhdmNv ZGVjL3ZhYXBpX2VuY29kZV9oMjY1LmMKK2luZGV4IGFhN2U1MzIuLmYwMTVlNmYgMTAwNjQ0Cist LS0gYS9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZV9oMjY1LmMKKysrKyBiL2xpYmF2Y29kZWMvdmFh cGlfZW5jb2RlX2gyNjUuYworQEAgLTc2NCw3ICs3NjQsNyBAQCBzdGF0aWMgaW50IHZhYXBpX2Vu Y29kZV9oMjY1X2luaXRfcGljdHVyZV9wYXJhbXMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAorICAg ICBWQUFQSUVuY29kZVBpY3R1cmUgICAgICAgICAgICAgICpwcmV2ID0gcGljLT5wcmV2OworICAg ICBWQUFQSUVuY29kZUgyNjVQaWN0dXJlICAgICAgICAgKmhwcmV2ID0gcHJldiA/IHByZXYtPnBy aXZfZGF0YSA6IE5VTEw7CisgICAgIFZBRW5jUGljdHVyZVBhcmFtZXRlckJ1ZmZlckhFVkMgKnZw aWMgPSBwaWMtPmNvZGVjX3BpY3R1cmVfcGFyYW1zOworLSAgICBpbnQgaTsKKysgICAgaW50IGks IGogPSAwOworIAorICAgICBpZiAocGljLT50eXBlID09IFBJQ1RVUkVfVFlQRV9JRFIpIHsKKyAg ICAgICAgIGF2X2Fzc2VydDAocGljLT5kaXNwbGF5X29yZGVyID09IHBpYy0+ZW5jb2RlX29yZGVy KTsKK0BAIC03ODksOCArNzg5LDggQEAgc3RhdGljIGludCB2YWFwaV9lbmNvZGVfaDI2NV9pbml0 X3BpY3R1cmVfcGFyYW1zKEFWQ29kZWNDb250ZXh0ICphdmN0eCwKKyAgICAgICAgICAgICBocGlj LT5waWNfdHlwZSAgICAgICA9IDE7CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgIFZB QVBJRW5jb2RlUGljdHVyZSAqaXJhcF9yZWY7CistICAgICAgICAgICAgYXZfYXNzZXJ0MChwaWMt PnJlZnNbMF0gJiYgcGljLT5yZWZzWzFdKTsKKy0gICAgICAgICAgICBmb3IgKGlyYXBfcmVmID0g cGljOyBpcmFwX3JlZjsgaXJhcF9yZWYgPSBpcmFwX3JlZi0+cmVmc1sxXSkgeworKyAgICAgICAg ICAgIGF2X2Fzc2VydDAocGljLT5yZWZzWzBdWzBdICYmIHBpYy0+cmVmc1sxXVswXSk7CisrICAg ICAgICAgICAgZm9yIChpcmFwX3JlZiA9IHBpYzsgaXJhcF9yZWY7IGlyYXBfcmVmID0gaXJhcF9y ZWYtPnJlZnNbMV1bMF0pIHsKKyAgICAgICAgICAgICAgICAgaWYgKGlyYXBfcmVmLT50eXBlID09 IFBJQ1RVUkVfVFlQRV9JKQorICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg ICAgfQorQEAgLTkxNSwyNCArOTE1LDI3IEBAIHN0YXRpYyBpbnQgdmFhcGlfZW5jb2RlX2gyNjVf aW5pdF9waWN0dXJlX3BhcmFtcyhBVkNvZGVjQ29udGV4dCAqYXZjdHgsCisgICAgICAgICAuZmxh Z3MgICAgICAgICA9IDAsCisgICAgIH07CisgCistICAgIGZvciAoaSA9IDA7IGkgPCBwaWMtPm5i X3JlZnM7IGkrKykgeworLSAgICAgICAgVkFBUElFbmNvZGVQaWN0dXJlICAgICAgKnJlZiA9IHBp Yy0+cmVmc1tpXTsKKy0gICAgICAgIFZBQVBJRW5jb2RlSDI2NVBpY3R1cmUgKmhyZWY7CistCist ICAgICAgICBhdl9hc3NlcnQwKHJlZiAmJiByZWYtPmVuY29kZV9vcmRlciA8IHBpYy0+ZW5jb2Rl X29yZGVyKTsKKy0gICAgICAgIGhyZWYgPSByZWYtPnByaXZfZGF0YTsKKy0KKy0gICAgICAgIHZw aWMtPnJlZmVyZW5jZV9mcmFtZXNbaV0gPSAoVkFQaWN0dXJlSEVWQykgeworLSAgICAgICAgICAg IC5waWN0dXJlX2lkICAgID0gcmVmLT5yZWNvbl9zdXJmYWNlLAorLSAgICAgICAgICAgIC5waWNf b3JkZXJfY250ID0gaHJlZi0+cGljX29yZGVyX2NudCwKKy0gICAgICAgICAgICAuZmxhZ3MgPSAo cmVmLT5kaXNwbGF5X29yZGVyIDwgcGljLT5kaXNwbGF5X29yZGVyID8KKy0gICAgICAgICAgICAg ICAgICAgICAgVkFfUElDVFVSRV9IRVZDX1JQU19TVF9DVVJSX0JFRk9SRSA6IDApIHwKKy0gICAg ICAgICAgICAgICAgICAgICAocmVmLT5kaXNwbGF5X29yZGVyID4gcGljLT5kaXNwbGF5X29yZGVy ID8KKy0gICAgICAgICAgICAgICAgICAgICAgVkFfUElDVFVSRV9IRVZDX1JQU19TVF9DVVJSX0FG VEVSICA6IDApLAorLSAgICAgICAgfTsKKysgICAgZm9yIChpbnQgayA9IDA7IGsgPCBNQVhfUkVG RVJFTkNFX0xJU1RfTlVNOyBrKyspIHsKKysgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwaWMtPm5i X3JlZnNba107IGkrKykgeworKyAgICAgICAgICAgIFZBQVBJRW5jb2RlUGljdHVyZSAgICAgICpy ZWYgPSBwaWMtPnJlZnNba11baV07CisrICAgICAgICAgICAgVkFBUElFbmNvZGVIMjY1UGljdHVy ZSAqaHJlZjsKKysKKysgICAgICAgICAgICBhdl9hc3NlcnQwKHJlZiAmJiByZWYtPmVuY29kZV9v cmRlciA8IHBpYy0+ZW5jb2RlX29yZGVyKTsKKysgICAgICAgICAgICBocmVmID0gcmVmLT5wcml2 X2RhdGE7CisrCisrICAgICAgICAgICAgdnBpYy0+cmVmZXJlbmNlX2ZyYW1lc1tqKytdID0gKFZB UGljdHVyZUhFVkMpIHsKKysgICAgICAgICAgICAgICAgLnBpY3R1cmVfaWQgICAgPSByZWYtPnJl Y29uX3N1cmZhY2UsCisrICAgICAgICAgICAgICAgIC5waWNfb3JkZXJfY250ID0gaHJlZi0+cGlj X29yZGVyX2NudCwKKysgICAgICAgICAgICAgICAgLmZsYWdzID0gKHJlZi0+ZGlzcGxheV9vcmRl ciA8IHBpYy0+ZGlzcGxheV9vcmRlciA/CisrICAgICAgICAgICAgICAgICAgICAgICAgICBWQV9Q SUNUVVJFX0hFVkNfUlBTX1NUX0NVUlJfQkVGT1JFIDogMCkgfAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgKHJlZi0+ZGlzcGxheV9vcmRlciA+IHBpYy0+ZGlzcGxheV9vcmRlciA/CisrICAg ICAgICAgICAgICAgICAgICAgICAgICBWQV9QSUNUVVJFX0hFVkNfUlBTX1NUX0NVUlJfQUZURVIg IDogMCksCisrICAgICAgICAgICAgfTsKKysgICAgICAgIH0KKyAgICAgfQorLSAgICBmb3IgKDsg aSA8IEZGX0FSUkFZX0VMRU1TKHZwaWMtPnJlZmVyZW5jZV9mcmFtZXMpOyBpKyspIHsKKy0gICAg ICAgIHZwaWMtPnJlZmVyZW5jZV9mcmFtZXNbaV0gPSAoVkFQaWN0dXJlSEVWQykgeworKworKyAg ICBmb3IgKDsgaiA8IEZGX0FSUkFZX0VMRU1TKHZwaWMtPnJlZmVyZW5jZV9mcmFtZXMpOyBqKysp IHsKKysgICAgICAgIHZwaWMtPnJlZmVyZW5jZV9mcmFtZXNbal0gPSAoVkFQaWN0dXJlSEVWQykg eworICAgICAgICAgICAgIC5waWN0dXJlX2lkID0gVkFfSU5WQUxJRF9JRCwKKyAgICAgICAgICAg ICAuZmxhZ3MgICAgICA9IFZBX1BJQ1RVUkVfSEVWQ19JTlZBTElELAorICAgICAgICAgfTsKK0BA IC0xMDE2LDIxICsxMDE5LDMzIEBAIHN0YXRpYyBpbnQgdmFhcGlfZW5jb2RlX2gyNjVfaW5pdF9z bGljZV9wYXJhbXMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAorICAgICAgICAgbWVtc2V0KHJwcywg MCwgc2l6ZW9mKCpycHMpKTsKKyAKKyAgICAgICAgIHJwc19waWNzID0gMDsKKy0gICAgICAgIGZv ciAoaSA9IDA7IGkgPCBwaWMtPm5iX3JlZnM7IGkrKykgeworLSAgICAgICAgICAgIHN0cnAgPSBw aWMtPnJlZnNbaV0tPnByaXZfZGF0YTsKKy0gICAgICAgICAgICBycHNfcG9jW3Jwc19waWNzXSAg PSBzdHJwLT5waWNfb3JkZXJfY250OworLSAgICAgICAgICAgIHJwc191c2VkW3Jwc19waWNzXSA9 IDE7CistICAgICAgICAgICAgKytycHNfcGljczsKKysgICAgICAgIGZvciAoaSA9IDA7IGkgPCBN QVhfUkVGRVJFTkNFX0xJU1RfTlVNOyBpKyspIHsKKysgICAgICAgICAgICBmb3IgKGogPSAwOyBq IDwgcGljLT5uYl9yZWZzW2ldOyBqKyspIHsKKysgICAgICAgICAgICAgICAgc3RycCA9IHBpYy0+ cmVmc1tpXVtqXS0+cHJpdl9kYXRhOworKyAgICAgICAgICAgICAgICBycHNfcG9jW3Jwc19waWNz XSAgPSBzdHJwLT5waWNfb3JkZXJfY250OworKyAgICAgICAgICAgICAgICBycHNfdXNlZFtycHNf cGljc10gPSAxOworKyAgICAgICAgICAgICAgICArK3Jwc19waWNzOworKyAgICAgICAgICAgIH0K KyAgICAgICAgIH0KKysKKyAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwaWMtPm5iX2RwYl9waWNz OyBpKyspIHsKKyAgICAgICAgICAgICBpZiAocGljLT5kcGJbaV0gPT0gcGljKQorICAgICAgICAg ICAgICAgICBjb250aW51ZTsKKy0gICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgcGljLT5uYl9y ZWZzOyBqKyspIHsKKy0gICAgICAgICAgICAgICAgaWYgKHBpYy0+ZHBiW2ldID09IHBpYy0+cmVm c1tqXSkKKysKKysgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgcGljLT5uYl9yZWZzWzBdOyBq KyspIHsKKysgICAgICAgICAgICAgICAgaWYgKHBpYy0+ZHBiW2ldID09IHBpYy0+cmVmc1swXVtq XSkKKysgICAgICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIH0KKysgICAgICAg ICAgICBpZiAoaiA8IHBpYy0+bmJfcmVmc1swXSkKKysgICAgICAgICAgICAgICAgY29udGludWU7 CisrCisrICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IHBpYy0+bmJfcmVmc1sxXTsgaisrKSB7 CisrICAgICAgICAgICAgICAgIGlmIChwaWMtPmRwYltpXSA9PSBwaWMtPnJlZnNbMV1bal0pCisg ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICB9CistICAgICAgICAgICAg aWYgKGogPCBwaWMtPm5iX3JlZnMpCisrICAgICAgICAgICAgaWYgKGogPCBwaWMtPm5iX3JlZnNb MV0pCisgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKworICAgICAgICAgICAgIHN0cnAgPSBw aWMtPmRwYltpXS0+cHJpdl9kYXRhOworICAgICAgICAgICAgIHJwc19wb2NbcnBzX3BpY3NdICA9 IHN0cnAtPnBpY19vcmRlcl9jbnQ7CisgICAgICAgICAgICAgcnBzX3VzZWRbcnBzX3BpY3NdID0g MDsKK0BAIC0xMTU1LDggKzExNzAsNyBAQCBzdGF0aWMgaW50IHZhYXBpX2VuY29kZV9oMjY1X2lu aXRfc2xpY2VfcGFyYW1zKEFWQ29kZWNDb250ZXh0ICphdmN0eCwKKyAgICAgICAgIHZzbGljZS0+ cmVmX3BpY19saXN0MVtpXS5mbGFncyAgICAgID0gVkFfUElDVFVSRV9IRVZDX0lOVkFMSUQ7Cisg ICAgIH0KKyAKKy0gICAgYXZfYXNzZXJ0MChwaWMtPm5iX3JlZnMgPD0gMik7CistICAgIGlmIChw aWMtPm5iX3JlZnMgPj0gMSkgeworKyAgICBpZiAocGljLT5uYl9yZWZzWzBdKSB7CisgICAgICAg ICAvLyBCYWNrd2FyZCByZWZlcmVuY2UgZm9yIFAtIG9yIEItZnJhbWUuCisgICAgICAgICBhdl9h c3NlcnQwKHBpYy0+dHlwZSA9PSBQSUNUVVJFX1RZUEVfUCB8fAorICAgICAgICAgICAgICAgICAg ICBwaWMtPnR5cGUgPT0gUElDVFVSRV9UWVBFX0IpOworQEAgLTExNjUsNyArMTE3OSw3IEBAIHN0 YXRpYyBpbnQgdmFhcGlfZW5jb2RlX2gyNjVfaW5pdF9zbGljZV9wYXJhbXMoQVZDb2RlY0NvbnRl eHQgKmF2Y3R4LAorICAgICAgICAgICAgIC8vIFJlZmVyZW5jZSBmb3IgR1BCIEItZnJhbWUsIEww ID09IEwxCisgICAgICAgICAgICAgdnNsaWNlLT5yZWZfcGljX2xpc3QxWzBdID0gdnBpYy0+cmVm ZXJlbmNlX2ZyYW1lc1swXTsKKyAgICAgfQorLSAgICBpZiAocGljLT5uYl9yZWZzID49IDIpIHsK KysgICAgaWYgKHBpYy0+bmJfcmVmc1sxXSkgeworICAgICAgICAgLy8gRm9yd2FyZCByZWZlcmVu Y2UgZm9yIEItZnJhbWUuCisgICAgICAgICBhdl9hc3NlcnQwKHBpYy0+dHlwZSA9PSBQSUNUVVJF X1RZUEVfQik7CisgICAgICAgICB2c2xpY2UtPnJlZl9waWNfbGlzdDFbMF0gPSB2cGljLT5yZWZl cmVuY2VfZnJhbWVzWzFdOworZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdmFhcGlfZW5jb2RlX21w ZWcyLmMgYi9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZV9tcGVnMi5jCitpbmRleCA5MjYxZDE5Li44 MDAwYWUxIDEwMDY0NAorLS0tIGEvbGliYXZjb2RlYy92YWFwaV9lbmNvZGVfbXBlZzIuYworKysr IGIvbGliYXZjb2RlYy92YWFwaV9lbmNvZGVfbXBlZzIuYworQEAgLTQ1OCwxMiArNDU4LDEyIEBA IHN0YXRpYyBpbnQgdmFhcGlfZW5jb2RlX21wZWcyX2luaXRfcGljdHVyZV9wYXJhbXMoQVZDb2Rl Y0NvbnRleHQgKmF2Y3R4LAorICAgICAgICAgYnJlYWs7CisgICAgIGNhc2UgUElDVFVSRV9UWVBF X1A6CisgICAgICAgICB2cGljLT5waWN0dXJlX3R5cGUgPSBWQUVuY1BpY3R1cmVUeXBlUHJlZGlj dGl2ZTsKKy0gICAgICAgIHZwaWMtPmZvcndhcmRfcmVmZXJlbmNlX3BpY3R1cmUgPSBwaWMtPnJl ZnNbMF0tPnJlY29uX3N1cmZhY2U7CisrICAgICAgICB2cGljLT5mb3J3YXJkX3JlZmVyZW5jZV9w aWN0dXJlID0gcGljLT5yZWZzWzBdWzBdLT5yZWNvbl9zdXJmYWNlOworICAgICAgICAgYnJlYWs7 CisgICAgIGNhc2UgUElDVFVSRV9UWVBFX0I6CisgICAgICAgICB2cGljLT5waWN0dXJlX3R5cGUg PSBWQUVuY1BpY3R1cmVUeXBlQmlkaXJlY3Rpb25hbDsKKy0gICAgICAgIHZwaWMtPmZvcndhcmRf cmVmZXJlbmNlX3BpY3R1cmUgID0gcGljLT5yZWZzWzBdLT5yZWNvbl9zdXJmYWNlOworLSAgICAg ICAgdnBpYy0+YmFja3dhcmRfcmVmZXJlbmNlX3BpY3R1cmUgPSBwaWMtPnJlZnNbMV0tPnJlY29u X3N1cmZhY2U7CisrICAgICAgICB2cGljLT5mb3J3YXJkX3JlZmVyZW5jZV9waWN0dXJlICA9IHBp Yy0+cmVmc1swXVswXS0+cmVjb25fc3VyZmFjZTsKKysgICAgICAgIHZwaWMtPmJhY2t3YXJkX3Jl ZmVyZW5jZV9waWN0dXJlID0gcGljLT5yZWZzWzFdWzBdLT5yZWNvbl9zdXJmYWNlOworICAgICAg ICAgYnJlYWs7CisgICAgIGRlZmF1bHQ6CisgICAgICAgICBhdl9hc3NlcnQwKDAgJiYgImludmFs aWQgcGljdHVyZSB0eXBlIik7CitkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92YWFwaV9lbmNvZGVf dnA4LmMgYi9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZV92cDguYworaW5kZXggYWU2YThkMy4uYjk2 ZTRjZCAxMDA2NDQKKy0tLSBhL2xpYmF2Y29kZWMvdmFhcGlfZW5jb2RlX3ZwOC5jCisrKysgYi9s aWJhdmNvZGVjL3ZhYXBpX2VuY29kZV92cDguYworQEAgLTg2LDcgKzg2LDcgQEAgc3RhdGljIGlu dCB2YWFwaV9lbmNvZGVfdnA4X2luaXRfcGljdHVyZV9wYXJhbXMoQVZDb2RlY0NvbnRleHQgKmF2 Y3R4LAorICAgICBzd2l0Y2ggKHBpYy0+dHlwZSkgeworICAgICBjYXNlIFBJQ1RVUkVfVFlQRV9J RFI6CisgICAgIGNhc2UgUElDVFVSRV9UWVBFX0k6CistICAgICAgICBhdl9hc3NlcnQwKHBpYy0+ bmJfcmVmcyA9PSAwKTsKKysgICAgICAgIGF2X2Fzc2VydDAocGljLT5uYl9yZWZzWzBdID09IDAg JiYgcGljLT5uYl9yZWZzWzFdID09IDApOworICAgICAgICAgdnBpYy0+cmVmX2ZsYWdzLmJpdHMu Zm9yY2Vfa2YgPSAxOworICAgICAgICAgdnBpYy0+cmVmX2xhc3RfZnJhbWUgPQorICAgICAgICAg dnBpYy0+cmVmX2dmX2ZyYW1lICAgPQorQEAgLTk0LDE0ICs5NCwxNCBAQCBzdGF0aWMgaW50IHZh YXBpX2VuY29kZV92cDhfaW5pdF9waWN0dXJlX3BhcmFtcyhBVkNvZGVjQ29udGV4dCAqYXZjdHgs CisgICAgICAgICAgICAgVkFfSU5WQUxJRF9TVVJGQUNFOworICAgICAgICAgYnJlYWs7CisgICAg IGNhc2UgUElDVFVSRV9UWVBFX1A6CistICAgICAgICBhdl9hc3NlcnQwKHBpYy0+bmJfcmVmcyA9 PSAxKTsKKysgICAgICAgIGF2X2Fzc2VydDAoIXBpYy0+bmJfcmVmc1sxXSk7CisgICAgICAgICB2 cGljLT5yZWZfZmxhZ3MuYml0cy5ub19yZWZfbGFzdCA9IDA7CisgICAgICAgICB2cGljLT5yZWZf ZmxhZ3MuYml0cy5ub19yZWZfZ2YgICA9IDE7CisgICAgICAgICB2cGljLT5yZWZfZmxhZ3MuYml0 cy5ub19yZWZfYXJmICA9IDE7CisgICAgICAgICB2cGljLT5yZWZfbGFzdF9mcmFtZSA9CisgICAg ICAgICB2cGljLT5yZWZfZ2ZfZnJhbWUgICA9CisgICAgICAgICB2cGljLT5yZWZfYXJmX2ZyYW1l ICA9CistICAgICAgICAgICAgcGljLT5yZWZzWzBdLT5yZWNvbl9zdXJmYWNlOworKyAgICAgICAg ICAgIHBpYy0+cmVmc1swXVswXS0+cmVjb25fc3VyZmFjZTsKKyAgICAgICAgIGJyZWFrOworICAg ICBkZWZhdWx0OgorICAgICAgICAgYXZfYXNzZXJ0MCgwICYmICJpbnZhbGlkIHBpY3R1cmUgdHlw ZSIpOworZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdmFhcGlfZW5jb2RlX3ZwOS5jIGIvbGliYXZj b2RlYy92YWFwaV9lbmNvZGVfdnA5LmMKK2luZGV4IGFmMTM1M2MuLmQ5ZThiYTYgMTAwNjQ0Cist LS0gYS9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZV92cDkuYworKysrIGIvbGliYXZjb2RlYy92YWFw aV9lbmNvZGVfdnA5LmMKK0BAIC05NiwxNSArOTYsMTUgQEAgc3RhdGljIGludCB2YWFwaV9lbmNv ZGVfdnA5X2luaXRfcGljdHVyZV9wYXJhbXMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAorIAorICAg ICBzd2l0Y2ggKHBpYy0+dHlwZSkgeworICAgICBjYXNlIFBJQ1RVUkVfVFlQRV9JRFI6CistICAg ICAgICBhdl9hc3NlcnQwKHBpYy0+bmJfcmVmcyA9PSAwKTsKKysgICAgICAgIGF2X2Fzc2VydDAo cGljLT5uYl9yZWZzWzBdID09IDAgJiYgcGljLT5uYl9yZWZzWzFdID09IDApOworICAgICAgICAg dnBpYy0+cmVmX2ZsYWdzLmJpdHMuZm9yY2Vfa2YgPSAxOworICAgICAgICAgdnBpYy0+cmVmcmVz aF9mcmFtZV9mbGFncyA9IDB4ZmY7CisgICAgICAgICBocGljLT5zbG90ID0gMDsKKyAgICAgICAg IGJyZWFrOworICAgICBjYXNlIFBJQ1RVUkVfVFlQRV9QOgorLSAgICAgICAgYXZfYXNzZXJ0MChw aWMtPm5iX3JlZnMgPT0gMSk7CisrICAgICAgICBhdl9hc3NlcnQwKCFwaWMtPm5iX3JlZnNbMV0p OworICAgICAgICAgeworLSAgICAgICAgICAgIFZBQVBJRW5jb2RlVlA5UGljdHVyZSAqaHJlZiA9 IHBpYy0+cmVmc1swXS0+cHJpdl9kYXRhOworKyAgICAgICAgICAgIFZBQVBJRW5jb2RlVlA5UGlj dHVyZSAqaHJlZiA9IHBpYy0+cmVmc1swXVswXS0+cHJpdl9kYXRhOworICAgICAgICAgICAgIGF2 X2Fzc2VydDAoaHJlZi0+c2xvdCA9PSAwIHx8IGhyZWYtPnNsb3QgPT0gMSk7CisgCisgICAgICAg ICAgICAgaWYgKGN0eC0+bWF4X2JfZGVwdGggPiAwKSB7CitAQCAtMTIwLDEwICsxMjAsMTAgQEAg c3RhdGljIGludCB2YWFwaV9lbmNvZGVfdnA5X2luaXRfcGljdHVyZV9wYXJhbXMoQVZDb2RlY0Nv bnRleHQgKmF2Y3R4LAorICAgICAgICAgfQorICAgICAgICAgYnJlYWs7CisgICAgIGNhc2UgUElD VFVSRV9UWVBFX0I6CistICAgICAgICBhdl9hc3NlcnQwKHBpYy0+bmJfcmVmcyA9PSAyKTsKKysg ICAgICAgIGF2X2Fzc2VydDAocGljLT5uYl9yZWZzWzBdICYmIHBpYy0+bmJfcmVmc1sxXSk7Cisg ICAgICAgICB7CistICAgICAgICAgICAgVkFBUElFbmNvZGVWUDlQaWN0dXJlICpocmVmMCA9IHBp Yy0+cmVmc1swXS0+cHJpdl9kYXRhLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAqaHJlZjEgPSBwaWMtPnJlZnNbMV0tPnByaXZfZGF0YTsKKysgICAgICAgICAgICBWQUFQSUVu Y29kZVZQOVBpY3R1cmUgKmhyZWYwID0gcGljLT5yZWZzWzBdWzBdLT5wcml2X2RhdGEsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpocmVmMSA9IHBpYy0+cmVmc1sxXVswXS0+ cHJpdl9kYXRhOworICAgICAgICAgICAgIGF2X2Fzc2VydDAoaHJlZjAtPnNsb3QgPCBwaWMtPmJf ZGVwdGggKyAxICYmCisgICAgICAgICAgICAgICAgICAgICAgICBocmVmMS0+c2xvdCA8IHBpYy0+ Yl9kZXB0aCArIDEpOworIAorQEAgLTE1NywxMiArMTU3LDE0IEBAIHN0YXRpYyBpbnQgdmFhcGlf ZW5jb2RlX3ZwOV9pbml0X3BpY3R1cmVfcGFyYW1zKEFWQ29kZWNDb250ZXh0ICphdmN0eCwKKyAg ICAgZm9yIChpID0gMDsgaSA8IEZGX0FSUkFZX0VMRU1TKHZwaWMtPnJlZmVyZW5jZV9mcmFtZXMp OyBpKyspCisgICAgICAgICB2cGljLT5yZWZlcmVuY2VfZnJhbWVzW2ldID0gVkFfSU5WQUxJRF9T VVJGQUNFOworIAorLSAgICBmb3IgKGkgPSAwOyBpIDwgcGljLT5uYl9yZWZzOyBpKyspIHsKKy0g ICAgICAgIFZBQVBJRW5jb2RlUGljdHVyZSAqcmVmX3BpYyA9IHBpYy0+cmVmc1tpXTsKKy0gICAg ICAgIGludCBzbG90OworLSAgICAgICAgc2xvdCA9ICgoVkFBUElFbmNvZGVWUDlQaWN0dXJlKily ZWZfcGljLT5wcml2X2RhdGEpLT5zbG90OworLSAgICAgICAgYXZfYXNzZXJ0MCh2cGljLT5yZWZl cmVuY2VfZnJhbWVzW3Nsb3RdID09IFZBX0lOVkFMSURfU1VSRkFDRSk7CistICAgICAgICB2cGlj LT5yZWZlcmVuY2VfZnJhbWVzW3Nsb3RdID0gcmVmX3BpYy0+cmVjb25fc3VyZmFjZTsKKysgICAg Zm9yIChpID0gMDsgaSA8IE1BWF9SRUZFUkVOQ0VfTElTVF9OVU07IGkrKykgeworKyAgICAgICAg Zm9yIChpbnQgaiA9IDA7IGogPCBwaWMtPm5iX3JlZnNbaV07IGorKykgeworKyAgICAgICAgICAg IFZBQVBJRW5jb2RlUGljdHVyZSAqcmVmX3BpYyA9IHBpYy0+cmVmc1tpXVtqXTsKKysgICAgICAg ICAgICBpbnQgc2xvdDsKKysgICAgICAgICAgICBzbG90ID0gKChWQUFQSUVuY29kZVZQOVBpY3R1 cmUqKXJlZl9waWMtPnByaXZfZGF0YSktPnNsb3Q7CisrICAgICAgICAgICAgYXZfYXNzZXJ0MCh2 cGljLT5yZWZlcmVuY2VfZnJhbWVzW3Nsb3RdID09IFZBX0lOVkFMSURfU1VSRkFDRSk7CisrICAg ICAgICAgICAgdnBpYy0+cmVmZXJlbmNlX2ZyYW1lc1tzbG90XSA9IHJlZl9waWMtPnJlY29uX3N1 cmZhY2U7CisrICAgICAgICB9CisgICAgIH0KKyAKKyAgICAgdnBpYy0+cGljX2ZsYWdzLmJpdHMu ZnJhbWVfdHlwZSA9IChwaWMtPnR5cGUgIT0gUElDVFVSRV9UWVBFX0lEUik7CistLSAKKzIuNDEu MAorCgpkaWZmIC0tZ2l0IGEvZmZtcGVnLnNwZWMgYi9mZm1wZWcuc3BlYwppbmRleCBkNjg3MDRi Li40YTIwNjQ0IDEwMDY0NAotLS0gYS9mZm1wZWcuc3BlYworKysgYi9mZm1wZWcuc3BlYwpAQCAt OTIsNyArOTIsNyBAQCBOYW1lOiAgICAgICAgICAgZmZtcGVnCiAlZ2xvYmFsIHBrZ19uYW1lICV7 bmFtZX0lez9wa2dfc3VmZml4fQogCiBWZXJzaW9uOiAgICAgICAgNi4wCi1SZWxlYXNlOiAgICAg ICAgMTUlez9kaXN0fQorUmVsZWFzZTogICAgICAgIDE2JXs/ZGlzdH0KIFN1bW1hcnk6ICAgICAg ICBBIGNvbXBsZXRlIHNvbHV0aW9uIHRvIHJlY29yZCwgY29udmVydCBhbmQgc3RyZWFtIGF1ZGlv IGFuZCB2aWRlbwogTGljZW5zZTogICAgICAgIEdQTC0zLjAtb3ItbGF0ZXIKIFVSTDogICAgICAg ICAgICBodHRwczovL2ZmbXBlZy5vcmcvCkBAIC0xMjksNiArMTI5LDE2IEBAIFBhdGNoNjogICAg ICAgICAwMDAxLWF2Y29kZWMteDg2LW1hdGhvcHMtY2xpcC1jb25zdGFudHMtdXNlZC13aXRoLXNo aWZ0LWkucGF0Y2gKICMgU2VlOiBodHRwczovL2J1Z3ppbGxhLnJwbWZ1c2lvbi5vcmcvc2hvd19i dWcuY2dpP2lkPTY3NzMKIFBhdGNoNzogICAgICAgICAwMDAxLWZmdG9vbHMtZmZtcGVnX2ZpbHRl ci1pbml0aWFsaXplLXRoZS1vLXRvLXNpbGVuY2UtdGgucGF0Y2gKIAorIyBCYWNrcG9ydCBwYXRj aGVzIGZvciBlbmhhbmNlZCBydG1wIHN1cHBvcnQKKyMgQ2YuIGh0dHBzOi8vcGF0Y2h3b3JrLmZm bXBlZy5vcmcvcHJvamVjdC9mZm1wZWcvbGlzdC8/c2VyaWVzPTg5MjYKKyMjIEZyb206IGh0dHBz Oi8vcGF0Y2h3b3JrLmZmbXBlZy5vcmcvc2VyaWVzLzg5MjYvbWJveC8KK1BhdGNoODogICAgICAg ICBGRm1wZWctZGV2ZWwtdjEwLVN1cHBvcnQtZW5oYW5jZWQtZmx2LWluLUZGbXBlZy5wYXRjaAor CisjIEJhY2twb3J0IEFWMSBWQS1BUEkgZW5jb2RlIHN1cHBvcnQKKyMgQ291cnRlc3kgb2YgR2xv cmlvdXNFZ2dyb2xsCisjIyBBZGFwdGVkIGZyb206IGh0dHBzOi8vcGF0Y2h3b3JrLmZmbXBlZy5v cmcvcHJvamVjdC9mZm1wZWcvbGlzdC8/c2VyaWVzPTk1OTQKK1BhdGNoOTogICAgICAgICBmZm1w ZWctZ2UtYXYxLXZhYXBpLWVuY29kZS1zdXBwb3J0LnBhdGNoCisKICMgU2V0IHVwIGRsb3BlbiBm b3Igb3BlbmgyNjQKIFBhdGNoMTAwMTogICAgICBmZm1wZWctZGxvcGVuLW9wZW5oMjY0LnBhdGNo CiAKQEAgLTg2MSw2ICs4NzEsMTAgQEAgcm0gLXJmICV7YnVpbGRyb290fSV7X2RhdGFkaXJ9LyV7 bmFtZX0vZXhhbXBsZXMKICV7X21hbmRpcn0vbWFuMy9saWJzd3NjYWxlLjMqCiAKICVjaGFuZ2Vs b2cKKyogRnJpIE5vdiAxMCAyMDIzIE5lYWwgR29tcGEgPG5nb21wYUBmZWRvcmFwcm9qZWN0Lm9y Zz4gLSA2LjAtMTYKKy0gQWRkIHBhdGNoZXMgdG8gc3VwcG9ydCBlbmhhbmNlZCBSVE1QIGFuZCBB VjEgZW5jb2RpbmcgdGhyb3VnaCBWQS1BUEkKKy0gRm9yY2UgQUFDIGRlY29kaW5nIHRocm91Z2gg ZmRrLWFhYy1mcmVlCisKICogU3VuIE9jdCAwOCAyMDIzIERvbWluaWsgTWllcnplamV3c2tpIDxk b21pbmlrQGdyZXlzZWN0b3IubmV0PiAtIDYuMC0xNQogLSBCYWNrcG9ydCB1cHN0cmVhbSBwYXRj aCB0byBmaXggc2VnZmF1bHQgd2hlbiBwYXNzaW5nIG5vbi1leGlzdGVudCBmaWx0ZXIKICAgb3B0 aW9uIChyZmJ6IzY3NzMpCg==