
VGhhbmtzIGZvciB5b3VyIHJlcGx5LCBhbmQgSSB3aWxsIHNlbmQgYSBuZXcgdmVyc2lvbiBvZiB0 aGlzCnBhdGNoLgoKPk9uIFRodSwgSmFuIDA0LCAyMDE4IGF0IDA1OjQ2OjMyIC0wNTAwLCBZaSBX YW5nIHdyb3RlOgo+PiBXZSBjYW4ndCBjbGVhciB2Y3B1cGluIHNldHRpbmdzIG9mIFhNTCBvbmNl IHdlIGRpZCB2Y3B1cGluCj4+IGNvbW1hbmQsIHRoaXMgaXMgbm90IGNvbnZlbmllbnQgdW5kZXIg c29tZSBjb25kaXRpb24gc3VjaAo+PiBhcyBtaWdyYXRpb24uCj4+Cj4+IFRoaXMgcGF0Y2ggaW50 cm9kdWNlcyBjbGVhciBmZWF0dXJlLCB3aGljaCBjYW4gY2xlYXIgdmNwdWluCj4+IHNldHRpbmcg b2YgWE1MLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBZaSBXYW5nIDx3YW5nLnlpNTlAenRlLmNvbS5j bj4KPj4gU2lnbmVkLW9mZi1ieTogWGkgWHUgPHh1LnhpOEB6dGUuY29tLmNuPgo+PiAtLS0KPj4g aW5jbHVkZS9saWJ2aXJ0L2xpYnZpcnQtZG9tYWluLmggfCAxICsKPj4gc3JjL3FlbXUvcWVtdV9k cml2ZXIuYyB8IDI0ICsrKysrKysrKysrKysrKysrKystLS0tLQo+PiB0b29scy92aXJzaC1kb21h aW4uYyB8IDUgKysrKy0KPj4gdG9vbHMvdmlyc2gucG9kIHwgMSArCj4+IDQgZmlsZXMgY2hhbmdl ZCwgMjUgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvbGlidmlydC9saWJ2aXJ0LWRvbWFpbi5oIGIvaW5jbHVkZS9saWJ2aXJ0L2xpYnZpcnQt ZG9tYWluLmgKPj4gaW5kZXggNDA0OGFjZi4uN2IxNzFkZiAxMDA2NDQKPj4gLS0tIGEvaW5jbHVk ZS9saWJ2aXJ0L2xpYnZpcnQtZG9tYWluLmgKPj4gKysrIGIvaW5jbHVkZS9saWJ2aXJ0L2xpYnZp cnQtZG9tYWluLmgKPj4gQEAgLTE4MzcsNiArMTgzNyw3IEBAIHR5cGVkZWYgZW51bSB7Cj4+IFZJ Ul9ET01BSU5fVkNQVV9NQVhJTVVNID0gKDEgPDwgMiksIC8qIE1heCByYXRoZXIgdGhhbiBjdXJy ZW50IGNvdW50ICovCj4+IFZJUl9ET01BSU5fVkNQVV9HVUVTVCA9ICgxIDw8IDMpLCAvKiBNb2Rp Znkgc3RhdGUgb2YgdGhlIGNwdSBpbiB0aGUgZ3Vlc3QgKi8KPj4gVklSX0RPTUFJTl9WQ1BVX0hP VFBMVUdHQUJMRSA9ICgxIDw8IDQpLCAvKiBNYWtlIHZjcHVzIGFkZGVkIGhvdCh1bilwbHVnZ2Fi bGUgKi8KPj4gKyBWSVJfRE9NQUlOX1ZDUFVfQ0xFQVIgPSAoMSA8PCA1KSwgLyogQ2xlYXIgdmNw dXMgcGluIGluZm8gKi8KPgo+VGhlc2UgYXJlIGZsYWdzIGZvciBhIHdyb25nIEFQSSwgeW91J2xs IG5lZWQgdG8gaW50cm9kdWNlIG5ldyBzZXQgb2YKPmZsYWdzIGZvciB0aGUgcGlubmluZyBBUEku Cj4KPj4gfSB2aXJEb21haW5WY3B1RmxhZ3M7Cj4+Cj4+IGludCB2aXJEb21haW5TZXRWY3B1cyAo dmlyRG9tYWluUHRyIGRvbWFpbiwKPj4gZGlmZiAtLWdpdCBhL3NyYy9xZW11L3FlbXVfZHJpdmVy LmMgYi9zcmMvcWVtdS9xZW11X2RyaXZlci5jCj4+IGluZGV4IDk3YjE5NGIuLjllODc1OWYgMTAw NjQ0Cj4+IC0tLSBhL3NyYy9xZW11L3FlbXVfZHJpdmVyLmMKPj4gKysrIGIvc3JjL3FlbXUvcWVt dV9kcml2ZXIuYwo+PiBAQCAtNTAwMSw3ICs1MDAxLDcgQEAgcWVtdURvbWFpblBpblZjcHVMaXZl KHZpckRvbWFpbk9ialB0ciB2bSwKPj4gaW50IHZjcHUsCj4+IHZpclFFTVVEcml2ZXJQdHIgZHJp dmVyLAo+PiB2aXJRRU1VRHJpdmVyQ29uZmlnUHRyIGNmZywKPj4gLSB2aXJCaXRtYXBQdHIgY3B1 bWFwKQo+PiArIHZpckJpdG1hcFB0ciBjcHVtYXAsIGJvb2wgY2xlYXIpCj4KPlBsZWFzZSBhZGhl cmUgdG8gdGhlIGNvZGluZyBzdGFuZGFyZHMuCj4KPj4gewo+PiB2aXJCaXRtYXBQdHIgdG1wbWFw ID0gTlVMTDsKPj4gdmlyRG9tYWluVmNwdURlZlB0ciB2Y3B1aW5mbzsKPj4gQEAgLTUwNDksNyAr NTA0OSwxMiBAQCBxZW11RG9tYWluUGluVmNwdUxpdmUodmlyRG9tYWluT2JqUHRyIHZtLAo+PiB9 Cj4+Cj4+IHZpckJpdG1hcEZyZWUodmNwdWluZm8tPmNwdW1hc2spOwo+PiAtIHZjcHVpbmZvLT5j cHVtYXNrID0gdG1wbWFwOwo+PiArIGlmIChjbGVhcikgewo+PiArIHZpckJpdG1hcEZyZWUodG1w bWFwKTsKPj4gKyB2Y3B1aW5mby0+Y3B1bWFzayA9IE5VTEw7Cj4+ICsgfSBlbHNlIHsKPj4gKyB2 Y3B1aW5mby0+Y3B1bWFzayA9IHRtcG1hcDsKPj4gKyB9Cj4KPlRoaXMgd2lsbCBub3Qgd29yayBh cyBleHBlY3RlZC4gVGhlIEFQSSBzdGlsbCB0YWtlcyB0aGUgcGlubmluZyBtYXAgaW50bwo+YWNj b3VudCB3aGVuIHNldHRpbmcgdGhlIHBpbm5pbmcsIHNvIHNldHRpbmcgJ2NsZWFyJyB3aWxsIG9u bHkgcmVtb3ZlCj50aGUgaW5mb3JtYXRpb24gZnJvbSB0aGUgWE1MIGJ1dCB3aWxsIHN0aWxsIGFw cGx5ICdjcHVtYXAnIGFzIHRoZQo+ZGVzaXJlZCBwaW5uaW5nLgo+Cj5UaGUgQVBJIHNob3VsZCBu b3QgcmVseSBvbiB0aGUgZmFjdCB0aGF0IHRoZSB1c2VyIHBhc3NlcyBpbiBjb3JyZWN0Cj5jcHVt YXAgaW4gdGhpcyBjYXNlLiBZb3UnbGwgbmVlZCB0byBhZGQgbG9naWMgd2hpY2ggd2lsbCBzZXQg dGhlIHBpbm5pbmcKPnRvIHRoZSB2YWx1ZSBhcyBpZiBpdCB3YXMgb21pdHRlZCBpbiB0aGUgWE1M Lgo+Cj4+IHRtcG1hcCA9IE5VTEw7Cj4+Cj4+IGlmICh2aXJEb21haW5TYXZlU3RhdHVzKGRyaXZl ci0+eG1sb3B0LCBjZmctPnN0YXRlRGlyLCB2bSwgZHJpdmVyLT5jYXBzKSA8IDApCj4+IEBAIC01 MDkzLDkgKzUwOTgsMTEgQEAgcWVtdURvbWFpblBpblZjcHVGbGFncyh2aXJEb21haW5QdHIgZG9t LAo+PiB2aXJCaXRtYXBQdHIgcGNwdW1hcCA9IE5VTEw7Cj4+IHZpckRvbWFpblZjcHVEZWZQdHIg dmNwdWluZm8gPSBOVUxMOwo+PiB2aXJRRU1VRHJpdmVyQ29uZmlnUHRyIGNmZyA9IE5VTEw7Cj4+ ICsgYm9vbCBjbGVhciA9IGZhbHNlOwo+Pgo+PiB2aXJDaGVja0ZsYWdzKFZJUl9ET01BSU5fQUZG RUNUX0xJVkUgfAo+PiAtIFZJUl9ET01BSU5fQUZGRUNUX0NPTkZJRywgLTEpOwo+PiArIFZJUl9E T01BSU5fQUZGRUNUX0NPTkZJRyB8Cj4+ICsgVklSX0RPTUFJTl9WQ1BVX0NMRUFSLCAtMSk7Cj4+ Cj4+IGNmZyA9IHZpclFFTVVEcml2ZXJHZXRDb25maWcoZHJpdmVyKTsKPj4KPgo+Wy4uLl0KPgo+ PiBkaWZmIC0tZ2l0IGEvdG9vbHMvdmlyc2gtZG9tYWluLmMgYi90b29scy92aXJzaC1kb21haW4u Ywo+PiBpbmRleCA5M2NiMDIwLi40YmFkOWU3IDEwMDY0NAo+PiAtLS0gYS90b29scy92aXJzaC1k b21haW4uYwo+PiArKysgYi90b29scy92aXJzaC1kb21haW4uYwo+PiBAQCAtNjg2MCw3ICs2ODYw LDcgQEAgdmlyc2hQYXJzZUNQVUxpc3QodnNoQ29udHJvbCAqY3RsLCBpbnQgKmNwdW1hcGxlbiwK Pj4gdW5zaWduZWQgY2hhciAqY3B1bWFwID0gTlVMTDsKPj4gdmlyQml0bWFwUHRyIG1hcCA9IE5V TEw7Cj4+Cj4+IC0gaWYgKGNwdWxpc3RbMF0gPT0gJ3InKSB7Cj4+ICsgaWYgKGNwdWxpc3RbMF0g PT0gJ3InIHx8IFNUUkVRKCJjbGVhciIsIGNwdWxpc3QpKSB7Cj4+IGlmICghKG1hcCA9IHZpckJp dG1hcE5ldyhtYXhjcHUpKSkKPj4gcmV0dXJuIE5VTEw7Cj4+IHZpckJpdG1hcFNldEFsbChtYXAp Owo+PiBAQCAtNjkzOCw2ICs2OTM4LDkgQEAgY21kVmNwdVBpbih2c2hDb250cm9sICpjdGwsIGNv bnN0IHZzaENtZCAqY21kKQo+PiBnb3RvIGNsZWFudXA7Cj4+IH0KPj4KPj4gKyBpZiAoU1RSRVEo Y3B1bGlzdCwgImNsZWFyIikpCj4+ICsgZmxhZ3MgfD0gVklSX0RPTUFJTl9WQ1BVX0NMRUFSOwo+ PiArCj4+IC8qIFBpbiBtb2RlOiBwaW5uaW5nIHNwZWNpZmllZCB2Y3B1IHRvIHNwZWNpZmllZCBw aHlzaWNhbCBjcHVzKi8KPj4gaWYgKCEoY3B1bWFwID0gdmlyc2hQYXJzZUNQVUxpc3QoY3RsLCAm Y3B1bWFwbGVuLCBjcHVsaXN0LCBtYXhjcHUpKSkKPj4gZ290byBjbGVhbnVwOwo+PiBkaWZmIC0t Z2l0IGEvdG9vbHMvdmlyc2gucG9kIGIvdG9vbHMvdmlyc2gucG9kCj4+IGluZGV4IDY5Y2M0MjMu LmNhYWEyMzAgMTAwNjQ0Cj4+IC0tLSBhL3Rvb2xzL3ZpcnNoLnBvZAo+PiArKysgYi90b29scy92 aXJzaC5wb2QKPj4gQEAgLTI4NTcsNiArMjg1Nyw3IEBAIEk8Y3B1bGlzdD4gaXMgYSBsaXN0IG9m IHBoeXNpY2FsIENQVSBudW1iZXJzLiBJdHMgc3ludGF4IGlzIGEgY29tbWEKPj4gc2VwYXJhdGVk IGxpc3QgYW5kIGEgc3BlY2lhbCBtYXJrdXAgdXNpbmcgJy0nIGFuZCAnXicgKGV4LiAnMC00Jywg JzAtMyxeMicpIGNhbgo+PiBhbHNvIGJlIGFsbG93ZWQuIFRoZSAnLScgZGVub3RlcyB0aGUgcmFu Z2UgYW5kIHRoZSAnXicgZGVub3RlcyBleGNsdXNpdmUuCj4+IEZvciBwaW5uaW5nIHRoZSBJPHZj cHU+IHRvIGFsbCBwaHlzaWNhbCBjcHVzIHNwZWNpZnkgJ3InIGFzIGEgSTxjcHVsaXN0Pi4KPj4g K0ZvciBjbGVhcmluZyBwaW5uaW5nIGluZm8sIHNwZWNpZnkgJ2NsZWFyJyBhcyBhIEk8Y3B1bGlz dD4uCj4KPlRoZSBvdGhlciBzcGVjaWFsIHZhbHVlIGlzICdyJyBzbyBJIHRoaW5rIHRoaXMgc2hv dWxkIGFsc28gYmUgYSBzaW5nbGUKPmxldHRlciBvcHRpb24uIE9yIGJldHRlciBhIHN3aXRjaCBi eSBpdHNlbGYuCgoKLS0tCkJlc3Qgd2lzaGVzCllpIFdhbmc=