ClB5dGhvblNjcmlwdAotLS0tLS0tLS0tLS0KdjAuNSBiZXRhIDEgMjQvMDQvOTgKCmF1dGhvcjogQmlsbCBCZWRmb3JkLCA8YmlsbGJAbW91c2EuZGVtb24uY28udWs+CgpUaGlzIHN1aXRlIG9mIG1vZHVsZXMgaXMgYSBmaXJzdCBhdHRlbXB0IGF0IHdyaXRpbmcgYSBtb3JlIHVzZXIgZnJpZW5kbHkgCnB5dGhvbi9hcHBsZWV2ZW50IGludGVyZmFjZS4gVGhlIGZpbGVzIGluIHRoZSBzdWl0ZSBhcmU6CgpQeXRob25TY3JpcHQKLS0tLS0tLS0tLS0tCgpMb2FkcyB0aHJlZSBkaWN0aW9uYXJpZXMgZ2VuZXJhdGVkIGJ5IGdldGFldGUgaW50byBfX2RpY3RfXydzIG9mIHRocmVlIApjbGFzc2VzIGFuZCB0aHVzIGdpdmVzIHVzIGRpcmVjdCBhc3Nlc3MgdG8gYWxsIHRoZSBtZXRob2RzIGluIHRoZSBhZXRlLiAgCkVhY2ggbWV0aG9kIG5vdyBjb250YWlucyBhbGwgdGhlIGluZm9ybWF0aW9uIG5lZWRlZCB0byBidWlsZCBhcHBsZSBldmVudHMuCgpUaGUgZ2VuZXJhbCB1c2FnZSBpcwoKPj4+UHl0aG9uU2NyaXB0LlBzU2NyaXB0KFNJR05BVFVSRSwgVElNRU9VVCwgSUdOT1JJTkcpIAoKd2hlcmUgClNJR05BVFVSRSBpcyB0aGUgdGFyZ2V0IGFwcGxpY2F0aW9uClRJTUVPVVQgaXMgaW4gdGlja3MKYW5kIElHTk9SSU5HIGlzIGEgYm9vbGVhbiBhbmQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzY3JpcHQgd2FpdHMgZm9yIGEgcmVwbHkgCmZyb20gdGhlIHRhcmdldCBiZWZvcmUgZ29pbmcgb24gdG8gdGhlIG5leHQgZXZlbnQgCgo+Pj5QeXRob25TY3JpcHQuUHlTY3JpcHQoRXZlbnQsIE9iamVjdCwga2V5d2RhcmcxLi4uLCBrZXl3ZGFyZzIuLi5ldGMpCgpPYmplY3QgaXMgYSBhcHBsZWV2ZW50IG9iamVjdCBzcGVjaWZpZXIgYW5kIGlzIG9mIHRoZSBmb3JtCgpQeXRob25TY3JpcHQuUHNDbGFzcy5DbGFzczEoYXJnKS5DbGFzczIoYXJnKYouUHJvcGVydHkoKQoKQWxsIGFwcGxlc2NyaXB0IGV2ZW50LCBjbGFzcyBhbmQgcHJvcGVydHkgbmFtZXMgYXJlIGNhcGl0YWxpc2VkIHRvIApkaXN0aW5ndWlzaCB0aGVtIGZyb20gcHl0aG9uIG1ldGhvZHMuCgpnZXRhZXRlCi0tLS0tLS0KClJlYWRzIHRoZSBhZXRlIG9mIHRoZSB0YXJnZXQgYXBwbGljYXRpb24gYW5kIHJldHVybnMgaXQgYXMgYSBsaXN0IG9mIHRocmVlIApkaWN0aW9uYXJpZXMsIHdoaWNoIHJlcHJlc2VudCBhbGwgdGhlIGV2ZW50cywgcHJvcGVydGllcyBhbmQgZW51bWVyYXRpb24gaW4gCnRoZSBhZXRlLiAgKHRoZSBmb3VydGggZGljdGlvbmFyeSwgY29tcGFyaXNvbnMsIGhhcyBuZXZlciBiZWVuIGltcGxlbWVudGVkIAppbiBhcHBsZXNjcmlwdCBzbyBJIGhhdmUgbm90IHVzZWQgaXQpIEl0IGFsc28gcmVhZHMgdGhlIGFwcGxlc2NyaXB0IGFldXQgCmFuZCBhZGRzIGFueSBzdWl0ZXMgdGhhdCBhcmUgbWlzc2luZyAoaWUgd2hlcmUgdGhlIGFwcGxpY2F0aW9uIGF1dGhvciBoYXMgCnNldCBoaXMgc3VpdGUgdG8gaW5oZXJpdCBmcm9tIHRoZSBhZXV0LikgIGFuZCB0aGUgYXBwbGVzY3JpcHQgc3VpdGUsIHdoaWNoIApnaXZlcyB0aGUgbGFuZ3VhZ2UgbWV0aG9kcwoKcHJpbnRhZXRlCi0tLS0tLS0tLQoKUHJvZHVjZXMgYSB0ZXh0IGZpbGUgd2l0aCB0aGUgYWV0ZSBzZXQgb3V0IGluIGEgaHVtYW4gcmVhZGFibGUgZm9ybSwgCnNpbWlsYXIgdG8gdGhlIE9wZW4gRGljdGlvbmFyeSBjb21tYW5kIGluIHRoZSBhcHBsZXNjcmlwdCBlZGl0b3IuCgoKYmFldG9vbHMsIGJhZXBhY2ssIGJhZXR5cGVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhlc2UgYXJlIGRpcmVjdCBlcXVpdmFsZW50cyBvZiBhZXRvb2xzLCBhZXBhY2ssIGFldHlwZXMgaW4gdGhlIHN0YW5kYXJkIApkaXN0cmlidXRpb24uICBTb21lIG1ldGhvZHMgYW5kIGNsYXNzZXMgaGF2ZSBiZWVuIGVuaGFuY2VkIG90aGVycyBhcmUgCnJlZHVuZGFudAoKUHlTY3JpcHRUZXN0LCB0ZXN0ZXVkb3JhCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQSBjb3VwbGUgb2YgdGVzdCBzY3JpcHRzLiAgVGVzdGV1ZG9yYSBpcyBhbiB1cGRhdGVkIHZlcnNpb24gb2YgdGhlIG9uZSBpbiAKdGhlIHN0YW5kYXJkIGRpc3RyaWJ1dGlvbi4KCSAKCSAKCSAKCSAKCSAKU3RpbGwgVG8gRG8gKGluIG5vIHBhcnRpY3VsYXIgb3JkZXIpCi0tLS0tLS0tLS0tCgpUaGVzZSBtb2R1bGVzIGFyZSBtdWNoIHNsb3dlciB0aGFuIGFwcGxlc2NyaXB0LiAgSSBiZWxpZXZlIHRoZXkgY291bGQgYmUgCm1hZGUgZmFzdGVyIGJ5IHJld3JpdGluZyB0aGUgYWV0ZSBwYXJzZXIgaW4gZ2V0YWV0ZSBhbmQvb3IgYnkgcHV0dGluZyBpbiAKc29tZSBmb3JtIG9mIHBlcnNpc3RlbnQgc3RvcmFnZSBzbyB0aGF0IHRoZSBjbGFzcyBkaWN0aW9uYXJpZXMgY2FuIGJlIGNhY2hlZC4KCSAKVGhlIHBhcnNpbmcgb2YgdGhlIGFwcGxlZXZlbnQgcmVwbGllcyBuZWVkIHJld3JpdGluZy4KClN1cHBvcnQgZm9yIHRoZSB1c2Ugb2Ygc2NyaXB0aW5nIGFkZGl0aW9ucy4KCkEgUHl0aG9uIGFldXQgbmVlZHMgdG8gYmUgd3JpdHRlbiwgbXVjaCBvZiB0aGUgYXBwbGVzY3JpcHQgb25lIGlzIHJlZHVuZGFudCAKaW4gcHl0aG9uLgoKUHJvYmFibHkgYSBmZXcgb3RoZXIgdGhpbmdzIEkgaGF2ZW4ndCB0aG91Z2h0IG9mIHlldC4K