[PR] [WIP] Ogg seek for chained streams (PR #23944)
Romain Beauxis via ffmpeg-devel <[email protected]> Tue, 28 Jul 2026 21:45:20 -0000
| Newsgroups | gmane.comp.video.ffmpeg.devel |
|---|---|
| Message-ID | <178527512205.51.3789921156731967895@29965ddac10e> |
UFIgIzIzOTQ0IG9wZW5lZCBieSBSb21haW4gQmVhdXhpcyAodG9vdHMpClVSTDogaHR0cHM6Ly9j b2RlLmZmbXBlZy5vcmcvRkZtcGVnL0ZGbXBlZy9wdWxscy8yMzk0NApQYXRjaCBVUkw6IGh0dHBz Oi8vY29kZS5mZm1wZWcub3JnL0ZGbXBlZy9GRm1wZWcvcHVsbHMvMjM5NDQucGF0Y2gKClRoaXMg UFIgZml4ZXMgc2Vla2luZyBpbiBvZ2cgZmlsZXMgd2l0aCBjaGFpbmVkIHN0cmVhbXMuDQoNCkl0 IGRvZXMgc28gYnkgaW50cm9kdWNpbmcgYSBvZ2cgc3RyZWFtIGNoYWluIHNjYW5uZXIgdGhhdCBk b2VzIGEgYmlzZWN0aW9uIG9uIHRoZSBzdHJlYW0ncyBvZ2cgcGFnZXMgdG8gcmVjb25zdHJ1Y3Qg dGhlIGZ1bGwgc2VxdWVuY2Ugb2Ygc3RyZWFtcy4NCg0KVXNpbmcgdGhpcyBpbmZvcm1hdGlvbiwg d2UgYXJlIHRoZW4gYWJsZSB0byBmdWxsIGluZm9ybSB0aGUgcGFyc2VyIG9mIHRoZSB1bmRlcmx5 aW5nIHN0cmVhbXMnIG92ZXJhbGwgcG9zaXRpb24sIFBUUyBhbmQgRFRTLgoKCkZyb20gNjg4NWU5 OWNmODgwMTA0ZjNkNGZkNTc3OTFmNDg1YzYyNGNmZDkxNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogUm9tYWluIEJlYXV4aXMgPHJvbWFpbi5iZWF1eGlzQGdtYWlsLmNvbT4KRGF0ZTog VHVlLCAyOCBKdWwgMjAyNiAxNjo0MDozNyAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMDEvMTBdIGZh dGU6IGFkZCBvZ2cgY2hhaW4gc2Vla2luZyB0ZXN0cwoKQ2hhaW5pbmcgaXMgaG93IE9nZyBjYXJy aWVzIGEgY2hhbmdlIG9mIG1ldGFkYXRhIGluIGJhbmQgYW5kIG5vdGhpbmcgaW4KdGhlIGZvcm1h dCBzYXlzIHdoZXJlIHRoZSBsaW5rcyBhcmUsIHNvIGFkZCBydW5fd2l0aF9jb25jYXRfdGVtcCB0 bwpidWlsZCBzdWNoIGZpbGVzIG91dCBvZiBzZXBhcmF0ZWx5IHdyaXR0ZW4gbGlua3MsIGFuZCBh c2sgZmZwcm9iZSB3aGVyZQphIHNlZWsgbGFuZHMuCgpUaGUgcmVmZXJlbmNlcyByZWNvcmQgd2hh dCBoYXBwZW5zIHRvZGF5LCBvdmVyIGxpbmtzIHJ1bm5pbmcgMC01cywgNS0xM3MKYW5kIDEzLTI0 czoKCiAgc2VlayB0byAgICAgIDJzICAgICAgNHMgICAgICA3cyAgICAgMTJzICAgICAxNXMgICAg IDIycyAgIGR1cmF0aW9uCiAgZmxhYyAgICAgIDAuMDAwICAgMy45OTQgICA0LjA4NyAgIDQuMDg3 ICAgNC4wODcgICA0LjA4NyAgICAgICAgTi9BCiAgdm9yYmlzICAgLTAuMDAzICAgMy45ODQgICA0 LjA3NyAgIDQuMDc3ICAgNC4wNzcgICA0LjA3NyAgICAgMTEuMDAzCiAgb3B1cyAgICAgIDEuOTk0 ICAgMy45OTQgICAzLjk5NCAgIDMuOTk0ICAgMy45OTQgICAzLjk5NCAgICAgICAgTi9BCiAgdGhl b3JhICAgIDEuNjAwICAgNC4wMDAgICA0LjgwMCAgIDQuODAwICAgNC44MDAgICA0LjgwMCAgICAg MTEuMDAwCi0tLQogdGVzdHMvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwog dGVzdHMvZmF0ZS1ydW4uc2ggICAgICAgICAgICAgICAgICAgIHwgMzIgKysrKysrKysrKysrKysr KysKIHRlc3RzL2ZhdGUvb2dnLWNoYWluLm1hayAgICAgICAgICAgICB8IDUxICsrKysrKysrKysr KysrKysrKysrKysrKysrKysKIHRlc3RzL3JlZi9mYXRlL29nZy1jaGFpbi1zZWVrLWZsYWMgICB8 IDEzICsrKysrKysKIHRlc3RzL3JlZi9mYXRlL29nZy1jaGFpbi1zZWVrLW9wdXMgICB8IDEzICsr KysrKysKIHRlc3RzL3JlZi9mYXRlL29nZy1jaGFpbi1zZWVrLXRoZW9yYSB8IDEzICsrKysrKysK IHRlc3RzL3JlZi9mYXRlL29nZy1jaGFpbi1zZWVrLXZvcmJpcyB8IDEzICsrKysrKysKIDcgZmls ZXMgY2hhbmdlZCwgMTM2IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9m YXRlL29nZy1jaGFpbi5tYWsKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9yZWYvZmF0ZS9vZ2ct Y2hhaW4tc2Vlay1mbGFjCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvcmVmL2ZhdGUvb2dnLWNo YWluLXNlZWstb3B1cwogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL3JlZi9mYXRlL29nZy1jaGFp bi1zZWVrLXRoZW9yYQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL3JlZi9mYXRlL29nZy1jaGFp bi1zZWVrLXZvcmJpcwoKZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlIGIvdGVzdHMvTWFrZWZp bGUKaW5kZXggM2YwMTMyZGQ5Ny4uZDZkNmY4NzgyOCAxMDA2NDQKLS0tIGEvdGVzdHMvTWFrZWZp bGUKKysrIGIvdGVzdHMvTWFrZWZpbGUKQEAgLTIyOCw2ICsyMjgsNyBAQCBpbmNsdWRlICQoU1JD X1BBVEgpL3Rlc3RzL2ZhdGUvbXBlZzQubWFrCiBpbmNsdWRlICQoU1JDX1BBVEgpL3Rlc3RzL2Zh dGUvbXBlZ3BzLm1hawogaW5jbHVkZSAkKFNSQ19QQVRIKS90ZXN0cy9mYXRlL21wZWd0cy5tYWsK IGluY2x1ZGUgJChTUkNfUEFUSCkvdGVzdHMvZmF0ZS9teGYubWFrCitpbmNsdWRlICQoU1JDX1BB VEgpL3Rlc3RzL2ZhdGUvb2dnLWNoYWluLm1hawogaW5jbHVkZSAkKFNSQ19QQVRIKS90ZXN0cy9m YXRlL29nZy12b3JiaXMubWFrCiBpbmNsdWRlICQoU1JDX1BBVEgpL3Rlc3RzL2ZhdGUvb2dnLWZs YWMubWFrCiBpbmNsdWRlICQoU1JDX1BBVEgpL3Rlc3RzL2ZhdGUvb2dnLW9wdXMubWFrCmRpZmYg LS1naXQgYS90ZXN0cy9mYXRlLXJ1bi5zaCBiL3Rlc3RzL2ZhdGUtcnVuLnNoCmluZGV4IGQwNzI2 YzY0ZGQuLmNkOGJhYjliNzkgMTAwNzU1Ci0tLSBhL3Rlc3RzL2ZhdGUtcnVuLnNoCisrKyBiL3Rl c3RzL2ZhdGUtcnVuLnNoCkBAIC0xMTMsNiArMTEzLDM4IEBAIHJ1bl93aXRoX3RlbXAoKXsKICAg ICBydW4gJHByb2Nlc3NfdG1wICR0bXBmaWxlCiB9CiAKKyMgQ3JlYXRlIG9uZSBvciBtb3JlIHRl bXBvcmFyeSBmaWxlcyBhbmQgcHJvY2VzcyB0aGVtIGFzIGEgc2luZ2xlIGlucHV0LgorIworIyBF YWNoIGNyZWF0b3Igd3JpdGVzIGEgZmlsZSBvZiBpdHMgb3duOiA8dGVzdD4uPG4+LjxleHQ+LCBu dW1iZXJlZCBpbiB0aGUKKyMgb3JkZXIgbGlzdGVkLCBvciA8dGVzdD4uPGV4dD4gd2hlbiB0aGVy ZSBpcyBvbmx5IG9uZS4gVGhlIHByb2Nlc3NpbmcgY29tbWFuZAorIyBpcyBoYW5kZWQgdGhlaXIg Y29uY2F0ZW5hdGlvbiwgd2hpY2ggaXMgd2hhdCBhIGNoYWluZWQgT2dnIHN0cmVhbSBpcyBtYWRl IG9mLgorIworIyBVc2FnZTogcnVuX3dpdGhfY29uY2F0X3RlbXAgZXh0IGNyZWF0ZV9jbWQgW2Ny ZWF0ZV9jbWQgLi4uXSBwcm9jZXNzX2NtZAorcnVuX3dpdGhfY29uY2F0X3RlbXAoKXsKKyAgICBm aWxleHQ9JDEKKyAgICBzaGlmdAorICAgIG5iX2NyZWF0b3JzPSQoKCQjIC0gMSkpCisgICAgY3Jl YXRvcl9ubz0wCisgICAgd2hpbGUgWyAkIyAtZ3QgMSBdOyBkbworICAgICAgICBjcmVhdG9yX25v PSQoKGNyZWF0b3Jfbm8gKyAxKSkKKyAgICAgICAgaWYgWyAkbmJfY3JlYXRvcnMgLWVxIDEgXTsg dGhlbgorICAgICAgICAgICAgdG1wZmlsZT0ke291dGRpcn0vJHRlc3QuJGZpbGV4dAorICAgICAg ICAgICAgaW5wdXQ9JHRtcGZpbGUKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdG1wZmlsZT0k e291dGRpcn0vJHRlc3QuJGNyZWF0b3Jfbm8uJGZpbGV4dAorICAgICAgICAgICAgaWYgWyAkY3Jl YXRvcl9ubyAtZXEgMSBdOyB0aGVuCisgICAgICAgICAgICAgICAgaW5wdXQ9Y29uY2F0OiR0bXBm aWxlCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaW5wdXQ9JGlucHV0XHwkdG1w ZmlsZQorICAgICAgICAgICAgZmkKKyAgICAgICAgZmkKKyAgICAgICAgY2xlYW5maWxlcz0iJGNs ZWFuZmlsZXMgJHRtcGZpbGUiCisgICAgICAgIHJ1biAkMSAkdG1wZmlsZSB8fCByZXR1cm4gMQor ICAgICAgICBzaGlmdAorICAgIGRvbmUKKyAgICBydW4gJDEgJGlucHV0Cit9CisKICMgT3Zlcndy aXRlIGJ5dGVzIGF0IGEgc3BlY2lmaWMgb2Zmc2V0IGluIGEgYmluYXJ5IGZpbGUuCiAjIFVzYWdl OiBwYXRjaF9ieXRlcyBmaWxlIG9mZnNldCBvY3RhbC1ieXRlLXN0cmluZwogcGF0Y2hfYnl0ZXMo KXsKZGlmZiAtLWdpdCBhL3Rlc3RzL2ZhdGUvb2dnLWNoYWluLm1hayBiL3Rlc3RzL2ZhdGUvb2dn LWNoYWluLm1hawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5mYjU2ODdk MjQ1Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvZmF0ZS9vZ2ctY2hhaW4ubWFrCkBAIC0wLDAg KzEsNTEgQEAKKyMgT25lIGxpbmsgb2YgYSBjaGFpbmVkIE9nZyBzdHJlYW0sIGFzIGEgdG9uZSBv ciBhcyBhIHNvbGlkIGNvbG91ci4gVGhlIHNlcmlhbAorIyBudW1iZXIgaXMgZml4ZWQgcmF0aGVy IHRoYW4gcmFuZG9tLCB3aGljaCAtZmZsYWdzICtiaXRleGFjdCBhcnJhbmdlcywgc28gdGhhdAor IyB0aGUgcmVzdWx0IGlzIHRoZSBzYW1lIG9uIGV2ZXJ5IHJ1bi4KKyMgJCgxKSBmcmVxdWVuY3kv Y29sb3VyICAkKDIpIGR1cmF0aW9uICAkKDMpIGVuY29kZXIgICQoNCkgc2VyaWFsIG51bWJlcgor T0dHX0NIQUlOX0xJTksgPSAiJChGRk1QRUcpIC1ub3N0ZGluIC1oaWRlX2Jhbm5lciAtbG9nbGV2 ZWwgcXVpZXQgXAorICAgIC1mIGxhdmZpIC1pIHNpbmU9ZnJlcXVlbmN5PSQoMSk6ZHVyYXRpb249 JCgyKSAtYzphICQoMykgXAorICAgIC1mZmxhZ3MgK2JpdGV4YWN0IC1mIG9nZyAtc2VyaWFsX29m ZnNldCAkKDQpIC15IgorCitPR0dfQ0hBSU5fVklERU9fTElOSyA9ICIkKEZGTVBFRykgLW5vc3Rk aW4gLWhpZGVfYmFubmVyIC1sb2dsZXZlbCBxdWlldCBcCisgICAgLWYgbGF2ZmkgLWkgY29sb3I9 Yz0kKDEpOnM9MTYweDEyMDpyPTE1OmQ9JCgyKSAtYzp2ICQoMykgXAorICAgIC1mZmxhZ3MgK2Jp dGV4YWN0IC1mIG9nZyAtc2VyaWFsX29mZnNldCAkKDQpIC15IgorCisjIFdoZXJlIGEgc2VlayBs YW5kcywgYW5kIHdoYXQgdGhlIGZpbGUgY2xhaW1zIHRvIGxhc3QsIG92ZXIgYSBjaGFpbiB3aG9z ZQorIyBsaW5rcyBydW4gMC01cywgNS0xM3MgYW5kIDEzLTI0cy4gQnl0ZSBvZmZzZXRzIGFyZSBs ZWZ0IG91dCBvbiBwdXJwb3NlOgorIyB0aGV5IG1vdmUgd2l0aCB0aGUgZW5jb2Rlciwgd2hpbGUg dGhlIHRpbWVzdGFtcHMgYXJlIHdoYXQgaXMgdW5kZXIgdGVzdC4KK09HR19DSEFJTl9TRUVLID0g ImZmcHJvYmUkKFBST0dTU1VGKSQoRVhFU1VGKSAtYml0ZXhhY3QgLXRocmVhZHMgMSBcCisgICAg LW9mIGRlZmF1bHQ9bnc9MSAtc2VsZWN0X3N0cmVhbXMgMCBcCisgICAgLXNob3dfZW50cmllcyBm b3JtYXQ9ZHVyYXRpb246cGFja2V0PXB0cyxwdHNfdGltZSBcCisgICAgLXJlYWRfaW50ZXJ2YWxz IDIlK1wjMSw0JStcIzEsNyUrXCMxLDEyJStcIzEsMTUlK1wjMSwyMiUrXCMxIC1pIgorCitGQVRF X09HR19DSEFJTi0kKGNhbGwgQUxMWUVTLCBPR0dfREVNVVhFUiBPR0dfTVVYRVIgRkxBQ19FTkNP REVSIExBVkZJX0lOREVWIENPTkNBVF9QUk9UT0NPTCBGSUxFX1BST1RPQ09MKSArPSBmYXRlLW9n Zy1jaGFpbi1zZWVrLWZsYWMKK2ZhdGUtb2dnLWNoYWluLXNlZWstZmxhYzogQ01EID0gcnVuX3dp dGhfY29uY2F0X3RlbXAgb2dnIFwKKyAgICAkKGNhbGwgT0dHX0NIQUlOX0xJTkssMzAwLDUsZmxh YywxMDApIFwKKyAgICAkKGNhbGwgT0dHX0NIQUlOX0xJTkssNDUwLDgsZmxhYywxMDEpIFwKKyAg ICAkKGNhbGwgT0dHX0NIQUlOX0xJTkssNjAwLDExLGZsYWMsMTAyKSBcCisgICAgJChPR0dfQ0hB SU5fU0VFSykKKworRkFURV9PR0dfQ0hBSU4tJChjYWxsIEFMTFlFUywgT0dHX0RFTVVYRVIgT0dH X01VWEVSIExJQlZPUkJJU19FTkNPREVSIExBVkZJX0lOREVWIENPTkNBVF9QUk9UT0NPTCBGSUxF X1BST1RPQ09MKSArPSBmYXRlLW9nZy1jaGFpbi1zZWVrLXZvcmJpcworZmF0ZS1vZ2ctY2hhaW4t c2Vlay12b3JiaXM6IENNRCA9IHJ1bl93aXRoX2NvbmNhdF90ZW1wIG9nZyBcCisgICAgJChjYWxs IE9HR19DSEFJTl9MSU5LLDMwMCw1LGxpYnZvcmJpcywxMDApIFwKKyAgICAkKGNhbGwgT0dHX0NI QUlOX0xJTkssNDUwLDgsbGlidm9yYmlzLDEwMSkgXAorICAgICQoY2FsbCBPR0dfQ0hBSU5fTElO Syw2MDAsMTEsbGlidm9yYmlzLDEwMikgXAorICAgICQoT0dHX0NIQUlOX1NFRUspCisKK0ZBVEVf T0dHX0NIQUlOLSQoY2FsbCBBTExZRVMsIE9HR19ERU1VWEVSIE9HR19NVVhFUiBMSUJPUFVTX0VO Q09ERVIgTEFWRklfSU5ERVYgQ09OQ0FUX1BST1RPQ09MIEZJTEVfUFJPVE9DT0wpICs9IGZhdGUt b2dnLWNoYWluLXNlZWstb3B1cworZmF0ZS1vZ2ctY2hhaW4tc2Vlay1vcHVzOiBDTUQgPSBydW5f d2l0aF9jb25jYXRfdGVtcCBvZ2cgXAorICAgICQoY2FsbCBPR0dfQ0hBSU5fTElOSywzMDAsNSxs aWJvcHVzLDEwMCkgXAorICAgICQoY2FsbCBPR0dfQ0hBSU5fTElOSyw0NTAsOCxsaWJvcHVzLDEw MSkgXAorICAgICQoY2FsbCBPR0dfQ0hBSU5fTElOSyw2MDAsMTEsbGlib3B1cywxMDIpIFwKKyAg ICAkKE9HR19DSEFJTl9TRUVLKQorCitGQVRFX09HR19DSEFJTi0kKGNhbGwgQUxMWUVTLCBPR0df REVNVVhFUiBPR0dfTVVYRVIgTElCVEhFT1JBX0VOQ09ERVIgTEFWRklfSU5ERVYgQ09OQ0FUX1BS T1RPQ09MIEZJTEVfUFJPVE9DT0wpICs9IGZhdGUtb2dnLWNoYWluLXNlZWstdGhlb3JhCitmYXRl LW9nZy1jaGFpbi1zZWVrLXRoZW9yYTogQ01EID0gcnVuX3dpdGhfY29uY2F0X3RlbXAgb2dnIFwK KyAgICAkKGNhbGwgT0dHX0NIQUlOX1ZJREVPX0xJTksscmVkLDUsbGlidGhlb3JhLDEwMCkgXAor ICAgICQoY2FsbCBPR0dfQ0hBSU5fVklERU9fTElOSyxncmVlbiw4LGxpYnRoZW9yYSwxMDEpIFwK KyAgICAkKGNhbGwgT0dHX0NIQUlOX1ZJREVPX0xJTkssYmx1ZSwxMSxsaWJ0aGVvcmEsMTAyKSBc CisgICAgJChPR0dfQ0hBSU5fU0VFSykKKworRkFURV9GRk1QRUdfRkZQUk9CRSArPSAkKEZBVEVf T0dHX0NIQUlOLXllcykKKworZmF0ZS1vZ2ctY2hhaW46ICQoRkFURV9PR0dfQ0hBSU4teWVzKQpk aWZmIC0tZ2l0IGEvdGVzdHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNlZWstZmxhYyBiL3Rlc3RzL3Jl Zi9mYXRlL29nZy1jaGFpbi1zZWVrLWZsYWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMC4uZDI3YWY4MDljNgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3JlZi9mYXRlL29n Zy1jaGFpbi1zZWVrLWZsYWMKQEAgLTAsMCArMSwxMyBAQAorcHRzPTAKK3B0c190aW1lPTAuMDAw MDAwCitwdHM9MTc2MTI4CitwdHNfdGltZT0zLjk5MzgzMgorcHRzPTE4MDIyNAorcHRzX3RpbWU9 NC4wODY3MTIKK3B0cz0xODAyMjQKK3B0c190aW1lPTQuMDg2NzEyCitwdHM9MTgwMjI0CitwdHNf dGltZT00LjA4NjcxMgorcHRzPTE4MDIyNAorcHRzX3RpbWU9NC4wODY3MTIKK2R1cmF0aW9uPU4v QQpkaWZmIC0tZ2l0IGEvdGVzdHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNlZWstb3B1cyBiL3Rlc3Rz L3JlZi9mYXRlL29nZy1jaGFpbi1zZWVrLW9wdXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMC4uMTVkYzgwMTRkZgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3JlZi9mYXRl L29nZy1jaGFpbi1zZWVrLW9wdXMKQEAgLTAsMCArMSwxMyBAQAorcHRzPTk1Njg4CitwdHNfdGlt ZT0xLjk5MzUwMAorcHRzPTE5MTY4OAorcHRzX3RpbWU9My45OTM1MDAKK3B0cz0xOTE2ODgKK3B0 c190aW1lPTMuOTkzNTAwCitwdHM9MTkxNjg4CitwdHNfdGltZT0zLjk5MzUwMAorcHRzPTE5MTY4 OAorcHRzX3RpbWU9My45OTM1MDAKK3B0cz0xOTE2ODgKK3B0c190aW1lPTMuOTkzNTAwCitkdXJh dGlvbj1OL0EKZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZi9mYXRlL29nZy1jaGFpbi1zZWVrLXRoZW9y YSBiL3Rlc3RzL3JlZi9mYXRlL29nZy1jaGFpbi1zZWVrLXRoZW9yYQpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwLi43NzI1OWFiNWE4Ci0tLSAvZGV2L251bGwKKysrIGIvdGVz dHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNlZWstdGhlb3JhCkBAIC0wLDAgKzEsMTMgQEAKK3B0cz0y NAorcHRzX3RpbWU9MS42MDAwMDAKK3B0cz02MAorcHRzX3RpbWU9NC4wMDAwMDAKK3B0cz03Mgor cHRzX3RpbWU9NC44MDAwMDAKK3B0cz03MgorcHRzX3RpbWU9NC44MDAwMDAKK3B0cz03MgorcHRz X3RpbWU9NC44MDAwMDAKK3B0cz03MgorcHRzX3RpbWU9NC44MDAwMDAKK2R1cmF0aW9uPTExLjAw MDAwMApkaWZmIC0tZ2l0IGEvdGVzdHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNlZWstdm9yYmlzIGIv dGVzdHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNlZWstdm9yYmlzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAuLjgwYjViZTExZGYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9y ZWYvZmF0ZS9vZ2ctY2hhaW4tc2Vlay12b3JiaXMKQEAgLTAsMCArMSwxMyBAQAorcHRzPS0xMjgK K3B0c190aW1lPS0wLjAwMjkwMgorcHRzPTE3NTY4MAorcHRzX3RpbWU9My45ODM2NzMKK3B0cz0x Nzk3NzYKK3B0c190aW1lPTQuMDc2NTUzCitwdHM9MTc5Nzc2CitwdHNfdGltZT00LjA3NjU1Mwor cHRzPTE3OTc3NgorcHRzX3RpbWU9NC4wNzY1NTMKK3B0cz0xNzk3NzYKK3B0c190aW1lPTQuMDc2 NTUzCitkdXJhdGlvbj0xMS4wMDI5MDIKLS0gCjIuNTIuMAoKCkZyb20gYTNhZjRjMjc2M2I1ODk3 NGJiMDI1MmZiODliNjkyOThiNDRhM2EyMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog Um9tYWluIEJlYXV4aXMgPHJvbWFpbi5iZWF1eGlzQGdtYWlsLmNvbT4KRGF0ZTogVHVlLCAyOCBK dWwgMjAyNiAxNjo0MDozNyAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMDIvMTBdIGF2Zm9ybWF0L29n ZzogbW92ZSBkZW11eGVyIGFuZCBwYXJzZXJzIHRvIHRoZWlyIG93bgogZGlyZWN0b3J5CgpNb3Zl IHRoZSBkb3plbiBvZ2dmb28uYyBmaWxlcyB1bmRlciBsaWJhdmZvcm1hdC9vZ2cvIGFuZCBkcm9w IHRoZSBub3cKcmVkdW5kYW50IHByZWZpeCwgc28gb2dnZGVjLmMgYmVjb21lcyBvZ2cvZGVjb2Rl ci5jLgoKVGhlIGluY2x1ZGUgZ3VhcmQgaXMgcmVuYW1lZCB0byBtYXRjaDsgbm8gZnVuY3Rpb25h bCBjaGFuZ2UgYW5kIG5vIHRlc3QKbW92ZXMuCi0tLQogbGliYXZmb3JtYXQvTWFrZWZpbGUgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgMzggKysrKysrKysrLS0tLS0tLS0tLQogbGliYXZmb3Jt YXQvZmxhY2RlYy5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGxpYmF2Zm9ybWF0 L21hdHJvc2thZGVjLmMgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBsaWJhdmZvcm1hdC97 b2dnZGVjLmMgPT4gb2dnL2RlY29kZXIuY30gICAgICAgfCAxMCArKy0tLQogbGliYXZmb3JtYXQv e29nZ2RlYy5oID0+IG9nZy9kZWNvZGVyLmh9ICAgICAgIHwgIDggKystLQogbGliYXZmb3JtYXQv e29nZ2VuYy5jID0+IG9nZy9lbmNvZGVyLmN9ICAgICAgIHwgMTIgKysrLS0tCiAuLi4ve29nZ3Bh cnNlZGlyYWMuYyA9PiBvZ2cvcGFyc2VkaXJhYy5jfSAgICAgfCAgNiArLS0KIC4uLi97b2dncGFy c2VmbGFjLmMgPT4gb2dnL3BhcnNlZmxhYy5jfSAgICAgICB8ICA2ICstLQogbGliYXZmb3JtYXQv e29nZ3BhcnNlb2dtLmMgPT4gb2dnL3BhcnNlb2dtLmN9IHwgIDggKystLQogLi4uL3tvZ2dwYXJz ZW9wdXMuYyA9PiBvZ2cvcGFyc2VvcHVzLmN9ICAgICAgIHwgIDYgKy0tCiAuLi4vcGFyc2Vza2Vs ZXRvbi5jfSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNiArLS0KIC4uLi97b2dncGFyc2Vz cGVleC5jID0+IG9nZy9wYXJzZXNwZWV4LmN9ICAgICB8ICA2ICstLQogLi4uL3tvZ2dwYXJzZXRo ZW9yYS5jID0+IG9nZy9wYXJzZXRoZW9yYS5jfSAgIHwgIDYgKy0tCiAuLi4ve29nZ3BhcnNldm9y YmlzLmMgPT4gb2dnL3BhcnNldm9yYmlzLmN9ICAgfCAxNCArKystLS0tCiBsaWJhdmZvcm1hdC97 b2dncGFyc2V2cDguYyA9PiBvZ2cvcGFyc2V2cDguY30gfCAgNiArLS0KIDE1IGZpbGVzIGNoYW5n ZWQsIDY4IGluc2VydGlvbnMoKyksIDY4IGRlbGV0aW9ucygtKQogcmVuYW1lIGxpYmF2Zm9ybWF0 L3tvZ2dkZWMuYyA9PiBvZ2cvZGVjb2Rlci5jfSAoOTklKQogcmVuYW1lIGxpYmF2Zm9ybWF0L3tv Z2dkZWMuaCA9PiBvZ2cvZGVjb2Rlci5ofSAoOTglKQogcmVuYW1lIGxpYmF2Zm9ybWF0L3tvZ2dl bmMuYyA9PiBvZ2cvZW5jb2Rlci5jfSAoOTklKQogcmVuYW1lIGxpYmF2Zm9ybWF0L3tvZ2dwYXJz ZWRpcmFjLmMgPT4gb2dnL3BhcnNlZGlyYWMuY30gKDk3JSkKIHJlbmFtZSBsaWJhdmZvcm1hdC97 b2dncGFyc2VmbGFjLmMgPT4gb2dnL3BhcnNlZmxhYy5jfSAoOTclKQogcmVuYW1lIGxpYmF2Zm9y bWF0L3tvZ2dwYXJzZW9nbS5jID0+IG9nZy9wYXJzZW9nbS5jfSAoOTglKQogcmVuYW1lIGxpYmF2 Zm9ybWF0L3tvZ2dwYXJzZW9wdXMuYyA9PiBvZ2cvcGFyc2VvcHVzLmN9ICg5OCUpCiByZW5hbWUg bGliYXZmb3JtYXQve29nZ3BhcnNlc2tlbGV0b24uYyA9PiBvZ2cvcGFyc2Vza2VsZXRvbi5jfSAo OTYlKQogcmVuYW1lIGxpYmF2Zm9ybWF0L3tvZ2dwYXJzZXNwZWV4LmMgPT4gb2dnL3BhcnNlc3Bl ZXguY30gKDk3JSkKIHJlbmFtZSBsaWJhdmZvcm1hdC97b2dncGFyc2V0aGVvcmEuYyA9PiBvZ2cv cGFyc2V0aGVvcmEuY30gKDk4JSkKIHJlbmFtZSBsaWJhdmZvcm1hdC97b2dncGFyc2V2b3JiaXMu YyA9PiBvZ2cvcGFyc2V2b3JiaXMuY30gKDk4JSkKIHJlbmFtZSBsaWJhdmZvcm1hdC97b2dncGFy c2V2cDguYyA9PiBvZ2cvcGFyc2V2cDguY30gKDk3JSkKCmRpZmYgLS1naXQgYS9saWJhdmZvcm1h dC9NYWtlZmlsZSBiL2xpYmF2Zm9ybWF0L01ha2VmaWxlCmluZGV4IDJhN2ZiZWNmOTYuLmYyZjEw ODc2ZjcgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L01ha2VmaWxlCisrKyBiL2xpYmF2Zm9ybWF0 L01ha2VmaWxlCkBAIC0yMjYsNyArMjI2LDcgQEAgT0JKUy0kKENPTkZJR19GSVRTX0RFTVVYRVIp ICAgICAgICAgICAgICArPSBmaXRzZGVjLm8KIE9CSlMtJChDT05GSUdfRklUU19NVVhFUikgICAg ICAgICAgICAgICAgKz0gZml0c2VuYy5vCiBPQkpTLSQoQ09ORklHX0ZMQUNfREVNVVhFUikgICAg ICAgICAgICAgICs9IGZsYWNkZWMubyByYXdkZWMubyBcCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZsYWNfcGljdHVyZS5vICAgXAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZ2dwYXJzZXZvcmJpcy5vIFwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2dnL3BhcnNldm9yYmlzLm8gXAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYXlnYWluLm8g ICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9yYmlz Y29tbWVudC5vCiBPQkpTLSQoQ09ORklHX0ZMQUNfTVVYRVIpICAgICAgICAgICAgICAgICs9IGZs YWNlbmMubyBmbGFjZW5jX2hlYWRlci5vIFwKQEAgLTM2NSw3ICszNjUsNyBAQCBPQkpTLSQoQ09O RklHX000Vl9ERU1VWEVSKSAgICAgICAgICAgICAgICs9IG00dmRlYy5vIHJhd2RlYy5vCiBPQkpT LSQoQ09ORklHX000Vl9NVVhFUikgICAgICAgICAgICAgICAgICs9IHJhd2VuYy5vCiBPQkpTLSQo Q09ORklHX01BVFJPU0tBX0RFTVVYRVIpICAgICAgICAgICs9IG1hdHJvc2thZGVjLm8gbWF0cm9z a2EubyAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFj X3BpY3R1cmUubyBybXNpcHIubyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG9nZ3BhcnNldm9yYmlzLm8gdm9yYmlzY29tbWVudC5vIFwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2dnL3BhcnNldm9yYmlzLm8gdm9yYmlz Y29tbWVudC5vIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cXRwYWxldHRlLm8gcmVwbGF5Z2Fpbi5vIGRvdmlfaXNvbS5vCiBPQkpTLSQoQ09ORklHX01BVFJP U0tBX01VWEVSKSAgICAgICAgICAgICs9IG1hdHJvc2thZW5jLm8gbWF0cm9za2EubyBcCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWNlbmNfaGVhZGVyLm8g dm9yYmlzY29tbWVudC5vIFwKQEAgLTQzOCwyOCArNDM4LDI4IEBAIE9CSlMtJChDT05GSUdfTlVW X0RFTVVYRVIpICAgICAgICAgICAgICAgKz0gbnV2Lm8KIE9CSlMtJChDT05GSUdfQVYxX0RFTVVY RVIpICAgICAgICAgICAgICAgKz0gYXYxZGVjLm8KIE9CSlMtJChDT05GSUdfT0JVX0RFTVVYRVIp ICAgICAgICAgICAgICAgKz0gYXYxZGVjLm8KIE9CSlMtJChDT05GSUdfT0JVX01VWEVSKSAgICAg ICAgICAgICAgICAgKz0gcmF3ZW5jLm8KLU9CSlMtJChDT05GSUdfT0dHX0RFTVVYRVIpICAgICAg ICAgICAgICAgKz0gb2dnZGVjLm8gICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG9nZ3BhcnNlZGlyYWMubyAgXAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBvZ2dwYXJzZWZsYWMubyAgIFwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2dncGFyc2VvZ20ubyAgICBcCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9nZ3BhcnNlb3B1cy5vICAg XAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZ2dwYXJzZXNr ZWxldG9uLm8gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv Z2dwYXJzZXNwZWV4Lm8gIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb2dncGFyc2V0aGVvcmEubyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG9nZ3BhcnNldm9yYmlzLm8gXAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBvZ2dwYXJzZXZwOC5vICAgIFwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGF5Z2Fpbi5vICAgICBcCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvcmJpc2NvbW1lbnQubyAgXAorT0JK Uy0kKENPTkZJR19PR0dfREVNVVhFUikgICAgICAgICAgICAgICArPSBvZ2cvZGVjb2Rlci5vICAg ICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2dnL3Bh cnNlZGlyYWMubyAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG9nZy9wYXJzZWZsYWMubyAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBvZ2cvcGFyc2VvZ20ubyAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgb2dnL3BhcnNlb3B1cy5vICAgICBcCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9nZy9wYXJzZXNrZWxldG9uLm8gXAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZ2cvcGFyc2VzcGVl eC5vICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2dn L3BhcnNldGhlb3JhLm8gICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG9nZy9wYXJzZXZvcmJpcy5vICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBvZ2cvcGFyc2V2cDgubyAgICAgIFwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGF5Z2Fpbi5vICAgICAgICBcCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvcmJpc2NvbW1lbnQubyAgICAg XAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFjX3BpY3R1 cmUubwotT0JKUy0kKENPTkZJR19PR0FfTVVYRVIpICAgICAgICAgICAgICAgICArPSBvZ2dlbmMu byBcCitPQkpTLSQoQ09ORklHX09HQV9NVVhFUikgICAgICAgICAgICAgICAgICs9IG9nZy9lbmNv ZGVyLm8gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b3Ji aXNjb21tZW50Lm8KLU9CSlMtJChDT05GSUdfT0dHX01VWEVSKSAgICAgICAgICAgICAgICAgKz0g b2dnZW5jLm8gXAorT0JKUy0kKENPTkZJR19PR0dfTVVYRVIpICAgICAgICAgICAgICAgICArPSBv Z2cvZW5jb2Rlci5vIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdm9yYmlzY29tbWVudC5vCi1PQkpTLSQoQ09ORklHX09HVl9NVVhFUikgICAgICAgICAgICAg ICAgICs9IG9nZ2VuYy5vIFwKK09CSlMtJChDT05GSUdfT0dWX01VWEVSKSAgICAgICAgICAgICAg ICAgKz0gb2dnL2VuY29kZXIubyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHZvcmJpc2NvbW1lbnQubwogT0JKUy0kKENPTkZJR19PTUFfREVNVVhFUikgICAg ICAgICAgICAgICArPSBvbWFkZWMubyBwY20ubyBvbWEubwogT0JKUy0kKENPTkZJR19PTUFfTVVY RVIpICAgICAgICAgICAgICAgICArPSBvbWFlbmMubyByYXdlbmMubyBvbWEubyBpZDN2MmVuYy5v Ci1PQkpTLSQoQ09ORklHX09QVVNfTVVYRVIpICAgICAgICAgICAgICAgICs9IG9nZ2VuYy5vIFwK K09CSlMtJChDT05GSUdfT1BVU19NVVhFUikgICAgICAgICAgICAgICAgKz0gb2dnL2VuY29kZXIu byBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvcmJpc2Nv bW1lbnQubwogT0JKUy0kKENPTkZJR19PU1FfREVNVVhFUikgICAgICAgICAgICAgICArPSBvc3Eu byByYXdkZWMubwogT0JKUy0kKENPTkZJR19QQUZfREVNVVhFUikgICAgICAgICAgICAgICArPSBw YWYubwpAQCAtNTg1LDcgKzU4NSw3IEBAIE9CSlMtJChDT05GSUdfU09YX0RFTVVYRVIpICAgICAg ICAgICAgICAgKz0gc294ZGVjLm8gcGNtLm8KIE9CSlMtJChDT05GSUdfU09YX01VWEVSKSAgICAg ICAgICAgICAgICAgKz0gc294ZW5jLm8gcmF3ZW5jLm8KIE9CSlMtJChDT05GSUdfU1BESUZfREVN VVhFUikgICAgICAgICAgICAgKz0gc3BkaWYubyBzcGRpZmRlYy5vCiBPQkpTLSQoQ09ORklHX1NQ RElGX01VWEVSKSAgICAgICAgICAgICAgICs9IHNwZGlmLm8gc3BkaWZlbmMubwotT0JKUy0kKENP TkZJR19TUEVFWF9NVVhFUikgICAgICAgICAgICAgICArPSBvZ2dlbmMubyBcCitPQkpTLSQoQ09O RklHX1NQRUVYX01VWEVSKSAgICAgICAgICAgICAgICs9IG9nZy9lbmNvZGVyLm8gXAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b3JiaXNjb21tZW50Lm8KIE9C SlMtJChDT05GSUdfU1JUX0RFTVVYRVIpICAgICAgICAgICAgICAgKz0gc3J0ZGVjLm8gc3VidGl0 bGVzLm8KIE9CSlMtJChDT05GSUdfU1JUX01VWEVSKSAgICAgICAgICAgICAgICAgKz0gc3J0ZW5j Lm8KZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L2ZsYWNkZWMuYyBiL2xpYmF2Zm9ybWF0L2ZsYWNk ZWMuYwppbmRleCBlODBiNDkzMDdkLi5mN2FkMDAwMTE5IDEwMDY0NAotLS0gYS9saWJhdmZvcm1h dC9mbGFjZGVjLmMKKysrIGIvbGliYXZmb3JtYXQvZmxhY2RlYy5jCkBAIC0zMCw3ICszMCw3IEBA CiAjaW5jbHVkZSAiZmxhY19waWN0dXJlLmgiCiAjaW5jbHVkZSAiaW50ZXJuYWwuaCIKICNpbmNs dWRlICJyYXdkZWMuaCIKLSNpbmNsdWRlICJvZ2dkZWMuaCIKKyNpbmNsdWRlICJvZ2cvZGVjb2Rl ci5oIgogI2luY2x1ZGUgInJlcGxheWdhaW4uaCIKIAogI2RlZmluZSBTRUVLUE9JTlRfU0laRSAx OApkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvbWF0cm9za2FkZWMuYyBiL2xpYmF2Zm9ybWF0L21h dHJvc2thZGVjLmMKaW5kZXggOGUyNDQzM2NmOC4uNTc2MTlhODU5OSAxMDA2NDQKLS0tIGEvbGli YXZmb3JtYXQvbWF0cm9za2FkZWMuYworKysgYi9saWJhdmZvcm1hdC9tYXRyb3NrYWRlYy5jCkBA IC02Niw3ICs2Niw3IEBACiAjaW5jbHVkZSAiaW50ZXJuYWwuaCIKICNpbmNsdWRlICJpc29tLmgi CiAjaW5jbHVkZSAibWF0cm9za2EuaCIKLSNpbmNsdWRlICJvZ2dkZWMuaCIKKyNpbmNsdWRlICJv Z2cvZGVjb2Rlci5oIgogLyogRm9yIGZmX2NvZGVjX2dldF9pZCgpLiAqLwogI2luY2x1ZGUgInJp ZmYuaCIKICNpbmNsdWRlICJybXNpcHIuaCIKZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L29nZ2Rl Yy5jIGIvbGliYXZmb3JtYXQvb2dnL2RlY29kZXIuYwpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5h bWUgZnJvbSBsaWJhdmZvcm1hdC9vZ2dkZWMuYwpyZW5hbWUgdG8gbGliYXZmb3JtYXQvb2dnL2Rl Y29kZXIuYwppbmRleCAxZjhmNzhlMzY5Li5lYTRlMWQ5MWY1IDEwMDY0NAotLS0gYS9saWJhdmZv cm1hdC9vZ2dkZWMuYworKysgYi9saWJhdmZvcm1hdC9vZ2cvZGVjb2Rlci5jCkBAIC0zMiwxMSAr MzIsMTEgQEAKICNpbmNsdWRlICJsaWJhdnV0aWwvYXZhc3NlcnQuaCIKICNpbmNsdWRlICJsaWJh dnV0aWwvaW50cmVhZHdyaXRlLmgiCiAjaW5jbHVkZSAibGliYXZ1dGlsL21lbS5oIgotI2luY2x1 ZGUgImF2aW9faW50ZXJuYWwuaCIKLSNpbmNsdWRlICJkZW11eC5oIgotI2luY2x1ZGUgIm9nZ2Rl Yy5oIgotI2luY2x1ZGUgImF2Zm9ybWF0LmgiCi0jaW5jbHVkZSAiaW50ZXJuYWwuaCIKKyNpbmNs dWRlICJsaWJhdmZvcm1hdC9hdmlvX2ludGVybmFsLmgiCisjaW5jbHVkZSAibGliYXZmb3JtYXQv ZGVtdXguaCIKKyNpbmNsdWRlICJsaWJhdmZvcm1hdC9vZ2cvZGVjb2Rlci5oIgorI2luY2x1ZGUg ImxpYmF2Zm9ybWF0L2F2Zm9ybWF0LmgiCisjaW5jbHVkZSAibGliYXZmb3JtYXQvaW50ZXJuYWwu aCIKIAogI2RlZmluZSBNQVhfUEFHRV9TSVpFIDY1MzA3CiAjZGVmaW5lIERFQ09ERVJfQlVGRkVS X1NJWkUgTUFYX1BBR0VfU0laRQpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvb2dnZGVjLmggYi9s aWJhdmZvcm1hdC9vZ2cvZGVjb2Rlci5oCnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9t IGxpYmF2Zm9ybWF0L29nZ2RlYy5oCnJlbmFtZSB0byBsaWJhdmZvcm1hdC9vZ2cvZGVjb2Rlci5o CmluZGV4IGI3YjAwOGNjMWYuLjhlNDc1YjNkMjYgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L29n Z2RlYy5oCisrKyBiL2xpYmF2Zm9ybWF0L29nZy9kZWNvZGVyLmgKQEAgLTIyLDEwICsyMiwxMCBA QAogICAgIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KICoqLwogCi0jaWZuZGVmIEFWRk9STUFU X09HR0RFQ19ICi0jZGVmaW5lIEFWRk9STUFUX09HR0RFQ19ICisjaWZuZGVmIEFWRk9STUFUX09H R19ERUNPREVSX0gKKyNkZWZpbmUgQVZGT1JNQVRfT0dHX0RFQ09ERVJfSAogCi0jaW5jbHVkZSAi YXZmb3JtYXQuaCIKKyNpbmNsdWRlICJsaWJhdmZvcm1hdC9hdmZvcm1hdC5oIgogCiBzdHJ1Y3Qg b2dnX2NvZGVjIHsKICAgICBjb25zdCBpbnQ4X3QgKm1hZ2ljOwpAQCAtMjEwLDQgKzIxMCw0IEBA IG9nZ19ncHRvcHRzIChBVkZvcm1hdENvbnRleHQgKiBzLCBpbnQgaSwgdWludDY0X3QgZ3AsIGlu dDY0X3QgKmR0cykKICAgICByZXR1cm4gcHRzOwogfQogCi0jZW5kaWYgLyogQVZGT1JNQVRfT0dH REVDX0ggKi8KKyNlbmRpZiAvKiBBVkZPUk1BVF9PR0dfREVDT0RFUl9IICovCmRpZmYgLS1naXQg YS9saWJhdmZvcm1hdC9vZ2dlbmMuYyBiL2xpYmF2Zm9ybWF0L29nZy9lbmNvZGVyLmMKc2ltaWxh cml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gbGliYXZmb3JtYXQvb2dnZW5jLmMKcmVuYW1lIHRv IGxpYmF2Zm9ybWF0L29nZy9lbmNvZGVyLmMKaW5kZXggNWM3ZTNkYTBiYy4uMGM3NzgyODBkZSAx MDA2NDQKLS0tIGEvbGliYXZmb3JtYXQvb2dnZW5jLmMKKysrIGIvbGliYXZmb3JtYXQvb2dnL2Vu Y29kZXIuYwpAQCAtMzEsMTIgKzMxLDEyIEBACiAjaW5jbHVkZSAibGliYXZjb2RlYy94aXBoLmgi CiAjaW5jbHVkZSAibGliYXZjb2RlYy9ieXRlc3RyZWFtLmgiCiAjaW5jbHVkZSAibGliYXZjb2Rl Yy9mbGFjLmgiCi0jaW5jbHVkZSAiYXZmb3JtYXQuaCIKLSNpbmNsdWRlICJhdmlvX2ludGVybmFs LmgiCi0jaW5jbHVkZSAiaW50ZXJuYWwuaCIKLSNpbmNsdWRlICJtdXguaCIKLSNpbmNsdWRlICJ2 ZXJzaW9uLmgiCi0jaW5jbHVkZSAidm9yYmlzY29tbWVudC5oIgorI2luY2x1ZGUgImxpYmF2Zm9y bWF0L2F2Zm9ybWF0LmgiCisjaW5jbHVkZSAibGliYXZmb3JtYXQvYXZpb19pbnRlcm5hbC5oIgor I2luY2x1ZGUgImxpYmF2Zm9ybWF0L2ludGVybmFsLmgiCisjaW5jbHVkZSAibGliYXZmb3JtYXQv bXV4LmgiCisjaW5jbHVkZSAibGliYXZmb3JtYXQvdmVyc2lvbi5oIgorI2luY2x1ZGUgImxpYmF2 Zm9ybWF0L3ZvcmJpc2NvbW1lbnQuaCIKIAogI2RlZmluZSBNQVhfUEFHRV9TSVpFIDY1MDI1CiAK ZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L29nZ3BhcnNlZGlyYWMuYyBiL2xpYmF2Zm9ybWF0L29n Zy9wYXJzZWRpcmFjLmMKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gbGliYXZmb3Jt YXQvb2dncGFyc2VkaXJhYy5jCnJlbmFtZSB0byBsaWJhdmZvcm1hdC9vZ2cvcGFyc2VkaXJhYy5j CmluZGV4IGM1YmQ0M2E3NTcuLjNkYzg1OThkNjMgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L29n Z3BhcnNlZGlyYWMuYworKysgYi9saWJhdmZvcm1hdC9vZ2cvcGFyc2VkaXJhYy5jCkBAIC0yMiw5 ICsyMiw5IEBACiAjaW5jbHVkZSAibGliYXZ1dGlsL2ludHJlYWR3cml0ZS5oIgogI2luY2x1ZGUg ImxpYmF2dXRpbC9tZW0uaCIKICNpbmNsdWRlICJsaWJhdmNvZGVjL2RpcmFjLmgiCi0jaW5jbHVk ZSAiYXZmb3JtYXQuaCIKLSNpbmNsdWRlICJpbnRlcm5hbC5oIgotI2luY2x1ZGUgIm9nZ2RlYy5o IgorI2luY2x1ZGUgImxpYmF2Zm9ybWF0L2F2Zm9ybWF0LmgiCisjaW5jbHVkZSAibGliYXZmb3Jt YXQvaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJsaWJhdmZvcm1hdC9vZ2cvZGVjb2Rlci5oIgogCiBz dGF0aWMgaW50IGRpcmFjX2hlYWRlcihBVkZvcm1hdENvbnRleHQgKnMsIGludCBpZHgpCiB7CmRp ZmYgLS1naXQgYS9saWJhdmZvcm1hdC9vZ2dwYXJzZWZsYWMuYyBiL2xpYmF2Zm9ybWF0L29nZy9w YXJzZWZsYWMuYwpzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBsaWJhdmZvcm1hdC9v Z2dwYXJzZWZsYWMuYwpyZW5hbWUgdG8gbGliYXZmb3JtYXQvb2dnL3BhcnNlZmxhYy5jCmluZGV4 IGU4MWU0MDIxYTEuLjZhNDhiMjE1OWQgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L29nZ3BhcnNl ZmxhYy5jCisrKyBiL2xpYmF2Zm9ybWF0L29nZy9wYXJzZWZsYWMuYwpAQCAtMjIsOSArMjIsOSBA QAogI2luY2x1ZGUgImxpYmF2Y29kZWMvYXZjb2RlYy5oIgogI2luY2x1ZGUgImxpYmF2Y29kZWMv Ynl0ZXN0cmVhbS5oIgogI2luY2x1ZGUgImxpYmF2Y29kZWMvZmxhYy5oIgotI2luY2x1ZGUgImF2 Zm9ybWF0LmgiCi0jaW5jbHVkZSAiaW50ZXJuYWwuaCIKLSNpbmNsdWRlICJvZ2dkZWMuaCIKKyNp bmNsdWRlICJsaWJhdmZvcm1hdC9hdmZvcm1hdC5oIgorI2luY2x1ZGUgImxpYmF2Zm9ybWF0L2lu dGVybmFsLmgiCisjaW5jbHVkZSAibGliYXZmb3JtYXQvb2dnL2RlY29kZXIuaCIKIAogI2RlZmlu ZSBPR0dfRkxBQ19NRVRBREFUQV9UWVBFX1NUUkVBTUlORk8gMHg3RgogI2RlZmluZSBPR0dfRkxB Q19NQUdJQyAiXDE3N0ZMQUMiCmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9vZ2dwYXJzZW9nbS5j IGIvbGliYXZmb3JtYXQvb2dnL3BhcnNlb2dtLmMKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1l IGZyb20gbGliYXZmb3JtYXQvb2dncGFyc2VvZ20uYwpyZW5hbWUgdG8gbGliYXZmb3JtYXQvb2dn L3BhcnNlb2dtLmMKaW5kZXggMWU3OTQ3NDVhYi4uZmI0ODZiYjVmNSAxMDA2NDQKLS0tIGEvbGli YXZmb3JtYXQvb2dncGFyc2VvZ20uYworKysgYi9saWJhdmZvcm1hdC9vZ2cvcGFyc2VvZ20uYwpA QCAtMjgsMTAgKzI4LDEwIEBACiAKICNpbmNsdWRlICJsaWJhdmNvZGVjL2J5dGVzdHJlYW0uaCIK IAotI2luY2x1ZGUgImF2Zm9ybWF0LmgiCi0jaW5jbHVkZSAiaW50ZXJuYWwuaCIKLSNpbmNsdWRl ICJvZ2dkZWMuaCIKLSNpbmNsdWRlICJyaWZmLmgiCisjaW5jbHVkZSAibGliYXZmb3JtYXQvYXZm b3JtYXQuaCIKKyNpbmNsdWRlICJsaWJhdmZvcm1hdC9pbnRlcm5hbC5oIgorI2luY2x1ZGUgImxp YmF2Zm9ybWF0L29nZy9kZWNvZGVyLmgiCisjaW5jbHVkZSAibGliYXZmb3JtYXQvcmlmZi5oIgog CiBzdGF0aWMgaW50CiBvZ21faGVhZGVyKEFWRm9ybWF0Q29udGV4dCAqcywgaW50IGlkeCkKZGlm ZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L29nZ3BhcnNlb3B1cy5jIGIvbGliYXZmb3JtYXQvb2dnL3Bh cnNlb3B1cy5jCnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIGxpYmF2Zm9ybWF0L29n Z3BhcnNlb3B1cy5jCnJlbmFtZSB0byBsaWJhdmZvcm1hdC9vZ2cvcGFyc2VvcHVzLmMKaW5kZXgg NDM4NDBjMDAzZS4uM2M1MTU5NWIyNSAxMDA2NDQKLS0tIGEvbGliYXZmb3JtYXQvb2dncGFyc2Vv cHVzLmMKKysrIGIvbGliYXZmb3JtYXQvb2dnL3BhcnNlb3B1cy5jCkBAIC0yMyw5ICsyMyw5IEBA CiAKICNpbmNsdWRlICJsaWJhdnV0aWwvaW50cmVhZHdyaXRlLmgiCiAjaW5jbHVkZSAibGliYXZ1 dGlsL21lbS5oIgotI2luY2x1ZGUgImF2Zm9ybWF0LmgiCi0jaW5jbHVkZSAiaW50ZXJuYWwuaCIK LSNpbmNsdWRlICJvZ2dkZWMuaCIKKyNpbmNsdWRlICJsaWJhdmZvcm1hdC9hdmZvcm1hdC5oIgor I2luY2x1ZGUgImxpYmF2Zm9ybWF0L2ludGVybmFsLmgiCisjaW5jbHVkZSAibGliYXZmb3JtYXQv b2dnL2RlY29kZXIuaCIKIAogc3RydWN0IG9nZ29wdXNfcHJpdmF0ZSB7CiAgICAgaW50IG5lZWRf Y29tbWVudHM7CmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9vZ2dwYXJzZXNrZWxldG9uLmMgYi9s aWJhdmZvcm1hdC9vZ2cvcGFyc2Vza2VsZXRvbi5jCnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFt ZSBmcm9tIGxpYmF2Zm9ybWF0L29nZ3BhcnNlc2tlbGV0b24uYwpyZW5hbWUgdG8gbGliYXZmb3Jt YXQvb2dnL3BhcnNlc2tlbGV0b24uYwppbmRleCAyMDE2YjE2Yzk1Li45Yzc0NzMwNjQyIDEwMDY0 NAotLS0gYS9saWJhdmZvcm1hdC9vZ2dwYXJzZXNrZWxldG9uLmMKKysrIGIvbGliYXZmb3JtYXQv b2dnL3BhcnNlc2tlbGV0b24uYwpAQCAtMTksOSArMTksOSBAQAogICovCiAKICNpbmNsdWRlICJs aWJhdnV0aWwvaW50cmVhZHdyaXRlLmgiCi0jaW5jbHVkZSAiYXZmb3JtYXQuaCIKLSNpbmNsdWRl ICJpbnRlcm5hbC5oIgotI2luY2x1ZGUgIm9nZ2RlYy5oIgorI2luY2x1ZGUgImxpYmF2Zm9ybWF0 L2F2Zm9ybWF0LmgiCisjaW5jbHVkZSAibGliYXZmb3JtYXQvaW50ZXJuYWwuaCIKKyNpbmNsdWRl ICJsaWJhdmZvcm1hdC9vZ2cvZGVjb2Rlci5oIgogCiBzdGF0aWMgaW50IHNrZWxldG9uX2hlYWRl cihBVkZvcm1hdENvbnRleHQgKnMsIGludCBpZHgpCiB7CmRpZmYgLS1naXQgYS9saWJhdmZvcm1h dC9vZ2dwYXJzZXNwZWV4LmMgYi9saWJhdmZvcm1hdC9vZ2cvcGFyc2VzcGVleC5jCnNpbWlsYXJp dHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIGxpYmF2Zm9ybWF0L29nZ3BhcnNlc3BlZXguYwpyZW5h bWUgdG8gbGliYXZmb3JtYXQvb2dnL3BhcnNlc3BlZXguYwppbmRleCAwYTRiMzJkZTE1Li4zZTVm OWI5ZjU1IDEwMDY0NAotLS0gYS9saWJhdmZvcm1hdC9vZ2dwYXJzZXNwZWV4LmMKKysrIGIvbGli YXZmb3JtYXQvb2dnL3BhcnNlc3BlZXguYwpAQCAtMjYsOSArMjYsOSBAQAogI2luY2x1ZGUgImxp YmF2dXRpbC9pbnRyZWFkd3JpdGUuaCIKICNpbmNsdWRlICJsaWJhdnV0aWwvbWVtLmgiCiAKLSNp bmNsdWRlICJhdmZvcm1hdC5oIgotI2luY2x1ZGUgImludGVybmFsLmgiCi0jaW5jbHVkZSAib2dn ZGVjLmgiCisjaW5jbHVkZSAibGliYXZmb3JtYXQvYXZmb3JtYXQuaCIKKyNpbmNsdWRlICJsaWJh dmZvcm1hdC9pbnRlcm5hbC5oIgorI2luY2x1ZGUgImxpYmF2Zm9ybWF0L29nZy9kZWNvZGVyLmgi CiAKIHN0cnVjdCBzcGVleF9wYXJhbXMgewogICAgIGludCBwYWNrZXRfc2l6ZTsKZGlmZiAtLWdp dCBhL2xpYmF2Zm9ybWF0L29nZ3BhcnNldGhlb3JhLmMgYi9saWJhdmZvcm1hdC9vZ2cvcGFyc2V0 aGVvcmEuYwpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBsaWJhdmZvcm1hdC9vZ2dw YXJzZXRoZW9yYS5jCnJlbmFtZSB0byBsaWJhdmZvcm1hdC9vZ2cvcGFyc2V0aGVvcmEuYwppbmRl eCBlMTA0ZDYzMjI5Li4xNzg4MzBhM2NhIDEwMDY0NAotLS0gYS9saWJhdmZvcm1hdC9vZ2dwYXJz ZXRoZW9yYS5jCisrKyBiL2xpYmF2Zm9ybWF0L29nZy9wYXJzZXRoZW9yYS5jCkBAIC0yNiw5ICsy Niw5IEBACiAjaW5jbHVkZSAibGliYXZ1dGlsL2F0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJsaWJh dnV0aWwvbWVtLmgiCiAjaW5jbHVkZSAibGliYXZjb2RlYy9nZXRfYml0cy5oIgotI2luY2x1ZGUg ImF2Zm9ybWF0LmgiCi0jaW5jbHVkZSAiaW50ZXJuYWwuaCIKLSNpbmNsdWRlICJvZ2dkZWMuaCIK KyNpbmNsdWRlICJsaWJhdmZvcm1hdC9hdmZvcm1hdC5oIgorI2luY2x1ZGUgImxpYmF2Zm9ybWF0 L2ludGVybmFsLmgiCisjaW5jbHVkZSAibGliYXZmb3JtYXQvb2dnL2RlY29kZXIuaCIKIAogdHlw ZWRlZiBzdHJ1Y3QgVGhlb3JhUGFyYW1zIHsKICAgICBpbnQgZ3BzaGlmdDsKZGlmZiAtLWdpdCBh L2xpYmF2Zm9ybWF0L29nZ3BhcnNldm9yYmlzLmMgYi9saWJhdmZvcm1hdC9vZ2cvcGFyc2V2b3Ji aXMuYwpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBsaWJhdmZvcm1hdC9vZ2dwYXJz ZXZvcmJpcy5jCnJlbmFtZSB0byBsaWJhdmZvcm1hdC9vZ2cvcGFyc2V2b3JiaXMuYwppbmRleCBh MzQ0MDgxNTI3Li45MmI0ZGE3YzM1IDEwMDY0NAotLS0gYS9saWJhdmZvcm1hdC9vZ2dwYXJzZXZv cmJpcy5jCisrKyBiL2xpYmF2Zm9ybWF0L29nZy9wYXJzZXZvcmJpcy5jCkBAIC0zMiwxMyArMzIs MTMgQEAKICNpbmNsdWRlICJsaWJhdmNvZGVjL2J5dGVzdHJlYW0uaCIKICNpbmNsdWRlICJsaWJh dmNvZGVjL3ZvcmJpc19wYXJzZXIuaCIKIAotI2luY2x1ZGUgImF2Zm9ybWF0LmgiCi0jaW5jbHVk ZSAiZGVtdXguaCIKLSNpbmNsdWRlICJmbGFjX3BpY3R1cmUuaCIKLSNpbmNsdWRlICJpbnRlcm5h bC5oIgotI2luY2x1ZGUgIm9nZ2RlYy5oIgotI2luY2x1ZGUgInZvcmJpc2NvbW1lbnQuaCIKLSNp bmNsdWRlICJyZXBsYXlnYWluLmgiCisjaW5jbHVkZSAibGliYXZmb3JtYXQvYXZmb3JtYXQuaCIK KyNpbmNsdWRlICJsaWJhdmZvcm1hdC9kZW11eC5oIgorI2luY2x1ZGUgImxpYmF2Zm9ybWF0L2Zs YWNfcGljdHVyZS5oIgorI2luY2x1ZGUgImxpYmF2Zm9ybWF0L2ludGVybmFsLmgiCisjaW5jbHVk ZSAibGliYXZmb3JtYXQvb2dnL2RlY29kZXIuaCIKKyNpbmNsdWRlICJsaWJhdmZvcm1hdC92b3Ji aXNjb21tZW50LmgiCisjaW5jbHVkZSAibGliYXZmb3JtYXQvcmVwbGF5Z2Fpbi5oIgogCiBzdGF0 aWMgaW50IG9nbV9jaGFwdGVyKEFWRm9ybWF0Q29udGV4dCAqYXMsIGNvbnN0IHVpbnQ4X3QgKmtl eSwgY29uc3QgdWludDhfdCAqdmFsKQogewpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvb2dncGFy c2V2cDguYyBiL2xpYmF2Zm9ybWF0L29nZy9wYXJzZXZwOC5jCnNpbWlsYXJpdHkgaW5kZXggOTcl CnJlbmFtZSBmcm9tIGxpYmF2Zm9ybWF0L29nZ3BhcnNldnA4LmMKcmVuYW1lIHRvIGxpYmF2Zm9y bWF0L29nZy9wYXJzZXZwOC5jCmluZGV4IDY3NmIzYTBmOGUuLjYyOTA0YTUyMzMgMTAwNjQ0Ci0t LSBhL2xpYmF2Zm9ybWF0L29nZ3BhcnNldnA4LmMKKysrIGIvbGliYXZmb3JtYXQvb2dnL3BhcnNl dnA4LmMKQEAgLTIxLDkgKzIxLDkgQEAKIAogI2luY2x1ZGUgImxpYmF2dXRpbC9pbnRyZWFkd3Jp dGUuaCIKIAotI2luY2x1ZGUgImF2Zm9ybWF0LmgiCi0jaW5jbHVkZSAiaW50ZXJuYWwuaCIKLSNp bmNsdWRlICJvZ2dkZWMuaCIKKyNpbmNsdWRlICJsaWJhdmZvcm1hdC9hdmZvcm1hdC5oIgorI2lu Y2x1ZGUgImxpYmF2Zm9ybWF0L2ludGVybmFsLmgiCisjaW5jbHVkZSAibGliYXZmb3JtYXQvb2dn L2RlY29kZXIuaCIKIAogI2RlZmluZSBWUDhfSEVBREVSX1NJWkUgMjYKIAotLSAKMi41Mi4wCgoK RnJvbSBmYjI4NGU5NDJjMWNjNGQ0YjMzYTM4MmE1OWZhMDM3MmYwNWIzY2FkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSb21haW4gQmVhdXhpcyA8cm9tYWluLmJlYXV4aXNAZ21haWwu Y29tPgpEYXRlOiBUdWUsIDI4IEp1bCAyMDI2IDE2OjQwOjM3IC0wNTAwClN1YmplY3Q6IFtQQVRD SCAwMy8xMF0gYXZmb3JtYXQvb2dnOiBzZXBhcmF0ZSB3aGF0IGEgc3RyZWFtIGlzIGZyb20gd2hl cmUgaXQKIGlzCgpvZ2dfcmVzZXQoKSBtZWFucyB0aGUgZmlsZSBoYXMgYmVlbiByZXBvc2l0aW9u ZWQsIHNvIGdyb3VwIHRoZSBmaWVsZHMgYnkKd2hldGhlciB0aGV5IGRlc2NyaWJlIGEgcG9zaXRp b24gb3IgdGhlIHN0cmVhbSBpdHNlbGYgYW5kIGNsZWFyIGV4YWN0bHkKdGhlIGZpcnN0IGdyb3Vw LCB3aGljaCB0aGUgb2xkIHJlc2V0IGNvdmVyZWQgb25seSBpbiBwYXJ0LgoKTm8gZnVuY3Rpb25h bCBjaGFuZ2U7IHRoZSBvZ2cgdGVzdHMgZG8gbm90IG1vdmUuCi0tLQogbGliYXZmb3JtYXQvb2dn L2RlY29kZXIuYyB8IDcxICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQog bGliYXZmb3JtYXQvb2dnL2RlY29kZXIuaCB8IDU2ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA4MSBpbnNlcnRpb25zKCspLCA0NiBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9vZ2cvZGVjb2Rlci5jIGIvbGliYXZmb3JtYXQvb2dn L2RlY29kZXIuYwppbmRleCBlYTRlMWQ5MWY1Li4wNDcxNzQ2ZGFiIDEwMDY0NAotLS0gYS9saWJh dmZvcm1hdC9vZ2cvZGVjb2Rlci5jCisrKyBiL2xpYmF2Zm9ybWF0L29nZy9kZWNvZGVyLmMKQEAg LTE1OCwzNiArMTU4LDU3IEBAIHN0YXRpYyBpbnQgb2dnX3Jlc3RvcmUoQVZGb3JtYXRDb250ZXh0 ICpzKQogICAgIHJldHVybiAwOwogfQogCisvKioKKyAqIERyb3AgZXZlcnl0aGluZyB0aGF0IGRl c2NyaWJlZCB3aGVyZSBpbiB0aGUgZmlsZSB0aGUgc3RyZWFtIHdhczogdGhlIHBhZ2UKKyAqIGJl aW5nIHJlYWQsIHRoZSBwYWNrZXQgYmVpbmcgYXNzZW1ibGVkIG91dCBvZiBpdCwgdGhlIHRpbWVz dGFtcHMgY2FycmllZAorICogb3ZlciBmcm9tIHRoZSBwYWdlIGJlZm9yZSwgYW5kIHdoYXRldmVy IHdhcyB3YWl0aW5nIHRvIGJlIGF0dGFjaGVkIHRvIHRoZQorICogbmV4dCBwYWNrZXQuIFdoYXQg dGhlIHN0cmVhbSAqaXMqIC0gaXRzIHNlcmlhbCBudW1iZXIsIGl0cyBjb2RlYyBhbmQgdGhlCisg KiBzdGF0ZSB0aGF0IGNvZGVjIGtlZXBzIC0gaXMgbGVmdCBhbG9uZS4KKyAqCisgKiBAcGFyYW0g YXRfZGF0YV9zdGFydCB0aGUgbmV3IHBvc2l0aW9uIGlzIGF0IG9yIGJlZm9yZSB0aGUgZmlyc3Qg ZGF0YSBwYWdlLAorICogICAgICAgICAgICAgICAgICAgICAgc28gdGhlIG5leHQgcGFja2V0IHN0 YXJ0cyB0aGUgc3RyZWFtIHJhdGhlciB0aGFuCisgKiAgICAgICAgICAgICAgICAgICAgICBjb250 aW51aW5nIGl0IGZyb20gYW4gdW5rbm93biB0aW1lc3RhbXAKKyAqLworc3RhdGljIHZvaWQgb2dn X3N0cmVhbV9yZXNldChzdHJ1Y3Qgb2dnX3N0cmVhbSAqb3MsIGludCBhdF9kYXRhX3N0YXJ0KQor eworICAgIG9zLT5wYWdlX3BvcyAgID0gMDsKKyAgICBvcy0+c3luY19wb3MgICA9IC0xOworICAg IG9zLT5mbGFncyAgICAgID0gMDsKKyAgICBvcy0+Z3JhbnVsZSAgICA9IC0xOworICAgIG9zLT5u c2VncyAgICAgID0gMDsKKyAgICBvcy0+c2VncCAgICAgICA9IDA7CisgICAgb3MtPmJ1ZnBvcyAg ICAgPSAwOworICAgIG9zLT5wc3RhcnQgICAgID0gMDsKKyAgICBvcy0+cHNpemUgICAgICA9IDA7 CisgICAgb3MtPnBmbGFncyAgICAgPSAwOworICAgIG9zLT5wZHVyYXRpb24gID0gMDsKKyAgICBv cy0+aW5jb21wbGV0ZSA9IDA7CisgICAgb3MtPnBhZ2Vfc3RhcnQgPSAwOworICAgIG9zLT5wYWdl X2VuZCAgID0gMDsKKyAgICBvcy0+Z290X2RhdGEgICA9IDA7CisgICAgb3MtPmxhc3RwdHMgICAg PSBhdF9kYXRhX3N0YXJ0ID8gMCA6IEFWX05PUFRTX1ZBTFVFOworICAgIG9zLT5sYXN0ZHRzICAg ID0gQVZfTk9QVFNfVkFMVUU7CisgICAgb3MtPnN0YXJ0X3RyaW1taW5nID0gMDsKKyAgICBvcy0+ ZW5kX3RyaW1taW5nICAgPSAwOworICAgIG9zLT5yZXBsYWNlICAgID0gMDsKKworICAgIGF2X2Zy ZWVwKCZvcy0+bmV3X21ldGFkYXRhKTsKKyAgICBvcy0+bmV3X21ldGFkYXRhX3NpemUgPSAwOwor ICAgIGF2X2ZyZWVwKCZvcy0+bmV3X2V4dHJhZGF0YSk7CisgICAgb3MtPm5ld19leHRyYWRhdGFf c2l6ZSA9IDA7Cit9CisKKy8qKgorICogQ2FsbGVkIHdoZW5ldmVyIHRoZSBmaWxlIGhhcyBiZWVu IHJlcG9zaXRpb25lZCwgYW5kIG9ubHkgdGhlbi4KKyAqLwogc3RhdGljIGludCBvZ2dfcmVzZXQo QVZGb3JtYXRDb250ZXh0ICpzKQogewogICAgIHN0cnVjdCBvZ2cgKm9nZyA9IHMtPnByaXZfZGF0 YTsKKyAgICBpbnQgYXRfZGF0YV9zdGFydCA9IGF2aW9fdGVsbChzLT5wYikgPD0gZmZmb3JtYXRj b250ZXh0KHMpLT5kYXRhX29mZnNldDsKICAgICBpbnQgaTsKLSAgICBpbnQ2NF90IHN0YXJ0X3Bv cyA9IGF2aW9fdGVsbChzLT5wYik7CiAKLSAgICBmb3IgKGkgPSAwOyBpIDwgb2dnLT5uc3RyZWFt czsgaSsrKSB7Ci0gICAgICAgIHN0cnVjdCBvZ2dfc3RyZWFtICpvcyA9IG9nZy0+c3RyZWFtcyAr IGk7Ci0gICAgICAgIG9zLT5idWZwb3MgICAgID0gMDsKLSAgICAgICAgb3MtPnBzdGFydCAgICAg PSAwOwotICAgICAgICBvcy0+cHNpemUgICAgICA9IDA7Ci0gICAgICAgIG9zLT5ncmFudWxlICAg ID0gLTE7Ci0gICAgICAgIG9zLT5sYXN0cHRzICAgID0gQVZfTk9QVFNfVkFMVUU7Ci0gICAgICAg IG9zLT5sYXN0ZHRzICAgID0gQVZfTk9QVFNfVkFMVUU7Ci0gICAgICAgIG9zLT5zeW5jX3BvcyAg ID0gLTE7Ci0gICAgICAgIG9zLT5wYWdlX3BvcyAgID0gMDsKLSAgICAgICAgb3MtPm5zZWdzICAg ICAgPSAwOwotICAgICAgICBvcy0+c2VncCAgICAgICA9IDA7Ci0gICAgICAgIG9zLT5pbmNvbXBs ZXRlID0gMDsKLSAgICAgICAgb3MtPmdvdF9kYXRhID0gMDsKLSAgICAgICAgaWYgKHN0YXJ0X3Bv cyA8PSBmZmZvcm1hdGNvbnRleHQocyktPmRhdGFfb2Zmc2V0KSB7Ci0gICAgICAgICAgICBvcy0+ bGFzdHB0cyA9IDA7Ci0gICAgICAgIH0KLSAgICAgICAgb3MtPnN0YXJ0X3RyaW1taW5nID0gMDsK LSAgICAgICAgb3MtPmVuZF90cmltbWluZyA9IDA7Ci0gICAgICAgIGF2X2ZyZWVwKCZvcy0+bmV3 X21ldGFkYXRhKTsKLSAgICAgICAgb3MtPm5ld19tZXRhZGF0YV9zaXplID0gMDsKLSAgICAgICAg YXZfZnJlZXAoJm9zLT5uZXdfZXh0cmFkYXRhKTsKLSAgICAgICAgb3MtPm5ld19leHRyYWRhdGFf c2l6ZSA9IDA7Ci0gICAgfQorICAgIGZvciAoaSA9IDA7IGkgPCBvZ2ctPm5zdHJlYW1zOyBpKysp CisgICAgICAgIG9nZ19zdHJlYW1fcmVzZXQob2dnLT5zdHJlYW1zICsgaSwgYXRfZGF0YV9zdGFy dCk7CiAKICAgICBvZ2ctPnBhZ2VfcG9zID0gLTE7CiAgICAgb2dnLT5jdXJpZHggPSAtMTsKZGlm ZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L29nZy9kZWNvZGVyLmggYi9saWJhdmZvcm1hdC9vZ2cvZGVj b2Rlci5oCmluZGV4IDhlNDc1YjNkMjYuLjg0N2IwOGNjODYgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9y bWF0L29nZy9kZWNvZGVyLmgKKysrIGIvbGliYXZmb3JtYXQvb2dnL2RlY29kZXIuaApAQCAtNjQs NDEgKzY0LDU1IEBAIHN0cnVjdCBvZ2dfY29kZWMgewogICAgIHZvaWQgKCpjbGVhbnVwKShBVkZv cm1hdENvbnRleHQgKnMsIGludCBpZHgpOwogfTsKIAorLyoqCisgKiBBIGxvZ2ljYWwgYml0c3Ry ZWFtIGJlaW5nIHJlYWQuCisgKgorICogVGhlIGZpZWxkcyBmYWxsIGludG8gdHdvIGdyb3Vwcywg YW5kIHRoZSBzcGxpdCBtYXR0ZXJzOiBvZ2dfcmVzZXQoKSBkcm9wcworICogdGhlIGZpcnN0IG9u ZSBhbmQga2VlcHMgdGhlIHNlY29uZC4KKyAqLwogc3RydWN0IG9nZ19zdHJlYW0geworICAgIC8q IFdoYXQgdGhlIHN0cmVhbSBpcy4gSG9sZHMgd2hlcmV2ZXIgdGhlIGZpbGUgaXMgYmVpbmcgcmVh ZCBmcm9tLiAqLworICAgIHVpbnQzMl90IHNlcmlhbDsKKyAgICBjb25zdCBzdHJ1Y3Qgb2dnX2Nv ZGVjICpjb2RlYzsKKyAgICB2b2lkICpwcml2YXRlOyAgICAgICAgICAgICAgLy8vPCBjb2RlYyBz dGF0ZSwgb3duZWQgYnkgdGhlIGNvZGVjCisgICAgaW50IGhlYWRlcjsKKyAgICBpbnQgbmJfaGVh ZGVyOyAgICAgICAgICAgICAgLy8vPCBzZXQgdG8gdGhlIG51bWJlciBvZiBwYXJzZWQgaGVhZGVy cworICAgIHVpbnQ2NF90IHN0YXJ0X2dyYW51bGU7CisgICAgaW50IGdvdF9zdGFydDsKKyAgICBp bnQga2V5ZnJhbWVfc2VlazsgICAgICAgICAgLy8vPCBzZXQgYnkgYSBzZWVrLCBhbmQgb3V0bGl2 ZXMgdGhlIHNlZWsncyBvd24gcmVzZXRzCisKKyAgICAvKiBUaGUgYnVmZmVyIGl0c2VsZiwgYXMg b3Bwb3NlZCB0byB3aGF0IGlzIGN1cnJlbnRseSBpbiBpdC4gKi8KICAgICB1aW50OF90ICpidWY7 CiAgICAgdW5zaWduZWQgaW50IGJ1ZnNpemU7CisKKyAgICAvKiBXaGVyZSBpbiB0aGUgZmlsZSB0 aGUgc3RyZWFtIGlzOiB0aGUgcGFnZSBiZWluZyByZWFkLCB0aGUgcGFja2V0IGJlaW5nCisgICAg ICogYXNzZW1ibGVkIG91dCBvZiBpdCwgdGhlIHRpbWVzdGFtcHMgY2FycmllZCBvdmVyIGZyb20g dGhlIHBhZ2UgYmVmb3JlLAorICAgICAqIGFuZCB3aGF0IGlzIHdhaXRpbmcgdG8gYmUgYXR0YWNo ZWQgdG8gdGhlIG5leHQgcGFja2V0LiBOb25lIG9mIHRoaXMKKyAgICAgKiBzdXJ2aXZlcyBtb3Zp bmcgZWxzZXdoZXJlIGluIHRoZSBmaWxlLiAqLworICAgIGludDY0X3QgcGFnZV9wb3M7ICAgICAg ICAgICAvLy88IGZpbGUgb2Zmc2V0IG9mIHRoZSBjdXJyZW50IHBhZ2UKKyAgICBpbnQ2NF90IHN5 bmNfcG9zOyAgICAgICAgICAgLy8vPCBmaWxlIG9mZnNldCBvZiB0aGUgZmlyc3QgcGFnZSBuZWVk ZWQgdG8gcmVjb25zdHJ1Y3QgdGhlIGN1cnJlbnQgcGFja2V0CisgICAgaW50IGZsYWdzOyAgICAg ICAgICAgICAgICAgIC8vLzwgZmxhZ3Mgb2YgdGhlIGN1cnJlbnQgcGFnZQorICAgIHVpbnQ2NF90 IGdyYW51bGU7ICAgICAgICAgICAvLy88IGdyYW51bGUgcG9zaXRpb24gb2YgdGhlIGN1cnJlbnQg cGFnZQorICAgIGludCBuc2Vncywgc2VncDsKKyAgICB1aW50OF90IHNlZ21lbnRzWzI1NV07CiAg ICAgdW5zaWduZWQgaW50IGJ1ZnBvczsKICAgICB1bnNpZ25lZCBpbnQgcHN0YXJ0OwogICAgIHVu c2lnbmVkIGludCBwc2l6ZTsKICAgICB1bnNpZ25lZCBpbnQgcGZsYWdzOwogICAgIHVuc2lnbmVk IGludCBwZHVyYXRpb247Ci0gICAgdWludDMyX3Qgc2VyaWFsOwotICAgIHVpbnQ2NF90IGdyYW51 bGU7Ci0gICAgdWludDY0X3Qgc3RhcnRfZ3JhbnVsZTsKKyAgICBpbnQgaW5jb21wbGV0ZTsgICAg ICAgICAgICAgLy8vPCB3aGV0aGVyIHdlJ3JlIGV4cGVjdGluZyBhIGNvbnRpbnVhdGlvbiBpbiB0 aGUgbmV4dCBwYWdlCisgICAgaW50IHBhZ2Vfc3RhcnQ7ICAgICAgICAgICAgIC8vLzwgY3VycmVu dCBwYWNrZXQgaXMgdGhlIGZpcnN0IG9uZSBzdGFydGluZyBpbiB0aGUgcGFnZQorICAgIGludCBw YWdlX2VuZDsgICAgICAgICAgICAgICAvLy88IGN1cnJlbnQgcGFja2V0IGlzIHRoZSBsYXN0IG9u ZSBjb21wbGV0ZWQgaW4gdGhlIHBhZ2UKKyAgICBpbnQgZ290X2RhdGE7ICAgICAgICAgICAgICAg Ly8vPCAxIGlmIHRoZSBzdHJlYW0gZ290IHNvbWUgZGF0YSAobm9uLWluaXRpYWwgcGFja2V0cyks IDAgb3RoZXJ3aXNlCiAgICAgaW50NjRfdCBsYXN0cHRzOwogICAgIGludDY0X3QgbGFzdGR0czsK LSAgICBpbnQ2NF90IHN5bmNfcG9zOyAgIC8vLzwgZmlsZSBvZmZzZXQgb2YgdGhlIGZpcnN0IHBh Z2UgbmVlZGVkIHRvIHJlY29uc3RydWN0IHRoZSBjdXJyZW50IHBhY2tldAotICAgIGludDY0X3Qg cGFnZV9wb3M7ICAgLy8vPCBmaWxlIG9mZnNldCBvZiB0aGUgY3VycmVudCBwYWdlCi0gICAgaW50 IGZsYWdzOwotICAgIGNvbnN0IHN0cnVjdCBvZ2dfY29kZWMgKmNvZGVjOwotICAgIGludCBoZWFk ZXI7Ci0gICAgaW50IG5zZWdzLCBzZWdwOwotICAgIHVpbnQ4X3Qgc2VnbWVudHNbMjU1XTsKLSAg ICBpbnQgaW5jb21wbGV0ZTsgLy8vPCB3aGV0aGVyIHdlJ3JlIGV4cGVjdGluZyBhIGNvbnRpbnVh dGlvbiBpbiB0aGUgbmV4dCBwYWdlCi0gICAgaW50IHBhZ2Vfc3RhcnQ7IC8vLzwgY3VycmVudCBw YWNrZXQgaXMgdGhlIGZpcnN0IG9uZSBzdGFydGluZyBpbiB0aGUgcGFnZQotICAgIGludCBwYWdl X2VuZDsgICAvLy88IGN1cnJlbnQgcGFja2V0IGlzIHRoZSBsYXN0IG9uZSBjb21wbGV0ZWQgaW4g dGhlIHBhZ2UKLSAgICBpbnQga2V5ZnJhbWVfc2VlazsKLSAgICBpbnQgZ290X3N0YXJ0OwotICAg IGludCBnb3RfZGF0YTsgICAvLy88IDEgaWYgdGhlIHN0cmVhbSBnb3Qgc29tZSBkYXRhIChub24t aW5pdGlhbCBwYWNrZXRzKSwgMCBvdGhlcndpc2UKLSAgICBpbnQgbmJfaGVhZGVyOyAvLy88IHNl dCB0byB0aGUgbnVtYmVyIG9mIHBhcnNlZCBoZWFkZXJzCi0gICAgaW50IHN0YXJ0X3RyaW1taW5n OyAvLy88IHNldCB0aGUgbnVtYmVyIG9mIHBhY2tldHMgdG8gZHJvcCBmcm9tIHRoZSBzdGFydAot ICAgIGludCBlbmRfdHJpbW1pbmc7IC8vLzwgc2V0IHRoZSBudW1iZXIgb2YgcGFja2V0cyB0byBk cm9wIGZyb20gdGhlIGVuZAotICAgIGludCByZXBsYWNlOyAvLyA8IHNldCB0byAxIGFmdGVyIGlu aXRpYWxpemluZyBhIG5ldyBjaGFpbmVkIHN0cmVhbQorICAgIGludCBzdGFydF90cmltbWluZzsg ICAgICAgICAvLy88IHNldCB0aGUgbnVtYmVyIG9mIHBhY2tldHMgdG8gZHJvcCBmcm9tIHRoZSBz dGFydAorICAgIGludCBlbmRfdHJpbW1pbmc7ICAgICAgICAgICAvLy88IHNldCB0aGUgbnVtYmVy IG9mIHBhY2tldHMgdG8gZHJvcCBmcm9tIHRoZSBlbmQKKyAgICBpbnQgcmVwbGFjZTsgICAgICAg ICAgICAgICAgLy8vPCBzZXQgdG8gMSBhZnRlciBpbml0aWFsaXppbmcgYSBuZXcgY2hhaW5lZCBz dHJlYW0KICAgICB1aW50OF90ICpuZXdfbWV0YWRhdGE7CiAgICAgc2l6ZV90IG5ld19tZXRhZGF0 YV9zaXplOwogICAgIHVpbnQ4X3QgKm5ld19leHRyYWRhdGE7CiAgICAgc2l6ZV90IG5ld19leHRy YWRhdGFfc2l6ZTsKLSAgICB2b2lkICpwcml2YXRlOwogfTsKIAogc3RydWN0IG9nZ19zdGF0ZSB7 Ci0tIAoyLjUyLjAKCgpGcm9tIDI0ODY0MGMzMGYwODQ3NDc3NzYxYjgzZDBhNGFmYmVkYTA3ZjU3 YjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IFJvbWFpbiBCZWF1eGlzIDxyb21haW4u YmVhdXhpc0BnbWFpbC5jb20+CkRhdGU6IFR1ZSwgMjggSnVsIDIwMjYgMTY6NDA6MzcgLTA1MDAK U3ViamVjdDogW1BBVENIIDA0LzEwXSBhdmZvcm1hdC9vZ2c6IGV4dHJhY3QgcGFnZSBzeW5jIGZy b20gdGhlIGRlbXV4ZXIKClNwbGl0IHRoZSBwYWdlIGhlYWRlciBwYXJzaW5nIG91dCBvZiBvZ2df cmVhZF9wYWdlKCkgaW50bwpmZl9vZ2dfc3luY19wYWdlKCksIHRha2luZyB0aGUgb2Zmc2V0IHVz ZWQgdG8gcmVzdGFydCBwYXN0IGEgYmFkIHBhZ2UgYXMKYW4gYXJndW1lbnQgcmF0aGVyIHRoYW4g ZnJvbSB0aGUgZGVtdXhlcidzIHByaXZhdGUgY29udGV4dCwgYW5kIGFkZApmZl9vZ2dfdmVyaWZ5 X3BhZ2UoKSBmb3IgY2FsbGVycyB0aGF0IGRvIG5vdCB3YW50IHRoZSBwYXlsb2FkLgoKTm8gZnVu Y3Rpb25hbCBjaGFuZ2U7IHRoZSBvZ2cgdGVzdHMgZG8gbm90IG1vdmUuCi0tLQogbGliYXZmb3Jt YXQvTWFrZWZpbGUgICAgICB8ICAgMyArLQogbGliYXZmb3JtYXQvb2dnL2RlY29kZXIuYyB8IDEx MCArKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGxpYmF2Zm9ybWF0L29nZy9kZWNvZGVy LmggfCAgIDQgKy0KIGxpYmF2Zm9ybWF0L29nZy9wYXJzZXIuYyAgfCAxMzcgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKIGxpYmF2Zm9ybWF0L29nZy9wYXJzZXIuaCAgfCAg ODEgKysrKysrKysrKysrKysrKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCAyNDUgaW5zZXJ0aW9u cygrKSwgOTAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZmb3JtYXQvb2dn L3BhcnNlci5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZmb3JtYXQvb2dnL3BhcnNlci5oCgpk aWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvTWFrZWZpbGUgYi9saWJhdmZvcm1hdC9NYWtlZmlsZQpp bmRleCBmMmYxMDg3NmY3Li5lNTE2ZDE0MWRhIDEwMDY0NAotLS0gYS9saWJhdmZvcm1hdC9NYWtl ZmlsZQorKysgYi9saWJhdmZvcm1hdC9NYWtlZmlsZQpAQCAtNDM4LDcgKzQzOCw4IEBAIE9CSlMt JChDT05GSUdfTlVWX0RFTVVYRVIpICAgICAgICAgICAgICAgKz0gbnV2Lm8KIE9CSlMtJChDT05G SUdfQVYxX0RFTVVYRVIpICAgICAgICAgICAgICAgKz0gYXYxZGVjLm8KIE9CSlMtJChDT05GSUdf T0JVX0RFTVVYRVIpICAgICAgICAgICAgICAgKz0gYXYxZGVjLm8KIE9CSlMtJChDT05GSUdfT0JV X01VWEVSKSAgICAgICAgICAgICAgICAgKz0gcmF3ZW5jLm8KLU9CSlMtJChDT05GSUdfT0dHX0RF TVVYRVIpICAgICAgICAgICAgICAgKz0gb2dnL2RlY29kZXIubyAgICAgICBcCitPQkpTLSQoQ09O RklHX09HR19ERU1VWEVSKSAgICAgICAgICAgICAgICs9IG9nZy9wYXJzZXIubyAgICAgICAgXAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZ2cvZGVjb2Rlci5v ICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2dn L3BhcnNlZGlyYWMubyAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG9nZy9wYXJzZWZsYWMubyAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBvZ2cvcGFyc2VvZ20ubyAgICAgIFwKZGlmZiAtLWdpdCBhL2xpYmF2 Zm9ybWF0L29nZy9kZWNvZGVyLmMgYi9saWJhdmZvcm1hdC9vZ2cvZGVjb2Rlci5jCmluZGV4IDA0 NzE3NDZkYWIuLmM0NWY2NTJkNDMgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L29nZy9kZWNvZGVy LmMKKysrIGIvbGliYXZmb3JtYXQvb2dnL2RlY29kZXIuYwpAQCAtMzUsNiArMzUsNyBAQAogI2lu Y2x1ZGUgImxpYmF2Zm9ybWF0L2F2aW9faW50ZXJuYWwuaCIKICNpbmNsdWRlICJsaWJhdmZvcm1h dC9kZW11eC5oIgogI2luY2x1ZGUgImxpYmF2Zm9ybWF0L29nZy9kZWNvZGVyLmgiCisjaW5jbHVk ZSAibGliYXZmb3JtYXQvb2dnL3BhcnNlci5oIgogI2luY2x1ZGUgImxpYmF2Zm9ybWF0L2F2Zm9y bWF0LmgiCiAjaW5jbHVkZSAibGliYXZmb3JtYXQvaW50ZXJuYWwuaCIKIApAQCAtMzQwLDgxICsz NDEsMTYgQEAgc3RhdGljIGludCBvZ2dfcmVhZF9wYWdlKEFWRm9ybWF0Q29udGV4dCAqcywgaW50 ICpzaWQsIGludCBwcm9iaW5nKQogICAgIEFWSU9Db250ZXh0ICpiYyA9IHMtPnBiOwogICAgIHN0 cnVjdCBvZ2cgKm9nZyA9IHMtPnByaXZfZGF0YTsKICAgICBzdHJ1Y3Qgb2dnX3N0cmVhbSAqb3M7 Ci0gICAgaW50IHJldCwgaSA9IDA7Ci0gICAgaW50IGZsYWdzLCBuc2VnczsKLSAgICB1aW50NjRf dCBncDsKLSAgICB1aW50MzJfdCBzZXJpYWw7Ci0gICAgdWludDMyX3QgY3JjLCBjcmNfdG1wOwot ICAgIGludCBzaXplID0gMCwgaWR4OwotICAgIGludDY0X3QgdmVyc2lvbiwgcGFnZV9wb3M7Ci0g ICAgaW50NjRfdCBzdGFydF9wb3M7Ci0gICAgdWludDhfdCBzeW5jWzRdOwotICAgIHVpbnQ4X3Qg c2VnbWVudHNbMjU1XTsKKyAgICBpbnQgcmV0OworICAgIGludCBzaXplLCBpZHg7CiAgICAgdWlu dDhfdCAqcmVhZG91dF9idWY7Ci0gICAgaW50IHNwID0gMDsKKyAgICBPZ2dQYWdlIHBhZ2U7CiAK LSAgICByZXQgPSBhdmlvX3JlYWQoYmMsIHN5bmMsIDQpOwotICAgIGlmIChyZXQgPCA0KQotICAg ICAgICByZXR1cm4gcmV0IDwgMCA/IHJldCA6IEFWRVJST1JfRU9GOworICAgIHNpemUgPSBmZl9v Z2dfc3luY19wYWdlKHMsICZwYWdlLCAmb2dnLT5wYWdlX3Bvcyk7CisgICAgaWYgKHNpemUgPCAw KQorICAgICAgICByZXR1cm4gc2l6ZTsKIAotICAgIGRvIHsKLSAgICAgICAgaW50IGM7Ci0KLSAg ICAgICAgaWYgKHN5bmNbc3AgJiAzXSA9PSAnTycgJiYKLSAgICAgICAgICAgIHN5bmNbKHNwICsg MSkgJiAzXSA9PSAnZycgJiYKLSAgICAgICAgICAgIHN5bmNbKHNwICsgMikgJiAzXSA9PSAnZycg JiYgc3luY1soc3AgKyAzKSAmIDNdID09ICdTJykKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAg ICAgIGlmKCFpICYmIChiYy0+c2Vla2FibGUgJiBBVklPX1NFRUtBQkxFX05PUk1BTCkgJiYgb2dn LT5wYWdlX3BvcyA+IDApIHsKLSAgICAgICAgICAgIG1lbXNldChzeW5jLCAwLCA0KTsKLSAgICAg ICAgICAgIGF2aW9fc2VlayhiYywgb2dnLT5wYWdlX3Bvcys0LCBTRUVLX1NFVCk7Ci0gICAgICAg ICAgICBvZ2ctPnBhZ2VfcG9zID0gLTE7Ci0gICAgICAgIH0KLQotICAgICAgICBjID0gYXZpb19y OChiYyk7Ci0KLSAgICAgICAgaWYgKGF2aW9fZmVvZihiYykpCi0gICAgICAgICAgICByZXR1cm4g QVZFUlJPUl9FT0Y7Ci0KLSAgICAgICAgc3luY1tzcCsrICYgM10gPSBjOwotICAgIH0gd2hpbGUg KGkrKyA8IE1BWF9QQUdFX1NJWkUpOwotCi0gICAgaWYgKGkgPj0gTUFYX1BBR0VfU0laRSkgewot ICAgICAgICBhdl9sb2cocywgQVZfTE9HX0lORk8sICJjYW5ub3QgZmluZCBzeW5jIHdvcmRcbiIp OwotICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSAgICB9Ci0KLSAgICAvKiAw eDRmYTliMDVmID0gYXZfY3JjKEFWX0NSQ18zMl9JRUVFLCAweDAsICJPZ2dTIiwgNCkgKi8KLSAg ICBmZmlvX2luaXRfY2hlY2tzdW0oYmMsIGZmX2NyYzA0QzExREI3X3VwZGF0ZSwgMHg0ZmE5YjA1 Zik7Ci0KLSAgICAvKiBUbyByZXdpbmQgaWYgY2hlY2tzdW0gaXMgYmFkL2NoZWNrIG1hZ2ljIG9u IHN3aXRjaGVzIC0gdGhpcyBpcyB0aGUgbWF4IHBhY2tldCBzaXplICovCi0gICAgcmV0ID0gZmZp b19lbnN1cmVfc2Vla2JhY2soYmMsIE1BWF9QQUdFX1NJWkUpOwotICAgIGlmIChyZXQgPCAwKQot ICAgICAgICByZXR1cm4gcmV0OwotICAgIHN0YXJ0X3BvcyA9IGF2aW9fdGVsbChiYyk7Ci0KLSAg ICB2ZXJzaW9uID0gYXZpb19yOChiYyk7Ci0gICAgZmxhZ3MgICA9IGF2aW9fcjgoYmMpOwotICAg IGdwICAgICAgPSBhdmlvX3JsNjQoYmMpOwotICAgIHNlcmlhbCAgPSBhdmlvX3JsMzIoYmMpOwot ICAgIGF2aW9fcmwzMihiYyk7IC8qIHNlcSAqLwotCi0gICAgY3JjX3RtcCA9IGZmaW9fZ2V0X2No ZWNrc3VtKGJjKTsKLSAgICBjcmMgICAgID0gYXZpb19yYjMyKGJjKTsKLSAgICBjcmNfdG1wID0g ZmZfY3JjMDRDMTFEQjdfdXBkYXRlKGNyY190bXAsICh1aW50OF90WzRdKXswfSwgNCk7Ci0gICAg ZmZpb19pbml0X2NoZWNrc3VtKGJjLCBmZl9jcmMwNEMxMURCN191cGRhdGUsIGNyY190bXApOwot Ci0gICAgbnNlZ3MgICAgPSBhdmlvX3I4KGJjKTsKLSAgICBwYWdlX3BvcyA9IGF2aW9fdGVsbChi YykgLSAyNzsKLQotICAgIHJldCA9IGF2aW9fcmVhZChiYywgc2VnbWVudHMsIG5zZWdzKTsKLSAg ICBpZiAocmV0IDwgbnNlZ3MpCi0gICAgICAgIHJldHVybiByZXQgPCAwID8gcmV0IDogQVZFUlJP Ul9FT0Y7Ci0KLSAgICBmb3IgKGkgPSAwOyBpIDwgbnNlZ3M7IGkrKykKLSAgICAgICAgc2l6ZSAr PSBzZWdtZW50c1tpXTsKLQotICAgIGlkeCA9IG9nZ19maW5kX3N0cmVhbShvZ2csIHNlcmlhbCk7 CisgICAgaWR4ID0gb2dnX2ZpbmRfc3RyZWFtKG9nZywgcGFnZS5zZXJpYWwpOwogICAgIGlmIChp ZHggPj0gMCkgewogICAgICAgICBvcyA9IG9nZy0+c3RyZWFtcyArIGlkeDsKIApAQCAtNDM0LDIy ICszNzAsMjIgQEAgc3RhdGljIGludCBvZ2dfcmVhZF9wYWdlKEFWRm9ybWF0Q29udGV4dCAqcywg aW50ICpzaWQsIGludCBwcm9iaW5nKQogICAgICAgICByZXR1cm4gcmV0IDwgMCA/IHJldCA6IEFW RVJST1JfRU9GOwogICAgIH0KIAotICAgIGlmIChjcmMgXiBmZmlvX2dldF9jaGVja3N1bShiYykp IHsKKyAgICBpZiAocGFnZS5jcmMgXiBmZmlvX2dldF9jaGVja3N1bShiYykpIHsKICAgICAgICAg YXZfbG9nKHMsIEFWX0xPR19FUlJPUiwgIkNSQyBtaXNtYXRjaCFcbiIpOwogICAgICAgICBpZiAo aWR4IDwgMCkKICAgICAgICAgICAgIGF2X2ZyZWUocmVhZG91dF9idWYpOwotICAgICAgICBhdmlv X3NlZWsoYmMsIHN0YXJ0X3BvcywgU0VFS19TRVQpOworICAgICAgICBhdmlvX3NlZWsoYmMsIHBh Z2Uuc3RhcnRfcG9zLCBTRUVLX1NFVCk7CiAgICAgICAgICpzaWQgPSAtMTsKICAgICAgICAgcmV0 dXJuIDA7CiAgICAgfQogCiAgICAgLyogU2luY2Ugd2UncmUgYWxtb3N0IHN1cmUgaXRzIGEgdmFs aWQgcGFja2V0LCBjaGVja2luZyB0aGUgdmVyc2lvbiBhZnRlcgogICAgICAqIHRoZSBjaGVja3N1 bSBsZXRzIHRoZSBkZW11eGVyIGJlIG1vcmUgdG9sZXJhbnQgKi8KLSAgICBpZiAodmVyc2lvbikg eworICAgIGlmIChwYWdlLnZlcnNpb24pIHsKICAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19FUlJP UiwgIkludmFsaWQgT2dnIHZlcnMhXG4iKTsKICAgICAgICAgaWYgKGlkeCA8IDApCiAgICAgICAg ICAgICBhdl9mcmVlKHJlYWRvdXRfYnVmKTsKLSAgICAgICAgYXZpb19zZWVrKGJjLCBzdGFydF9w b3MsIFNFRUtfU0VUKTsKKyAgICAgICAgYXZpb19zZWVrKGJjLCBwYWdlLnN0YXJ0X3BvcywgU0VF S19TRVQpOwogICAgICAgICAqc2lkID0gLTE7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAg LTQ1Nyw5ICszOTMsOSBAQCBzdGF0aWMgaW50IG9nZ19yZWFkX3BhZ2UoQVZGb3JtYXRDb250ZXh0 ICpzLCBpbnQgKnNpZCwgaW50IHByb2JpbmcpCiAgICAgLyogQ1JDIGlzIGNvcnJlY3Qgc28gd2Ug Y2FuIGJlIDk5JSBzdXJlIHRoZXJlJ3MgYW4gYWN0dWFsIGNoYW5nZSBoZXJlICovCiAgICAgaWYg KGlkeCA8IDApIHsKICAgICAgICAgaWYgKGRhdGFfcGFja2V0c19zZWVuKG9nZykpCi0gICAgICAg ICAgICBpZHggPSBvZ2dfcmVwbGFjZV9zdHJlYW0ocywgc2VyaWFsLCByZWFkb3V0X2J1Ziwgc2l6 ZSwgcHJvYmluZyk7CisgICAgICAgICAgICBpZHggPSBvZ2dfcmVwbGFjZV9zdHJlYW0ocywgcGFn ZS5zZXJpYWwsIHJlYWRvdXRfYnVmLCBzaXplLCBwcm9iaW5nKTsKICAgICAgICAgZWxzZQotICAg ICAgICAgICAgaWR4ID0gb2dnX25ld19zdHJlYW0ocywgc2VyaWFsKTsKKyAgICAgICAgICAgIGlk eCA9IG9nZ19uZXdfc3RyZWFtKHMsIHBhZ2Uuc2VyaWFsKTsKIAogICAgICAgICBpZiAoaWR4IDwg MCkgewogICAgICAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19FUlJPUiwgImZhaWxlZCB0byBjcmVh dGUgb3IgcmVwbGFjZSBzdHJlYW1cbiIpOwpAQCAtNDc5LDE4ICs0MTUsMTggQEAgc3RhdGljIGlu dCBvZ2dfcmVhZF9wYWdlKEFWRm9ybWF0Q29udGV4dCAqcywgaW50ICpzaWQsIGludCBwcm9iaW5n KQogICAgICAgICBhdl9mcmVlKHJlYWRvdXRfYnVmKTsKICAgICB9CiAKLSAgICBvZ2ctPnBhZ2Vf cG9zID0gcGFnZV9wb3M7Ci0gICAgb3MtPnBhZ2VfcG9zICA9IHBhZ2VfcG9zOwotICAgIG9zLT5u c2VncyAgICAgPSBuc2VnczsKKyAgICBvZ2ctPnBhZ2VfcG9zID0gcGFnZS5wYWdlX3BvczsKKyAg ICBvcy0+cGFnZV9wb3MgID0gcGFnZS5wYWdlX3BvczsKKyAgICBvcy0+bnNlZ3MgICAgID0gcGFn ZS5uc2VnczsKICAgICBvcy0+c2VncCAgICAgID0gMDsKLSAgICBvcy0+Z290X2RhdGEgID0gIShm bGFncyAmIE9HR19GTEFHX0JPUyk7CisgICAgb3MtPmdvdF9kYXRhICA9ICEocGFnZS5mbGFncyAm IE9HR19GTEFHX0JPUyk7CiAgICAgb3MtPmJ1ZnBvcyAgICs9IHNpemU7Ci0gICAgb3MtPmdyYW51 bGUgICA9IGdwOwotICAgIG9zLT5mbGFncyAgICAgPSBmbGFnczsKLSAgICBtZW1jcHkob3MtPnNl Z21lbnRzLCBzZWdtZW50cywgbnNlZ3MpOworICAgIG9zLT5ncmFudWxlICAgPSBwYWdlLmdwOwor ICAgIG9zLT5mbGFncyAgICAgPSBwYWdlLmZsYWdzOworICAgIG1lbWNweShvcy0+c2VnbWVudHMs IHBhZ2Uuc2VnbWVudHMsIHBhZ2UubnNlZ3MpOwogICAgIG1lbXNldChvcy0+YnVmICsgb3MtPmJ1 ZnBvcywgMCwgQVZfSU5QVVRfQlVGRkVSX1BBRERJTkdfU0laRSk7CiAKLSAgICBpZiAoZmxhZ3Mg JiBPR0dfRkxBR19DT05UIHx8IG9zLT5pbmNvbXBsZXRlKSB7CisgICAgaWYgKHBhZ2UuZmxhZ3Mg JiBPR0dfRkxBR19DT05UIHx8IG9zLT5pbmNvbXBsZXRlKSB7CiAgICAgICAgIGlmICghb3MtPnBz aXplKSB7CiAgICAgICAgICAgICAvLyBJZiB0aGlzIGlzIHRoZSB2ZXJ5IGZpcnN0IHNlZ21lbnQg d2Ugc3RhcnRlZAogICAgICAgICAgICAgLy8gcGxheWJhY2sgaW4gdGhlIG1pZGRsZSBvZiBhIGNv bnRpbnVhdGlvbiBwYWNrZXQuCkBAIC03NTMsOCArNjg5LDggQEAgc3RhdGljIGludCBvZ2dfcmVh ZF9jbG9zZShBVkZvcm1hdENvbnRleHQgKnMpCiAgICAgfQogCiAgICAgb2dnLT5uc3RyZWFtcyA9 IDA7Ci0KICAgICBhdl9mcmVlcCgmb2dnLT5zdHJlYW1zKTsKKwogICAgIHJldHVybiAwOwogfQog CmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9vZ2cvZGVjb2Rlci5oIGIvbGliYXZmb3JtYXQvb2dn L2RlY29kZXIuaAppbmRleCA4NDdiMDhjYzg2Li4zMTdkNzUyMGQ1IDEwMDY0NAotLS0gYS9saWJh dmZvcm1hdC9vZ2cvZGVjb2Rlci5oCisrKyBiL2xpYmF2Zm9ybWF0L29nZy9kZWNvZGVyLmgKQEAg LTE5MCw3ICsxOTAsNyBAQCBpbnQgZmZfdm9yYmlzX3VwZGF0ZV9tZXRhZGF0YShBVkZvcm1hdENv bnRleHQgKnMsIEFWU3RyZWFtICpzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHVpbnQ4X3QgKmJ1ZiwgaW50IHNpemUpOwogCiBzdGF0aWMgaW5saW5lIGludAotb2dnX2Zp bmRfc3RyZWFtIChzdHJ1Y3Qgb2dnICogb2dnLCBpbnQgc2VyaWFsKQorb2dnX2ZpbmRfc3RyZWFt IChzdHJ1Y3Qgb2dnICogb2dnLCB1aW50MzJfdCBzZXJpYWwpCiB7CiAgICAgaW50IGk7CiAKQEAg LTIxNSw3ICsyMTUsNyBAQCBvZ2dfZ3B0b3B0cyAoQVZGb3JtYXRDb250ZXh0ICogcywgaW50IGks IHVpbnQ2NF90IGdwLCBpbnQ2NF90ICpkdHMpCiAgICAgICAgIGlmIChkdHMpCiAgICAgICAgICAg ICAqZHRzID0gcHRzOwogICAgIH0KLSAgICBpZiAocHRzID4gSU5UNjRfTUFYICYmIHB0cyAhPSBB Vl9OT1BUU19WQUxVRSkgeworICAgIGlmIChwdHMgPiBJTlQ2NF9NQVggJiYgcHRzICE9ICh1aW50 NjRfdClBVl9OT1BUU19WQUxVRSkgewogICAgICAgICAvLyBUaGUgcmV0dXJuIHR5cGUgaXMgdW5z aWduZWQsIHdlIHRodXMgY2Fubm90IHJldHVybiBuZWdhdGl2ZSBwdHMKICAgICAgICAgYXZfbG9n KHMsIEFWX0xPR19FUlJPUiwgImludmFsaWQgcHRzICUiUFJJZDY0IlxuIiwgcHRzKTsKICAgICAg ICAgcHRzID0gQVZfTk9QVFNfVkFMVUU7CmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9vZ2cvcGFy c2VyLmMgYi9saWJhdmZvcm1hdC9vZ2cvcGFyc2VyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMC4uODljY2MyODI3ZAotLS0gL2Rldi9udWxsCisrKyBiL2xpYmF2Zm9ybWF0 L29nZy9wYXJzZXIuYwpAQCAtMCwwICsxLDEzNyBAQAorLyoqCisgICAgQ29weXJpZ2h0IChDKSAy MDA1ICBNaWNoYWVsIEFobGJlcmcsIE3DpW5zIFJ1bGxnw6VyZAorICAgIENvcHlyaWdodCAoQykg MjAyNSAgUm9tYWluIEJlYXV4aXMKKworICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQs IGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uCisgICAgb2J0YWluaW5nIGEgY29weSBvZiB0 aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24KKyAgICBmaWxlcyAodGhl ICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0CisgICAgcmVzdHJp Y3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNv cHksCisgICAgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwg YW5kL29yIHNlbGwgY29waWVzCisgICAgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBl cnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAgICBmdXJuaXNoZWQgdG8gZG8gc28sIHN1 YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCisgICAgVGhlIGFib3ZlIGNvcHly aWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKKyAgICBpbmNs dWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2Fy ZS4KKworICAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJB TlRZIE9GIEFOWSBLSU5ELAorICAgIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBO T1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgorICAgIE1FUkNIQU5UQUJJTElUWSwgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECisgICAgTk9OSU5GUklOR0VNRU5ULiBJ TiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQKKyAgICBIT0xERVJTIEJF IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwKKyAgICBX SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJ TkcgRlJPTSwKKyAgICBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP UiBUSEUgVVNFIE9SIE9USEVSCisgICAgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorKiovCisK KyNpbmNsdWRlICJsaWJhdmZvcm1hdC9vZ2cvcGFyc2VyLmgiCisKKyNpbmNsdWRlICJsaWJhdmZv cm1hdC9hdmZvcm1hdC5oIgorI2luY2x1ZGUgImxpYmF2Zm9ybWF0L2F2aW9faW50ZXJuYWwuaCIK KworLyoKKyAqIFBhZ2UgbGV2ZWwgSS9PLiBObyBwYXJzZXIgc3RhdGUgaW52b2x2ZWQsIGFuZCBz aGFyZWQgd2l0aCB0aGUgZGVtdXhlci4KKyAqLworCitpbnQgZmZfb2dnX3N5bmNfcGFnZShBVkZv cm1hdENvbnRleHQgKnMsIE9nZ1BhZ2UgKnBhZ2UsIGludDY0X3QgKnJlc3luY19wb3MpCit7Cisg ICAgQVZJT0NvbnRleHQgKmJjID0gcy0+cGI7CisgICAgdWludDMyX3QgY3JjX3RtcDsKKyAgICBp bnQgcmV0LCBpID0gMDsKKyAgICBpbnQgc3AgPSAwOworICAgIHVpbnQ4X3Qgc3luY1s0XTsKKyAg ICBpbnQgc2l6ZSA9IDA7CisKKyAgICByZXQgPSBhdmlvX3JlYWQoYmMsIHN5bmMsIDQpOworICAg IGlmIChyZXQgPCA0KQorICAgICAgICByZXR1cm4gcmV0IDwgMCA/IHJldCA6IEFWRVJST1JfRU9G OworCisgICAgZG8geworICAgICAgICBpbnQgYzsKKworICAgICAgICBpZiAoc3luY1tzcCAmIDNd ID09ICdPJyAmJiBzeW5jWyhzcCArIDEpICYgM10gPT0gJ2cnICYmCisgICAgICAgICAgICBzeW5j WyhzcCArIDIpICYgM10gPT0gJ2cnICYmIHN5bmNbKHNwICsgMykgJiAzXSA9PSAnUycpCisgICAg ICAgICAgICBicmVhazsKKworICAgICAgICBpZiAoIWkgJiYgcmVzeW5jX3BvcyAmJiAoYmMtPnNl ZWthYmxlICYgQVZJT19TRUVLQUJMRV9OT1JNQUwpICYmCisgICAgICAgICAgICAqcmVzeW5jX3Bv cyA+IDApIHsKKyAgICAgICAgICAgIG1lbXNldChzeW5jLCAwLCA0KTsKKyAgICAgICAgICAgIGF2 aW9fc2VlayhiYywgKnJlc3luY19wb3MgKyA0LCBTRUVLX1NFVCk7CisgICAgICAgICAgICAqcmVz eW5jX3BvcyA9IC0xOworICAgICAgICB9CisKKyAgICAgICAgYyA9IGF2aW9fcjgoYmMpOworCisg ICAgICAgIGlmIChhdmlvX2Zlb2YoYmMpKQorICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfRU9G OworCisgICAgICAgIHN5bmNbc3ArKyAmIDNdID0gYzsKKyAgICB9IHdoaWxlIChpKysgPCBNQVhf T0dHX1BBR0VfU0laRSk7CisKKyAgICBpZiAoaSA+PSBNQVhfT0dHX1BBR0VfU0laRSkgeworICAg ICAgICBhdl9sb2cocywgQVZfTE9HX0lORk8sICJjYW5ub3QgZmluZCBzeW5jIHdvcmRcbiIpOwor ICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICB9CisKKyAgICAvKiAweDRm YTliMDVmID0gYXZfY3JjKEFWX0NSQ18zMl9JRUVFLCAweDAsICJPZ2dTIiwgNCkgKi8KKyAgICBm ZmlvX2luaXRfY2hlY2tzdW0oYmMsIGZmX2NyYzA0QzExREI3X3VwZGF0ZSwgMHg0ZmE5YjA1Zik7 CisKKyAgICAvKiBUbyByZXdpbmQgaWYgY2hlY2tzdW0gaXMgYmFkL2NoZWNrIG1hZ2ljIG9uIHN3 aXRjaGVzIC0gdGhpcyBpcyB0aGUgbWF4CisgICAgICogcGFja2V0IHNpemUgKi8KKyAgICByZXQg PSBmZmlvX2Vuc3VyZV9zZWVrYmFjayhiYywgTUFYX09HR19QQUdFX1NJWkUpOworICAgIGlmIChy ZXQgPCAwKQorICAgICAgICByZXR1cm4gcmV0OworICAgIHBhZ2UtPnN0YXJ0X3BvcyA9IGF2aW9f dGVsbChiYyk7CisKKyAgICBwYWdlLT52ZXJzaW9uID0gYXZpb19yOChiYyk7CisgICAgcGFnZS0+ ZmxhZ3MgICA9IGF2aW9fcjgoYmMpOworICAgIHBhZ2UtPmdwICAgICAgPSBhdmlvX3JsNjQoYmMp OworICAgIHBhZ2UtPnNlcmlhbCAgPSBhdmlvX3JsMzIoYmMpOworICAgIGF2aW9fcmwzMihiYyk7 IC8qIHNlcSAqLworCisgICAgY3JjX3RtcCAgICA9IGZmaW9fZ2V0X2NoZWNrc3VtKGJjKTsKKyAg ICBwYWdlLT5jcmMgID0gYXZpb19yYjMyKGJjKTsKKyAgICBjcmNfdG1wICAgID0gZmZfY3JjMDRD MTFEQjdfdXBkYXRlKGNyY190bXAsICh1aW50OF90WzRdKXswfSwgNCk7CisgICAgZmZpb19pbml0 X2NoZWNrc3VtKGJjLCBmZl9jcmMwNEMxMURCN191cGRhdGUsIGNyY190bXApOworCisgICAgcGFn ZS0+bnNlZ3MgICAgPSBhdmlvX3I4KGJjKTsKKyAgICBwYWdlLT5wYWdlX3BvcyA9IGF2aW9fdGVs bChiYykgLSAyNzsKKworICAgIHJldCA9IGF2aW9fcmVhZChiYywgcGFnZS0+c2VnbWVudHMsIHBh Z2UtPm5zZWdzKTsKKyAgICBpZiAocmV0IDwgcGFnZS0+bnNlZ3MpCisgICAgICAgIHJldHVybiBy ZXQgPCAwID8gcmV0IDogQVZFUlJPUl9FT0Y7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgcGFnZS0+ bnNlZ3M7IGkrKykKKyAgICAgICAgc2l6ZSArPSBwYWdlLT5zZWdtZW50c1tpXTsKKworICAgIHBh Z2UtPnBheWxvYWRfc2l6ZSA9IHNpemU7CisgICAgcGFnZS0+cGFnZV9zaXplICAgID0gYXZpb190 ZWxsKGJjKSAtIHBhZ2UtPnBhZ2VfcG9zICsgc2l6ZTsKKworICAgIHJldHVybiBzaXplOworfQor CitpbnQgZmZfb2dnX3ZlcmlmeV9wYWdlKEFWRm9ybWF0Q29udGV4dCAqcywgY29uc3QgT2dnUGFn ZSAqcGFnZSkKK3sKKyAgICBBVklPQ29udGV4dCAqYmMgPSBzLT5wYjsKKyAgICB1aW50OF90IGJ1 ZlsxMDI0XTsKKyAgICBpbnQgcmVtYWluaW5nID0gcGFnZS0+cGF5bG9hZF9zaXplOworCisgICAg LyogVGhlIHBheWxvYWQgaGFzIHRvIGJlIHJlYWQgcmF0aGVyIHRoYW4gc2tpcHBlZDogdGhlIHJ1 bm5pbmcgY2hlY2tzdW0gaXMKKyAgICAgKiBvbmx5IGZlZCBieSBkYXRhIGdvaW5nIHRocm91Z2gg dGhlIGJ1ZmZlci4gKi8KKyAgICB3aGlsZSAocmVtYWluaW5nID4gMCkgeworICAgICAgICBpbnQg biAgID0gRkZNSU4ocmVtYWluaW5nLCAoaW50KXNpemVvZihidWYpKTsKKyAgICAgICAgaW50IHJl dCA9IGF2aW9fcmVhZChiYywgYnVmLCBuKTsKKyAgICAgICAgaWYgKHJldCA8IG4pCisgICAgICAg ICAgICByZXR1cm4gcmV0IDwgMCA/IHJldCA6IEFWRVJST1JfRU9GOworICAgICAgICByZW1haW5p bmcgLT0gbjsKKyAgICB9CisKKyAgICBpZiAocGFnZS0+Y3JjIF4gZmZpb19nZXRfY2hlY2tzdW0o YmMpKQorICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKworICAgIC8qIENoZWNr ZWQgYWZ0ZXIgdGhlIGNoZWNrc3VtIHNvIHRoYXQgYSB2YWxpZCBwYWdlIHdpdGggYW4gdW5leHBl Y3RlZAorICAgICAqIHZlcnNpb24gaXMgc3RpbGwgcmVwb3J0ZWQgYXMgYSB2ZXJzaW9uIHByb2Js ZW0gcmF0aGVyIHRoYW4gYXMgZ2FyYmFnZS4gKi8KKyAgICBpZiAocGFnZS0+dmVyc2lvbikKKyAg ICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisKKyAgICByZXR1cm4gMDsKK30KZGlm ZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L29nZy9wYXJzZXIuaCBiL2xpYmF2Zm9ybWF0L29nZy9wYXJz ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5jZDhhN2Q0OTBmCi0t LSAvZGV2L251bGwKKysrIGIvbGliYXZmb3JtYXQvb2dnL3BhcnNlci5oCkBAIC0wLDAgKzEsODEg QEAKKy8qKgorICAgIENvcHlyaWdodCAoQykgMjAwNSAgTWljaGFlbCBBaGxiZXJnLCBNw6VucyBS dWxsZ8OlcmQKKyAgICBDb3B5cmlnaHQgKEMpIDIwMjUgIFJvbWFpbiBCZWF1eGlzCisKKyAgICBQ ZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNv bgorICAgIG9idGFpbmluZyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBk b2N1bWVudGF0aW9uCisgICAgZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUg U29mdHdhcmUgd2l0aG91dAorICAgIHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1p dGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LAorICAgIG1vZGlmeSwgbWVyZ2UsIHB1Ymxp c2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcworICAgIG9mIHRo ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlz CisgICAgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0 aW9uczoKKworICAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np b24gbm90aWNlIHNoYWxsIGJlCisgICAgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFu dGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKKyAgICBUSEUgU09GVFdBUkUgSVMgUFJP VklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKyAgICBFWFBSRVNT IE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMg T0YKKyAgICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF IEFORAorICAgIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMg T1IgQ09QWVJJR0hUCisgICAgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdF UyBPUiBPVEhFUiBMSUFCSUxJVFksCisgICAgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB Q1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisgICAgT1VUIE9GIE9SIElOIENP Tk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICAgIERFQUxJ TkdTIElOIFRIRSBTT0ZUV0FSRS4KKyoqLworCisjaWZuZGVmIEFWRk9STUFUX09HR19QQVJTRVJf SAorI2RlZmluZSBBVkZPUk1BVF9PR0dfUEFSU0VSX0gKKworI2luY2x1ZGUgPHN0ZGludC5oPgor CisjaW5jbHVkZSAibGliYXZmb3JtYXQvYXZmb3JtYXQuaCIKKworLyoqIExhcmdlc3QgcG9zc2li bGUgT2dnIHBhZ2U6IDI3IGJ5dGUgaGVhZGVyLCAyNTUgc2VnbWVudHMgb2YgMjU1IGJ5dGVzLiAq LworI2RlZmluZSBNQVhfT0dHX1BBR0VfU0laRSA2NTMwNworCisvKioKKyAqIEEgc2luZ2xlIE9n ZyBwYWdlLgorICovCit0eXBlZGVmIHN0cnVjdCBPZ2dQYWdlIHsKKyAgICBpbnQ2NF90IHBhZ2Vf cG9zOyAgICAgICAvLy88IGZpbGUgb2Zmc2V0IG9mIHRoZSBjYXB0dXJlIHBhdHRlcm4KKyAgICBp bnQ2NF90IHBhZ2Vfc2l6ZTsgICAgICAvLy88IHRvdGFsIHBhZ2Ugc2l6ZSwgaGVhZGVyIGFuZCBw YXlsb2FkCisgICAgaW50NjRfdCBzdGFydF9wb3M7ICAgICAgLy8vPCBmaWxlIG9mZnNldCBqdXN0 IHBhc3QgdGhlIGNhcHR1cmUgcGF0dGVybgorICAgIHVpbnQ2NF90IGdwOyAgICAgICAgICAgIC8v LzwgZ3JhbnVsZSBwb3NpdGlvbgorICAgIHVpbnQzMl90IHNlcmlhbDsgICAgICAgIC8vLzwgc2Vy aWFsIG51bWJlciBvZiB0aGUgb3duaW5nIGxvZ2ljYWwgYml0c3RyZWFtCisgICAgdWludDMyX3Qg Y3JjOyAgICAgICAgICAgLy8vPCBjaGVja3N1bSBzdG9yZWQgaW4gdGhlIHBhZ2UgaGVhZGVyCisg ICAgaW50IHBheWxvYWRfc2l6ZTsgICAgICAgLy8vPCBzdW0gb2YgdGhlIHNlZ21lbnQgdGFibGUg ZW50cmllcworICAgIGludCBuc2VnczsgICAgICAgICAgICAgIC8vLzwgbnVtYmVyIG9mIGVudHJp ZXMgaW4gdGhlIHNlZ21lbnQgdGFibGUKKyAgICB1aW50OF90IHZlcnNpb247CisgICAgdWludDhf dCBmbGFnczsKKyAgICB1aW50OF90IHNlZ21lbnRzWzI1NV07Cit9IE9nZ1BhZ2U7CisKKy8qKgor ICogUmVhZCB0aGUgbmV4dCBwYWdlIGhlYWRlciBhdCBvciBhZnRlciB0aGUgY3VycmVudCBwb3Np dGlvbi4KKyAqCisgKiBPbiBzdWNjZXNzIHRoZSBBVklPQ29udGV4dCBpcyBsZWZ0IHBvc2l0aW9u ZWQgYXQgdGhlIGZpcnN0IHBheWxvYWQgYnl0ZSB3aXRoCisgKiB0aGUgcGFnZSBjaGVja3N1bSBh cm1lZCwgc28gdGhhdCB0aGUgY2FsbGVyIGNhbiByZWFkIHRoZSBwYXlsb2FkIGFuZCBoYW5kIGl0 CisgKiB0byBmZl9vZ2dfdmVyaWZ5X3BhZ2UoKSBvciBjaGVjayBpdCBpdHNlbGYuCisgKgorICog QHBhcmFtIHBhZ2UgICAgICAgZmlsbGVkIGluIHdpdGggdGhlIHBhZ2UgaGVhZGVyIGFuZCBzZWdt ZW50IHRhYmxlCisgKiBAcGFyYW0gcmVzeW5jX3BvcyBpbi9vdXQgb2Zmc2V0IG9mIHRoZSBsYXN0 IGtub3duIGdvb2QgcGFnZSwgdXNlZCBvbmNlIHRvCisgKiAgICAgICAgICAgICAgICAgICByZXN0 YXJ0IHRoZSBzZWFyY2ggcGFzdCBhIGJhZCBwYWdlOyBzZXQgdG8gLTEgd2hlbgorICogICAgICAg ICAgICAgICAgICAgY29uc3VtZWQuIE1heSBiZSBOVUxMLCBpbiB3aGljaCBjYXNlIG5vIHN1Y2gg aGludCBpcyB1c2VkLgorICoKKyAqIEByZXR1cm4gdGhlIHBheWxvYWQgc2l6ZSBpbiBieXRlcywg b3IgYSBuZWdhdGl2ZSBBVkVSUk9SCisgKi8KK2ludCBmZl9vZ2dfc3luY19wYWdlKEFWRm9ybWF0 Q29udGV4dCAqcywgT2dnUGFnZSAqcGFnZSwgaW50NjRfdCAqcmVzeW5jX3Bvcyk7CisKKy8qKgor ICogQ29uc3VtZSB0aGUgcGF5bG9hZCBvZiB0aGUgcGFnZSBqdXN0IHJldHVybmVkIGJ5IGZmX29n Z19zeW5jX3BhZ2UoKSBhbmQKKyAqIHZhbGlkYXRlIHRoZSBwYWdlIGFnYWluc3QgaXRzIHN0b3Jl ZCBjaGVja3N1bSBhbmQgdmVyc2lvbi4KKyAqCisgKiBDYWxsZXJzIHRoYXQgd2FudCB0aGUgcGF5 bG9hZCBzaG91bGQgcmVhZCBpdCB0aGVtc2VsdmVzIGFuZCBjb21wYXJlCisgKiBmZmlvX2dldF9j aGVja3N1bSgpIGFnYWluc3QgcGFnZS0+Y3JjIGluc3RlYWQgb2YgY2FsbGluZyB0aGlzLgorICoK KyAqIEByZXR1cm4gMCBpZiB0aGUgcGFnZSBpcyB2YWxpZCwgQVZFUlJPUl9JTlZBTElEREFUQSBp ZiBpdCBpcyBub3QsCisgKiAgICAgICAgIG9yIGFub3RoZXIgbmVnYXRpdmUgQVZFUlJPUiBvbiBy ZWFkIGZhaWx1cmUKKyAqLworaW50IGZmX29nZ192ZXJpZnlfcGFnZShBVkZvcm1hdENvbnRleHQg KnMsIGNvbnN0IE9nZ1BhZ2UgKnBhZ2UpOworCisjZW5kaWYgLyogQVZGT1JNQVRfT0dHX1BBUlNF Ul9IICovCi0tIAoyLjUyLjAKCgpGcm9tIDU2MGMwNGQ1NTM2ZmUwOGM4NWEzNTEzNTVlODZjN2Zm MTZmMjNmMzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IFJvbWFpbiBCZWF1eGlzIDxy b21haW4uYmVhdXhpc0BnbWFpbC5jb20+CkRhdGU6IFR1ZSwgMjggSnVsIDIwMjYgMTY6NDA6Mzcg LTA1MDAKU3ViamVjdDogW1BBVENIIDA1LzEwXSBhdmZvcm1hdC9vZ2c6IGFkZCBjaGFpbmVkIHN0 cmVhbSBwYXJzZXIKCk9nZyBnaXZlcyBubyBpbmRleCBvZiBpdHMgbGlua3MsIHNvIGZmX29nZ19w YXJzZV9jaGFpbigpIGZpbmRzIHRoZW0gYnkKYmlzZWN0aW9uOiBmb3IgZXZlcnkgc2VyaWFsIHRo ZSBFT1MgcGFnZSBsaWVzIGluIGFuIGludGVydmFsIHRoYXQgcGFnZXMKb2YgdGhhdCBzZXJpYWwg YW5kIGV2aWRlbmNlIG9mIGxhdGVyIGxpbmtzIG5hcnJvdyB1bnRpbCB0aGV5IG1lZXQuCgpQYWdl cyByZWFjaGVkIGJ5IHNlZWtpbmcgYXJlIGNoZWNrc3VtbWVkIGJlZm9yZSBiZWluZyBiZWxpZXZl ZCwgYW5kCm5vdGhpbmcgY2FsbHMgaXQgeWV0LCBzbyBubyB0ZXN0IG1vdmVzLgotLS0KIGxpYmF2 Zm9ybWF0L01ha2VmaWxlICAgIHwgICAxICsKIGxpYmF2Zm9ybWF0L29nZy9jaGFpbi5jIHwgNzcw ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGxpYmF2Zm9ybWF0L29n Zy9jaGFpbi5oIHwgIDkxICsrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDg2MiBpbnNlcnRpb25zKCsp CiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZmb3JtYXQvb2dnL2NoYWluLmMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBsaWJhdmZvcm1hdC9vZ2cvY2hhaW4uaAoKZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0 L01ha2VmaWxlIGIvbGliYXZmb3JtYXQvTWFrZWZpbGUKaW5kZXggZTUxNmQxNDFkYS4uMDE1NGUw ODEyYSAxMDA2NDQKLS0tIGEvbGliYXZmb3JtYXQvTWFrZWZpbGUKKysrIGIvbGliYXZmb3JtYXQv TWFrZWZpbGUKQEAgLTQzOSw2ICs0MzksNyBAQCBPQkpTLSQoQ09ORklHX0FWMV9ERU1VWEVSKSAg ICAgICAgICAgICAgICs9IGF2MWRlYy5vCiBPQkpTLSQoQ09ORklHX09CVV9ERU1VWEVSKSAgICAg ICAgICAgICAgICs9IGF2MWRlYy5vCiBPQkpTLSQoQ09ORklHX09CVV9NVVhFUikgICAgICAgICAg ICAgICAgICs9IHJhd2VuYy5vCiBPQkpTLSQoQ09ORklHX09HR19ERU1VWEVSKSAgICAgICAgICAg ICAgICs9IG9nZy9wYXJzZXIubyAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBvZ2cvY2hhaW4ubyAgICAgICAgIFwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgb2dnL2RlY29kZXIubyAgICAgICBcCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9nZy9wYXJzZWRpcmFjLm8gICAg XAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZ2cvcGFyc2Vm bGFjLm8gICAgIFwKZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L29nZy9jaGFpbi5jIGIvbGliYXZm b3JtYXQvb2dnL2NoYWluLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4u MTQ4ZjQ0MzgxYQotLS0gL2Rldi9udWxsCisrKyBiL2xpYmF2Zm9ybWF0L29nZy9jaGFpbi5jCkBA IC0wLDAgKzEsNzcwIEBACisvKioKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDUgIE1pY2hhZWwgQWhs YmVyZywgTcOlbnMgUnVsbGfDpXJkCisgICAgQ29weXJpZ2h0IChDKSAyMDI1ICBSb21haW4gQmVh dXhpcworCisgICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us IHRvIGFueSBwZXJzb24KKyAgICBvYnRhaW5pbmcgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5k IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbgorICAgIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRv IGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQKKyAgICByZXN0cmljdGlvbiwgaW5jbHVkaW5n IHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwKKyAgICBtb2RpZnks IG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3Bp ZXMKKyAgICBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRo ZSBTb2Z0d2FyZSBpcworICAgIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9s bG93aW5nIGNvbmRpdGlvbnM6CisKKyAgICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg dGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQorICAgIGluY2x1ZGVkIGluIGFsbCBjb3Bp ZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCisgICAgVEhFIFNP RlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQs CisgICAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRI RSBXQVJSQU5USUVTIE9GCisgICAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRSBBTkQKKyAgICBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxM IFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVAorICAgIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkg Q0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLAorICAgIFdIRVRIRVIgSU4gQU4gQUNU SU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorICAgIE9V VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RI RVIKKyAgICBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisqKi8KKworI2luY2x1ZGUgImxpYmF2 Zm9ybWF0L29nZy9jaGFpbi5oIgorCisjaW5jbHVkZSAibGliYXZmb3JtYXQvYXZmb3JtYXQuaCIK KyNpbmNsdWRlICJsaWJhdmZvcm1hdC9vZ2cvZGVjb2Rlci5oIgorI2luY2x1ZGUgImxpYmF2Zm9y bWF0L29nZy9wYXJzZXIuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvbWVtLmgiCisKKy8qCisgKiBD aGFpbmVkIHN0cmVhbSBwYXJzZXIuCisgKgorICogT2dnIGdpdmVzIG5vIGluZGV4IG9mIGl0cyBs aW5rcywgc28gZWFjaCBiaXRzdHJlYW0ncyBFT1MgcGFnZSBpcyBmb3VuZCBieQorICogYmlzZWN0 aW9uIHJhdGhlciB0aGFuIGJ5IHNjYW5uaW5nLiBGb3IgZXZlcnkgc2VyaWFsIHRoZSBFT1MgcGFn ZSBsaWVzIGluCisgKiBbZW9zX2xvd2VyLCBlb3NfdXBwZXJdOiBhIHBhZ2Ugb2YgdGhhdCBzZXJp YWwgcmFpc2VzIHRoZSBsb3dlciBib3VuZCBwYXN0CisgKiBpdCwgZXZpZGVuY2Ugb2YgYSBsYXRl ciBsaW5rIGxvd2VycyB0aGUgdXBwZXIgb25lLCBhbmQgdGhlIHR3byBtZWV0IG9uIHRoZQorICog RU9TIHBhZ2UuCisgKi8KKworI2RlZmluZSBNSU5fT0dHX1NFQVJDSF9SQU5HRSAxMDI0CisKKy8q IEJpc2VjdGluZyBhIHN0cmVhbSBjb3N0cyBPKGxvZzIoZmlsZSBzaXplKSkgcGFnZSByZWFkcywg c28gYSBmZXcgZG96ZW4gYXQKKyAqIG1vc3QuIEFueXRoaW5nIGJleW9uZCB0aGlzIHBlciBzdHJl YW0gbWVhbnMgdGhlIGZpbGUgaXMgbm90IG1ha2luZyBwcm9ncmVzcworICogYW5kIHRoZSByZXN1 bHRzIGFyZSByZXBvcnRlZCBhcyB0cnVuY2F0ZWQuICovCisjZGVmaW5lIE1BWF9PR0dfUEFHRVNf UEVSX1NUUkVBTSA1MTIKKworLyogQ29uc2VjdXRpdmUgZmFsc2UgY2FwdHVyZSBwYXR0ZXJucyB0 b2xlcmF0ZWQgYmVmb3JlIGEgcmVnaW9uIGlzIGdpdmVuIHVwCisgKiBvbi4gRWFjaCByZXRyeSBy ZXN1bWVzIHRoZSBzZWFyY2ggNCBieXRlcyBmdXJ0aGVyIGluLiAqLworI2RlZmluZSBNQVhfT0dH X0ZBTFNFX1NZTkNTIDE2CisKK3R5cGVkZWYgc3RydWN0IE9nZ1N0cmVhbVN0YXRlIHsKKyAgICB1 aW50MzJfdCBzZXJpYWw7CisgICAgaW50IGxpbmtfaW5kZXg7ICAgICAgICAgLy8vPCBpbmRleCBv ZiB0aGUgb3duaW5nIGxpbmssIC0xIHVudGlsIGl0cyBCT1MgcGFnZSBpcyBmb3VuZAorICAgIGlu dDY0X3QgZW9zX2xvd2VyOyAgICAgIC8vLzwgdGhlIEVPUyBwYWdlIGxpZXMgaW4gW2Vvc19sb3dl ciwgZW9zX3VwcGVyXQorICAgIGludDY0X3QgZW9zX3VwcGVyOworICAgIGludDY0X3QgbGFzdF9w YWdlX3BvczsgIC8vLzwgZnVydGhlc3QgcGFnZSBzZWVuIGZvciB0aGlzIHNlcmlhbAorICAgIGlu dCBjb21wbGV0ZTsgICAgICAgICAgIC8vLzwgdGhlIEVPUyBwYWdlIGhhcyBiZWVuIGZvdW5kLCBv ciB0aGUgc3RyZWFtIHdhcyBnaXZlbiB1cCBvbgorICAgIGludCBub19lb3M7CisgICAgaW50IGhh dmVfZmlyc3RfcGFnZTsKKyAgICBpbnQgaGF2ZV9sYXN0X3BhZ2U7CisgICAgT2dnUGFnZSBmaXJz dF9wYWdlOworICAgIE9nZ1BhZ2UgbGFzdF9wYWdlOworfSBPZ2dTdHJlYW1TdGF0ZTsKKwordHlw ZWRlZiBzdHJ1Y3QgT2dnUGFyc2VyIHsKKyAgICBBVkZvcm1hdENvbnRleHQgKnM7CisgICAgaW50 NjRfdCBmaWxlX3NpemU7CisKKyAgICAvKiBGbGF0LCBzZXJpYWwga2V5ZWQuIEluZGl2aWR1YWxs eSBhbGxvY2F0ZWQgc28gdGhhdCBhIHN0YXRlIHN0YXlzIHZhbGlkCisgICAgICogd2hpbGUgdGhl IGFycmF5IGdyb3dzIHVuZGVybmVhdGggaXQuICovCisgICAgT2dnU3RyZWFtU3RhdGUgKipzdHJl YW1zOworICAgIGludCBuYl9zdHJlYW1zOworCisgICAgLyogT2Zmc2V0cyBhdCB3aGljaCBhIGxp bmsgaGVhZGVyIGlzIGtub3duIHRvIHN0YXJ0LiBMaW5rcyBhcmUgZGlzY292ZXJlZAorICAgICAq IGFzIEVPUyBwYWdlcyB0dXJuIHVwLCBzbyB0aGlzIGRvdWJsZXMgYXMgdGhlIGRpc2NvdmVyeSB3 b3JrbGlzdDoKKyAgICAgKiBldmVyeXRoaW5nIGJlbG93IG5iX3NjYW5uZWRfbGlua3MgaGFzIGJl ZW4gcmVhZC4gKi8KKyAgICBpbnQ2NF90ICpsaW5rX29mZnNldHM7CisgICAgaW50IG5iX2xpbmtf b2Zmc2V0czsKKyAgICBpbnQgbmJfc2Nhbm5lZF9saW5rczsKKworICAgIGludCBuYl9saW5rczsK KworICAgIE9nZ1BhcnNlclN0YXRzIHN0YXRzOworfSBPZ2dQYXJzZXI7CisKKy8qKiBXaGljaCBz aWRlIG9mIGEgc3RyZWFtJ3MgRU9TIHBhZ2UgYSBwcm9iZSBsYW5kZWQgb24uICovCitlbnVtIE9n Z1ZlcmRpY3QgeworICAgIE9HR19WRVJESUNUX1VOS05PV04sICAgIC8vLzwgdGhlIHBhZ2Ugc2F5 cyBub3RoaW5nIGVpdGhlciB3YXkKKyAgICBPR0dfVkVSRElDVF9CRUZPUkVfRU9TLAorICAgIE9H R19WRVJESUNUX0FGVEVSX0VPUywKK307CisKK3N0YXRpYyBpbnQgb2dnX3BhcnNlcl9zZWVrKE9n Z1BhcnNlciAqcGFyc2VyLCBpbnQ2NF90IG9mZnNldCkKK3sKKyAgICBpbnQ2NF90IHBvcyA9IGF2 aW9fc2VlayhwYXJzZXItPnMtPnBiLCBvZmZzZXQsIFNFRUtfU0VUKTsKKworICAgIGlmIChwb3Mg PCAwKQorICAgICAgICByZXR1cm4gcG9zOworCisgICAgcGFyc2VyLT5zdGF0cy5uYl9zZWVrcysr OworICAgIHJldHVybiAwOworfQorCisvKiBUaGUgc2VyaWFsIGFuZCBsaW5rIG9mZnNldCBsb29r dXBzIGJlbG93IGFyZSBsaW5lYXIgc2NhbnMuIEZpbGVzIGhhdmUgYQorICogaGFuZGZ1bCBvZiBs aW5rcyBpbiBwcmFjdGljZTsgdmVyeSBsb25nIGNoYWlucyB3b3VsZCB3YW50IHRoZXNlIHNvcnRl ZCBvcgorICogaGFzaGVkLiAqLworc3RhdGljIE9nZ1N0cmVhbVN0YXRlICpvZ2dfcGFyc2VyX2Zp bmRfc3RyZWFtKE9nZ1BhcnNlciAqcGFyc2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNlcmlhbCkKK3sKKyAgICBmb3IgKGludCBpID0g MDsgaSA8IHBhcnNlci0+bmJfc3RyZWFtczsgaSsrKQorICAgICAgICBpZiAocGFyc2VyLT5zdHJl YW1zW2ldLT5zZXJpYWwgPT0gc2VyaWFsKQorICAgICAgICAgICAgcmV0dXJuIHBhcnNlci0+c3Ry ZWFtc1tpXTsKKworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgT2dnU3RyZWFtU3RhdGUg Km9nZ19wYXJzZXJfZmluZF9vcl9jcmVhdGVfc3RyZWFtKE9nZ1BhcnNlciAqcGFyc2VyLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50 MzJfdCBzZXJpYWwpCit7CisgICAgT2dnU3RyZWFtU3RhdGUgKnN0ID0gb2dnX3BhcnNlcl9maW5k X3N0cmVhbShwYXJzZXIsIHNlcmlhbCk7CisgICAgT2dnU3RyZWFtU3RhdGUgKip0bXA7CisKKyAg ICBpZiAoc3QpCisgICAgICAgIHJldHVybiBzdDsKKworICAgIHRtcCA9IGF2X3JlYWxsb2NfYXJy YXkocGFyc2VyLT5zdHJlYW1zLCBwYXJzZXItPm5iX3N0cmVhbXMgKyAxLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2l6ZW9mKCpwYXJzZXItPnN0cmVhbXMpKTsKKyAgICBpZiAoIXRtcCkK KyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcGFyc2VyLT5zdHJlYW1zID0gdG1wOworCisgICAg c3QgPSBhdl9tYWxsb2N6KHNpemVvZigqc3QpKTsKKyAgICBpZiAoIXN0KQorICAgICAgICByZXR1 cm4gTlVMTDsKKworICAgIHN0LT5zZXJpYWwgICAgID0gc2VyaWFsOworICAgIHN0LT5saW5rX2lu ZGV4ID0gLTE7CisgICAgc3QtPmVvc191cHBlciAgPSBwYXJzZXItPmZpbGVfc2l6ZTsKKworICAg IHBhcnNlci0+c3RyZWFtc1twYXJzZXItPm5iX3N0cmVhbXMrK10gPSBzdDsKKworICAgIHJldHVy biBzdDsKK30KKworc3RhdGljIGludCBvZ2dfcXVldWVfbGluayhPZ2dQYXJzZXIgKnBhcnNlciwg aW50NjRfdCBvZmZzZXQpCit7CisgICAgaW50NjRfdCAqdG1wOworCisgICAgaWYgKG9mZnNldCA8 IDAgfHwgb2Zmc2V0ID49IHBhcnNlci0+ZmlsZV9zaXplKQorICAgICAgICByZXR1cm4gMDsKKwor ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGFyc2VyLT5uYl9saW5rX29mZnNldHM7IGkrKykKKyAg ICAgICAgaWYgKHBhcnNlci0+bGlua19vZmZzZXRzW2ldID09IG9mZnNldCkKKyAgICAgICAgICAg IHJldHVybiAwOworCisgICAgdG1wID0gYXZfcmVhbGxvY19hcnJheShwYXJzZXItPmxpbmtfb2Zm c2V0cywgcGFyc2VyLT5uYl9saW5rX29mZnNldHMgKyAxLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2l6ZW9mKCpwYXJzZXItPmxpbmtfb2Zmc2V0cykpOworICAgIGlmICghdG1wKQorICAg ICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworCisgICAgcGFyc2VyLT5saW5rX29mZnNldHMg PSB0bXA7CisgICAgcGFyc2VyLT5saW5rX29mZnNldHNbcGFyc2VyLT5uYl9saW5rX29mZnNldHMr K10gPSBvZmZzZXQ7CisKKyAgICByZXR1cm4gMDsKK30KKworLyoqCisgKiBUaGUgb25seSBwbGFj ZSBhIHBhZ2UgY2hhbmdlcyBwYXJzZXIgc3RhdGUsIHNvIHRoYXQgcmVhZGluZyBvbmUgaGFzIG5v CisgKiBvdGhlciBzaWRlIGVmZmVjdC4KKyAqLworc3RhdGljIGludCBvZ2dfb2JzZXJ2ZV9wYWdl KE9nZ1BhcnNlciAqcGFyc2VyLCBjb25zdCBPZ2dQYWdlICpwYWdlKQoreworICAgIE9nZ1N0cmVh bVN0YXRlICpzdCA9IG9nZ19wYXJzZXJfZmluZF9vcl9jcmVhdGVfc3RyZWFtKHBhcnNlciwgcGFn ZS0+c2VyaWFsKTsKKworICAgIGlmICghc3QpCisgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01F TSk7CisKKyAgICBzdC0+bGFzdF9wYWdlX3BvcyA9IEZGTUFYKHN0LT5sYXN0X3BhZ2VfcG9zLCBw YWdlLT5wYWdlX3Bvcyk7CisKKyAgICBpZiAocGFnZS0+ZmxhZ3MgJiBPR0dfRkxBR19CT1MgJiYg IXN0LT5oYXZlX2ZpcnN0X3BhZ2UpIHsKKyAgICAgICAgc3QtPmZpcnN0X3BhZ2UgICAgICA9ICpw YWdlOworICAgICAgICBzdC0+aGF2ZV9maXJzdF9wYWdlID0gMTsKKyAgICB9CisKKyAgICBpZiAo cGFnZS0+ZmxhZ3MgJiBPR0dfRkxBR19FT1MpIHsKKyAgICAgICAgc3QtPmVvc19sb3dlciAgICAg ID0gc3QtPmVvc191cHBlciA9IHBhZ2UtPnBhZ2VfcG9zOworICAgICAgICBzdC0+bGFzdF9wYWdl ICAgICAgPSAqcGFnZTsKKyAgICAgICAgc3QtPmhhdmVfbGFzdF9wYWdlID0gMTsKKyAgICAgICAg c3QtPmNvbXBsZXRlICAgICAgID0gMTsKKworICAgICAgICAvKiBBIGxpbmsgYm91bmRhcnkgaXMg ZXhhY3RseSBhbiBFT1MgcGFnZSBmb2xsb3dlZCBieSB0aGUgbmV4dCBsaW5rJ3MKKyAgICAgICAg ICogQk9TIHBhZ2VzLCBzbyB0aGlzIGlzIHdoZXJlIHRoZSBuZXh0IGxpbmsgc3RhcnRzLiAqLwor ICAgICAgICByZXR1cm4gb2dnX3F1ZXVlX2xpbmsocGFyc2VyLCBwYWdlLT5wYWdlX3BvcyArIHBh Z2UtPnBhZ2Vfc2l6ZSk7CisgICAgfQorCisgICAgc3QtPmVvc19sb3dlciA9IEZGTUFYKHN0LT5l b3NfbG93ZXIsIHBhZ2UtPnBhZ2VfcG9zICsgcGFnZS0+cGFnZV9zaXplKTsKKworICAgIHJldHVy biAwOworfQorCitzdGF0aWMgaW50IG9nZ19idWRnZXRfZXhoYXVzdGVkKE9nZ1BhcnNlciAqcGFy c2VyKQoreworICAgIHJldHVybiBwYXJzZXItPnN0YXRzLm5iX3BhZ2VzX3JlYWQgPgorICAgICAg ICAgICAoaW50NjRfdClNQVhfT0dHX1BBR0VTX1BFUl9TVFJFQU0gKiAocGFyc2VyLT5uYl9zdHJl YW1zICsgMSk7Cit9CisKKy8qKgorICogVGhlIG9ubHkgd2F5IHRoZSBwYXJzZXIgcmVhZHMgYSBw YWdlLiBVbmxpa2UgdGhlIGRlbXV4ZXIsIHdoaWNoIHJlYWRzCisgKiBmb3J3YXJkIGZyb20gYSBr bm93biBnb29kIHBhZ2UsIGEgYmlzZWN0aW9uIGxhbmRzIG9uIGFyYml0cmFyeSBvZmZzZXRzLAor ICogd2hlcmUgYSBjYXB0dXJlIHBhdHRlcm4gaW5zaWRlIHBhY2tldCBwYXlsb2FkIGlzIGEgcmVh bCBwb3NzaWJpbGl0eSwgc28KKyAqIGV2ZXJ5IHBhZ2UgaXMgY2hlY2tzdW1tZWQgYmVmb3JlIGl0 IGlzIGJlbGlldmVkLgorICovCitzdGF0aWMgaW50IG9nZ19yZWFkX3BhZ2UoT2dnUGFyc2VyICpw YXJzZXIsIE9nZ1BhZ2UgKnBhZ2UpCit7CisgICAgQVZGb3JtYXRDb250ZXh0ICpzID0gcGFyc2Vy LT5zOworICAgIGludCBmYWxzZV9zeW5jcyA9IDA7CisgICAgaW50IHJldDsKKworICAgIHdoaWxl ICgxKSB7CisgICAgICAgIGlmIChvZ2dfYnVkZ2V0X2V4aGF1c3RlZChwYXJzZXIpKSB7CisgICAg ICAgICAgICBwYXJzZXItPnN0YXRzLnRydW5jYXRlZCA9IDE7CisgICAgICAgICAgICByZXR1cm4g QVZFUlJPUl9FT0Y7CisgICAgICAgIH0KKworICAgICAgICByZXQgPSBmZl9vZ2dfc3luY19wYWdl KHMsIHBhZ2UsIE5VTEwpOworICAgICAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgICAgIHJldHVy biByZXQ7CisKKyAgICAgICAgcGFyc2VyLT5zdGF0cy5uYl9wYWdlc19yZWFkKys7CisKKyAgICAg ICAgcmV0ID0gZmZfb2dnX3ZlcmlmeV9wYWdlKHMsIHBhZ2UpOworICAgICAgICBpZiAocmV0ID49 IDApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKHJldCAhPSBBVkVSUk9SX0lOVkFM SUREQVRBKQorICAgICAgICAgICAgcmV0dXJuIHJldDsKKworICAgICAgICBpZiAoKytmYWxzZV9z eW5jcyA+IE1BWF9PR0dfRkFMU0VfU1lOQ1MpCisgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9J TlZBTElEREFUQTsKKworICAgICAgICAvKiBSZXN1bWUgdGhlIHNlYXJjaCBqdXN0IHBhc3QgdGhl IGNhcHR1cmUgcGF0dGVybiB0aGF0IG1pc2ZpcmVkLiAqLworICAgICAgICByZXQgPSBvZ2dfcGFy c2VyX3NlZWsocGFyc2VyLCBwYWdlLT5zdGFydF9wb3MpOworICAgICAgICBpZiAocmV0IDwgMCkK KyAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorCisgICAgcmV0dXJuIG9nZ19vYnNlcnZl X3BhZ2UocGFyc2VyLCBwYWdlKTsKK30KKworLyoqIFJlYWQgdGhlIHJ1biBvZiBCT1MgcGFnZXMg YXQgYSBsaW5rJ3MgaGVhZCBhbmQgZ3JvdXAgd2hhdCB0aGV5IG9wZW4uICovCitzdGF0aWMgaW50 IG9nZ19zY2FuX2xpbmtfaGVhZGVyKE9nZ1BhcnNlciAqcGFyc2VyLCBpbnQ2NF90IG9mZnNldCkK K3sKKyAgICBpbnQgbGlua19pbmRleCA9IHBhcnNlci0+bmJfbGlua3M7CisgICAgaW50IG5iX2Jv cyA9IDA7CisgICAgT2dnUGFnZSBwYWdlOworICAgIGludCByZXQ7CisKKyAgICByZXQgPSBvZ2df cGFyc2VyX3NlZWsocGFyc2VyLCBvZmZzZXQpOworICAgIGlmIChyZXQgPCAwKQorICAgICAgICBy ZXR1cm4gcmV0OworCisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgT2dnU3RyZWFtU3RhdGUgKnN0 OworCisgICAgICAgIHJldCA9IG9nZ19yZWFkX3BhZ2UocGFyc2VyLCAmcGFnZSk7CisgICAgICAg IGlmIChyZXQgPT0gQVZFUlJPUl9FT0YgfHwgcmV0ID09IEFWRVJST1JfSU5WQUxJRERBVEEpCisg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKHJldCA8IDApCisgICAgICAgICAgICByZXR1 cm4gcmV0OworCisgICAgICAgIGlmICghKHBhZ2UuZmxhZ3MgJiBPR0dfRkxBR19CT1MpKQorICAg ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgc3QgPSBvZ2dfcGFyc2VyX2ZpbmRfc3RyZWFtKHBh cnNlciwgcGFnZS5zZXJpYWwpOworICAgICAgICBpZiAoc3QgJiYgc3QtPmxpbmtfaW5kZXggPCAw KSB7CisgICAgICAgICAgICBzdC0+bGlua19pbmRleCA9IGxpbmtfaW5kZXg7CisgICAgICAgICAg ICBuYl9ib3MrKzsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChuYl9ib3MpCisgICAgICAg IHBhcnNlci0+bmJfbGlua3MrKzsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IG9n Z19kcmFpbl9wZW5kaW5nX2xpbmtzKE9nZ1BhcnNlciAqcGFyc2VyKQoreworICAgIHdoaWxlIChw YXJzZXItPm5iX3NjYW5uZWRfbGlua3MgPCBwYXJzZXItPm5iX2xpbmtfb2Zmc2V0cykgeworICAg ICAgICBpbnQ2NF90IG9mZnNldCA9IHBhcnNlci0+bGlua19vZmZzZXRzW3BhcnNlci0+bmJfc2Nh bm5lZF9saW5rcysrXTsKKyAgICAgICAgaW50IHJldCA9IG9nZ19zY2FuX2xpbmtfaGVhZGVyKHBh cnNlciwgb2Zmc2V0KTsKKyAgICAgICAgaWYgKHJldCA8IDApCisgICAgICAgICAgICByZXR1cm4g cmV0OworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisvKiogV2hpY2ggc2lkZSBvZiBzdCdz IEVPUyBwYWdlIGEgcHJvYmUgbGFuZGVkIG9uLCBmcm9tIHRoYXQgcGFnZSBhbG9uZS4gKi8KK3N0 YXRpYyBlbnVtIE9nZ1ZlcmRpY3Qgb2dnX2NsYXNzaWZ5X3BhZ2UoT2dnUGFyc2VyICpwYXJzZXIs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE9nZ1N0cmVh bVN0YXRlICpzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgT2dnUGFnZSAqcGFnZSkKK3sKKyAgICBjb25zdCBPZ2dTdHJlYW1TdGF0ZSAqb3RoZXI7CisK KyAgICBpZiAocGFnZS0+c2VyaWFsID09IHN0LT5zZXJpYWwpCisgICAgICAgIHJldHVybiBPR0df VkVSRElDVF9CRUZPUkVfRU9TOworCisgICAgLyogQSBzZXJpYWwgYmVsb25naW5nIHRvIGFub3Ro ZXIgbGluayBtZWFucyB0aGlzIGxpbmsgaXMgYWxyZWFkeSBvdmVyLgorICAgICAqIEEgc2VyaWFs IHRoYXQgaXMgc3RpbGwgdW5rbm93biBoZXJlIGNhbiBvbmx5IGJlbG9uZyB0byBhIGxpbmsgd2hv c2UKKyAgICAgKiBoZWFkZXIgaGFzIG5vdCBiZWVuIHJlYWQgeWV0LCB3aGljaCBpcyBsaWtld2lz ZSBhIGxhdGVyIG9uZS4gKi8KKyAgICBvdGhlciA9IG9nZ19wYXJzZXJfZmluZF9zdHJlYW0ocGFy c2VyLCBwYWdlLT5zZXJpYWwpOworICAgIGlmICghb3RoZXIgfHwgb3RoZXItPmxpbmtfaW5kZXgg IT0gc3QtPmxpbmtfaW5kZXgpCisgICAgICAgIHJldHVybiBPR0dfVkVSRElDVF9BRlRFUl9FT1M7 CisKKyAgICAvKiBBIHNpYmxpbmcgb2YgdGhlIHNhbWUgbGluay4gQml0c3RyZWFtcyB3aXRoaW4g YSBsaW5rIGRvIG5vdCBlbmQgYXQgdGhlCisgICAgICogc2FtZSBvZmZzZXQsIHNvIHRoaXMgc2F5 cyBub3RoaW5nIG9uIGl0cyBvd24uICovCisgICAgcmV0dXJuIE9HR19WRVJESUNUX1VOS05PV047 Cit9CisKKy8qKiBTZXR0bGUgYW4gYW1iaWd1b3VzIHNpYmxpbmcgcGFnZSBieSByZWFkaW5nIGZv cndhcmQuICovCitzdGF0aWMgaW50IG9nZ19yZXNvbHZlX3NpYmxpbmcoT2dnUGFyc2VyICpwYXJz ZXIsIGNvbnN0IE9nZ1N0cmVhbVN0YXRlICpzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBPZ2dQYWdlICpwYWdlLCBlbnVtIE9nZ1ZlcmRpY3QgKnZlcmRpY3QpCit7CisgICAgaW50 IHJldDsKKworICAgIHJldCA9IG9nZ19wYXJzZXJfc2VlayhwYXJzZXIsIHBhZ2UtPnBhZ2VfcG9z ICsgcGFnZS0+cGFnZV9zaXplKTsKKyAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgcmV0dXJuIHJl dDsKKworICAgIHdoaWxlICgxKSB7CisgICAgICAgIHJldCA9IG9nZ19yZWFkX3BhZ2UocGFyc2Vy LCBwYWdlKTsKKyAgICAgICAgaWYgKHJldCA9PSBBVkVSUk9SX0VPRiB8fCByZXQgPT0gQVZFUlJP Ul9JTlZBTElEREFUQSkgeworICAgICAgICAgICAgKnZlcmRpY3QgPSBPR0dfVkVSRElDVF9BRlRF Ul9FT1M7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBpZiAocmV0 IDwgMCkKKyAgICAgICAgICAgIHJldHVybiByZXQ7CisKKyAgICAgICAgLyogUGFzdCBldmVyeXRo aW5nIHRoaXMgc3RyZWFtIGNvdWxkIHN0aWxsIG93bi4gKi8KKyAgICAgICAgaWYgKHBhZ2UtPnBh Z2VfcG9zID4gc3QtPmVvc191cHBlcikgeworICAgICAgICAgICAgKnZlcmRpY3QgPSBPR0dfVkVS RElDVF9BRlRFUl9FT1M7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAg ICAgIGlmIChwYWdlLT5zZXJpYWwgPT0gc3QtPnNlcmlhbCkgeworICAgICAgICAgICAgKnZlcmRp Y3QgPSBPR0dfVkVSRElDVF9CRUZPUkVfRU9TOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg ICAgIH0KKworICAgICAgICBpZiAocGFnZS0+ZmxhZ3MgJiBPR0dfRkxBR19CT1MpIHsKKyAgICAg ICAgICAgICp2ZXJkaWN0ID0gT0dHX1ZFUkRJQ1RfQUZURVJfRU9TOworICAgICAgICAgICAgcmV0 dXJuIDA7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8qKiBHaXZlIHVwIG9uIGFuIEVPUyBwYWdl OyByZXBvcnQgdGhlIGZ1cnRoZXN0IHBhZ2Ugc2VlbiBhcyB0aGUgbGFzdC4gKi8KK3N0YXRpYyBp bnQgb2dnX21hcmtfbm9fZW9zKE9nZ1BhcnNlciAqcGFyc2VyLCBPZ2dTdHJlYW1TdGF0ZSAqc3Qp Cit7CisgICAgT2dnUGFnZSBwYWdlOworICAgIGludCByZXQ7CisKKyAgICBzdC0+bm9fZW9zICAg ID0gMTsKKyAgICBzdC0+Y29tcGxldGUgID0gMTsKKyAgICBzdC0+ZW9zX3VwcGVyID0gc3QtPmVv c19sb3dlcjsKKworICAgIGlmIChzdC0+aGF2ZV9sYXN0X3BhZ2UgfHwgc3QtPmxhc3RfcGFnZV9w b3MgPD0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXQgPSBvZ2dfcGFyc2VyX3NlZWso cGFyc2VyLCBzdC0+bGFzdF9wYWdlX3Bvcyk7CisgICAgaWYgKHJldCA8IDApCisgICAgICAgIHJl dHVybiByZXQ7CisKKyAgICByZXQgPSBvZ2dfcmVhZF9wYWdlKHBhcnNlciwgJnBhZ2UpOworICAg IGlmIChyZXQgPCAwKQorICAgICAgICByZXR1cm4gcmV0ID09IEFWRVJST1JfRU9GIHx8IHJldCA9 PSBBVkVSUk9SX0lOVkFMSUREQVRBID8gMCA6IHJldDsKKworICAgIGlmICghc3QtPmhhdmVfbGFz dF9wYWdlICYmIHBhZ2Uuc2VyaWFsID09IHN0LT5zZXJpYWwpIHsKKyAgICAgICAgc3QtPmxhc3Rf cGFnZSAgICAgID0gcGFnZTsKKyAgICAgICAgc3QtPmhhdmVfbGFzdF9wYWdlID0gMTsKKyAgICB9 CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBvZ2dfbG93ZXJfZW9zX3VwcGVyKE9n Z1BhcnNlciAqcGFyc2VyLCBPZ2dTdHJlYW1TdGF0ZSAqc3QsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50NjRfdCBwb3MpCit7CisgICAgLyogT25seSBhIG1hbGZvcm1lZCBmaWxl IGNhbiBwbGFjZSB0aGUgdXBwZXIgYm91bmQgYmVsb3cgdGhlIGxvd2VyIG9uZS4KKyAgICAgKiBT dG9wIHJhdGhlciB0aGFuIGJpc2VjdCBhbiBlbXB0eSByYW5nZSBmb3JldmVyLiAqLworICAgIGlm IChwb3MgPCBzdC0+ZW9zX2xvd2VyKQorICAgICAgICByZXR1cm4gb2dnX21hcmtfbm9fZW9zKHBh cnNlciwgc3QpOworCisgICAgc3QtPmVvc191cHBlciA9IHBvczsKKworICAgIHJldHVybiAwOwor fQorCisvKiogV2FsayB0aGUgbGFzdCBmZXcgcGFnZXMgb2YgYSBzdHJlYW0gb25jZSBiaXNlY3Rp bmcgaXMgbm8gbG9uZ2VyIHdvcnRoIGl0LiAqLworc3RhdGljIGludCBvZ2dfc2Nhbl90b19lb3Mo T2dnUGFyc2VyICpwYXJzZXIsIE9nZ1N0cmVhbVN0YXRlICpzdCkKK3sKKyAgICBPZ2dQYWdlIHBh Z2U7CisgICAgaW50IHJldDsKKworICAgIHJldCA9IG9nZ19wYXJzZXJfc2VlayhwYXJzZXIsIHN0 LT5lb3NfbG93ZXIpOworICAgIGlmIChyZXQgPCAwKQorICAgICAgICByZXR1cm4gcmV0OworCisg ICAgd2hpbGUgKCFzdC0+Y29tcGxldGUpIHsKKyAgICAgICAgcmV0ID0gb2dnX3JlYWRfcGFnZShw YXJzZXIsICZwYWdlKTsKKyAgICAgICAgaWYgKHJldCA9PSBBVkVSUk9SX0VPRiB8fCByZXQgPT0g QVZFUlJPUl9JTlZBTElEREFUQSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAocmV0 IDwgMCkKKyAgICAgICAgICAgIHJldHVybiByZXQ7CisKKyAgICAgICAgaWYgKHBhZ2UucGFnZV9w b3MgPiBzdC0+ZW9zX3VwcGVyKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYg KCFzdC0+Y29tcGxldGUpCisgICAgICAgIHJldHVybiBvZ2dfbWFya19ub19lb3MocGFyc2VyLCBz dCk7CisKKyAgICByZXR1cm4gMDsKK30KKworLyoqCisgKiBIYWx2ZSB0aGUgaW50ZXJ2YWwgdGhl IEVPUyBwYWdlIGxpZXMgaW4uIEVpdGhlciBib3VuZCBvbmx5IG1vdmVzIGlud2FyZHMKKyAqIGFu ZCB0aGUgcHJvYmUgc2l0cyBzdHJpY3RseSBpbnNpZGUsIHNvIHRoZSBpbnRlcnZhbCBhbHdheXMg c2hyaW5rcy4KKyAqLworc3RhdGljIGludCBvZ2dfYmlzZWN0X3N0ZXAoT2dnUGFyc2VyICpwYXJz ZXIsIE9nZ1N0cmVhbVN0YXRlICpzdCkKK3sKKyAgICBlbnVtIE9nZ1ZlcmRpY3QgdmVyZGljdDsK KyAgICBpbnQ2NF90IHByb2JlX3BvcywgcmFuZ2U7CisgICAgT2dnUGFnZSBwYWdlOworICAgIGlu dCByZXQ7CisKKyAgICByYW5nZSA9IHN0LT5lb3NfdXBwZXIgLSBzdC0+ZW9zX2xvd2VyOworICAg IGlmIChyYW5nZSA8IE1JTl9PR0dfU0VBUkNIX1JBTkdFKQorICAgICAgICByZXR1cm4gb2dnX3Nj YW5fdG9fZW9zKHBhcnNlciwgc3QpOworCisgICAgcHJvYmVfcG9zID0gc3QtPmVvc19sb3dlciAr IHJhbmdlIC8gMjsKKworICAgIHJldCA9IG9nZ19wYXJzZXJfc2VlayhwYXJzZXIsIHByb2JlX3Bv cyk7CisgICAgaWYgKHJldCA8IDApCisgICAgICAgIHJldHVybiByZXQ7CisKKyAgICBwYXJzZXIt PnN0YXRzLm5iX2Jpc2VjdF9zdGVwcysrOworCisgICAgcmV0ID0gb2dnX3JlYWRfcGFnZShwYXJz ZXIsICZwYWdlKTsKKyAgICBpZiAocmV0ID09IEFWRVJST1JfRU9GIHx8IHJldCA9PSBBVkVSUk9S X0lOVkFMSUREQVRBKQorICAgICAgICByZXR1cm4gb2dnX2xvd2VyX2Vvc191cHBlcihwYXJzZXIs IHN0LCBwcm9iZV9wb3MpOworICAgIGlmIChyZXQgPCAwKQorICAgICAgICByZXR1cm4gcmV0Owor CisgICAgdmVyZGljdCA9IG9nZ19jbGFzc2lmeV9wYWdlKHBhcnNlciwgc3QsICZwYWdlKTsKKyAg ICBpZiAodmVyZGljdCA9PSBPR0dfVkVSRElDVF9VTktOT1dOKSB7CisgICAgICAgIHJldCA9IG9n Z19yZXNvbHZlX3NpYmxpbmcocGFyc2VyLCBzdCwgJnBhZ2UsICZ2ZXJkaWN0KTsKKyAgICAgICAg aWYgKHJldCA8IDApCisgICAgICAgICAgICByZXR1cm4gcmV0OworICAgIH0KKworICAgIGlmICh2 ZXJkaWN0ID09IE9HR19WRVJESUNUX0FGVEVSX0VPUykKKyAgICAgICAgcmV0dXJuIG9nZ19sb3dl cl9lb3NfdXBwZXIocGFyc2VyLCBzdCwgcHJvYmVfcG9zKTsKKworICAgIC8qIEJlZm9yZSB0aGUg RU9TIHBhZ2U6IG9nZ19vYnNlcnZlX3BhZ2UoKSBoYXMgYWxyZWFkeSByYWlzZWQgdGhlIGxvd2Vy CisgICAgICogYm91bmQgcGFzdCB3aGljaGV2ZXIgcGFnZSBwcm92ZWQgaXQuICovCisgICAgcmV0 dXJuIDA7Cit9CisKKy8qKgorICogQWR2YW5jZSBldmVyeSBzdHJlYW0gd2hvc2UgbGluayBpcyBr bm93bi4gUmV0dXJucyAxIGlmIGFueXRoaW5nIG1vdmVkLCBzbworICogdGhlIGNhbGxlciBjYW4g dGVsbCBhIHNldHRsZWQgY2hhaW4gZnJvbSBvbmUgc3RpbGwgYmVpbmcgZGlzY292ZXJlZC4KKyAq Lworc3RhdGljIGludCBvZ2dfcmVzb2x2ZV9zdHJlYW1zKE9nZ1BhcnNlciAqcGFyc2VyKQorewor ICAgIGludCBkaWRfd29yayA9IDA7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHBhcnNlci0+ bmJfc3RyZWFtczsgaSsrKSB7CisgICAgICAgIE9nZ1N0cmVhbVN0YXRlICpzdCA9IHBhcnNlci0+ c3RyZWFtc1tpXTsKKworICAgICAgICAvKiBTZWVuIGluIHBhc3NpbmcgYnV0IGl0cyBsaW5rIGhl YWRlciBoYXMgbm90IGJlZW4gcmVhZCB5ZXQ7IGl0IHdpbGwKKyAgICAgICAgICogYmUgcGlja2Vk IHVwIG9uY2UgdGhlIHdvcmtsaXN0IHJlYWNoZXMgaXQuICovCisgICAgICAgIGlmIChzdC0+bGlu a19pbmRleCA8IDApCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICB3aGlsZSAoIXN0 LT5jb21wbGV0ZSkgeworICAgICAgICAgICAgaW50NjRfdCByYW5nZSA9IHN0LT5lb3NfdXBwZXIg LSBzdC0+ZW9zX2xvd2VyOworICAgICAgICAgICAgaW50IHJldCA9IG9nZ19iaXNlY3Rfc3RlcChw YXJzZXIsIHN0KTsKKyAgICAgICAgICAgIGlmIChyZXQgPCAwKQorICAgICAgICAgICAgICAgIHJl dHVybiByZXQ7CisKKyAgICAgICAgICAgIGRpZF93b3JrID0gMTsKKworICAgICAgICAgICAgLyog RXZlcnkgc3RlcCBpcyBtZWFudCB0byBzaHJpbmsgdGhlIGludGVydmFsLiBJZiBvbmUgZXZlciBm YWlscworICAgICAgICAgICAgICogdG8sIHRoZSBmaWxlIGlzIGNvbnRyYWRpY3RpbmcgaXRzZWxm OyBzdG9wIGluc3RlYWQgb2Ygc3Bpbm5pbmcKKyAgICAgICAgICAgICAqIG9uIGl0LiAqLworICAg ICAgICAgICAgaWYgKCFzdC0+Y29tcGxldGUgJiYgc3QtPmVvc191cHBlciAtIHN0LT5lb3NfbG93 ZXIgPj0gcmFuZ2UpIHsKKyAgICAgICAgICAgICAgICByZXQgPSBvZ2dfbWFya19ub19lb3MocGFy c2VyLCBzdCk7CisgICAgICAgICAgICAgICAgaWYgKHJldCA8IDApCisgICAgICAgICAgICAgICAg ICAgIHJldHVybiByZXQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBy ZXR1cm4gZGlkX3dvcms7Cit9CisKKy8qKgorICogUmVhZCB0aGUgdGFpbCBvZiB0aGUgZmlsZS4g T24gYW4gdW5jaGFpbmVkIG9uZSB0aGlzIHBpbnMgZXZlcnkgYm91bmQgYXQKKyAqIG9uY2UgYW5k IG5vIGJpc2VjdGlvbiBpcyBuZWVkZWQuIE9uIGEgY2hhaW5lZCBvbmUgdGhlIHRhaWwgYmVsb25n cyB0byB0aGUKKyAqIGxhc3QgbGluaywgc28gc3RvcCBhdCB0aGUgZmlyc3QgZm9yZWlnbiBwYWdl OyB3aGF0IHdhcyBzZWVuIG9uIHRoZSB3YXkgaXMKKyAqIHJlY29yZGVkIGFuZCBwYXlzIG9mZiB3 aGVuIHRoYXQgbGluayBpcyByZWFjaGVkLgorICovCitzdGF0aWMgaW50IG9nZ19wcm9iZV90YWls KE9nZ1BhcnNlciAqcGFyc2VyKQoreworICAgIE9nZ1BhZ2UgcGFnZTsKKyAgICBpbnQgcmV0Owor CisgICAgcmV0ID0gb2dnX3BhcnNlcl9zZWVrKHBhcnNlciwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgRkZNQVgocGFyc2VyLT5maWxlX3NpemUgLSBNQVhfT0dHX1BBR0VfU0laRSwgMCkpOwor ICAgIGlmIChyZXQgPCAwKQorICAgICAgICByZXR1cm4gcmV0OworCisgICAgd2hpbGUgKDEpIHsK KyAgICAgICAgY29uc3QgT2dnU3RyZWFtU3RhdGUgKnN0OworCisgICAgICAgIHJldCA9IG9nZ19y ZWFkX3BhZ2UocGFyc2VyLCAmcGFnZSk7CisgICAgICAgIGlmIChyZXQgPT0gQVZFUlJPUl9FT0Yg fHwgcmV0ID09IEFWRVJST1JfSU5WQUxJRERBVEEpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAg ICAgICAgaWYgKHJldCA8IDApCisgICAgICAgICAgICByZXR1cm4gcmV0OworCisgICAgICAgIHN0 ID0gb2dnX3BhcnNlcl9maW5kX3N0cmVhbShwYXJzZXIsIHBhZ2Uuc2VyaWFsKTsKKyAgICAgICAg aWYgKCFzdCB8fCBzdC0+bGlua19pbmRleCAhPSAwKQorICAgICAgICAgICAgcmV0dXJuIDA7Cisg ICAgfQorfQorCisvKioKKyAqIFJlbnVtYmVyIHRoZSBsaW5rcyBpbnRvIGZpbGUgb3JkZXIuIEEg bGluayBpcyBmb3VuZCB3aGVuIHRoZSBFT1MgcGFnZSBpbgorICogZnJvbnQgb2YgaXQgdHVybnMg dXAsIHdoaWNoIGlzIG5vdCB0aGUgb3JkZXIgdGhleSBhcHBlYXIgaW4sIGFuZCBjYWxsZXJzIC0K KyAqIGFueXRoaW5nIGJ1aWxkaW5nIGEgdGltZWxpbmUgZXNwZWNpYWxseSAtIGRlcGVuZCBvbiB0 aGF0IG9yZGVyLgorICovCitzdGF0aWMgaW50IG9nZ19vcmRlcl9saW5rcyhPZ2dQYXJzZXIgKnBh cnNlcikKK3sKKyAgICBpbnQ2NF90ICpwb3M7CisgICAgaW50ICpyYW5rOworICAgIGludCByZXQg PSAwOworCisgICAgaWYgKHBhcnNlci0+bmJfbGlua3MgPCAyKQorICAgICAgICByZXR1cm4gMDsK KworICAgIHBvcyAgPSBhdl9tYWxsb2NfYXJyYXkocGFyc2VyLT5uYl9saW5rcywgc2l6ZW9mKCpw b3MpKTsKKyAgICByYW5rID0gYXZfbWFsbG9jX2FycmF5KHBhcnNlci0+bmJfbGlua3MsIHNpemVv ZigqcmFuaykpOworICAgIGlmICghcG9zIHx8ICFyYW5rKSB7CisgICAgICAgIHJldCA9IEFWRVJS T1IoRU5PTUVNKTsKKyAgICAgICAgZ290byBlbmQ7CisgICAgfQorCisgICAgZm9yIChpbnQgaSA9 IDA7IGkgPCBwYXJzZXItPm5iX2xpbmtzOyBpKyspCisgICAgICAgIHBvc1tpXSA9IElOVDY0X01B WDsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGFyc2VyLT5uYl9zdHJlYW1zOyBpKyspIHsK KyAgICAgICAgY29uc3QgT2dnU3RyZWFtU3RhdGUgKnN0ID0gcGFyc2VyLT5zdHJlYW1zW2ldOwor CisgICAgICAgIGlmIChzdC0+bGlua19pbmRleCA+PSAwICYmIHN0LT5oYXZlX2ZpcnN0X3BhZ2Up CisgICAgICAgICAgICBwb3Nbc3QtPmxpbmtfaW5kZXhdID0gRkZNSU4ocG9zW3N0LT5saW5rX2lu ZGV4XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdC0+Zmlyc3Rf cGFnZS5wYWdlX3Bvcyk7CisgICAgfQorCisgICAgLyogUmFuayBlYWNoIGxpbmsgYnkgaG93IG1h bnkgYmVnaW4gYmVmb3JlIGl0LCB0aWVzIGJyb2tlbiBieSB0aGUgb3JkZXIKKyAgICAgKiB0aGV5 IHdlcmUgZm91bmQgc28gdGhhdCB0aGUgcmVzdWx0IGlzIGEgdG90YWwgb3JkZXIuICovCisgICAg Zm9yIChpbnQgaSA9IDA7IGkgPCBwYXJzZXItPm5iX2xpbmtzOyBpKyspIHsKKyAgICAgICAgcmFu a1tpXSA9IDA7CisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgcGFyc2VyLT5uYl9saW5rczsg aisrKQorICAgICAgICAgICAgaWYgKHBvc1tqXSA8IHBvc1tpXSB8fCAocG9zW2pdID09IHBvc1tp XSAmJiBqIDwgaSkpCisgICAgICAgICAgICAgICAgcmFua1tpXSsrOworICAgIH0KKworICAgIGZv ciAoaW50IGkgPSAwOyBpIDwgcGFyc2VyLT5uYl9zdHJlYW1zOyBpKyspIHsKKyAgICAgICAgT2dn U3RyZWFtU3RhdGUgKnN0ID0gcGFyc2VyLT5zdHJlYW1zW2ldOworCisgICAgICAgIGlmIChzdC0+ bGlua19pbmRleCA+PSAwKQorICAgICAgICAgICAgc3QtPmxpbmtfaW5kZXggPSByYW5rW3N0LT5s aW5rX2luZGV4XTsKKyAgICB9CisKK2VuZDoKKyAgICBhdl9mcmVlKHBvcyk7CisgICAgYXZfZnJl ZShyYW5rKTsKKworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgb2dnX2J1aWxkX2No YWluKE9nZ1BhcnNlciAqcGFyc2VyLCBPZ2dDaGFpbiAqKm91dCkKK3sKKyAgICBPZ2dDaGFpbiAq Y2hhaW47CisgICAgaW50IHJldDsKKworICAgIGNoYWluID0gYXZfbWFsbG9jeihzaXplb2YoKmNo YWluKSk7CisgICAgaWYgKCFjaGFpbikKKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsK KworICAgIGNoYWluLT5saW5rcyA9IGF2X2NhbGxvYyhwYXJzZXItPm5iX2xpbmtzLCBzaXplb2Yo KmNoYWluLT5saW5rcykpOworICAgIGlmICghY2hhaW4tPmxpbmtzKSB7CisgICAgICAgIHJldCA9 IEFWRVJST1IoRU5PTUVNKTsKKyAgICAgICAgZ290byBmYWlsOworICAgIH0KKworICAgIGZvciAo aW50IGkgPSAwOyBpIDwgcGFyc2VyLT5uYl9saW5rczsgaSsrKSB7CisgICAgICAgIGNoYWluLT5s aW5rc1tpXSA9IGF2X21hbGxvY3ooc2l6ZW9mKCoqY2hhaW4tPmxpbmtzKSk7CisgICAgICAgIGlm ICghY2hhaW4tPmxpbmtzW2ldKSB7CisgICAgICAgICAgICByZXQgPSBBVkVSUk9SKEVOT01FTSk7 CisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIH0KKyAgICAgICAgY2hhaW4tPm5iX2xp bmtzKys7CisgICAgfQorCisgICAgLyogU3RyZWFtcyBhcmUgZGlzY292ZXJlZCBpbiBmaWxlIG9y ZGVyLCBzbyBhcHBlbmRpbmcgdGhlbSBpbiB0aGF0IG9yZGVyCisgICAgICoga2VlcHMgZWFjaCBs aW5rJ3MgYml0c3RyZWFtcyBpbiB0aGUgb3JkZXIgdGhlaXIgQk9TIHBhZ2VzIGFwcGVhci4gKi8K KyAgICBmb3IgKGludCBpID0gMDsgaSA8IHBhcnNlci0+bmJfc3RyZWFtczsgaSsrKSB7CisgICAg ICAgIGNvbnN0IE9nZ1N0cmVhbVN0YXRlICpzdCA9IHBhcnNlci0+c3RyZWFtc1tpXTsKKyAgICAg ICAgT2dnU3RyZWFtICoqdG1wLCAqc3RyZWFtOworICAgICAgICBPZ2dMaW5rICpsaW5rOworCisg ICAgICAgIGlmIChzdC0+bGlua19pbmRleCA8IDApCisgICAgICAgICAgICBjb250aW51ZTsKKwor ICAgICAgICBsaW5rID0gY2hhaW4tPmxpbmtzW3N0LT5saW5rX2luZGV4XTsKKworICAgICAgICBz dHJlYW0gPSBhdl9tYWxsb2N6KHNpemVvZigqc3RyZWFtKSk7CisgICAgICAgIGlmICghc3RyZWFt KSB7CisgICAgICAgICAgICByZXQgPSBBVkVSUk9SKEVOT01FTSk7CisgICAgICAgICAgICBnb3Rv IGZhaWw7CisgICAgICAgIH0KKworICAgICAgICBzdHJlYW0tPnNlcmlhbCAgICAgPSBzdC0+c2Vy aWFsOworICAgICAgICBzdHJlYW0tPmZpcnN0X3BhZ2UgPSBzdC0+Zmlyc3RfcGFnZTsKKyAgICAg ICAgc3RyZWFtLT5sYXN0X3BhZ2UgID0gc3QtPmxhc3RfcGFnZTsKKyAgICAgICAgc3RyZWFtLT5u b19lb3MgICAgID0gc3QtPm5vX2VvczsKKworICAgICAgICB0bXAgPSBhdl9yZWFsbG9jX2FycmF5 KGxpbmstPnN0cmVhbXMsIGxpbmstPm5iX3N0cmVhbXMgKyAxLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNpemVvZigqbGluay0+c3RyZWFtcykpOworICAgICAgICBpZiAoIXRtcCkg eworICAgICAgICAgICAgYXZfZnJlZShzdHJlYW0pOworICAgICAgICAgICAgcmV0ID0gQVZFUlJP UihFTk9NRU0pOworICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CisKKyAgICAgICAg bGluay0+c3RyZWFtcyA9IHRtcDsKKyAgICAgICAgbGluay0+c3RyZWFtc1tsaW5rLT5uYl9zdHJl YW1zKytdID0gc3RyZWFtOworICAgIH0KKworICAgICpvdXQgPSBjaGFpbjsKKworICAgIHJldHVy biAwOworCitmYWlsOgorICAgIGZmX29nZ19mcmVlX2NoYWluKCZjaGFpbik7CisgICAgcmV0dXJu IHJldDsKK30KKworc3RhdGljIHZvaWQgb2dnX3BhcnNlcl91bmluaXQoT2dnUGFyc2VyICpwYXJz ZXIpCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYXJzZXItPm5iX3N0cmVhbXM7IGkrKykK KyAgICAgICAgYXZfZnJlZShwYXJzZXItPnN0cmVhbXNbaV0pOworCisgICAgYXZfZnJlZXAoJnBh cnNlci0+c3RyZWFtcyk7CisgICAgYXZfZnJlZXAoJnBhcnNlci0+bGlua19vZmZzZXRzKTsKKyAg ICBwYXJzZXItPm5iX3N0cmVhbXMgPSAwOworfQorCit2b2lkIGZmX29nZ19mcmVlX2NoYWluKE9n Z0NoYWluICoqcGNoYWluKQoreworICAgIE9nZ0NoYWluICpjaGFpbiA9ICpwY2hhaW47CisKKyAg ICBpZiAoIWNoYWluKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8 IGNoYWluLT5uYl9saW5rczsgaSsrKSB7CisgICAgICAgIE9nZ0xpbmsgKmxpbmsgPSBjaGFpbi0+ bGlua3NbaV07CisKKyAgICAgICAgaWYgKCFsaW5rKQorICAgICAgICAgICAgY29udGludWU7CisK KyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBsaW5rLT5uYl9zdHJlYW1zOyBqKyspCisgICAg ICAgICAgICBhdl9mcmVlKGxpbmstPnN0cmVhbXNbal0pOworCisgICAgICAgIGF2X2ZyZWUobGlu ay0+c3RyZWFtcyk7CisgICAgICAgIGF2X2ZyZWUobGluayk7CisgICAgfQorCisgICAgYXZfZnJl ZShjaGFpbi0+bGlua3MpOworICAgIGF2X2ZyZWVwKHBjaGFpbik7Cit9CisKK2ludCBmZl9vZ2df cGFyc2VfY2hhaW4oQVZGb3JtYXRDb250ZXh0ICpzLCBPZ2dDaGFpbiAqKmNoYWluLAorICAgICAg ICAgICAgICAgICAgICAgICBPZ2dQYXJzZXJTdGF0cyAqc3RhdHMpCit7CisgICAgT2dnUGFyc2Vy IHBhcnNlciA9IHsgMCB9OworICAgIGludDY0X3QgcmVzdG9yZV9wb3M7CisgICAgaW50IHJldDsK KworICAgIGlmICghY2hhaW4gfHwgKmNoYWluKQorICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5W QUwpOworCisgICAgaWYgKCEocy0+cGItPnNlZWthYmxlICYgQVZJT19TRUVLQUJMRV9OT1JNQUwp KQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9TWVMpOworCisgICAgcGFyc2VyLmZpbGVfc2l6 ZSA9IGF2aW9fc2l6ZShzLT5wYik7CisgICAgaWYgKHBhcnNlci5maWxlX3NpemUgPCAwKQorICAg ICAgICByZXR1cm4gQVZFUlJPUihFTk9TWVMpOworCisgICAgcGFyc2VyLnMgICAgPSBzOworICAg IHJlc3RvcmVfcG9zID0gYXZpb190ZWxsKHMtPnBiKTsKKworICAgIHJldCA9IG9nZ19xdWV1ZV9s aW5rKCZwYXJzZXIsIDApOworICAgIGlmIChyZXQgPCAwKQorICAgICAgICBnb3RvIGVuZDsKKwor ICAgIHJldCA9IG9nZ19kcmFpbl9wZW5kaW5nX2xpbmtzKCZwYXJzZXIpOworICAgIGlmIChyZXQg PCAwKQorICAgICAgICBnb3RvIGVuZDsKKworICAgIGlmICghcGFyc2VyLm5iX2xpbmtzKSB7Cisg ICAgICAgIHJldCA9IEFWRVJST1JfU1RSRUFNX05PVF9GT1VORDsKKyAgICAgICAgZ290byBlbmQ7 CisgICAgfQorCisgICAgcmV0ID0gb2dnX3Byb2JlX3RhaWwoJnBhcnNlcik7CisgICAgaWYgKHJl dCA8IDApCisgICAgICAgIGdvdG8gZW5kOworCisgICAgLyogTGlua3MgdHVybiB1cCBhcyB0aGUg RU9TIHBhZ2VzIHRoYXQgcHJlY2VkZSB0aGVtIGFyZSBmb3VuZCwgc28ga2VlcAorICAgICAqIGFs dGVybmF0aW5nIGJldHdlZW4gcmVhZGluZyBuZXdseSBmb3VuZCBsaW5rIGhlYWRlcnMgYW5kIHJl c29sdmluZyB0aGUKKyAgICAgKiBzdHJlYW1zIHRoZXkgb3BlbmVkLCB1bnRpbCBuZWl0aGVyIGhh cyBhbnl0aGluZyBsZWZ0IHRvIGRvLiAqLworICAgIHdoaWxlICgxKSB7CisgICAgICAgIHJldCA9 IG9nZ19kcmFpbl9wZW5kaW5nX2xpbmtzKCZwYXJzZXIpOworICAgICAgICBpZiAocmV0IDwgMCkK KyAgICAgICAgICAgIGdvdG8gZW5kOworCisgICAgICAgIHJldCA9IG9nZ19yZXNvbHZlX3N0cmVh bXMoJnBhcnNlcik7CisgICAgICAgIGlmIChyZXQgPCAwKQorICAgICAgICAgICAgZ290byBlbmQ7 CisKKyAgICAgICAgaWYgKCFyZXQgJiYgcGFyc2VyLm5iX3NjYW5uZWRfbGlua3MgPT0gcGFyc2Vy Lm5iX2xpbmtfb2Zmc2V0cykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldCA9 IG9nZ19vcmRlcl9saW5rcygmcGFyc2VyKTsKKyAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgZ290 byBlbmQ7CisKKyAgICByZXQgPSBvZ2dfYnVpbGRfY2hhaW4oJnBhcnNlciwgY2hhaW4pOworCitl bmQ6CisgICAgYXZpb19zZWVrKHMtPnBiLCByZXN0b3JlX3BvcywgU0VFS19TRVQpOworCisgICAg aWYgKHN0YXRzKQorICAgICAgICAqc3RhdHMgPSBwYXJzZXIuc3RhdHM7CisKKyAgICBvZ2dfcGFy c2VyX3VuaW5pdCgmcGFyc2VyKTsKKworICAgIGlmIChyZXQgPCAwKQorICAgICAgICBmZl9vZ2df ZnJlZV9jaGFpbihjaGFpbik7CisKKyAgICByZXR1cm4gcmV0OworfQpkaWZmIC0tZ2l0IGEvbGli YXZmb3JtYXQvb2dnL2NoYWluLmggYi9saWJhdmZvcm1hdC9vZ2cvY2hhaW4uaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4xMjIxMzJjZjA0Ci0tLSAvZGV2L251bGwKKysr IGIvbGliYXZmb3JtYXQvb2dnL2NoYWluLmgKQEAgLTAsMCArMSw5MSBAQAorLyoqCisgICAgQ29w eXJpZ2h0IChDKSAyMDA1ICBNaWNoYWVsIEFobGJlcmcsIE3DpW5zIFJ1bGxnw6VyZAorICAgIENv cHlyaWdodCAoQykgMjAyNSAgUm9tYWluIEJlYXV4aXMKKworICAgIFBlcm1pc3Npb24gaXMgaGVy ZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uCisgICAgb2J0YWluaW5n IGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24KKyAg ICBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0 CisgICAgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0 cyB0byB1c2UsIGNvcHksCisgICAgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwg c3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzCisgICAgb2YgdGhlIFNvZnR3YXJlLCBhbmQg dG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAgICBmdXJuaXNoZWQg dG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCisgICAgVGhl IGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwg YmUKKyAgICBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9m IHRoZSBTb2Z0d2FyZS4KKworICAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBX SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAorICAgIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5D TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgorICAgIE1FUkNIQU5U QUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECisgICAgTk9OSU5G UklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQKKyAg ICBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJ TElUWSwKKyAgICBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhF UldJU0UsIEFSSVNJTkcgRlJPTSwKKyAgICBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRI RSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisgICAgREVBTElOR1MgSU4gVEhFIFNPRlRX QVJFLgorKiovCisKKyNpZm5kZWYgQVZGT1JNQVRfT0dHX0NIQUlOX0gKKyNkZWZpbmUgQVZGT1JN QVRfT0dHX0NIQUlOX0gKKworI2luY2x1ZGUgPHN0ZGludC5oPgorCisjaW5jbHVkZSAibGliYXZm b3JtYXQvYXZmb3JtYXQuaCIKKyNpbmNsdWRlICJsaWJhdmZvcm1hdC9vZ2cvcGFyc2VyLmgiCisK Ky8qKgorICogQSBsb2dpY2FsIGJpdHN0cmVhbTogZXZlcnkgcGFnZSBzaGFyaW5nIG9uZSBzZXJp YWwgbnVtYmVyLgorICovCit0eXBlZGVmIHN0cnVjdCBPZ2dTdHJlYW0geworICAgIHVpbnQzMl90 IHNlcmlhbDsKKyAgICBPZ2dQYWdlIGZpcnN0X3BhZ2U7ICAgICAvLy88IHRoZSBCT1MgcGFnZQor ICAgIE9nZ1BhZ2UgbGFzdF9wYWdlOyAgICAgIC8vLzwgdGhlIEVPUyBwYWdlLCBvciB0aGUgbGFz dCBwYWdlIHNlZW4gaWYgbm9fZW9zIGlzIHNldAorICAgIGludCBub19lb3M7ICAgICAgICAgICAg IC8vLzwgbm8gRU9TIHBhZ2Ugd2FzIGZvdW5kOyB0aGUgc3RyZWFtIGlzIHRydW5jYXRlZAorfSBP Z2dTdHJlYW07CisKKy8qKgorICogT25lIGxpbmsgb2YgYSBjaGFpbjogdGhlIGxvZ2ljYWwgYml0 c3RyZWFtcyB0aGF0IGJlZ2luIGFuZCBlbmQgdG9nZXRoZXIuCisgKiBDb25jYXRlbmF0aW5nIHR3 byBPZ2cgZmlsZXMgeWllbGRzIGEgY2hhaW4gb2YgdHdvIGxpbmtzLgorICovCit0eXBlZGVmIHN0 cnVjdCBPZ2dMaW5rIHsKKyAgICBPZ2dTdHJlYW0gKipzdHJlYW1zOworICAgIGludCBuYl9zdHJl YW1zOworfSBPZ2dMaW5rOworCisvKioKKyAqIEEgd2hvbGUgY2hhaW46IHRoZSBsaW5rcyBtYWtp bmcgdXAgYSBmaWxlLCBpbiBmaWxlIG9yZGVyLgorICovCit0eXBlZGVmIHN0cnVjdCBPZ2dDaGFp biB7CisgICAgT2dnTGluayAqKmxpbmtzOworICAgIGludCBuYl9saW5rczsKK30gT2dnQ2hhaW47 CisKKy8qKgorICogQWNjb3VudGluZyBmb3IgYSBmZl9vZ2dfcGFyc2VfY2hhaW4oKSBydW4uIE1v c3RseSB1c2VmdWwgdG8gY29uZmlybSB0aGUKKyAqIGJpc2VjdGlvbiBpcyBiZWhhdmluZyBsb2dh cml0aG1pY2FsbHkgcmF0aGVyIHRoYW4gZGVnZW5lcmF0aW5nIGludG8gYSBzY2FuLgorICovCit0 eXBlZGVmIHN0cnVjdCBPZ2dQYXJzZXJTdGF0cyB7CisgICAgaW50NjRfdCBuYl9zZWVrczsKKyAg ICBpbnQ2NF90IG5iX3BhZ2VzX3JlYWQ7CisgICAgaW50NjRfdCBuYl9iaXNlY3Rfc3RlcHM7Cisg ICAgaW50IHRydW5jYXRlZDsgICAgICAgICAgLy8vPCB0aGUgcGFnZSBidWRnZXQgcmFuIG91dDsg dGhlIGNoYWluIGlzIGluY29tcGxldGUKK30gT2dnUGFyc2VyU3RhdHM7CisvKioKKyAqIEVudW1l cmF0ZSB0aGUgbGlua3Mgb2YgYSBjaGFpbmVkIE9nZyBmaWxlLCBhbmQgdGhlIGxvZ2ljYWwgYml0 c3RyZWFtcyBvZgorICogZWFjaCBsaW5rLCB1c2luZyBhIGJpc2VjdGlvbiByYXRoZXIgdGhhbiBh IGZ1bGwgc2Nhbi4KKyAqCisgKiBSZXF1aXJlcyBhIHNlZWthYmxlIGlucHV0IG9mIGtub3duIHNp emUuCisgKgorICogQHBhcmFtIGNoYWluIG9uIHN1Y2Nlc3MsIHRoZSByZXN1bHRpbmcgY2hhaW4s IHRvIGJlIGZyZWVkIHdpdGgKKyAqICAgICAgICAgICAgICBmZl9vZ2dfZnJlZV9jaGFpbigpLiBN dXN0IHBvaW50IHRvIGEgTlVMTCBwb2ludGVyIG9uIGVudHJ5LgorICogQHBhcmFtIHN0YXRzIGlm IG5vdCBOVUxMLCBmaWxsZWQgaW4gd2l0aCB0aGUgYWNjb3VudGluZyBmb3IgdGhpcyBydW4KKyAq CisgKiBAcmV0dXJuIDAgb24gc3VjY2Vzcywgb3IgYSBuZWdhdGl2ZSBBVkVSUk9SCisgKi8KK2lu dCBmZl9vZ2dfcGFyc2VfY2hhaW4oQVZGb3JtYXRDb250ZXh0ICpzLCBPZ2dDaGFpbiAqKmNoYWlu LAorICAgICAgICAgICAgICAgICAgICAgICBPZ2dQYXJzZXJTdGF0cyAqc3RhdHMpOworCisvKioK KyAqIEZyZWUgYSBjaGFpbiByZXR1cm5lZCBieSBmZl9vZ2dfcGFyc2VfY2hhaW4oKSBhbmQgc2V0 ICpjaGFpbiB0byBOVUxMLgorICovCit2b2lkIGZmX29nZ19mcmVlX2NoYWluKE9nZ0NoYWluICoq Y2hhaW4pOworCisjZW5kaWYgLyogQVZGT1JNQVRfT0dHX0NIQUlOX0ggKi8KLS0gCjIuNTIuMAoK CkZyb20gM2Q2M2ZkZDJkM2VmN2I3OGViYmY2MWMyNWVlYjJjZjM2ZTIyMDU1YiBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogUm9tYWluIEJlYXV4aXMgPHJvbWFpbi5iZWF1eGlzQGdtYWls LmNvbT4KRGF0ZTogVHVlLCAyOCBKdWwgMjAyNiAxNjo0MDozNyAtMDUwMApTdWJqZWN0OiBbUEFU Q0ggMDYvMTBdIGxpYmF2Zm9ybWF0L3Rlc3RzOiBhZGQgb2dnIGNoYWluIHBhcnNlciB0ZXN0CgpQ cmludCB0aGUgbGluayBhbmQgYml0c3RyZWFtIGxheW91dCBmZl9vZ2dfcGFyc2VfY2hhaW4oKSBm aW5kcywgd2l0aCB0aGUKcGFnZSBhbmQgc2VlayBjb3VudHMsIGxpdmluZyB3aXRoIHRoZSBsaWJy YXJ5IHJhdGhlciB0aGFuIHVuZGVyCnRlc3RzL2FwaSwgd2hpY2ggbGlua3MgYWdhaW5zdCB0aGUg c2hhcmVkIGxpYnJhcmllcyB3aGVyZSBmZl8gcHJlZml4ZWQKc3ltYm9scyBhcmUgaGlkZGVuLgoK Tm90aGluZyBydW5zIGl0IHlldDsgdGhlIGZhdGUgd2lyaW5nIGZvbGxvd3MuCi0tLQogbGliYXZm b3JtYXQvTWFrZWZpbGUgICAgICAgICAgfCAgMSArCiBsaWJhdmZvcm1hdC90ZXN0cy8uZ2l0aWdu b3JlICB8ICAxICsKIGxpYmF2Zm9ybWF0L3Rlc3RzL29nZ19jaGFpbi5jIHwgOTggKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMTAwIGluc2VydGlv bnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmZvcm1hdC90ZXN0cy9vZ2dfY2hhaW4uYwoK ZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L01ha2VmaWxlIGIvbGliYXZmb3JtYXQvTWFrZWZpbGUK aW5kZXggMDE1NGUwODEyYS4uZmJmZDE4YTVkMCAxMDA2NDQKLS0tIGEvbGliYXZmb3JtYXQvTWFr ZWZpbGUKKysrIGIvbGliYXZmb3JtYXQvTWFrZWZpbGUKQEAgLTc5Myw2ICs3OTMsNyBAQCBURVNU UFJPR1MtJChDT05GSUdfRklGT19NVVhFUikgICAgICAgICAgICs9ICQoRklGTy1NVVhFUi1URVNU UFJPR1MteWVzKQogVEVTVFBST0dTLSQoQ09ORklHX0ZGUlRNUENSWVBUX1BST1RPQ09MKSArPSBy dG1wZGgKIFRFU1RQUk9HUy0kKENPTkZJR19NT1ZfTVVYRVIpICAgICAgICAgICAgKz0gbW92ZW5j CiBURVNUUFJPR1MtJChDT05GSUdfTkVUV09SSykgICAgICAgICAgICAgICs9IG5vcHJveHkKK1RF U1RQUk9HUy0kKENPTkZJR19PR0dfREVNVVhFUikgICAgICAgICAgKz0gb2dnX2NoYWluCiBURVNU UFJPR1MtJChDT05GSUdfU1JUUCkgICAgICAgICAgICAgICAgICs9IHNydHAKIFRFU1RQUk9HUy0k KENPTkZJR19JTUZfREVNVVhFUikgICAgICAgICAgKz0gaW1mCiAKZGlmZiAtLWdpdCBhL2xpYmF2 Zm9ybWF0L3Rlc3RzLy5naXRpZ25vcmUgYi9saWJhdmZvcm1hdC90ZXN0cy8uZ2l0aWdub3JlCmlu ZGV4IDk1MWNjZjBmMzcuLjFmNjFmNDY1ZjQgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L3Rlc3Rz Ly5naXRpZ25vcmUKKysrIGIvbGliYXZmb3JtYXQvdGVzdHMvLmdpdGlnbm9yZQpAQCAtNCw2ICs0 LDcgQEAKIC9ta2RpcgogL21vdmVuYwogL25vcHJveHkKKy9vZ2dfY2hhaW4KIC9ydG1wZGgKIC9z ZWVrCiAvc3J0cApkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvdGVzdHMvb2dnX2NoYWluLmMgYi9s aWJhdmZvcm1hdC90ZXN0cy9vZ2dfY2hhaW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwLi43NWQwMzIzODEzCi0tLSAvZGV2L251bGwKKysrIGIvbGliYXZmb3JtYXQvdGVz dHMvb2dnX2NoYWluLmMKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAy NSBSb21haW4gQmVhdXhpcworICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZy ZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRoaXMg c29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2Fy ZSIpLCB0byBkZWFsCisgKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5j bHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCisgKiB0byB1c2UsIGNvcHksIG1v ZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxs CisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hv bSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUg Zm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Ug YW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBj b3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRI RSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBL SU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRP IFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMCisg KiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJ TSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBP RiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKyAqIE9VVCBPRiBP UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVB TElOR1MgSU4KKyAqIFRIRSBTT0ZUV0FSRS4KKyAqLworCisvKioKKyAqIEVudW1lcmF0ZSB0aGUg bGlua3Mgb2YgYW4gT2dnIGZpbGUgYW5kIHByaW50IHRoZSBsYXlvdXQsIGFsb25nIHdpdGggdGhl CisgKiBwYXJzZXIgYWNjb3VudGluZzogdGhlIHBhZ2UgYW5kIHNlZWsgY291bnRzIGFyZSB3aGF0 IHRlbGwgYSB3b3JraW5nCisgKiBiaXNlY3Rpb24gYXBhcnQgZnJvbSBvbmUgdGhhdCBoYXMgZGVn ZW5lcmF0ZWQgaW50byBhIGxpbmVhciBzY2FuLgorICovCisKKyNpbmNsdWRlIDxpbnR0eXBlcy5o PgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpbmNsdWRlICJsaWJhdmZvcm1hdC9hdmZvcm1hdC5o IgorI2luY2x1ZGUgImxpYmF2Zm9ybWF0L29nZy9jaGFpbi5oIgorCitzdGF0aWMgdm9pZCBwcmlu dF9wYWdlKGNvbnN0IGNoYXIgKmxhYmVsLCBjb25zdCBPZ2dQYWdlICpwYWdlKQoreworICAgIHBy aW50ZigiICAgICVzOiBwb3M9JSIgUFJJZDY0ICIgc2l6ZT0lIiBQUklkNjQgIiBncD0lIiBQUkl1 NjQgIlxuIiwKKyAgICAgICAgICAgbGFiZWwsIHBhZ2UtPnBhZ2VfcG9zLCBwYWdlLT5wYWdlX3Np emUsIHBhZ2UtPmdwKTsKK30KKworc3RhdGljIGludCBvZ2dfY2hhaW5fdGVzdChjb25zdCBjaGFy ICpmaWxlbmFtZSkKK3sKKyAgICBBVkZvcm1hdENvbnRleHQgKmZtdF9jdHggPSBOVUxMOworICAg IE9nZ0NoYWluICpjaGFpbiA9IE5VTEw7CisgICAgT2dnUGFyc2VyU3RhdHMgc3RhdHMgPSB7IDAg fTsKKyAgICBpbnQgcmV0OworCisgICAgcmV0ID0gYXZmb3JtYXRfb3Blbl9pbnB1dCgmZm10X2N0 eCwgZmlsZW5hbWUsIE5VTEwsIE5VTEwpOworICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgIGF2 X2xvZyhOVUxMLCBBVl9MT0dfRVJST1IsICJDb3VsZCBub3Qgb3BlbiAnJXMnOiAlc1xuIiwKKyAg ICAgICAgICAgICAgIGZpbGVuYW1lLCBhdl9lcnIyc3RyKHJldCkpOworICAgICAgICByZXR1cm4g cmV0OworICAgIH0KKworICAgIHJldCA9IGZmX29nZ19wYXJzZV9jaGFpbihmbXRfY3R4LCAmY2hh aW4sICZzdGF0cyk7CisgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgYXZfbG9nKE5VTEwsIEFW X0xPR19FUlJPUiwgIlBhcnNpbmcgZmFpbGVkOiAlc1xuIiwgYXZfZXJyMnN0cihyZXQpKTsKKyAg ICAgICAgZ290byBlbmQ7CisgICAgfQorCisgICAgcHJpbnRmKCJMaW5rczogJWQlc1xuIiwgY2hh aW4tPm5iX2xpbmtzLAorICAgICAgICAgICBzdGF0cy50cnVuY2F0ZWQgPyAiICh0cnVuY2F0ZWQp IiA6ICIiKTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2hhaW4tPm5iX2xpbmtzOyBpKysp IHsKKyAgICAgICAgY29uc3QgT2dnTGluayAqbGluayA9IGNoYWluLT5saW5rc1tpXTsKKworICAg ICAgICBwcmludGYoIlxuTGluayAjJWQ6ICVkIGxvZ2ljYWwgYml0c3RyZWFtKHMpXG4iLCBpLCBs aW5rLT5uYl9zdHJlYW1zKTsKKworICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGxpbmstPm5i X3N0cmVhbXM7IGorKykgeworICAgICAgICAgICAgY29uc3QgT2dnU3RyZWFtICpzdHJlYW0gPSBs aW5rLT5zdHJlYW1zW2pdOworCisgICAgICAgICAgICBwcmludGYoIiAgQml0c3RyZWFtICMlZDog c2VyaWFsPTB4JTA4IiBQUkl4MzIgIiVzXG4iLAorICAgICAgICAgICAgICAgICAgIGosIHN0cmVh bS0+c2VyaWFsLCBzdHJlYW0tPm5vX2VvcyA/ICIgKG5vIEVPUykiIDogIiIpOworICAgICAgICAg ICAgcHJpbnRfcGFnZSgiZmlyc3QgcGFnZSIsICZzdHJlYW0tPmZpcnN0X3BhZ2UpOworICAgICAg ICAgICAgcHJpbnRfcGFnZSgibGFzdCBwYWdlIiwgJnN0cmVhbS0+bGFzdF9wYWdlKTsKKyAgICAg ICAgfQorICAgIH0KKworICAgIHByaW50ZigiXG5QYXJzZXIgc3RhdHM6XG4iKTsKKyAgICBwcmlu dGYoIiAgcGFnZXMgcmVhZDogICAgICAlIiBQUklkNjQgIlxuIiwgc3RhdHMubmJfcGFnZXNfcmVh ZCk7CisgICAgcHJpbnRmKCIgIHNlZWtzOiAgICAgICAgICAgJSIgUFJJZDY0ICJcbiIsIHN0YXRz Lm5iX3NlZWtzKTsKKyAgICBwcmludGYoIiAgYmlzZWN0IHN0ZXBzOiAgICAlIiBQUklkNjQgIlxu Iiwgc3RhdHMubmJfYmlzZWN0X3N0ZXBzKTsKKworZW5kOgorICAgIGZmX29nZ19mcmVlX2NoYWlu KCZjaGFpbik7CisgICAgYXZmb3JtYXRfY2xvc2VfaW5wdXQoJmZtdF9jdHgpOworICAgIHJldHVy biByZXQ7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKyAgICBpZiAo YXJnYyA8IDIpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJVc2FnZTogJXMgPGlucHV0Lm9n Zz5cbiIsIGFyZ3ZbMF0pOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICByZXR1cm4g b2dnX2NoYWluX3Rlc3QoYXJndlsxXSkgPCAwID8gMSA6IDA7Cit9Ci0tIAoyLjUyLjAKCgpGcm9t IDYzNmIxM2I5MWIxNjBlOGQ2MDBkMDg0NzVmMGRlNTQ3YTc3YWI3YWMgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IFJvbWFpbiBCZWF1eGlzIDxyb21haW4uYmVhdXhpc0BnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMjggSnVsIDIwMjYgMTY6NDA6MzcgLTA1MDAKU3ViamVjdDogW1BBVENIIDA3 LzEwXSBmYXRlOiBhZGQgb2dnIGNoYWluIHNjYW5uZXIgdGVzdHMKCkNoZWNrIHdoYXQgdGhlIHNj YW5uZXIgbWFrZXMgb2YgYSBzaW5nbGUgbGluaywgb2YgdGhyZWUgb2YgdW5lcXVhbApsZW5ndGgs IGFuZCBvZiBlaWdodCBzaG9ydCBvbmVzLgoKVGhlIHBhZ2UgYW5kIHNlZWsgY291bnRzIGFyZSBw YXJ0IG9mIHRoZSByZWZlcmVuY2VzLCBkaXN0aW5ndWlzaGluZyBhCndvcmtpbmcgYmlzZWN0aW9u IGZyb20gb25lIHRoYXQgaGFzIHF1aWV0bHkgYmVjb21lIGEgbGluZWFyIHNjYW4uCi0tLQogdGVz dHMvZmF0ZS9vZ2ctY2hhaW4ubWFrICAgICAgICB8IDM5ICsrKysrKysrKysrKysrKysrKysrKysr KysrLS0KIHRlc3RzL3JlZi9mYXRlL29nZy1jaGFpbi1mbGFjICAgfCAyMSArKysrKysrKysrKysr KysKIHRlc3RzL3JlZi9mYXRlL29nZy1jaGFpbi1tYW55ICAgfCA0NiArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKIHRlc3RzL3JlZi9mYXRlL29nZy1jaGFpbi1zaW5nbGUgfCAxMSAr KysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAxMTUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9yZWYvZmF0ZS9vZ2ctY2hhaW4tZmxhYwogY3Jl YXRlIG1vZGUgMTAwNjQ0IHRlc3RzL3JlZi9mYXRlL29nZy1jaGFpbi1tYW55CiBjcmVhdGUgbW9k ZSAxMDA2NDQgdGVzdHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNpbmdsZQoKZGlmZiAtLWdpdCBhL3Rl c3RzL2ZhdGUvb2dnLWNoYWluLm1hayBiL3Rlc3RzL2ZhdGUvb2dnLWNoYWluLm1hawppbmRleCBm YjU2ODdkMjQ1Li4wMDUyMDZhMTdjIDEwMDY0NAotLS0gYS90ZXN0cy9mYXRlL29nZy1jaGFpbi5t YWsKKysrIGIvdGVzdHMvZmF0ZS9vZ2ctY2hhaW4ubWFrCkBAIC0xOCw2ICsxOCw4IEBAIE9HR19D SEFJTl9TRUVLID0gImZmcHJvYmUkKFBST0dTU1VGKSQoRVhFU1VGKSAtYml0ZXhhY3QgLXRocmVh ZHMgMSBcCiAgICAgLXNob3dfZW50cmllcyBmb3JtYXQ9ZHVyYXRpb246cGFja2V0PXB0cyxwdHNf dGltZSBcCiAgICAgLXJlYWRfaW50ZXJ2YWxzIDIlK1wjMSw0JStcIzEsNyUrXCMxLDEyJStcIzEs MTUlK1wjMSwyMiUrXCMxIC1pIgogCitPR0dfQ0hBSU5fU0NBTiA9ICJsaWJhdmZvcm1hdC90ZXN0 cy9vZ2dfY2hhaW4kKEVYRVNVRikiCisKIEZBVEVfT0dHX0NIQUlOLSQoY2FsbCBBTExZRVMsIE9H R19ERU1VWEVSIE9HR19NVVhFUiBGTEFDX0VOQ09ERVIgTEFWRklfSU5ERVYgQ09OQ0FUX1BST1RP Q09MIEZJTEVfUFJPVE9DT0wpICs9IGZhdGUtb2dnLWNoYWluLXNlZWstZmxhYwogZmF0ZS1vZ2ct Y2hhaW4tc2Vlay1mbGFjOiBDTUQgPSBydW5fd2l0aF9jb25jYXRfdGVtcCBvZ2cgXAogICAgICQo Y2FsbCBPR0dfQ0hBSU5fTElOSywzMDAsNSxmbGFjLDEwMCkgXApAQCAtNDYsNiArNDgsMzkgQEAg ZmF0ZS1vZ2ctY2hhaW4tc2Vlay10aGVvcmE6IENNRCA9IHJ1bl93aXRoX2NvbmNhdF90ZW1wIG9n ZyBcCiAgICAgJChjYWxsIE9HR19DSEFJTl9WSURFT19MSU5LLGJsdWUsMTEsbGlidGhlb3JhLDEw MikgXAogICAgICQoT0dHX0NIQUlOX1NFRUspCiAKLUZBVEVfRkZNUEVHX0ZGUFJPQkUgKz0gJChG QVRFX09HR19DSEFJTi15ZXMpCisjIFdoYXQgdGhlIHNjYW5uZXIgbWFrZXMgb2YgYSBjaGFpbiwg dGhlIGxpbmtzIGJlaW5nIHdyaXR0ZW4gc2VwYXJhdGVseSBhbmQKKyMgaGFuZGVkIHRvIGl0IGFz IG9uZS4KK0ZBVEVfT0dHX0NIQUlOX1NDQU4tJChjYWxsIEFMTFlFUywgT0dHX0RFTVVYRVIgT0dH X01VWEVSIEZMQUNfRU5DT0RFUiBMQVZGSV9JTkRFViBDT05DQVRfUFJPVE9DT0wgRklMRV9QUk9U T0NPTCkgKz0gZmF0ZS1vZ2ctY2hhaW4tZmxhYworZmF0ZS1vZ2ctY2hhaW4tZmxhYzogbGliYXZm b3JtYXQvdGVzdHMvb2dnX2NoYWluJChFWEVTVUYpCitmYXRlLW9nZy1jaGFpbi1mbGFjOiBDTUQg PSBydW5fd2l0aF9jb25jYXRfdGVtcCBvZ2cgXAorICAgICQoY2FsbCBPR0dfQ0hBSU5fTElOSywz MDAsNSxmbGFjLDEwMCkgXAorICAgICQoY2FsbCBPR0dfQ0hBSU5fTElOSyw0NTAsOCxmbGFjLDEw MSkgXAorICAgICQoY2FsbCBPR0dfQ0hBSU5fTElOSyw2MDAsMTEsZmxhYywxMDIpIFwKKyAgICAk KE9HR19DSEFJTl9TQ0FOKQogCi1mYXRlLW9nZy1jaGFpbjogJChGQVRFX09HR19DSEFJTi15ZXMp CisjIEEgc2luZ2xlIGxpbmsgc3RpbGwgaGFzIHRvIGNvbWUgb3V0IGFzIGEgY2hhaW4gb2Ygb25l LgorRkFURV9PR0dfQ0hBSU5fU0NBTi0kKGNhbGwgQUxMWUVTLCBPR0dfREVNVVhFUiBPR0dfTVVY RVIgRkxBQ19FTkNPREVSIExBVkZJX0lOREVWIEZJTEVfUFJPVE9DT0wpICs9IGZhdGUtb2dnLWNo YWluLXNpbmdsZQorZmF0ZS1vZ2ctY2hhaW4tc2luZ2xlOiBsaWJhdmZvcm1hdC90ZXN0cy9vZ2df Y2hhaW4kKEVYRVNVRikKK2ZhdGUtb2dnLWNoYWluLXNpbmdsZTogQ01EID0gcnVuX3dpdGhfY29u Y2F0X3RlbXAgb2dnIFwKKyAgICAkKGNhbGwgT0dHX0NIQUlOX0xJTkssMzAwLDUsZmxhYywxMDAp IFwKKyAgICAkKE9HR19DSEFJTl9TQ0FOKQorCisjIE1hbnkgc2hvcnQgbGlua3MsIHdoZXJlIHRo ZSBzY2FuIGhhcyB0byBrZWVwIGZpbmRpbmcgb25lIGFmdGVyIGFub3RoZXIKKyMgcmF0aGVyIHRo YW4gc2V0dGxpbmcgZXZlcnl0aGluZyBmcm9tIHRoZSB0YWlsIG9mIHRoZSBmaWxlLgorRkFURV9P R0dfQ0hBSU5fU0NBTi0kKGNhbGwgQUxMWUVTLCBPR0dfREVNVVhFUiBPR0dfTVVYRVIgRkxBQ19F TkNPREVSIExBVkZJX0lOREVWIENPTkNBVF9QUk9UT0NPTCBGSUxFX1BST1RPQ09MKSArPSBmYXRl LW9nZy1jaGFpbi1tYW55CitmYXRlLW9nZy1jaGFpbi1tYW55OiBsaWJhdmZvcm1hdC90ZXN0cy9v Z2dfY2hhaW4kKEVYRVNVRikKK2ZhdGUtb2dnLWNoYWluLW1hbnk6IENNRCA9IHJ1bl93aXRoX2Nv bmNhdF90ZW1wIG9nZyBcCisgICAgJChjYWxsIE9HR19DSEFJTl9MSU5LLDIwMCwxLGZsYWMsMTAw KSBcCisgICAgJChjYWxsIE9HR19DSEFJTl9MSU5LLDI1MCwyLGZsYWMsMTAxKSBcCisgICAgJChj YWxsIE9HR19DSEFJTl9MSU5LLDMwMCwxLGZsYWMsMTAyKSBcCisgICAgJChjYWxsIE9HR19DSEFJ Tl9MSU5LLDM1MCwzLGZsYWMsMTAzKSBcCisgICAgJChjYWxsIE9HR19DSEFJTl9MSU5LLDQwMCwx LGZsYWMsMTA0KSBcCisgICAgJChjYWxsIE9HR19DSEFJTl9MSU5LLDQ1MCwyLGZsYWMsMTA1KSBc CisgICAgJChjYWxsIE9HR19DSEFJTl9MSU5LLDUwMCwxLGZsYWMsMTA2KSBcCisgICAgJChjYWxs IE9HR19DSEFJTl9MSU5LLDU1MCw0LGZsYWMsMTA3KSBcCisgICAgJChPR0dfQ0hBSU5fU0NBTikK KworRkFURV9GRk1QRUdfRkZQUk9CRSArPSAkKEZBVEVfT0dHX0NIQUlOLXllcykKK0ZBVEVfRkZN UEVHICAgICAgICArPSAkKEZBVEVfT0dHX0NIQUlOX1NDQU4teWVzKQorCitmYXRlLW9nZy1jaGFp bjogJChGQVRFX09HR19DSEFJTi15ZXMpICQoRkFURV9PR0dfQ0hBSU5fU0NBTi15ZXMpCmRpZmYg LS1naXQgYS90ZXN0cy9yZWYvZmF0ZS9vZ2ctY2hhaW4tZmxhYyBiL3Rlc3RzL3JlZi9mYXRlL29n Zy1jaGFpbi1mbGFjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmNlZWY1 ODIxZjEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9yZWYvZmF0ZS9vZ2ctY2hhaW4tZmxhYwpA QCAtMCwwICsxLDIxIEBACitMaW5rczogMworCitMaW5rICMwOiAxIGxvZ2ljYWwgYml0c3RyZWFt KHMpCisgIEJpdHN0cmVhbSAjMDogc2VyaWFsPTB4MDAwMDAwNjQKKyAgICBmaXJzdCBwYWdlOiBw b3M9MCBzaXplPTc5IGdwPTAKKyAgICBsYXN0IHBhZ2U6IHBvcz02MTg4MyBzaXplPTEzODcyIGdw PTIyMDUwMAorCitMaW5rICMxOiAxIGxvZ2ljYWwgYml0c3RyZWFtKHMpCisgIEJpdHN0cmVhbSAj MDogc2VyaWFsPTB4MDAwMDAwNjUKKyAgICBmaXJzdCBwYWdlOiBwb3M9NzU3NTUgc2l6ZT03OSBn cD0wCisgICAgbGFzdCBwYWdlOiBwb3M9MTg4NDM4IHNpemU9MTMzOTIgZ3A9MzUyODAwCisKK0xp bmsgIzI6IDEgbG9naWNhbCBiaXRzdHJlYW0ocykKKyAgQml0c3RyZWFtICMwOiBzZXJpYWw9MHgw MDAwMDA2NgorICAgIGZpcnN0IHBhZ2U6IHBvcz0yMDE4MzAgc2l6ZT03OSBncD0wCisgICAgbGFz dCBwYWdlOiBwb3M9MzYyMDkyIHNpemU9MTIyNDggZ3A9NDg1MTAwCisKK1BhcnNlciBzdGF0czoK KyAgcGFnZXMgcmVhZDogICAgICAxMQorICBzZWVrczogICAgICAgICAgIDgKKyAgYmlzZWN0IHN0 ZXBzOiAgICA0CmRpZmYgLS1naXQgYS90ZXN0cy9yZWYvZmF0ZS9vZ2ctY2hhaW4tbWFueSBiL3Rl c3RzL3JlZi9mYXRlL29nZy1jaGFpbi1tYW55Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAuLjdiNWRmZGE4NTMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9yZWYvZmF0ZS9v Z2ctY2hhaW4tbWFueQpAQCAtMCwwICsxLDQ2IEBACitMaW5rczogOAorCitMaW5rICMwOiAxIGxv Z2ljYWwgYml0c3RyZWFtKHMpCisgIEJpdHN0cmVhbSAjMDogc2VyaWFsPTB4MDAwMDAwNjQKKyAg ICBmaXJzdCBwYWdlOiBwb3M9MCBzaXplPTc5IGdwPTAKKyAgICBsYXN0IHBhZ2U6IHBvcz0xNDYg c2l6ZT0xNTMxNCBncD00NDEwMAorCitMaW5rICMxOiAxIGxvZ2ljYWwgYml0c3RyZWFtKHMpCisg IEJpdHN0cmVhbSAjMDogc2VyaWFsPTB4MDAwMDAwNjUKKyAgICBmaXJzdCBwYWdlOiBwb3M9MTU0 NjAgc2l6ZT03OSBncD0wCisgICAgbGFzdCBwYWdlOiBwb3M9MzExMTUgc2l6ZT0xNDk3MyBncD04 ODIwMAorCitMaW5rICMyOiAxIGxvZ2ljYWwgYml0c3RyZWFtKHMpCisgIEJpdHN0cmVhbSAjMDog c2VyaWFsPTB4MDAwMDAwNjYKKyAgICBmaXJzdCBwYWdlOiBwb3M9NDYwODggc2l6ZT03OSBncD0w CisgICAgbGFzdCBwYWdlOiBwb3M9NDYyMzQgc2l6ZT0xNTE5MSBncD00NDEwMAorCitMaW5rICMz OiAxIGxvZ2ljYWwgYml0c3RyZWFtKHMpCisgIEJpdHN0cmVhbSAjMDogc2VyaWFsPTB4MDAwMDAw NjcKKyAgICBmaXJzdCBwYWdlOiBwb3M9NjE0MjUgc2l6ZT03OSBncD0wCisgICAgbGFzdCBwYWdl OiBwb3M9OTI1MjEgc2l6ZT0xNDY0NyBncD0xMzIzMDAKKworTGluayAjNDogMSBsb2dpY2FsIGJp dHN0cmVhbShzKQorICBCaXRzdHJlYW0gIzA6IHNlcmlhbD0weDAwMDAwMDY4CisgICAgZmlyc3Qg cGFnZTogcG9zPTEwNzE2OCBzaXplPTc5IGdwPTAKKyAgICBsYXN0IHBhZ2U6IHBvcz0xMDczMTQg c2l6ZT0xNTUyOSBncD00NDEwMAorCitMaW5rICM1OiAxIGxvZ2ljYWwgYml0c3RyZWFtKHMpCisg IEJpdHN0cmVhbSAjMDogc2VyaWFsPTB4MDAwMDAwNjkKKyAgICBmaXJzdCBwYWdlOiBwb3M9MTIy ODQzIHNpemU9NzkgZ3A9MAorICAgIGxhc3QgcGFnZTogcG9zPTEzOTAyMCBzaXplPTE1MzkyIGdw PTg4MjAwCisKK0xpbmsgIzY6IDEgbG9naWNhbCBiaXRzdHJlYW0ocykKKyAgQml0c3RyZWFtICMw OiBzZXJpYWw9MHgwMDAwMDA2YQorICAgIGZpcnN0IHBhZ2U6IHBvcz0xNTQ0MTIgc2l6ZT03OSBn cD0wCisgICAgbGFzdCBwYWdlOiBwb3M9MTU0NTU4IHNpemU9MTU1ODggZ3A9NDQxMDAKKworTGlu ayAjNzogMSBsb2dpY2FsIGJpdHN0cmVhbShzKQorICBCaXRzdHJlYW0gIzA6IHNlcmlhbD0weDAw MDAwMDZiCisgICAgZmlyc3QgcGFnZTogcG9zPTE3MDE0NiBzaXplPTc5IGdwPTAKKyAgICBsYXN0 IHBhZ2U6IHBvcz0yMTk4NDYgc2l6ZT0xNTE3NiBncD0xNzY0MDAKKworUGFyc2VyIHN0YXRzOgor ICBwYWdlcyByZWFkOiAgICAgIDYxCisgIHNlZWtzOiAgICAgICAgICAgNTcKKyAgYmlzZWN0IHN0 ZXBzOiAgICA0MgpkaWZmIC0tZ2l0IGEvdGVzdHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNpbmdsZSBi L3Rlc3RzL3JlZi9mYXRlL29nZy1jaGFpbi1zaW5nbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMC4uNGE1MmU1MGFlMgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3JlZi9m YXRlL29nZy1jaGFpbi1zaW5nbGUKQEAgLTAsMCArMSwxMSBAQAorTGlua3M6IDEKKworTGluayAj MDogMSBsb2dpY2FsIGJpdHN0cmVhbShzKQorICBCaXRzdHJlYW0gIzA6IHNlcmlhbD0weDAwMDAw MDY0CisgICAgZmlyc3QgcGFnZTogcG9zPTAgc2l6ZT03OSBncD0wCisgICAgbGFzdCBwYWdlOiBw b3M9NjE4ODMgc2l6ZT0xMzg3MiBncD0yMjA1MDAKKworUGFyc2VyIHN0YXRzOgorICBwYWdlcyBy ZWFkOiAgICAgIDYKKyAgc2Vla3M6ICAgICAgICAgICAyCisgIGJpc2VjdCBzdGVwczogICAgMAot LSAKMi41Mi4wCgoKRnJvbSBlMWU2NmRhMzFjZjczNDMzMzE1OTE5YjJjNWI5MTQyYzk3OTk5ZDhl IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBSb21haW4gQmVhdXhpcyA8cm9tYWluLmJl YXV4aXNAZ21haWwuY29tPgpEYXRlOiBUdWUsIDI4IEp1bCAyMDI2IDE2OjQwOjM3IC0wNTAwClN1 YmplY3Q6IFtQQVRDSCAwOC8xMF0gYXZmb3JtYXQvb2dnOiBzdW0gY2hhaW5lZCBzdHJlYW0gZHVy YXRpb25zIG92ZXIgbGlua3MKCm9nZ19nZXRfbGVuZ3RoKCkgcmVhZHMgdGhlIHRhaWwgb2YgdGhl IGZpbGUsIHdoaWNoIG9uIGEgY2hhaW4gaXMgdGhlCmxhc3QgbGluayBhbG9uZSwgc28gc3VtIHRo ZSBsaW5rcyBpbnN0ZWFkLCByZXVzaW5nIHdoYXQgaXQgZm91bmQgZm9yCndoZXJlIHRoZSBmaXJz dCBwYWNrZXQgYWN0dWFsbHkgc3RhcnRzLgoKVGhlIHNlZWtpbmcgdGVzdHMgbm93IHJlcG9ydCAy NHMgaW4gcGxhY2Ugb2YgMTFzIG9yIG5vdGhpbmcgYXQgYWxsLCBhbmQKZmF0ZS1vZ2ctdm9yYmlz LWluaXRpYWwtcGFkZGluZy1jaGFpbmVkIG1vdmVzIHdpdGggdGhlbSwgaGF2aW5nIGhlbGQgb25l CmxpbmsncyAwLjAzMjkwMnMgYWdhaW5zdCB0aGUgMC4wNjdzIHRoZSBmaWxlIGRlY29kZXMgdG8u Ci0tLQogbGliYXZmb3JtYXQvb2dnL2RlY29kZXIuYyAgICAgICAgICAgICAgICAgICAgIHwgNzMg KysrKysrKysrKysrKysrKysrKwogbGliYXZmb3JtYXQvb2dnL2RlY29kZXIuaCAgICAgICAgICAg ICAgICAgICAgIHwgIDIgKwogdGVzdHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNlZWstZmxhYyAgICAg ICAgICAgIHwgIDIgKy0KIHRlc3RzL3JlZi9mYXRlL29nZy1jaGFpbi1zZWVrLW9wdXMgICAgICAg ICAgICB8ICAyICstCiB0ZXN0cy9yZWYvZmF0ZS9vZ2ctY2hhaW4tc2Vlay10aGVvcmEgICAgICAg ICAgfCAgMiArLQogdGVzdHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNlZWstdm9yYmlzICAgICAgICAg IHwgIDIgKy0KIC4uLi9mYXRlL29nZy12b3JiaXMtaW5pdGlhbC1wYWRkaW5nLWNoYWluZWQgICB8 ICA0ICstCiA3IGZpbGVzIGNoYW5nZWQsIDgxIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvb2dnL2RlY29kZXIuYyBiL2xpYmF2Zm9ybWF0L29n Zy9kZWNvZGVyLmMKaW5kZXggYzQ1ZjY1MmQ0My4uYjg1ZjFmYjBiNyAxMDA2NDQKLS0tIGEvbGli YXZmb3JtYXQvb2dnL2RlY29kZXIuYworKysgYi9saWJhdmZvcm1hdC9vZ2cvZGVjb2Rlci5jCkBA IC02OTEsOSArNjkxLDczIEBAIHN0YXRpYyBpbnQgb2dnX3JlYWRfY2xvc2UoQVZGb3JtYXRDb250 ZXh0ICpzKQogICAgIG9nZy0+bnN0cmVhbXMgPSAwOwogICAgIGF2X2ZyZWVwKCZvZ2ctPnN0cmVh bXMpOwogCisgICAgZmZfb2dnX2ZyZWVfY2hhaW4oJm9nZy0+Y2hhaW4pOworCiAgICAgcmV0dXJu IDA7CiB9CiAKKy8qKgorICogVG90YWwgZHVyYXRpb24gb2YgYSBjaGFpbmVkIGZpbGUsIGFzIHRo ZSBzdW0gb2YgaXRzIGxpbmtzJy4KKyAqCisgKiBFdmVyeSBsaW5rIHJlc3RhcnRzIGl0cyBncmFu dWxlIHBvc2l0aW9ucyBhdCB6ZXJvLCBzbyB0aGUgZ3JhbnVsZSBvZiBhCisgKiBsaW5rJ3MgbGFz dCBwYWdlIGlzIHRoYXQgbGluaydzIG93biBkdXJhdGlvbiByYXRoZXIgdGhhbiBhIHBvc2l0aW9u IG9uIHRoZQorICogZmlsZSdzIHRpbWVsaW5lLiBvZ2dfZ2V0X2xlbmd0aCgpIG9ubHkgZXZlciBy ZWFkcyB0aGUgZmlsZSB0YWlsLCB3aGljaCBvbiBhCisgKiBjaGFpbmVkIGZpbGUgYmVsb25ncyB0 byB0aGUgbGFzdCBsaW5rIGFsb25lIGFuZCB0aGVyZWZvcmUgcmVwb3J0cyB0aGF0CisgKiBsaW5r J3MgZHVyYXRpb24gYXMgdGhlIHdob2xlIGZpbGUncy4KKyAqCisgKiBUaGUgZGVtdXhlciBrZWVw cyBvbmUgc2V0IG9mIHN0cmVhbSBwYXJhbWV0ZXJzIGFjcm9zcyBhIGNoYWluIC0KKyAqIG9nZ19y ZXBsYWNlX3N0cmVhbSgpIHJlZnVzZXMgYSBjb2RlYyBjaGFuZ2UgYW5kIG9ubHkgcmVmcmVzaGVz IG1ldGFkYXRhIC0gc28KKyAqIHRoZSBzYW1lIGdyYW51bGUgY29udmVyc2lvbiBhcHBsaWVzIHRv IGV2ZXJ5IGxpbmsuCisgKgorICogUnVucyBhZnRlciBvZ2dfZ2V0X2xlbmd0aCgpLCB3aG9zZSBy ZXN1bHQgY292ZXJzIHRoZSBsYXN0IGxpbmsgYWxvbmUuIFRoYXQKKyAqIHJlc3VsdCBpcyBub3Qg dGhyb3duIGF3YXk6IHRoZSBvZmZzZXQgaXQgYXBwbGllZCBmb3IgdGhlIHRpbWVzdGFtcCB0aGUg Zmlyc3QKKyAqIHBhY2tldCBhY3R1YWxseSBzdGFydHMgYXQgLSB3aGljaCBtYXkgYmUgbmVnYXRp dmUsIGFuZCB3aGljaCBvbmx5IGl0cyBzZWNvbmQKKyAqIHBhc3MgY2FuIGRldGVybWluZSAtIGlz IHJlY292ZXJlZCBhbmQgcmVhcHBsaWVkIHRvIHRoZSBzdW0sIHNvIGEgY2hhaW5lZCBmaWxlCisg KiBrZWVwcyB0aGUgc2FtZSByZWZlcmVuY2UgcG9pbnQgYXMgYW4gdW5jaGFpbmVkIG9uZS4KKyAq Lworc3RhdGljIHZvaWQgb2dnX2NoYWluX2dldF9sZW5ndGgoQVZGb3JtYXRDb250ZXh0ICpzKQor eworICAgIHN0cnVjdCBvZ2cgKm9nZyA9IHMtPnByaXZfZGF0YTsKKyAgICBpbnQ2NF90IHRvdGFs ID0gMCwgbGFzdCwgc3RhcnRfb2Zmc2V0OworICAgIEFWU3RyZWFtICpzdDsKKworICAgIC8qIENo YWlucyBjYXJyeWluZyBzZXZlcmFsIGJpdHN0cmVhbXMgcGVyIGxpbmsgYXJlIG5vdCBzdXBwb3J0 ZWQuICovCisgICAgaWYgKCFvZ2ctPmNoYWluIHx8IG9nZy0+Y2hhaW4tPm5iX2xpbmtzIDwgMiB8 fCBvZ2ctPm5zdHJlYW1zICE9IDEpCisgICAgICAgIHJldHVybjsKKworICAgIHN0ID0gcy0+c3Ry ZWFtc1swXTsKKworICAgIC8qIE9ubHkgYXZhaWxhYmxlIHdoZW4gb2dnX2dldF9sZW5ndGgoKSBt YW5hZ2VkIHRvIHRpbWUgdGhlIGxhc3QgbGluazsKKyAgICAgKiB3aXRob3V0IGl0IHRoZSBzdW0g c2ltcGx5IHN0YXJ0cyBmcm9tIHplcm8uICovCisgICAgc3RhcnRfb2Zmc2V0ID0gMDsKKyAgICBp ZiAoc3QtPmR1cmF0aW9uICE9IEFWX05PUFRTX1ZBTFVFKSB7CisgICAgICAgIGxhc3QgPSBvZ2df Z3B0b3B0cyhzLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgb2dnLT5jaGFpbi0+bGlu a3Nbb2dnLT5jaGFpbi0+bmJfbGlua3MgLSAxXQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+c3RyZWFtc1swXS0+bGFzdF9wYWdlLmdwLCBOVUxMKTsKKyAgICAgICAgaWYgKGxhc3Qg IT0gQVZfTk9QVFNfVkFMVUUpCisgICAgICAgICAgICBzdGFydF9vZmZzZXQgPSBsYXN0IC0gc3Qt PmR1cmF0aW9uOworICAgIH0KKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2dnLT5jaGFpbi0+ bmJfbGlua3M7IGkrKykgeworICAgICAgICBjb25zdCBPZ2dMaW5rICpsaW5rID0gb2dnLT5jaGFp bi0+bGlua3NbaV07CisgICAgICAgIGludDY0X3QgcHRzOworCisgICAgICAgIGlmIChsaW5rLT5u Yl9zdHJlYW1zICE9IDEpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgcHRzID0gb2dn X2dwdG9wdHMocywgMCwgbGluay0+c3RyZWFtc1swXS0+bGFzdF9wYWdlLmdwLCBOVUxMKTsKKyAg ICAgICAgaWYgKHB0cyA9PSBBVl9OT1BUU19WQUxVRSB8fCBwdHMgPCAwKQorICAgICAgICAgICAg cmV0dXJuOworCisgICAgICAgIHRvdGFsICs9IHB0czsKKyAgICB9CisKKyAgICB0b3RhbCAtPSBz dGFydF9vZmZzZXQ7CisKKyAgICBzdC0+ZHVyYXRpb24gPSB0b3RhbDsKKyAgICBzLT5kdXJhdGlv biAgPSBhdl9yZXNjYWxlX3EodG90YWwsIHN0LT50aW1lX2Jhc2UsIEFWX1RJTUVfQkFTRV9RKTsK K30KKwogc3RhdGljIGludCBvZ2dfcmVhZF9oZWFkZXIoQVZGb3JtYXRDb250ZXh0ICpzKQogewog ICAgIHN0cnVjdCBvZ2cgKm9nZyA9IHMtPnByaXZfZGF0YTsKQEAgLTczNCw2ICs3OTgsMTUgQEAg c3RhdGljIGludCBvZ2dfcmVhZF9oZWFkZXIoQVZGb3JtYXRDb250ZXh0ICpzKQogICAgIGlmIChy ZXQgPCAwKQogICAgICAgICByZXR1cm4gcmV0OwogCisgICAgLyogRW51bWVyYXRlIHRoZSBsaW5r cywgc28gdGhhdCBhIGNoYWluZWQgZmlsZSdzIGR1cmF0aW9uIGNhbiBiZSBzdW1tZWQKKyAgICAg KiBvdmVyIHRoZW0gcmF0aGVyIHRoYW4gdGFrZW4gZnJvbSB0aGUgdGFpbCBhbG9uZS4gQmVzdCBl ZmZvcnQ6IGFuCisgICAgICogdW5zZWVrYWJsZSBvciBtYWxmb3JtZWQgaW5wdXQganVzdCBsZWF2 ZXMgdGhlIGNoYWluIHVua25vd24sIGFuZCB0aGUKKyAgICAgKiBkdXJhdGlvbiBvZ2dfZ2V0X2xl bmd0aCgpIGZvdW5kIHN0YW5kcy4gKi8KKyAgICBpZiAocy0+cGItPnNlZWthYmxlICYgQVZJT19T RUVLQUJMRV9OT1JNQUwpIHsKKyAgICAgICAgZmZfb2dnX3BhcnNlX2NoYWluKHMsICZvZ2ctPmNo YWluLCBOVUxMKTsKKyAgICAgICAgb2dnX2NoYWluX2dldF9sZW5ndGgocyk7CisgICAgfQorCiAg ICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L29nZy9kZWNvZGVyLmgg Yi9saWJhdmZvcm1hdC9vZ2cvZGVjb2Rlci5oCmluZGV4IDMxN2Q3NTIwZDUuLmZhNjc1MzMwNDEg MTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L29nZy9kZWNvZGVyLmgKKysrIGIvbGliYXZmb3JtYXQv b2dnL2RlY29kZXIuaApAQCAtMjYsNiArMjYsNyBAQAogI2RlZmluZSBBVkZPUk1BVF9PR0dfREVD T0RFUl9ICiAKICNpbmNsdWRlICJsaWJhdmZvcm1hdC9hdmZvcm1hdC5oIgorI2luY2x1ZGUgImxp YmF2Zm9ybWF0L29nZy9jaGFpbi5oIgogCiBzdHJ1Y3Qgb2dnX2NvZGVjIHsKICAgICBjb25zdCBp bnQ4X3QgKm1hZ2ljOwpAQCAtMTMwLDYgKzEzMSw3IEBAIHN0cnVjdCBvZ2cgewogICAgIGludCBj dXJpZHg7CiAgICAgaW50NjRfdCBwYWdlX3BvczsgICAgICAgICAgICAgICAgICAgLy8vPCBmaWxl IG9mZnNldCBvZiB0aGUgY3VycmVudCBwYWdlCiAgICAgc3RydWN0IG9nZ19zdGF0ZSAqc3RhdGU7 CisgICAgT2dnQ2hhaW4gKmNoYWluOyAgICAgICAgICAgICAgICAgICAgLy8vPCBsaW5rcyBvZiB0 aGUgZmlsZSwgTlVMTCBpZiB1bmtub3duCiB9OwogCiAjZGVmaW5lIE9HR19GTEFHX0NPTlQgMQpk aWZmIC0tZ2l0IGEvdGVzdHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNlZWstZmxhYyBiL3Rlc3RzL3Jl Zi9mYXRlL29nZy1jaGFpbi1zZWVrLWZsYWMKaW5kZXggZDI3YWY4MDljNi4uZTllMmE2ZTYzZSAx MDA2NDQKLS0tIGEvdGVzdHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNlZWstZmxhYworKysgYi90ZXN0 cy9yZWYvZmF0ZS9vZ2ctY2hhaW4tc2Vlay1mbGFjCkBAIC0xMCw0ICsxMCw0IEBAIHB0cz0xODAy MjQKIHB0c190aW1lPTQuMDg2NzEyCiBwdHM9MTgwMjI0CiBwdHNfdGltZT00LjA4NjcxMgotZHVy YXRpb249Ti9BCitkdXJhdGlvbj0yNC4wMDAwMDAKZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZi9mYXRl L29nZy1jaGFpbi1zZWVrLW9wdXMgYi90ZXN0cy9yZWYvZmF0ZS9vZ2ctY2hhaW4tc2Vlay1vcHVz CmluZGV4IDE1ZGM4MDE0ZGYuLjdjM2NmMzFmNTYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3JlZi9mYXRl L29nZy1jaGFpbi1zZWVrLW9wdXMKKysrIGIvdGVzdHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNlZWst b3B1cwpAQCAtMTAsNCArMTAsNCBAQCBwdHM9MTkxNjg4CiBwdHNfdGltZT0zLjk5MzUwMAogcHRz PTE5MTY4OAogcHRzX3RpbWU9My45OTM1MDAKLWR1cmF0aW9uPU4vQQorZHVyYXRpb249MjQuMDE5 NTAwCmRpZmYgLS1naXQgYS90ZXN0cy9yZWYvZmF0ZS9vZ2ctY2hhaW4tc2Vlay10aGVvcmEgYi90 ZXN0cy9yZWYvZmF0ZS9vZ2ctY2hhaW4tc2Vlay10aGVvcmEKaW5kZXggNzcyNTlhYjVhOC4uODY3 NjNlYTIwZCAxMDA2NDQKLS0tIGEvdGVzdHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNlZWstdGhlb3Jh CisrKyBiL3Rlc3RzL3JlZi9mYXRlL29nZy1jaGFpbi1zZWVrLXRoZW9yYQpAQCAtMTAsNCArMTAs NCBAQCBwdHM9NzIKIHB0c190aW1lPTQuODAwMDAwCiBwdHM9NzIKIHB0c190aW1lPTQuODAwMDAw Ci1kdXJhdGlvbj0xMS4wMDAwMDAKK2R1cmF0aW9uPTI0LjAwMDAwMApkaWZmIC0tZ2l0IGEvdGVz dHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNlZWstdm9yYmlzIGIvdGVzdHMvcmVmL2ZhdGUvb2dnLWNo YWluLXNlZWstdm9yYmlzCmluZGV4IDgwYjViZTExZGYuLjhlZTcxYzQ3MTEgMTAwNjQ0Ci0tLSBh L3Rlc3RzL3JlZi9mYXRlL29nZy1jaGFpbi1zZWVrLXZvcmJpcworKysgYi90ZXN0cy9yZWYvZmF0 ZS9vZ2ctY2hhaW4tc2Vlay12b3JiaXMKQEAgLTEwLDQgKzEwLDQgQEAgcHRzPTE3OTc3NgogcHRz X3RpbWU9NC4wNzY1NTMKIHB0cz0xNzk3NzYKIHB0c190aW1lPTQuMDc2NTUzCi1kdXJhdGlvbj0x MS4wMDI5MDIKK2R1cmF0aW9uPTI0LjAwMjkwMgpkaWZmIC0tZ2l0IGEvdGVzdHMvcmVmL2ZhdGUv b2dnLXZvcmJpcy1pbml0aWFsLXBhZGRpbmctY2hhaW5lZCBiL3Rlc3RzL3JlZi9mYXRlL29nZy12 b3JiaXMtaW5pdGlhbC1wYWRkaW5nLWNoYWluZWQKaW5kZXggMTAwM2IzYjM5NS4uYmI2M2IyMjY3 MiAxMDA2NDQKLS0tIGEvdGVzdHMvcmVmL2ZhdGUvb2dnLXZvcmJpcy1pbml0aWFsLXBhZGRpbmct Y2hhaW5lZAorKysgYi90ZXN0cy9yZWYvZmF0ZS9vZ2ctdm9yYmlzLWluaXRpYWwtcGFkZGluZy1j aGFpbmVkCkBAIC0xNDEsOCArMTQxLDggQEAgbmJfcHJvZ3JhbXM9MAogbmJfc3RyZWFtX2dyb3Vw cz0wCiBmb3JtYXRfbmFtZT1vZ2cKIHN0YXJ0X3RpbWU9LTAuMDAyOTAyCi1kdXJhdGlvbj0wLjAz MjkwMgorZHVyYXRpb249MC4wNjI5MDIKIHNpemU9NzE1MQotYml0X3JhdGU9MTczODczOQorYml0 X3JhdGU9OTA5NDc4CiBwcm9iZV9zY29yZT0xMDAKIFsvRk9STUFUXQotLSAKMi41Mi4wCgoKRnJv bSBjYmQ0NWM5ZTRiZTNmMmQxYWFlNjM3NjhhZTY4YzFmMDIyZDQxYmY5IE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiBSb21haW4gQmVhdXhpcyA8cm9tYWluLmJlYXV4aXNAZ21haWwuY29t PgpEYXRlOiBUdWUsIDI4IEp1bCAyMDI2IDE2OjQwOjM3IC0wNTAwClN1YmplY3Q6IFtQQVRDSCAw OS8xMF0gYXZmb3JtYXQvb2dnOiBwbGFjZSBjaGFpbmVkIHRpbWVzdGFtcHMgb24gb25lIHRpbWVs aW5lCgpHcmFudWxlIHBvc2l0aW9ucyByZXN0YXJ0IGluIGV2ZXJ5IGxpbmssIHNvIHNoaWZ0IGJ5 IHdoZXJlIGVhY2ggbGluawpiZWdpbnMsIGRvaW5nIGl0IHdoZXJlIHRpbWVzdGFtcHMgYXJlIGhh bmRlZCBvdXQgcmF0aGVyIHRoYW4gd2hlcmUgdGhleQphcmUgc3RvcmVkLCBzaW5jZSBjb2RlYyBw YXJzZXJzIGRlcml2ZSBsYXN0cHRzIGZyb20gdGhlIHJhdyBncmFudWxlIGFuZApwYXJzZW9wdXMu YyByZWFkcyBhIHZhbHVlIG9mIGV4YWN0bHkgemVybyBhcyB0aGUgbWFyayBvZiBhIGxpbmsgaGF2 aW5nCmJlZ3VuLgoKVGhlIHNlZWtpbmcgdGVzdHMgZG8gbm90IG1vdmUgeWV0OiBzZWVraW5nIGFs c28gbmVlZHMgdGhlIHJlYWRlciB0bwpyZXN1bWUgaW5zaWRlIGEgbGluayBpdCBkaWQgbm90IGVu dGVyIGZyb20gdGhlIHN0YXJ0LgotLS0KIGxpYmF2Zm9ybWF0L29nZy9kZWNvZGVyLmMgfCA4MCAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0KIGxpYmF2Zm9ybWF0L29nZy9k ZWNvZGVyLmggfCAgMSArCiAyIGZpbGVzIGNoYW5nZWQsIDcwIGluc2VydGlvbnMoKyksIDExIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L29nZy9kZWNvZGVyLmMgYi9saWJh dmZvcm1hdC9vZ2cvZGVjb2Rlci5jCmluZGV4IGI4NWYxZmIwYjcuLjdhMDJiNTU2NWEgMTAwNjQ0 Ci0tLSBhL2xpYmF2Zm9ybWF0L29nZy9kZWNvZGVyLmMKKysrIGIvbGliYXZmb3JtYXQvb2dnL2Rl Y29kZXIuYwpAQCAtNjMsNiArNjMsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG9nZ19jb2RlYyAq IGNvbnN0IG9nZ19jb2RlY3NbXSA9IHsKIHN0YXRpYyBpbnQ2NF90IG9nZ19jYWxjX3B0cyhBVkZv cm1hdENvbnRleHQgKnMsIGludCBpZHgsIGludDY0X3QgKmR0cyk7CiBzdGF0aWMgaW50IG9nZ19u ZXdfc3RyZWFtKEFWRm9ybWF0Q29udGV4dCAqcywgdWludDMyX3Qgc2VyaWFsKTsKIHN0YXRpYyBp bnQgb2dnX3Jlc3RvcmUoQVZGb3JtYXRDb250ZXh0ICpzKTsKK3N0YXRpYyBpbnQ2NF90IG9nZ19s aW5rX3N0YXJ0X3RpbWUoQVZGb3JtYXRDb250ZXh0ICpzLCBpbnQ2NF90IHBhZ2VfcG9zKTsKIAog c3RhdGljIHZvaWQgZnJlZV9zdHJlYW0oQVZGb3JtYXRDb250ZXh0ICpzLCBpbnQgaSkKIHsKQEAg LTI2MSw2ICsyNjIsOSBAQCBzdGF0aWMgaW50IG9nZ19yZXBsYWNlX3N0cmVhbShBVkZvcm1hdENv bnRleHQgKnMsIHVpbnQzMl90IHNlcmlhbCwgY2hhciAqbWFnaWMsCiAgICAgb3MtPnNlcmlhbCAg PSBzZXJpYWw7CiAgICAgb3MtPmNvZGVjICAgPSBjb2RlYzsKICAgICBvcy0+c2VyaWFsICA9IHNl cmlhbDsKKyAgICAvKiBUaW1lc3RhbXBzIHJlc3RhcnQgd2l0aCB0aGUgbmV3IGxpbmsuIENvZGVj IHBhcnNlcnMgcmVseSBvbiB0aGlzIGJlaW5nCisgICAgICogZXhhY3RseSB6ZXJvIHRvIG5vdGlj ZSBhIGxpbmsgaGFzIGJlZ3VuIC0gc2VlIHBhcnNlb3B1cy5jIC0gYW5kCisgICAgICogb2dnX2Nh bGNfcHRzKCkgcHV0cyB0aGUgbGluayBiYWNrIG9uIHRoZSBmaWxlJ3MgdGltZWxpbmUgYWZ0ZXJ3 YXJkcy4gKi8KICAgICBvcy0+bGFzdHB0cyA9IDA7CiAgICAgb3MtPmxhc3RkdHMgPSAwOwogICAg IG9zLT5mbGFncyAgID0gMDsKQEAgLTY5MSw2ICs2OTUsNyBAQCBzdGF0aWMgaW50IG9nZ19yZWFk X2Nsb3NlKEFWRm9ybWF0Q29udGV4dCAqcykKICAgICBvZ2ctPm5zdHJlYW1zID0gMDsKICAgICBh dl9mcmVlcCgmb2dnLT5zdHJlYW1zKTsKIAorICAgIGF2X2ZyZWVwKCZvZ2ctPmxpbmtfc3RhcnRf dGltZSk7CiAgICAgZmZfb2dnX2ZyZWVfY2hhaW4oJm9nZy0+Y2hhaW4pOwogCiAgICAgcmV0dXJu IDA7CkBAIC03MTUsMzkgKzcyMCw0OSBAQCBzdGF0aWMgaW50IG9nZ19yZWFkX2Nsb3NlKEFWRm9y bWF0Q29udGV4dCAqcykKICAqIHBhc3MgY2FuIGRldGVybWluZSAtIGlzIHJlY292ZXJlZCBhbmQg cmVhcHBsaWVkIHRvIHRoZSBzdW0sIHNvIGEgY2hhaW5lZCBmaWxlCiAgKiBrZWVwcyB0aGUgc2Ft ZSByZWZlcmVuY2UgcG9pbnQgYXMgYW4gdW5jaGFpbmVkIG9uZS4KICAqLwotc3RhdGljIHZvaWQg b2dnX2NoYWluX2dldF9sZW5ndGgoQVZGb3JtYXRDb250ZXh0ICpzKQorc3RhdGljIHZvaWQgb2dn X2NoYWluX2J1aWxkX3RpbWVsaW5lKEFWRm9ybWF0Q29udGV4dCAqcykKIHsKICAgICBzdHJ1Y3Qg b2dnICpvZ2cgPSBzLT5wcml2X2RhdGE7CiAgICAgaW50NjRfdCB0b3RhbCA9IDAsIGxhc3QsIHN0 YXJ0X29mZnNldDsKKyAgICBpbnQgbmJfbGlua3M7CiAgICAgQVZTdHJlYW0gKnN0OwogCiAgICAg LyogQ2hhaW5zIGNhcnJ5aW5nIHNldmVyYWwgYml0c3RyZWFtcyBwZXIgbGluayBhcmUgbm90IHN1 cHBvcnRlZC4gKi8KICAgICBpZiAoIW9nZy0+Y2hhaW4gfHwgb2dnLT5jaGFpbi0+bmJfbGlua3Mg PCAyIHx8IG9nZy0+bnN0cmVhbXMgIT0gMSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3QgPSBz LT5zdHJlYW1zWzBdOworICAgIG5iX2xpbmtzID0gb2dnLT5jaGFpbi0+bmJfbGlua3M7CisgICAg c3QgICAgICAgPSBzLT5zdHJlYW1zWzBdOwogCiAgICAgLyogT25seSBhdmFpbGFibGUgd2hlbiBv Z2dfZ2V0X2xlbmd0aCgpIG1hbmFnZWQgdG8gdGltZSB0aGUgbGFzdCBsaW5rOwogICAgICAqIHdp dGhvdXQgaXQgdGhlIHN1bSBzaW1wbHkgc3RhcnRzIGZyb20gemVyby4gKi8KICAgICBzdGFydF9v ZmZzZXQgPSAwOwogICAgIGlmIChzdC0+ZHVyYXRpb24gIT0gQVZfTk9QVFNfVkFMVUUpIHsKICAg ICAgICAgbGFzdCA9IG9nZ19ncHRvcHRzKHMsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICBvZ2ctPmNoYWluLT5saW5rc1tvZ2ctPmNoYWluLT5uYl9saW5rcyAtIDFdCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBvZ2ctPmNoYWluLT5saW5rc1tuYl9saW5rcyAtIDFdCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT5zdHJlYW1zWzBdLT5sYXN0X3BhZ2UuZ3AsIE5VTEwp OwogICAgICAgICBpZiAobGFzdCAhPSBBVl9OT1BUU19WQUxVRSkKICAgICAgICAgICAgIHN0YXJ0 X29mZnNldCA9IGxhc3QgLSBzdC0+ZHVyYXRpb247CiAgICAgfQogCi0gICAgZm9yIChpbnQgaSA9 IDA7IGkgPCBvZ2ctPmNoYWluLT5uYl9saW5rczsgaSsrKSB7CisgICAgb2dnLT5saW5rX3N0YXJ0 X3RpbWUgPSBhdl9jYWxsb2MobmJfbGlua3MsIHNpemVvZigqb2dnLT5saW5rX3N0YXJ0X3RpbWUp KTsKKyAgICBpZiAoIW9nZy0+bGlua19zdGFydF90aW1lKQorICAgICAgICByZXR1cm47CisKKyAg ICBmb3IgKGludCBpID0gMDsgaSA8IG5iX2xpbmtzOyBpKyspIHsKICAgICAgICAgY29uc3QgT2dn TGluayAqbGluayA9IG9nZy0+Y2hhaW4tPmxpbmtzW2ldOwogICAgICAgICBpbnQ2NF90IHB0czsK IAogICAgICAgICBpZiAobGluay0+bmJfc3RyZWFtcyAhPSAxKQotICAgICAgICAgICAgcmV0dXJu OworICAgICAgICAgICAgZ290byBmYWlsOworCisgICAgICAgIC8qIExvY2FsIHRpbWVzdGFtcHMg d2l0aGluIHRoaXMgbGluayBhcmUgb2Zmc2V0IGJ5IGV2ZXJ5dGhpbmcgdGhhdAorICAgICAgICAg KiBjYW1lIGJlZm9yZSBpdC4gKi8KKyAgICAgICAgb2dnLT5saW5rX3N0YXJ0X3RpbWVbaV0gPSB0 b3RhbDsKIAogICAgICAgICBwdHMgPSBvZ2dfZ3B0b3B0cyhzLCAwLCBsaW5rLT5zdHJlYW1zWzBd LT5sYXN0X3BhZ2UuZ3AsIE5VTEwpOwogICAgICAgICBpZiAocHRzID09IEFWX05PUFRTX1ZBTFVF IHx8IHB0cyA8IDApCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBnb3RvIGZhaWw7 CiAKICAgICAgICAgdG90YWwgKz0gcHRzOwogICAgIH0KQEAgLTc1Niw2ICs3NzEsMzIgQEAgc3Rh dGljIHZvaWQgb2dnX2NoYWluX2dldF9sZW5ndGgoQVZGb3JtYXRDb250ZXh0ICpzKQogCiAgICAg c3QtPmR1cmF0aW9uID0gdG90YWw7CiAgICAgcy0+ZHVyYXRpb24gID0gYXZfcmVzY2FsZV9xKHRv dGFsLCBzdC0+dGltZV9iYXNlLCBBVl9USU1FX0JBU0VfUSk7CisKKyAgICByZXR1cm47CisKK2Zh aWw6CisgICAgYXZfZnJlZXAoJm9nZy0+bGlua19zdGFydF90aW1lKTsKK30KKworLyoqCisgKiBX aGVyZSB0aGUgbGluayBob2xkaW5nIGEgZ2l2ZW4gZmlsZSBvZmZzZXQgYmVnaW5zIG9uIHRoZSBm aWxlJ3MgdGltZWxpbmUsCisgKiBpbiB0aGUgc3RyZWFtJ3MgdGltZSBiYXNlLgorICoKKyAqIFpl cm8gd2hlbiB0aGUgY2hhaW4gd2FzIG5vdCBzY2FubmVkLCB3aGljaCBpcyB3aGF0IGxlYXZlcyBh biB1bnNlZWthYmxlCisgKiBpbnB1dCBydW5uaW5nIG9uIHRoZSBkZW11eGVyJ3Mgb3duIGNhcnJp ZWQtZm9yd2FyZCB0aW1lc3RhbXBzIGFsb25lLgorICovCitzdGF0aWMgaW50NjRfdCBvZ2dfbGlu a19zdGFydF90aW1lKEFWRm9ybWF0Q29udGV4dCAqcywgaW50NjRfdCBwYWdlX3BvcykKK3sKKyAg ICBzdHJ1Y3Qgb2dnICpvZ2cgPSBzLT5wcml2X2RhdGE7CisKKyAgICBpZiAoIW9nZy0+Y2hhaW4g fHwgIW9nZy0+bGlua19zdGFydF90aW1lKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGZvciAo aW50IGkgPSBvZ2ctPmNoYWluLT5uYl9saW5rcyAtIDE7IGkgPiAwOyBpLS0pCisgICAgICAgIGlm IChwYWdlX3BvcyA+PSBvZ2ctPmNoYWluLT5saW5rc1tpXS0+c3RyZWFtc1swXS0+Zmlyc3RfcGFn ZS5wYWdlX3BvcykKKyAgICAgICAgICAgIHJldHVybiBvZ2ctPmxpbmtfc3RhcnRfdGltZVtpXTsK KworICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgaW50IG9nZ19yZWFkX2hlYWRlcihBVkZvcm1h dENvbnRleHQgKnMpCkBAIC04MDQsNyArODQ1LDcgQEAgc3RhdGljIGludCBvZ2dfcmVhZF9oZWFk ZXIoQVZGb3JtYXRDb250ZXh0ICpzKQogICAgICAqIGR1cmF0aW9uIG9nZ19nZXRfbGVuZ3RoKCkg Zm91bmQgc3RhbmRzLiAqLwogICAgIGlmIChzLT5wYi0+c2Vla2FibGUgJiBBVklPX1NFRUtBQkxF X05PUk1BTCkgewogICAgICAgICBmZl9vZ2dfcGFyc2VfY2hhaW4ocywgJm9nZy0+Y2hhaW4sIE5V TEwpOwotICAgICAgICBvZ2dfY2hhaW5fZ2V0X2xlbmd0aChzKTsKKyAgICAgICAgb2dnX2NoYWlu X2J1aWxkX3RpbWVsaW5lKHMpOwogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAtODE1LDI1ICs4 NTYsNDIgQEAgc3RhdGljIGludDY0X3Qgb2dnX2NhbGNfcHRzKEFWRm9ybWF0Q29udGV4dCAqcywg aW50IGlkeCwgaW50NjRfdCAqZHRzKQogICAgIHN0cnVjdCBvZ2cgKm9nZyAgICAgICA9IHMtPnBy aXZfZGF0YTsKICAgICBzdHJ1Y3Qgb2dnX3N0cmVhbSAqb3MgPSBvZ2ctPnN0cmVhbXMgKyBpZHg7 CiAgICAgaW50NjRfdCBwdHMgICAgICAgICAgID0gQVZfTk9QVFNfVkFMVUU7CisgICAgLyogR3Jh bnVsZSBwb3NpdGlvbnMgcmVzdGFydCBhdCB6ZXJvIGluIGV2ZXJ5IGxpbmsgb2YgYSBjaGFpbiwg c28gb24gdGhlaXIKKyAgICAgKiBvd24gdGhleSBwbGFjZSBhIHBhY2tldCB3aXRoaW4gaXRzIGxp bmsgcmF0aGVyIHRoYW4gd2l0aGluIHRoZSBmaWxlLgorICAgICAqIFNoaWZ0aW5nIGJ5IHdoZXJl IHRoZSBsaW5rIGJlZ2lucyBtYWtlcyB0aGUgdGltZWxpbmUgbW9ub3RvbmljIGFjcm9zcworICAg ICAqIHRoZSB3aG9sZSBmaWxlLCB3aGljaCBpcyB3aGF0IHRoZSBnZW5lcmljIGJpbmFyeSBzZWFy Y2ggaW4KKyAgICAgKiBmZl9zZWVrX2ZyYW1lX2JpbmFyeSgpIGFzc3VtZXMuCisgICAgICoKKyAg ICAgKiBUaGUgc2hpZnQgYmVsb25ncyBoZXJlLCB3aGVyZSB0aW1lc3RhbXBzIGFyZSBoYW5kZWQg b3V0LCByYXRoZXIgdGhhbgorICAgICAqIHdoZXJlIHRoZXkgYXJlIHN0b3JlZDogY29kZWMgcGFy c2VycyBkZXJpdmUgb3MtPmxhc3RwdHMgZnJvbSB0aGUgcmF3CisgICAgICogZ3JhbnVsZSB0aGVt c2VsdmVzLCBhbmQgcGFyc2VvcHVzLmMgdXNlcyBhIHZhbHVlIG9mIGV4YWN0bHkgemVybyB0bwor ICAgICAqIHJlY29nbmlzZSB0aGF0IGEgbGluayBoYXMgYmVndW4uIEV2ZXJ5dGhpbmcgdXBzdHJl YW0gb2YgdGhpcyBwb2ludAorICAgICAqIHN0YXlzIGluIHRoZSBsaW5rJ3Mgb3duIGZyYW1lIG9m IHJlZmVyZW5jZS4gKi8KKyAgICBpbnQ2NF90IG9mZnNldCA9IG9nZ19saW5rX3N0YXJ0X3RpbWUo cywgb3MtPnBhZ2VfcG9zKTsKIAogICAgIGlmIChkdHMpCiAgICAgICAgICpkdHMgPSBBVl9OT1BU U19WQUxVRTsKIAogICAgIGlmIChvcy0+bGFzdHB0cyAhPSBBVl9OT1BUU19WQUxVRSkgewotICAg ICAgICBwdHMgICAgICAgICA9IG9zLT5sYXN0cHRzOworICAgICAgICBwdHMgICAgICAgICA9IG9z LT5sYXN0cHRzICsgb2Zmc2V0OwogICAgICAgICBvcy0+bGFzdHB0cyA9IEFWX05PUFRTX1ZBTFVF OwogICAgIH0KICAgICBpZiAob3MtPmxhc3RkdHMgIT0gQVZfTk9QVFNfVkFMVUUpIHsKICAgICAg ICAgaWYgKGR0cykKLSAgICAgICAgICAgICpkdHMgPSBvcy0+bGFzdGR0czsKKyAgICAgICAgICAg ICpkdHMgPSBvcy0+bGFzdGR0cyArIG9mZnNldDsKICAgICAgICAgb3MtPmxhc3RkdHMgPSBBVl9O T1BUU19WQUxVRTsKICAgICB9CiAgICAgaWYgKG9zLT5wYWdlX2VuZCkgewogICAgICAgICBpZiAo b3MtPmdyYW51bGUgIT0gLTFMTCkgewotICAgICAgICAgICAgaWYgKG9zLT5jb2RlYyAmJiBvcy0+ Y29kZWMtPmdyYW51bGVfaXNfc3RhcnQpCisgICAgICAgICAgICBpZiAob3MtPmNvZGVjICYmIG9z LT5jb2RlYy0+Z3JhbnVsZV9pc19zdGFydCkgewogICAgICAgICAgICAgICAgIHB0cyA9IG9nZ19n cHRvcHRzKHMsIGlkeCwgb3MtPmdyYW51bGUsIGR0cyk7Ci0gICAgICAgICAgICBlbHNlCisgICAg ICAgICAgICAgICAgaWYgKHB0cyAhPSBBVl9OT1BUU19WQUxVRSkKKyAgICAgICAgICAgICAgICAg ICAgcHRzICs9IG9mZnNldDsKKyAgICAgICAgICAgICAgICBpZiAoZHRzICYmICpkdHMgIT0gQVZf Tk9QVFNfVkFMVUUpCisgICAgICAgICAgICAgICAgICAgICpkdHMgKz0gb2Zmc2V0OworICAgICAg ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBvcy0+bGFzdHB0cyA9IG9nZ19ncHRvcHRz KHMsIGlkeCwgb3MtPmdyYW51bGUsICZvcy0+bGFzdGR0cyk7CisgICAgICAgICAgICB9CiAgICAg ICAgICAgICBvcy0+Z3JhbnVsZSA9IC0xTEw7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQg YS9saWJhdmZvcm1hdC9vZ2cvZGVjb2Rlci5oIGIvbGliYXZmb3JtYXQvb2dnL2RlY29kZXIuaApp bmRleCBmYTY3NTMzMDQxLi5iZjM0ZThlM2ZjIDEwMDY0NAotLS0gYS9saWJhdmZvcm1hdC9vZ2cv ZGVjb2Rlci5oCisrKyBiL2xpYmF2Zm9ybWF0L29nZy9kZWNvZGVyLmgKQEAgLTEzMiw2ICsxMzIs NyBAQCBzdHJ1Y3Qgb2dnIHsKICAgICBpbnQ2NF90IHBhZ2VfcG9zOyAgICAgICAgICAgICAgICAg ICAvLy88IGZpbGUgb2Zmc2V0IG9mIHRoZSBjdXJyZW50IHBhZ2UKICAgICBzdHJ1Y3Qgb2dnX3N0 YXRlICpzdGF0ZTsKICAgICBPZ2dDaGFpbiAqY2hhaW47ICAgICAgICAgICAgICAgICAgICAvLy88 IGxpbmtzIG9mIHRoZSBmaWxlLCBOVUxMIGlmIHVua25vd24KKyAgICBpbnQ2NF90ICpsaW5rX3N0 YXJ0X3RpbWU7ICAgICAgICAgICAvLy88IHN0YXJ0IG9mIGVhY2ggbGluayBvbiB0aGUgZmlsZSB0 aW1lbGluZQogfTsKIAogI2RlZmluZSBPR0dfRkxBR19DT05UIDEKLS0gCjIuNTIuMAoKCkZyb20g NWQxOWI4MzI3MzBkODY0OTZkYWJkODczZGIxMTI4ZTEzYTk0N2VjZiBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogUm9tYWluIEJlYXV4aXMgPHJvbWFpbi5iZWF1eGlzQGdtYWlsLmNvbT4K RGF0ZTogVHVlLCAyOCBKdWwgMjAyNiAxNjo0MDozNyAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMTAv MTBdIGF2Zm9ybWF0L29nZzogcmVzdW1lIHJlYWRpbmcgaW5zaWRlIGEga25vd24gbGluawoKb2dn X3JlYWRfcGFnZSgpIHRlbGxzIGEgY2hhaW5lZCBzdHJlYW0gZnJvbSB0aGUgaW5pdGlhbCBydW4g b2YgaGVhZGVycwpieSBnb3RfZGF0YSwgd2hpY2ggb2dnX3Jlc2V0KCkgY2xlYXJlZCwgc28gYWZ0 ZXIgZXZlcnkgcmVwb3NpdGlvbiB0aGUKZGVtdXhlciBiZWxpZXZlZCBpdHNlbGYgYmFjayBhdCB0 aGUgc3RhcnQgb2YgdGhlIGZpbGUgYW5kIGFkZGVkIGEgc3RyZWFtCnJhdGhlciB0aGFuIHJlcGxh Y2luZyBvbmUuCgpMZWF2ZSBpdCBhbG9uZSBvbiBhIHJlcG9zaXRpb24sIGFuZCB3aGVyZSB0aGUg Y2hhaW4gaGFzIGJlZW4gc2Nhbm5lZCBsZXQKdGhlIHN0cmVhbSBjYXJyeSBvbiB3aXRoIGEgc2Vy aWFsIHByb3ZlZCB0byBiZSB0aGUgZmlsZSdzIG93biwgc28gdGhhdApzZWVrcyBsYW5kIGF0IG9y IGJlZm9yZSB3aGF0IHdhcyBhc2tlZCBmb3IsIGluIHRoZSBsaW5rIHRoYXQgaG9sZHMgaXQ6Cgog IHNlZWsgdG8gICAgICAycyAgICAgIDRzICAgICAgN3MgICAgIDEycyAgICAgMTVzICAgICAyMnMK ICBmbGFjICAgICAgMC4wMDAgICAzLjA2NSAgIDYuMDIyICAxMC4xMDggIDEzLjAwMCAgMjEuMTcz CiAgdm9yYmlzICAgLTAuMDAzICAgMy4wNTUgICA2LjAxMiAgMTAuMDk4ICAxNC4wMTIgIDIxLjE2 MwogIG9wdXMgICAgICAxLjk5NCAgIDMuOTk0ICAgNy4wMDAgIDEyLjAwMCAgMTQuMDA3ICAyMS4w MDcKICB0aGVvcmEgICAgMS42MDAgICA0LjAwMCAgIDYuNjAwICAxMS40MDAgIDE0LjYwMCAgMjEu ODAwCi0tLQogbGliYXZmb3JtYXQvb2dnL2RlY29kZXIuYyAgICAgICAgICAgIHwgNjkgKysrKysr KysrKysrKysrKysrKysrKysrKystLQogbGliYXZmb3JtYXQvb2dnL2RlY29kZXIuaCAgICAgICAg ICAgIHwgIDMgKy0KIHRlc3RzL3JlZi9mYXRlL29nZy1jaGFpbi1zZWVrLWZsYWMgICB8IDIwICsr KystLS0tCiB0ZXN0cy9yZWYvZmF0ZS9vZ2ctY2hhaW4tc2Vlay1vcHVzICAgfCAxNiArKystLS0t CiB0ZXN0cy9yZWYvZmF0ZS9vZ2ctY2hhaW4tc2Vlay10aGVvcmEgfCAxNiArKystLS0tCiB0ZXN0 cy9yZWYvZmF0ZS9vZ2ctY2hhaW4tc2Vlay12b3JiaXMgfCAyMCArKysrLS0tLQogNiBmaWxlcyBj aGFuZ2VkLCAxMDIgaW5zZXJ0aW9ucygrKSwgNDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv bGliYXZmb3JtYXQvb2dnL2RlY29kZXIuYyBiL2xpYmF2Zm9ybWF0L29nZy9kZWNvZGVyLmMKaW5k ZXggN2EwMmI1NTY1YS4uZDFjODliY2E1NiAxMDA2NDQKLS0tIGEvbGliYXZmb3JtYXQvb2dnL2Rl Y29kZXIuYworKysgYi9saWJhdmZvcm1hdC9vZ2cvZGVjb2Rlci5jCkBAIC0xODcsNyArMTg3LDYg QEAgc3RhdGljIHZvaWQgb2dnX3N0cmVhbV9yZXNldChzdHJ1Y3Qgb2dnX3N0cmVhbSAqb3MsIGlu dCBhdF9kYXRhX3N0YXJ0KQogICAgIG9zLT5pbmNvbXBsZXRlID0gMDsKICAgICBvcy0+cGFnZV9z dGFydCA9IDA7CiAgICAgb3MtPnBhZ2VfZW5kICAgPSAwOwotICAgIG9zLT5nb3RfZGF0YSAgID0g MDsKICAgICBvcy0+bGFzdHB0cyAgICA9IGF0X2RhdGFfc3RhcnQgPyAwIDogQVZfTk9QVFNfVkFM VUU7CiAgICAgb3MtPmxhc3RkdHMgICAgPSBBVl9OT1BUU19WQUxVRTsKICAgICBvcy0+c3RhcnRf dHJpbW1pbmcgPSAwOwpAQCAtMjc1LDYgKzI3NCw1NyBAQCBzdGF0aWMgaW50IG9nZ19yZXBsYWNl X3N0cmVhbShBVkZvcm1hdENvbnRleHQgKnMsIHVpbnQzMl90IHNlcmlhbCwgY2hhciAqbWFnaWMs CiAgICAgcmV0dXJuIGk7CiB9CiAKK3N0YXRpYyBpbnQgb2dnX2NoYWluX2hhc19zZXJpYWwoY29u c3QgT2dnQ2hhaW4gKmNoYWluLCB1aW50MzJfdCBzZXJpYWwpCit7CisgICAgZm9yIChpbnQgaSA9 IDA7IGkgPCBjaGFpbi0+bmJfbGlua3M7IGkrKykKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGog PCBjaGFpbi0+bGlua3NbaV0tPm5iX3N0cmVhbXM7IGorKykKKyAgICAgICAgICAgIGlmIChjaGFp bi0+bGlua3NbaV0tPnN0cmVhbXNbal0tPnNlcmlhbCA9PSBzZXJpYWwpCisgICAgICAgICAgICAg ICAgcmV0dXJuIDE7CisKKyAgICByZXR1cm4gMDsKK30KKworLyoqCisgKiBDb250aW51ZSByZWFk aW5nIGluIGEgbGluayB0aGUgc2NhbiBhbHJlYWR5IGZvdW5kLCB3aGVuIGEgc2VlayBsYW5kcyBp bnNpZGUKKyAqIGl0IHJhdGhlciB0aGFuIG9uIGl0cyBmaXJzdCBwYWdlLgorICoKKyAqIG9nZ19y ZXBsYWNlX3N0cmVhbSgpIGNhbm5vdCBzZXJ2ZSBoZXJlOiBpdCBpZGVudGlmaWVzIHRoZSBjb2Rl YyBmcm9tIHRoZQorICogaGVhZGVyIHBhY2tldCwgd2hpY2ggb25seSBleGlzdHMgYXQgdGhlIGhl YWQgb2YgYSBsaW5rLiBMYW5kaW5nIGFueXdoZXJlCisgKiBlbHNlIGxlYXZlcyBpdCB3aXRoIGF1 ZGlvIGRhdGEgaXQgY2Fubm90IHJlY29nbmlzZS4gSGF2aW5nIHNjYW5uZWQgdGhlCisgKiBjaGFp biwgdGhlIHNlcmlhbCBpcyBrbm93biB0byBiZWxvbmcgdG8gdGhpcyBmaWxlLCBhbmQgdGhlIHBh cmFtZXRlcnMgYXJlCisgKiB0aGUgb25lcyBhbHJlYWR5IGluIHVzZSwgc28gdGhlIHN0cmVhbSBj YW4gc2ltcGx5IGNhcnJ5IG9uIHdpdGggaXQuCisgKgorICogTGFuZGluZyBoZXJlIHNheXMgbm90 aGluZyBhYm91dCB0aGUgdGltZXN0YW1wOiB0aGUgcG9zaXRpb24gaXMgc29tZXdoZXJlCisgKiBp bnNpZGUgdGhlIGxpbmssIG5vdCBhdCBpdHMgc3RhcnQuIFRpbWVzdGFtcHMgc3RheSB1bmtub3du IHVudGlsIGEgcGFnZQorICogZ3JhbnVsZSBzdXBwbGllcyBvbmUsIHdoaWNoIG9nZ19jYWxjX3B0 cygpIHRoZW4gcGxhY2VzIG9uIHRoZSBmaWxlJ3MKKyAqIHRpbWVsaW5lLgorICoKKyAqIEByZXR1 cm4gdGhlIHN0cmVhbSBpbmRleCwgb3IgYSBuZWdhdGl2ZSB2YWx1ZSBpZiB0aGUgbGluayBpcyB1 bmtub3duCisgKi8KK3N0YXRpYyBpbnQgb2dnX2Fkb3B0X2tub3duX2xpbmsoQVZGb3JtYXRDb250 ZXh0ICpzLCB1aW50MzJfdCBzZXJpYWwpCit7CisgICAgc3RydWN0IG9nZyAqb2dnID0gcy0+cHJp dl9kYXRhOworICAgIHN0cnVjdCBvZ2dfc3RyZWFtICpvczsKKworICAgIGlmICghb2dnLT5jaGFp biB8fCBvZ2ctPm5zdHJlYW1zICE9IDEpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmICgh b2dnX2NoYWluX2hhc19zZXJpYWwob2dnLT5jaGFpbiwgc2VyaWFsKSkKKyAgICAgICAgcmV0dXJu IC0xOworCisgICAgb3MgPSAmb2dnLT5zdHJlYW1zWzBdOworICAgIGlmICghb3MtPmNvZGVjKQor ICAgICAgICByZXR1cm4gLTE7CisKKyAgICBvcy0+c2VyaWFsICAgICAgICAgPSBzZXJpYWw7Cisg ICAgb3MtPmxhc3RwdHMgICAgICAgID0gb3MtPmxhc3RkdHMgPSBBVl9OT1BUU19WQUxVRTsKKyAg ICBvcy0+ZmxhZ3MgICAgICAgICAgPSAwOworICAgIG9zLT5zdGFydF90cmltbWluZyA9IDA7Cisg ICAgb3MtPmVuZF90cmltbWluZyAgID0gMDsKKworICAgIHJldHVybiAwOworfQorCiBzdGF0aWMg aW50IG9nZ19uZXdfc3RyZWFtKEFWRm9ybWF0Q29udGV4dCAqcywgdWludDMyX3Qgc2VyaWFsKQog ewogICAgIHN0cnVjdCBvZ2cgKm9nZyA9IHMtPnByaXZfZGF0YTsKQEAgLTM5NiwxMCArNDQ2LDE5 IEBAIHN0YXRpYyBpbnQgb2dnX3JlYWRfcGFnZShBVkZvcm1hdENvbnRleHQgKnMsIGludCAqc2lk LCBpbnQgcHJvYmluZykKIAogICAgIC8qIENSQyBpcyBjb3JyZWN0IHNvIHdlIGNhbiBiZSA5OSUg c3VyZSB0aGVyZSdzIGFuIGFjdHVhbCBjaGFuZ2UgaGVyZSAqLwogICAgIGlmIChpZHggPCAwKSB7 Ci0gICAgICAgIGlmIChkYXRhX3BhY2tldHNfc2VlbihvZ2cpKQotICAgICAgICAgICAgaWR4ID0g b2dnX3JlcGxhY2Vfc3RyZWFtKHMsIHBhZ2Uuc2VyaWFsLCByZWFkb3V0X2J1Ziwgc2l6ZSwgcHJv YmluZyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGlkeCA9IG9nZ19uZXdfc3RyZWFtKHMs IHBhZ2Uuc2VyaWFsKTsKKyAgICAgICAgLyogQSBwYWdlIHRoYXQgb3BlbnMgYSBsaW5rIGNhcnJp ZXMgdGhlIGhlYWRlciB0aGUgY29kZWMgaXMKKyAgICAgICAgICogaWRlbnRpZmllZCBmcm9tOyBh bnl3aGVyZSBlbHNlLCBvbmx5IHRoZSBzY2FuIGNhbiBzYXkgd2hhdCB0aGlzCisgICAgICAgICAq IHNlcmlhbCBpcy4gKi8KKyAgICAgICAgaWYgKCEocGFnZS5mbGFncyAmIE9HR19GTEFHX0JPUykp CisgICAgICAgICAgICBpZHggPSBvZ2dfYWRvcHRfa25vd25fbGluayhzLCBwYWdlLnNlcmlhbCk7 CisKKyAgICAgICAgaWYgKGlkeCA8IDApIHsKKyAgICAgICAgICAgIGlmIChkYXRhX3BhY2tldHNf c2VlbihvZ2cpKQorICAgICAgICAgICAgICAgIGlkeCA9IG9nZ19yZXBsYWNlX3N0cmVhbShzLCBw YWdlLnNlcmlhbCwgcmVhZG91dF9idWYsIHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHByb2JpbmcpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg ICAgIGlkeCA9IG9nZ19uZXdfc3RyZWFtKHMsIHBhZ2Uuc2VyaWFsKTsKKyAgICAgICAgfQogCiAg ICAgICAgIGlmIChpZHggPCAwKSB7CiAgICAgICAgICAgICBhdl9sb2cocywgQVZfTE9HX0VSUk9S LCAiZmFpbGVkIHRvIGNyZWF0ZSBvciByZXBsYWNlIHN0cmVhbVxuIik7CmRpZmYgLS1naXQgYS9s aWJhdmZvcm1hdC9vZ2cvZGVjb2Rlci5oIGIvbGliYXZmb3JtYXQvb2dnL2RlY29kZXIuaAppbmRl eCBiZjM0ZThlM2ZjLi4xNjJjYjgyZTcwIDEwMDY0NAotLS0gYS9saWJhdmZvcm1hdC9vZ2cvZGVj b2Rlci5oCisrKyBiL2xpYmF2Zm9ybWF0L29nZy9kZWNvZGVyLmgKQEAgLTgwLDYgKzgwLDggQEAg c3RydWN0IG9nZ19zdHJlYW0gewogICAgIGludCBuYl9oZWFkZXI7ICAgICAgICAgICAgICAvLy88 IHNldCB0byB0aGUgbnVtYmVyIG9mIHBhcnNlZCBoZWFkZXJzCiAgICAgdWludDY0X3Qgc3RhcnRf Z3JhbnVsZTsKICAgICBpbnQgZ290X3N0YXJ0OworICAgIGludCBnb3RfZGF0YTsgICAgICAgICAg ICAgICAvLy88IHRoZSBzdHJlYW0gaGFzIHByb2R1Y2VkIGRhdGEgcGFja2V0cywgc28gdGhlCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgaW5pdGlhbCBoZWFkZXJzIGFyZSBi ZWhpbmQgdXMKICAgICBpbnQga2V5ZnJhbWVfc2VlazsgICAgICAgICAgLy8vPCBzZXQgYnkgYSBz ZWVrLCBhbmQgb3V0bGl2ZXMgdGhlIHNlZWsncyBvd24gcmVzZXRzCiAKICAgICAvKiBUaGUgYnVm ZmVyIGl0c2VsZiwgYXMgb3Bwb3NlZCB0byB3aGF0IGlzIGN1cnJlbnRseSBpbiBpdC4gKi8KQEAg LTEwNCw3ICsxMDYsNiBAQCBzdHJ1Y3Qgb2dnX3N0cmVhbSB7CiAgICAgaW50IGluY29tcGxldGU7 ICAgICAgICAgICAgIC8vLzwgd2hldGhlciB3ZSdyZSBleHBlY3RpbmcgYSBjb250aW51YXRpb24g aW4gdGhlIG5leHQgcGFnZQogICAgIGludCBwYWdlX3N0YXJ0OyAgICAgICAgICAgICAvLy88IGN1 cnJlbnQgcGFja2V0IGlzIHRoZSBmaXJzdCBvbmUgc3RhcnRpbmcgaW4gdGhlIHBhZ2UKICAgICBp bnQgcGFnZV9lbmQ7ICAgICAgICAgICAgICAgLy8vPCBjdXJyZW50IHBhY2tldCBpcyB0aGUgbGFz dCBvbmUgY29tcGxldGVkIGluIHRoZSBwYWdlCi0gICAgaW50IGdvdF9kYXRhOyAgICAgICAgICAg ICAgIC8vLzwgMSBpZiB0aGUgc3RyZWFtIGdvdCBzb21lIGRhdGEgKG5vbi1pbml0aWFsIHBhY2tl dHMpLCAwIG90aGVyd2lzZQogICAgIGludDY0X3QgbGFzdHB0czsKICAgICBpbnQ2NF90IGxhc3Rk dHM7CiAgICAgaW50IHN0YXJ0X3RyaW1taW5nOyAgICAgICAgIC8vLzwgc2V0IHRoZSBudW1iZXIg b2YgcGFja2V0cyB0byBkcm9wIGZyb20gdGhlIHN0YXJ0CmRpZmYgLS1naXQgYS90ZXN0cy9yZWYv ZmF0ZS9vZ2ctY2hhaW4tc2Vlay1mbGFjIGIvdGVzdHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNlZWst ZmxhYwppbmRleCBlOWUyYTZlNjNlLi4yYTM5YjU1ZTJjIDEwMDY0NAotLS0gYS90ZXN0cy9yZWYv ZmF0ZS9vZ2ctY2hhaW4tc2Vlay1mbGFjCisrKyBiL3Rlc3RzL3JlZi9mYXRlL29nZy1jaGFpbi1z ZWVrLWZsYWMKQEAgLTEsMTMgKzEsMTMgQEAKIHB0cz0wCiBwdHNfdGltZT0wLjAwMDAwMAotcHRz PTE3NjEyOAotcHRzX3RpbWU9My45OTM4MzIKLXB0cz0xODAyMjQKLXB0c190aW1lPTQuMDg2NzEy Ci1wdHM9MTgwMjI0Ci1wdHNfdGltZT00LjA4NjcxMgotcHRzPTE4MDIyNAotcHRzX3RpbWU9NC4w ODY3MTIKLXB0cz0xODAyMjQKLXB0c190aW1lPTQuMDg2NzEyCitwdHM9MTM1MTY4CitwdHNfdGlt ZT0zLjA2NTAzNAorcHRzPTI2NTU1NgorcHRzX3RpbWU9Ni4wMjE2NzgKK3B0cz00NDU3ODAKK3B0 c190aW1lPTEwLjEwODM5MAorcHRzPTU3MzMwMAorcHRzX3RpbWU9MTMuMDAwMDAwCitwdHM9OTMz NzQ4CitwdHNfdGltZT0yMS4xNzM0MjQKIGR1cmF0aW9uPTI0LjAwMDAwMApkaWZmIC0tZ2l0IGEv dGVzdHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNlZWstb3B1cyBiL3Rlc3RzL3JlZi9mYXRlL29nZy1j aGFpbi1zZWVrLW9wdXMKaW5kZXggN2MzY2YzMWY1Ni4uYzI2NDdmYzQyZiAxMDA2NDQKLS0tIGEv dGVzdHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNlZWstb3B1cworKysgYi90ZXN0cy9yZWYvZmF0ZS9v Z2ctY2hhaW4tc2Vlay1vcHVzCkBAIC0yLDEyICsyLDEyIEBAIHB0cz05NTY4OAogcHRzX3RpbWU9 MS45OTM1MDAKIHB0cz0xOTE2ODgKIHB0c190aW1lPTMuOTkzNTAwCi1wdHM9MTkxNjg4Ci1wdHNf dGltZT0zLjk5MzUwMAotcHRzPTE5MTY4OAotcHRzX3RpbWU9My45OTM1MDAKLXB0cz0xOTE2ODgK LXB0c190aW1lPTMuOTkzNTAwCi1wdHM9MTkxNjg4Ci1wdHNfdGltZT0zLjk5MzUwMAorcHRzPTMz NjAwMAorcHRzX3RpbWU9Ny4wMDAwMDAKK3B0cz01NzYwMDAKK3B0c190aW1lPTEyLjAwMDAwMAor cHRzPTY3MjMxMgorcHRzX3RpbWU9MTQuMDA2NTAwCitwdHM9MTAwODMxMgorcHRzX3RpbWU9MjEu MDA2NTAwCiBkdXJhdGlvbj0yNC4wMTk1MDAKZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZi9mYXRlL29n Zy1jaGFpbi1zZWVrLXRoZW9yYSBiL3Rlc3RzL3JlZi9mYXRlL29nZy1jaGFpbi1zZWVrLXRoZW9y YQppbmRleCA4Njc2M2VhMjBkLi4wYWU1YjU3YjY0IDEwMDY0NAotLS0gYS90ZXN0cy9yZWYvZmF0 ZS9vZ2ctY2hhaW4tc2Vlay10aGVvcmEKKysrIGIvdGVzdHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNl ZWstdGhlb3JhCkBAIC0yLDEyICsyLDEyIEBAIHB0cz0yNAogcHRzX3RpbWU9MS42MDAwMDAKIHB0 cz02MAogcHRzX3RpbWU9NC4wMDAwMDAKLXB0cz03MgotcHRzX3RpbWU9NC44MDAwMDAKLXB0cz03 MgotcHRzX3RpbWU9NC44MDAwMDAKLXB0cz03MgotcHRzX3RpbWU9NC44MDAwMDAKLXB0cz03Mgot cHRzX3RpbWU9NC44MDAwMDAKK3B0cz05OQorcHRzX3RpbWU9Ni42MDAwMDAKK3B0cz0xNzEKK3B0 c190aW1lPTExLjQwMDAwMAorcHRzPTIxOQorcHRzX3RpbWU9MTQuNjAwMDAwCitwdHM9MzI3Citw dHNfdGltZT0yMS44MDAwMDAKIGR1cmF0aW9uPTI0LjAwMDAwMApkaWZmIC0tZ2l0IGEvdGVzdHMv cmVmL2ZhdGUvb2dnLWNoYWluLXNlZWstdm9yYmlzIGIvdGVzdHMvcmVmL2ZhdGUvb2dnLWNoYWlu LXNlZWstdm9yYmlzCmluZGV4IDhlZTcxYzQ3MTEuLmU3YzYzNDA1MDggMTAwNjQ0Ci0tLSBhL3Rl c3RzL3JlZi9mYXRlL29nZy1jaGFpbi1zZWVrLXZvcmJpcworKysgYi90ZXN0cy9yZWYvZmF0ZS9v Z2ctY2hhaW4tc2Vlay12b3JiaXMKQEAgLTEsMTMgKzEsMTMgQEAKIHB0cz0tMTI4CiBwdHNfdGlt ZT0tMC4wMDI5MDIKLXB0cz0xNzU2ODAKLXB0c190aW1lPTMuOTgzNjczCi1wdHM9MTc5Nzc2Ci1w dHNfdGltZT00LjA3NjU1MwotcHRzPTE3OTc3NgotcHRzX3RpbWU9NC4wNzY1NTMKLXB0cz0xNzk3 NzYKLXB0c190aW1lPTQuMDc2NTUzCi1wdHM9MTc5Nzc2Ci1wdHNfdGltZT00LjA3NjU1MworcHRz PTEzNDcyMAorcHRzX3RpbWU9My4wNTQ4NzUKK3B0cz0yNjUxMDgKK3B0c190aW1lPTYuMDExNTE5 CitwdHM9NDQ1MzMyCitwdHNfdGltZT0xMC4wOTgyMzEKK3B0cz02MTc5MDgKK3B0c190aW1lPTE0 LjAxMTUxOQorcHRzPTkzMzMwMAorcHRzX3RpbWU9MjEuMTYzMjY1CiBkdXJhdGlvbj0yNC4wMDI5 MDIKLS0gCjIuNTIuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdCAtLSBmZm1wZWctZGV2ZWxAZmZtcGVnLm9y ZwpUbyB1bnN1YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRvIGZmbXBlZy1kZXZlbC1sZWF2ZUBmZm1w ZWcub3JnCg==