ZGlmZiAtLWdpdCBhLy5zaWduX3NhbHQgYi8uc2lnbl9zYWx0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3ZTI0YjAKLS0tIC9kZXYvbnVsbAorKysgYi8uc2lnbl9zYWx0CkBAIC0wLDAgKzEgQEAKK256b3FQWU1JdTkxVlZpQS9tRUlHNUZ0SlhpOD0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCmluZGV4IGVhNDMxMGYuLmEyYjk2NTMgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlCisrKyBiL01ha2VmaWxlCkBAIC0xLDYgKzEsMTEgQEAKLVRBUkdFVD1nNDAxMzB4CitUQVJHRVQ9ZzQwMTIwMQogVVY0PS9DL0tlaWwvVVY0L1V2NC5leGUKIAorU0FMVF9LRVk9LnNpZ25fc2FsdAorCitTSUdOXzIwMT0uL2c0MDEzMDIvb3V0Rmxvdy9HNDAxMzAyX2Zsb3cuYmluCitTSUdOMjAxX0ZJTEU9Li9nNDAxMzAyL291dEZsb3cvRzQwMTMwMi5zaWduCisKIC5QSE9OWTogY2xlYW4gYWxsCiAKIHRpbWVyOiBjbGVhbgpAQCAtMTEsNiArMTYsMTAgQEAKIAlAZWNobyAiYnVpbGQgc2h1IHZlcnNpb24gLi4uIgogCSQoVVY0KSAtY3IgLWowIC1iIGc0MDEzMDIvcHJvamVjdC9nNDAxMzAyLnV2cHJvaiAtdCJmbG93IiAtbyJvdXRGbG93L09VVFBVVEZJTEUuVFhUIgogCQorc2lnbjoKKwlAZWNobyAiY2FsYyB1cGdyYWRlIGZpbGUgc2lnbiAuLi4iCisJY2F0ICQoU0lHTl8yMDEpICQoU0FMVF9LRVkpIHwgc2hhMjU2c3VtIC0gfCBjdXQgLWQnICcgLWYgMSB8IHRyIC1kICdcbicgPiAkKFNJR04yMDFfRklMRSkKKwkKIGFsbDogdGltZXIgZmxvdwogCiBjbGVhbjoKZGlmZiAtLWdpdCBhL3N1cHdpc2RvbS9zcF9jYXJkLmMgYi9zdXB3aXNkb20vc3BfY2FyZC5jCmluZGV4IDRmY2JkNjUuLmUyM2NkNjEgMTAwNjQ0Ci0tLSBhL3N1cHdpc2RvbS9zcF9jYXJkLmMKKysrIGIvc3Vwd2lzZG9tL3NwX2NhcmQuYwpAQCAtMTIyLDkgKzEyMiw4IEBACiAgIHsKICAgICByZXR1cm4gcmV0OwogICB9Ci0gIG9mZnNldCA9IDA7Ci0gIE1FTUNMRUFSKGNhcmQtPmNpdGl6ZW5fY2FyZG5vLCBzaXplb2YoY2FyZC0+Y2l0aXplbl9jYXJkbm8pKTsKLSAgb2Zmc2V0ICs9IDMxOworICBvZmZzZXQgPSAzMTsKKyAgb2Zmc2V0ICs9IDg7CiAgIE1FTUNQWShjYXJkLT5jaXRpemVuX2NhcmRubywgYnVmZitvZmZzZXQsIHNpemVvZihjYXJkLT5jaXRpemVuX2NhcmRubykpOwogICBvZmZzZXQgKz0gMTI7CiAgIG9mZnNldCArPSAxODsKZGlmZiAtLWdpdCBhL3N1cHdpc2RvbS9zcF9jb21tdW5pY2F0ZS5jIGIvc3Vwd2lzZG9tL3NwX2NvbW11bmljYXRlLmMKaW5kZXggNzliNTYwMS4uM2VhMzNjZiAxMDA2NDQKLS0tIGEvc3Vwd2lzZG9tL3NwX2NvbW11bmljYXRlLmMKKysrIGIvc3Vwd2lzZG9tL3NwX2NvbW11bmljYXRlLmMKQEAgLTM2LDYgKzM2LDggQEAKICAgdWludDggdGVtcFtzaXplb2Yoc3BfcHJvdG9jb2xfcmVzcG9uc2VfdCldOwogICB0aWNrID0gc3BfZ2V0X3RpY2tlcigpOwogICBNRU1DTEVBUih0ZW1wLHNpemVvZiB0ZW1wKTsKKyAgbWVtc2V0KHBvcy0+ZXJybXNnLDAsMzIpOworICBwb3MtPmVycm1zZ2xlbiA9IDA7CiAgIHdoaWxlKDEpCiAgIHsKIApAQCAtNTcsNiArNTksMTEgQEAKICAgICAgICAgICBpZihNRU1DTVAoKHVpbnQ4KilyZXNwICtkYXRhbGVuLGNyYywyKSA9PSAwKQogICAgICAgICAgIHsKICAgICAgICAgICAgIE1FTUNMRUFSKCYocG9zLT5sYXN0X2NvbW1fc3RhdHVzKSwgc2l6ZW9mKHNwX2NvbW1fc3RhdHVzX3QpKTsKKyAgICAgICAgICAgIGlmKHJlc3AtPnJldGNvZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIE1FTUNQWShwb3MtPmVycm1zZyxyZXNwLT5kYXRhLDMyKTsKKyAgICAgICAgICAgICAgcG9zLT5lcnJtc2dsZW4gPSByZXNwLT5kYXRhbGVuOworICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHJlc3AtPnJldGNvZGU7CiAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xMzcsNyArMTQ0LDcgQEAKICAgICB9CiAgICAgZWxzZSBpZihJU19LRVkoUEtfSU5UX0FNT1VOVF9MSU1JVCxmaWVsZC5rZXkpKQogICAgIHsKLSAgICAgIGNhcmQtPmFtb3VudGxpbWl0ID0gKHVpbnQzMilmaWVsZC52YWwuaW50dmFsOworICAgICAgY2FyZC0+YW1vdW50bGltaXQgPSAodWludDMyKWZpZWxkLnZhbC5pbnR2YWwqMTA7CiAgICAgfQogICB9CiAgIC8vZGlzcF9oaW50X2luZm8ocG9zLCLJ7bfdyM/WpLPJuaYiLERFTEFZX1RJTUUxcyk7CkBAIC0xNjAsNyArMTY3LDcgQEAKICAgY3dfcGFja19tYXBfc2l6ZSgmcGFjayw0KTsKIAogICBzcF9wYWNrX3B1dF9iaW4oJnBhY2ssIFBLX0JJTl9DQVJEUEhZSUQsIGNhcmQtPmNhcmRwaHlpZCwgNCk7Ci0gIHNwX3BhY2tfcHV0X2JpbigmcGFjaywgUEtfQklOX0NJVElaRU5fQ0FSRE5PLCBjYXJkLT5jaXRpemVuX2NhcmRubys4LCA0KTsKKyAgc3BfcGFja19wdXRfYmluKCZwYWNrLCBQS19CSU5fQ0lUSVpFTl9DQVJETk8sIGNhcmQtPmNpdGl6ZW5fY2FyZG5vLCA0KTsKICAgc3BfcGFja19wdXRfYmluKCZwYWNrLCBQS19CSU5fREVWUEhZSUQsIHBvcy0+ZGV2cGh5aWQsIDQpOwogICBzcF9wYWNrX3B1dF9iaW4oJnBhY2ssIFBLX0JJTl9ERVZUSU1FLCBjdGltZSwgNik7CiAKQEAgLTM1Myw3ICszNjAsNyBAQAogICAgIH0KICAgICBlbHNlIGlmKElTX0tFWShQS19JTlRfUEFZQU1ULCBmaWVsZC5rZXkpKQogICAgIHsKLSAgICAgIGNhcmQtPnFyY29kZS5wYWlkQW1vdW50ID0gKHVpbnQ4KWZpZWxkLnZhbC5pbnR2YWw7CisgICAgICBjYXJkLT5xcmNvZGUucGFpZEFtb3VudCA9ICh1aW50MzIpZmllbGQudmFsLmludHZhbDsKICAgICB9CiAgICAgZWxzZSBpZihJU19LRVkoUEtfSU5UX0ZFRUFNT1VOVCxmaWVsZC5rZXkpKQogICAgIHsKQEAgLTM3Nyw3ICszODQsNyBAQAogICAgIH0KICAgICBlbHNlIGlmKElTX0tFWShQS19JTlRfQU1PVU5UX0xJTUlULGZpZWxkLmtleSkpCiAgICAgewotICAgICAgY2FyZC0+YW1vdW50bGltaXQgPSAodWludDE2KWZpZWxkLnZhbC5pbnR2YWw7CisgICAgICBjYXJkLT5hbW91bnRsaW1pdCA9ICh1aW50MzIpZmllbGQudmFsLmludHZhbCoxMDsKICAgICB9CiAgIH0KICAgcmV0dXJuIHJlc3AucmV0Y29kZTsKQEAgLTQxMCwxMCArNDE3LDEyIEBACiAgIGN3X3BhY2tfY29udGV4dCBwYWNrOwogICBzcF9wcm90b2NvbF9yZXF1ZXN0X3QgcmVxOwogCisgIHBvcy0+aGVhcnRiZWF0LmhlYXJ0X3N0YXR1cyA9IEhFQVJUX1NFTkQ7CisKICAgdHJhbnNkdGxfYWNjb3VudF9jb2JpbExubyA9IHRyYW5zZHRsLT5jb2JpbGxubzsKICAgc3BfcHJvdG9jb2xfcmVxX2luaXQoJnJlcSwgU1BfQ01EX1RSQU5TRFRMX0FDQ09VTlQpOwogICBzcF9wYWNrX2luaXQoJnBhY2sscmVxLmRhdGEsc2l6ZW9mKHJlcS5kYXRhKSk7Ci0gIGN3X3BhY2tfbWFwX3NpemUoJnBhY2ssMTApOworICBjd19wYWNrX21hcF9zaXplKCZwYWNrLDExKTsKIAogICBzcF9wYWNrX3B1dF9iaW4oJnBhY2ssIFBLX0JJTl9ERVZQSFlJRCwgdHJhbnNkdGwtPmRldnBoeWlkLDQpOwogICBzcF9wYWNrX3B1dF9iaW4oJnBhY2ssIFBLX0JJTl9UUkFOU0RBVEUsIHRyYW5zZHRsLT50cmFuc2RhdGUsMyk7CkBAIC00MjEsNiArNDMwLDcgQEAKICAgc3BfcGFja19wdXRfaW50KCZwYWNrLCBQS19JTlRfQ09CSUxMTk8sIHRyYW5zZHRsLT5jb2JpbGxubyk7CiAgIHNwX3BhY2tfcHV0X2JpbigmcGFjaywgUEtfQklOX0NBUkRQSFlJRCwgdHJhbnNkdGwtPmNhcmRwaHlpZCwKICAgICAgICAgICAgICAgICAgIHNpemVvZih0cmFuc2R0bC0+Y2FyZHBoeWlkKSk7CisgIHNwX3BhY2tfcHV0X2JpbigmcGFjaywgUEtfQklOX0NJVElaRU5fQ0FSRE5PLCB0cmFuc2R0bC0+Y2FyZG5vLCA0KTsKICAgc3BfcGFja19wdXRfaW50KCZwYWNrLCBQS19JTlRfVFJBTlNXQVksIHRyYW5zZHRsLT50cmFuc3dheSk7CiAgIHNwX3BhY2tfcHV0X2ludCgmcGFjaywgUEtfSU5UX0FNT1VOVCwgdHJhbnNkdGwtPmFtb3VudCk7CiAgIHNwX3BhY2tfcHV0X2ludCgmcGFjaywgUEtfSU5UX1BBWUFNVCwgdHJhbnNkdGwtPnBhaWRBbW91bnQpOwpAQCAtNDQwLDI5ICs0NTAsMzAgQEAKICAgY3dfdW5wYWNrX2NvbnRleHQgdW5wYWNrOwogICB1bnBhY2tfZmllbGRfdCBmaWVsZDsKIAotICBpZighcmVzcC0+cmV0Y29kZSkKKyAgaWYocmVzcC0+cmV0Y29kZSkKICAgewotICAgIHNwX3VucGFja19pbml0KCZ1bnBhY2ssIHJlc3AtPmRhdGEsIHJlc3AtPmRhdGFsZW4pOwotICAgIHNpemUgPSBzcF91bnBhY2tfbWFwX3NpemUoJnVucGFjayk7Ci0gICAgd2hpbGUoc2l6ZS0tID4gMCkKKyAgICByZXR1cm4gcmVzcC0+cmV0Y29kZTsKKyAgfQorICBwb3MtPmhlYXJ0YmVhdC5oZWFydF9zdGF0dXMgPSBIRUFSVF9SRUNWOworICBzcF91bnBhY2tfaW5pdCgmdW5wYWNrLCByZXNwLT5kYXRhLCByZXNwLT5kYXRhbGVuKTsKKyAgc2l6ZSA9IHNwX3VucGFja19tYXBfc2l6ZSgmdW5wYWNrKTsKKyAgd2hpbGUoc2l6ZS0tID4gMCkKKyAgeworICAgIHNwX3VucGFja192YWx1ZSgmdW5wYWNrLCZmaWVsZCk7CisgICAgaWYoSVNfS0VZKFBLX0lOVF9DT0JJTExOTyxmaWVsZC5rZXkpKQogICAgIHsKLSAgICAgIHNwX3VucGFja192YWx1ZSgmdW5wYWNrLCZmaWVsZCk7Ci0gICAgICBpZihJU19LRVkoUEtfSU5UX0NPQklMTE5PLGZpZWxkLmtleSkpCisgICAgICBpZihmaWVsZC52YWwuaW50dmFsID09IHRyYW5zZHRsX2FjY291bnRfY29iaWxMbm8pCiAgICAgICB7Ci0gICAgICAgIGlmKGZpZWxkLnZhbC5pbnR2YWwgPT0gdHJhbnNkdGxfYWNjb3VudF9jb2JpbExubykKKyAgICAgICAgcG9zLT51bmNvbmZpcm1fdHJhbnNkdGwudHJhbnNhZGRyKz0gc2l6ZW9mKHNwX3RyYW5zZHRsX3QpOworICAgICAgICBpZihBRERSX1RSQU5TRFRMX0VORCA8PSBwb3MtPnVuY29uZmlybV90cmFuc2R0bC50cmFuc2FkZHIpCiAgICAgICAgIHsKLSAgICAgICAgICBwb3MtPnVuY29uZmlybV90cmFuc2R0bC50cmFuc2FkZHIrPSBzaXplb2Yoc3BfdHJhbnNkdGxfdCk7Ci0gICAgICAgICAgaWYoQUREUl9UUkFOU0RUTF9FTkQgPD0gcG9zLT51bmNvbmZpcm1fdHJhbnNkdGwudHJhbnNhZGRyKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHBvcy0+dW5jb25maXJtX3RyYW5zZHRsLnRyYW5zYWRkcj0gQUREUl9UUkFOU0RUTF9CRUdJTjsKLSAgICAgICAgICB9Ci0gICAgICAgICAgcmV0dXJuIHNwX3dyaXRlX3VuY29uZmlybV9yZWNvcmQocG9zKTsKKyAgICAgICAgICBwb3MtPnVuY29uZmlybV90cmFuc2R0bC50cmFuc2FkZHI9IEFERFJfVFJBTlNEVExfQkVHSU47CiAgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHNwX3dyaXRlX3VuY29uZmlybV9yZWNvcmQocG9zKTsKICAgICAgIH0KICAgICB9CiAgIH0KICAgcmV0dXJuIHJlc3AtPnJldGNvZGU7Ci0KIH0KIAogc3RhdGljIHVpbnQ4IHNwX2NvbmZpcm1faGVhcnRiZWF0KHNwX3Byb3RvY29sX3Jlc3BvbnNlX3QqIHJlc3AsIHNwX3Bvc190KiBwb3MpCmRpZmYgLS1naXQgYS9zdXB3aXNkb20vc3BfY29uZmlnLmggYi9zdXB3aXNkb20vc3BfY29uZmlnLmgKaW5kZXggM2RhZWQwOC4uNjAwNjVhZCAxMDA2NDQKLS0tIGEvc3Vwd2lzZG9tL3NwX2NvbmZpZy5oCisrKyBiL3N1cHdpc2RvbS9zcF9jb25maWcuaApAQCAtMTAzLDEzICsxMDMsMTQgQEAKICAgdWludDggdHJhbnN0aW1lWzNdOwogICB1aW50MzIgY29iaWxsbm87CQkvL7270te2qbWlseC6xQogICB1aW50OCBjYXJkcGh5aWRbNF07CS8vv6jO78DtaWQKKyAgdWludDggY2FyZG5vWzRdOyAvL8rQw/G/qLrFCiAgIHVpbnQ4IHRyYW5zd2F5OwkJLy+9u9LXt73KvaOsMC2z9cq8o6wxLcuiv6ijrDItyajC6wotICB1aW50OCBhbW91bnQ7CQkJLy/KtbzK1qe4tr3wtu4KLSAgdWludDggcGFpZEFtb3VudDsJCS8v0tHWp7i2vfC27qOstbHKx8/Iv9u30cSjyr3PwqOsvMfCvNLR1qe4trXEvfC27gotICB1aW50OCBmbG93c2Vuc29yczsJLy/KtbzKyrnTw7zGwb+jqLWlzrujurDZusHJ/aOpCisgIHVpbnQzMiBhbW91bnQ7CQkJLy/KtbzK1qe4tr3wtu4KKyAgdWludDMyIHBhaWRBbW91bnQ7CQkvL9LR1qe4tr3wtu6jrLWxysfPyL/bt9HEo8q9z8KjrLzHwrzS0danuLa1xL3wtu4KKyAgdWludDMyIGZsb3dzZW5zb3JzOwkvL8q1vMrKudPDvMbBv6OotaXOu6O6sNm6wcn9o6kKICAgdWludDggdHJhbnN0YXR1czsJCS8vwffLrte0zKyjrDAts/XKvKOsMS2zybmmo6wyLcqnsNwKLSAgdWludDggcmV2ZXJzZVs3XTsJCS8v1bzOu7f7Ci0gIHVpbnQ4IGNyY1syXTsgCQkvL2xlbj0zMgorICB1aW50OCB1bnVzZWRbMjZdOwkJLy/VvM67t/sKKyAgdWludDggY3JjWzJdOyAJCS8vbGVuPTY0CiB9IHNwX3RyYW5zZHRsX3Q7CiAKIHR5cGVkZWYgc3RydWN0CkBAIC0xNDQsMTIgKzE0NSwxMiBAQAogCiAgIHVpbnQ4IHN0YXJ0dGltZVs2XTsgIAkvL8uiv6jKsbzkCiAgIC8qz8i/27/uuvOz9suuKi8KLSAgdWludDE2IHByZXBhaWRfbnVtOwkvL7WltM6/ydPDvMbBvyi1pc67OjEwMG1sKQotICB1aW50MTYgcHJlcGFpZF9hbXQ7CS8vtaW0ztSkuLa98MeuCisgIHVpbnQzMiBwcmVwYWlkX251bTsJLy+1pbTOv8nTw7zGwb8otaXOuzoxMDBtbCkKKyAgdWludDMyIHByZXBhaWRfYW10OwkvL7WltM7UpLi2vfDHrii1pc67OsDlKQogCi0gIHVpbnQxNiBwYWlkX251bTsgCQkvL8DbvMa/ydPDvMbBvyi1pc67OjEwMG1sKQotICB1aW50MTYgcGFpZF9zdW07ICAJLy/A27zG1qe4tr3wtu4KLSAgdWludDE2IHVzZWRfbnVtOyAJCS8v0tHKudPDvMbBvyi1pc67OjEwMG1sKQorICB1aW50MzIgcGFpZF9udW07IAkJLy/A27zGv8nTw7zGwb8otaXOuzoxMDBtbCkKKyAgdWludDMyIHBhaWRfc3VtOyAgCS8vwNu8xtanuLa98LbuKLWlzrs6wOUpCisgIHVpbnQzMiB1c2VkX251bTsgCQkvL9LRyrnTw7zGwb8otaXOuzoxMDBtbCkKIH0gc3BfcHVyY2hhc2VfdDsKIAogLy+2/s6swuvQxc+iCkBAIC0xNjIsNyArMTYzLDcgQEAKICAgdWludDMyIHdhaXR0aW1lOwkJLy+z9suutci0/cqxvOQKICAgdWludDggYXV0aHN0YXR1czsJCS8v08O7p8i3yM/XtMyso6gwLc60yLfIz6OsMS3S0ci3yM+jqQogICB1aW50OCBwYXlzdGF0dXM7CQkvL9anuLbXtMyso6gwLbT91qe4tqOsIDEt0tHWp7i2o6wgMi20+r/bo6wzIC0gudix1aOpCi0gIHVpbnQ4IHBhaWRBbW91bnQ7CQkvL7Wxtqm1pcrH0tHWp7i217TMrKOst7W72NanuLazybmmvfC27iCjrCC38dTyyscgMAorICB1aW50MzIgcGFpZEFtb3VudDsJCS8vtbG2qbWlysfS0danuLbXtMyso6y3tbvY1qe4trPJuaa98LbuIKOsILfx1PLKxyAwCiB9IHNwX3FyY29kZV90OwogCiAvL8nosbiyzsr9CkBAIC0yMDQsNiArMjA1LDggQEAKICAgdWludDggZGV2aWNlbm87CiAgIHVpbnQ4IGxvY2FsX2RldmljZW5vOwogICB1aW50OCBkZXZwaHlpZFs0XTsKKyAgdWludDggZXJybXNnWzMyXTsgLy/Bqrv6uvPMqLe1u9i07c7z0MXPogorICB1aW50MTYgZXJybXNnbGVuOwogCiAgIHNwX2NhcmRzdGF0ZV90IGNhcmRTdGF0ZTsKICAgc3Bfc3lzY29uZl90IHN5c2NvbmY7CkBAIC0yMjIsMTkgKzIyNSwxOSBAQAogewogICB1aW50OCBmZWVfc3RhcnQ7CS8vVLDZusHJ/b+qyrw7CiAgIHVpbnQ4IGZlZV91bml0OwkvL7WltM6/27fRv8nTw8H3wb+jqLWlzrs6MTAwbWyjqQotICB1aW50OCBmZWVfYW10OwkvL7WltM6/27fRvfC27qOs0tS31s6qtaXOuworICB1aW50OCBmZWVfYW10OwkvL7WltM6/27fRvfC27qOs0tTA5c6qtaXOuwogfSBzcF9mZWVwYXJhX3Q7CiAKIC8vv6i94bm50MXPogogdHlwZWRlZiBzdHJ1Y3QKIHsKICAgdWludDggY2FyZHBoeWlkWzRdOwotICB1aW50OCBjaXRpemVuX2NhcmRub1sxMl07CS8vytDD8brFCisgIHVpbnQ4IGNpdGl6ZW5fY2FyZG5vWzRdOwkvL8rQw/G6xQogICB1aW50OCBjYXJkdHlwZTsKICAgdWludDggZXhwaXJlZGF0ZVs0XTsKIAotICB1aW50MTYgd2F0ZXJsaW1pdDsJCS8vtaW0zrP2y67B98G/yc/P3qOoMTAwbWyjqQotICB1aW50MTYgYW1vdW50bGltaXQ7CQkvL7WltM6z9suuvfC27snPz94gKLfWKQorICB1aW50MzIgd2F0ZXJsaW1pdDsJCS8vtaW0zrP2y67B98G/yc/P3qOoMTAwbWyjqQorICB1aW50MzIgYW1vdW50bGltaXQ7CQkvL7WltM6z9suuvfC27snPz94gKMDlKQogICB1aW50MzIgY29iaWxsbm87CQkvL7270te2qbWlseC6xQogICB1aW50OAlwZXJtaXQ7CQkJLy/Kx7fx1MrQ7c/7t9GjrDAt1MrQ7aOsMS2yu9TK0O0KICAgY2hhciBsaW1pdG1zZ1s0NV07CQkvL8/e1sbP+7fR0MXPogpkaWZmIC0tZ2l0IGEvc3Vwd2lzZG9tL3NwX2NvbnN0YW50LmggYi9zdXB3aXNkb20vc3BfY29uc3RhbnQuaAppbmRleCBlYTc5ZDA5Li42OTcxNzc1IDEwMDY0NAotLS0gYS9zdXB3aXNkb20vc3BfY29uc3RhbnQuaAorKysgYi9zdXB3aXNkb20vc3BfY29uc3RhbnQuaApAQCAtOCwzNSArOCwyMyBAQAogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogI2RlZmluZSBSQ19TVUNDRVNTIAkJCQkJCTAgCS8vILPJuaYKLSNkZWZpbmUgUkNfUFNBTV9FUlIJCQkJCQkxICAgLy9TQU24tM67yqew3AotI2RlZmluZSBSQ19DQVJEX0xPR0lOCQkJCQkyCS8v0enWpMPc1L/Kp7DcCi0jZGVmaW5lIFJDX0NBUkRfUkVBRAkJCQkJMwkvL7bBv6jKp7DcCi0jZGVmaW5lIFJDX0NBUkRfV1JJVEUJCQkJCTQJLy/QtL+oyqew3AogI2RlZmluZSBSQ19GTEFTSF9FUlIJCQkJCTUJLy9GTEFTSLTtzvMKICNkZWZpbmUgUkNfSEFSRFdBUkVfRVJSCQkJCQk2ICAvL9OyvP6809TYtO3O8wogI2RlZmluZSBSQ19GTEFTSF9OT19SSUdIVAkJCQk3IC8vt8e/ydC0Zmxhc2gKIAotI2RlZmluZSBSQ19DQVJEX05PUklHSFQgCQkJCTExCS8vv6jO3sioz94KICNkZWZpbmUgUkNfQ0FSRF9FWFBJUkVECQkJCQkxMiAJLy+5/cbav6gKICNkZWZpbmUgUkNfQ0FSRF9BVVRIRU5USUNBVElPTgkJCTEzCS8vv6jIz9akyqew3AotI2RlZmluZSBSQ19DQVJEX0xPU1QJCQkJCTE0CS8vutrD+7Wlv6gKLSNkZWZpbmUgUkNfQ0FSRE5PX0VYQ0VQVAkJCQkxNwkvL7+ousXS7LOjCiAjZGVmaW5lIFJDX0NBUkRfVElNRU9VVAkJCQkJMTgJLy/KudPDyrG85Myrs6QKLSNkZWZpbmUgUkNfQ0FSREJBTF9FWENFUFQJCQkJMTkJLy+/qNPgtu7S7LOjCi0jZGVmaW5lIFJDX0NBUkRCQUxfTEFDSwkJCQkJMjAJLy+/qNPgtu6yu9fjCiAKICNkZWZpbmUgUkNfREVWUEhZSURfTk9UU0VUCQkJCTIxIAkvL8nosbi12Na3zrTJ6NbDCi0jZGVmaW5lIFJDX0ZFRVJBVEVfTk9UU0VUCQkJCTIyIAkvL7fRwsrOtLP1yry7rwogI2RlZmluZSBSQ19ERVZfT0ZGTElORV9FUlJPUgkJCTIzICAvLyDJ6LG4zdG7+rmk1/fMq7OkCi0jZGVmaW5lIFJDX0ZJTEUwOV9DUkNfRVJSCQkJCTI1CS8vLy+8x8K8Q1JDtO3O8wotI2RlZmluZSBSQ19GSUxFMTBfQ1JDX0VSUgkJCQkyNiAJLy/Lrr/Yx66w/ENSQ7TtzvMKICNkZWZpbmUgUkNfQ0FSRF9JTlZBTElECQkJCQkyNwkvL87e0Ke/qAotI2RlZmluZSBSQ19GRUVOVU1fRVJST1IJCQkJCTI4CS8vt9HCyrj2yv207c7zCiAjZGVmaW5lIFJDX05PVFNVUFBPUlQJCQkJCTI5CS8vsrvWp7PWCQkKICNkZWZpbmUgUkNfTk9UX1NBTUVfQ0FSRAkJCQkzMAkvL7K7zay/qAogCi0jZGVmaW5lIFJDX01PREVfTk9UX1NVUFBPUlQJCQkJNDIJLy/P+7fRxKPKvbK71qez1gogI2RlZmluZSBSQ19VUERQUk9HX0VSUgkJCQkJNDMJLy/J/by2yqew3AorI2RlZmluZSBSQ19XQVRFUl9MSU1JVF9PVVQJCQkJNDQgIC8vILWltM7B98G/s6zP3gorI2RlZmluZSBSQ19BTU9VTlRfTElNSVRfT1VUCQkJCTQ1ICAvLyC1pbTOz/u30b3wtu6zrM/eCiAKICNkZWZpbmUgUkNfQ09ORlBBUkFfQ1JDX0VSUiAgIAkJCTU1ICAvL8Xk1sOyzsr9Y3JjtO3O8wogI2RlZmluZSBSQ19UUkFOU0RUTF9GVUxMCQkJCTU4CS8vCcH3y67S0cL6CkBAIC01Miw5ICs0MCw2IEBACiAjZGVmaW5lIFJDX0RFVl9GQVVMVAkJCQkJNjYgIC8vyeixuNLJy8a5ytXPCiAjZGVmaW5lIFJDX0RFVl9OT1NFVF9GTE9XU0VOU09SX1VOSVQJNjcgIC8vyeixuMH3wb+8xsvjtaXOu860yejWwwogI2RlZmluZSBSQ19DT01NX1RJTUVPVVQJCQkJCTY4ICAvL82o0bazrMqxCi0jZGVmaW5lIFNUQVRVU19LRUVQT1BFTgkJCQkJMQkvL7Ojv6q/qAotI2RlZmluZSBTVEFUVVNfQ0xPU0VECQkJCQkwCS8vyKHP+7Ojv6q/qAotCiAjZGVmaW5lIFJDX0xJTUlUX0NPTlNVTVBUSU9OCQkJNzAJLy/P3tbGz/u30QogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3N1cHdpc2RvbS9zcF9jb25zdW1lLmMgYi9zdXB3aXNkb20vc3BfY29uc3VtZS5jCmluZGV4IDc1NDUzOTAuLmY3ZjVmOTQgMTAwNjQ0Ci0tLSBhL3N1cHdpc2RvbS9zcF9jb25zdW1lLmMKKysrIGIvc3Vwd2lzZG9tL3NwX2NvbnN1bWUuYwpAQCAtMzEzLDYgKzMxMywxNSBAQAogCiAgIGlmKHBvcy0+cHVyY2hhc2UucHJlcGFpZF9udW0gPiAwKQogICB7CisgICAgaWYoKHBvcy0+cHVyY2hhc2UucGFpZF9udW0gK3Bvcy0+cHVyY2hhc2UucHJlcGFpZF9udW0pID4gY2FyZC0+d2F0ZXJsaW1pdCkKKyAgICB7CisgICAgICByZXR1cm4gUkNfV0FURVJfTElNSVRfT1VUOworICAgIH0KKyAgICBlbHNlIGlmKChwb3MtPnB1cmNoYXNlLnBhaWRfc3VtICtwb3MtPnB1cmNoYXNlLnByZXBhaWRfYW10KSA+IGNhcmQtPmFtb3VudGxpbWl0KQorICAgIHsKKyAgICAgIHJldHVybiBSQ19BTU9VTlRfTElNSVRfT1VUOworICAgIH0KKwogICAgIHBvcy0+cHVyY2hhc2UucGFpZF9udW0gKz0gcG9zLT5wdXJjaGFzZS5wcmVwYWlkX251bTsKICAgICBwb3MtPnB1cmNoYXNlLnBhaWRfc3VtICs9IHBvcy0+cHVyY2hhc2UucHJlcGFpZF9hbXQ7CiAgICAgcG9zLT5wdXJjaGFzZS5wcmVwYWlkX251bSA9IDA7CkBAIC0zNDMsNyArMzUyLDcgQEAKICAgfQogICBpZihwb3MtPnB1cmNoYXNlLnBhaWRfc3VtID4gMCkKICAgewotICAgIHNwcmludGYobXNnLCK5srzGICUwLjJm1KoiLHBvcy0+cHVyY2hhc2UucGFpZF9zdW0vMTAwLjBmKTsKKyAgICBzcHJpbnRmKG1zZywiubK8xiAlMC4zZtSqIixwb3MtPnB1cmNoYXNlLnBhaWRfc3VtLzEwMDAuMGYpOwogICAgIGRpc3BfaGludF9pbmZvX3R3byhwb3MsIr3hyvi8xrfRIixtc2csREVMQVlfVElNRTJzKTsKICAgfQogICBlbHNlCkBAIC0zNjQsNyArMzczLDcgQEAKICAgc3BfdmFsdmVfb2ZmKCk7CiAgIGlmKHBvcy0+cHVyY2hhc2UucGFpZF9zdW0gPiAwKQogICB7Ci0gICAgc3ByaW50Zihtc2csIrmyvMYgJTAuMmbUqiIscG9zLT5wdXJjaGFzZS5wYWlkX3N1bS8xMDAuMGYpOworICAgIHNwcmludGYobXNnLCK5srzGICUwLjNm1KoiLHBvcy0+cHVyY2hhc2UucGFpZF9zdW0vMTAwMC4wZik7CiAgICAgZGlzcF9oaW50X2luZm9fdHdvKHBvcywi1N3No7zGt9EiLG1zZyxERUxBWV9USU1FMnMpOwogICB9CiAgIGVsc2UKQEAgLTM3NSw2ICszODQsOCBAQAogCiBzdGF0aWMgdm9pZCBkb19lcnJvcihzcF9wb3NfdCogcG9zLCB1aW50MTYgZXJyY29kZSkKIHsKKyAgc3BfdmFsdmVfb2ZmKCk7CisKICAgaWYoZXJyY29kZSkKICAgewogICAgIHNob3dfZXJyb3IocG9zLCKy2df3yqew3DoiLGVycmNvZGUpOwpAQCAtMzkzLDcgKzQwNCw3IEBACiAgIHN3aXRjaChjYXJkV29ya1N0YXRlLT5jdXJyZW50X3N0YXRlKQogICB7CiAgIGNhc2UgQ0FSRFdPUktTVEFUVVNfTk9ORToKLSAgICBpZih0aW1lcl9nZXRfdGlja2VyKCkgLSBwb3MtPmNhcmRTdGF0ZS5maXJzdHRpY2sgPCAxNTAwKQorICAgIGlmKHRpbWVyX2dldF90aWNrZXIoKSAtIHBvcy0+Y2FyZFN0YXRlLmZpcnN0dGljayA8IDUwMCkKICAgICB7CiAgICAgICBicmVhazsKICAgICB9CkBAIC00NDAsOCArNDUxLDIzIEBACiAgICAgfQogICAgIGNhcmRXb3JrU3RhdGUtPnBhdXNlX3N0YXR1cyA9IDA7CiAgICAgcmV0ID0gZG9fd29yayhwb3MsIGNhcmQpOworICAgIGlmKFJDX1dBVEVSX0xJTUlUX09VVCA9PSByZXQpCisgICAgeworICAgICAgc3BfdmFsdmVfb2ZmKCk7CisgICAgICBkaXNwX2hpbnRfaW5mb190d28ocG9zLCAizaPWubP2y64iLCLS0bTvtaW0zrP2y67Jz8/eIiwgREVMQVlfVElNRTJzKTsKKyAgICAgIGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGUgPSBDQVJEV09SS1NUQVRVU19TVE9QUElORzsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBlbHNlIGlmKFJDX0FNT1VOVF9MSU1JVF9PVVQgPT0gcmV0KQorICAgIHsKKyAgICAgIHNwX3ZhbHZlX29mZigpOworICAgICAgZGlzcF9oaW50X2luZm9fdHdvKHBvcywgIs2j1rmz9suuIiwi0tG077WltM698Lbuyc/P3iIsIERFTEFZX1RJTUUycyk7CisgICAgICBjYXJkV29ya1N0YXRlLT5jdXJyZW50X3N0YXRlID0gQ0FSRFdPUktTVEFUVVNfU1RPUFBJTkc7CisgICAgICBicmVhazsKKyAgICB9CiAgICAgaWYocmV0KQogICAgIHsKKyAgICAgIHNwX3ZhbHZlX29mZigpOwogICAgICAgc2hvd19lcnJvcihwb3MsIs/7t9HKp7DcIixyZXQpOwogICAgICAgZXJyID0gZG9fc3RvcChwb3MsIGNhcmQpOwogICAgICAgaWYoZXJyICE9IDApCkBAIC00NTEsMTYgKzQ3Nyw2IEBACiAgICAgICBjYXJkV29ya1N0YXRlLT5jdXJyZW50X3N0YXRlID0gQ0FSRFdPUktTVEFUVVNfRVJST1I7CiAgICAgICBicmVhazsKICAgICB9Ci0gICAgaWYocG9zLT5wdXJjaGFzZS51c2VkX251bSA+IGNhcmQtPndhdGVybGltaXQpCi0gICAgewotICAgICAgZGlzcF9oaW50X2luZm9fdHdvKHBvcywgIs2j1rmz9suuIiwi0tG077WltM6z9suuyc/P3iIsIERFTEFZX1RJTUUycyk7Ci0gICAgICBjYXJkV29ya1N0YXRlLT5jdXJyZW50X3N0YXRlID0gQ0FSRFdPUktTVEFUVVNfU1RPUFBJTkc7Ci0gICAgfQotICAgIGVsc2UgaWYocG9zLT5wdXJjaGFzZS5wYWlkX3N1bSA+IGNhcmQtPmFtb3VudGxpbWl0KQotICAgIHsKLSAgICAgIGRpc3BfaGludF9pbmZvX3R3byhwb3MsICLNo9a5s/bLriIsItLRtO+1pbTOvfC27snPz94iLCBERUxBWV9USU1FMnMpOwotICAgICAgY2FyZFdvcmtTdGF0ZS0+Y3VycmVudF9zdGF0ZSA9IENBUkRXT1JLU1RBVFVTX1NUT1BQSU5HOwotICAgIH0KICAgICBjYXJkV29ya1N0YXRlLT5wYXVzZV90aWNrID0gdGltZXJfZ2V0X3RpY2tlcigpOwogICAgIGJyZWFrOwogICBjYXNlIENBUkRXT1JLU1RBVFVTX1NUT1BQSU5HOgpAQCAtNDgwLDcgKzQ5Niw2IEBACiAgICAgaWYoTUVNQ01QKHBvcy0+Y2FyZFN0YXRlLnNuciwgY2FyZC0+Y2FyZHBoeWlkLCA0KSAhPSAwKQogICAgIHsKICAgICAgIGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGUgPSBDQVJEV09SS1NUQVRVU19OT05FOwotICAgICAgYnJlYWs7CiAgICAgfQogICAgIGJyZWFrOwogICBjYXNlIENBUkRXT1JLU1RBVFVTX0VSUk9SOgpAQCAtNjU5LDcgKzY3NCw3IEBACiAgICAgcmV0ID0gc3BfcHJlcGFyZV9iZWhhbGZfdHJhbnNkdGwocG9zLCAmQ0FSRCk7CiAgICAgaWYocmV0KQogICAgIHsKLSAgICAgIGNhcmRXb3JrU3RhdGUtPmVycmNvZGUgPSBSQ19RUkNPREVfVElNRU9VVDsKKyAgICAgIGNhcmRXb3JrU3RhdGUtPmVycmNvZGUgPSByZXQ7CiAgICAgICBjYXJkV29ya1N0YXRlLT5jdXJyZW50X3N0YXRlID0gQ0FSRFdPUktTVEFUVVNfRVJST1I7CiAgICAgICBicmVhazsKICAgICB9CkBAIC03MDMsOCArNzE4LDIzIEBACiAgICAgYnJlYWs7CiAgIGNhc2UgQ0FSRFdPUktTVEFUVVNfV09SS0lORzoKICAgICByZXQgPSBkb193b3JrKHBvcywgJkNBUkQpOworICAgIGlmKFJDX1dBVEVSX0xJTUlUX09VVCA9PSByZXQpCisgICAgeworICAgICAgc3BfdmFsdmVfb2ZmKCk7CisgICAgICBkaXNwX2hpbnRfaW5mb190d28ocG9zLCAizaPWubP2y64iLCLS0bTvtaW0zrP2y67Jz8/eIiwgREVMQVlfVElNRTJzKTsKKyAgICAgIGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGUgPSBDQVJEV09SS1NUQVRVU19TVE9QUElORzsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBlbHNlIGlmKFJDX0FNT1VOVF9MSU1JVF9PVVQgPT0gcmV0KQorICAgIHsKKyAgICAgIHNwX3ZhbHZlX29mZigpOworICAgICAgZGlzcF9oaW50X2luZm9fdHdvKHBvcywgIs2j1rmz9suuIiwi0tG077WltM698Lbuyc/P3iIsIERFTEFZX1RJTUUycyk7CisgICAgICBjYXJkV29ya1N0YXRlLT5jdXJyZW50X3N0YXRlID0gQ0FSRFdPUktTVEFUVVNfU1RPUFBJTkc7CisgICAgICBicmVhazsKKyAgICB9CiAgICAgaWYocmV0KQogICAgIHsKKyAgICAgIHNwX3ZhbHZlX29mZigpOwogICAgICAgc2hvd19lcnJvcihwb3MsIs/7t9HKp7DcIixyZXQpOwogICAgICAgcmV0ID0gZG9fc3RvcChwb3MsICZDQVJEKTsKICAgICAgIGlmKHJldCkKQEAgLTcxNCwxOSArNzQ0LDkgQEAKICAgICAgIGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGUgPSBDQVJEV09SS1NUQVRVU19FUlJPUjsKICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBpZihwb3MtPnB1cmNoYXNlLnVzZWRfbnVtID5DQVJELndhdGVybGltaXQpCi0gICAgewotICAgICAgZGlzcF9oaW50X2luZm9fdHdvKHBvcywgIs2j1rmz9suuIiwi0tG077WltM6z9suuyc/P3iIsIERFTEFZX1RJTUUycyk7Ci0gICAgICBjYXJkV29ya1N0YXRlLT5jdXJyZW50X3N0YXRlID0gQ0FSRFdPUktTVEFUVVNfU1RPUFBJTkc7Ci0gICAgfQotICAgIGVsc2UgaWYocG9zLT5wdXJjaGFzZS5wYWlkX3N1bSA+IENBUkQuYW1vdW50bGltaXQpCi0gICAgewotICAgICAgZGlzcF9oaW50X2luZm9fdHdvKHBvcywgIs2j1rmz9suuIiwi0tG077WltM698Lbuyc/P3iIsIERFTEFZX1RJTUUycyk7Ci0gICAgICBjYXJkV29ya1N0YXRlLT5jdXJyZW50X3N0YXRlID0gQ0FSRFdPUktTVEFUVVNfU1RPUFBJTkc7Ci0gICAgfQogICAgIC8qKsi3yM+z9suuuvOzrLn9tci0/cqxvOTOtLP2y67No9a5s/bLrioqLwogICAgIENBUkQucXJjb2RlLm5vd3RpbWUgPSBzcF9nZXRfdGlja2VyKCk7Ci0gICAgaWYoKENBUkQucXJjb2RlLm5vd3RpbWUgLSBDQVJELnFyY29kZS5zdGFydHRpbWUpID4gQ0FSRC5xcmNvZGUud2FpdHRpbWUqREVMQVlfVElNRTFzKQorICAgIGlmKChDQVJELnFyY29kZS5ub3d0aW1lIC0gQ0FSRC5xcmNvZGUuc3RhcnR0aW1lKSA+PSBDQVJELnFyY29kZS53YWl0dGltZSpERUxBWV9USU1FMXMpCiAgICAgewogICAgICAgaWYocG9zLT5wdXJjaGFzZS51c2VkX251bSA9PSAwKQogICAgICAgewpkaWZmIC0tZ2l0IGEvc3Vwd2lzZG9tL3NwX2RhdGEuYyBiL3N1cHdpc2RvbS9zcF9kYXRhLmMKaW5kZXggMjI3NWFiYy4uZDg3YjkxOCAxMDA2NDQKLS0tIGEvc3Vwd2lzZG9tL3NwX2RhdGEuYworKysgYi9zdXB3aXNkb20vc3BfZGF0YS5jCkBAIC00LDggKzQsOCBAQAogI2luY2x1ZGUgInNwX2NvbnN0YW50LmgiCiAjaW5jbHVkZSAic3BfZGlzcGxheS5oIgogCi0jZGVmaW5lIHJlY29yZF9iZWhhbGZfbGVuIDE5Ci0jZGVmaW5lIHJlY29yZF9iZWxvd19sZW4gMTMKKyNkZWZpbmUgcmVjb3JkX2JlaGFsZl9sZW4gMjMKKyNkZWZpbmUgcmVjb3JkX2JlbG93X2xlbiA0MQogCiAvL9Gtu7e8x8K8w7/Su7HKwffLrrzHwry1xLXY1rcKIHN0YXRpYyB1aW50MTYgc3Bfd3JpdGVfbGFzdF9yZWNvcmQoc3BfcG9zX3QqIHBvcykKQEAgLTc5LDYgKzc5LDcgQEAKICAgbWVtY3B5KHJlY29yZC50cmFuc3RpbWUsIGN0aW1lKzMsIDMpOwogICByZWNvcmQuY29iaWxsbm8gPSBjYXJkLT5jb2JpbGxubzsKICAgbWVtY3B5KHJlY29yZC5jYXJkcGh5aWQsIGNhcmQtPmNhcmRwaHlpZCwgc2l6ZW9mKGNhcmQtPmNhcmRwaHlpZCkpOworICBtZW1jcHkocmVjb3JkLmNhcmRubywgY2FyZC0+Y2l0aXplbl9jYXJkbm8sIHNpemVvZihjYXJkLT5jaXRpemVuX2NhcmRubykpOwogICBpZihwb3MtPnBheW1vZGUgPT0gUEFZTU9ERV9RUkNPREUpCiAgIHsKICAgICByZWNvcmQudHJhbnN3YXkgPSAyOwpkaWZmIC0tZ2l0IGEvc3Vwd2lzZG9tL3NwX2Rpc3BsYXkuYyBiL3N1cHdpc2RvbS9zcF9kaXNwbGF5LmMKaW5kZXggNzZhYjEzNi4uM2VjM2ExYiAxMDA2NDQKLS0tIGEvc3Vwd2lzZG9tL3NwX2Rpc3BsYXkuYworKysgYi9zdXB3aXNkb20vc3BfZGlzcGxheS5jCkBAIC0yNSw3ICsyNSw3IEBACiB2b2lkIHNob3dfbW9uZXkoc3BfcG9zX3QqIHBvcywgdWludDMyIG1vbmV5KQogewogICBjaGFyIG1zZ1szMl07Ci0gIHNwcmludGYobXNnLCIgICAgICUuMDJmINSqIixtb25leS8xMDAuMGYpOworICBzcHJpbnRmKG1zZywiICAgICAlLjAzZtSqIixtb25leS8xMDAwLjBmKTsKICAgZGlzcF9oaW50X2luZm9fdHdvKHBvcywiwNu8xsuut9E6Iixtc2csMCk7CiB9CiAKQEAgLTE3NCwxOCArMTc0LDYgQEAKICAgY2hhciBtc2dbMzJdOwogICBzd2l0Y2goZXJyY29kZSkKICAgewotICBjYXNlIFJDX1BTQU1fRVJSOgotICAgIHNwcmludGYobXNnLCAiJXMiLCAiU0FNuLTOu8qnsNwiKTsKLSAgICBicmVhazsKLSAgY2FzZSBSQ19DQVJEX0xPR0lOOgotICAgIHNwcmludGYobXNnLCAiJXMiLCAi0enWpMPY1L/Kp7DcIik7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgUkNfQ0FSRF9SRUFEOgotICAgIHNwcmludGYobXNnLCAiJXMiLCAitsG/qMqnsNwiKTsKLSAgICBicmVhazsKLSAgY2FzZSBSQ19DQVJEX1dSSVRFOgotICAgIHNwcmludGYobXNnLCAiJXMiLCAi0LS/qMqnsNwiKTsKLSAgICBicmVhazsKICAgY2FzZSBSQ19GTEFTSF9FUlI6CiAgICAgc3ByaW50Zihtc2csICIlcyIsICJGTEFTSNLss6MiKTsKICAgICBicmVhazsKQEAgLTE5NSw2MCArMTgzLDMwIEBACiAgIGNhc2UgUkNfRkxBU0hfTk9fUklHSFQ6CiAgICAgc3ByaW50Zihtc2csICIlcyIsICJGTEFTSM/e1sYiKTsKICAgICBicmVhazsKLSAgY2FzZSBSQ19DQVJEX05PUklHSFQ6Ci0gICAgc3ByaW50Zihtc2csICIlcyIsICK/qM7eyKjP3iIpOwotICAgIGJyZWFrOwogICBjYXNlIFJDX0NBUkRfRVhQSVJFRDoKICAgICBzcHJpbnRmKG1zZywgIiVzIiwgIr+o0tG5/cbaIik7CiAgICAgYnJlYWs7Ci0gIGNhc2UgUkNfQ0FSRF9MT1NUOgotICAgIHNwcmludGYobXNnLCAiJXMiLCAiv6jS0cv4tqgiKTsKLSAgICBicmVhazsKLSAgY2FzZSBSQ19DQVJETk9fRVhDRVBUOgotICAgIHNwcmludGYobXNnLCAiJXMiLCAiv6jS7LOjIik7Ci0gICAgYnJlYWs7CiAgIGNhc2UgUkNfQ0FSRF9USU1FT1VUOgogICAgIHNwcmludGYobXNnLCAiJXMiLCAiyrnTw8yrvsMiKTsKICAgICBicmVhazsKLSAgY2FzZSBSQ19DQVJEQkFMX0VYQ0VQVDoKLSAgICBzcHJpbnRmKG1zZywgIiVzIiwgItPgtu7S7LOjIik7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgUkNfQ0FSREJBTF9MQUNLOgotICAgIHNwcmludGYobXNnLCAiJXMiLCAix+vBqrv6z/u30SIpOwotICAgIGJyZWFrOwogICBjYXNlIFJDX0RFVlBIWUlEX05PVFNFVDoKICAgICBzcHJpbnRmKG1zZywgIiVzIiwgIs60yejWw7v6usUiKTsKICAgICBicmVhazsKLSAgY2FzZSBSQ19GRUVSQVRFX05PVFNFVDoKLSAgICBzcHJpbnRmKG1zZywgIiVzIiwgIs60yejWw7fRwsoiKTsKLSAgICBicmVhazsKICAgY2FzZSBSQ19ERVZfT0ZGTElORV9FUlJPUjoKICAgICBzcHJpbnRmKG1zZywgIiVzIiwgIsnosbjN0bv6zKu+wyIpOwogICAgIGJyZWFrOwogICBjYXNlIFJDX1RSQU5TRFRMX0ZVTEw6CiAgICAgc3ByaW50Zihtc2csICIlcyIsICLB98uu0tHC+iIpOwogICAgIGJyZWFrOwotICBjYXNlIFJDX0ZJTEUwOV9DUkNfRVJSOgotICAgIHNwcmludGYobXNnLCAiJXMiLCAiMDlDUkO07c7zIik7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgUkNfRklMRTEwX0NSQ19FUlI6Ci0gICAgc3ByaW50Zihtc2csICIlcyIsICIxMENSQ7TtzvMiKTsKLSAgICBicmVhazsKICAgY2FzZSBSQ19DQVJEX0lOVkFMSUQ6CiAgICAgc3ByaW50Zihtc2csICIlcyIsICLO3tCnv6giKTsKICAgICBicmVhazsKLSAgY2FzZSBSQ19GRUVOVU1fRVJST1I6Ci0gICAgc3ByaW50Zihtc2csICIlcyIsICK30cLKuPbK/bTtzvMiKTsKLSAgICBicmVhazsKICAgY2FzZSBSQ19OT1RTVVBQT1JUOgogICAgIHNwcmludGYobXNnLCAiJXMiLCAisrvWp7PWIik7CiAgICAgYnJlYWs7CiAgIGNhc2UgUkNfTk9UX1NBTUVfQ0FSRDoKICAgICBzcHJpbnRmKG1zZywgIiVzIiwgIrK7zay/qCIpOwogICAgIGJyZWFrOwotICBjYXNlIFJDX01PREVfTk9UX1NVUFBPUlQ6Ci0gICAgc3ByaW50Zihtc2csICIlcyIsICLEo8q9srvWp7PWIik7Ci0gICAgYnJlYWs7CiAgIGNhc2UgUkNfVVBEUFJPR19FUlI6CiAgICAgc3ByaW50Zihtc2csICIlcyIsICLJ/by2yqew3CIpOwogICAgIGJyZWFrOwpAQCAtMjYyLDE0ICsyMjAsMTQgQEAKICAgICBzcHJpbnRmKG1zZywgIiVzIiwgIrv6usW5/bTzIik7CiAgICAgYnJlYWs7CiAgIGNhc2UgUkNfUVJDT0RFX0ZBSUxVUkU6Ci0gICAgc3ByaW50Zihtc2csICIlcyIsICK2/s6swuu78cihyqew3CIpOwotICAgIGJyZWFrOworICAJZGlzcF9zZXJ2ZXJfZXJybXNnKHBvcywiu/HIocqnsNwiLHBvcy0+ZXJybXNnLHBvcy0+ZXJybXNnbGVuKTsKKyAgCXJldHVybjsKICAgY2FzZSBSQ19RUkNPREVfVElNRU9VVDoKICAgICBzcHJpbnRmKG1zZywgIiVzIiwgIrb+zqzC67OsyrEiKTsKICAgICBicmVhazsKICAgY2FzZSBSQ19RUkNPREVfUVVFUllfRkFJTDoKLSAgICBzcHJpbnRmKG1zZywgIiVzIiwgIrb+zqzC68jP1qTKp7DcIik7Ci0gICAgYnJlYWs7CisgIAlkaXNwX3NlcnZlcl9lcnJtc2cocG9zLCLIz9akyqew3CIscG9zLT5lcnJtc2cscG9zLT5lcnJtc2dsZW4pOworICAJcmV0dXJuOwogICBjYXNlIFJDX0RFVl9OT1RfTE9HSU46CiAgICAgc3ByaW50Zihtc2csICIlcyIsICLJ6LG4zrTHqbW9Iik7CiAgICAgYnJlYWs7CkBAIC0yNzcsMTMgKzIzNSwxMyBAQAogICAgIHNwcmludGYobXNnLCAiJXMiLCAiyeixuNLJy8a5ytXPIik7CiAgICAgYnJlYWs7CiAgIGNhc2UgUkNfREVWX05PU0VUX0ZMT1dTRU5TT1JfVU5JVDoKLSAgICBzcHJpbnRmKG1zZywgIiVzIiwgIsH3wb+8xsvjtaXOu860yejWwyIpOworICAgIHNwcmludGYobXNnLCAiJXMiLCAivMbBv7WlzrvOtMno1sMiKTsKICAgICBicmVhazsKICAgY2FzZSBSQ19DQVJEX0FVVEhFTlRJQ0FUSU9OOgotICAgIHNwcmludGYobXNnLCAiJXMiLCAiye233cjP1qSzrMqxIik7Ci0gICAgYnJlYWs7CisgIAlkaXNwX3NlcnZlcl9lcnJtc2cocG9zLCLIz9akyqew3CIscG9zLT5lcnJtc2cscG9zLT5lcnJtc2dsZW4pOworICAJcmV0dXJuOwogICBjYXNlIFJDX0xJTUlUX0NPTlNVTVBUSU9OOgotICAgIHNwcmludGYobXNnLCAiJXMiLCAiuMPTw7unsbvP3tbGz/u30SIpOworICAgIHNwcmludGYobXNnLCAiJXMiLCAiz97Wxs/7t9EiKTsKICAgICBicmVhazsKICAgZGVmYXVsdDoKICAgICBzcHJpbnRmKG1zZywitO3O88LrPTB4JTA0eCIsZXJyY29kZSk7CmRpZmYgLS1naXQgYS9zdXB3aXNkb20vc3BfdXRpbC5jIGIvc3Vwd2lzZG9tL3NwX3V0aWwuYwppbmRleCBkZjcwYjEzLi41YjEwODMzIDEwMDY0NAotLS0gYS9zdXB3aXNkb20vc3BfdXRpbC5jCisrKyBiL3N1cHdpc2RvbS9zcF91dGlsLmMKQEAgLTI1NSwxMyArMjU1LDE5IEBACiB9CiB2b2lkIHNwX3ZhbHZlX29uKHZvaWQpCiB7Ci0gIHZhbHZlX3N0YV9zZXQodmFsdmVfc3RhdGVfb24pOwotICB2YWx2ZV9jdHJsKCk7CisgIGlmKCF2YWx2ZV9zdGFfZ2V0KCkpCisgIHsKKyAgICB2YWx2ZV9zdGFfc2V0KHZhbHZlX3N0YXRlX29uKTsKKyAgICB2YWx2ZV9jdHJsKCk7CisgIH0KIH0KIHZvaWQgc3BfdmFsdmVfb2ZmKHZvaWQpCiB7Ci0gIHZhbHZlX3N0YV9zZXQodmFsdmVfc3RhdGVfb2ZmKTsKLSAgdmFsdmVfY3RybCgpOworICBpZih2YWx2ZV9zdGFfZ2V0KCkpCisgIHsKKyAgICB2YWx2ZV9zdGFfc2V0KHZhbHZlX3N0YXRlX29mZik7CisgICAgdmFsdmVfY3RybCgpOworICB9CiB9CiB1aW50OCBzcF92YWx2ZV9zdGF0ZSh2b2lkKQogewo=