[PATCH v8 4/6] ieee1275: add support for NVMeoFC
Avnish Chouhan <[email protected]> Mon, 23 Feb 2026 19:14:09 +0530
| Newsgroups | org.gnu.grub-devel |
|---|---|
| Message-ID | <[email protected]> |
VGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRoZSBmdW5jdGlvbnMgdG8gc2NhbiBhbmQgZGlzY292ZXJ5 IG9mIE5WTWVvRkMuCgpTaWduZWQtb2ZmLWJ5OiBEaWVnbyBEb21pbmdvcyA8ZGllZ29kb0Bici5p Ym0uY29tPgpTaWduZWQtb2ZmLWJ5OiBBdm5pc2ggQ2hvdWhhbiA8YXZuaXNoQGxpbnV4LmlibS5j b20+Ci0tLQogZ3J1Yi1jb3JlL2Rpc2svaWVlZTEyNzUvb2ZkaXNrLmMgfCAzOTkgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNo YW5nZWQsIDMwMiBpbnNlcnRpb25zKCspLCA5NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9n cnViLWNvcmUvZGlzay9pZWVlMTI3NS9vZmRpc2suYyBiL2dydWItY29yZS9kaXNrL2llZWUxMjc1 L29mZGlzay5jCmluZGV4IDYyMDkwZmIuLmUyMTM0ODcgMTAwNjQ0Ci0tLSBhL2dydWItY29yZS9k aXNrL2llZWUxMjc1L29mZGlzay5jCisrKyBiL2dydWItY29yZS9kaXNrL2llZWUxMjc1L29mZGlz ay5jCkBAIC0yNiw2ICsyNiw5IEBACiAjaW5jbHVkZSA8Z3J1Yi90aW1lLmg+CiAjaW5jbHVkZSA8 Z3J1Yi9zYWZlbWF0aC5oPgogCisjZGVmaW5lIEVYVEVORF9QQVRIXzY0IDY0CisjZGVmaW5lIEVY VEVORF9QQVRIXzUxMiA1MTIKKwogc3RhdGljIGNoYXIgKmxhc3RfZGV2cGF0aDsKIHN0YXRpYyBn cnViX2llZWUxMjc1X2loYW5kbGVfdCBsYXN0X2loYW5kbGU7CiAKQEAgLTIyNCwxMTYgKzIyNywz MTggQEAgZGV2X2l0ZXJhdGVfcmVhbCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqcGF0 aCkKIH0KIAogc3RhdGljIHZvaWQKLWRldl9pdGVyYXRlIChjb25zdCBzdHJ1Y3QgZ3J1Yl9pZWVl MTI3NV9kZXZhbGlhcyAqYWxpYXMpCi17Ci0gIGlmIChncnViX3N0cmNtcCAoYWxpYXMtPnR5cGUs ICJmY3AiKSA9PSAwKQorZGV2X2l0ZXJhdGVfZmNwX2Rpc2tzIChjb25zdCBzdHJ1Y3QgZ3J1Yl9p ZWVlMTI3NV9kZXZhbGlhcyAqYWxpYXMpCisgeworICAvKgorICAgKiBJZiB3ZSBhcmUgZGVhbGlu ZyB3aXRoIGZjcCBkZXZpY2VzLCB3ZSBuZWVkCisgICAqIHRvIGZpbmQgdGhlIFdXUE5zIGFuZCBM VU5zIHRvIGl0ZXJhdGUgdGhlbQorICAgKi8KKyAgZ3J1Yl9pZWVlMTI3NV9paGFuZGxlX3QgaWhh bmRsZTsKKyAgZ3J1Yl91aW50NjRfdCAqcHRyX3RhcmdldHMsICpwdHJfbHVucywgaywgbDsKKyAg dW5zaWduZWQgaW50IGksIGosIHBvczsKKyAgY2hhciAqYnVmLCAqYnVmcHRyOworICBzdHJ1Y3Qg c2V0X2ZjcF90YXJnZXRzX2FyZ3MKKyAgeworICAgIHN0cnVjdCBncnViX2llZWUxMjc1X2NvbW1v bl9oZHIgY29tbW9uOworICAgIGdydWJfaWVlZTEyNzVfY2VsbF90IG1ldGhvZDsKKyAgICBncnVi X2llZWUxMjc1X2NlbGxfdCBpaGFuZGxlOworICAgIGdydWJfaWVlZTEyNzVfY2VsbF90IGNhdGNo X3Jlc3VsdDsKKyAgICBncnViX2llZWUxMjc1X2NlbGxfdCBuZW50cmllczsKKyAgICBncnViX2ll ZWUxMjc1X2NlbGxfdCB0YWJsZTsKKyAgfSBhcmdzX3RhcmdldHM7CisKKyAgc3RydWN0IHNldF9m Y3BfbHVuc19hcmdzCisgIHsKKyAgICBzdHJ1Y3QgZ3J1Yl9pZWVlMTI3NV9jb21tb25faGRyIGNv bW1vbjsKKyAgICBncnViX2llZWUxMjc1X2NlbGxfdCBtZXRob2Q7CisgICAgZ3J1Yl9pZWVlMTI3 NV9jZWxsX3QgaWhhbmRsZTsKKyAgICBncnViX2llZWUxMjc1X2NlbGxfdCB3d3BuX2g7CisgICAg Z3J1Yl9pZWVlMTI3NV9jZWxsX3Qgd3dwbl9sOworICAgIGdydWJfaWVlZTEyNzVfY2VsbF90IGNh dGNoX3Jlc3VsdDsKKyAgICBncnViX2llZWUxMjc1X2NlbGxfdCBuZW50cmllczsKKyAgICBncnVi X2llZWUxMjc1X2NlbGxfdCB0YWJsZTsKKyAgfSBhcmdzX2x1bnM7CisKKyAgc3RydWN0IGFyZ3Nf cmV0CisgIHsKKyAgICBncnViX3VpbnQ2NF90IGFkZHI7CisgICAgZ3J1Yl91aW50NjRfdCBsZW47 CisgIH07CisgIHN0cnVjdCBhcmdzX3JldCAqdGFyZ2V0c190YWJsZTsKKyAgc3RydWN0IGFyZ3Nf cmV0ICpsdW5zX3RhYmxlOworCisgIGlmIChncnViX2llZWUxMjc1X29wZW4gKGFsaWFzLT5wYXRo LCAmaWhhbmRsZSkpCiAgICAgewotICAgICAgLyoKLSAgICAgICAqIElmIHdlIGFyZSBkZWFsaW5n IHdpdGggZmNwIGRldmljZXMsIHdlIG5lZWQKLSAgICAgICAqIHRvIGZpbmQgdGhlIFdXUE5zIGFu ZCBMVU5zIHRvIGl0ZXJhdGUgdGhlbQotICAgICAgICovCi0gICAgICBncnViX2llZWUxMjc1X2lo YW5kbGVfdCBpaGFuZGxlOwotICAgICAgZ3J1Yl91aW50NjRfdCAqcHRyX3RhcmdldHMsICpwdHJf bHVucywgaywgbDsKLSAgICAgIHVuc2lnbmVkIGludCBpLCBqLCBwb3M7Ci0gICAgICBjaGFyICpi dWYsICpidWZwdHI7Ci0gICAgICBzdHJ1Y3Qgc2V0X2ZjcF90YXJnZXRzX2FyZ3MKLSAgICAgIHsK LSAgICAgICAgc3RydWN0IGdydWJfaWVlZTEyNzVfY29tbW9uX2hkciBjb21tb247Ci0gICAgICAg IGdydWJfaWVlZTEyNzVfY2VsbF90IG1ldGhvZDsKLSAgICAgICAgZ3J1Yl9pZWVlMTI3NV9jZWxs X3QgaWhhbmRsZTsKLSAgICAgICAgZ3J1Yl9pZWVlMTI3NV9jZWxsX3QgY2F0Y2hfcmVzdWx0Owot ICAgICAgICBncnViX2llZWUxMjc1X2NlbGxfdCBuZW50cmllczsKLSAgICAgICAgZ3J1Yl9pZWVl MTI3NV9jZWxsX3QgdGFibGU7Ci0gICAgICB9IGFyZ3NfdGFyZ2V0czsKLQotICAgICAgc3RydWN0 IHNldF9mY3BfbHVuc19hcmdzCi0gICAgICB7Ci0gICAgICAgIHN0cnVjdCBncnViX2llZWUxMjc1 X2NvbW1vbl9oZHIgY29tbW9uOwotICAgICAgICBncnViX2llZWUxMjc1X2NlbGxfdCBtZXRob2Q7 Ci0gICAgICAgIGdydWJfaWVlZTEyNzVfY2VsbF90IGloYW5kbGU7Ci0gICAgICAgIGdydWJfaWVl ZTEyNzVfY2VsbF90IHd3cG5faDsKLSAgICAgICAgZ3J1Yl9pZWVlMTI3NV9jZWxsX3Qgd3dwbl9s OwotICAgICAgICBncnViX2llZWUxMjc1X2NlbGxfdCBjYXRjaF9yZXN1bHQ7Ci0gICAgICAgIGdy dWJfaWVlZTEyNzVfY2VsbF90IG5lbnRyaWVzOwotICAgICAgICBncnViX2llZWUxMjc1X2NlbGxf dCB0YWJsZTsKLSAgICAgIH0gYXJnc19sdW5zOwotCi0gICAgICBzdHJ1Y3QgYXJnc19yZXQKLSAg ICAgIHsKLSAgICAgICAgZ3J1Yl91aW50NjRfdCBhZGRyOwotICAgICAgICBncnViX3VpbnQ2NF90 IGxlbjsKLSAgICAgIH07CisgICAgICBncnViX2RwcmludGYgKCJkaXNrIiwgImZhaWxlZCB0byBv cGVuIHRoZSBkaXNrIHdoaWxlIGl0ZXJhdGluZyBGQ1AgZGlzayBwYXRoPSVzXG4iLCBhbGlhcy0+ cGF0aCk7CisgICAgICByZXR1cm47CisgICAgfQogCi0gICAgICBpZiAoZ3J1Yl9pZWVlMTI3NV9v cGVuIChhbGlhcy0+cGF0aCwgJmloYW5kbGUpKQorICAvKiBTZXR1cCB0aGUgZmNwLXRhcmdldHMg bWV0aG9kIHRvIGNhbGwgdmlhIHBmdyovCisgIElOSVRfSUVFRTEyNzVfQ09NTU9OICgmYXJnc190 YXJnZXRzLmNvbW1vbiwgImNhbGwtbWV0aG9kIiwgMiwgMyk7CisgIGFyZ3NfdGFyZ2V0cy5tZXRo b2QgPSAoZ3J1Yl9pZWVlMTI3NV9jZWxsX3QpICJmY3AtdGFyZ2V0cyI7CisgIGFyZ3NfdGFyZ2V0 cy5paGFuZGxlID0gaWhhbmRsZTsKKworICAvKiBTZXR1cCB0aGUgZmNwLWx1bnMgbWV0aG9kIHRv IGNhbGwgdmlhIHBmdyAqLworICBJTklUX0lFRUUxMjc1X0NPTU1PTiAoJmFyZ3NfbHVucy5jb21t b24sICJjYWxsLW1ldGhvZCIsIDQsIDMpOworICBhcmdzX2x1bnMubWV0aG9kID0gKGdydWJfaWVl ZTEyNzVfY2VsbF90KSAiZmNwLWx1bnMiOworICBhcmdzX2x1bnMuaWhhbmRsZSA9IGloYW5kbGU7 CisgIGlmIChJRUVFMTI3NV9DQUxMX0VOVFJZX0ZOICgmYXJnc190YXJnZXRzKSA9PSAtMSkKKyAg ICB7CisgICAgICBncnViX2RwcmludGYgKCJkaXNrIiwgImZhaWxlZCB0byBnZXQgdGhlIHRhcmdl dHMgd2hpbGUgaXRlcmF0aW5nIEZDUCBkaXNrIHBhdGg9JXNcbiIsIGFsaWFzLT5wYXRoKTsKKyAg ICAgIGdydWJfaWVlZTEyNzVfY2xvc2UgKGloYW5kbGUpOworICAgICAgcmV0dXJuOworICAgIH0K KyAgLyogQWxsb2NhdGUgbWVtb3J5IGZvciBidWlsZGluZyB0aGUgcGF0aCAqLworICBidWYgPSBn cnViX21hbGxvYyAoZ3J1Yl9zdHJsZW4gKGFsaWFzLT5wYXRoKSArIEVYVEVORF9QQVRIXzY0KTsK KyAgaWYgKCFidWYpCisgICAgeworICAgICAgZ3J1Yl9pZWVlMTI3NV9jbG9zZSAoaWhhbmRsZSk7 CisgICAgICByZXR1cm47CisgICAgfQorICBidWZwdHIgPSBncnViX3N0cGNweSAoYnVmLCBhbGlh cy0+cGF0aCk7CisKKyAgLyoKKyAgICogSXRlcmF0ZSBvdmVyIGVudHJpZXMgcmV0dXJuZWQgYnkg cGZ3LiBFYWNoIGVudHJ5IGNvbnRhaW5zIGEKKyAgICogcG9pbnRlciB0byB3d3BuIHRhYmxlIGFu ZCBoaXMgbGVuZ3RoLgorICAgKi8KKyAgdGFyZ2V0c190YWJsZSA9IChzdHJ1Y3QgYXJnc19yZXQg KikgKGFyZ3NfdGFyZ2V0cy50YWJsZSk7CisgIGZvciAoaSA9IDA7IGkgPCBhcmdzX3RhcmdldHMu bmVudHJpZXM7IGkrKykKKyAgICB7CisgICAgICBwdHJfdGFyZ2V0cyA9IChncnViX3VpbnQ2NF90 KikgKGdydWJfYWRkcl90KSB0YXJnZXRzX3RhYmxlW2ldLmFkZHI7CisgICAgICAvKiBJdGVyYXRl IG92ZXIgYWxsIHd3cG5zIGluIGdpdmVuIHRhYmxlICovCisgICAgICBmb3IgKGsgPSAwOyBrIDwg dGFyZ2V0c190YWJsZVtpXS5sZW47IGsrKykKICAgICAgICAgewotICAgICAgICAgIGdydWJfZHBy aW50ZiAoImRpc2siLCAiZmFpbGVkIHRvIG9wZW4gdGhlIGRpc2sgd2hpbGUgaXRlcmF0aW5nIEZD UCBkaXNrIHBhdGg9JXNcbiIsIGFsaWFzLT5wYXRoKTsKLSAgICAgICAgICByZXR1cm47CisgICAg ICAgICAgYXJnc19sdW5zLnd3cG5fbCA9IChncnViX2llZWUxMjc1X2NlbGxfdCkgKCpwdHJfdGFy Z2V0cyk7CisgICAgICAgICAgYXJnc19sdW5zLnd3cG5faCA9IChncnViX2llZWUxMjc1X2NlbGxf dCkgKCpwdHJfdGFyZ2V0cyA+PiAzMik7CisgICAgICAgICAgcG9zID0gZ3J1Yl9zbnByaW50ZiAo YnVmcHRyLCAzMiwgIi9kaXNrQCUiIFBSSXhHUlVCX1VJTlQ2NF9ULAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGdydWJfZ2V0X3VuYWxpZ25lZDY0ICgoY29uc3Qgdm9pZCAqKSBwdHJf dGFyZ2V0cykpOworICAgICAgICAgIHB0cl90YXJnZXRzKys7CisgICAgICAgICAgLyogR2V0IHRo ZSBsdW5zIGZvciBnaXZlbiB3d3BuIHRhcmdldCAqLworICAgICAgICAgIGlmIChJRUVFMTI3NV9D QUxMX0VOVFJZX0ZOICgmYXJnc19sdW5zKSA9PSAtMSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg ICAgICAgZ3J1Yl9kcHJpbnRmICgiZGlzayIsICJmYWlsZWQgdG8gZ2V0IHRoZSBMVU5TIHdoaWxl IGl0ZXJhdGluZyBGQ1AgZGlzayBwYXRoPSVzXG4iLCBidWYpOworICAgICAgICAgICAgICBncnVi X2llZWUxMjc1X2Nsb3NlIChpaGFuZGxlKTsKKyAgICAgICAgICAgICAgZ3J1Yl9mcmVlIChidWYp OworICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgbHVuc190 YWJsZSA9IChzdHJ1Y3QgYXJnc19yZXQgKikgKGFyZ3NfbHVucy50YWJsZSk7CisKKyAgICAgICAg ICAvKiBJdGVyYXRlIG92ZXIgYWxsIExVTnMgKi8KKyAgICAgICAgICBmb3IgKGogPSAwOyBqIDwg YXJnc19sdW5zLm5lbnRyaWVzOyBqKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIHB0 cl9sdW5zID0gKGdydWJfdWludDY0X3QqKSAoZ3J1Yl9hZGRyX3QpIGx1bnNfdGFibGVbal0uYWRk cjsKKyAgICAgICAgICAgICAgZm9yIChsID0gMDsgbCA8IGx1bnNfdGFibGVbal0ubGVuOyBsKysp CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgZ3J1Yl9zbnByaW50ZiAoJmJ1 ZnB0cltwb3NdLCAzMCwgIiwlIiBQUkl4R1JVQl9VSU5UNjRfVCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGdydWJfZ2V0X3VuYWxpZ25lZDY0ICgoY29uc3Qgdm9pZCAqKSBwdHJf bHVucykpOworICAgICAgICAgICAgICAgICAgcHRyX2x1bnMrKzsKKyAgICAgICAgICAgICAgICAg IGRldl9pdGVyYXRlX3JlYWwgKGJ1ZiwgYnVmKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICB9CiAgICAgICAgIH0KKyAgICB9CisgIGdydWJfaWVlZTEyNzVfY2xvc2UgKGloYW5kbGUp OworICBncnViX2ZyZWUgKGJ1Zik7CisgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQKK2Rldl9p dGVyYXRlX2ZjcF9udm1lb2YgKGNvbnN0IHN0cnVjdCBncnViX2llZWUxMjc1X2RldmFsaWFzICph bGlhcykKK3sKKyAgY2hhciAqYnVmcHRyOworICBncnViX2llZWUxMjc1X2loYW5kbGVfdCBpaGFu ZGxlOworCisgIC8qIENyZWF0ZSB0aGUgc3RydWN0cyBmb3IgdGhlIHBhcmFtZXRlcnMgcGFzc2lu ZyB0byBQRlcgKi8KKyAgc3RydWN0IG52bWVfYXJncworICB7CisgICAgc3RydWN0IGdydWJfaWVl ZTEyNzVfY29tbW9uX2hkciBjb21tb247CisgICAgZ3J1Yl9pZWVlMTI3NV9jZWxsX3QgbWV0aG9k OworICAgIGdydWJfaWVlZTEyNzVfY2VsbF90IGloYW5kbGU7CisgICAgZ3J1Yl9pZWVlMTI3NV9j ZWxsX3QgY2F0Y2hfcmVzdWx0OworICAgIGdydWJfaWVlZTEyNzVfY2VsbF90IG5lbnRyaWVzOwor ICAgIGdydWJfaWVlZTEyNzVfY2VsbF90IHRhYmxlOworICB9IG52bWVfZGlzY292ZXJ5X2NvbnRy b2xsZXJzX2FyZ3MsIG52bWVfY29udHJvbGxlcnNfYXJncywgbnZtZV9uYW1lc3BhY2VzX2FyZ3M7 CisKKyAgLyogQ3JlYXRlIHRoZSBzdHJ1Y3RzIGZvciB0aGUgcmVzdWx0cyBmcm9tIFBGVyAqLwor ICBzdHJ1Y3QgZGlzY292ZXJ5X2NvbnRyb2xsZXJzX3RhYmxlX3N0cnVjdAorICB7CisgICAgZ3J1 Yl91aW50NjRfdCB0YWJsZVsyNTZdOworICAgIGdydWJfdWludDMyX3QgbGVuOworICB9IGRpc2Nv dmVyeV9jb250cm9sbGVyc190YWJsZTsKKworICAvKgorICAgKiBzdHJ1Y3QgbnZtZV9jb250cm9s bGVyc190YWJsZV9lbnRyeQorICAgKiB0aGlzIHRoZSByZXR1cm4gb2YgbnZtZS1jb250cm9sbGVy cyBtZXRob2QgdGFibGVzLCBjb250YWluaW5nOgorICAgKiAtIDItYnl0ZSBjb250cm9sbGVyIElE CisgICAqIC0gMjU2LWJ5dGUgdHJhbnNwb3J0IGFkZHJlc3Mgc3RyaW5nCisgICAqIC0gMjU2LWJ5 dGUgZmllbGQgY29udGFpbmluZyBudWxsLXRlcm1pbmF0ZWQgTlZNIHN1YnN5c3RlbSBOUU4gc3Ry aW5nIHVwIHRvIDIyMyBjaGFyYWN0ZXJzCisgICAqLworICBzdHJ1Y3QgbnZtZV9jb250cm9sbGVy c190YWJsZV9lbnRyeQorICB7CisgICAgZ3J1Yl91aW50MTZfdCBpZDsKKyAgICBjaGFyIHd3cG5b MjU2XTsKKyAgICBjaGFyIG5xblsyNTZdOworICB9OworCisgIHN0cnVjdCBudm1lX2NvbnRyb2xs ZXJzX3RhYmxlX2VudHJ5X3JlYWwKKyAgeworICAgIGdydWJfdWludDE2X3QgaWQ7CisgICAgY2hh ciB3d3BuWzI1Nl07CisgICAgY2hhciBucW5bMjU2XTsKKyAgfTsKKworICBzdHJ1Y3QgbnZtZV9j b250cm9sbGVyc190YWJsZV9lbnRyeSogbnZtZV9jb250cm9sbGVyc190YWJsZTsKKyAgZ3J1Yl91 aW50MzJfdCBudm1lX2NvbnRyb2xsZXJzX3RhYmxlX2VudHJpZXM7CisgIGNoYXIgKmJ1ZjsKKyAg dW5zaWduZWQgaW50IGkgPSAwOworICBpbnQgY3VycmVudF9idWZmZXJfaW5kZXg7CisgIGludCBu dm1lX2NvbnRyb2xsZXJfaW5kZXg7CisgIGludCBidWZwdHJfcG9zMjsKKyAgZ3J1Yl91aW50MzJf dCBuYW1lc3BhY2VfaW5kZXggPSAwOworICBzdHJ1Y3QgbnZtZV9jb250cm9sbGVyc190YWJsZV9l bnRyeSogbnZtZV9jb250cm9sbGVyc190YWJsZV9idWY7CisKKyAgbnZtZV9jb250cm9sbGVyc190 YWJsZSA9IGdydWJfbWFsbG9jIChzaXplb2YgKHN0cnVjdCBudm1lX2NvbnRyb2xsZXJzX3RhYmxl X2VudHJ5KSAqIDI1Nik7CisgIC8qIEFsbG9jYXRlIG1lbW9yeSBmb3IgYnVpbGRpbmcgdGhlIE5W TWVvRiBwYXRoICovCisgIGJ1ZiA9IGdydWJfbWFsbG9jIChncnViX3N0cmxlbiAoYWxpYXMtPnBh dGgpICsgRVhURU5EX1BBVEhfNTEyKTsKKworICBpZiAoIWJ1ZiB8fCAhbnZtZV9jb250cm9sbGVy c190YWJsZSkKKyAgICB7CisgICAgICBncnViX2ZyZWUgKG52bWVfY29udHJvbGxlcnNfdGFibGUp OworICAgICAgZ3J1Yl9mcmVlIChidWYpOworICAgICAgcmV0dXJuOworICAgIH0KIAotICAgICAg LyogU2V0dXAgdGhlIGZjcC10YXJnZXRzIG1ldGhvZCB0byBjYWxsIHZpYSBwZncqLwotICAgICAg SU5JVF9JRUVFMTI3NV9DT01NT04gKCZhcmdzX3RhcmdldHMuY29tbW9uLCAiY2FsbC1tZXRob2Qi LCAyLCAzKTsKLSAgICAgIGFyZ3NfdGFyZ2V0cy5tZXRob2QgPSAoZ3J1Yl9pZWVlMTI3NV9jZWxs X3QpICJmY3AtdGFyZ2V0cyI7Ci0gICAgICBhcmdzX3RhcmdldHMuaWhhbmRsZSA9IGloYW5kbGU7 CisgIC8qIENvcHkgdGhlIGFsaWFzLT5wYXRoIHRvIGJ1ZiBzbyB3ZSBjYW4gd29yayB3aXRoICov CisgIGJ1ZnB0ciA9IGdydWJfc3RwY3B5IChidWYsIGFsaWFzLT5wYXRoKTsKKyAgZ3J1Yl9zbnBy aW50ZiAoYnVmcHRyLCAzMiwgIi9udm1lLW9mIik7CiAKLSAgICAgIC8qIFNldHVwIHRoZSBmY3At bHVucyBtZXRob2QgdG8gY2FsbCB2aWEgcGZ3ICovCi0gICAgICBJTklUX0lFRUUxMjc1X0NPTU1P TiAoJmFyZ3NfbHVucy5jb21tb24sICJjYWxsLW1ldGhvZCIsIDQsIDMpOwotICAgICAgYXJnc19s dW5zLm1ldGhvZCA9IChncnViX2llZWUxMjc1X2NlbGxfdCkgImZjcC1sdW5zIjsKLSAgICAgIGFy Z3NfbHVucy5paGFuZGxlID0gaWhhbmRsZTsKLSAgICAgIGlmIChJRUVFMTI3NV9DQUxMX0VOVFJZ X0ZOICgmYXJnc190YXJnZXRzKSA9PSAtMSkKKyAgLyoKKyAgICogIE9wZW4gdGhlIG52bWUtb2Yg bGF5ZXIKKyAgICogIEV4LiAgL3BjaUBidXMvZmlicmUtY2hhbm5lbEBAZGV2LGZ1bmMvbnZtZS1v ZgorICAgKi8KKyAgaWYgKGdydWJfaWVlZTEyNzVfb3BlbiAoYnVmLCAmaWhhbmRsZSkpCisgICAg eworICAgICAgZ3J1Yl9kcHJpbnRmICgiZGlzayIsICJmYWlsZWQgdG8gb3BlbiB0aGUgZGlzayB3 aGlsZSBpdGVyYXRpbmcgRkNQIGRpc2sgcGF0aD0lc1xuIiwgYnVmKTsKKyAgICAgIGdydWJfZnJl ZSAobnZtZV9jb250cm9sbGVyc190YWJsZSk7CisgICAgICBncnViX2ZyZWUgKGJ1Zik7CisgICAg ICByZXR1cm47CisgICAgfQorCisgIC8qCisgICAqIENhbGwgdG8gbnZtZS1kaXNjb3ZlcnktY29u dHJvbGxlcnMgbWV0aG9kIGZyb20gdGhlIG52bWUtb2YgbGF5ZXIKKyAgICogdG8gZ2V0IGEgbGlz dCBvZiB0aGUgTlZNZSBkaXNjb3ZlcnkgY29udHJvbGxlcnMgcGVyIHRoZSBiaW5kaW5nCisgICAq LworICBJTklUX0lFRUUxMjc1X0NPTU1PTiAoJm52bWVfZGlzY292ZXJ5X2NvbnRyb2xsZXJzX2Fy Z3MuY29tbW9uLCAiY2FsbC1tZXRob2QiLCAyLCAyKTsKKyAgbnZtZV9kaXNjb3ZlcnlfY29udHJv bGxlcnNfYXJncy5tZXRob2QgPSAoZ3J1Yl9pZWVlMTI3NV9jZWxsX3QpICJudm1lLWRpc2NvdmVy eS1jb250cm9sbGVycyI7CisgIG52bWVfZGlzY292ZXJ5X2NvbnRyb2xsZXJzX2FyZ3MuaWhhbmRs ZSA9IGloYW5kbGU7CisgIGlmIChJRUVFMTI3NV9DQUxMX0VOVFJZX0ZOICgmbnZtZV9kaXNjb3Zl cnlfY29udHJvbGxlcnNfYXJncykgPT0gLTEpCisgICAgeworICAgICAgZ3J1Yl9kcHJpbnRmICgi ZGlzayIsICJmYWlsZWQgdG8gZ2V0IHRoZSB0YXJnZXRzIHdoaWxlIGl0ZXJhdGluZyBGQ1AgZGlz ayBwYXRoPSVzXG4iLCBidWYpOworICAgICAgZ3J1Yl9mcmVlIChudm1lX2NvbnRyb2xsZXJzX3Rh YmxlKTsKKyAgICAgIGdydWJfZnJlZSAoYnVmKTsKKyAgICAgIGdydWJfaWVlZTEyNzVfY2xvc2Ug KGloYW5kbGUpOworICAgICAgcmV0dXJuOworICAgIH0KKworICAvKiBBZnRlciBjbG9zaW5nIHRo ZSBkZXZpY2UsIHRoZSBpbmZvIGlzIGxvc3QuIFNvIGxldHMgY29weSBlYWNoIGJ1ZmZlciBpbiB0 aGUgYnVmZmVycyB0YWJsZSAqLworICBkaXNjb3ZlcnlfY29udHJvbGxlcnNfdGFibGUubGVuID0g KGdydWJfdWludDMyX3QpIG52bWVfZGlzY292ZXJ5X2NvbnRyb2xsZXJzX2FyZ3MubmVudHJpZXM7 CisKKyAgZm9yIChpID0gMDsgaSA8IGRpc2NvdmVyeV9jb250cm9sbGVyc190YWJsZS5sZW47IGkr KykKKyAgICB7CisgICAgICBkaXNjb3ZlcnlfY29udHJvbGxlcnNfdGFibGUudGFibGVbaV0gPSAo KGdydWJfdWludDY0X3QqKSBudm1lX2Rpc2NvdmVyeV9jb250cm9sbGVyc19hcmdzLnRhYmxlKVtp XTsKKyAgICB9CisgIGdydWJfaWVlZTEyNzVfY2xvc2UgKGloYW5kbGUpOworICBncnViX2Rwcmlu dGYgKCJvZmRpc2siLCJOVk1lb0Y6IEZvdW5kICVkIGRpc2NvdmVyeSBjb250cm9sbGVyc1xuIiwg ZGlzY292ZXJ5X2NvbnRyb2xsZXJzX3RhYmxlLmxlbik7CisKKyAgLyogRm9yIGVhY2ggbnZtZSBk aXNjb3ZlcnkgY29udHJvbGxlciAqLworICBmb3IgKGN1cnJlbnRfYnVmZmVyX2luZGV4ID0gMDsg Y3VycmVudF9idWZmZXJfaW5kZXggPCAoaW50KSBkaXNjb3ZlcnlfY29udHJvbGxlcnNfdGFibGUu bGVuOyBjdXJyZW50X2J1ZmZlcl9pbmRleCsrKQorICAgIHsKKyAgICAgIGdydWJfc25wcmludGYg KGJ1ZnB0ciwgNjQsICIvbnZtZS1vZi9jb250cm9sbGVyQCUiIFBSSXhHUlVCX1VJTlQ2NF9UICIs ZmZmZiIsCisgICAgICAgICAgICAgICAgICAgICBkaXNjb3ZlcnlfY29udHJvbGxlcnNfdGFibGUu dGFibGVbY3VycmVudF9idWZmZXJfaW5kZXhdKTsKKyAgICAgIGdydWJfZHByaW50ZiAoIm9mZGlz ayIsICJudm1lb2YgY29udHJvbGxlcj0lc1xuIiwgYnVmKTsKKyAgICAgIGlmIChncnViX2llZWUx Mjc1X29wZW4gKGJ1ZiwgJmloYW5kbGUpKQogICAgICAgICB7Ci0gICAgICAgICAgZ3J1Yl9kcHJp bnRmICgiZGlzayIsICJmYWlsZWQgdG8gZ2V0IHRoZSB0YXJnZXRzIHdoaWxlIGl0ZXJhdGluZyBG Q1AgZGlzayBwYXRoPSVzXG4iLCBhbGlhcy0+cGF0aCk7Ci0gICAgICAgICAgZ3J1Yl9pZWVlMTI3 NV9jbG9zZSAoaWhhbmRsZSk7Ci0gICAgICAgICAgcmV0dXJuOworICAgICAgICAgIGdydWJfZHBy aW50ZiAoIm9mZGlzayIsICJmYWlsZWQgdG8gb3BlbiB0aGUgZGlzayB3aGlsZSBnZXR0aW5nIG52 bWUtY29udHJvbGxlcnMgIHBhdGg9JXNcbiIsIGJ1Zik7CisgICAgICAgICAgY29udGludWU7CiAg ICAgICAgIH0KLSAgICAgIGJ1ZiA9IGdydWJfbWFsbG9jIChncnViX3N0cmxlbiAoYWxpYXMtPnBh dGgpICsgMzIgKyAzMik7Ci0gICAgICBpZiAoIWJ1ZikKKyAgICAgIElOSVRfSUVFRTEyNzVfQ09N TU9OICgmbnZtZV9jb250cm9sbGVyc19hcmdzLmNvbW1vbiwgImNhbGwtbWV0aG9kIiwgMiwgMik7 CisgICAgICBudm1lX2NvbnRyb2xsZXJzX2FyZ3MubWV0aG9kID0gKGdydWJfaWVlZTEyNzVfY2Vs bF90KSAibnZtZS1jb250cm9sbGVycyI7CisgICAgICBudm1lX2NvbnRyb2xsZXJzX2FyZ3MuaWhh bmRsZSA9IGloYW5kbGU7CisgICAgICBudm1lX2NvbnRyb2xsZXJzX2FyZ3MuY2F0Y2hfcmVzdWx0 ID0gMDsKKworICAgICAgaWYgKElFRUUxMjc1X0NBTExfRU5UUllfRk4gKCZudm1lX2NvbnRyb2xs ZXJzX2FyZ3MpID09IC0xKQogICAgICAgICB7CisgICAgICAgICAgZ3J1Yl9kcHJpbnRmICgib2Zk aXNrIiwgImZhaWxlZCB0byBnZXQgdGhlIG52bWUtY29udHJvbGxlcnMgd2hpbGUgaXRlcmF0aW5n IEZDUCBkaXNrIHBhdGhcbiIpOwogICAgICAgICAgIGdydWJfaWVlZTEyNzVfY2xvc2UgKGloYW5k bGUpOwotICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgYnVmcHRyID0gZ3J1Yl9z dHBjcHkgKGJ1ZiwgYWxpYXMtPnBhdGgpOworICAgICAgICAgIGNvbnRpbnVlOworCSB9CiAKLSAg ICAgIC8qCi0gICAgICAgKiBJdGVyYXRlIG92ZXIgZW50cmllcyByZXR1cm5lZCBieSBwZncuIEVh Y2ggZW50cnkgY29udGFpbnMgYQotICAgICAgICogcG9pbnRlciB0byB3d3BuIHRhYmxlIGFuZCBo aXMgbGVuZ3RoLgotICAgICAgICovCi0gICAgICBzdHJ1Y3QgYXJnc19yZXQgKnRhcmdldHNfdGFi bGUgPSAoc3RydWN0IGFyZ3NfcmV0ICopIChhcmdzX3RhcmdldHMudGFibGUpOwotICAgICAgZm9y IChpID0gMDsgaSA8IGFyZ3NfdGFyZ2V0cy5uZW50cmllczsgaSsrKQorICAgICAgLyogQ29weSB0 aGUgYnVmZmVyIGxpc3QgdG8gbnZtZV9jb250cm9sbGVyc190YWJsZSAqLworICAgICAgbnZtZV9j b250cm9sbGVyc190YWJsZV9lbnRyaWVzID0gKChncnViX3VpbnQzMl90KSBudm1lX2NvbnRyb2xs ZXJzX2FyZ3MubmVudHJpZXMpOworICAgICAgbnZtZV9jb250cm9sbGVyc190YWJsZV9idWYgPSAo c3RydWN0IG52bWVfY29udHJvbGxlcnNfdGFibGVfZW50cnkqKSBudm1lX2NvbnRyb2xsZXJzX2Fy Z3MudGFibGU7CisgICAgICBmb3IgKGkgPSAwOyBpIDwgbnZtZV9jb250cm9sbGVyc190YWJsZV9l bnRyaWVzOyBpKyspCiAgICAgICAgIHsKLSAgICAgICAgICBwdHJfdGFyZ2V0cyA9IChncnViX3Vp bnQ2NF90KikgdGFyZ2V0c190YWJsZVtpXS5hZGRyOwotICAgICAgICAgIC8qIEl0ZXJhdGUgb3Zl ciBhbGwgd3dwbnMgaW4gZ2l2ZW4gdGFibGUgKi8KLSAgICAgICAgICBmb3IoayA9IDA7IGsgPCB0 YXJnZXRzX3RhYmxlW2ldLmxlbjsgaysrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBh cmdzX2x1bnMud3dwbl9sID0gKGdydWJfaWVlZTEyNzVfY2VsbF90KSAoKnB0cl90YXJnZXRzKTsK LSAgICAgICAgICAgICAgYXJnc19sdW5zLnd3cG5faCA9IChncnViX2llZWUxMjc1X2NlbGxfdCkg KCpwdHJfdGFyZ2V0cyA+PiAzMik7Ci0gICAgICAgICAgICAgIHBvcyA9IGdydWJfc25wcmludGYg KGJ1ZnB0ciwgMzIsICIvZGlza0AlIiBQUkl4R1JVQl9VSU5UNjRfVCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBncnViX2dldF91bmFsaWduZWQ2NCAoKnB0cl90YXJnZXRzKysp KTsKLSAgICAgICAgICAgICAgLyogR2V0IHRoZSBsdW5zIGZvciBnaXZlbiB3d3BuIHRhcmdldCAq LwotICAgICAgICAgICAgICBpZiAoSUVFRTEyNzVfQ0FMTF9FTlRSWV9GTiAoJmFyZ3NfbHVucykg PT0gLTEpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgZ3J1Yl9kcHJpbnRm ICgiZGlzayIsICJmYWlsZWQgdG8gZ2V0IHRoZSBMVU5TIHdoaWxlIGl0ZXJhdGluZyBGQ1AgZGlz ayBwYXRoPSVzXG4iLCBidWYpOwotICAgICAgICAgICAgICAgICAgZ3J1Yl9pZWVlMTI3NV9jbG9z ZSAoaWhhbmRsZSk7Ci0gICAgICAgICAgICAgICAgICBncnViX2ZyZWUgKGJ1Zik7Ci0gICAgICAg ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBzdHJ1 Y3QgYXJnc19yZXQgKmx1bnNfdGFibGUgPSAoc3RydWN0IGFyZ3NfcmV0ICopIChhcmdzX2x1bnMu dGFibGUpOwotCi0gICAgICAgICAgICAgIC8qIEl0ZXJhdGUgb3ZlciBhbGwgTFVOcyAqLwotICAg ICAgICAgICAgICBmb3IoaiA9IDA7IGogPCBhcmdzX2x1bnMubmVudHJpZXM7IGorKykKLSAgICAg ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBwdHJfbHVucyA9IChncnViX3VpbnQ2NF90 KikgbHVuc190YWJsZVtqXS5hZGRyOwotICAgICAgICAgICAgICAgICAgZm9yKGwgPSAwOyBsIDwg bHVuc190YWJsZVtqXS5sZW47IGwrKykKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAg ICAgICAgICAgICAgIGdydWJfc25wcmludGYgKCZidWZwdHJbcG9zXSwgMzAsICIsJSIgUFJJeEdS VUJfVUlOVDY0X1QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnViX2dl dF91bmFsaWduZWQ2NCAoKnB0cl9sdW5zKyspKTsKLSAgICAgICAgICAgICAgICAgICAgICBkZXZf aXRlcmF0ZV9yZWFsIChidWYsIGJ1Zik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg ICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKwkgICBudm1lX2NvbnRyb2xsZXJz X3RhYmxlW2ldLmlkID0gKGdydWJfdWludDE2X3QpIG52bWVfY29udHJvbGxlcnNfdGFibGVfYnVm W2ldLmlkOworICAgICAgICAgIGdydWJfc3RyY3B5IChudm1lX2NvbnRyb2xsZXJzX3RhYmxlW2ld Lnd3cG4sIG52bWVfY29udHJvbGxlcnNfdGFibGVfYnVmW2ldLnd3cG4pOworICAgICAgICAgIGdy dWJfc3RyY3B5IChudm1lX2NvbnRyb2xsZXJzX3RhYmxlW2ldLm5xbiwgbnZtZV9jb250cm9sbGVy c190YWJsZV9idWZbaV0ubnFuKTsKKwkgfQogICAgICAgZ3J1Yl9pZWVlMTI3NV9jbG9zZSAoaWhh bmRsZSk7Ci0gICAgICBncnViX2ZyZWUgKGJ1Zik7Ci0gICAgICByZXR1cm47CisgICAgICBncnVi X2RwcmludGYgKCJvZmRpc2siLCAiTlZNZW9GOiBmb3VuZCAlZCBudm1lIGNvbnRyb2xsZXJzXG4i LCAoaW50KSBudm1lX2NvbnRyb2xsZXJzX2FyZ3MubmVudHJpZXMpOworCisgICAgICAvKiBGb3Ig ZWFjaCBudm1lIGNvbnRyb2xsZXIgKi8KKyAgICAgIGZvciAobnZtZV9jb250cm9sbGVyX2luZGV4 ID0gMDsgbnZtZV9jb250cm9sbGVyX2luZGV4IDwgKGludCkgbnZtZV9jb250cm9sbGVyc19hcmdz Lm5lbnRyaWVzOyBudm1lX2NvbnRyb2xsZXJfaW5kZXgrKykKKyAgICAgICB7CisgICAgICAgICAv KgorCSAgICogT3BlbiB0aGUgbnZtZSBjb250cm9sbGVyCisgICAgICAgICAgKiAvcGNpQGJ1cy9m aWJyZS1jaGFubmVsQGRldixmdW5jL252bWUtb2YvY29udHJvbGxlckB0cmFuc3BvcnQtYWRkcixj dGxyLWlkOm5xbj10Z3Qtc3Vic3lzdGVtLW5xbgorICAgICAgICAgICovCisgICAgICAgICBidWZw dHJfcG9zMiA9IGdydWJfc25wcmludGYgKGJ1ZnB0ciwgNTEyLCAiL252bWUtb2YvY29udHJvbGxl ckAlcyxmZmZmOm5xbj0lcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBudm1lX2NvbnRyb2xsZXJzX3RhYmxlW252bWVfY29udHJvbGxlcl9pbmRleF0ud3dwbiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG52bWVfY29udHJvbGxlcnNfdGFi bGVbbnZtZV9jb250cm9sbGVyX2luZGV4XS5ucW4pOworCSAgZ3J1Yl9kcHJpbnRmICgib2ZkaXNr IiwgIk5WTWVvRjogbnZtZW9mIGNvbnRyb2xsZXI9JXNcbiIsIGJ1Zik7CisgICAgICAgICBpZiAo Z3J1Yl9pZWVlMTI3NV9vcGVuIChidWYsICZpaGFuZGxlKSkKKwkgICAgeworICAgICAgICAgICAg IGdydWJfZHByaW50ZiAoIm9mZGlzayIsICJmYWlsZWQgdG8gb3BlbiB0aGUgcGF0aD0lc1xuIiwg YnVmKTsKKyAgICAgICAgICAgICBjb250aW51ZTsKKwkgICAgfQorICAgICAgICAgSU5JVF9JRUVF MTI3NV9DT01NT04gKCZudm1lX25hbWVzcGFjZXNfYXJncy5jb21tb24sICJjYWxsLW1ldGhvZCIs IDIsIDIpOworICAgICAgICAgbnZtZV9uYW1lc3BhY2VzX2FyZ3MubWV0aG9kID0gKGdydWJfaWVl ZTEyNzVfY2VsbF90KSAiZ2V0LW5hbWVzcGFjZS1saXN0IjsKKyAgICAgICAgIG52bWVfbmFtZXNw YWNlc19hcmdzLmloYW5kbGUgPSBpaGFuZGxlOworICAgICAgICAgbnZtZV9uYW1lc3BhY2VzX2Fy Z3MuY2F0Y2hfcmVzdWx0ID0gMDsKKworCSAgaWYgKElFRUUxMjc1X0NBTExfRU5UUllfRk4gKCZu dm1lX25hbWVzcGFjZXNfYXJncykgPT0gLTEpCisgICAgICAgICAgIHsKKyAgICAgICAgICAgICBn cnViX2RwcmludGYgKCJvZmRpc2siLCAiZmFpbGVkIHRvIGdldCB0aGUgbnZtZS1uYW1lc3BhY2Ut bGlzdCB3aGlsZSBpdGVyYXRpbmcgRkNQIGRpc2sgcGF0aFxuIik7CisgICAgICAgICAgICAgZ3J1 Yl9pZWVlMTI3NV9jbG9zZSAoaWhhbmRsZSk7CisgICAgICAgICAgICAgY29udGludWU7CisgICAg ICAgICAgIH0KKyAgICAgICAgIGdydWJfdWludDMyX3QgKm5hbWVzcGFjZXMgPSAoZ3J1Yl91aW50 MzJfdCopIG52bWVfbmFtZXNwYWNlc19hcmdzLnRhYmxlOworICAgICAgICAgZ3J1Yl9kcHJpbnRm ICgib2ZkaXNrIiwgIk5WTWVvRjogZm91bmQgJWQgbmFtZXNwYWNlc1xuIiwgKGludCludm1lX25h bWVzcGFjZXNfYXJncy5uZW50cmllcyk7CisJICBncnViX2llZWUxMjc1X2Nsb3NlIChpaGFuZGxl KTsKKyAgICAgICAgIG5hbWVzcGFjZV9pbmRleCA9IDA7CisgICAgICAgICBmb3IgKG5hbWVzcGFj ZV9pbmRleD0wOyBuYW1lc3BhY2VfaW5kZXggPCBudm1lX25hbWVzcGFjZXNfYXJncy5uZW50cmll czsgbmFtZXNwYWNlX2luZGV4KyspCisgICAgICAgICAgIHsKKwkgICAgICBncnViX3NucHJpbnRm IChidWZwdHIrYnVmcHRyX3BvczIsIDUxMiwgIi9uYW1lc3BhY2VAJSJQUkl4R1JVQl9VSU5UMzJf VCwgbmFtZXNwYWNlc1tuYW1lc3BhY2VfaW5kZXhdKTsKKyAgICAgICAgICAgICBncnViX2Rwcmlu dGYgKCJvZmRpc2siLCAiTlZNZW9GOiBuYW1lc3BhY2U9JXNcbiIsIGJ1Zik7CisgICAgICAgICAg ICAgZGV2X2l0ZXJhdGVfcmVhbCAoYnVmLCBidWYpOworICAgICAgICAgICB9CisgICAgICAgICBk ZXZfaXRlcmF0ZV9yZWFsIChidWYsIGJ1Zik7CisJfQorICAgIH0KKyAgZ3J1Yl9mcmVlIChidWYp OworICBncnViX2ZyZWUgKG52bWVfY29udHJvbGxlcnNfdGFibGUpOworICByZXR1cm47Cit9CisK K3N0YXRpYyB2b2lkCitkZXZfaXRlcmF0ZSAoY29uc3Qgc3RydWN0IGdydWJfaWVlZTEyNzVfZGV2 YWxpYXMgKmFsaWFzKQoreworICBpZiAoZ3J1Yl9zdHJjbXAgKGFsaWFzLT50eXBlLCAiZmNwIikg PT0gMCkKKyAgICB7CisgICAgICAvKiBJdGVyYXRlIGRpc2tzICovCisgICAgICBkZXZfaXRlcmF0 ZV9mY3BfZGlza3MgKGFsaWFzKTsKKyAgICAgIC8qIEl0ZXJhdGUgTlZNZW9GICovCisgICAgICBk ZXZfaXRlcmF0ZV9mY3BfbnZtZW9mIChhbGlhcyk7CiAgICAgfQogICBlbHNlIGlmIChncnViX3N0 cmNtcCAoYWxpYXMtPnR5cGUsICJ2c2NzaSIpID09IDApCiAgICAgewotLSAKMi40Ny4xCgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KR3J1Yi1kZXZlbCBt YWlsaW5nIGxpc3QKR3J1Yi1kZXZlbEBnbnUub3JnCmh0dHBzOi8vbGlzdHMuZ251Lm9yZy9tYWls bWFuL2xpc3RpbmZvL2dydWItZGV2ZWwK