ZGlmZiAtLWdpdCBhL2puaS9wanByb2plY3QtYW5kcm9pZC8uc3ZuL3ByaXN0aW5lLzhjLzhjMmU3MjU3YjVlM2IyNzFmNDI2OTYwMDIyN2U0NDUxNzZkZTllNzMuc3ZuLWJhc2UgYi9qbmkvcGpwcm9qZWN0LWFuZHJvaWQvLnN2bi9wcmlzdGluZS84Yy84YzJlNzI1N2I1ZTNiMjcxZjQyNjk2MDAyMjdlNDQ1MTc2ZGU5ZTczLnN2bi1iYXNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1ODBiMjAKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvcGpwcm9qZWN0LWFuZHJvaWQvLnN2bi9wcmlzdGluZS84Yy84YzJlNzI1N2I1ZTNiMjcxZjQyNjk2MDAyMjdlNDQ1MTc2ZGU5ZTczLnN2bi1iYXNlCkBAIC0wLDAgKzEsMTIgQEAKKyMgJElkJAorIworZnJvbSBpbmNfY2ZnIGltcG9ydCAqCisKKyMgRGlmZmVyZW50IG51bWJlciBvZiBJQ0UgY29tcG9uZW50cwordGVzdF9wYXJhbSA9IFRlc3RQYXJhbSgKKwkJIkNhbGxlZT11c2UgSUNFLCBjYWxsZXI9dXNlIElDRSIsCisJCVsKKwkJCUluc3RhbmNlUGFyYW0oImNhbGxlZSIsICItLW51bGwtYXVkaW8gLS11c2UtaWNlIC0tbWF4LWNhbGxzPTEgLS1pY2Utbm8tcnRjcCIsIGVuYWJsZV9idWZmZXI9VHJ1ZSksCisJCQlJbnN0YW5jZVBhcmFtKCJjYWxsZXIiLCAiLS1udWxsLWF1ZGlvIC0tdXNlLWljZSAtLW1heC1jYWxscz0xIiwgZW5hYmxlX2J1ZmZlcj1UcnVlKQorCQldCisJCSkKZGlmZiAtLWdpdCBhL2puaS9wanByb2plY3QtYW5kcm9pZC8uc3ZuL3ByaXN0aW5lLzhjLzhjM2JjNjJjMGI4ZDY4NTZjYzc5NTkzYmRjNjc5ODM5M2E5NzcwZWMuc3ZuLWJhc2UgYi9qbmkvcGpwcm9qZWN0LWFuZHJvaWQvLnN2bi9wcmlzdGluZS84Yy84YzNiYzYyYzBiOGQ2ODU2Y2M3OTU5M2JkYzY3OTgzOTNhOTc3MGVjLnN2bi1iYXNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNTMxNTQKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvcGpwcm9qZWN0LWFuZHJvaWQvLnN2bi9wcmlzdGluZS84Yy84YzNiYzYyYzBiOGQ2ODU2Y2M3OTU5M2JkYzY3OTgzOTNhOTc3MGVjLnN2bi1iYXNlCkBAIC0wLDAgKzEsMTcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KKzxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0DQorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KKwlWZXJzaW9uPSI4LjAwIg0KKwlOYW1lPSJwanByb2plY3QtdnM4LXJlbGVhc2UtZGVmYXVsdHMiDQorCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHBqcHJvamVjdC12czgtY29tbW9uLWRlZmF1bHRzLnZzcHJvcHMiDQorCT4NCisJPFRvb2wNCisJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQlPcHRpbWl6YXRpb249IjIiDQorCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KKwkvPg0KKwk8VG9vbA0KKwkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJTGlua0luY3JlbWVudGFsPSIxIg0KKwkvPg0KKzwvVmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldD4NCmRpZmYgLS1naXQgYS9qbmkvcGpwcm9qZWN0LWFuZHJvaWQvLnN2bi9wcmlzdGluZS84Yy84YzQ4MzJlMmNkNWQ5NzYxZDZiNTA0MDMyOWM1YWFlMTI3Y2UyZGU1LnN2bi1iYXNlIGIvam5pL3BqcHJvamVjdC1hbmRyb2lkLy5zdm4vcHJpc3RpbmUvOGMvOGM0ODMyZTJjZDVkOTc2MWQ2YjUwNDAzMjljNWFhZTEyN2NlMmRlNS5zdm4tYmFzZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDJkOWFlCi0tLSAvZGV2L251bGwKKysrIGIvam5pL3BqcHJvamVjdC1hbmRyb2lkLy5zdm4vcHJpc3RpbmUvOGMvOGM0ODMyZTJjZDVkOTc2MWQ2YjUwNDAzMjljNWFhZTEyN2NlMmRlNS5zdm4tYmFzZQpAQCAtMCwwICsxLDEwOSBAQAorLyoKKyAqIENvcHlyaWdodCAxOTkyIGJ5IEp1dHRhIERlZ2VuZXIgYW5kIENhcnN0ZW4gQm9ybWFubiwgVGVjaG5pc2NoZQorICogVW5pdmVyc2l0YWV0IEJlcmxpbi4gIFNlZSB0aGUgYWNjb21wYW55aW5nIGZpbGUgIkNPUFlSSUdIVCIgZm9yCisgKiBkZXRhaWxzLiAgVEhFUkUgSVMgQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSBGT1IgVEhJUyBTT0ZUV0FSRS4KKyAqLworCisvKiAkSGVhZGVyOiAvdG1wX2FtZC9wcmVzdG8vZXhwb3J0L2ticy9qdXR0YS9zcmMvZ3NtL1JDUy90b2FzdC5oLHYgMS40IDE5OTUvMDMvMDcgMjE6MjY6MTYganV0dGEgRXhwICQgKi8KKworI2lmbmRlZglUT0FTVF9ICisjZGVmaW5lCVRPQVNUX0gJCQkJLyogR3VhcmQgYWdhaW5zdCBtdWx0aXBsZSBpbmNsdWRlcyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPHNpZ25hbC5oPgorCisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpZm5kZWYJSEFTX0VSUk5PX0RFQ0wKKwkgZXh0ZXJuIGludAllcnJubzsKKyNlbmRpZgorCisjaWZkZWYJSEFTX0xJTUlUU19ICisjaW5jbHVkZSA8bGltaXRzLmg+CisjZW5kaWYKKworI2lmZGVmCUhBU19GQ05UTF9ICisjIGluY2x1ZGUgPGZjbnRsLmg+CisjZW5kaWYKKworI2lmZGVmCUhBU19VVElNRQorIyBpZmRlZglIQVNfVVRJTUVfSAorIyAgaW5jbHVkZSA8dXRpbWUuaD4KKyMgZW5kaWYKKyNlbmRpZgorCisjaW5jbHVkZSAiZ3NtLmgiCisKKyNpZm5kZWYJU19JU1JFRworI2RlZmluZQlTX0lTUkVHKHgpCSgoeCkgJiBTX0lGUkVHKQorI2VuZGlmCS8qIFNfSVNSRUcgKi8KKworCisjIGRlZmluZQlSRUFECSJyYiIKKyMgZGVmaW5lCVdSSVRFCSJ3YiIKKyNpZmRlZiAgT19CSU5BUlkKKyMgZGVmaW5lCU9fV1JJVEVfRVhDTAlPX1dST05MWXxPX0NSRUFUfE9fRVhDTHxPX0JJTkFSWQorI2Vsc2UKKyMgZGVmaW5lCU9fV1JJVEVfRVhDTAlPX1dST05MWXxPX0NSRUFUfE9fRVhDTAorI2VuZGlmCisKKyNpZm5kZWYgU0lHSEFORExFUl9UCisjZGVmaW5lIFNJR0hBTkRMRVJfVAl2b2lkCS8qIHdoYXQgZG9lcyBhIHNpZ25hbCBoYW5kbGVyIHJldHVybj8gKi8KKyNlbmRpZgorCisKKyNpZmRlZglIQVNfU1RSSU5HX0gKKyNpbmNsdWRlCTxzdHJpbmcuaD4KKyNlbHNlCisjCWlmZGVmIEhBU19TVFJJTkdTX0gKKyMJaW5jbHVkZSA8c3RyaW5ncy5oPgorIwllbHNlCisjCQlpbmNsdWRlICJwcm90by5oIgorCisJCWV4dGVybiBpbnQJc3RybGVuCVAoKGNoYXIgKikpOworCQlleHRlcm4gY2hhciAqCXN0cmNweSAgUCgoY2hhciAqLCBjaGFyICopKTsKKwkJZXh0ZXJuIGNoYXIgKglzdHJjYXQgIFAoKGNoYXIgKiwgIGNoYXIgKikpOworCQlleHRlcm4gY2hhciAqCXN0cnJjaHIgUCgoY2hhciAqLCBpbnQpKTsKKworIwkJaW5jbHVkZSAidW5wcm90by5oIgorIwllbmRpZgorI2VuZGlmCisKKworI2lmZGVmCUhBU19TVERMSUJfSAorI2luY2x1ZGUJPHN0ZGxpYi5oPgorI2Vsc2UKKyMJaW5jbHVkZSAicHJvdG8uaCIKKyMJaWZkZWYJSEFTX01BTExPQ19ICisjCWluY2x1ZGUgPG1hbGxvYy5oPgorIwllbHNlCisJCWV4dGVybiBjaGFyCSogbWFsbG9jIFAoKHVuc2lnbmVkKSk7CisjCWVuZGlmCisJZXh0ZXJuIGludAlleGl0IFAoKGludCkpOworIwlpbmNsdWRlICJ1bnByb3RvLmgiCisjZW5kaWYKKworCisjaWZkZWYJSEFTX1VOSVNURF9ICisjCWluY2x1ZGUJPHVuaXN0ZC5oPgorI2VuZGlmCisKKy8qCisgKglUaGlzIHN1ZmZpeCBpcyB0YWNrZWQgb250by9yZW1vdmVkIGZyb20gZmlsZW5hbWVzCisgKglzaW1pbGFyIHRvIHRoZSB3YXkgZnJlZXplIGFuZCBjb21wcmVzcyBkbyBpdC4KKyAqLworI2RlZmluZQlTVUZGSVhfVE9BU1RFRAkJIi5nc20iCisKKyNpbmNsdWRlCSJwcm90by5oIgorCitleHRlcm4gaW50IAlhdWRpb19pbml0X2lucHV0IFAoKHZvaWQpKSwgYXVkaW9faW5pdF9vdXRwdXQgUCgodm9pZCkpOworZXh0ZXJuIGludAl1bGF3X2lucHV0ICAgUCgoZ3NtX3NpZ25hbCopKSwgdWxhd19vdXRwdXQgICBQKChnc21fc2lnbmFsICopKTsKK2V4dGVybiBpbnQJYWxhd19pbnB1dCAgIFAoKGdzbV9zaWduYWwqKSksIGFsYXdfb3V0cHV0ICAgUCgoZ3NtX3NpZ25hbCAqKSk7CitleHRlcm4gaW50CWxpbmVhcl9pbnB1dCBQKChnc21fc2lnbmFsKikpLCBsaW5lYXJfb3V0cHV0IFAoKGdzbV9zaWduYWwgKikpOworCisjZW5kaWYJCS8qIFRPQVNUX0ggKi8KZGlmZiAtLWdpdCBhL2puaS9wanByb2plY3QtYW5kcm9pZC8uc3ZuL3ByaXN0aW5lLzhjLzhjNjY1Nzc3ODFjZWIyNWY2MzhiM2QzNGNjZDJiMjY5ZWM0Y2ZiODYuc3ZuLWJhc2UgYi9qbmkvcGpwcm9qZWN0LWFuZHJvaWQvLnN2bi9wcmlzdGluZS84Yy84YzY2NTc3NzgxY2ViMjVmNjM4YjNkMzRjY2QyYjI2OWVjNGNmYjg2LnN2bi1iYXNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczZjAwNGIKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvcGpwcm9qZWN0LWFuZHJvaWQvLnN2bi9wcmlzdGluZS84Yy84YzY2NTc3NzgxY2ViMjVmNjM4YjNkMzRjY2QyYjI2OWVjNGNmYjg2LnN2bi1iYXNlCkBAIC0wLDAgKzEsODMgQEAKK1RBUkdFVCAJCXBqbGliX3Rlc3QuZXhlCitUQVJHRVRUWVBFIAlleGUKK1VJRAkJMHgwIDB4QTAwMDAwMDIKKworCitTT1VSQ0VQQVRICS4uXHBqbGliXHNyY1xwamxpYi10ZXN0CisKK01BQ1JPCQlQSl9NX0kzODY9MQorTUFDUk8JCVBKX1NZTUJJQU49MQorCisvLyBNdXN0IGNvbXBpbGUgYXMgQysrLCBvdGhlcndpc2UgZXhjZXB0aW9uIHdvdWxkIG5vdCB3b3JrCitPUFRJT04gQ1cgLWxhbmcgYysrCitPUFRJT04gQVJNQ0MgLS1jcHAgLS1nbnUKK09QVElPTiBHQ0MgLXggYysrCitPUFRJT04gR0NDRSAteCBjKysKKworI2lmIGRlZmluZWQoUEpfQlVJTERfRExMKQorTUFDUk8JCVBKX0RMTAorTElCUkFSWQkJcGpsaWIubGliIAorI2Vsc2UKK1NUQVRJQ0xJQlJBUlkJcGpsaWIubGliIAorI2VuZGlmCisKKy8vIFRlc3QgZmlsZXMKKworU09VUkNFCWFjdGl2ZXNvY2suYworU09VUkNFCWF0b21pYy5jCitTT1VSQ0UJZWNob19jbHQuYworU09VUkNFCWVycm5vLmMKK1NPVVJDRQlleGNlcHRpb25fd3JhcC5jcHAKK1NPVVJDRQlmaWZvYnVmLmMKK1NPVVJDRQlmaWxlLmMKK1NPVVJDRQloYXNoX3Rlc3QuYworU09VUkNFCWlvcV9wZXJmLmMKK1NPVVJDRQlpb3FfdGNwLmMKK1NPVVJDRQlpb3FfdWRwLmMKK1NPVVJDRQlpb3FfdW5yZWcuYworU09VUkNFCWxpc3QuYworU09VUkNFCW11dGV4LmMKK1NPVVJDRQlvcy5jCitTT1VSQ0UJcG9vbF93cmFwLmNwcAorU09VUkNFCXBvb2xfcGVyZi5jCitTT1VSQ0UJcmFuZC5jCitTT1VSQ0UJcmJ0cmVlLmMKK1NPVVJDRQlzZWxlY3QuYworU09VUkNFCXNsZWVwLmMKK1NPVVJDRQlzb2NrLmMKK1NPVVJDRQlzb2NrX3BlcmYuYworU09VUkNFCXNzbF9zb2NrLmMKK1NPVVJDRQlzdHJpbmcuYworU09VUkNFCXRlc3Rfd3JhcC5jcHAKK1NPVVJDRQl0aHJlYWQuYworU09VUkNFCXRpbWVyLmMKK1NPVVJDRQl0aW1lc3RhbXAuYworU09VUkNFCXVkcF9lY2hvX3Nydl9pb3F1ZXVlLmMKK1NPVVJDRQl1ZHBfZWNob19zcnZfc3luYy5jCitTT1VSQ0UJdXRpbC5jCisKK1NPVVJDRQltYWluX3N5bWJpYW4uY3BwCisKK0RPQ1VNRU5UIHRlc3QuaAorCitTVEFSVCBSRVNPVVJDRSAgCXBqbGliX3Rlc3RfcmVnLnJzcworCVRBUkdFVFBBVEggICAgICBccHJpdmF0ZVwxMDAwM2EzZlxhcHBzCitFTkQKKworU1lTVEVNSU5DTFVERQkuLlxwamxpYlxpbmNsdWRlCisKK1NZU1RFTUlOQ0xVREUJXGVwb2MzMlxpbmNsdWRlCitTWVNURU1JTkNMVURFCVxlcG9jMzJcaW5jbHVkZVxsaWJjCisKK0xJQlJBUlkJCWVzb2NrLmxpYiBpbnNvY2subGliIGNoYXJjb252LmxpYiBldXNlci5saWIgZXN0bGliLmxpYiAKK0xJQlJBUlkJCXNlY3VyZXNvY2tldC5saWIgeDUwOS5saWIgY3J5cHRvLmxpYiB4NTAwLmxpYiAKK0xJQlJBUlkJCWhhbC5saWIgZWZzcnYubGliCisgCisjaWZkZWYgV0lOU0NXCitTVEFUSUNMSUJSQVJZICAgZWV4ZS5saWIgZWNydDAubGliCisjZW5kaWYKKworLy8gTmVlZCBhIGJpdCBvZiBtZW0gZm9yIGxvZ2dpbmcgaW4gdGhlIGFwcC4KK0VQT0NTVEFDS1NJWkUJCTMyNzY4CisKK0NBUEFCSUxJVFkJTmV0d29ya1NlcnZpY2VzIExvY2FsU2VydmljZXMgUmVhZFVzZXJEYXRhIFdyaXRlVXNlckRhdGEgVXNlckVudmlyb25tZW50CmRpZmYgLS1naXQgYS9qbmkvcGpwcm9qZWN0LWFuZHJvaWQvLnN2bi9wcmlzdGluZS84Yy84Y2JiNTFmMjQ3Zjc4NDllOWQwZDQ1NDM3OWY4MDg2MzM0OTkzZmM4LnN2bi1iYXNlIGIvam5pL3BqcHJvamVjdC1hbmRyb2lkLy5zdm4vcHJpc3RpbmUvOGMvOGNiYjUxZjI0N2Y3ODQ5ZTlkMGQ0NTQzNzlmODA4NjMzNDk5M2ZjOC5zdm4tYmFzZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNmE1ZTAzCi0tLSAvZGV2L251bGwKKysrIGIvam5pL3BqcHJvamVjdC1hbmRyb2lkLy5zdm4vcHJpc3RpbmUvOGMvOGNiYjUxZjI0N2Y3ODQ5ZTlkMGQ0NTQzNzlmODA4NjMzNDk5M2ZjOC5zdm4tYmFzZQpAQCAtMCwwICsxLDE2MiBAQAorLyogJElkJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpZm5kZWYgX19QSk1FRElBX0NPREVDU19HNzIyMV9IX18KKyNkZWZpbmUgX19QSk1FRElBX0NPREVDU19HNzIyMV9IX18KKworLyoqCisgKiBAZmlsZSBwam1lZGlhLWNvZGVjL2c3MjIxLmgKKyAqIEBicmllZiBHNzIyLjEgY29kZWMuCisgKi8KKworI2luY2x1ZGUgPHBqbWVkaWEtY29kZWMvdHlwZXMuaD4KKworLyoqCisgKiBAZGVmZ3JvdXAgUEpNRURfRzcyMjFfQ09ERUMgRy43MjIuMSBDb2RlYyAoU2lyZW43L1NpcmVuMTQpCisgKiBAaW5ncm91cCBQSk1FRElBX0NPREVDX0NPREVDUworICogQGJyaWVmIEltcGxlbWVudGF0aW9uIG9mIEcuNzIyLjEgY29kZWMKKyAqIEB7CisgKgorICogPGI+Ry43MjIuMSBsaWNlbnNlZCBmcm9tIFBvbHljb22uPC9iPjxiciAvPgorICogPGI+Ry43MjIuMSBBbm5leCBDIGxpY2Vuc2VkIGZyb20gUG9seWNvba48L2I+CisgKgorICogVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBmdW5jdGlvbnMgdG8gaW5pdGlhbGl6ZSBhbmQgcmVnaXN0ZXIgRy43MjIuMSBjb2RlYworICogZmFjdG9yeSB0byB0aGUgY29kZWMgbWFuYWdlci4gQWZ0ZXIgdGhlIGNvZGVjIGZhY3RvcnkgaGFzIGJlZW4gcmVnaXN0ZXJlZCwKKyAqIGFwcGxpY2F0aW9uIGNhbiB1c2UgQHJlZiBQSk1FRElBX0NPREVDIEFQSSB0byBtYW5pcHVsYXRlIHRoZSBjb2RlYy4KKyAqCisgKiBQSk1FRElBIEc3MjIuMSBjb2RlYyBpbXBsZW1lbnRhdGlvbiBpcyBiYXNlZCBvbiBJVFUtVCBSZWNvbW1lbmRhdGlvbiAKKyAqIEcuNzIyLjEgKDA1LzIwMDUpIEMgZml4ZWQgcG9pbnQgaW1wbGVtZW50YXRpb24gaW5jbHVkaW5nIGl0cyBBbm5leCBDLgorICoKKyAqIEcuNzIyLjEgaXMgYSBsb3cgY29tcGxleGl0eSBjb2RlYyB0aGF0IHN1cHBvcnRzIDdrSHogYW5kIDE0a0h6IGF1ZGlvIAorICogYmFuZHdpZHRoIHdvcmtpbmcgYXQgYml0cmF0ZXMgcmFuZ2luZyBmcm9tIDE2a2JwcyB0byA0OGticHMuIEl0IG1heSBiZQorICogdXNlZCB3aXRoIHNwZWVjaCBvciBtdXNpYyBpbnB1dHMuCisgKgorICoKKyAqIFxzZWN0aW9uIGNvZGVjX3NldHRpbmcgQ29kZWMgU2V0dGluZ3MKKyAqCisgKiBcc3Vic2VjdGlvbiBnZW5lcmFsX3NldHRpbmcgR2VuZXJhbCBTZXR0aW5ncworICoKKyAqIEdlbmVyYWwgY29kZWMgc2V0dGluZ3MgZm9yIHRoaXMgY29kZWMgc3VjaCBhcyBWQUQgYW5kIFBMQyBjYW4gYmUgCisgKiBtYW5pcHVsYXRlZCB0aHJvdWdoIHRoZSA8dHQ+c2V0dGluZzwvdHQ+IGZpZWxkIGluICNwam1lZGlhX2NvZGVjX3BhcmFtLiAKKyAqIFBsZWFzZSBzZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgI3BqbWVkaWFfY29kZWNfcGFyYW0gZm9yIG1vcmUgaW5mby4KKyAqCisgKiBcc3Vic2VjdGlvbiBzcGVjaWZpY19zZXR0aW5nIENvZGVjIFNwZWNpZmljIFNldHRpbmdzCisgKgorICogVGhlIGZvbGxvd2luZyBzZXR0aW5ncyBhcmUgYXBwbGljYWJsZSBmb3IgdGhpcyBjb2RlYy4KKyAqCisgKiBcc3Vic3Vic2VjdGlvbiBiaXRyYXRlIEJpdHJhdGUKKyAqCisgKiBUaGUgY29kZWMgaW1wbGVtZW50YXRpb24gc3VwcG9ydHMgc3RhbmRhcmQgYW5kIG5vbi1zdGFuZGFyZCBiaXRyYXRlcy4KKyAqIFVzZSAjcGptZWRpYV9jb2RlY19nNzIyMV9zZXRfbW9kZSgpIHRvIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBiaXRyYXRlcy4KKyAqCisgKiBCeSBkZWZhdWx0LCBvbmx5IHN0YW5kYXJkIGJpdHJhdGVzIGFyZSBlbmFibGVkIHVwb24gaW5pdGlhbGl6YXRpb246CisgKiAtIGZvciA3a0h6IGF1ZGlvIGJhbmR3aWR0aCAoMTZrSHogc2FtcGxpbmcgcmF0ZSk6IDI0a2JwcyBhbmQgMzJrYnBzLAorICogLSBmb3IgMTRrSHogYXVkaW8gYmFuZHdpZHRoICgzMmtIeiBzYW1wbGluZyByYXRlKTogMjRrYnBzLCAzMmticHMsIGFuZAorICogICA0OGticHMuCisgKgorICogVGhlIHVzYWdlIG9mIG5vbi1zdGFuZGFyZCBiaXRyYXRlcyBtdXN0IGZvbGxvdyB0aGVzZSByZXF1aXJlbWVudHM6CisgKiAtIGZvciA3a0h6IGF1ZGlvIGJhbmR3aWR0aCAoMTZrSHogc2FtcGxpbmcgcmF0ZSk6IDE2MDAwIHRvIDMyMDAwIGJwcywgCisgKiAgIG11bHRpcGxpY2F0aW9uIG9mIDQwMAorICogLSBmb3IgMTRrSHogYXVkaW8gYmFuZHdpZHRoICgzMmtIeiBzYW1wbGluZyByYXRlKTogMjQwMDAgdG8gNDgwMDAgYnBzLAorICogICBtdWx0aXBsaWNhdGlvbiBvZiA0MDAKKyAqCisgKiBcbm90ZQorICogQ3VycmVudGx5IG9ubHkgdXAgdG8gdHdvIG5vbi1zdGFuZGFyZCBtb2RlcyBjYW4gYmUgZW5hYmxlZC4KKyAqCisgKiBccmVtYXJrCisgKiBUaGVyZSBpcyBhIGZsYXcgaW4gdGhlIGNvZGVjIG1hbmFnZXIgYXMgY3VycmVudGx5IGl0IGNvdWxkIG5vdAorICogZGlmZmVyZW50aWF0ZSBHLjcyMi4xIGNvZGVjcyBieSBiaXRyYXRlcywgaGVuY2UgaW52b2tpbmcgCisgKiAjcGptZWRpYV9jb2RlY19tZ3Jfc2V0X2RlZmF1bHRfcGFyYW0oKSBtYXkgb25seSBhZmZlY3QgYSBHLjcyMi4xIGNvZGVjCisgKiB3aXRoIHRoZSBoaWdoZXN0IHByaW9yaXR5IChvciBmaXJzdCBpbmRleCBmb3VuZCBpbiBjb2RlYyBlbnVtZXJhdGlvbiAKKyAqIHdoZW4gdGhleSBoYXZlIHNhbWUgcHJpb3JpdHkpIGFuZCBpbnZva2luZworICogI3BqbWVkaWFfY29kZWNfbWdyX3NldF9jb2RlY19wcmlvcml0eSgpIHdpbGwgc2V0IHByaW9yaXR5IG9mIGFsbCBHLjcyMi4xCisgKiBjb2RlY3Mgd2l0aCBzYW1wbGluZyByYXRlIGFzIHNwZWNpZmllZC4KKyAqLworCitQSl9CRUdJTl9ERUNMCisKKy8qKgorICogSW5pdGlhbGl6ZSBhbmQgcmVnaXN0ZXIgRy43MjIuMSBjb2RlYyBmYWN0b3J5IHRvIHBqbWVkaWEgZW5kcG9pbnQuCisgKgorICogQHBhcmFtIGVuZHB0CSAgICBUaGUgcGptZWRpYSBlbmRwb2ludC4KKyAqCisgKiBAcmV0dXJuCSAgICBQSl9TVUNDRVNTIG9uIHN1Y2Nlc3MuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqbWVkaWFfY29kZWNfZzcyMjFfaW5pdCggcGptZWRpYV9lbmRwdCAqZW5kcHQgKTsKKworCisvKioKKyAqIEVuYWJsZSBhbmQgZGlzYWJsZSBHLjcyMi4xIG1vZGUuIEJ5IGRlZmF1bHQsIHRoZSBzdGFuZGFyZCBtb2RlcyBhcmUgCisgKiBlbmFibGVkIHVwb24gaW5pdGlhbGl6YXRpb24sIGkuZS46CisgKiAtIHNhbXBsaW5nIHJhdGUgMTZrSHosIGJpdHJhdGUgMjRrYnBzIGFuZCAzMmticHMuCisgKiAtIHNhbXBsaW5nIHJhdGUgMzJrSHosIGJpdHJhdGUgMjRrYnBzLCAzMmticHMsIGFuZCA0OGticHMuCisgKiBUaGlzIGZ1bmN0aW9uIGNhbiBhbHNvIGJlIHVzZWQgZm9yIGVuYWJsaW5nIG5vbi1zdGFuZGFyZCBtb2Rlcy4KKyAqIE5vdGUgdGhhdCBjdXJyZW50bHkgb25seSB1cCB0byB0d28gbm9uLXN0YW5kYXJkIG1vZGVzIGNhbiBiZSBlbmFibGVkCisgKiBhdCBvbmUgdGltZS4KKyAqCisgKiBAcGFyYW0gc2FtcGxlX3JhdGUJUENNIHNhbXBsaW5nIHJhdGUsIGluIEh6LCB2YWxpZCB2YWx1ZXMgYXJlIG9ubHkgCisgKgkJCTE2MDAwIGFuZCAzMjAwMC4KKyAqIEBwYXJhbSBiaXRyYXRlCUc3MjIuMSBiaXRyYXRlLCBpbiBicHMsIHRoZSB2YWxpZCB2YWx1ZXMgYXJlCisgKgkJCXN0YW5kYXJkIGFuZCBub24tc3RhbmRhcmQgYml0cmF0ZXMgYXMgZGVzY3JpYmVkIAorICoJCQlhYm92ZS4KKyAqIEBwYXJhbSBlbmFibGVkCVBKX1RSVUUgZm9yIGVuYWJsaW5nIHNwZWNpZmllZCBtb2RlLgorICoKKyAqIEByZXR1cm4JCVBKX1NVQ0NFU1Mgb24gc3VjY2Vzcy4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGptZWRpYV9jb2RlY19nNzIyMV9zZXRfbW9kZSh1bnNpZ25lZCBzYW1wbGVfcmF0ZSwgCisJCQkJCQkgIHVuc2lnbmVkIGJpdHJhdGUsIAorCQkJCQkJICBwal9ib29sX3QgZW5hYmxlZCk7CisKKy8qKgorICogU2V0IHRoZSBHLjcyMi4xIGNvZGVjIGVuY29kZXIgYW5kIGRlY29kZXIgbGV2ZWwgYWRqdXN0bWVudC4gCisgKiBJZiB0aGUgdmFsdWUgaXMgbm9uLXplcm8sIHRoZW4gUENNIGlucHV0IHNhbXBsZXMgdG8gdGhlIGVuY29kZXIgd2lsbCAKKyAqIGJlIHNoaWZ0ZWQgcmlnaHQgYnkgdGhpcyB2YWx1ZSwgYW5kIHNpbWlsYXJseSBQQ00gb3V0cHV0IHNhbXBsZXMgZnJvbQorICogdGhlIGRlY29kZXIgd2lsbCBiZSBzaGlmdGVkIGxlZnQgYnkgdGhpcyB2YWx1ZS4KKyAqCisgKiBcbm90ZQorICogVGhpcyBmdW5jdGlvbiBpcyBhbHNvIGFwcGxpY2FibGUgZm9yIEc3MjIuMSBpbXBsZW1lbnRhdGlvbiB3aXRoIElQUAorICogYmFjay1lbmQuCisgKgorICogRGVmYXVsdCB2YWx1ZSBpcyBQSk1FRElBX0c3MjIxX0RFRkFVTFRfUENNX1NISUZULgorICoKKyAqIEBwYXJhbSB2YWwJCVRoZSB2YWx1ZQorICoKKyAqIEByZXR1cm4JCVBKX1NVQ0NFU1Mgb24gc3VjY2Vzcy4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGptZWRpYV9jb2RlY19nNzIyMV9zZXRfcGNtX3NoaWZ0KGludCB2YWwpOworCisKKworLyoqCisgKiBVbnJlZ2lzdGVyIEcuNzIyLjEgY29kZWNzIGZhY3RvcnkgZnJvbSBwam1lZGlhIGVuZHBvaW50LgorICoKKyAqIEByZXR1cm4JICAgIFBKX1NVQ0NFU1Mgb24gc3VjY2Vzcy4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGptZWRpYV9jb2RlY19nNzIyMV9kZWluaXQodm9pZCk7CisKKworUEpfRU5EX0RFQ0wKKworCisvKioKKyAqIEB9CisgKi8KKworI2VuZGlmCS8qIF9fUEpNRURJQV9DT0RFQ1NfRzcyMjFfSF9fICovCisKZGlmZiAtLWdpdCBhL2puaS9wanByb2plY3QtYW5kcm9pZC8uc3ZuL3ByaXN0aW5lLzhjLzhjY2FmMTdmOGQ3NWU0ZmNjZjZmNzYyNjRkYTU0Njg0ZmExNGY0ZTQuc3ZuLWJhc2UgYi9qbmkvcGpwcm9qZWN0LWFuZHJvaWQvLnN2bi9wcmlzdGluZS84Yy84Y2NhZjE3ZjhkNzVlNGZjY2Y2Zjc2MjY0ZGE1NDY4NGZhMTRmNGU0LnN2bi1iYXNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyMGJjNWYKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvcGpwcm9qZWN0LWFuZHJvaWQvLnN2bi9wcmlzdGluZS84Yy84Y2NhZjE3ZjhkNzVlNGZjY2Y2Zjc2MjY0ZGE1NDY4NGZhMTRmNGU0LnN2bi1iYXNlCkBAIC0wLDAgKzEsMTcgQEAKKyMgJElkJAorIworZnJvbSBpbmNfY2ZnIGltcG9ydCAqCisKKyMgQ2FsbCB3aXRoIEwxNi8xNjAwMC8yIGNvZGVjCit0ZXN0X3BhcmFtID0gVGVzdFBhcmFtKAorCQkiUEVTUSBkZWZhdWx0cyBwanN1YSBzZXR0aW5ncyIsCisJCVsKKwkJCUluc3RhbmNlUGFyYW0oIlVBMSIsICItLXN0ZXJlbyAtLW1heC1jYWxscz0xIC0tY2xvY2stcmF0ZSAxNjAwMCAtLWFkZC1jb2RlYyBMMTYvMTYwMDAvMiAtLXBsYXktZmlsZSB3YXZzL2lucHV0LjIuMTYud2F2IC0tbnVsbC1hdWRpbyIpLAorCQkJSW5zdGFuY2VQYXJhbSgiVUEyIiwgIi0tc3RlcmVvIC0tbWF4LWNhbGxzPTEgLS1jbG9jay1yYXRlIDE2MDAwIC0tYWRkLWNvZGVjIEwxNi8xNjAwMC8yIC0tcmVjLWZpbGUgIHdhdnMvdG1wLjIuMTYud2F2ICAgLS1hdXRvLWFuc3dlciAyMDAiKQorCQldCisJCSkKKworaWYgKEhBU19TTkRfREVWID09IDApOgorCXRlc3RfcGFyYW0uc2tpcCA9IFRydWUKKwkKK3Blc3FfdGhyZXNob2xkID0gTm9uZQo=