PGh0bWw+Cgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1MYW5ndWFnZSIgY29udGVudD0iZW4tdXMiPgo8bWV0YSBuYW1lPSJHRU5FUkFUT1IiIGNvbnRlbnQ9Ik1pY3Jvc29mdCBGcm9udFBhZ2UgNS4wIj4KPG1ldGEgbmFtZT0iUHJvZ0lkIiBjb250ZW50PSJGcm9udFBhZ2UuRWRpdG9yLkRvY3VtZW50Ij4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjUyIj4KPHRpdGxlPkJvb3N0IEZpbGVzeXN0ZW0gTGlicmFyeSBEZXNpZ248L3RpdGxlPgo8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi8uLi8uLi8uLi9kb2Mvc3JjL21pbmltYWwuY3NzIj4KPC9oZWFkPgoKPGJvZHkgYmdjb2xvcj0iI0ZGRkZGRiI+Cgo8aDE+CjxpbWcgYm9yZGVyPSIwIiBzcmM9Ii4uLy4uLy4uLy4uL2Jvb3N0LnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjI3NyIgaGVpZ2h0PSI4NiI+RmlsZXN5c3RlbSAKTGlicmFyeSBEZXNpZ248L2gxPgoKPHA+PGEgaHJlZj0iI0ludHJvZHVjdGlvbiI+SW50cm9kdWN0aW9uPC9hPjxicj4KPGEgaHJlZj0iI1JlcXVpcmVtZW50cyI+UmVxdWlyZW1lbnRzPC9hPjxicj4KPGEgaHJlZj0iI1JlYWxpdGllcyI+UmVhbGl0aWVzPC9hPjxicj4KPGEgaHJlZj0iI1JhdGlvbmFsZSI+UmF0aW9uYWxlPC9hPjxicj4KPGEgaHJlZj0iI0FiYW5kb25lZF9EZXNpZ25zIj5BYmFuZG9uZWRfRGVzaWduczwvYT48YnI+CjxhIGhyZWY9IiNSZWZlcmVuY2VzIj5SZWZlcmVuY2VzPC9hPjwvcD4KCjxoMj48YSBuYW1lPSJJbnRyb2R1Y3Rpb24iPkludHJvZHVjdGlvbjwvYT48L2gyPgoKPHA+VGhlIHByaW1hcnkgbW90aXZhdGlvbiBmb3IgYmVnaW5uaW5nIHdvcmsgb24gdGhlIEZpbGVzeXN0ZW0gTGlicmFyeSB3YXMgCmZydXN0cmF0aW9uIHdpdGggQm9vc3QgYWRtaW5pc3RyYXRpdmUgdG9vbHMuJm5ic3A7IFNjcmlwdHMgd2VyZSB3cml0dGVuIGluIApQeXRob24sIFBlcmwsIEJhc2gsIGFuZCBXaW5kb3dzIGNvbW1hbmQgbGFuZ3VhZ2VzLiZuYnNwOyBUaGVyZSB3YXMgbm8gc2luZ2xlIApzY3JpcHRpbmcgbGFuZ3VhZ2UgZmFtaWxpYXIgYW5kIGFjY2VwdGFibGUgdG8gYWxsIEJvb3N0IGFkbWluaXN0cmF0b3JzLiBZZXQgdGhleSAKd2VyZSBhbGwgc2tpbGxlZCBDKysgcHJvZ3JhbW1lcnMgLSB3aHkgY291bGRuJ3QgQysrIGJlIHVzZWQgYXMgdGhlIHNjcmlwdGluZyAKbGFuZ3VhZ2U/PC9wPgoKPHA+VGhlIGtleSBmZWF0dXJlIEMrKyBsYWNrZWQgZm9yIHNjcmlwdC1saWtlIGFwcGxpY2F0aW9ucyB3YXMgdGhlIGFiaWxpdHkgdG8gCnBlcmZvcm0gcG9ydGFibGUgZmlsZXN5c3RlbSBvcGVyYXRpb25zIG9uIGRpcmVjdG9yaWVzIGFuZCB0aGVpciBjb250ZW50cy4gVGhlIApGaWxlc3lzdGVtIExpYnJhcnkgd2FzIGRldmVsb3BlZCB0byBmaWxsIHRoYXQgdm9pZC48L3A+Cgo8cD5UaGUgaW50ZW50IGlzIG5vdCB0byBjb21wZXRlIHdpdGggdHJhZGl0aW9uYWwgc2NyaXB0aW5nIGxhbmd1YWdlcywgYnV0IHRvIApwcm92aWRlIGEgc29sdXRpb24gZm9yIHNpdHVhdGlvbnMgd2hlcmUgQysrIGlzIGFscmVhZHkgdGhlIGxhbmd1YWdlIApvZiBjaG9pY2UuLjwvcD4KCjxoMj48YSBuYW1lPSJSZXF1aXJlbWVudHMiPlJlcXVpcmVtZW50czwvYT48L2gyPgo8dWw+CiAgPGxpPkJlIGFibGUgdG8gd3JpdGUgcG9ydGFibGUgc2NyaXB0LXN0eWxlIGZpbGVzeXN0ZW0gb3BlcmF0aW9ucyBpbiBtb2Rlcm4gCiAgQysrLjxicj4KICA8YnI+CiAgUmF0aW9uYWxlOiBUaGlzIGlzIGEgY29tbW9uIHByb2dyYW1taW5nIG5lZWQuIEl0IGlzIGJvdGggYW4gCiAgZW1iYXJyYXNzbWVudCBhbmQgYSBoYXJkc2hpcCB0aGF0IHRoaXMgaXMgbm90IHBvc3NpYmxlIHdpdGggZWl0aGVyIHRoZSBjdXJyZW50IAogIEMrKyBvciBCb29zdCBsaWJyYXJpZXMuJm5ic3A7IFRoZSBuZWVkIGlzIHBhcnRpY3VsYXJseSBhY3V0ZSAKICB3aGVuIEMrKyBpcyB0aGUgb25seSB0b29sc2V0IGFsbG93ZWQgaW4gdGhlIHRvb2wgY2hhaW4uJm5ic3A7IEZpbGUgc3lzdGVtIAogIG9wZXJhdGlvbnMgYXJlIHByb3ZpZGVkIGJ5IG1hbnkgbGFuZ3VhZ2VzJm5ic3A7dXNlZCBvbiBtdWx0aXBsZSBwbGF0Zm9ybXMsIAogIHN1Y2ggYXMgUGVybCBhbmQgUHl0aG9uLCBhcyB3ZWxsIGFzIGJ5IG1hbnkgcGxhdGZvcm0gc3BlY2lmaWMgc2NyaXB0aW5nIAogIGxhbmd1YWdlcy4gQWxsIG9wZXJhdGluZyBzeXN0ZW1zIHByb3ZpZGUgc29tZSBmb3JtIG9mIEFQSSBmb3IgZmlsZXN5c3RlbSAKICBvcGVyYXRpb25zLCBhbmQgdGhlIFBPU0lYIGJpbmRpbmdzIGFyZSBpbmNyZWFzaW5nbHkgYXZhaWxhYmxlIGV2ZW4gb24gCiAgb3BlcmF0aW5nIHN5c3RlbXMgbm90IG5vcm1hbGx5IGFzc29jaWF0ZWQgd2l0aCBQT1NJWCwgc3VjaCBhcyB0aGUgTWFjLCB6L09TLCAKICBvciBPUy8zOTAuPGJyPgombmJzcDs8L2xpPgogIDxsaT5Xb3JrIHdpdGhpbiB0aGUgPGEgaHJlZj0iI1JlYWxpdGllcyI+cmVhbGl0aWVzPC9hPiBkZXNjcmliZWQgYmVsb3cuPGJyPgogIDxicj4KICBSYXRpb25hbGU6IFRoaXMgaXNuJ3QgYSByZXNlYXJjaCBwcm9qZWN0LiBUaGUgbmVlZCBpcyBmb3Igc29tZXRoaW5nIHRoYXQgd29ya3Mgb24gCiAgdG9kYXkncyBwbGF0Zm9ybXMsIGluY2x1ZGluZyBzb21lIG9mIHRoZSBlbWJlZGRlZCBvcGVyYXRpbmcgc3lzdGVtcyAKICB3aXRoIGxpbWl0ZWQgZmlsZSBzeXN0ZW1zLiBCZWNhdXNlIG9mIHRoZSBlbXBoYXNpcyBvbiBwb3J0YWJpbGl0eSwgc3VjaCBhIAogIGxpYnJhcnkgd291bGQgYmUgbXVjaCBtb3JlIHVzZWZ1bCBpZiBzdGFuZGFyZGl6ZWQuIFRoYXQgbWVhbnMgYmVpbmcgYWJsZSB0byAKICB3b3JrIHdpdGggYSBtdWNoIHdpZGVyIHJhbmdlIG9mIHBsYXRmb3JtcyB0aGF0IGp1c3QgVW5peCBvciBXaW5kb3dzIGFuZCB0aGVpciAKICBjbG9uZXMuPGJyPgombmJzcDs8L2xpPgogIDxsaT5Bdm9pZCBkYW5nZXJvdXMgcHJvZ3JhbW1pbmcgcHJhY3RpY2VzLiBQYXJ0aWN1bGFybHksIGFsbC10b28tZWFzeS10by1pZ25vcmUgZXJyb3Igbm90aWZpY2F0aW9ucyAKICBhbmQgdXNlIG9mIGdsb2JhbCB2YXJpYWJsZXMuJm5ic3A7SWYgYSBkYW5nZXJvdXMgZmVhdHVyZSBpcyBwcm92aWRlZCwgaWRlbnRpZnkgaXQgYXMgc3VjaC48YnI+CiAgPGJyPgogIFJhdGlvbmFsZTogTm9ybWFsbHkgdGhpcyB3b3VsZCBiZSBjb3ZlcmVkIGJ5ICZxdW90O3RoZSB1c3VhbCBCb29zdCByZXF1aXJlbWVudHMuLi4mcXVvdDssIAogIGJ1dCBpdCBpcyBtZW50aW9uZWQgZXhwbGljaXRseSBiZWNhdXNlIHRoZSBlcXVpdmFsZW50IG5hdGl2ZSBwbGF0Zm9ybSBhbmQgCiAgc2NyaXB0aW5nIGxhbmd1YWdlIGludGVyZmFjZXMgb2Z0ZW4gZGVwZW5kIG9uIGFsbC10b28tZWFzeS10by1pZ25vcmUgZXJyb3IgCiAgbm90aWZpY2F0aW9ucyBhbmQgZ2xvYmFsIHZhcmlhYmxlcyBsaWtlICZxdW90O2N1cnJlbnQgCiAgd29ya2luZyBkaXJlY3RvcnkmcXVvdDsuPGJyPgombmJzcDs8L2xpPgogIDxsaT5TdHJ1Y3R1cmUgdGhlIGxpYnJhcnkgc28gdGhhdCBpdCBpcyBzdGlsbCB1c2VmdWwgZXZlbiBpZiBzb21lIGZ1bmN0aW9uYWxpdHkgCiAgZG9lcyBub3QgbWFwIHdlbGwgb250byBhIGdpdmVuIHBsYXRmb3JtIG9yIGRpcmVjdG9yeSB0cmVlLiBQYXJ0aWN1bGFybHksIG11Y2ggCiAgdXNlZnVsIGZ1bmN0aW9uYWxpdHkgc2hvdWxkIGJlIHBvcnRhYmxlIGV2ZW4gdG8gZmxhdCAKKG5vbi1oaWVyYXJjaGljYWwpIGZpbGVzeXN0ZW1zLjxicj4KICA8YnI+CiAgUmF0aW9uYWxlOiBNdWNoIGZ1bmN0aW9uYWxpdHkgd2hpY2ggZG9lcyBub3QgCiAgcmVxdWlyZSBhIGhpZXJhcmNoaWNhbCBkaXJlY3Rvcnkgc3RydWN0dXJlIGlzIHN0aWxsIHVzZWZ1bCBvbiBmbGF0LXN0cnVjdHVyZSAKICBmaWxlc3lzdGVtcy4mbmJzcDsgVGhlcmUgYXJlIG1hbnkgc3lzdGVtcywgcGFydGljdWxhcmx5IGVtYmVkZGVkIHN5c3RlbXMsIAogIHdoZXJlIGV2ZW4gdmVyeSBsaW1pdGVkIGZ1bmN0aW9uYWxpdHkgaXMgc3RpbGwgdXNlZnVsLjwvbGk+CjwvdWw+Cjx1bD4KICA8bGk+SW50ZXJmYWNlIHNtb290aGx5IHdpdGggY3VycmVudCBDKysgU3RhbmRhcmQgTGlicmFyeSBpbnB1dC9vdXRwdXQgCiAgZmFjaWxpdGllcy4mbmJzcDsgRm9yIGV4YW1wbGUsIHBhdGhzIHNob3VsZCBiZSAKICBlYXN5IHRvIHVzZSBpbiBzdGQ6OmJhc2ljX2ZzdHJlYW0gY29uc3RydWN0b3JzLjxicj4KICA8YnI+CiAgUmF0aW9uYWxlOiBPbmUgb2YgdGhlIG1vc3QgY29tbW9uIHVzZXMgb2YgZmlsZSBzeXN0ZW0gZnVuY3Rpb25hbGl0eSBpcyB0byAKICBtYW5pcHVsYXRlIHBhdGhzIGZvciBldmVudHVhbCB1c2UgaW4gaW5wdXQvb3V0cHV0IG9wZXJhdGlvbnMuJm5ic3A7IAogIFRodXMgdGhlIG5lZWQgdG8gaW50ZXJmYWNlIHNtb290aGx5IHdpdGggc3RhbmRhcmQgbGlicmFyeSBJL08uPGJyPgombmJzcDs8L2xpPgogIDxsaT5TdWl0YWJsZSBmb3IgZXZlbnR1YWwgc3RhbmRhcmRpemF0aW9uLiBUaGUgaW1wbGljYXRpb24gb2YgdGhpcyByZXF1aXJlbWVudCAKICBpcyB0aGF0IHRoZSBpbnRlcmZhY2UgYmUgY2xvc2UgdG8gbWluaW1hbCwgYW5kIHRoYXQgZ3JlYXQgY2FyZSBiZSB0YWtlIAogIHJlZ2FyZGluZyBwb3J0YWJpbGl0eS48YnI+CiAgPGJyPgogIFJhdGlvbmFsZTogVGhlIGxhY2sgb2YgZmlsZSBzeXN0ZW0gb3BlcmF0aW9ucyBpcyBhIHNlcmlvdXMgaG9sZSAKICBpbiB0aGUgY3VycmVudCBzdGFuZGFyZCwgd2l0aCBubyBvdGhlciBrbm93biBjYW5kaWRhdGVzIHRvIGZpbGwgdGhhdCBob2xlLiAKICBMaWJyYXJpZXMgd2l0aCBlbGFib3JhdGUgaW50ZXJmYWNlcyBhbmQgZGlmZmljdWx0IHRvIHBvcnQgc3BlY2lmaWNhdGlvbnMgYXJlIG11Y2ggbGVzcyBsaWtlbHkgdG8gYmUgYWNjZXB0ZWQgZm9yIAogIHN0YW5kYXJkaXphdGlvbi48YnI+CiZuYnNwOzwvbGk+CiAgPGxpPlRoZSB1c3VhbCBCb29zdCA8YSBocmVmPSJodHRwOi8vd3d3LmJvb3N0Lm9yZy9tb3JlL2xpYl9ndWlkZS5odG0iPnJlcXVpcmVtZW50cyBhbmQgCiAgZ3VpZGVsaW5lczwvYT4gYXBwbHkuPGJyPgombmJzcDs8L2xpPgogIDxsaT5FbmNvdXJhZ2UsIGJ1dCBkbyBub3QgcmVxdWlyZSwgcG9ydGFiaWxpdHkgaW4gcGF0aCBuYW1lcy48YnI+CiAgPGJyPgogIFJhdGlvbmFsZTogRm9yIHBhdGhzIHdoaWNoIG9yaWdpbmF0ZSBmcm9tIHVzZXIgaW5wdXQgaXQgaXMgdW5yZWFzb25hYmxlIHRvIAogIHJlcXVpcmUgcG9ydGFibGUgcGF0aCBzeW50YXguPGJyPgombmJzcDs8L2xpPgogIDxsaT5Bdm9pZCBnaXZpbmcgdGhlIGlsbHVzaW9uIG9mIHBvcnRhYmlsaXR5IHdoZXJlIHBvcnRhYmlsaXR5IGluIGZhY3QgZG9lcyBub3QgCiAgZXhpc3QuPGJyPgogIDxicj4KICBSYXRpb25hbGU6IExlYXZpbmcgaW1wb3J0YW50IGJlaGF2aW9yIHVuc3BlY2lmaWVkIG9yICZxdW90O2ltcGxlbWVudGF0aW9uIGRlZmluZWQmcXVvdDsgZG9lcyBhIAogIGdyZWF0IGRpc3NlcnZpY2UgdG8gcHJvZ3JhbW1lcnMgdXNpbmcgYSBsaWJyYXJ5IGJlY2F1c2UgaXQgbWFrZXMgaXQgYXBwZWFyIAogIHRoYXQgY29kZSByZWx5aW5nIG9uIHRoZSBiZWhhdmlvciBpcyBwb3J0YWJsZSwgd2hlbiBpbiBmYWN0IHRoZXJlIGlzIG5vdGhpbmcgCiAgcG9ydGFibGUgYWJvdXQgaXQuIFRoZSBvbmx5IGNhc2Ugd2hlcmUgc3VjaCB1bmRlci1zcGVjaWZpY2F0aW9uIGlzIGFjY2VwdGFibGUgaXMgd2hlbiBib3RoIHVzZXJzIGFuZCBpbXBsZW1lbnRvcnMga25vdyBmcm9tIAogIG90aGVyIHNvdXJjZXMgZXhhY3RseSB3aGF0IGJlaGF2aW9yIGlzIHJlcXVpcmVkLCB5ZXQgZm9yIHNvbWUgcmVhc29uIGl0IGlzbid0IAogIHBvc3NpYmxlIHRvIHNwZWNpZnkgaXQgZXhhY3RseS48L2xpPgo8L3VsPgo8aDI+PGEgbmFtZT0iUmVhbGl0aWVzIj5SZWFsaXRpZXM8L2E+PC9oMj4KPHVsPgogIDxsaT5Tb21lIG9wZXJhdGluZyBzeXN0ZW1zIGhhdmUgYSBzaW5nbGUgZGlyZWN0b3J5IHRyZWUgcm9vdCwgb3RoZXJzIGhhdmUgCiAgbXVsdGlwbGUgcm9vdHMuPGJyPgombmJzcDs8L2xpPgogIDxsaT5Tb21lIGZpbGUgc3lzdGVtcyBwcm92aWRlIGJvdGggYSBsb25nIGFuZCBzaG9ydCBmb3JtIG9mIGZpbGVuYW1lcy48YnI+CiZuYnNwOzwvbGk+CiAgPGxpPlNvbWUgZmlsZSBzeXN0ZW1zIGhhdmUgZGlmZmVyZW50IHN5bnRheCBmb3IgZmlsZSBwYXRocyBhbmQgZGlyZWN0b3J5IAogIHBhdGhzLjxicj4KJm5ic3A7PC9saT4KICA8bGk+U29tZSBmaWxlIHN5c3RlbXMgaGF2ZSBkaWZmZXJlbnQgcnVsZXMgZm9yIHZhbGlkIGZpbGUgbmFtZXMgYW5kIHZhbGlkIAogIGRpcmVjdG9yeSBuYW1lcy48YnI+CiZuYnNwOzwvbGk+CiAgPGxpPlNvbWUgZmlsZSBzeXN0ZW1zIChJU08tOTY2MCwgbGV2ZWwgMSwgZm9yIGV4YW1wbGUpIHVzZSB2ZXJ5IHJlc3RyaWN0ZWQgCiAgKHNvLWNhbGxlZCA4LjMpIGZpbGUgbmFtZXMuPGJyPgombmJzcDs8L2xpPgogIDxsaT5Tb21lIG9wZXJhdGluZyBzeXN0ZW1zIGFsbG93IGZpbGUgc3lzdGVtcyB3aXRoIGRpZmZlcmVudCAKICBjaGFyYWN0ZXJpc3RpY3MgdG8gYmUgJnF1b3Q7bW91bnRlZCZxdW90OyB3aXRoaW4gYSBkaXJlY3RvcnkgdHJlZS4mbmJzcDsgVGh1cyBhIAogIElTTy05NjYwIG9yIFdpbmRvd3MgCiAgZmlsZSBzeXN0ZW0gbWF5IGVuZCB1cCBhcyBhIHN1Yi10cmVlIG9mIGEgUE9TSVggZGlyZWN0b3J5IHRyZWUuPGJyPgombmJzcDs8L2xpPgogIDxsaT5XaWRlLWNoYXJhY3RlciB2ZXJzaW9ucyBvZiBkaXJlY3RvcnkgYW5kIGZpbGUgb3BlcmF0aW9ucyBhcmUgYXZhaWxhYmxlIG9uIHNvbWUgb3BlcmF0aW5nIAogIHN5c3RlbXMsIGFuZCBub3QgYXZhaWxhYmxlIG9uIG90aGVycy48YnI+CiZuYnNwOzwvbGk+CiAgPGxpPlRoZXJlIGlzIG5vIGxhdyB0aGF0IHNheXMgZGlyZWN0b3J5IGhpZXJhcmNoaWVzIGhhdmUgdG8gYmUgc3BlY2lmaWVkIGluIAogIHRlcm1zIG9mIGxlZnQtdG8tcmlnaHQgZGVjZW50IGZyb20gdGhlIHJvb3QuPGJyPgombmJzcDs8L2xpPgogIDxsaT5Tb21lIGZpbGUgc3lzdGVtcyBoYXZlIGEgY29uY2VwdCBvZiBmaWxlICZxdW90O3ZlcnNpb24gbnVtYmVyJnF1b3Q7IG9yICZxdW90O2dlbmVyYXRpb24gCiAgbnVtYmVyJnF1b3Q7LiZuYnNwOyBTb21lIGRvbid0Ljxicj4KJm5ic3A7PC9saT4KICA8bGk+Tm90IGFsbCBvcGVyYXRpbmcgc3lzdGVtcyB1c2Ugc2luZ2xlIGNoYXJhY3RlciBzZXBhcmF0b3JzIGluIHBhdGggbmFtZXMuJm5ic3A7IFNvbWUgdXNlIAogIHBhaXJlZCBub3RhdGlvbnMuIEEgdHlwaWNhbCBmdWxseS1zcGVjaWZpZWQgT3BlblZNUyBmaWxlbmFtZQogIG1pZ2h0IGxvb2sgc29tZXRoaW5nIGxpa2UgdGhpczo8YnI+CiAgPGJyPgogIDxjb2RlPiZuYnNwOyZuYnNwOyBESVNLJFNDUkFUQ0g6W0dFT1JHRS5QUk9KRUNUMS5EQVRdQklHX0RBVEFfRklMRS5OVFA7NTxicj4KICA8L2NvZGU+PGJyPgogIFRoZSBnZW5lcmFsIE9wZW5WTVMgZm9ybWF0IGlzOjxicj4KICA8YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAKICA8aT5EZXZpY2U6W2RpcmVjdG9yaWVzLmRvdC5zZXBhcmF0ZWRdZmlsZW5hbWUuZXh0ZW5zaW9uO3ZlcnNpb25fbnVtYmVyPC9pPjxicj4KJm5ic3A7PC9saT4KICA8bGk+Rm9yIGNvbW1vbiBmaWxlIHN5c3RlbXMsIGRldGVybWluaW5nIGlmIHR3byBkZXNjcmlwdG9ycyBhcmUgZm9yIHNhbWUgCiAgZW50aXR5IGlzIGV4dHJlbWVseSBkaWZmaWN1bHQgb3IgaW1wb3NzaWJsZS4mbmJzcDsgRm9yIGV4YW1wbGUsIHRoZSBjb25jZXB0IG9mIAogIGVxdWFsaXR5IGNhbiBiZSBkaWZmZXJlbnQgZm9yIGVhY2ggcG9ydGlvbiBvZiBhIHBhdGggLSBzb21lIHBvcnRpb25zIG1heSBiZSAKICBjYXNlIG9yIGxvY2FsZSBzZW5zaXRpdmUsIG90aGVycyBub3QuIENhc2Ugc2Vuc2l0aXZpdHkgaXMgYSBwcm9wZXJ0eSBvZiB0aGUgCiAgcGF0aG5hbWUgaXRzZWxmLCBhbmQgbm90IHRoZSBwbGF0Zm9ybS4gRGV0ZXJtaW5pbmcgY29sbGF0aW5nIHNlcXVlbmNlIGlzIGV2ZW4gCiAgd29yc2UuPGJyPgombmJzcDs8L2xpPgogIDxsaT5SYWNlLWNvbmRpdGlvbnMgbWF5IG9jY3VyLiBEaXJlY3RvcnkgdHJlZXMsIGRpcmVjdG9yaWVzLCBmaWxlcywgYW5kIGZpbGUgYXR0cmlidXRlcyBhcmUgaW4gZWZmZWN0IHNoYXJlZCBiZXR3ZWVuIGFsbCB0aHJlYWRzLCBwcm9jZXNzZXMsIGFuZCBjb21wdXRlcnMgd2hpY2ggaGF2ZSBhY2Nlc3MgdG8gdGhlIAogIGZpbGVzeXN0ZW0uJm5ic3A7IFRoYXQgbWF5IHdlbGwgaW5jbHVkZSBjb21wdXRlcnMgb24gdGhlIG90aGVyIHNpZGUgb2YgdGhlIAogIHdvcmxkIG9yIGluIG9yYml0IGFyb3VuZCB0aGUgd29ybGQuIFRoaXMgaW1wbGllcyB0aGF0IGZpbGUgc3lzdGVtIG9wZXJhdGlvbnMgCiAgbWF5IGZhaWwgaW4gdW5leHBlY3RlZCB3YXlzLiZuYnNwO0ZvciBleGFtcGxlOjxicj4KICA8YnI+CiAgPGNvZGU+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGFzc2VydCggZXhpc3RzKCZxdW90O2ZvbyZxdW90OykgPT0gZXhpc3RzKCZxdW90O2ZvbyZxdW90OykgKTsgCiAgLy8gbWF5IGZhaWwhPGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgYXNzZXJ0KCBpc19kaXJlY3RvcnkoJnF1b3Q7Zm9vJnF1b3Q7KSA9PSBpc19kaXJlY3RvcnkoJnF1b3Q7Zm9vJnF1b3Q7KTsgCiAgLy8gbWF5IGZhaWwhPGJyPgogIDwvY29kZT48YnI+CiAgSW4gdGhlIGZpcnN0IGV4YW1wbGUsIHRoZSBmaWxlIG1heSBoYXZlIGJlZW4gZGVsZXRlZCBiZXR3ZWVuIGNhbGxzIHRvIAogIGV4aXN0cygpLiZuYnNwOyBJbiB0aGUgc2Vjb25kIGV4YW1wbGUsIHRoZSBmaWxlIG1heSBoYXZlIGJlZW4gZGVsZXRlZCBhbmQgdGhlbiAKICByZXBsYWNlZCBieSBhIGRpcmVjdG9yeSBvZiB0aGUgc2FtZSBuYW1lIGJldHdlZW4gdGhlIGNhbGxzIHRvIGlzX2RpcmVjdG9yeSgpLjxicj4KJm5ic3A7PC9saT4KICA8bGk+RXZlbiB0aG91Z2ggYW4gYXBwbGljYXRpb24gbWF5IGJlIHBvcnRhYmxlLCBpdCBzdGlsbCB3aWxsIGhhdmUgdG8gdHJhZmZpYyAKICBpbiBzeXN0ZW0gc3BlY2lmaWMgcGF0aHMgb2NjYXNpb25hbGx5OyB1c2VyIHByb3ZpZGVkIGlucHV0IGlzIGEgY29tbW9uIAogIGV4YW1wbGUuPGJyPgombmJzcDs8L2xpPgogIDxsaT48YSBuYW1lPSJzeW1ib2xpYy1saW5rLXVzZS1jYXNlIj5TeW1ib2xpYzwvYT4gbGlua3MgY2F1c2UgY2Fub25pY2FsIGFuZCAKICBub3JtYWwgZm9ybSBvZiBzb21lIHBhdGhzIHRvIHJlcHJlc2VudCBkaWZmZXJlbnQgZmlsZXMgb3IgZGlyZWN0b3JpZXMuIEZvciAKICBleGFtcGxlLCBnaXZlbiB0aGUgZGlyZWN0b3J5IGhpZXJhcmNoeSA8Y29kZT4vYS9iL2M8L2NvZGU+LCB3aXRoIGEgc3ltYm9saWMgCiAgbGluayBpbiA8Y29kZT4vYTwvY29kZT4gbmFtZWQgPGNvZGU+eDwvY29kZT4mbmJzcDsgcG9pbnRpbmcgdG8gPGNvZGU+Yi9jPC9jb2RlPiwgCiAgdGhlbiB1bmRlciBQT1NJWCBQYXRobmFtZSBSZXNvbHV0aW9uIHJ1bGVzIGEgcGF0aCBvZiA8Y29kZT4mcXVvdDsvYS94Ly4uJnF1b3Q7PC9jb2RlPiAKICBzaG91bGQgcmVzb2x2ZSB0byA8Y29kZT4mcXVvdDsvYS9iJnF1b3Q7PC9jb2RlPi4gSWYgPGNvZGU+JnF1b3Q7L2EveC8uLiZxdW90OzwvY29kZT4gd2VyZSBmaXJzdCAKICBub3JtYWxpemVkIHRvIDxjb2RlPiZxdW90Oy9hJnF1b3Q7PC9jb2RlPiwgaXQgd291bGQgcmVzb2x2ZSBpbmNvcnJlY3RseS4gKENhc2Ugc3VwcGxpZWQgCiAgYnkgV2FsdGVyIExhbmRyeS4pPC9saT4KPC91bD4KCjxoMj48YSBuYW1lPSJSYXRpb25hbGUiPlJhdGlvbmFsZTwvYT48L2gyPgoKPHA+VGhlIDxhIGhyZWY9IiNSZXF1aXJlbWVudHMiPlJlcXVpcmVtZW50czwvYT4gYW5kIDxhIGhyZWY9IiNSZWFsaXRpZXMiPgpSZWFsaXRpZXM8L2E+IGFib3ZlIGRyb3ZlIG11Y2ggb2YgdGhlIEMrKyBpbnRlcmZhY2UgZGVzaWduLiZuYnNwOyBJbiBwYXJ0aWN1bGFyLCAKdGhlIGRlc2lyZSB0byBtYWtlIHNjcmlwdC1saWtlIGNvZGUgc3RyYWlnaHRmb3J3YXJkIGNhdXNlZCBhIGdyZWF0IGRlYWwgb2YgCmVmZm9ydCB0byBnbyBpbnRvIGVuc3VyaW5nIHRoYXQgYXBwYXJlbnRseSBzaW1wbGUgZXhwcmVzc2lvbnMgbGlrZSA8aT5leGlzdHMoICZxdW90O2ZvbyZxdW90OyAKKTwvaT4gd29yayBhcyBleHBlY3RlZC48L3A+Cgo8cD5TZWUgdGhlIDxhIGhyZWY9ImZhcS5odG0iPkZBUTwvYT4gZm9yIHRoZSByYXRpb25hbGUgYmVoaW5kIG1hbnkgZGV0YWlsZWQgCmRlc2lnbiBkZWNpc2lvbnMuPC9wPgoKPHA+U2V2ZXJhbCBrZXkgaW5zaWdodHMgd2VudCBpbnRvIHRoZSA8aT5wYXRoPC9pPiBjbGFzcyBkZXNpZ246PC9wPgo8dWw+CiAgPGxpPkRlY291cGxpbmcgb2YgdGhlIGlucHV0IGZvcm1hdHMsIGludGVybmFsIGNvbmNlcHR1YWwgKDxpPnZlY3RvciZsdDtzdHJpbmcmZ3Q7PC9pPiAKICBvciBvdGhlciBzZXF1ZW5jZSkgCiAgbW9kZWwsIGFuZCBvdXRwdXQgZm9ybWF0cy48L2xpPgogIDxsaT5Qcm92aWRpbmcgdHdvIGlucHV0IGZvcm1hdHMgKGdlbmVyaWMgYW5kIE8vUyBzcGVjaWZpYykgYnJva2UgYSBtYWpvciAKICBkZXNpZ24gZGVhZGxvY2suPC9saT4KICA8bGk+UHJvdmlkaW5nIHNldmVyYWwgb3V0cHV0IGZvcm1hdHMgc29sdmVkIGFub3RoZXIgc2V0IG9mIHByZXZpb3VzbHkgCiAgaW50cmFjdGFibGUgcHJvYmxlbXMuPC9saT4KICA8bGk+U2V2ZXJhbCBub24tb2J2aW91cyBmdW5jdGlvbnMgKHBhcnRpY3VsYXJseSBkZWNvbXBvc2l0aW9uIGFuZCBjb21wb3NpdGlvbikgCiAgYXJlIHJlcXVpcmVkIHRvIHN1cHBvcnQgcG9ydGFibGUgY29kZS4gKFBldGVyIERpbW92LCBUaG9tYXMgV2l0dCwgR2xlbiAKICBLbm93bGVzLCBvdGhlcnMuKTwvbGk+CjwvdWw+Cgo8cD5FcnJvciBjaGVja2luZyB3YXMgYSBwYXJ0aWN1bGFybHkgZGlmZmljdWx0IGFyZWEuIE9uZSBrZXkgaW5zaWdodCB3YXMgdGhhdCAKd2l0aCBmaWxlIGFuZCBkaXJlY3RvcnkgbmFtZXMsIHBvcnRhYmlsaXR5IGlzbid0IGEgdW5pdmVyc2FsIHRydXRoLiZuYnNwOyAKUmF0aGVyLCB0aGUgcHJvZ3JhbW1lciBtdXN0IHRoaW5rIG91dCB0aGUgcXVlc3Rpb24gJnF1b3Q7V2hhdCBvcGVyYXRpbmcgc3lzdGVtcyBkbyBJIAp3YW50IHRoaXMgcGF0aCB0byBiZSBwb3J0YWJsZSB0bz8mcXVvdDsmbmJzcDsgQnkgcHJvdmlkaW5nIHN1cHBvcnQgZm9yIHNldmVyYWwgCmFuc3dlcnMgdG8gdGhhdCBxdWVzdGlvbiwgdGhlIEZpbGVzeXN0ZW0gTGlicmFyeSBhbGVydHMgcHJvZ3JhbW1lcnMgb2YgdGhlIG5lZWQgCnRvIGFzayBpdCBpbiB0aGUgZmlyc3QgcGxhY2UuPC9wPgo8aDI+PGEgbmFtZT0iQWJhbmRvbmVkX0Rlc2lnbnMiPkFiYW5kb25lZCBEZXNpZ25zPC9hPjwvaDI+CjxoMz5vcGVyYXRpb25zLmhwcDwvaDM+CjxwPkRpZXRtYXIgS/xobCdzIG9yaWdpbmFsIGRpcl9pdCBkZXNpZ24gYW5kIGltcGxlbWVudGF0aW9uIHN1cHBvcnRlZCAKd2lkZS1jaGFyYWN0ZXIgZmlsZSBhbmQgZGlyZWN0b3J5IG5hbWVzLiBJdCB3YXMgYWJhbmRvbmVkIGFmdGVyIGV4dGVuc2l2ZSAKZGlzY3Vzc2lvbnMgYW1vbmcgTGlicmFyeSBXb3JraW5nIEdyb3VwIG1lbWJlcnMgZmFpbGVkIHRvIGlkZW50aWZ5IHBvcnRhYmxlIApzZW1hbnRpY3MgZm9yIHdpZGUtY2hhcmFjdGVyIG5hbWVzIG9uIHN5c3RlbXMgbm90IHByb3ZpZGluZyBuYXRpdmUgc3VwcG9ydC4gU2VlCjxhIGhyZWY9ImZhcS5odG0jd2lkZS1jaGFyYWN0ZXJfbmFtZXMiPkZBUTwvYT4uPC9wPgo8cD5QcmV2aW91cyBpdGVyYXRpb25zIG9mIHRoZSBpbnRlcmZhY2UgZGVzaWduIHVzZWQgZXhwbGljaXRseSBuYW1lZCBmdW5jdGlvbnMgcHJvdmlkaW5nIGEgCmxhcmdlIG51bWJlciBvZiBjb252ZW5pZW5jZSBvcGVyYXRpb25zLCB3aXRoIG5vIGNvbXBpbGUtdGltZSBvciBydW4tdGltZSAKb3B0aW9ucy4gVGhlcmUgd2VyZSBzbyBtYW55IGZ1bmN0aW9uIG5hbWVzIHRoYXQgdGhleSB3ZXJlIHZlcnkgY29uZnVzaW5nIHRvIHVzZSwgCmFuZCB0aGUgaW50ZXJmYWNlIHdhcyBtdWNoIGxhcmdlci4gQW55IGJlbmVmaXRzIHNlZW1lZCB0aGVvcmV0aWNhbCByYXRoZXIgdGhhbiAKcmVhbC4gPC9wPgo8cD5EZXNpZ25zIGJhc2VkIG9uIGNvbXBpbGUgdGltZSAocmF0aGVyIHRoYW4gcnVudGltZSkgZmxhZyBhbmQgb3B0aW9uIHNlbGVjdGlvbiAKKHZpYSBwb2xpY3ksIGVudW0sIG9yIGludCB0ZW1wbGF0ZSBwYXJhbWV0ZXJzKSBiZWNhbWUgc28gY29tcGxpY2F0ZWQgdGhhdCB0aGV5IAp3ZXJlIGFiYW5kb25lZCwgb2Z0ZW4gYWZ0ZXIgaW52ZXN0aW5nIHF1aXRlIGEgYml0IG9mIHRpbWUgYW5kIGVmZm9ydC4gVGhlIG5lZWQgCnRvIHF1YWxpZnkgYXR0cmlidXRlIG9yIG9wdGlvbiBuYW1lcyB3aXRoIG5hbWVzcGFjZXMsIGV2ZW4gYWxpYXNlcywgbWFkZSB1c2UgaW4gCnRlbXBsYXRlIHBhcmFtZXRlcnMgdWdseTsgdGhhdCB3YXNuJ3QgZnVsbHkgYXBwcmVjaWF0ZWQgdW50aWwgYWN0dWFsbHkgd3JpdGluZyAKcmVhbCBjb2RlLjwvcD4KPHA+WWV0IGFub3RoZXIgc2V0IG9mIGNvbnZlbmllbmNlIGZ1bmN0aW9ucyAoIGZvciBleGFtcGxlLCA8aT5yZW1vdmU8L2k+IHdpdGggCnBlcm1pc3NpdmUsIHBydW5lLCByZWN1cnNlLCBhbmQgb3RoZXIgb3B0aW9ucywgcGx1cyBwcmVkaWNhdGUsIGFuZCBwb3NzaWJseSAKb3RoZXIsIGZpbHRlcmluZyBmZWF0dXJlcykgd2VyZSBhYmFuZG9uZWQgYmVjYXVzZSB0aGUgZGV0YWlscyBiZWNhbWUgYm90aCAKY29tcGxleCBhbmQgY29udGVudGlvdXMuPC9wPgoKPHA+V2hhdCBpcyBsZWZ0IGlzIGEgdG9vbGtpdCBvZiBsb3ctbGV2ZWwgb3BlcmF0aW9ucyBmcm9tIHdoaWNoIHRoZSB1c2VyIGNhbiAKY3JlYXRlIG1vcmUgY29tcGxleCBjb252ZW5pZW5jZSBvcGVyYXRpb25zLCBwbHVzIGEgdmVyeSBzbWFsbCBudW1iZXIgb2YgCmNvbnZlbmllbmNlIGZ1bmN0aW9ucyB3aGljaCB3ZXJlIGZvdW5kIHRvIGJlIHVzZWZ1bCBlbm91Z2ggdG8ganVzdGlmeSBpbmNsdXNpb24uPC9wPgoKPGgzPnBhdGguaHBwPC9oMz4KCjxwPlRoZXJlIHdlcmUgc28gbWFueSBhYmFuZG9uZWQgcGF0aCBkZXNpZ25zLCBJJ3ZlIGxvc3QgdHJhY2suIFBvbGljeS1iYXNlZCAKY2xhc3MgdGVtcGxhdGVzIGluIHNldmVyYWwgZmxhdm9ycywgY29uc3RydWN0b3Igc3VwcGxpZWQgcnVudGltZSBwb2xpY2llcywgCm9wZXJhdGlvbiBzcGVjaWZpYyBydW50aW1lIHBvbGljaWVzLCB0aGV5IHdlcmUgYWxsIGNvbnNpZGVyZWQsIG9mdGVuIAppbXBsZW1lbnRlZCwgYW5kIHVsdGltYXRlbHkgYWJhbmRvbmVkIGFzIGZhciB0b28gY29tcGxpY2F0ZWQgZm9yIGFueSBzbWFsbCAKYmVuZWZpdHMgb2JzZXJ2ZWQuPC9wPgoKPHA+QWRkaXRpb25hbCBkZXNpZ24gY29uc2lkZXJhdGlvbnMgYXBwbHkgdG8gPGEgaHJlZj0idjNfZGVzaWduLmh0bWwiPkludGVybmF0aW9uYWxpemF0aW9uPC9hPi4gPC9wPgoKPGgzPmVycm9yIGNoZWNraW5nPC9oMz4KCjxwPkEgbnVtYmVyIG9mIGRlc2lnbnMgZm9yIHRoZSBlcnJvciBjaGVja2luZyBtYWNoaW5lcnkgd2VyZSBhYmFuZG9uZWQsIHNvbWUgCmFmdGVyIGV4cGVyaW1lbnRzIHdpdGggaW1wbGVtZW50YXRpb25zLiBUb3RhbGx5IGF1dG9tYXRpYyBlcnJvciBjaGVja2luZyB3YXMgCmF0dGVtcHRlZCBpbiBwYXJ0aWN1bGFyLiBCdXQgYXV0b21hdGljIGVycm9yIGNoZWNraW5nIHRlbmRlZCB0byBtYWtlIHRoZSBvdmVyYWxsIApsaWJyYXJ5IGRlc2lnbiBtdWNoIG1vcmUgY29tcGxpY2F0ZWQuPC9wPgoKPHA+U29tZSBkZXNpZ25zIGFzc29jaWF0ZWQgZXJyb3IgY2hlY2tpbmcgbWVjaGFuaXNtcyB3aXRoIHBhdGhzLiZuYnNwOyBTb21lIHdpdGggCm9wZXJhdGlvbnMgZnVuY3Rpb25zLiZuYnNwOyBBIHBvbGljeS1iYXNlZCBlcnJvciBjaGVja2luZyB0ZW1wbGF0ZSBkZXNpZ24gd2FzIApwYXJ0aWFsbHkgaW1wbGVtZW50ZWQsIHRoZW4gYWJhbmRvbmVkIGFzIHRvbyBjb21wbGljYXRlZCBmb3IgZXZlcnlkYXkgCnNjcmlwdC1saWtlIHByb2dyYW1zLjwvcD4KCjxwPlRoZSBmaW5hbCBkZXNpZ24sIHdoaWNoIGRlcGVuZHMgcGFydGlhbGx5IG9uIGV4cGxpY2l0IGVycm9yIGNoZWNraW5nIGZ1bmN0aW9uIApjYWxscywmbmJzcDsgaXMgbXVjaCBzaW1wbGVyIGFuZCBzdHJhaWdodGZvcndhcmQsIGFsdGhvdWdoIGl0IGRvZXMgZGVwZW5kIHRvIApzb21lIGV4dGVudCBvbiBwcm9ncmFtbWVyIGRpc2NpcGxpbmUuJm5ic3A7IEJ1dCBpdCBzaG91bGQgYWxsb3cgcHJvZ3JhbW1lcnMgd2hvIAphcmUgY29uY2VybmVkIGFib3V0IHBvcnRhYmlsaXR5IHRvIGJlIHJlYXNvbmFibHkgc3VyZSB0aGF0IHRoZWlyIHByb2dyYW1zIHdpbGwgCndvcmsgY29ycmVjdGx5IG9uIHRoZWlyIGNob2ljZSBvZiB0YXJnZXQgc3lzdGVtcy48L3A+Cgo8aDI+PGEgbmFtZT0iUmVmZXJlbmNlcyI+UmVmZXJlbmNlczwvYT48L2gyPgoKPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjUiIGNlbGxzcGFjaW5nPSIwIiBzdHlsZT0iYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSIgYm9yZGVyY29sb3I9IiMxMTExMTEiIHdpZHRoPSIxMDAlIj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjEzJSIgdmFsaWduPSJ0b3AiPls8YSBuYW1lPSJJQk0tMDEiPklCTS0wMTwvYT5dPC90ZD4KICAgIDx0ZCB3aWR0aD0iODclIj5JQk0gQ29ycG9yYXRpb24sIDxpPnovT1MgVjFSMy4wIEMvQysrIFJ1bi1UaW1lIApMaWJyYXJ5IFJlZmVyZW5jZTwvaT4sIFNBMjItNzgyMS0wMiwgMjAwMSwKPGEgaHJlZj0iaHR0cDovL3d3dy0xLmlibS5jb20vc2VydmVycy9lc2VydmVyL3pzZXJpZXMvem9zL2Jrc2Vydi8iPgogICAgd3d3LTEuaWJtLmNvbS9zZXJ2ZXJzL2VzZXJ2ZXIvenNlcmllcy96b3MvYmtzZXJ2LzwvYT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIHdpZHRoPSIxMyUiIHZhbGlnbj0idG9wIj5bPGEgbmFtZT0iSVNPLTk2NjAiPklTTy05NjYwPC9hPl08L3RkPgogICAgPHRkIHdpZHRoPSI4NyUiPkludGVybmF0aW9uYWwgU3RhbmRhcmRzIE9yZ2FuaXphdGlvbiwgMTk4ODwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjEzJSIgdmFsaWduPSJ0b3AiPls8YSBuYW1lPSJLdWhuIj5LdWhuPC9hPl08L3RkPgogICAgPHRkIHdpZHRoPSI4NyUiPlVURi04IGFuZCBVbmljb2RlIEZBUSBmb3IgVW5peC9MaW51eCwKPGEgaHJlZj0iaHR0cDovL3d3dy5jbC5jYW0uYWMudWsvfm1nazI1L3VuaWNvZGUuaHRtbCI+CiAgICB3d3cuY2wuY2FtLmFjLnVrL35tZ2syNS91bmljb2RlLmh0bWw8L2E+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMTMlIiB2YWxpZ249InRvcCI+WzxhIG5hbWU9Ik1TRE4iPk1TRE48L2E+XSA8L3RkPgogICAgPHRkIHdpZHRoPSI4NyUiPk1pY3Jvc29mdCBQbGF0Zm9ybSBTREsgZm9yIFdpbmRvd3MsIFN0b3JhZ2UgU3RhcnQgClBhZ2UsCjxhIGhyZWY9Imh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vbGlicmFyeS9lbi11cy9maWxlaW8vYmFzZS9zdG9yYWdlX3N0YXJ0X3BhZ2UuYXNwIj4KICAgIG1zZG4ubWljcm9zb2Z0LmNvbS9saWJyYXJ5L2VuLXVzL2ZpbGVpby9iYXNlL3N0b3JhZ2Vfc3RhcnRfcGFnZS5hc3A8L2E+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMTMlIiB2YWxpZ249InRvcCI+WzxhIG5hbWU9IlBPU0lYLTAxIj5QT1NJWC0wMTwvYT5dPC90ZD4KICAgIDx0ZCB3aWR0aD0iODclIj5JRUVFJm5ic3A7U3RkJm5ic3A7MTAwMy4xLTIwMDEsIElTTy9JRUMgOTk0NToyMDAyLCBhbmQgVGhlIE9wZW4gR3JvdXAgQmFzZSBTcGVjaWZpY2F0aW9ucywgSXNzdWUgNi4gQWxzbyBrbm93biBhcyBUaGUgCiAgICBTaW5nbGUgVW5peDxmb250IGZhY2U9IlRpbWVzIE5ldyBSb21hbiI+riBTcGVjaWZpY2F0aW9uLCBWZXJzaW9uIDMuIAogICAgQXZhaWxhYmxlIGZyb20gZWFjaCBvZiB0aGUgb3JnYW5pemF0aW9ucyBpbnZvbHZlZCBpbiBpdHMgY3JlYXRpb24uIEZvciAKICAgIGV4YW1wbGUsIHJlYWQgb25saW5lIG9yIGRvd25sb2FkIGZyb20KICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cudW5peC5vcmcvc2luZ2xlX3VuaXhfc3BlY2lmaWNhdGlvbi8iPgogICAgd3d3LnVuaXgub3JnL3NpbmdsZV91bml4X3NwZWNpZmljYXRpb24vPC9hPi48L2ZvbnQ+IFRoZSBJU08gSlRDMS9TQzIyL1dHMTUgLSBQT1NJWCAKaG9tZXBhZ2UgaXMgPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuLXN0ZC5vcmcvanRjMS9zYzIyL1dHMTUvIj4KICAgIHd3dy5vcGVuLXN0ZC5vcmcvanRjMS9zYzIyL1dHMTUvPC9hPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjEzJSIgdmFsaWduPSJ0b3AiPls8YSBuYW1lPSJVUkkiPlVSSTwvYT5dPC90ZD4KICAgIDx0ZCB3aWR0aD0iODclIj5SRkMtMjM5NiwgVW5pZm9ybSBSZXNvdXJjZSBJZGVudGlmaWVycyAoVVJJKTogR2VuZXJpYyAKU3ludGF4LCA8YSBocmVmPSJodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMyMzk2LnR4dCI+CiAgICB3d3cuaWV0Zi5vcmcvcmZjL3JmYzIzOTYudHh0PC9hPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjEzJSIgdmFsaWduPSJ0b3AiPls8YSBuYW1lPSJVVEYtMTYiPlVURi0xNjwvYT5dPC90ZD4KICAgIDx0ZCB3aWR0aD0iODclIj5XaWtpcGVkaWEsIFVURi0xNiwKPGEgaHJlZj0iaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VVEYtMTYiPgogICAgZW4ud2lraXBlZGlhLm9yZy93aWtpL1VURi0xNjwvYT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIHdpZHRoPSIxMyUiIHZhbGlnbj0idG9wIj5bPGEgbmFtZT0iV3VsZi1TaGF3LTczIj5XdWxmLVNoYXctNzM8L2E+XTwvdGQ+CiAgICA8dGQgd2lkdGg9Ijg3JSI+V2lsbGlhbSBXdWxmLCBNYXJ5IFNoYXcsIDxpPkdsb2JhbCAKVmFyaWFibGUgQ29uc2lkZXJlZCBIYXJtZnVsPC9pPiwgQUNNIFNJR1BMQU4gTm90aWNlcywgOCwgMiwgMTk3MywgcHAuIDIzLTM0PC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKPGhyPgo8cD5SZXZpc2VkCjwhLS13ZWJib3QgYm90PSJUaW1lc3RhbXAiIFMtVHlwZT0iRURJVEVEIiBTLUZvcm1hdD0iJWQgJUIsICVZIiBzdGFydHNwYW4gLS0+MTggRmVicnVhcnksIDIwMTA8IS0td2ViYm90IGJvdD0iVGltZXN0YW1wIiBlbmRzcGFuIGktY2hlY2tzdW09IjQwNTM4IiAtLT48L3A+Cgo8cD6pIENvcHlyaWdodCBCZW1hbiBEYXdlcywgMjAwMjwvcD4KPHA+IFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSAKTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgPGEgaHJlZj0iLi4vLi4vLi4vLi4vTElDRU5TRV8xXzAudHh0Ij4KTElDRU5TRV8xXzAudHh0PC9hPiBvciBjb3B5IGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCI+Cnd3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0PC9hPik8L3A+Cgo8L2JvZHk+Cgo8L2h0bWw+