T24gTWl0dHdvY2gsIDE5LiBNw6RyeiAyMDE0IDAwOjAwOjE1IENFU1QsIEx1aWdpIFRvc2Nhbm8g d3JvdGU6Cgo+IFllcywgYnV0IGl0J3MgbW9yZSBhIHdvcmthcm91bmQuIEl0IHdvdWxkIGJlIGlu dGVyZXN0aW5nIHRvIGtub3cgd2h5IHRoYXQKPiBzdHJpbmcgKHdoaWNoIHNob3VsZCBjb250YWlu IHNvbWUgdmFsdWUsIG1heWJlKSBpcyBOVUxMLgoKU2VlbXMgdGhpcyBjYW4gaGFwcGVuOgpodHRw Oi8vaWRldmFwcHMuY29tL2ZvcnVtL3Nob3d0aHJlYWQucGhwP3RpZD02MjUKCkBNYXJrbwppbiBr ZGVsaWJzL2tkZWNvcmUvbG9jYWxpemF0aW9uL2tsb2NhbGVfbWFjLmNwcCBmaW5kClFTdHJpbmcg S0xvY2FsZU1hY1ByaXZhdGU6Om1hY0xvY2FsZVZhbHVlKCBDRlN0cmluZ1JlZiBrZXkgKSBjb25z dAp7CiAgICByZXR1cm4gY29udmVydF9DRlN0cmluZ190b19RU3RyaW5nKCBDRlN0cmluZ1JlZigg Q0ZMb2NhbGVHZXRWYWx1ZSggbV9tYWNMb2NhbGUsIGtleSApICkgKTsKfQoKYW5kIGNoYW5nZSBp dCB0bwoKUVN0cmluZyBLTG9jYWxlTWFjUHJpdmF0ZTo6bWFjTG9jYWxlVmFsdWUoIENGU3RyaW5n UmVmIGtleSApIGNvbnN0CnsKICAgIENGU3RyaW5nUmVmIHN0clJlZiA9IENGU3RyaW5nUmVmKCBD RkxvY2FsZUdldFZhbHVlKCBtX21hY0xvY2FsZSwga2V5ICkgKTsKICAgIHFEZWJ1ZygpIDw8ICIt LS0tLSI7CiAgICBDRlNob3coa2V5KTsKICAgIENGU2hvdyhzdHJSZWYpOwogICAgcURlYnVnKCkg PDwgIj09PT0iOwogICAgcmV0dXJuIGNvbnZlcnRfQ0ZTdHJpbmdfdG9fUVN0cmluZyhzdHJSZWYp Owp9CgphbmQgaW4ga2RlbGlicy9rZGVjb3JlL2tlcm5lbC9ra2VybmVsX21hYy5jcHAgZmluZCAo b24gdGhlIHZlcnkgdG9wKQoKClFTdHJpbmcgY29udmVydF9DRlN0cmluZ190b19RU3RyaW5nKENG U3RyaW5nUmVmIHN0cikgeworICAgIGlmIChzdHIgPT0gTlVMTCkgeworICAgICAgICBxRGVidWco KSA8PCAiVGhpcyB3b3VsZCBoYXZlIGNyYXNoZWQuIjsKKyAgICAgICAgcmV0dXJuIFFTdHJpbmco KTsKKyAgICB9CiAgICBDRkluZGV4IGxlbmd0aCA9IENGU3RyaW5nR2V0TGVuZ3RoKHN0cik7CiAg ICBjb25zdCBVbmlDaGFyICpjaGFycyA9IENGU3RyaW5nR2V0Q2hhcmFjdGVyc1B0cihzdHIpOwog ICAgaWYgKGNoYXJzKQogICAgICAgIHJldHVybiBRU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u c3QgUUNoYXIgKj4oY2hhcnMpLCBsZW5ndGgpOwoKICAgIFFWYXJMZW5ndGhBcnJheTxVbmlDaGFy PiBidWZmZXIobGVuZ3RoKTsKICAgIENGU3RyaW5nR2V0Q2hhcmFjdGVycyhzdHIsIENGUmFuZ2VN YWtlKDAsIGxlbmd0aCksIGJ1ZmZlci5kYXRhKCkpOwogICAgcmV0dXJuIFFTdHJpbmcocmVpbnRl cnByZXRfY2FzdDxjb25zdCBRQ2hhciAqPihidWZmZXIuY29uc3REYXRhKCkpLCBsZW5ndGgpOwp9 CgpDaGVlcnMsClRob21hcwoKPj4gVmlzaXQgaHR0cDovL21haWwua2RlLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2tkZS1kZXZlbCN1bnN1YiB0byB1bnN1YnNjcmliZSA8PAo=