[PATCH branch-1.6] builtin: Stage 30: add qindir builtin
Eric Blake via M4-patches <[email protected]> Sat, 10 May 2025 20:56:41 -0500
| Newsgroups | gmane.comp.gnu.m4.patches |
|---|---|
| Message-ID | <[email protected]> |
KiBkb2MvbTQudGV4aSAoSW5kaXJlY3Rpb24pOiBOZXcgY2hhcHRlciwgY29udGFpbmluZyBwcmUt ZXhpc3RpbmcKSW5kaXIgYW5kIEJ1aWx0aW4gc2VjdGlvbnMuCihRaW5kaXIpOiBOZXcgc2VjdGlv bi4KKEJ1aWx0aW4pOiBEb2N1bWVudCBpbnRlcmFjdGlvbiB3aXRoIHFpbmRpci4KKiBzcmMvYnVp bHRpbi9jIChpbmRpciwgbTRfcWluZGlyKTogTmV3IGZ1bmN0aW9ucy4KKGJ1aWx0aW5fdGFiKTog UmVnaXN0ZXIgbmV3IGJ1aWx0aW4uCiogc3JjL2lucHV0LmMgKGlucHV0X3R5cGUpOiBBZGQgSU5Q VVRfRklMRV9RLgoocHVzaF9xdW90ZV93cmFwcGVyKTogTmV3IGZ1bmN0aW9uLgoocHVzaF9maWxl LCBwdXNoX3N0cmluZ19pbml0LCBwdXNoX3N0cmluZ19maW5pc2gsIHBvcF9pbnB1dCkKKHBvcF93 cmFwdXAsIGlucHV0X3ByaW50LCBuZXh0X2J1ZmZlciwgY29uc3VtZV9idWZmZXIsIHBlZWtfaW5w dXQpCihuZXh0X2NoYXJfMSwgc2tpcF9saW5lKTogTWFuYWdlIHF1b3RlIGluamVjdGlvbi4KKiBz cmMvbTQuaCAocHVzaF9xdW90ZV93cmFwcGVyKTogTmV3IGRlY2xhcmF0aW9uLgoqIE5FV1M6IERv Y3VtZW50IHRoZSBuZXcgbWFjcm8uCi0tLQoKSSdtIHRyeWluZyB0byBwb3J0IHJlbWFpbmluZyBw YXRjaGVzIGZyb20gdGhlIGFyZ3ZfcmVmIGJyYW5jaCBpbnRvCmJyYW5jaC0xLjY7IHRoaXMgb25l IGNvbWVzIGZyb20gY29tbWl0IDQ4YTNiZDAzIG9uIHRoYXQgYnJhbmNoLgoKIE5FV1MgICAgICAg ICAgfCAgIDMgKwogZG9jL200LnRleGkgICB8IDE4OSArKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tCiBzcmMvYnVpbHRpbi5jIHwgIDMyICsrKysrLQogc3JjL2lucHV0LmMgICB8IDMwMSAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQogc3JjL200 LmggICAgICB8ICAgMSArCiA1IGZpbGVzIGNoYW5nZWQsIDQ1MCBpbnNlcnRpb25zKCspLCA3NiBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9ORVdTIGIvTkVXUwppbmRleCAzNTViM2ZlYS4uODlj YWZlNmUgMTAwNjQ0Ci0tLSBhL05FV1MKKysrIGIvTkVXUwpAQCAtNzcsNiArNzcsOSBAQCBHTlUg TTQgTkVXUyAtIFVzZXIgdmlzaWJsZSBjaGFuZ2VzLgogICAgQWxzbywgdGhlIHBvc2l0aW9uIG9m IGAtZCcgd2l0aCByZXNwZWN0IHRvIGZpbGVzIG9uIHRoZSBjb21tYW5kIGxpbmUgaXMKICAgIG5v dyBzaWduaWZpY2FudC4KCisqKiBBIG5ldyBgcWluZGlyJyBidWlsdGluIGlzIGFkZGVkLCBzaW1p bGFyIHRvIGBpbmRpcicsIGJ1dCB3aGVyZSB0aGUKKyAgIG91dHB1dCBpcyBxdW90ZWQgcmF0aGVy IHRoYW4gcmVzY2FubmVkIGZvciBmdXJ0aGVyIG1hY3JvIGV4cGFuc2lvbi4KKwogKiogQSBuZXcg cHJlZGVmaW5lZCB0ZXh0IG1hY3JvLCBgX19tNF92ZXJzaW9uX18nLCBleHBhbmRzIHRvIHRoZSB1 bnF1b3RlZAogICAgdmVyc2lvbiBudW1iZXIgb2YgTTQsIGlmIEdOVSBleHRlbnNpb25zIGFyZSBl bmFibGVkLiAgV2hpbGUgeW91IHNob3VsZAogICAgZ2VuZXJhbGx5IGZhdm9yIGZlYXR1cmUgdGVz dHMgb3ZlciB2ZXJzaW9uIG51bWJlciBjaGVja3MsIHRoaXMgbWFjcm8gY2FuCmRpZmYgLS1naXQg YS9kb2MvbTQudGV4aSBiL2RvYy9tNC50ZXhpCmluZGV4IDEwMzE0ZDQyLi4yMzA1MmUwZCAxMDA2 NDQKLS0tIGEvZG9jL200LnRleGkKKysrIGIvZG9jL200LnRleGkKQEAgLTExMCw2ICsxMTAsNyBA QCBUb3AKCiAqIE1hY3Jvczo6ICAgICAgICAgICAgICAgICAgICAgIEhvdyB0byBpbnZva2UgbWFj cm9zCiAqIERlZmluaXRpb25zOjogICAgICAgICAgICAgICAgIEhvdyB0byBkZWZpbmUgbmV3IG1h Y3JvcworKiBJbmRpcmVjdGlvbjo6ICAgICAgICAgICAgICAgICBVc2luZyBpbmFjY2Vzc2libGUg bWFjcm9zCiAqIENvbmRpdGlvbmFsczo6ICAgICAgICAgICAgICAgIENvbmRpdGlvbmFscywgbG9v cHMsIGFuZCByZWN1cnNpb24KCiAqIERlYnVnZ2luZzo6ICAgICAgICAgICAgICAgICAgIEhvdyB0 byBkZWJ1ZyBtYWNyb3MgYW5kIGlucHV0CkBAIC0xNzUsOCArMTc2LDExIEBAIFRvcAogKiBEZWZu OjogICAgICAgICAgICAgICAgICAgICAgICBSZW5hbWluZyBtYWNyb3MKICogUHVzaGRlZjo6ICAg ICAgICAgICAgICAgICAgICAgVGVtcG9yYXJpbHkgcmVkZWZpbmluZyBtYWNyb3MKCi0qIEluZGly OjogICAgICAgICAgICAgICAgICAgICAgIEluZGlyZWN0IGNhbGwgb2YgbWFjcm9zCi0qIEJ1aWx0 aW46OiAgICAgICAgICAgICAgICAgICAgIEluZGlyZWN0IGNhbGwgb2YgYnVpbHRpbnMKK1VzaW5n IGluYWNjZXNzaWJsZSBtYWNyb3MKKworKiBJbmRpcjo6ICAgICAgICAgICAgICAgICAgICAgICBV bnF1b3RlZCBpbmRpcmVjdCBjYWxsIG9mIG1hY3JvcworKiBRaW5kaXI6OiAgICAgICAgICAgICAg ICAgICAgICBRdW90ZWQgaW5kaXJlY3QgY2FsbCBvZiBtYWNyb3MKKyogQnVpbHRpbjo6ICAgICAg ICAgICAgICAgICAgICAgVW5xdW90ZWQgaW5kaXJlY3QgY2FsbCBvZiBidWlsdGlucwoKIENvbmRp dGlvbmFscywgbG9vcHMsIGFuZCByZWN1cnNpb24KCkBAIC0xODkzLDkgKzE4OTcsNiBAQCBEZWZp bml0aW9ucwogKiBVbmRlZmluZTo6ICAgICAgICAgICAgICAgICAgICBEZWxldGluZyBhIG1hY3Jv CiAqIERlZm46OiAgICAgICAgICAgICAgICAgICAgICAgIFJlbmFtaW5nIG1hY3JvcwogKiBQdXNo ZGVmOjogICAgICAgICAgICAgICAgICAgICBUZW1wb3JhcmlseSByZWRlZmluaW5nIG1hY3Jvcwot Ci0qIEluZGlyOjogICAgICAgICAgICAgICAgICAgICAgIEluZGlyZWN0IGNhbGwgb2YgbWFjcm9z Ci0qIEJ1aWx0aW46OiAgICAgICAgICAgICAgICAgICAgIEluZGlyZWN0IGNhbGwgb2YgYnVpbHRp bnMKIEBlbmQgbWVudQoKIEBub2RlIERlZmluZQpAQCAtMjczNCwxMCArMjczNSwzMCBAQCBQdXNo ZGVmCiBAcmVzdWx0e30KIEBlbmQgZXhhbXBsZQoKLUBub2RlIEluZGlyCi1Ac2VjdGlvbiBJbmRp cmVjdCBjYWxsIG9mIG1hY3JvcworQG5vZGUgSW5kaXJlY3Rpb24KK0BjaGFwdGVyIFVzaW5nIGlu YWNjZXNzaWJsZSBtYWNyb3MKCi1AY2luZGV4IGluZGlyZWN0IGNhbGwgb2YgbWFjcm9zCitAY2lu ZGV4IGluZGlyZWN0aW9uCitAY2luZGV4IGludm9raW5nIGluYWNjZXNzaWJsZSBtYWNyb3MKK0Bj aW5kZXggaW5hY2Nlc3NpYmxlIG1hY3JvcywgaW52b2tpbmcKK0BjaW5kZXggaGlkZGVuIG1hY3Jv cywgaW52b2tpbmcKK0dOVSBNNCBwbGFjZXMgbm8gcmVzdHJpY3Rpb25zIG9uIHRoZSBzdHJpbmdz IHRoYXQgY2FuIGJlIHVzZWQgd2hlbgorZGVmaW5pbmcgYSBtYWNybyBuYW1lLCBldmVuIGlmIHRo ZSBuYW1lIHdpbGwgbm90IGJlIHBhcnNlZCBhcyBhIHdvcmQgaWYKK2l0IG9jY3VycyBpbiBpc29s YXRpb24uICBBZGRpdGlvbmFsbHksIHRoZXJlIGlzIG5vdGhpbmcgd3Jvbmcgd2l0aAoraGlkaW5n IHRoZSBkZWZpbml0aW9uIG9mIGJ1aWx0aW4gbWFjcm9zIHRoYXQgbWlnaHQgYWR2ZXJzZWx5IGlt cGFjdAorb3V0cHV0IGlmIGluYWR2ZXJ0ZW50bHkgZXhwYW5kZWQuICBUaGVyZWZvcmUsIHRoZXJl IGFyZSBhIGZldyBidWlsdGlucworZGVzaWduZWQgZm9yIG1hbmlwdWxhdGlvbiBvZiBpbmRpcmVj dCBtYWNybyBuYW1lcy4KKworQG1lbnUKKyogSW5kaXI6OiAgICAgICAgICAgICAgICAgICAgICAg VW5xdW90ZWQgaW5kaXJlY3QgY2FsbCBvZiBtYWNyb3MKKyogUWluZGlyOjogICAgICAgICAgICAg ICAgICAgICAgUXVvdGVkIGluZGlyZWN0IGNhbGwgb2YgbWFjcm9zCisqIEJ1aWx0aW46OiAgICAg ICAgICAgICAgICAgICAgIFVucXVvdGVkIGluZGlyZWN0IGNhbGwgb2YgYnVpbHRpbnMKK0BlbmQg bWVudQorCitAbm9kZSBJbmRpcgorQHNlY3Rpb24gVW5xdW90ZWQgaW5kaXJlY3QgY2FsbCBvZiBt YWNyb3MKKworQGNpbmRleCBpbmRpcmVjdCBjYWxsIG9mIG1hY3JvcywgdW5xdW90ZWQKIEBjaW5k ZXggY2FsbCBvZiBtYWNyb3MsIGluZGlyZWN0CiBAY2luZGV4IG1hY3JvcywgaW5kaXJlY3QgY2Fs bCBvZgogQGNpbmRleCBHTlUgZXh0ZW5zaW9ucwpAQCAtMjgyOCw4ICsyODQ5LDE0MiBAQCBJbmRp cgogQHJlc3VsdHt9MAogQGVuZCBleGFtcGxlCgorQG5vZGUgUWluZGlyCitAc2VjdGlvbiBRdW90 ZWQgaW5kaXJlY3QgY2FsbCBvZiBtYWNyb3MKKworQGNpbmRleCBpbmRpcmVjdCBjYWxsIG9mIG1h Y3JvcywgcXVvdGVkCitAY2luZGV4IGNhbGwgb2YgbWFjcm9zLCBpbmRpcmVjdAorQGNpbmRleCBt YWNyb3MsIGluZGlyZWN0IGNhbGwgb2YKK0BjaW5kZXggYWRkaW5nIHF1b3RlcworQGNpbmRleCBx dW90ZXMsIGFkZGluZworQGNpbmRleCBHTlUgZXh0ZW5zaW9ucworU29tZXRpbWVzLCBpdCBpcyBk ZXNpcmFibGUgdG8gYXZvaWQgcmVzY2FubmluZyB0aGUgb3V0cHV0IG9mIGEgbWFjcm8KK2ludm9j YXRpb24uICBJdCBpcyBwb3NzaWJsZSB0byBhZGQgcXVvdGVzIGFyb3VuZCBhbnkgbWFjcm8gd2l0 aAorQGNvZGV7cWluZGlyfToKKworQGRlZmZuIEJ1aWx0aW4gcWluZGlyIChAdmFye25hbWV9LCBA b3ZhcnthcmdzQGRvdHN7fX0pCitSZXN1bHRzIGluIGEgY2FsbCB0byB0aGUgbWFjcm8gQHZhcntu YW1lfSwgd2hpY2ggaXMgcGFzc2VkIHRoZQorcmVzdCBvZiB0aGUgYXJndW1lbnRzIEB2YXJ7YXJn c30uICBJZiBAdmFye25hbWV9IGlzIG5vdCBkZWZpbmVkLCBhbgorZXJyb3IgbWVzc2FnZSBpcyBw cmludGVkLCBhbmQgdGhlIGV4cGFuc2lvbiBpcyB2b2lkLiAgT3RoZXJ3aXNlLCB0aGUKK291dHB1 dCBnZW5lcmF0ZWQgYnkgQHZhcntuYW1lfSBpcyBhZGRpdGlvbmFsbHkgc3Vycm91bmRlZCBieSB0 aGUgY3VycmVudAorcXVvdGVzIGF0IHRoZSBlbmQgb2YgdGhlIGluZGlyZWN0IGludm9jYXRpb24u CisKK1RoaXMgbWFjcm8gd2FzIGludHJvZHVjZWQgaW4gR05VIE00IDEuNi4KKworVGhlIG1hY3Jv IEBjb2Rle3FpbmRpcn0gaXMgcmVjb2duaXplZCBvbmx5IHdpdGggcGFyYW1ldGVycy4KK0BlbmQg ZGVmZm4KKworTWFueSBidWlsdGluIG1hY3JvcyByZXR1cm4gdGhlaXIgb3V0cHV0IHVucXVvdGVk LCBzbyB0aGF0IGl0IGNhbiBiZQorcmVzY2FubmVkIGZvciBmdXJ0aGVyIG1hY3JvIG5hbWVzLiAg QnV0IGluIHNvbWUgY29udGV4dHMsIGl0IGlzCitkZXNpcmFibGUgdG8gYXZvaWQgdGhlIHJlc2Nh bm5pbmcgc3RlcCwgcGFydGljdWxhcmx5IHdoZW4gdXNpbmcgYQorYnVpbHRpbiBtYWNybyB0byBv cGVyYXRlIG9uIGFuIG9wYXF1ZSBibG9jayBvZiB0ZXh0IGFuZCByZXN1bHQgaW4KK2Fub3RoZXIg YmxvY2sgb2YgdGV4dC4gIE9ic2VydmUgaG93IEBjb2Rle3FpbmRpcn0gY2FuIGJlIHVzZWQgdG8g bWFrZQordGhlIG91dHB1dCBvZiBAY29kZXtzdWJzdHJ9IGJlIHF1b3RlZCAoQHB4cmVme1N1YnN0 cn0pOgorCitAZXhhbXBsZQorZGVmaW5lKGBiJywgYEInKQorQHJlc3VsdHt9CitzdWJzdHIoYGFi YycsIGAxJywgYDEnKQorQHJlc3VsdHt9QgorcWluZGlyKGBzdWJzdHInLCBgYWJjJywgYDEnLCBg MScpCitAcmVzdWx0e31iCitAZW5kIGV4YW1wbGUKKworRm9yIHRleHQgbWFjcm9zLCBAY29kZXtx aW5kaXJ9IGFuZCBAY29kZXtkZWZufSBhcmUgc29tZXdoYXQgc2ltaWxhcgorKEBweHJlZntEZWZu fSk7IGJvdGggc3RvcCB3aXRoIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBtYWNybyByYXRoZXIgdGhh bgordHJpZ2dlcmluZyBhbnkgcmVjdXJzaXZlIGV4cGFuc2lvbnMuICBIb3dldmVyLCB0aGVyZSBp cyBhIG5vdGFibGUKK2RpZmZlcmVuY2UsIGluIHRoYXQgQGNvZGV7cWluZGlyfSB3aWxsIGV4cGFu ZCBhcmd1bWVudHMgZW5jb3VudGVyZWQKK3dpdGhpbiB0aGUgbWFjcm8gZGVmaW5pdGlvbi4KKwor QGV4YW1wbGUKK2RlZmluZShgZm9vJywgYGRpdm51bSAkMSAkIycpCitAcmVzdWx0e30KK2Zvbwor QHJlc3VsdHt9MCAgMAorZm9vKGBvbmUnKQorQHJlc3VsdHt9MCBvbmUgMQorZm9vKGBvbmUnLCBg dHdvJykKK0ByZXN1bHR7fTAgb25lIDIKK2RlZm4oYGZvbycpCitAcmVzdWx0e31kaXZudW0gJDEg JCMKK3FpbmRpcihgZm9vJykKK0ByZXN1bHR7fWRpdm51bSAgMAorcWluZGlyKGBmb28nLCBgb25l JykKK0ByZXN1bHR7fWRpdm51bSBvbmUgMQorcWluZGlyKGBmb28nLCBgb25lJywgYHR3bycpCitA cmVzdWx0e31kaXZudW0gb25lIDIKK0BlbmQgZXhhbXBsZQorCitUaGlzIG1hY3JvIGlzIHNpbWls YXIgdG8gQGNvZGV7aW5kaXJ9IGluIGl0cyBhYmlsaXR5IHRvIGNhbGwgbWFjcm9zIHdpdGgKK2Nv bXB1dGVkIG9yIGBgaW52YWxpZCcnIG5hbWVzOgorCitAZXhhbXBsZQorZGVmaW5lKGAkJGludGVy bmFsJG1hY3JvJywgYEludGVybmFsIG1hY3JvIChuYW1lIGAkMCcpJykKK0ByZXN1bHR7fQorJCRp bnRlcm5hbCRtYWNybworQHJlc3VsdHt9JCRpbnRlcm5hbCRtYWNybworaW5kaXIoYCQkaW50ZXJu YWwkbWFjcm8nKQorQHJlc3VsdHt9SW50ZXJuYWwgbWFjcm8gKG5hbWUgJCRpbnRlcm5hbCRtYWNy bykKK3FpbmRpcihgJCRpbnRlcm5hbCRtYWNybycpCitAcmVzdWx0e31JbnRlcm5hbCBtYWNybyAo bmFtZSBgJCRpbnRlcm5hbCRtYWNybycpCitAZW5kIGV4YW1wbGUKKworSXQgaXMgc2FmZSB0byB1 c2UgQGNvZGV7cWluZGlyfSBvbiBhbnkgbWFjcm8sIGluY2x1ZGluZworQGNvZGV7Y2hhbmdlcXVv dGV9IChAcHhyZWZ7Q2hhbmdlcXVvdGV9KSwgYmVjYXVzZSB0aGUgaW5kaXJlY3QgbWFjcm8KK3Jl c3VsdCBpcyBzdXJyb3VuZGVkIGJ5IHRoZSBxdW90ZXMgdGhhdCB3ZXJlIGN1cnJlbnQgYXQgdGhl IGVuZCBvZiB0aGUKK2luZGlyZWN0aW9uLiAgTmVzdGVkIGludm9jYXRpb25zIGNhbiBiZSB1c2Vk IHRvIGFkZCBhZGRpdGlvbmFsIGxheWVycyBvZgorcXVvdGluZy4gIEhvd2V2ZXIsIGEgd2Fybmlu ZyBpcyBpc3N1ZWQsIGFuZCBubyBxdW90aW5nIGFkZGVkLCB3aGVuCitAdmFye25hbWV9IGlzIG5v dCBhIG1hY3JvLgorCitAZXhhbXBsZQorJCBAa2Jke200IC1kfQordHJhY2VvbihgcWluZGlyJykK K0ByZXN1bHR7fQorcWluZGlyKGBxaW5kaXInLCBgY2hhbmdlcXVvdGUnLCBgWycsIGBdJykKK0Bl cnJvcnt9bTR0cmFjZTogLTEtIHFpbmRpcihgY2hhbmdlcXVvdGUnLCBgWycsIGBdJykgLT4gW1td XQorQGVycm9ye31tNHRyYWNlOiAtMS0gcWluZGlyKGBxaW5kaXInLCBgY2hhbmdlcXVvdGUnLCBg WycsIGBdJykgLT4gW1tbXV1dCitAcmVzdWx0e31bXQorcWluZGlyKFtjaGFuZ2VxdW90ZV0pCitA ZXJyb3J7fW00dHJhY2U6IC0xLSBxaW5kaXIoW2NoYW5nZXF1b3RlXSkgLT4gYGAnJworQHJlc3Vs dHt9CitxaW5kaXIocWluZGlyKGRlZm4oYHFpbmRpcicpKSkKK0BlcnJvcnt9bTQ6c3RkaW46NDog d2FybmluZzogcWluZGlyOiBpbnZhbGlkIG1hY3JvIG5hbWUgaWdub3JlZAorQGVycm9ye31tNHRy YWNlOiAtMi0gcWluZGlyKDxxaW5kaXI+KSAtPiBgJworQGVycm9ye31tNDpzdGRpbjo0OiB3YXJu aW5nOiBxaW5kaXI6IHVuZGVmaW5lZCBtYWNybyAnJworQGVycm9ye31tNHRyYWNlOiAtMS0gcWlu ZGlyKGAnKSAtPiBgJworQHJlc3VsdHt9CitAZW5kIGV4YW1wbGUKKworQGlnbm9yZQorQGNvbW1l bnQgVGhpcyBleGFtcGxlIGlzIG5vdCB3b3J0aCBwdXR0aW5nIGluIHRoZSBtYW51YWwsIGJ1dCBp dCBpcworQGNvbW1lbnQgbmVlZGVkIGZvciBmdWxsIGNvdmVyYWdlLgorCitAY29tbWVudCBleGFt cGxlcworQGV4YW1wbGUKKyQgQGtiZHttNCAtZCAtSWV4YW1wbGVzfQorZGVmaW5lKGBiYXInLCBg aGVsbG8nKQorQHJlc3VsdHt9CitpbmNsdWRlKGBmb28nKWRubAorQHJlc3VsdHt9aGVsbG8KK3Ry YWNlb24oYHFpbmRpcicpCitAcmVzdWx0e30KK3FpbmRpcihgaW5jbHVkZScsIGBmb28nKWRubAor QGVycm9ye31tNHRyYWNlOiAtMS0gcWluZGlyKGBpbmNsdWRlJywgYGZvbycpIC0+IGBgPGZpbGU6 IGV4YW1wbGVzL2Zvbz4nJworQHJlc3VsdHt9YmFyCitxaW5kaXIoYHRyYWNlb2ZmJywgYHFpbmRp cicpCitAZXJyb3J7fW00dHJhY2U6IC0xLSBxaW5kaXIoYHRyYWNlb2ZmJywgYHFpbmRpcicpIC0+ IGBgJycKK0ByZXN1bHR7fQorbTR3cmFwKGBtNHdyYXAoYAorJylxaW5kaXIoYHFpbmRpcicsIGBk bmwnKScpCitAcmVzdWx0e30KK15ECitAZXJyb3J7fW00OnN0ZGluOjY6IHdhcm5pbmc6IGRubDog ZW5kIG9mIGZpbGUgdHJlYXRlZCBhcyBuZXdsaW5lCitAcmVzdWx0e31gJworQGVuZCBleGFtcGxl CitAZW5kIGlnbm9yZQorCiBAbm9kZSBCdWlsdGluCi1Ac2VjdGlvbiBJbmRpcmVjdCBjYWxsIG9m IGJ1aWx0aW5zCitAc2VjdGlvbiBVbnF1b3RlZCBpbmRpcmVjdCBjYWxsIG9mIGJ1aWx0aW5zCgog QGNpbmRleCBpbmRpcmVjdCBjYWxsIG9mIGJ1aWx0aW5zCiBAY2luZGV4IGNhbGwgb2YgYnVpbHRp bnMsIGluZGlyZWN0CkBAIC0yOTI2LDYgKzMwODEsMjIgQEAgQnVpbHRpbgogQHJlc3VsdHt9CiBA ZW5kIGV4YW1wbGUKCitUaGVyZSBpcyBubyBuZWVkIGZvciBhIHF1b3RlZCB2ZXJzaW9uIG9mIEBj b2Rle2J1aWx0aW59OyBpdCBpcworc3VmZmljaWVudCB0byB1c2UgQGNvZGV7cWluZGlyfSB3aGVu IGV4dHJhIHF1b3RpbmcgaXMgbmVlZGVkLgorCitAZXhhbXBsZQorZGVmaW5lKGBiJywgYEInKQor QHJlc3VsdHt9CitzdWJzdHIoYGFiYycsIGAxJywgYDEnKQorQHJlc3VsdHt9QgorYnVpbHRpbihg c3Vic3RyJywgYGFiYycsIGAxJywgYDEnKQorQHJlc3VsdHt9QgorcWluZGlyKGBidWlsdGluJywg YHN1YnN0cicsIGBhYmMnLCBgMScsIGAxJykKK0ByZXN1bHR7fWIKK2J1aWx0aW4oYHFpbmRpcics IGBzdWJzdHInLCBgYWJjJywgYDEnLCBgMScpCitAcmVzdWx0e31iCitAZW5kIGV4YW1wbGUKKwog QGlnbm9yZQogQGNvbW1lbnQgVGhpcyBleGFtcGxlIGlzIG5vdCB3b3J0aCBwdXR0aW5nIGluIHRo ZSBtYW51YWwsIGJ1dCBpdCBpcwogQGNvbW1lbnQgbmVlZGVkIGZvciBmdWxsIGNvdmVyYWdlLiAg QXV0b2NvbmYncyBtNF9pbmNsdWRlIHJlbGllcyBoZWF2aWx5CmRpZmYgLS1naXQgYS9zcmMvYnVp bHRpbi5jIGIvc3JjL2J1aWx0aW4uYwppbmRleCA2NWUwZmY3Mi4uY2UwMGU5ZWIgMTAwNjQ0Ci0t LSBhL3NyYy9idWlsdGluLmMKKysrIGIvc3JjL2J1aWx0aW4uYwpAQCAtNzIsNiArNzIsNyBAQCBE RUNMQVJFIChtNF9ta3N0ZW1wKTsKIERFQ0xBUkUgKG00X3BhdHN1YnN0KTsKIERFQ0xBUkUgKG00 X3BvcGRlZik7CiBERUNMQVJFIChtNF9wdXNoZGVmKTsKK0RFQ0xBUkUgKG00X3FpbmRpcik7CiBE RUNMQVJFIChtNF9yZWdleHApOwogREVDTEFSRSAobTRfc2hpZnQpOwogREVDTEFSRSAobTRfc2lu Y2x1ZGUpOwpAQCAtMTIzLDYgKzEyNCw3IEBAIHN0YXRpYyBidWlsdGluIGNvbnN0IGJ1aWx0aW5f dGFiW10gPSB7CiAgIHsicGF0c3Vic3QiLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgbTRfcGF0c3Vic3R9 LAogICB7InBvcGRlZiIsIGZhbHNlLCB0cnVlLCB0cnVlLCBtNF9wb3BkZWZ9LAogICB7InB1c2hk ZWYiLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgbTRfcHVzaGRlZn0sCisgIHsicWluZGlyIiwgdHJ1ZSwg dHJ1ZSwgdHJ1ZSwgbTRfcWluZGlyfSwKICAgeyJyZWdleHAiLCB0cnVlLCBmYWxzZSwgdHJ1ZSwg bTRfcmVnZXhwfSwKICAgeyJzaGlmdCIsIGZhbHNlLCB0cnVlLCB0cnVlLCBtNF9zaGlmdH0sCiAg IHsic2luY2x1ZGUiLCBmYWxzZSwgZmFsc2UsIHRydWUsIG00X3NpbmNsdWRlfSwKQEAgLTk0Nywx MiArOTQ5LDEwIEBAIG00X2J1aWx0aW4gKHN0cnVjdCBvYnN0YWNrICpvYnMsIGludCBhcmdjLCBt YWNyb19hcmd1bWVudHMgKmFyZ3YpCiAgICAgfQogfQoKLS8qIFRoZSBidWlsdGluICJpbmRpciIg YWxsb3dzIGluZGlyZWN0IGNhbGxzIHRvIG1hY3JvcywgZXZlbiBpZiB0aGVpcgotICAgbmFtZSBp cyBub3QgYSBwcm9wZXIgbWFjcm8gbmFtZS4gIEl0IGlzIHRodXMgcG9zc2libGUgdG8gZGVmaW5l Ci0gICBtYWNyb3Mgd2l0aCBpbGwtZm9ybWVkIG5hbWVzIGZvciBpbnRlcm5hbCB1c2UgaW4gbGFy Z2VyIG1hY3JvCi0gICBwYWNrYWdlcy4gIFRoaXMgbWFjcm8gaXMgbm90IGF2YWlsYWJsZSBpbiBj b21wYXRpYmlsaXR5IG1vZGUuICAqLworLyogQ29tbW9uIGNvZGUgZm9yIGluZGlyIGFuZCBxaW5k aXIuICBTdXJyb3VuZCB0aGUgb3V0cHV0IGluIHRoZQorICAgY3VycmVudCBxdW90ZXMgaWYgUVVP VEUgaXMgdHJ1ZSwgYmVpbmcgY2FyZWZ1bCBvZiBjaGFuZ2VxdW90ZS4gICovCiBzdGF0aWMgdm9p ZAotbTRfaW5kaXIgKHN0cnVjdCBvYnN0YWNrICpvYnMsIGludCBhcmdjLCBtYWNyb19hcmd1bWVu dHMgKmFyZ3YpCitpbmRpciAoc3RydWN0IG9ic3RhY2sgKm9icywgaW50IGFyZ2MsIG1hY3JvX2Fy Z3VtZW50cyAqYXJndiwgYm9vbCBxdW90ZSkKIHsKICAgY29uc3QgY2FsbF9pbmZvICptZSA9IGFy Z19pbmZvIChhcmd2KTsKICAgc3ltYm9sICpzOwpAQCAtOTgyLDkgKzk4MiwzMSBAQCBtNF9pbmRp ciAoc3RydWN0IG9ic3RhY2sgKm9icywgaW50IGFyZ2MsIG1hY3JvX2FyZ3VtZW50cyAqYXJndikK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhU1lNQk9M X01BQ1JPX0FSR1MgKHMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFNZTUJPTF9UUkFDRUQgKHMpKTsKICAgICAgIGNhbGxfbWFjcm8gKHMsIG5ld19h cmd2LCBvYnMpOworICAgICAgaWYgKHF1b3RlKQorICAgICAgICBwdXNoX3F1b3RlX3dyYXBwZXIg KCk7CiAgICAgfQogfQoKKy8qIFRoZSBidWlsdGluICJpbmRpciIgYWxsb3dzIGluZGlyZWN0IGNh bGxzIHRvIG1hY3JvcywgZXZlbiBpZiB0aGVpcgorICAgbmFtZSBpcyBub3QgYSBwcm9wZXIgbWFj cm8gbmFtZS4gIEl0IGlzIHRodXMgcG9zc2libGUgdG8gZGVmaW5lCisgICBtYWNyb3Mgd2l0aCBp bGwtZm9ybWVkIG5hbWVzIGZvciBpbnRlcm5hbCB1c2UgaW4gbGFyZ2VyIG1hY3JvCisgICBwYWNr YWdlcy4gIFRoaXMgbWFjcm8gaXMgbm90IGF2YWlsYWJsZSBpbiBjb21wYXRpYmlsaXR5IG1vZGUu ICAqLworc3RhdGljIHZvaWQKK200X2luZGlyIChzdHJ1Y3Qgb2JzdGFjayAqb2JzLCBpbnQgYXJn YywgbWFjcm9fYXJndW1lbnRzICphcmd2KQoreworICBpbmRpciAob2JzLCBhcmdjLCBhcmd2LCBm YWxzZSk7Cit9CisKKy8qIFRoZSBidWlsdGluICJxaW5kaXIiIGlzIGxpa2UgImluZGlyIiwgZXhj ZXB0IHRoYXQgdGhlIG91dHB1dCBpcworICAgc3Vycm91bmRlZCBieSB0aGUgcXVvdGVzIGluIGVm ZmVjdCBhdCB0aGUgZW5kIG9mIGV4cGFuc2lvbi4gIFRoaXMKKyAgIGFsbG93cyB3cmFwcGluZyBv dGhlciBtYWNyb3MgdG8gcHJvdmlkZSBxdW90ZWQgb3V0cHV0IHdoZXJlIHRoZWlyCisgICBvdXRw dXQgaXMgbm9ybWFsbHkgcmVzY2FubmVkLiAgKi8KK3N0YXRpYyB2b2lkCittNF9xaW5kaXIgKHN0 cnVjdCBvYnN0YWNrICpvYnMsIGludCBhcmdjLCBtYWNyb19hcmd1bWVudHMgKmFyZ3YpCit7Cisg IGluZGlyIChvYnMsIGFyZ2MsIGFyZ3YsIHRydWUpOworfQorCiAvKiBUaGUgbWFjcm8gImRlZm4i IHJldHVybnMgdGhlIHF1b3RlZCBkZWZpbml0aW9uIG9mIHRoZSBtYWNybyBuYW1lZAogICAgYnkg dGhlIGZpcnN0IGFyZ3VtZW50LiAgSWYgdGhlIG1hY3JvIGlzIGJ1aWx0aW4sIGl0IHdpbGwgcHVz aCBhCiAgICBzcGVjaWFsIG1hY3JvLWRlZmluaXRpb24gdG9rZW4gb24gdGhlIGlucHV0IHN0YWNr LiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbnB1dC5jIGIvc3JjL2lucHV0LmMKaW5kZXggMTYzMTdl NWYuLjc4NmE1YjM5IDEwMDY0NAotLS0gYS9zcmMvaW5wdXQuYworKysgYi9zcmMvaW5wdXQuYwpA QCAtNzQsNiArNzQsNyBAQCBlbnVtIGlucHV0X3R5cGUKIHsKICAgSU5QVVRfU1RSSU5HLCAgICAg ICAgICAgICAgICAgLyogU3RyaW5nIHJlc3VsdGluZyBmcm9tIG1hY3JvIGV4cGFuc2lvbi4gICov CiAgIElOUFVUX0ZJTEUsICAgICAgICAgICAgICAgICAgIC8qIEZpbGUgZnJvbSBjb21tYW5kIGxp bmUgb3IgaW5jbHVkZS4gICovCisgIElOUFVUX0ZJTEVfUSwgICAgICAgICAgICAgICAgIC8qIFF1 b3RhdGlvbiBhcm91bmQgYSBmaWxlLCB2aWEgcWluZGlyLiAgKi8KICAgSU5QVVRfQ0hBSU4sICAg ICAgICAgICAgICAgICAgLyogRklGTyBjaGFpbiBvZiBzZXBhcmF0ZSBzdHJpbmdzLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsdGlucywgYW5kICRAIHJlZnMuICAqLwog ICBJTlBVVF9FT0YgICAgICAgICAgICAgICAgICAgICAvKiBQbGFjZWhvbGRlciBhdCBib3R0b20g b2YgaW5wdXQgc3RhY2suICAqLwpAQCAtMTA3LDYgKzEwOCwxMiBAQCBzdHJ1Y3QgaW5wdXRfYmxv Y2sKICAgICB9CiAgICAgdV9mOyAgICAgICAgICAgICAgICAgICAgICAgIC8qIElOUFVUX0ZJTEUg Ki8KICAgICBzdHJ1Y3QKKyAgICB7CisgICAgICBzdHJpbmdfcGFpciAqcXVvdGVzOyAgICAgIC8q IFF1b3RlcyB0byB1c2Ugd2hlbiB3cmFwcGluZy4gICovCisgICAgICBzaXplX3QgY291bnQ7ICAg ICAgICAgICAgIC8qIENvdW50IG9mIHF1b3RlcyB0byB3cmFwLiAgKi8KKyAgICB9CisgICAgdV9x OyAgICAgICAgICAgICAgICAgICAgICAgIC8qIElOUFVUX0ZJTEVfUSAqLworICAgIHN0cnVjdAog ICAgIHsKICAgICAgIHRva2VuX2NoYWluICpjaGFpbjsgICAgICAgLyogQ3VycmVudCBsaW5rIGlu IGNoYWluLiAgKi8KICAgICAgIHRva2VuX2NoYWluICplbmQ7ICAgICAgICAgLyogTGFzdCBsaW5r IGluIGNoYWluLiAgKi8KQEAgLTIyNiwxNSArMjMzLDIxIEBAIHB1c2hfZmlsZSAoRklMRSAqZnAs IGNvbnN0IGNoYXIgKnRpdGxlLCBib29sIGNsb3NlX3doZW5fZG9uZSkKCiAgIGlmIChuZXh0ICE9 IE5VTEwpCiAgICAgewotICAgICAgb2JzdGFja19mcmVlIChjdXJyZW50X2lucHV0LCBuZXh0KTsK LSAgICAgIG5leHQgPSBOVUxMOworICAgICAgYXNzZXJ0IChvYnN0YWNrX29iamVjdF9zaXplIChj dXJyZW50X2lucHV0KSA9PSAwCisgICAgICAgICAgICAgICYmIG5leHQtPnR5cGUgPT0gSU5QVVRf U1RSSU5HKTsKKyAgICAgIGkgPSBuZXh0OworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIGkg PSAoaW5wdXRfYmxvY2sgKikgb2JzdGFja19hbGxvYyAoY3VycmVudF9pbnB1dCwgc2l6ZW9mICpp KTsKKyAgICAgIGktPnByZXYgPSBpc3A7CisgICAgICBpc3AgPSBpOwogICAgIH0KCiAgIGlmIChk ZWJ1Z19sZXZlbCAmIERFQlVHX1RSQUNFX0lOUFVUKQogICAgIGRlYnVnX21lc3NhZ2UgKCJpbnB1 dCByZWFkIGZyb20gJXMiLAogICAgICAgICAgICAgICAgICAgIHF1b3RlYXJnX3N0eWxlIChsb2Nh bGVfcXVvdGluZ19zdHlsZSwgdGl0bGUpKTsKCi0gIGkgPSAoaW5wdXRfYmxvY2sgKikgb2JzdGFj a19hbGxvYyAoY3VycmVudF9pbnB1dCwgc2l6ZW9mICppKTsKICAgaS0+dHlwZSA9IElOUFVUX0ZJ TEU7CiAgIGktPmZpbGUgPSAoY2hhciAqKSBvYnN0YWNrX2NvcHkwICgmZmlsZV9uYW1lcywgdGl0 bGUsIHN0cmxlbiAodGl0bGUpKTsKICAgaS0+bGluZSA9IDE7CkBAIC0yNDUsOSArMjU4LDYgQEAg cHVzaF9maWxlIChGSUxFICpmcCwgY29uc3QgY2hhciAqdGl0bGUsIGJvb2wgY2xvc2Vfd2hlbl9k b25lKQogICBpLT51LnVfZi5jbG9zZSA9IGNsb3NlX3doZW5fZG9uZTsKICAgaS0+dS51X2YuYWR2 YW5jZSA9IHN0YXJ0X29mX2lucHV0X2xpbmU7CiAgIG91dHB1dF9jdXJyZW50X2xpbmUgPSAtMTsK LQotICBpLT5wcmV2ID0gaXNwOwotICBpc3AgPSBpOwogfQoKIC8qIEdpdmVuIGFuIG9ic3RhY2sg T0JTLCBjYXB0dXJlIGFueSB1bmZpbmlzaGVkIHRleHQgYXMgYSBsaW5rLCB0aGVuCkBAIC0zMDIs NiArMzEyLDcgQEAgcHVzaF9zdHJpbmdfaW5pdCAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUp CgogICAvKiBSZXNlcnZlIHRoZSBuZXh0IGxvY2F0aW9uIG9uIHRoZSBvYnN0YWNrLiAgKi8KICAg bmV4dCA9IChpbnB1dF9ibG9jayAqKSBvYnN0YWNrX2FsbG9jIChjdXJyZW50X2lucHV0LCBzaXpl b2YgKm5leHQpOworICBuZXh0LT5wcmV2ID0gaXNwOwogICBuZXh0LT50eXBlID0gSU5QVVRfU1RS SU5HOwogICBuZXh0LT5maWxlID0gZmlsZTsKICAgbmV4dC0+bGluZSA9IGxpbmU7CkBAIC00NzQs NiArNDg1LDY4IEBAIHB1c2hfdG9rZW4gKHRva2VuX2RhdGEgKnRva2VuLCBpbnQgbGV2ZWwsIGJv b2wgaW51c2UpCiAgIHJldHVybiBpbnVzZTsKIH0KCisvKiBXcmFwIHRoZSBjdXJyZW50IHBlbmRp bmcgZXhwYW5zaW9uIGluIGFub3RoZXIgbGV2ZWwgb2YgcXVvdGVzLiAgKi8KK3ZvaWQKK3B1c2hf cXVvdGVfd3JhcHBlciAodm9pZCkKK3sKKyAgdG9rZW5fY2hhaW4gKmNoYWluOworICBzaXplX3Qg bGVuID0gb2JzdGFja19vYmplY3Rfc2l6ZSAoY3VycmVudF9pbnB1dCk7CisKKyAgYXNzZXJ0IChu ZXh0KTsKKyAgaWYgKG5leHQtPnR5cGUgPT0gSU5QVVRfRklMRSkKKyAgICB7CisgICAgICBpbnB1 dF9ibG9jayAqYmxvY2s7CisgICAgICBzdHJpbmdfcGFpciAqcXVvdGVzOworICAgICAgYXNzZXJ0 ICghbGVuKTsKKyAgICAgIGJsb2NrID0gKGlucHV0X2Jsb2NrICopIG9ic3RhY2tfYWxsb2MgKGN1 cnJlbnRfaW5wdXQsIHNpemVvZiAqYmxvY2spOworICAgICAgcXVvdGVzID0gKHN0cmluZ19wYWly ICopIG9ic3RhY2tfYWxsb2MgKGN1cnJlbnRfaW5wdXQsIHNpemVvZiAqcXVvdGVzKTsKKyAgICAg IHF1b3Rlcy0+c3RyMSA9IChjaGFyICopIG9ic3RhY2tfY29weSAoY3VycmVudF9pbnB1dCwgY3Vy cl9xdW90ZS5zdHIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjdXJyX3F1b3RlLmxlbjEpOworICAgICAgcXVvdGVzLT5sZW4xID0gY3Vycl9xdW90ZS5sZW4x OworICAgICAgb2JzdGFja19ncm93IChjdXJyZW50X2lucHV0LCBjdXJyX3F1b3RlLnN0cjIsIGN1 cnJfcXVvdGUubGVuMik7CisgICAgICBibG9jay0+dHlwZSA9IElOUFVUX0ZJTEVfUTsKKyAgICAg IGJsb2NrLT5maWxlID0gY3VycmVudF9maWxlOworICAgICAgYmxvY2stPmxpbmUgPSBjdXJyZW50 X2xpbmU7CisgICAgICBibG9jay0+cHJldiA9IG5leHQ7CisgICAgICBibG9jay0+dS51X3EucXVv dGVzID0gcXVvdGVzOworICAgICAgYmxvY2stPnUudV9xLmNvdW50ID0gMTsKKyAgICAgIG5leHQg PSBibG9jazsKKyAgICB9CisgIGVsc2UgaWYgKG5leHQtPnR5cGUgPT0gSU5QVVRfRklMRV9RKQor ICAgIHsKKyAgICAgIGFzc2VydCAobGVuID09IGN1cnJfcXVvdGUubGVuMiAqIG5leHQtPnUudV9x LmNvdW50KTsKKyAgICAgIG5leHQtPnUudV9xLmNvdW50Kys7CisgICAgICBvYnN0YWNrX2dyb3cg KGN1cnJlbnRfaW5wdXQsIGN1cnJfcXVvdGUuc3RyMiwgY3Vycl9xdW90ZS5sZW4yKTsKKyAgICB9 CisgIGVsc2UgaWYgKCFsZW4gJiYgbmV4dC0+dHlwZSA9PSBJTlBVVF9TVFJJTkcpCisgICAgewor ICAgICAgb2JzdGFja19ncm93IChjdXJyZW50X2lucHV0LCBjdXJyX3F1b3RlLnN0cjEsIGN1cnJf cXVvdGUubGVuMSk7CisgICAgICBvYnN0YWNrX2dyb3cgKGN1cnJlbnRfaW5wdXQsIGN1cnJfcXVv dGUuc3RyMiwgY3Vycl9xdW90ZS5sZW4yKTsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICBv YnN0YWNrX2dyb3cgKGN1cnJlbnRfaW5wdXQsIGN1cnJfcXVvdGUuc3RyMiwgY3Vycl9xdW90ZS5s ZW4yKTsKKyAgICAgIGlmIChuZXh0LT50eXBlID09IElOUFVUX1NUUklORykKKyAgICAgICAgewor ICAgICAgICAgIG5leHQtPnR5cGUgPSBJTlBVVF9DSEFJTjsKKyAgICAgICAgICBuZXh0LT51LnVf Yy5jaGFpbiA9IG5leHQtPnUudV9jLmVuZCA9IE5VTEw7CisgICAgICAgIH0KKyAgICAgIGFzc2Vy dCAobmV4dC0+dHlwZSA9PSBJTlBVVF9DSEFJTik7CisgICAgICBtYWtlX3RleHRfbGluayAoY3Vy cmVudF9pbnB1dCwgJm5leHQtPnUudV9jLmNoYWluLCAmbmV4dC0+dS51X2MuZW5kKTsKKyAgICAg IGFzc2VydCAob2JzdGFja19vYmplY3Rfc2l6ZSAoY3VycmVudF9pbnB1dCkgPT0gMCAmJiBuZXh0 LT51LnVfYy5jaGFpbik7CisgICAgICBjaGFpbiA9ICh0b2tlbl9jaGFpbiAqKSBvYnN0YWNrX2Fs bG9jIChjdXJyZW50X2lucHV0LCBzaXplb2YgKmNoYWluKTsKKyAgICAgIGNoYWluLT5uZXh0ID0g bmV4dC0+dS51X2MuY2hhaW47CisgICAgICBuZXh0LT51LnVfYy5jaGFpbiA9IGNoYWluOworICAg ICAgY2hhaW4tPnR5cGUgPSBDSEFJTl9TVFI7CisgICAgICBjaGFpbi0+cXVvdGVfYWdlID0gMDsK KyAgICAgIGNoYWluLT51LnVfcy5zdHIgPQorICAgICAgICAoY2hhciAqKSBvYnN0YWNrX2NvcHkg KGN1cnJlbnRfaW5wdXQsIGN1cnJfcXVvdGUuc3RyMSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjdXJyX3F1b3RlLmxlbjEpOworICAgICAgY2hhaW4tPnUudV9zLmxlbiA9IGN1cnJf cXVvdGUubGVuMTsKKyAgICAgIGNoYWluLT51LnVfcy5sZXZlbCA9IC0xOworICAgIH0KK30KKwog LyogTGFzdCBoYWxmIG9mIHB1c2hfc3RyaW5nICgpLiAgQWxsIHJlbWFpbmluZyB1bmZpbmlzaGVk IHRleHQgb24KICAgIHRoZSBvYnN0YWNrIHJldHVybmVkIGZyb20gcHVzaF9zdHJpbmdfaW5pdCBp cyBjb2xsZWN0ZWQgaW50byB0aGUKICAgIGlucHV0IHN0YWNrLiAgKi8KQEAgLTQ4MiwxMyArNTU1 LDIwIEBAIHB1c2hfc3RyaW5nX2ZpbmlzaCAodm9pZCkKIHsKICAgc2l6ZV90IGxlbiA9IG9ic3Rh Y2tfb2JqZWN0X3NpemUgKGN1cnJlbnRfaW5wdXQpOwoKLSAgaWYgKG5leHQgPT0gTlVMTCkKKyAg YXNzZXJ0IChuZXh0KTsKKyAgaWYgKG5leHQtPnR5cGUgPT0gSU5QVVRfRklMRSkKICAgICB7CiAg ICAgICBhc3NlcnQgKCFsZW4pOwotICAgICAgcmV0dXJuOworICAgICAgaXNwID0gbmV4dDsKICAg ICB9Ci0KLSAgaWYgKGxlbiB8fCBuZXh0LT50eXBlID09IElOUFVUX0NIQUlOKQorICBlbHNlIGlm IChuZXh0LT50eXBlID09IElOUFVUX0ZJTEVfUSkKKyAgICB7CisgICAgICBhc3NlcnQgKGxlbiA9 PSBuZXh0LT51LnVfcS5jb3VudCAqIGN1cnJfcXVvdGUubGVuMik7CisgICAgICBuZXh0LT51LnVf cS5xdW90ZXMtPnN0cjIgPSAoY2hhciAqKSBvYnN0YWNrX2ZpbmlzaCAoY3VycmVudF9pbnB1dCk7 CisgICAgICBuZXh0LT51LnVfcS5xdW90ZXMtPmxlbjIgPSBsZW47CisgICAgICBpc3AgPSBuZXh0 OworICAgIH0KKyAgZWxzZSBpZiAobGVuIHx8IG5leHQtPnR5cGUgPT0gSU5QVVRfQ0hBSU4pCiAg ICAgewogICAgICAgaWYgKG5leHQtPnR5cGUgPT0gSU5QVVRfU1RSSU5HKQogICAgICAgICB7CkBA IC00OTcsNyArNTc3LDYgQEAgcHVzaF9zdHJpbmdfZmluaXNoICh2b2lkKQogICAgICAgICB9CiAg ICAgICBlbHNlCiAgICAgICAgIG1ha2VfdGV4dF9saW5rIChjdXJyZW50X2lucHV0LCAmbmV4dC0+ dS51X2MuY2hhaW4sICZuZXh0LT51LnVfYy5lbmQpOwotICAgICAgbmV4dC0+cHJldiA9IGlzcDsK ICAgICAgIGlzcCA9IG5leHQ7CiAgICAgICBpbnB1dF9jaGFuZ2UgPSB0cnVlOwogICAgIH0KQEAg LTYwOCw2ICs2ODcsOCBAQCBwb3BfaW5wdXQgKGJvb2wgY2xlYW51cCkKICAgICAgICAgfQogICAg ICAgYnJlYWs7CgorICAgIGNhc2UgSU5QVVRfRklMRV9ROgorICAgICAgcmV0dXJuIGZhbHNlOwog ICAgIGNhc2UgSU5QVVRfRklMRToKICAgICAgIGlmICghY2xlYW51cCkKICAgICAgICAgcmV0dXJu IGZhbHNlOwpAQCAtNjM5LDkgKzcyMCwxNSBAQCBwb3BfaW5wdXQgKGJvb2wgY2xlYW51cCkKICAg ICAgIGFzc2VydCAoISJwb3BfaW5wdXQiKTsKICAgICAgIGFib3J0ICgpOwogICAgIH0KKyAgaWYg KG5leHQpCisgICAgeworICAgICAgLyogT25seSBwb3NzaWJsZSBhZnRlciBkbmwuICAqLworICAg ICAgYXNzZXJ0IChvYnN0YWNrX29iamVjdF9zaXplIChjdXJyZW50X2lucHV0KSA9PSAwCisgICAg ICAgICAgICAgICYmIG5leHQtPnR5cGUgPT0gSU5QVVRfU1RSSU5HKTsKKyAgICAgIG5leHQgPSBO VUxMOworICAgIH0KICAgb2JzdGFja19mcmVlIChjdXJyZW50X2lucHV0LCBpc3ApOwogICBjYWNo ZWRfcXVvdGUgPSBOVUxMOwotICBuZXh0ID0gTlVMTDsgICAgICAgICAgICAgICAgICAvKiBtaWdo dCBiZSBzZXQgaW4gcHVzaF9zdHJpbmdfaW5pdCAoKSAqLwoKICAgaXNwID0gdG1wOwogICBpbnB1 dF9jaGFuZ2UgPSB0cnVlOwpAQCAtNjU1LDcgKzc0Miw3IEBAIHBvcF9pbnB1dCAoYm9vbCBjbGVh bnVwKQogYm9vbAogcG9wX3dyYXB1cCAodm9pZCkKIHsKLSAgbmV4dCA9IE5VTEw7CisgIGFzc2Vy dCAoIW5leHQpOwogICBvYnN0YWNrX2ZyZWUgKGN1cnJlbnRfaW5wdXQsIE5VTEwpOwogICBmcmVl IChjdXJyZW50X2lucHV0KTsKCkBAIC02ODksMjUgKzc3NiwzMyBAQCBpbnB1dF9wcmludCAoc3Ry dWN0IG9ic3RhY2sgKm9icykKICAgc2l6ZV90IGxlbiA9IG9ic3RhY2tfb2JqZWN0X3NpemUgKGN1 cnJlbnRfaW5wdXQpOwogICBzaXplX3QgbWF4bGVuID0gbWF4X2RlYnVnX2FyZ3VtZW50X2xlbmd0 aDsKICAgdG9rZW5fY2hhaW4gKmNoYWluOworICBpbnB1dF9ibG9jayAqYmxvY2sgPSBuZXh0ID8g bmV4dCA6IGlzcDsKKyAgc2l6ZV90IGNvdW50OwoKLSAgaWYgKCFuZXh0KQotICAgIHsKLSAgICAg IGFzc2VydCAoIWxlbik7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICBzd2l0Y2ggKG5leHQtPnR5 cGUpCisgIHN3aXRjaCAoYmxvY2stPnR5cGUpCiAgICAgewogICAgIGNhc2UgSU5QVVRfU1RSSU5H OgotICAgICAgYXNzZXJ0ICghbmV4dC0+dS51X3MubGVuKTsKKyAgICAgIGFzc2VydCAobmV4dCAm JiAhYmxvY2stPnUudV9zLmxlbik7CisgICAgICBicmVhazsKKyAgICBjYXNlIElOUFVUX0ZJTEVf UToKKyAgICAgIGFzc2VydCAobmV4dCAmJiBsZW4pOworICAgICAgY291bnQgPSBibG9jay0+dS51 X3EuY291bnQ7CisgICAgICB3aGlsZSAoY291bnQtLSkKKyAgICAgICAgaWYgKHNoaXBvdXRfc3Ry aW5nX3RydW5jIChvYnMsIGJsb2NrLT51LnVfcS5xdW90ZXMtPnN0cjEsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYmxvY2stPnUudV9xLnF1b3Rlcy0+bGVuMSwgJm1heGxlbikp CisgICAgICAgICAgcmV0dXJuOworICAgICAgb2JzdGFja19ncm93IChvYnMsICI8ZmlsZTogIiwg c3RybGVuICgiPGZpbGU6ICIpKTsKKyAgICAgIG9ic3RhY2tfZ3JvdyAob2JzLCBibG9jay0+cHJl di0+ZmlsZSwgc3RybGVuIChibG9jay0+cHJldi0+ZmlsZSkpOworICAgICAgb2JzdGFja18xZ3Jv dyAob2JzLCAnPicpOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBJTlBVVF9GSUxFOgogICAgICAg YXNzZXJ0ICghbGVuKTsKICAgICAgIG9ic3RhY2tfZ3JvdyAob2JzLCAiPGZpbGU6ICIsIHN0cmxl biAoIjxmaWxlOiAiKSk7Ci0gICAgICBvYnN0YWNrX2dyb3cgKG9icywgbmV4dC0+ZmlsZSwgc3Ry bGVuIChuZXh0LT5maWxlKSk7CisgICAgICBvYnN0YWNrX2dyb3cgKG9icywgYmxvY2stPmZpbGUs IHN0cmxlbiAoYmxvY2stPmZpbGUpKTsKICAgICAgIG9ic3RhY2tfMWdyb3cgKG9icywgJz4nKTsK ICAgICAgIGJyZWFrOwogICAgIGNhc2UgSU5QVVRfQ0hBSU46Ci0gICAgICBjaGFpbiA9IG5leHQt PnUudV9jLmNoYWluOworICAgICAgY2hhaW4gPSBibG9jay0+dS51X2MuY2hhaW47CiAgICAgICB3 aGlsZSAoY2hhaW4pCiAgICAgICAgIHsKICAgICAgICAgICBzd2l0Y2ggKGNoYWluLT50eXBlKQpA QCAtNzYyLDM5ICs4NTcsNjMgQEAgc3RhdGljIGNvbnN0IGNoYXIgKgogbmV4dF9idWZmZXIgKHNp emVfdCAqbGVuLCBib29sIGFsbG93X3F1b3RlKQogewogICB0b2tlbl9jaGFpbiAqY2hhaW47Cisg IGlucHV0X2Jsb2NrICpibG9jayA9IGlzcDsKCiAgIHdoaWxlICgxKQogICAgIHsKLSAgICAgIGFz c2VydCAoaXNwKTsKKyAgICAgIGFzc2VydCAoYmxvY2spOwogICAgICAgaWYgKGlucHV0X2NoYW5n ZSkKICAgICAgICAgewotICAgICAgICAgIGN1cnJlbnRfZmlsZSA9IGlzcC0+ZmlsZTsKLSAgICAg ICAgICBjdXJyZW50X2xpbmUgPSBpc3AtPmxpbmU7CisgICAgICAgICAgY3VycmVudF9maWxlID0g YmxvY2stPmZpbGU7CisgICAgICAgICAgY3VycmVudF9saW5lID0gYmxvY2stPmxpbmU7CiAgICAg ICAgICAgaW5wdXRfY2hhbmdlID0gZmFsc2U7CiAgICAgICAgIH0KCi0gICAgICBzd2l0Y2ggKGlz cC0+dHlwZSkKKyAgICAgIHN3aXRjaCAoYmxvY2stPnR5cGUpCiAgICAgICAgIHsKICAgICAgICAg Y2FzZSBJTlBVVF9TVFJJTkc6Ci0gICAgICAgICAgaWYgKGlzcC0+dS51X3MubGVuKQorICAgICAg ICAgIGlmIChibG9jay0+dS51X3MubGVuKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAq bGVuID0gaXNwLT51LnVfcy5sZW47Ci0gICAgICAgICAgICAgIHJldHVybiBpc3AtPnUudV9zLnN0 cjsKKyAgICAgICAgICAgICAgKmxlbiA9IGJsb2NrLT51LnVfcy5sZW47CisgICAgICAgICAgICAg IHJldHVybiBibG9jay0+dS51X3Muc3RyOwogICAgICAgICAgICAgfQogICAgICAgICAgIGJyZWFr OwoKKyAgICAgICAgY2FzZSBJTlBVVF9GSUxFX1E6CisgICAgICAgICAgaWYgKGJsb2NrLT51LnVf cS5jb3VudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgcHVzaF9zdHJpbmdfaW5pdCAo YmxvY2stPmZpbGUsIGJsb2NrLT5saW5lKTsKKyAgICAgICAgICAgICAgd2hpbGUgKGJsb2NrLT51 LnVfcS5jb3VudCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBvYnN0YWNr X2dyb3cgKGN1cnJlbnRfaW5wdXQsIGJsb2NrLT51LnVfcS5xdW90ZXMtPnN0cjEsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLT51LnVfcS5xdW90ZXMtPmxlbjEpOworICAg ICAgICAgICAgICAgICAgYmxvY2stPnUudV9xLmNvdW50LS07CisgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICBwdXNoX3N0cmluZ19maW5pc2ggKCk7CisgICAgICAgICAgICAgIHJldHVy biBuZXh0X2J1ZmZlciAobGVuLCBhbGxvd19xdW90ZSk7CisgICAgICAgICAgICB9CisgICAgICAg ICAgaWYgKGJsb2NrLT5wcmV2LT51LnVfZi5lbmQpCisgICAgICAgICAgICB7CisgICAgICAgICAg ICAgIHN0cmluZ19wYWlyICpwYWlyID0gYmxvY2stPnUudV9xLnF1b3RlczsKKyAgICAgICAgICAg ICAgYmxvY2stPnR5cGUgPSBJTlBVVF9TVFJJTkc7CisgICAgICAgICAgICAgIGJsb2NrLT51LnVf cy5zdHIgPSBwYWlyLT5zdHIyOworICAgICAgICAgICAgICBibG9jay0+dS51X3MubGVuID0gcGFp ci0+bGVuMjsKKyAgICAgICAgICAgICAgcmV0dXJuIG5leHRfYnVmZmVyIChsZW4sIGFsbG93X3F1 b3RlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBibG9jayA9IGJsb2NrLT5wcmV2OworICAg ICAgICAgIEZBTExUSFJPVUdIOwogICAgICAgICBjYXNlIElOUFVUX0ZJTEU6CiAgICAgICAgICAg aWYgKHN0YXJ0X29mX2lucHV0X2xpbmUpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgIHN0 YXJ0X29mX2lucHV0X2xpbmUgPSBmYWxzZTsKLSAgICAgICAgICAgICAgY3VycmVudF9saW5lID0g Kytpc3AtPmxpbmU7CisgICAgICAgICAgICAgIGN1cnJlbnRfbGluZSA9ICsrYmxvY2stPmxpbmU7 CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKGlzcC0+dS51X2YuZW5kKQorICAgICAgICAg IGlmIChibG9jay0+dS51X2YuZW5kKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgcmV0 dXJuIGZyZWFkcHRyIChpc3AtPnUudV9mLmZwLCBsZW4pOworICAgICAgICAgIHJldHVybiBmcmVh ZHB0ciAoYmxvY2stPnUudV9mLmZwLCBsZW4pOwoKICAgICAgICAgY2FzZSBJTlBVVF9DSEFJTjoK LSAgICAgICAgICBjaGFpbiA9IGlzcC0+dS51X2MuY2hhaW47CisgICAgICAgICAgY2hhaW4gPSBi bG9jay0+dS51X2MuY2hhaW47CiAgICAgICAgICAgd2hpbGUgKGNoYWluKQogICAgICAgICAgICAg ewogICAgICAgICAgICAgICBpZiAoYWxsb3dfcXVvdGUgJiYgY2hhaW4tPnF1b3RlX2FnZSA9PSBj dXJyZW50X3F1b3RlX2FnZSkKQEAgLTgyMiwxNiArOTQxLDE2IEBAIG5leHRfYnVmZmVyIChzaXpl X3QgKmxlbiwgYm9vbCBhbGxvd19xdW90ZSkKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg ICAgICAgICAgICAgcmV0dXJuIE5VTEw7ICAvKiBObyBidWZmZXIgdG8gcHJvdmlkZS4gICovCiAg ICAgICAgICAgICAgICAgY2FzZSBDSEFJTl9MT0M6Ci0gICAgICAgICAgICAgICAgICBpc3AtPmZp bGUgPSBjaGFpbi0+dS51X2wuZmlsZTsKLSAgICAgICAgICAgICAgICAgIGlzcC0+bGluZSA9IGNo YWluLT51LnVfbC5saW5lOworICAgICAgICAgICAgICAgICAgYmxvY2stPmZpbGUgPSBjaGFpbi0+ dS51X2wuZmlsZTsKKyAgICAgICAgICAgICAgICAgIGJsb2NrLT5saW5lID0gY2hhaW4tPnUudV9s LmxpbmU7CiAgICAgICAgICAgICAgICAgICBpbnB1dF9jaGFuZ2UgPSB0cnVlOwotICAgICAgICAg ICAgICAgICAgaXNwLT51LnVfYy5jaGFpbiA9IGNoYWluLT5uZXh0OworICAgICAgICAgICAgICAg ICAgYmxvY2stPnUudV9jLmNoYWluID0gY2hhaW4tPm5leHQ7CiAgICAgICAgICAgICAgICAgICBy ZXR1cm4gbmV4dF9idWZmZXIgKGxlbiwgYWxsb3dfcXVvdGUpOwogICAgICAgICAgICAgICAgIGRl ZmF1bHQ6CiAgICAgICAgICAgICAgICAgICBhc3NlcnQgKCEibmV4dF9idWZmZXIiKTsKICAgICAg ICAgICAgICAgICAgIGFib3J0ICgpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg aXNwLT51LnVfYy5jaGFpbiA9IGNoYWluID0gY2hhaW4tPm5leHQ7CisgICAgICAgICAgICAgIGJs b2NrLT51LnVfYy5jaGFpbiA9IGNoYWluID0gY2hhaW4tPm5leHQ7CiAgICAgICAgICAgICB9CiAg ICAgICAgICAgYnJlYWs7CgpAQCAtODQ1LDYgKzk2NCw3IEBAIG5leHRfYnVmZmVyIChzaXplX3Qg KmxlbiwgYm9vbCBhbGxvd19xdW90ZSkKCiAgICAgICAvKiBFbmQgb2YgaW5wdXQgc291cmNlIC0t LSBwb3Agb25lIGxldmVsLiAgKi8KICAgICAgIHBvcF9pbnB1dCAodHJ1ZSk7CisgICAgICBibG9j ayA9IGlzcDsKICAgICB9CiB9CgpAQCAtODU4LDE5ICs5NzgsMjQgQEAgY29uc3VtZV9idWZmZXIg KHNpemVfdCBsZW4pCiAgIGNvbnN0IGNoYXIgKmJ1ZjsKICAgY29uc3QgY2hhciAqcDsKICAgc2l6 ZV90IGJ1Zl9sZW47CisgIGlucHV0X2Jsb2NrICpibG9jayA9IGlzcDsKCi0gIGFzc2VydCAoaXNw ICYmICFpbnB1dF9jaGFuZ2UgJiYgbGVuKTsKLSAgc3dpdGNoIChpc3AtPnR5cGUpCisgIGFzc2Vy dCAoYmxvY2sgJiYgIWlucHV0X2NoYW5nZSAmJiBsZW4pOworICBzd2l0Y2ggKGJsb2NrLT50eXBl KQogICAgIHsKICAgICBjYXNlIElOUFVUX1NUUklORzoKLSAgICAgIGFzc2VydCAobGVuIDw9IGlz cC0+dS51X3MubGVuKTsKLSAgICAgIGlzcC0+dS51X3MubGVuIC09IGxlbjsKLSAgICAgIGlzcC0+ dS51X3Muc3RyICs9IGxlbjsKKyAgICAgIGFzc2VydCAobGVuIDw9IGJsb2NrLT51LnVfcy5sZW4p OworICAgICAgYmxvY2stPnUudV9zLmxlbiAtPSBsZW47CisgICAgICBibG9jay0+dS51X3Muc3Ry ICs9IGxlbjsKICAgICAgIGJyZWFrOwoKKyAgICBjYXNlIElOUFVUX0ZJTEVfUToKKyAgICAgIGFz c2VydCAoIWJsb2NrLT51LnVfcS5jb3VudCk7CisgICAgICBibG9jayA9IGJsb2NrLT5wcmV2Owor ICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBJTlBVVF9GSUxFOgotICAgICAgYXNzZXJ0ICgh c3RhcnRfb2ZfaW5wdXRfbGluZSk7Ci0gICAgICBidWYgPSBmcmVhZHB0ciAoaXNwLT51LnVfZi5m cCwgJmJ1Zl9sZW4pOworICAgICAgYXNzZXJ0ICghc3RhcnRfb2ZfaW5wdXRfbGluZSAmJiAhYmxv Y2stPnUudV9mLmVuZCk7CisgICAgICBidWYgPSBmcmVhZHB0ciAoYmxvY2stPnUudV9mLmZwLCAm YnVmX2xlbik7CiAgICAgICBhc3NlcnQgKGJ1ZiAmJiBsZW4gPD0gYnVmX2xlbik7CiAgICAgICBi dWZfbGVuID0gMDsKICAgICAgIHdoaWxlICgocCA9IChjaGFyICopIG1lbWNociAoYnVmICsgYnVm X2xlbiwgJ1xuJywgbGVuIC0gYnVmX2xlbikpKQpAQCAtODc4LDE1ICsxMDAzLDE1IEBAIGNvbnN1 bWVfYnVmZmVyIChzaXplX3QgbGVuKQogICAgICAgICAgIGlmIChwID09IGJ1ZiArIGxlbiAtIDEp CiAgICAgICAgICAgICBzdGFydF9vZl9pbnB1dF9saW5lID0gdHJ1ZTsKICAgICAgICAgICBlbHNl Ci0gICAgICAgICAgICBjdXJyZW50X2xpbmUgPSArK2lzcC0+bGluZTsKKyAgICAgICAgICAgIGN1 cnJlbnRfbGluZSA9ICsrYmxvY2stPmxpbmU7CiAgICAgICAgICAgYnVmX2xlbiA9IHAgLSBidWYg KyAxOwogICAgICAgICB9Ci0gICAgICBpZiAoZnJlYWRzZWVrIChpc3AtPnUudV9mLmZwLCBsZW4p ICE9IDApCisgICAgICBpZiAoZnJlYWRzZWVrIChibG9jay0+dS51X2YuZnAsIGxlbikgIT0gMCkK ICAgICAgICAgYXNzZXJ0IChmYWxzZSk7CiAgICAgICBicmVhazsKCiAgICAgY2FzZSBJTlBVVF9D SEFJTjoKLSAgICAgIGNoYWluID0gaXNwLT51LnVfYy5jaGFpbjsKKyAgICAgIGNoYWluID0gYmxv Y2stPnUudV9jLmNoYWluOwogICAgICAgYXNzZXJ0IChjaGFpbiAmJiBjaGFpbi0+dHlwZSA9PSBD SEFJTl9TVFIgJiYgbGVuIDw9IGNoYWluLT51LnVfcy5sZW4pOwogICAgICAgLyogUGFydGlhbCBj b25zdW1wdGlvbiBpbnZhbGlkYXRlcyBxdW90ZSBhZ2UuICAqLwogICAgICAgY2hhaW4tPnF1b3Rl X2FnZSA9IDA7CkBAIC05MjQsNiArMTA0OSwyOSBAQCBwZWVrX2lucHV0IChib29sIGFsbG93X2Fy Z3YpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICByZXR1cm4gdG9fdWNoYXIgKGJsb2Nr LT51LnVfcy5zdHJbMF0pOwoKKyAgICAgICAgY2FzZSBJTlBVVF9GSUxFX1E6CisgICAgICAgICAg aWYgKGJsb2NrLT51LnVfcS5jb3VudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgcHVz aF9zdHJpbmdfaW5pdCAoYmxvY2stPmZpbGUsIGJsb2NrLT5saW5lKTsKKyAgICAgICAgICAgICAg d2hpbGUgKGJsb2NrLT51LnVfcS5jb3VudCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgICBvYnN0YWNrX2dyb3cgKGN1cnJlbnRfaW5wdXQsIGJsb2NrLT51LnVfcS5xdW90ZXMt PnN0cjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLT51LnVfcS5xdW90 ZXMtPmxlbjEpOworICAgICAgICAgICAgICAgICAgYmxvY2stPnUudV9xLmNvdW50LS07CisgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICBwdXNoX3N0cmluZ19maW5pc2ggKCk7CisgICAg ICAgICAgICAgIHJldHVybiBwZWVrX2lucHV0IChhbGxvd19hcmd2KTsKKyAgICAgICAgICAgIH0K KyAgICAgICAgICBpZiAoYmxvY2stPnByZXYtPnUudV9mLmVuZCkKKyAgICAgICAgICAgIHsKKyAg ICAgICAgICAgICAgc3RyaW5nX3BhaXIgKnBhaXIgPSBibG9jay0+dS51X3EucXVvdGVzOworICAg ICAgICAgICAgICBibG9jay0+dHlwZSA9IElOUFVUX1NUUklORzsKKyAgICAgICAgICAgICAgYmxv Y2stPnUudV9zLnN0ciA9IHBhaXItPnN0cjI7CisgICAgICAgICAgICAgIGJsb2NrLT51LnVfcy5s ZW4gPSBwYWlyLT5sZW4yOworICAgICAgICAgICAgICByZXR1cm4gcGVla19pbnB1dCAoYWxsb3df YXJndik7CisgICAgICAgICAgICB9CisgICAgICAgICAgYmxvY2sgPSBibG9jay0+cHJldjsKKyAg ICAgICAgICBGQUxMVEhST1VHSDsKICAgICAgICAgY2FzZSBJTlBVVF9GSUxFOgogICAgICAgICAg IGNoID0gZ2V0YyAoYmxvY2stPnUudV9mLmZwKTsKICAgICAgICAgICBpZiAoY2ggIT0gRU9GKQpA QCAtMTAxNiw0NiArMTE2NCw3MSBAQCBuZXh0X2NoYXJfMSAoYm9vbCBhbGxvd19xdW90ZSwgYm9v bCBhbGxvd19hcmd2KQogewogICBpbnQgY2g7CiAgIHRva2VuX2NoYWluICpjaGFpbjsKKyAgaW5w dXRfYmxvY2sgKmJsb2NrID0gaXNwOwoKICAgd2hpbGUgKDEpCiAgICAgewotICAgICAgYXNzZXJ0 IChpc3ApOworICAgICAgYXNzZXJ0IChibG9jayk7CiAgICAgICBpZiAoaW5wdXRfY2hhbmdlKQog ICAgICAgICB7Ci0gICAgICAgICAgY3VycmVudF9maWxlID0gaXNwLT5maWxlOwotICAgICAgICAg IGN1cnJlbnRfbGluZSA9IGlzcC0+bGluZTsKKyAgICAgICAgICBjdXJyZW50X2ZpbGUgPSBibG9j ay0+ZmlsZTsKKyAgICAgICAgICBjdXJyZW50X2xpbmUgPSBibG9jay0+bGluZTsKICAgICAgICAg ICBpbnB1dF9jaGFuZ2UgPSBmYWxzZTsKICAgICAgICAgfQoKLSAgICAgIHN3aXRjaCAoaXNwLT50 eXBlKQorICAgICAgc3dpdGNoIChibG9jay0+dHlwZSkKICAgICAgICAgewogICAgICAgICBjYXNl IElOUFVUX1NUUklORzoKLSAgICAgICAgICBpZiAoIWlzcC0+dS51X3MubGVuKQorICAgICAgICAg IGlmICghYmxvY2stPnUudV9zLmxlbikKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGlz cC0+dS51X3MubGVuLS07Ci0gICAgICAgICAgcmV0dXJuIHRvX3VjaGFyICgqaXNwLT51LnVfcy5z dHIrKyk7CisgICAgICAgICAgYmxvY2stPnUudV9zLmxlbi0tOworICAgICAgICAgIHJldHVybiB0 b191Y2hhciAoKmJsb2NrLT51LnVfcy5zdHIrKyk7CgorICAgICAgICBjYXNlIElOUFVUX0ZJTEVf UToKKyAgICAgICAgICBpZiAoYmxvY2stPnUudV9xLmNvdW50KQorICAgICAgICAgICAgeworICAg ICAgICAgICAgICBwdXNoX3N0cmluZ19pbml0IChibG9jay0+ZmlsZSwgYmxvY2stPmxpbmUpOwor ICAgICAgICAgICAgICB3aGlsZSAoYmxvY2stPnUudV9xLmNvdW50KQorICAgICAgICAgICAgICAg IHsKKyAgICAgICAgICAgICAgICAgIG9ic3RhY2tfZ3JvdyAoY3VycmVudF9pbnB1dCwgYmxvY2st PnUudV9xLnF1b3Rlcy0+c3RyMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxv Y2stPnUudV9xLnF1b3Rlcy0+bGVuMSk7CisgICAgICAgICAgICAgICAgICBibG9jay0+dS51X3Eu Y291bnQtLTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIHB1c2hfc3RyaW5nX2Zp bmlzaCAoKTsKKyAgICAgICAgICAgICAgcmV0dXJuIG5leHRfY2hhcl8xIChhbGxvd19xdW90ZSwg YWxsb3dfYXJndik7CisgICAgICAgICAgICB9CisgICAgICAgICAgaWYgKGJsb2NrLT5wcmV2LT51 LnVfZi5lbmQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIHN0cmluZ19wYWlyICpwYWly ID0gYmxvY2stPnUudV9xLnF1b3RlczsKKyAgICAgICAgICAgICAgYmxvY2stPnR5cGUgPSBJTlBV VF9TVFJJTkc7CisgICAgICAgICAgICAgIGJsb2NrLT51LnVfcy5zdHIgPSBwYWlyLT5zdHIyOwor ICAgICAgICAgICAgICBibG9jay0+dS51X3MubGVuID0gcGFpci0+bGVuMjsKKyAgICAgICAgICAg ICAgcmV0dXJuIG5leHRfY2hhcl8xIChhbGxvd19xdW90ZSwgYWxsb3dfYXJndik7CisgICAgICAg ICAgICB9CisgICAgICAgICAgYmxvY2sgPSBibG9jay0+cHJldjsKKyAgICAgICAgICBGQUxMVEhS T1VHSDsKICAgICAgICAgY2FzZSBJTlBVVF9GSUxFOgogICAgICAgICAgIGlmIChzdGFydF9vZl9p bnB1dF9saW5lKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICBzdGFydF9vZl9pbnB1dF9s aW5lID0gZmFsc2U7Ci0gICAgICAgICAgICAgIGN1cnJlbnRfbGluZSA9ICsraXNwLT5saW5lOwor ICAgICAgICAgICAgICBjdXJyZW50X2xpbmUgPSArK2Jsb2NrLT5saW5lOwogICAgICAgICAgICAg fQoKICAgICAgICAgICAvKiBJZiBzdGRpbiBpcyBhIHRlcm1pbmFsLCBjYWxsaW5nIGdldGMgYWZ0 ZXIgcGVla19pbnB1dAogICAgICAgICAgICAgIGFscmVhZHkgY2FsbGVkIGl0IHdvdWxkIG1ha2Ug dGhlIHVzZXIgaGF2ZSB0byBoaXQgXkQKICAgICAgICAgICAgICB0d2ljZSB0byBxdWl0LiAgKi8K LSAgICAgICAgICBjaCA9IGlzcC0+dS51X2YuZW5kID8gRU9GIDogZ2V0YyAoaXNwLT51LnVfZi5m cCk7CisgICAgICAgICAgY2ggPSBibG9jay0+dS51X2YuZW5kID8gRU9GIDogZ2V0YyAoYmxvY2st PnUudV9mLmZwKTsKICAgICAgICAgICBpZiAoY2ggIT0gRU9GKQogICAgICAgICAgICAgewogICAg ICAgICAgICAgICBpZiAoY2ggPT0gJ1xuJykKICAgICAgICAgICAgICAgICBzdGFydF9vZl9pbnB1 dF9saW5lID0gdHJ1ZTsKICAgICAgICAgICAgICAgcmV0dXJuIGNoOwogICAgICAgICAgICAgfQor ICAgICAgICAgIGJsb2NrLT51LnVfZi5lbmQgPSB0cnVlOwogICAgICAgICAgIGJyZWFrOwoKICAg ICAgICAgY2FzZSBJTlBVVF9DSEFJTjoKLSAgICAgICAgICBjaGFpbiA9IGlzcC0+dS51X2MuY2hh aW47CisgICAgICAgICAgY2hhaW4gPSBibG9jay0+dS51X2MuY2hhaW47CiAgICAgICAgICAgd2hp bGUgKGNoYWluKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXJn YzsKQEAgLTEwOTksNyArMTI3Miw3IEBAIG5leHRfY2hhcl8xIChib29sIGFsbG93X3F1b3RlLCBi b29sIGFsbG93X2FyZ3YpCiAgICAgICAgICAgICAgICAgICAvKiBSYXRoZXIgdGhhbiBkaXJlY3Rs eSBwYXJzZSBhcmd2IGhlcmUsIHdlIHB1c2gKICAgICAgICAgICAgICAgICAgICAgIGFub3RoZXIg aW5wdXQgYmxvY2sgY29udGFpbmluZyB0aGUgbmV4dCB1bnBhcnNlZAogICAgICAgICAgICAgICAg ICAgICAgYXJndW1lbnQgZnJvbSBhcmd2LiAgKi8KLSAgICAgICAgICAgICAgICAgIHB1c2hfc3Ry aW5nX2luaXQgKGlzcC0+ZmlsZSwgaXNwLT5saW5lKTsKKyAgICAgICAgICAgICAgICAgIHB1c2hf c3RyaW5nX2luaXQgKGJsb2NrLT5maWxlLCBibG9jay0+bGluZSk7CiAgICAgICAgICAgICAgICAg ICBwdXNoX2FyZ19xdW90ZSAoY3VycmVudF9pbnB1dCwgY2hhaW4tPnUudV9hLmFyZ3YsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhaW4tPnUudV9hLmluZGV4LAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1b3RlX2NhY2hlIChOVUxMLCBjaGFpbi0+cXVv dGVfYWdlLApAQCAtMTEwOSwxNiArMTI4MiwxNiBAQCBuZXh0X2NoYXJfMSAoYm9vbCBhbGxvd19x dW90ZSwgYm9vbCBhbGxvd19hcmd2KQogICAgICAgICAgICAgICAgICAgcHVzaF9zdHJpbmdfZmlu aXNoICgpOwogICAgICAgICAgICAgICAgICAgcmV0dXJuIG5leHRfY2hhcl8xIChhbGxvd19xdW90 ZSwgYWxsb3dfYXJndik7CiAgICAgICAgICAgICAgICAgY2FzZSBDSEFJTl9MT0M6Ci0gICAgICAg ICAgICAgICAgICBpc3AtPmZpbGUgPSBjaGFpbi0+dS51X2wuZmlsZTsKLSAgICAgICAgICAgICAg ICAgIGlzcC0+bGluZSA9IGNoYWluLT51LnVfbC5saW5lOworICAgICAgICAgICAgICAgICAgYmxv Y2stPmZpbGUgPSBjaGFpbi0+dS51X2wuZmlsZTsKKyAgICAgICAgICAgICAgICAgIGJsb2NrLT5s aW5lID0gY2hhaW4tPnUudV9sLmxpbmU7CiAgICAgICAgICAgICAgICAgICBpbnB1dF9jaGFuZ2Ug PSB0cnVlOwotICAgICAgICAgICAgICAgICAgaXNwLT51LnVfYy5jaGFpbiA9IGNoYWluLT5uZXh0 OworICAgICAgICAgICAgICAgICAgYmxvY2stPnUudV9jLmNoYWluID0gY2hhaW4tPm5leHQ7CiAg ICAgICAgICAgICAgICAgICByZXR1cm4gbmV4dF9jaGFyXzEgKGFsbG93X3F1b3RlLCBhbGxvd19h cmd2KTsKICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgYXNzZXJ0 ICghIm5leHRfY2hhcl8xIik7CiAgICAgICAgICAgICAgICAgICBhYm9ydCAoKTsKICAgICAgICAg ICAgICAgICB9Ci0gICAgICAgICAgICAgIGlzcC0+dS51X2MuY2hhaW4gPSBjaGFpbiA9IGNoYWlu LT5uZXh0OworICAgICAgICAgICAgICBibG9jay0+dS51X2MuY2hhaW4gPSBjaGFpbiA9IGNoYWlu LT5uZXh0OwogICAgICAgICAgICAgfQogICAgICAgICAgIGJyZWFrOwoKQEAgLTExMzIsNiArMTMw NSw3IEBAIG5leHRfY2hhcl8xIChib29sIGFsbG93X3F1b3RlLCBib29sIGFsbG93X2FyZ3YpCgog ICAgICAgLyogRW5kIG9mIGlucHV0IHNvdXJjZSAtLS0gcG9wIG9uZSBsZXZlbC4gICovCiAgICAg ICBwb3BfaW5wdXQgKHRydWUpOworICAgICAgYmxvY2sgPSBpc3A7CiAgICAgfQogfQoKQEAgLTEx NjcsNiArMTM0MSw5IEBAIHNraXBfbGluZSAoY29uc3QgY2FsbF9pbmZvICpuYW1lKQogICAgIH0K ICAgaWYgKGNoID09IENIQVJfRU9GKQogICAgIG00X3dhcm4gKDAsIG5hbWUsIF8oImVuZCBvZiBm aWxlIHRyZWF0ZWQgYXMgbmV3bGluZSIpKTsKKyAgaWYgKCFuZXh0KQorICAgIC8qIFBvc3NpYmxl IGlmIGRubCBwb3BwZWQgaW5wdXQgbG9va2luZyBmb3IgbmV3bGluZS4gICovCisgICAgcHVzaF9z dHJpbmdfaW5pdCAoY3VycmVudF9maWxlLCBjdXJyZW50X2xpbmUpOwogfQoKIC8qIFdoZW4gbmV4 dF90b2tlbigpIHNlZXMgYSBidWlsdGluIHRva2VuIHdpdGggcGVla19pbnB1dCwgdGhpcwpkaWZm IC0tZ2l0IGEvc3JjL200LmggYi9zcmMvbTQuaAppbmRleCBmYTJjZGY2NS4uNGU1Y2E1ZmQgMTAw NjQ0Ci0tLSBhL3NyYy9tNC5oCisrKyBiL3NyYy9tNC5oCkBAIC0zNTcsNiArMzU3LDcgQEAgZXh0 ZXJuIHZvaWQgYXBwZW5kX21hY3JvIChzdHJ1Y3Qgb2JzdGFjayAqLCBidWlsdGluX2Z1bmMgKiwg dG9rZW5fY2hhaW4gKiosCiBleHRlcm4gdm9pZCBwdXNoX21hY3JvIChzdHJ1Y3Qgb2JzdGFjayAq LCBidWlsdGluX2Z1bmMgKik7CiBleHRlcm4gc3RydWN0IG9ic3RhY2sgKnB1c2hfc3RyaW5nX2lu aXQgKGNvbnN0IGNoYXIgKiwgaW50KTsKIGV4dGVybiBib29sIHB1c2hfdG9rZW4gKHRva2VuX2Rh dGEgKiwgaW50LCBib29sKTsKK2V4dGVybiB2b2lkIHB1c2hfcXVvdGVfd3JhcHBlciAodm9pZCk7 CiBleHRlcm4gdm9pZCBwdXNoX3N0cmluZ19maW5pc2ggKHZvaWQpOwogZXh0ZXJuIHN0cnVjdCBv YnN0YWNrICpwdXNoX3dyYXB1cF9pbml0IChjb25zdCBjYWxsX2luZm8gKiwgdG9rZW5fY2hhaW4g KioqKTsKIGV4dGVybiB2b2lkIHB1c2hfd3JhcHVwX2ZpbmlzaCAodm9pZCk7CgpiYXNlLWNvbW1p dDogZWU3ZDliN2I4NTYzNjEwOTU2ZDJlNDdjMDFjNGNiZjRkNmY4YjdiMApwcmVyZXF1aXNpdGUt cGF0Y2gtaWQ6IDExYTU2Y2UzMWFmMzUzZDNlMWExYWI4MzdkNGU3MGNhNDg3ODA0OTAKcHJlcmVx dWlzaXRlLXBhdGNoLWlkOiBkZDQ2YzIxOTQwNDc5ZDFmZDI1MGQ2MzJhMWVkMmUwNjA4MjM5YmQ0 Ci0tIAoyLjQ5LjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpNNC1wYXRjaGVzIG1haWxpbmcgbGlzdApNNC1wYXRjaGVzQGdudS5vcmcKaHR0cHM6Ly9s aXN0cy5nbnUub3JnL21haWxtYW4vbGlzdGluZm8vbTQtcGF0Y2hlcwo=