ZGlmZiAtLWdpdCBhL3NlY3VyZS9tYXRlcmlhbGRiLmMgYi9zZWN1cmUvbWF0ZXJpYWxkYi5jCmluZGV4IDEyZGNlMDYuLmM2YWZhZmQgMTAwNjQ0Ci0tLSBhL3NlY3VyZS9tYXRlcmlhbGRiLmMKKysrIGIvc2VjdXJlL21hdGVyaWFsZGIuYwpAQCAtMzcwLDcgKzM3MCw3IEBACiAgIG1hdHMgPSBBbGxNYXRlcmlhbHMoKTsKICAgdHh0ICs9IHNwcmludGYoIiVAcyIsIG1hcChncnBzLCAjJ2dlbl9tYXRlcmlhbF9oX21hdGVyaWFsc19ncnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1hdHMpKTsKLSAgLy8g3GJyaWdnZWJsaWVuZSBNYXRlcmlhbGllbiBhdXNnZWJlbgorICAvLyBVZWJyaWdnZWJsaWVuZSBNYXRlcmlhbGllbiBhdXNnZWJlbgogICB0eHQgKz0gIi8vIHNvbnN0aWdlIE1hdGVyaWFsaWVuOlxuIjsKICAgdHh0ICs9IHNwcmludGYoIiVAcyIsIG1hcChtYXRzLCAjJ2dlbl9tYXRlcmlhbF9oX21hdGVyaWFsKSk7CiAgIHJldHVybiB0eHQ7CkBAIC00MjYsNyArNDI2LDcgQEAKICAgbWF0cyA9IEFsbE1hdGVyaWFscygpOwogICB0eHQgPSBzcHJpbnRmKCIlQHMiLCBtYXAoZ3JwcywgIydnZW5fbWF0ZXJpYWxfbGlzdF9tYXRlcmlhbHNfZ3JwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1hdHMpKTsKLSAgLy8g3GJyaWdnZWJsaWVuZSBNYXRlcmlhbGllbiBhdXNnZWJlbgorICAvLyBVZWJyaWdnZWJsaWVuZSBNYXRlcmlhbGllbiBhdXNnZWJlbgogICB0eHQgKz0gInNvbnN0aWdlIE1hdGVyaWFsaWVuOlxuIjsKICAgdHh0ICs9IHNwcmludGYoIiVAcyIsIG1hcChtYXRzLCAjJ2dlbl9tYXRlcmlhbF9saXN0X21hdGVyaWFsKSk7CiAgIHdyaXRlX2ZpbGUoZm4sIHR4dCkgfHwKZGlmZiAtLWdpdCBhL3N0ZC9saXZpbmcvbGlmZS5jIGIvc3RkL2xpdmluZy9saWZlLmMKaW5kZXggNGU4NDkwYS4uMmQ4NmJiNSAxMDA2NDQKLS0tIGEvc3RkL2xpdmluZy9saWZlLmMKKysrIGIvc3RkL2xpdmluZy9saWZlLmMKQEAgLTEyODgsNyArMTI4OCw3IEBACiAgIGlmIChRdWVyeVByb3AoUF9HSE9TVCkpCiAgICAgcmV0dXJuIFF1ZXJ5KFBfQUxDT0hPTCwgRl9WQUxVRSk7CiAKLSAgLy8gbnVyIMRuZGVydW5nZW4gdW5kIFdlcnRlID49MCB3ZXJkZW4gZ2VzZXR6dC4uLgorICAvLyBudXIgQWVuZGVydW5nZW4gdW5kIFdlcnRlID49MCB3ZXJkZW4gZ2VzZXR6dC4uLgogICBuID0gbiA8IDAgPyAwIDogbjsKICAgaW50IG9sZCA9IFF1ZXJ5KFBfQUxDT0hPTCwgRl9WQUxVRSk7CiAgIGlmICggb2xkID09IG4pCkBAIC0xMzI0LDcgKzEzMjQsNyBAQAogICBpZiAoUXVlcnlQcm9wKFBfR0hPU1QpKQogICAgIHJldHVybiBRdWVyeShQX0RSSU5LLCBGX1ZBTFVFKTsKIAotICAvLyBudXIgxG5kZXJ1bmdlbiB1bmQgV2VydGUgPj0wIHdlcmRlbiBnZXNldHp0Li4uCisgIC8vIG51ciBBZW5kZXJ1bmdlbiB1bmQgV2VydGUgPj0wIHdlcmRlbiBnZXNldHp0Li4uCiAgIG4gPSBuIDwgMCA/IDAgOiBuOwogICBpbnQgb2xkID0gUXVlcnkoUF9EUklOSywgRl9WQUxVRSk7CiAgIGlmICggb2xkID09IG4pCkBAIC0xMzYwLDcgKzEzNjAsNyBAQAogICBpZiAoUXVlcnlQcm9wKFBfR0hPU1QpKQogICAgIHJldHVybiBRdWVyeShQX0ZPT0QsIEZfVkFMVUUpOwogCi0gIC8vIG51ciDEbmRlcnVuZ2VuIHVuZCBXZXJ0ZSA+PTAgd2VyZGVuIGdlc2V0enQuLi4KKyAgLy8gbnVyIEFlbmRlcnVuZ2VuIHVuZCBXZXJ0ZSA+PTAgd2VyZGVuIGdlc2V0enQuLi4KICAgbiA9IG4gPCAwID8gMCA6IG47CiAgIGludCBvbGQgPSBRdWVyeShQX0ZPT0QsIEZfVkFMVUUpOwogICBpZiAoIG9sZCA9PSBuKQpkaWZmIC0tZ2l0IGEvc3RkL3BsYXllci9jb21iYXQuYyBiL3N0ZC9wbGF5ZXIvY29tYmF0LmMKaW5kZXggYWJiNWExYi4uNjRkOTQ1YyAxMDA2NDQKLS0tIGEvc3RkL3BsYXllci9jb21iYXQuYworKysgYi9zdGQvcGxheWVyL2NvbWJhdC5jCkBAIC0yMDQsNyArMjA0LDcgQEAKICAgcmV0dXJuIHJlczsKIH0KIAotLy8gU3BpZWxlciBrb2VubmVuIGFscyBHZWlzdCBuaWNodCBr5G1wZmVuCisvLyBTcGllbGVyIGtvZW5uZW4gYWxzIEdlaXN0IG5pY2h0IGthZW1wZmVuCiAvLyBUT0RPOiBwcnVlZmVuLCBvYiBkYXMgU2V0emVuIHVuZCBMb2VzY2hlbiBkZXIgUHJvcCBpbiBzZXRfZ2hvc3QoKSBuaWNodAogLy8gYXVjaCBhdXNyZWljaGVuIHd1ZXJkZS4gSW4gZGVtIEZhbGwgbXVlc3N0ZSBtYW4gYWJlciBQX05PX0FUVEFDSyBhdWNoCiAvLyBzcGVpY2hlcm4sIGRhIFBfR0hPU1QgZ2VzcGVpY2hlcnQgd2lyZC4uLgpkaWZmIC0tZ2l0IGEvc3RkL3BsYXllci9za2lsbHMuYyBiL3N0ZC9wbGF5ZXIvc2tpbGxzLmMKaW5kZXggOGY2YjhmMC4uMDM3NTVkYSAxMDA2NDQKLS0tIGEvc3RkL3BsYXllci9za2lsbHMuYworKysgYi9zdGQvcGxheWVyL3NraWxscy5jCkBAIC0yMzYsOCArMjM2LDggQEAKICAgICBsb2dfZmlsZSgiV0VBUE9OX1NLSUxMUyIsIHNwcmludGYoIiVzOiBadSBob2hlciBTY2hhZGVuIHZvbjogIgogICAgICsiVE86ICVPLCBUSTogJU8sIFBPOiAlTywgdmFsOiAlZCwgQV9ERVg6ICVkLCBBX1NUUjogJWQsICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyJQX1dFQVBPTjogJU8sIFBfV0M6ICVkXG4iLCBkdGltZSh0aW1lKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzX29iamVjdCgpLCB0aGlzX2ludGVyYWN0aXZlKCksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c19vYmplY3QoKSwgdmFsLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc19vYmplY3QoKSwgdGhpc19pbnRlcmFjdGl2ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c19vYmplY3QoKSwgdmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVyeUF0dHJpYnV0ZShBX0RFWCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5QXR0cmlidXRlKEFfU1RSKSwgc2luZm9bUF9XRUFQT05dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5mb1tQX1dFQVBPTl0tPlF1ZXJ5UHJvcChQX1dDKSkpOwpAQCAtMjQ1LDcgKzI0NSw3IEBACiAgIH0KIAogICAvKgotICAgIERlciB6dXPkdHpsaWNoZSBTY2hhZGVuIGRlciBhbGxnZW1laW5lbiBXYWZmZW5za2lsbHMgYmVyZWNobmV0CisgICAgRGVyIHp1c2FldHpsaWNoZSBTY2hhZGVuIGRlciBhbGxnZW1laW5lbiBXYWZmZW5za2lsbHMgYmVyZWNobmV0CiAgICAgc2ljaCB3aWUgZm9sZ3Q6IAogCiAgICAgc2luZm9bU0lfU0tJTExBQklMSVRZKSogKFBfV0MgKiAoIFggKSAvIDgwMCkgLyBNQVhfQUJJTElUWQpkaWZmIC0tZ2l0IGEvc3RkL3NoZWxscy9tYWdpZXIvdXBkLmMgYi9zdGQvc2hlbGxzL21hZ2llci91cGQuYwppbmRleCBmMDllYTlhLi45YzlhZjVmIDEwMDY0NAotLS0gYS9zdGQvc2hlbGxzL21hZ2llci91cGQuYworKysgYi9zdGQvc2hlbGxzL21hZ2llci91cGQuYwpAQCAtMTE2LDggKzExNiw4IEBACiAgIHsKICAgICAvLyBTY2hyZWlicmVjaHRlIG51ciBwcnVlZmVuLCB3ZW5uIGVjaHQgYWt0dWFsaXNpZXJ0IHdlcmRlbiBzb2xsLgogICAgIGlmKCFkdW1teSAmJiAhTUFZX1dSSVRFKGZpbGUpKQotICAgICAgcmV0dXJuIChwcmludGYoInVwZDqgJXM6IEtlaW5lIFNjaHJlaWJyZWNodGUhXG4iLGZpbGUpLCAtMSk7Ci0gICAgaWYoIU1BWV9SRUFEKGZpbGUpKSAKKyAgICAgIHJldHVybiAocHJpbnRmKCJ1cGQ6ICVzOiBLZWluZSBTY2hyZWlicmVjaHRlIVxuIixmaWxlKSwgLTEpOworICAgIGlmKCFNQVlfUkVBRChmaWxlKSkKICAgICAgIHJldHVybiAocHJpbnRmKCJ1cGQ6ICVzOiBLZWluZSBMZXNlcmVjaHRlIVxuIiwgZmlsZSksIC0xKTsKICAgfQogICBpZiAoZHVtbXkpIHJldHVybiAxOwpkaWZmIC0tZ2l0IGEvc3RkL3RoaW5nL2NvbW1hbmRzLmMgYi9zdGQvdGhpbmcvY29tbWFuZHMuYwppbmRleCA4ZjkzNDQ5Li43MmY1MGNkIDEwMDY0NAotLS0gYS9zdGQvdGhpbmcvY29tbWFuZHMuYworKysgYi9zdGQvdGhpbmcvY29tbWFuZHMuYwpAQCAtMzM2LDE5ICszMzYsMTkgQEAKICAgICB3aGlsZShqLS0pIHsKICAgICAgaW50IGs7CiAgICAgIC8vIERCRyhydWxlW2pdKTsKLSAgICAJLy8gUmVnZWxuIG5pY2h0IGzDtnNjaGVuIHVuZCBSZWdlbD8KKyAgICAJLy8gUmVnZWxuIG5pY2h0IGxvZXNjaGVuIHVuZCBSZWdlbD8KICAgICAgaWYoIShkZWxfbm9ydWxlICYmIHBvaW50ZXJwKHJ1bGVbal0pKSAmJgotICAgICAgICAvLyBudXIgYmVzdGltbXRlIElEIGzDtnNjaGVuIHVuZCBJRCBwYXNzdCBuaWNodD8KKyAgICAgICAgLy8gbnVyIGJlc3RpbW10ZSBJRCBsb2VzY2hlbiB1bmQgSUQgcGFzc3QgbmljaHQ/CiAgICAgICAgICEob25seWlkICYmICghcG9pbnRlcnAoaWRzKSB8fCBzaXplb2YoaWRzKTw9aiB8fCBpZHNbal0hPW9ubHlpZCkpICYmCi0gICAgICAgIC8vIEzDtnNjaHJlZ2VsIGV4aXN0aWVydCB1bmQgcGFzc3QgbmljaHQgYXVmIFJlZ2VsPworICAgICAgICAvLyBMb2VzY2hyZWdlbCBleGlzdGllcnQgdW5kIHBhc3N0IG5pY2h0IGF1ZiBSZWdlbD8KICAgICAgICAgIShkZWxydWxlICYmIChrPXNpemVvZihydWxlW2pdKSkhPXNpemVvZihkZWxydWxlKSkpIHsKLSAgICAgIC8vIHBhcnRpZWxsZXMgVGVzdGVuIGVpbmVyIEzDtnNjaHJlZ2VsIC4uLgorICAgICAgLy8gcGFydGllbGxlcyBUZXN0ZW4gZWluZXIgTG9lc2NocmVnZWwgLi4uCiAgICAgICBpZihkZWxydWxlKSB7CiAgICAgICAgd2hpbGUoay0tKQogICAgICAgICBpZighc2l6ZW9mKHJ1bGVbal1ba10mZGVscnVsZVtrXSkpIGJyZWFrOwogICAgICAgIGlmKGs+PTApIGNvbnRpbnVlOwogICAgICAgfQotICAgICAgLy8gYWxsZXMga29ycmVrdDogTMO2c2NoZW4hCisgICAgICAvLyBhbGxlcyBrb3JyZWt0OiBMb2VzY2hlbiEKICAgICAgIC8vIChBcnJheWJlcmVpY2ggZHVyY2ggbGVlcmVzIEFycmF5IGxvZXNjaGVuKQogICAgICAgZmxhZ1tqLi5qXSAgICA9IGFsbG9jYXRlKDApOwogICAgICAgZnVuW2ouLmpdICAgICA9IGFsbG9jYXRlKDApOwpkaWZmIC0tZ2l0IGEvc3lzL2xpdmluZy9saWZlLmggYi9zeXMvbGl2aW5nL2xpZmUuaAppbmRleCA4MWJhM2RkLi4zZGMwMzExIDEwMDY0NAotLS0gYS9zeXMvbGl2aW5nL2xpZmUuaAorKysgYi9zeXMvbGl2aW5nL2xpZmUuaApAQCAtNTMsNyArNTMsNyBAQAogCiAvLyBIX0VGRkVDVFMgLSBadSBhZW5kZXJuZGUgUHJvcGVydGllcyBmdWVyIGRlbiBFZmZla3QKICNkZWZpbmUgSF9FRkZFQ1RTICJlZmZlY3RzIgotLy8gSF9DT05ESVRJT05TIC0gWnUgcHJ1ZWZlbmRlIFByb3BlcnRpZXMgZvxyIGRlbiBFZmZla3QgKFNhZXR0aWd1bmcsIC4uLikKKy8vIEhfQ09ORElUSU9OUyAtIFp1IHBydWVmZW5kZSBQcm9wZXJ0aWVzIGZ1ZXIgZGVuIEVmZmVrdCAoU2FldHRpZ3VuZywgLi4uKQogI2RlZmluZSBIX0NPTkRJVElPTlMgImNvbmRpdGlvbnMiCiAvLyBIX0RJU1RSSUJVVElPTiAtIFdpZSBkaWUgQWVuZGVydW5nIGFuIEhQL1NQIGF1c3RlaWxlbiwgc29mb3J0LCB6ZWl0bGljaAogLy8gdmVyc2V0enQsIC4uLgpkaWZmIC0tZ2l0IGEvc3lzL21hZ2llci5oIGIvc3lzL21hZ2llci5oCmluZGV4IDMzY2Q5OGYuLmY2ZWIzYTggMTAwNjQ0Ci0tLSBhL3N5cy9tYWdpZXIuaAorKysgYi9zeXMvbWFnaWVyLmgKQEAgLTEwMiw3ICsxMDIsNyBAQAogI2RlZmluZSBMU19MICAgICAgICAgICAgMiAgICAgICAgICAgIC8vIExhbmdlIEF1c2dhYmUKICNkZWZpbmUgTFNfUiAgICAgICAgICAgIDQgICAgICAgICAgICAvLyBSdWVja3dhZXJ0cyBhdXNnZWJlbgogI2RlZmluZSBMU19UICAgICAgICAgICAgOCAgICAgICAgICAgIC8vIE5hY2ggWmVpdCBvcmRuZW4KLSNkZWZpbmUgTFNfUyAgICAgICAgICAgIDE2ICAgICAgICAgICAvLyBOYWNoIEdy9t9lIG9yZG5lbgorI2RlZmluZSBMU19TICAgICAgICAgICAgMTYgICAgICAgICAgIC8vIE5hY2ggR3JvZXNzZSBvcmRuZW4KICNkZWZpbmUgTFNfVSAgICAgICAgICAgIDMyICAgICAgICAgICAvLyBVSUQgYW56ZWlnZW4KICNkZWZpbmUgTFNfRyAgICAgICAgICAgIDY0ICAgICAgICAgICAvLyBHcnVwcGUgYW56ZWlnZW4KIApkaWZmIC0tZ2l0IGEvc3lzL25vdGlmeV9mYWlsLmggYi9zeXMvbm90aWZ5X2ZhaWwuaAppbmRleCA5N2QxNzg2Li42ZjBlYWY1IDEwMDY0NAotLS0gYS9zeXMvbm90aWZ5X2ZhaWwuaAorKysgYi9zeXMvbm90aWZ5X2ZhaWwuaApAQCAtOCw3ICs4LDcgQEAKICNkZWZpbmUgX05PVElGWV9GQUlMX0hfCiAKIC8vIFByaW9yaXRhZXRlbiAvICdOaWNlIGxldmVscycgdm9uIG5vdGlmeV9mYWlsKClzOgotLy8gV2llICduaWNlJyBiaW4gaWNoPyBKZSBncm9lc3NlcmUgWmFobC9Qcmlvcml05HQsIGRlc3RvIHdlbmlnIGxpZWIuIDstKQorLy8gV2llICduaWNlJyBiaW4gaWNoPyBKZSBncm9lc3NlcmUgWmFobC9Qcmlvcml0YWV0LCBkZXN0byB3ZW5pZyBsaWViLiA7LSkKICNkZWZpbmUgTkZfTkxfTk9ORSAgIC0xICAgLy9tYXggJ25pY2VuZXNzJywgd2lyZCB2b24gYWxsZW0gdWViZXJzY2hyaWViZW4KICNkZWZpbmUgTkZfTkxfT1dOICAgIDEwMCAgLy9laWdlbmVzIE9iamVrdCAoc291bCB2ZXJiZW4pIHVlYmVyc2NocmVpYmVuIGthdW0gd2FzCiAjZGVmaW5lIE5GX05MX1RISU5HICAxMDAwMDAKZGlmZiAtLWdpdCBhL3N5cy9wbGF5ZXIvZmFvLmggYi9zeXMvcGxheWVyL2Zhby5oCmluZGV4IDNjMDE2YTQuLmM3NzNjZjEgMTAwNjQ0Ci0tLSBhL3N5cy9wbGF5ZXIvZmFvLmgKKysrIGIvc3lzL3BsYXllci9mYW8uaApAQCAtNiw5ICs2LDkgQEAKIAogI2RlZmluZSBGQU9fTUFTVEVSICAgICAgIi9kL2ViZW5lL21pcmlsL2ZyYXRlcm5pdGFzL3NlY3VyZS9mYW9tYXN0ZXIiIC8vIGRpZSB6ZW50cmFsZSBzdGVsbGUgZGVzIGZhbwogCi0vLyBkaWUgTGlzdGUgZGVyIHZlcmb8Z2JhcmVuIFBvcnRhbGUgZnVlciBkYXMgZXJzdGUgcG9ydGFsZ2VzY2hlbmsKKy8vIGRpZSBMaXN0ZSBkZXIgdmVyZnVlZ2JhcmVuIFBvcnRhbGUgZnVlciBkYXMgZXJzdGUgcG9ydGFsZ2VzY2hlbmsKICNkZWZpbmUgRkFPX1BPUlRBTFMxX0xJU1QgKHsyLDMsNCw1LDYsNyw4LDksMTAsMTMsMTQsMTUsMTYsMTksMjAsMjEsMjUsMjksMzN9KQotLy8gZGllIExpc3RlIGRlciB2ZXJm/GdiYXJlbiBQb3J0YWxlIGZ1ZXIgZGFzIHp3ZWl0ZSBwb3J0YWxnZXNjaGVuaworLy8gZGllIExpc3RlIGRlciB2ZXJmdWVnYmFyZW4gUG9ydGFsZSBmdWVyIGRhcyB6d2VpdGUgcG9ydGFsZ2VzY2hlbmsKICNkZWZpbmUgRkFPX1BPUlRBTFMyX0xJU1QgRkFPX1BPUlRBTFMxX0xJU1QrKHsxLDExLDEyLDE3LDE4LDI0LDI2LDI3LDI4LDMxLDM0LDM2LDM3LDM4fSkKIC8vIGRpZSBhbnphaGwgZGVyIHp1IHdhZWhsZW5kZW4gcG9ydGFsZSBmdWVyIGRhcyBlcnN0ZSBwb3J0YWxnZXNjaGVuawogI2RlZmluZSBGQU9fUE9SVEFMUzFfTlVNICA1Cg==