ZGlmZiAtLWdpdCBhL3Rlc3RzL0FuZHJvaWQubWsgYi90ZXN0cy9BbmRyb2lkLm1rCmluZGV4IGU3MjU4N2QuLjYwZTgyZDUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL0FuZHJvaWQubWsKKysrIGIvdGVzdHMvQW5kcm9pZC5tawpAQCAtMTAsNyArMTAsNyBAQAogIyBJbmNsdWRlIGFsbCB0ZXN0IGphdmEgZmlsZXMuCiBMT0NBTF9TUkNfRklMRVMgOj0gJChjYWxsIGFsbC1qYXZhLWZpbGVzLXVuZGVyLCBzcmMpCiAKLUxPQ0FMX1BBQ0tBR0VfTkFNRSA6PSBMYXRpbklNRVRlc3RzCitMT0NBTF9QQUNLQUdFX05BTUUgOj0gTGF0aW5JTUUyVGVzdHMKIAogTE9DQUxfSU5TVFJVTUVOVEFUSU9OX0ZPUiA6PSBMYXRpbkltZTJHb29nbGUKIApkaWZmIC0tZ2l0IGEvdGVzdHMvQW5kcm9pZE1hbmlmZXN0LnhtbCBiL3Rlc3RzL0FuZHJvaWRNYW5pZmVzdC54bWwKaW5kZXggMjEwZTgxNC4uNjZjZWNlZSAxMDA2NDQKLS0tIGEvdGVzdHMvQW5kcm9pZE1hbmlmZXN0LnhtbAorKysgYi90ZXN0cy9BbmRyb2lkTWFuaWZlc3QueG1sCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgPC9hcHBsaWNhdGlvbj4KIAogICAgIDxpbnN0cnVtZW50YXRpb24gYW5kcm9pZDpuYW1lPSJhbmRyb2lkLnRlc3QuSW5zdHJ1bWVudGF0aW9uVGVzdFJ1bm5lciIKLSAgICAgICAgYW5kcm9pZDp0YXJnZXRQYWNrYWdlPSJjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5sYXRpbiIKKyAgICAgICAgYW5kcm9pZDp0YXJnZXRQYWNrYWdlPSJjb20uZ29vZ2xlLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4iCiAgICAgICAgIGFuZHJvaWQ6bGFiZWw9IkxhdGluSU1FIHRlc3RzIj4KICAgICA8L2luc3RydW1lbnRhdGlvbj4KIDwvbWFuaWZlc3Q+CmRpZmYgLS1naXQgYS90ZXN0cy9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vSW1lTG9nZ2VyVGVzdHMuamF2YSBiL3Rlc3RzL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9JbWVMb2dnZXJUZXN0cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzNDU1OWIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vSW1lTG9nZ2VyVGVzdHMuamF2YQpAQCAtMCwwICsxLDU5IEBACitwYWNrYWdlIGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmxhdGluOworCitpbXBvcnQgYW5kcm9pZC50ZXN0LlNlcnZpY2VUZXN0Q2FzZTsKKworcHVibGljIGNsYXNzIEltZUxvZ2dlclRlc3RzIGV4dGVuZHMgU2VydmljZVRlc3RDYXNlPExhdGluSU1FPiB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgV09SRF9TRVBBUkFUT1JTCisgICAgICAgICAgICA9ICIuXHUwMDA5XHUwMDIwLDs6IT9cbigpW10qJkB7fTw+O18rPXxcXHUwMDIyIjsKKworICAgIHB1YmxpYyBJbWVMb2dnZXJUZXN0cygpIHsKKyAgICAgICAgc3VwZXIoTGF0aW5JTUUuY2xhc3MpOworICAgIH0KKyAgICBzdGF0aWMgTGF0aW5JbWVMb2dnZXIgc0xvZ2dlcjsKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBzZXRVcCgpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHN1cGVyLnNldFVwKCk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICB9CisgICAgICAgIHNldHVwU2VydmljZSgpOworICAgICAgICAvLyBzdGFydFNlcnZpY2UobnVsbCk7IC8vIGNhbid0IGJlIHN0YXJ0ZWQgYmVjYXVzZSBWb2ljZUlucHV0IGNhbid0IGJlIGZvdW5kLgorICAgICAgICBmaW5hbCBMYXRpbklNRSBjb250ZXh0ID0gZ2V0U2VydmljZSgpOworICAgICAgICBjb250ZXh0Lm1Xb3JkU2VwYXJhdG9ycyA9IFdPUkRfU0VQQVJBVE9SUzsKKyAgICAgICAgTGF0aW5JbWVMb2dnZXIuaW5pdChjb250ZXh0KTsKKyAgICAgICAgc0xvZ2dlciA9IExhdGluSW1lTG9nZ2VyLnNMYXRpbkltZUxvZ2dlcjsKKyAgICB9CisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqIFRlc3RzICoqKioqKioqKioqKioqKioqKioqKi8KKyAgICBwdWJsaWMgdm9pZCB0ZXN0UmluZ0J1ZmZlcigpIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzTG9nZ2VyLm1SaW5nQ2hhckJ1ZmZlci5CVUZTSVpFICogMjsgKytpKSB7CisgICAgICAgICAgICBMYXRpbkltZUxvZ2dlci5sb2dPbkRlbGV0ZSgpOworICAgICAgICB9CisgICAgICAgIGFzc2VydEVxdWFscygiIiwgc0xvZ2dlci5tUmluZ0NoYXJCdWZmZXIuZ2V0TGFzdFN0cmluZygpKTsKKyAgICAgICAgTGF0aW5JbWVMb2dnZXIubG9nT25JbnB1dENoYXIoJ3QnKTsKKyAgICAgICAgTGF0aW5JbWVMb2dnZXIubG9nT25JbnB1dENoYXIoJ2cnKTsKKyAgICAgICAgTGF0aW5JbWVMb2dnZXIubG9nT25JbnB1dENoYXIoJ2knKTsKKyAgICAgICAgTGF0aW5JbWVMb2dnZXIubG9nT25JbnB1dENoYXIoJ3MnKTsKKyAgICAgICAgTGF0aW5JbWVMb2dnZXIubG9nT25JbnB1dENoYXIoJyAnKTsKKyAgICAgICAgTGF0aW5JbWVMb2dnZXIubG9nT25BdXRvU3VnZ2VzdGlvbigidGdpcyIsICJ0aGlzIik7CisgICAgICAgIExhdGluSW1lTG9nZ2VyLmxvZ09uSW5wdXRDaGFyKCcgJyk7CisgICAgICAgIExhdGluSW1lTG9nZ2VyLmxvZ09uRGVsZXRlKCk7CisgICAgICAgIGFzc2VydEVxdWFscygiIiwgc0xvZ2dlci5tUmluZ0NoYXJCdWZmZXIuZ2V0TGFzdFN0cmluZygpKTsKKyAgICAgICAgTGF0aW5JbWVMb2dnZXIubG9nT25EZWxldGUoKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKCJ0Z2lzIiwgc0xvZ2dlci5tUmluZ0NoYXJCdWZmZXIuZ2V0TGFzdFN0cmluZygpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKCJ0Z2lzIiwgTGF0aW5JbWVMb2dnZXIuc0xhc3RBdXRvU3VnZ2VzdEJlZm9yZSk7CisgICAgICAgIExhdGluSW1lTG9nZ2VyLmxvZ09uQXV0b1N1Z2dlc3Rpb25DYW5jZWxlZCgpOworICAgICAgICBhc3NlcnRFcXVhbHMoIiIsIExhdGluSW1lTG9nZ2VyLnNMYXN0QXV0b1N1Z2dlc3RCZWZvcmUpOworICAgICAgICBMYXRpbkltZUxvZ2dlci5sb2dPbkRlbGV0ZSgpOworICAgICAgICBhc3NlcnRFcXVhbHMoInRnaSIsIHNMb2dnZXIubVJpbmdDaGFyQnVmZmVyLmdldExhc3RTdHJpbmcoKSk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc0xvZ2dlci5tUmluZ0NoYXJCdWZmZXIuQlVGU0laRSAqIDI7ICsraSkgeworICAgICAgICAgICAgTGF0aW5JbWVMb2dnZXIubG9nT25EZWxldGUoKTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnRFcXVhbHMoIiIsIHNMb2dnZXIubVJpbmdDaGFyQnVmZmVyLmdldExhc3RTdHJpbmcoKSk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc0xvZ2dlci5tUmluZ0NoYXJCdWZmZXIuQlVGU0laRSAqIDI7ICsraSkgeworICAgICAgICAgICAgTGF0aW5JbWVMb2dnZXIubG9nT25JbnB1dENoYXIoJ2EnKTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnRFcXVhbHMoc0xvZ2dlci5tUmluZ0NoYXJCdWZmZXIuQlVGU0laRSwgc0xvZ2dlci5tUmluZ0NoYXJCdWZmZXIubGVuZ3RoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS90ZXN0cy9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vdGVzdHMvU3VnZ2VzdFRlc3RzLmphdmEgYi90ZXN0cy9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vdGVzdHMvU3VnZ2VzdFRlc3RzLmphdmEKaW5kZXggOTQwMWQ5Mi4uMGQzYmFiZiAxMDA2NDQKLS0tIGEvdGVzdHMvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL3Rlc3RzL1N1Z2dlc3RUZXN0cy5qYXZhCisrKyBiL3Rlc3RzL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi90ZXN0cy9TdWdnZXN0VGVzdHMuamF2YQpAQCAtMjQxLDggKzI0MSwxMSBAQAogICAgICAqIEFyZSBhY2NlbnRlZCBmb3JtcyBvZiB3b3JkcyBzdWdnZXN0ZWQgYXMgY29ycmVjdGlvbnM/CiAgICAgICovCiAgICAgcHVibGljIHZvaWQgdGVzdEFjY2VudHMoKSB7Ci0gICAgICAgIGFzc2VydFRydWUoaXNEZWZhdWx0Q29ycmVjdGlvbigibmlubyIsICJuaVx1MDBGMW8iKSk7IC8vIG5plm8KLSAgICAgICAgYXNzZXJ0VHJ1ZShpc0RlZmF1bHRDb3JyZWN0aW9uKCJuaW1vIiwgIm5pXHUwMEYxbyIpKTsgLy8gbmmWbwotICAgICAgICBhc3NlcnRUcnVlKGlzRGVmYXVsdENvcnJlY3Rpb24oIm1hcmlhIiwgIk1hclx1MDBFRGEiKSk7IC8vIE1hcpJhCisgICAgICAgIC8vIG5pPExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggVElMREU+bworICAgICAgICBhc3NlcnRUcnVlKGlzRGVmYXVsdENvcnJlY3Rpb24oIm5pbm8iLCAibmlcdTAwRjFvIikpOworICAgICAgICAvLyBuaTxMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIFRJTERFPm8KKyAgICAgICAgYXNzZXJ0VHJ1ZShpc0RlZmF1bHRDb3JyZWN0aW9uKCJuaW1vIiwgIm5pXHUwMEYxbyIpKTsKKyAgICAgICAgLy8gTWFyPExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEU+YQorICAgICAgICBhc3NlcnRUcnVlKGlzRGVmYXVsdENvcnJlY3Rpb24oIm1hcmlhIiwgIk1hclx1MDBFRGEiKSk7CiAgICAgfQogfQo=