RnJlZXNjYWxlIE1QQzc0NDhocGMyIChUYWlnYSkgYm9hcmQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCkNyZWF0ZWQgMDgvMTEvMjAwNiBSb3kgWmFuZwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpNUEM3NDQ4aHBjMiAoVGFpZ2EpIGJvYXJkIGlzIGEgaGlnaC1wZXJmb3JtYW5jZSBQb3dlclBDIHNlcnZlciByZWZlcmVuY2UKZGVzaWduLCB3aGljaCBpcyBvcHRpbWl6ZWQgZm9yIGhpZ2ggc3BlZWQgdGhyb3VnaHB1dCBiZXR3ZWVuIHRoZSBwcm9jZXNzb3IgYW5kCnRoZSBtZW1vcnksIGRpc2sgZHJpdmUgYW5kIEV0aGVybmV0IHBvcnQgc3Vic3lzdGVtcy4KCk1QQzc0NDhocGMyKFRhaWdhKSBpcyBkZXNpZ25lZCB0byB0aGUgbWljcm8tQVRYIGNoYXNzaXMsIGFsbG93aW5nIGl0IHRvIGJlCnVzZWQgaW4gMVUgb3IgMlUgcmFjay1tb3VudCBjaGFzc2lzoa8sIGFzIHdlbGwgYXMgaW4gc3RhbmRhcmQgQVRYL01pY3JvLUFUWApjaGFzc2lzLgoKQnVpbGRpbmcgVS1Cb290Ci0tLS0tLS0tLS0tLS0tLS0tLQpUaGUgbXBjNzQ0OGhwYzIgY29kZSBiYXNlIGlzIGtub3duIHRvIGNvbXBpbGUgdXNpbmc6CglCaW51dGlscyAyLjE1LCBHY2MgMy40LjMsIEdsaWJjIDIuMy4zCgoJJCBtYWtlIG1wYzc0NDhocGMyX2NvbmZpZwoJQ29uZmlndXJpbmcgZm9yIG1wYzc0NDhocGMyIGJvYXJkLi4uCgoJJCBtYWtlCgpNZW1vcnkgTWFwCi0tLS0tLS0tLS0KClRoZSBtZW1vcnkgbWFwIGlzIHNldHVwIGZvciBMaW51eCB0byBvcGVyYXRlIHByb3Blcmx5LgoKVGhlIG1hcHBpbmcgaXM6CgoJUmFuZ2UgU3RhcnQJUmFuZ2UgRW5kCURlZmluaXRpb24JCQlTaXplCgoJMHgwMDAwXzAwMDAJMHg3ZmZmX2ZmZmYJRERSCQkJCTJHCgkweGUwMDBfMDAwMAkweGU3ZmZfZmZmZglQQ0kgTWVtb3J5CQkJMTI4TQoJMHhmYTAwXzAwMDAJMHhmYWZmX2ZmZmYJUENJIElPCQkJCTE2TQoJMHhmYjAwXzAwMDAJMHhmYmZmX2ZmZmYJUENJIENvbmZpZwkJCTE2TQoJMHhmYzAwXzAwMDAJMHhmYzBmX2ZmZmYJTlZSQU0vQ0FETVVTCQkJMU0KCTB4ZmUwMF8wMDAwCTB4ZmVmZl9mZmZmCVByb21KZXQJCQkJMTZNCgkweGZmMDBfMDAwMAkweGZmODBfMDAwMAlGTEFTSCAoYm9vdCBmbGFzaCkJCThNCgkweGZmODBfMDAwMAkweGZmZmZfZmZmZglGTEFTSCAoc2Vjb25kIGhhbGYgZmxhc2gpCThNCgpVc2luZyBGbGFzaAotLS0tLS0tLS0tLQoKVGhlIE1QQzc0NDhocGMyIGJvYXJkIGhhcyB0d28gImJhbmtzIiBvZiBmbGFzaCwgZWFjaCA4TUIgaW4gc2l6ZQooMl4yMyA9IDB4MDA4MDAwMDApLgoKTm90ZTogdGhlICJiYW5rIiBoZXJlIHJlZmVycyB0byBoYWxmIG9mIHRoZSBmbGFzaC4gSW4gZmFjdCwgdGhlcmUgaXMgb25seSBvbmUKYmFuayBvZiBmbGFzaCwgd2hpY2ggaXMgZGl2aWRlZCBpbnRvIGxvdyBhbmQgaGlnaCBoYWxmLiBFYWNoIGlzIGNvbnRyb2xsZWQgYnkKdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IG9mIHRoZSBhZGRyZXNzIGJ1cy4gVGhlIHNvIGNhbGxlZCAiYmFuayIgaXMgb25seSBmb3IKY29udmVuaWVuY2UuCgpUaGVyZSBpcyBhIHN3aXRjaCB3aGljaCBhbGxvd3MgdGhlICJiYW5rIiB0byBiZSBzZWxlY3RlZC4gIFRoZSBzd2l0Y2gKc2V0dGluZ3MgZm9yIHVwZGF0aW5nIGZsYXNoIGFyZSBnaXZlbiBiZWxvdy4KClRoZSB1LWJvb3QgY29tbWFuZHMgZm9yIGNvcHlpbmcgdGhlIGJvb3QtYmFuayBpbnRvIHRoZSBzZWNvbmRhcnkgYmFuayBhcmUKYXMgZm9sbG93czoKCgllcmFzZSBmZjgwMDAwMCBmZjg4MDAwMAoJY3AuYiBmZjAwMDAwMCBmZjgwMDAwMCA4MDAwMAoKVS1ib290IGNvbW1hbmRzIGZvciBkb3dubG9hZGluZyBhbiBpbWFnZSB2aWEgdGZ0cCBhbmQgZmxhc2hpbmcKaXQgaW50byB0aGUgc2Vjb25kYXJ5IGJhbms6CgoJdGZ0cCAxMDAwMCA8dS1ib290LmJpbi5pbWFnZT4KCWVyYXNlIGZmMDAwMDAwIGZmMDgwMDAwCgljcC5iIDEwMDAwIGZmMDAwMDAwIDgwMDAwCgpBZnRlciBjb3B5aW5nIHRoZSBpbWFnZSBpbnRvIHRoZSBzZWNvbmQgYmFuayBvZiBmbGFzaCwgYmUgc3VyZSB0byB0b2dnbGUKU1czWzRdIG9uIGJvYXJkIGJlZm9yZSByZXNldHRpbmcgdGhlIGJvYXJkIGluIG9yZGVyIHRvIHNldCB0aGUKc2Vjb25kYXJ5IGJhbmsgYXMgdGhlIGJvb3QtYmFuay4KCkJvYXJkIFN3aXRjaGVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk1vc3Qgc3dpdGNoZXMgb24gdGhlIGJvYXJkIHNob3VsZCBub3QgYmUgY2hhbmdlZC4gIFRoZSBtb3N0IGZyZXF1ZW50CnVzZXItc2V0dGFibGUgc3dpdGNoZXMgb24gdGhlIGJvYXJkIGFyZSB1c2VkIHRvIGNvbmZpZ3VyZQp0aGUgZmxhc2ggYmFua3MgYW5kIGRldGVybWluaW5nIHRoZSBQQ0kgZnJlcXVlbmN5LgoKU1cxWzEtNV06IFByb2Nlc3NvciBjb3JlIHZvbHRhZ2UKCgkxMjM0NQkJQ29yZSBWb2x0YWdlCgktLS0tLQoJU1cxPTAxMTExCTEuMDAwVi4KCVNXMT0wMTEwMQkxLjEwMFYuCglTVzE9MDEwMTEJMS4yMDBWLgoJU1cxPTAxMDAxCTEuMzAwViBvbmx5IGZvciBNUEM3NDQ3QS4KCgpTVzJbMS02XTogQ1BVIGNvcmUgZnJlcXVlbmN5CgoJCUNQVSBDb3JlIEZyZXF1ZW5jeSAoTUh6KQoJCQlCdXMgRnJlcXVlbmN5CgkxMjM0NTYJCTEwMAkxMzMJMTY3CTIwMAlSYXRpbwoKCS0tLS0tLQoJU1cyPTEwMTEwMAk1MDAJNjY3CTgzMwkxMDAwCTV4CglTVzI9MTAwMTAwCTU1MAk3MzMJOTE3CTExMDAJNS41eAoJU1cyPTExMDEwMAk2MDAJODAwCTEwMDAJMTIwMAk2eAoJU1cyPTAxMDEwMAk2NTAJODY2CTEwODMJMTMwMAk2LjV4CglTVzI9MDAxMDAwCTcwMAk5MzAJMTE2NwkxNDAwCTd4CglTVzI9MDAwMTAwCTc1MAkxMDAwCTEyNTAJMTUwMAk3LjV4CglTVzI9MTEwMDAwCTgwMAkxMDY2CTEzMzMJMTYwMAk4eAoJU1cyPTAxMTAwMAk4NTAJMTMzMwkxNDE3CTE3MDAJOC41eCBvbmx5IGZvciBNUEM3NDQ3QQoJU1cyPTAxMTExMAk5MDAJMTIwMAkxNTAwCTE4MDAJOXgKClRoaXMgdGFibGUgc2hvd3Mgb25seSBhIHN1YnNldCBvZiBhdmFpbGFibGUgZnJlcXVlbmN5IG9wdGlvbnM7IHNlZSB0aGUgQ1BVCmhhcmR3YXJlIHNwZWNpZmljYXRpb25zIGZvciBtb3JlIGluZm9ybWF0aW9uLgoKU1cyWzctOF06IEJ1cyBQcm90b2NvbCBhbmQgQ1BVIFJlc2V0IE9wdGlvbgoKCTcKCS0KCVNXMj0wCQlTeXN0ZW0gYnVzIHVzZXMgTVBYIGJ1cyBwcm90b2NvbAoJU1cyPTEJCVN5c3RlbSBidXMgdXNlcyA2MHggYnVzIHByb3RvY29sCgoJOAoJLQoJU1cyPTAJCVRTSTEwOCBjYW4gY2F1c2UgQ1BVIHJlc2V0CglTVzI9MQkJVFNJMTA4IGNhbiBub3QgY2F1c2UgQ1BVIHJlc2V0CgpTVzNbMS04XSBzeXN0ZW0gb3B0aW9ucwoKCTEyMwoJLS0tCglTVzM9eHh4CQlDb25uZWN0ZWQgdG8gR1BJT1swOjJdIG9uIFRTSTEwOAoKCTQKCS0KCVNXMz0wCQlDUFUgYm9vdHMgZnJvbSBsb3cgaGFsZiBvZiBmbGFzaAoJU1czPTEJCUNQVSBib290cyBmcm9tIGhpZ2ggaGFsZiBvZiBmbGFzaAoKCTUKCS0KCVNXMz0wCQlTQVRBIGFuZCBzbG90MiBjb25uZWN0ZWQgdG8gUENJIGJ1cwoJU1czPTEJCU9ubHkgc2xvdDEgY29ubmVjdGVkIHRvIFBDSSBidXMKCgk2CgktCglTVzM9MAkJVVNCIGNvbm5lY3RlZCB0byBQQ0kgYnVzCglTVzM9MQkJVVNCIGRpc2Nvbm5lY3RlZCBmcm9tIFBDSSBidXMKCgk3CgktCglTVzM9MAkJRmxhc2ggaXMgd3JpdGUgcHJvdGVjdGVkCglTVzM9MQkJRmxhc2ggaXMgTk9UIHdyaXRlIHByb3RlY3RlZAoKCTgKCS0KCVNXMz0wCQlDUFUgd2lsbCBib290IGZyb20gZmxhc2gKCVNXMz0xCQlDUFUgd2lsbCBib290IGZyb20gUHJvbUpldAoKU1c0WzEtM106IFN5c3RlbSBidXMgZnJlcXVlbmN5CgoJCQlCdXMgRnJlcXVlbmN5IChNSHopCgktLS0KCVNXND0wMTAJCQkxODMKCVNXND0wMTEJCQkxMDAKCVNXND0xMDAJCQkxMzMKCVNXND0xMDEJCQkxNjYgb25seSBmb3IgTVBDNzQ0N0EKCVNXND0xMTAJCQkyMDAgb25seSBmb3IgTVBDNzQ0OAoJb3RoZXJzCQkJcmVzZXJ2ZWQKClNXNFs0LTZdOiBERFIyIFNEUkFNIGZyZXF1ZW5jeQoKCQkJQnVzIEZyZXF1ZW5jeSAoTUh6KQoJLS0tCglTVzQ9MDAwCQlleHRlcm5hbCBjbG9jawoJU1c0PTAxMQkJc3lzdGVtIGNsb2NrCglTVzQ9MTAwCQkxMzMKCVNXND0xMDEJCTE2NgoJU1c0PTExMAkJMjAwCglvdGhlcnMJCXJlc2VydmVkCgpTVzRbNy04XTogUENJL1BDSS1YIGZyZXF1ZW5jeSBjb250cm9sCgk3CgktCglTVzQ9MAkJUENJL1BDSS1YIGJ1cyBvcGVyYXRlcyBub3JtYWxseQoJU1c0PTEJCVBDSSBidXMgZm9yY2VkIHRvIFBDSS0zMyBtb2RlCgoJOAoJLQoJU1c0PTAJCVBDSS1YIG1vZGUgYXQgMTMzIE1IeiBhbGxvd2VkCglTVzQ9MQkJUENJLVggbW9kZSBsaW1pdGVkIHRvIDEwMCBNSHoK