ZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3BlbGwvZm8vZm9fRk8uZGlmZiBiL3J1bnRpbWUvc3BlbGwvZm8vZm9fRk8uZGlmZgppbmRleCAxMmQwNDIwLi5hMjI0ZDJiIDEwMDY0NAotLS0gYS9ydW50aW1lL3NwZWxsL2ZvL2ZvX0ZPLmRpZmYKKysrIGIvcnVudGltZS9zcGVsbC9mby9mb19GTy5kaWZmCkBAIC0xLDE0ICsxLDE0MiBAQAogKioqIGZvX0ZPLm9yaWcuYWZmCVdlZCBBdWcgMzEgMjI6MDI6MTEgMjAwNQotLS0tIGZvX0ZPLmFmZglXZWQgQXVnIDMxIDIyOjAyOjExIDIwMDUKKy0tLSBmb19GTy5hZmYJRnJpIFNlcCAzMCAxMjo1NTozMCAyMDA1CiAqKioqKioqKioqKioqKioKICoqKiA2ICoqKioKLS0tLSA2LDE0IC0tLS0KKy0tLSA2LDE0MiAtLS0tCiAgIAogKyBGT0wgIODh4uPk5ebn6Onq6+zt7u/w8fLz9PX2+Pn6+/z9/t//CiArIExPVyAg4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb4+fr7/P3+3/8KICsgVVBQICDAwcLDxMXGx8jJysvMzc7P0NHS09TV1tjZ2tvc3d7f/wogKyAKLSsgU09GT0ZST00gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWuDh4uPk5ebn6Onq6+zt7u/w8fLz9PX2+Pn6+/z9/t//wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbY2drb3N3evwotKyBTT0ZPVE8gICBlYmN0ZWZnaGVqa2xubmVwa3JzdGV2dmtlc2ViY3RlZmdoZWprbG5uZXBrcnN0ZXZ2a2VzZWVlZWVlZWNlZWVlZWVlZWRuZWVlZWVlZWVlZWVwc2VlZWVlZWVlY2VlZWVlZWVlZG5lZWVlZWVlZWVlZXA/Ci0rIAogKyBNSURXT1JECSctCisrIAorKyAjIHNvdW5kIGZvbGRpbmcgZnJvbSBBc3BlbGwsIHZlcnNpb24gMC4xLTIwMDEuMDQuMzAtNQorKyAjIDIwMDEuMDQuMzA6IEphY29iIFNwYXJyZSBBbmRlcnNlbgorKyAjIG5vIGNvcHlyaWdodCBub3RpY2UKKysgCisrICMgZnJhIGZvciBla3NlbXBlbCBhZnRhZ2UsIGRldCB1ZHRhZ2VzIGF2dGFnZQorKyBTQUwgQUE8ICAgICAgICAgICAgICAgICAgxQorKyBTQUwgQUZUXiAgICAgICAgICAgICAgICAgQVQKKysgI0FGPCAgICAgICAgICAgICAgICAgIEFWCisrIFNBTCBBSCQ8ICAgICAgICAgICAgICAgICBBCisrIFNBTCBBICAgICAgICAgICAgICAgICAgICBBCisrIAorKyBTQUwgwSAgICAgICAgICAgICAgICAgICAgwQorKyAKKysgU0FMIEIgICAgICAgICAgICAgICAgICAgIEIKKysgCisrICMgQyB1ZHRhbGVzIG5vZ2VuZ2FuZ2Ugc29tIEssIGFuZHJlIGdhbmdlIHNvbSBTIG9nIGkgZuUgdGlsZuZsZGUgc29tIFNKCisrICMgQ0sgYnJ1Z2VzIG9mdGUgdGlsIGF0IOZuZHJlIGx5ZGVuIHDlIGRldCBmb3JlZ+VlbmRlIChmLmVrcyByZW4gQSBseWQpCisrICMKKysgU0FMIENDPCAgICAgICAgICAgICAgICAgIEtLCisrIFNBTCBDSzwgICAgICAgICAgICAgICAgICBLICAKKysgU0FMIENIUl48ICAgICAgICAgICAgICAgIEtSCisrIFNBTCBDSDwgICAgICAgICAgICAgICAgICBTSgorKyBTQUwgQ0k8ICAgICAgICAgICAgICAgICAgU0kKKysgU0FMIENPPCAgICAgICAgICAgICAgICAgIEtPCisrIFNBTCBDWTwgICAgICAgICAgICAgICAgICBTWQorKyBTQUwgQyAgICAgICAgICAgICAgICAgICAgQworKyAKKysgIyBEIHVkdGFsZXMgb2Z0ZSBibPhkdC9zdHVtdCAtIHJlZ2xlcj8KKysgIworKyAjIFN0dW10IEcKKysgCisrICNESUdeJCAgICAgICAgICAgICAgICBEQUoKKysgI0RJRzwgICAgICAgICAgICAgICAgIERJCisrIFNBTCBEICAgICAgICAgICAgICAgICAgICBECisrIAorKyBTQUwg0FVSPCAgICAgICAgICAgICAgICAgVlVSCisrIFNBTCDQICAgICAgICAgICAgICAgICAgICBfCisrIAorKyBTQUwgRUFVWDwgICAgICAgICAgICAgICAgTworKyBTQUwgRUFVPCAgICAgICAgICAgICAgICAgTworKyAjRUokPCAgICAgICAgICAgICAgICAgQUoKKysgU0FMIEVVUzwgICAgICAgICAgICAgICAgINhWUworKyBTQUwgRSAgICAgICAgICAgICAgICAgICAgRQorKyAKKysgU0FMIMk8ICAgICAgICAgICAgICAgICAgIEUKKysgCisrIFNBTCDIPCAgICAgICAgICAgICAgICAgICBFCisrIAorKyBTQUwgRiAgICAgICAgICAgICAgICAgICAgRgorKyAKKysgU0FMIEcgICAgICAgICAgICAgICAgICAgIEcKKysgCisrIFNBTCBISl48ICAgICAgICAgICAgICAgICBKCisrIFNBTCBIxVJEPCAgICAgICAgICAgICAgICBIxVIKKysgU0FMIEjFTkQ8ICAgICAgICAgICAgICAgIEjFTgorKyBTQUwgSCAgICAgICAgICAgICAgICAgICAgSAorKyAKKysgU0FMIEnQXiQgICAgICAgICAgICAgICAgIM0KKysgU0FMIEnQJDwgICAgICAgICAgICAgICAgIEkKKysgU0FMIElORF48ICAgICAgICAgICAgICAgIElOCisrIFNBTCBJICAgICAgICAgICAgICAgICAgICBJCisrIAorKyBTQUwgzSAgICAgICAgICAgICAgICAgICAgzQorKyAKKysgU0FMIEogICAgICAgICAgICAgICAgICAgIEoKKysgCisrIFNBTCBLRV4gICAgICAgICAgICAgICAgICBUSkUKKysgU0FMIEsgICAgICAgICAgICAgICAgICAgIEsKKysgCisrICMgU3R1bXQgRworKyBTQUwgTElHPCAgICAgICAgICAgICAgICAgTEkKKysgU0FMIEwgICAgICAgICAgICAgICAgICAgIEwKKysgCisrIFNBTCBNICAgICAgICAgICAgICAgICAgICBNCisrIAorKyBTQUwgTiAgICAgICAgICAgICAgICAgICAgTgorKyAKKysgU0FMIE9DSDwgICAgICAgICAgICAgICAgIE9LCisrIFNBTCBPICAgICAgICAgICAgICAgICAgICBPCisrIAorKyBTQUwg0yAgICAgICAgICAgICAgICAgICAg0worKyAKKysgU0FMIFBIPCAgICAgICAgICAgICAgICAgIEYKKysgU0FMIFAgICAgICAgICAgICAgICAgICAgIFAKKysgCisrIFNBTCBRPCAgICAgICAgICAgICAgICAgICBLVQorKyAKKysgI1JFR048ICAgICAgICAgICAgICAgIFJFSk4KKysgU0FMIFIgICAgICAgICAgICAgICAgICAgIFIKKysgCisrIFNBTCBTSDwgICAgICAgICAgICAgICAgICBTSgorKyBTQUwgU0nTTiAgICAgICAgICAgICAgICAgU0rTTgorKyBTQUwgUydTPCQgICAgICAgICAgICAgICAgUworKyBTQUwgUyAgICAgICAgICAgICAgICAgICAgUworKyAKKysgU0FMIFRIJDwgICAgICAgICAgICAgICAgIFQKKysgU0FMIFRJ004gICAgICAgICAgICAgICAgIFNK004KKysgU0FMIFQgICAgICAgICAgICAgICAgICAgIFQKKysgCisrIFNBTCBVICAgICAgICAgICAgICAgICAgICBVCisrIAorKyBTQUwg2iAgICAgICAgICAgICAgICAgICAg2gorKyAKKysgU0FMINw8ICAgICAgICAgICAgICAgICAgIFkKKysgCisrIFNBTCBWICAgICAgICAgICAgICAgICAgICBWCisrIAorKyBTQUwgVzwgICAgICAgICAgICAgICAgICAgVgorKyAKKysgU0FMIFgnUyQ8ICAgICAgICAgICAgICAgIEtTCisrIFNBTCBYPCAgICAgICAgICAgICAgICAgICBLUworKyAKKysgU0FMIFk8ICAgICAgICAgICAgICAgICAgIEkKKysgCisrIFNBTCDdPCAgICAgICAgICAgICAgICAgICDNCisrIAorKyBTQUwgWidTJDwgICAgICAgICAgICAgICAgUworKyBTQUwgWiQ8ICAgICAgICAgICAgICAgICAgUworKyBTQUwgWiAgICAgICAgICAgICAgICAgICAgWgorKyAKKysgU0FMIMY8ICAgICAgICAgICAgICAgICAgIEEKKysgCisrIFNBTCDEPCAgICAgICAgICAgICAgICAgICDGCisrIAorKyBTQUwg2FJOICAgICAgICAgICAgICAgICAg2EROCisrIFNBTCDYICAgICAgICAgICAgICAgICAgICDYCisrIAorKyBTQUwg1jwgICAgICAgICAgICAgICAgICAg2AorKyAKKysgU0FMIMU8ICAgICAgICAgICAgICAgICAgIMEKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3BlbGwvZ2wvZ2xfRVMuZGlmZiBiL3J1bnRpbWUvc3BlbGwvZ2wvZ2xfRVMuZGlmZgppbmRleCA2YjBiMmExLi5iZTU2OTM3IDEwMDY0NAotLS0gYS9ydW50aW1lL3NwZWxsL2dsL2dsX0VTLmRpZmYKKysrIGIvcnVudGltZS9zcGVsbC9nbC9nbF9FUy5kaWZmCkBAIC0xLDE1ICsxLDcyIEBACiAqKiogZ2xfRVMub3JpZy5hZmYJVHVlIEF1ZyAxNiAxNzo1OToxNSAyMDA1Ci0tLS0gZ2xfRVMuYWZmCVR1ZSBBdWcgMTYgMTc6NTk6MTUgMjAwNQorLS0tIGdsX0VTLmFmZglGcmkgU2VwIDMwIDEzOjA2OjQ1IDIwMDUKICoqKioqKioqKioqKioqKgogKioqIDIsMyAqKioqCi0tLS0gMiwxMSAtLS0tCistLS0gMiw4IC0tLS0KICAgVFJZIOHp7fP6ZXNpYW5ydG9sY2R1Z21waGJmdvEKICsgCiArIEZPTCAg4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb4+fr7/P3+3/8KICsgTE9XICDg4eLj5OXm5+jp6uvs7e7v8PHy8/T19vj5+vv8/f7f/wogKyBVUFAgIMDBwsPExcbHyMnKy8zNzs/Q0dLT1NXW2Nna29zd3t//CiArIAotKyBTT0ZPRlJPTSBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFla4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb4+fr7/P3+3//AwcLDxMXGx8jJysvMzc7P0NHS09TV1tjZ2tvc3d6/Ci0rIFNPRk9UTyAgIGViY3RlZmdoZWprbG5uZXBrcnN0ZXZ2a2VzZWJjdGVmZ2hlamtsbm5lcGtyc3RldnZrZXNlZWVlZWVlY2VlZWVlZWVlZG5lZWVlZWVlZWVlZXBzZWVlZWVlZWVjZWVlZWVlZWVkbmVlZWVlZWVlZWVlcD8KLSsgCiAgICMgQ09NUE9VTkRNSU4gMworKioqKioqKioqKioqKioqCisqKiogMTE3MiAqKioqCistLS0gMTE3NywxMjMzIC0tLS0KKyAgU0ZYIEMgICBpb25hciBjafNuICAgICAgICAgY2lvbmFyCisrIAorKyAjIHNvdW5kc2xpa2UgbWFwcGluZyBmcm9tIEFzcGVsbAorKyAjICAgQ29weXJpZ2h0IChDKSAyMDAwIFJhbfNuIEZsb3JlcywgZGlzdHJpYnV0ZWQgdW5kZXIgR05VIEdQTAorKyAjICAgIFJhbfNuIEZsb3JlcyBtYXkgYmUgcmVhY2hlZCBieSBlbWFpbCBhdCBmYTJyYW1vbkB1c2MuZXMKKysgIyB2ZXJzaW9uIGdhbGVnYSAwLjEKKysgCisrIFNBTCBmb2xsb3d1cCAgICAgICAgMAorKyBTQUwgY29sbGFwc2VfcmVzdWx0IDAKKysgCisrIFNBTCDBICAgICAgICAgICAgICAgICAgQQorKyBTQUwgQSAgICAgICAgICAgICAgICAgIEEKKysgU0FMIEJFTCQJCSAgIEJMRQorKyBTQUwgQkwJCSAgIEwKKysgU0FMIEJNICAgICAgICAgICAgICAgICBNCisrIFNBTCBCUwkJICAgUworKyBTQUwgQlQgICAgICAgICAgICAgICAgIFQKKysgU0FMIEIJCSAgIEIKKysgU0FMIEMoRUkpCQkgICBTCisrIFNBTCBDCQkgICBLCisrIFNBTCBECQkgICBECisrIFNBTCDJCQkgICBFCisrIFNBTCBFSQkJICAgRUMKKysgU0FMIEVJICAgICAgICAgICAgICAgICBFUAorKyBTQUwgRQkJICAgRQorKyBTQUwgRgkJICAgRgorKyBTQUwgRwkJICAgRworKyBTQUwgSCAgICAgICAgICAgICAgICAgIF8KKysgU0FMIM0gICAgICAgICAgICAgICAgICBJCisrIFNBTCBJVCAgICAgICAgICAgICAgICAgSUNUCisrIFNBTCBJCQkgICBJCisrIFNBTCBKICAgICAgICAgICAgICAgICAgWAorKyBTQUwgSyAgICAgICAgICAgICAgICAgIEsKKysgU0FMIEwgICAgICAgICAgICAgICAgICBMCisrIFNBTCBNICAgICAgICAgICAgICAgICAgTQorKyBTQUwgTiAgICAgICAgICAgICAgICAgIE1OCisrIFNBTCBOICAgICAgICAgICAgICAgICAgTk4KKysgU0FMIE4JCSAgIE4KKysgU0FMINMgICAgICAgICAgICAgICAgICBPCisrIFNBTCDTTiQgICAgICAgICAgICAgICAgSdNOCisrIFNBTCBPICAgICAgICAgICAgICAgICAgTworKyBTQUwgUFMgICAgICAgICAgICAgICAgIFMKKysgU0FMIFFVICAgICAgICAgICAgICAgICBLCisrIFNBTCBSCQkgICBSCisrIFNBTCBTICAgICAgICAgICAgICAgICAgUworKyBTQUwgVCAgICAgICAgICAgICAgICAgIFQKKysgU0FMINogICAgICAgICAgICAgICAgICBVCisrIFNBTCBVVCAgICAgICAgICAgICAgICAgVUNUCisrIFNBTCBVICAgICAgICAgICAgICAgICAgVQorKyBTQUwgViAgICAgICAgICAgICAgICAgIEIKKysgU0FMIFggICAgICAgICAgICAgICAgICBTCisrIFNBTCBYICAgICAgICAgICAgICAgICAgRworKyBTQUwgWCAgICAgICAgICAgICAgICAgIEoKKysgU0FMIFkgICAgICAgICAgICAgICAgICBJCisrIFNBTCBaQSQgICAgICAgICAgICAgICAgQ0lBCisrIFNBTCBaTyQgICAgICAgICAgICAgICAgQ0lPCisrIFNBTCBaICAgICAgICAgICAgICAgICAgUwpkaWZmIC0tZ2l0IGEvc3JjL3NwZWxsLmMgYi9zcmMvc3BlbGwuYwppbmRleCA2MDc2ZGZjLi5iZTVkYzk1IDEwMDY0NAotLS0gYS9zcmMvc3BlbGwuYworKysgYi9zcmMvc3BlbGwuYwpAQCAtMTExOTcsMTIgKzExMTk3LDEyIEBACiAJICogInRoZXMiIC0+ICJ0aGVzZSIuICovCiAJc3RwID0gJlNVRygqZ2FwLCAwKTsKIAlmb3IgKGkgPSBnYXAtPmdhX2xlbiAtIDE7IGkgPj0gMDsgLS1pKQotCSAgICBpZiAoU1RSTEVOKHN0cFtpXS5zdF93b3JkKSA9PSBnb29kbGVuCisJICAgIGlmICgoaW50KVNUUkxFTihzdHBbaV0uc3Rfd29yZCkgPT0gZ29vZGxlbgogCQkJJiYgU1RSTkNNUChzdHBbaV0uc3Rfd29yZCwgZ29vZHdvcmQsIGdvb2RsZW4pID09IDAKIAkJCQkJCSYmIHN0cFtpXS5zdF9vcmdsZW4gPT0gYmFkbGVuKQogCSAgICB7CiAJCS8qCi0JCSAqIEZvdW5kIGl0LiAgUmVtZW1iZXIgdGhlIGxvd2VzdCBzY29yZS4KKwkJICogRm91bmQgaXQuICBSZW1lbWJlciB0aGUgd29yZCB3aXRoIHRoZSBsb3dlc3Qgc2NvcmUuCiAJCSAqLwogCQlpZiAoc3RwW2ldLnN0X3NsYW5nID09IE5VTEwpCiAJCSAgICBzdHBbaV0uc3Rfc2xhbmcgPSBzbGFuZzsKQEAgLTExMjE3LDcgKzExMjE3LDggQEAKIAkJICAgICAqIE5lZWQgdG8gZG8gdGhhdCBmb3IgdGhlIG90aGVyIG9uZSBub3csIG90aGVyd2lzZSB0aGUKIAkJICAgICAqIHNjb3JlcyBjYW4ndCBiZSBjb21wYXJlZC4gIFRoaXMgaGFwcGVucyBiZWNhdXNlCiAJCSAgICAgKiBzdWdnZXN0X3RyeV9jaGFuZ2UoKSBkb2Vzbid0IGNvbXB1dGUgdGhlIHNvdW5kYWxpa2UKLQkJICAgICAqIHdvcmQgdG8ga2VlcCBpdCBmYXN0LiAqLworCQkgICAgICogd29yZCB0byBrZWVwIGl0IGZhc3QsIHdoaWxlIHNvbWUgc3BlY2lhbCBtZXRob2RzIHNldAorCQkgICAgICogdGhlIHNvdW5kYWxpa2Ugc2NvcmUgdG8gemVyby4gKi8KIAkJICAgIGlmIChoYWRfYm9udXMpCiAJCQlyZXNjb3JlX29uZShzdSwgJnN0cFtpXSk7CiAJCSAgICBlbHNlCkBAIC0xMTM0MCwyNCArMTEzNDEsMjYgQEAKICAqLwogICAgIHN0YXRpYyB2b2lkCiByZXNjb3JlX29uZShzdSwgc3RwKQotICAgIHN1Z2luZm9fVCAqc3U7Ci0gICAgc3VnZ2VzdF9UICpzdHA7CisgICAgc3VnaW5mb19UCSpzdTsKKyAgICBzdWdnZXN0X1QJKnN0cDsKIHsKICAgICBzbGFuZ19UCSpzbGFuZyA9IHN0cC0+c3Rfc2xhbmc7CiAgICAgY2hhcl91CXNhbF9iYWR3b3JkW01BWFdMRU5dOworICAgIGNoYXJfdQkqcDsKIAogICAgIC8qIE9ubHkgcmVzY29yZSBzdWdnZXN0aW9ucyB0aGF0IGhhdmUgbm8gc2FsIHNjb3JlIHlldCBhbmQgZG8gaGF2ZSBhCiAgICAgICogbGFuZ3VhZ2UuICovCiAgICAgaWYgKHNsYW5nICE9IE5VTEwgJiYgc2xhbmctPnNsX3NhbC5nYV9sZW4gPiAwICYmICFzdHAtPnN0X2hhZF9ib251cykKICAgICB7CiAJaWYgKHNsYW5nID09IHN1LT5zdV9zYWxsYW5nKQotCSAgICBzdHAtPnN0X2FsdHNjb3JlID0gc3RwX3NhbF9zY29yZShzdHAsIHN1LAotCQkJCQkJICAgc2xhbmcsIHN1LT5zdV9zYWxfYmFkd29yZCk7CisJICAgIHAgPSBzdS0+c3Vfc2FsX2JhZHdvcmQ7CiAJZWxzZQogCXsKIAkgICAgc3BlbGxfc291bmRmb2xkKHNsYW5nLCBzdS0+c3VfZmJhZHdvcmQsIFRSVUUsIHNhbF9iYWR3b3JkKTsKLQkgICAgc3RwLT5zdF9hbHRzY29yZSA9IHN0cF9zYWxfc2NvcmUoc3RwLCBzdSwgc2xhbmcsIHNhbF9iYWR3b3JkKTsKKwkgICAgcCA9IHNhbF9iYWR3b3JkOwogCX0KKworCXN0cC0+c3RfYWx0c2NvcmUgPSBzdHBfc2FsX3Njb3JlKHN0cCwgc3UsIHNsYW5nLCBwKTsKIAlpZiAoc3RwLT5zdF9hbHRzY29yZSA9PSBTQ09SRV9NQVhNQVgpCiAJICAgIHN0cC0+c3RfYWx0c2NvcmUgPSBTQ09SRV9CSUc7CiAJc3RwLT5zdF9zY29yZSA9IFJFU0NPUkUoc3RwLT5zdF9zY29yZSwgc3RwLT5zdF9hbHRzY29yZSk7CkBAIC0xMjgzNiw4ICsxMjgzOSw2IEBACiB9CiAKICNpZiBkZWZpbmVkKEZFQVRfSU5TX0VYUEFORCkgfHwgZGVmaW5lZChQUk9UTykKLXN0YXRpYyBpbnQgc3BlbGxfZXhwYW5kX25lZWRfY2FwOwotCiAvKgogICogRmluZCBzdGFydCBvZiB0aGUgd29yZCBpbiBmcm9udCBvZiB0aGUgY3Vyc29yLiAgV2UgZG9uJ3QgY2hlY2sgaWYgaXQgaXMKICAqIGJhZGx5IHNwZWxsZWQsIHdpdGggY29tcGxldGlvbiB3ZSBjYW4gb25seSBjaGFuZ2UgdGhlIHdvcmQgaW4gZnJvbnQgb2YgdGhlCkBAIC0xMjg3NSwxNCArMTI4NzYsMjMgQEAKIAljb2wgPSAwOwogICAgIH0KIAotICAgIC8qIE5lZWQgdG8gY2hlY2sgZm9yICdzcGVsbGNhcGNoZWNrJyBub3csIHRoZSB3b3JkIGlzIHJlbW92ZWQgYmVmb3JlCi0gICAgICogZXhwYW5kX3NwZWxsaW5nKCkgaXMgY2FsbGVkLiAgVGhlcmVmb3JlIHRoZSB1Z2x5IGdsb2JhbCB2YXJpYWJsZS4gKi8KLSAgICBzcGVsbF9leHBhbmRfbmVlZF9jYXAgPSBjaGVja19uZWVkX2NhcChjdXJ3aW4tPndfY3Vyc29yLmxudW0sIGNvbCk7Ci0KICAgICByZXR1cm4gY29sOwogfQogCiAvKgorICogTmVlZCB0byBjaGVjayBmb3IgJ3NwZWxsY2FwY2hlY2snIG5vdywgdGhlIHdvcmQgaXMgcmVtb3ZlZCBiZWZvcmUKKyAqIGV4cGFuZF9zcGVsbGluZygpIGlzIGNhbGxlZC4gIFRoZXJlZm9yZSB0aGUgdWdseSBnbG9iYWwgdmFyaWFibGUuCisgKi8KK3N0YXRpYyBpbnQgc3BlbGxfZXhwYW5kX25lZWRfY2FwOworCisgICAgdm9pZAorc3BlbGxfZXhwYW5kX2NoZWNrX2NhcChjb2wpCisgICAgY29sbnJfVCBjb2w7Cit7CisgICAgc3BlbGxfZXhwYW5kX25lZWRfY2FwID0gY2hlY2tfbmVlZF9jYXAoY3Vyd2luLT53X2N1cnNvci5sbnVtLCBjb2wpOworfQorCisvKgogICogR2V0IGxpc3Qgb2Ygc3BlbGxpbmcgc3VnZ2VzdGlvbnMuCiAgKiBVc2VkIGZvciBJbnNlcnQgbW9kZSBjb21wbGV0aW9uIENUUkwtWCA/LgogICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIG1hdGNoZXMuICBUaGUgbWF0Y2hlcyBhcmUgaW4gIm1hdGNocFtdIiwgYXJyYXkgb2YK