PD9waHAgIAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL2FwcC5jbGFzcy5waHAiKTsJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbmF2LmNsYXNzLnBocCIpOyAJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbWVudS5jbGFzcy5waHAiKTsgCSRBcHAgCT0gbmV3IEFwcCgpOwkkTmF2CT0gbmV3IE5hdigpOwkkTWVudSAJPSBuZXcgTWVudSgpOwkJaW5jbHVkZSgkQXBwLT5nZXRQcm9qZWN0Q29tbW9uKCkpOyAgICAjIEFsbCBvbiB0aGUgc2FtZSBsaW5lIHRvIHVuY2x1dHRlciB0aGUgdXNlcidzIGRlc2t0b3AnCgokcGFnZVRpdGxlIAkJPSAiSmFudWFyeSAyMDA3IFBsYW5uaW5nIENvdW5jaWwgTWludXRlcyI7CiRwYWdlS2V5d29yZHMJPSAicGxhbm5pbmcgY291bmNpbCBtaW51dGVzIjsKJHBhZ2VBdXRob3IJCT0gIkJqb3JuIEZyZWVtYW4tQmVuc29uIjsKCm9iX3N0YXJ0KCk7Cj8+CiAgICA8ZGl2IGlkPSJtYWluY29udGVudCI+Cgk8ZGl2IGlkPSJtaWRjb2x1bW4iPgo8aDE+IEVjbGlwc2UgUGxhbm5pbmcgQ291bmNpbCBNaW51dGVzPC9oMT4KPHA+SmFudWFyeSAyMywgMjAwNywgQnVybGluZ2FtZSwgQ2FsaWZvcm5pYTwvcD4KPHA+PGk+Tm90ZSB0aGF0IHRoZSBhdHRlbmRhbmNlIGxpc3QgaXMgbm90IGFjY3VyYXRlIGF0IHRoaXMgdGltZS48L2k+PC9wPgo8dGFibGUgYm9yZGVyPSIwIj4KICA8dGJvZHk+PHRyPgogICAgPHRkIGFsaWduPSJjZW50ZXIiIGJnY29sb3I9IiNjY2NjY2MiIHZhbGlnbj0idG9wIj48Yj5QcmVzZW50PC9iPjwvdGQ+CiAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiPjxiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvYj48L3RkPgogICAgPHRkIGFsaWduPSJjZW50ZXIiIGJnY29sb3I9IiNjY2NjY2MiIHZhbGlnbj0idG9wIj48Yj5SZWdyZXRzPC9iPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij5TcmkgRG9kZGFwYW5lbmksIEludGVsLCBUUFRQPC90ZD4KICAgIDx0ZCB2YWxpZ249InRvcCIgYWxpZ249ImNlbnRlciI+PC90ZD4KICAgIDx0ZCB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiPkRvdWcgU2NoYWVmZXIsIFFOWCwgVG9vbHM8L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCI+Qmpvcm4gRnJlZW1hbi1CZW5zb24sIEVjbGlwc2U8L3RkPgogICAgPHRkIHZhbGlnbj0idG9wIiBhbGlnbj0iY2VudGVyIj48L3RkPgogICAgPHRkIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCI+RG91ZyBHYWZmLCBXaW5kIFJpdmVyLCBEU0RQPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiPkpvaG4gR3JhaGFtLCBTeWJhc2UsIERUUDwvdGQ+CiAgICA8dGQgdmFsaWduPSJ0b3AiIGFsaWduPSJjZW50ZXIiPjwvdGQ+CiAgICA8dGQgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij5UaW0gV2FnbmVyLCBCRUEsIFdUUDwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij5SaWNoIEdyb25iYWNrLCBCb3JsYW5kPC90ZD4KICAgIDx0ZCB2YWxpZ249InRvcCIgYWxpZ249ImNlbnRlciI+PC90ZD4KICAgIDx0ZCB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij5LZXZpbiBIYWFsYW5kLCBJQk0sIFBsYXRmb3JtPC90ZD4KICAgIDx0ZCB2YWxpZ249InRvcCIgYWxpZ249ImNlbnRlciI+PC90ZD4KICAgIDx0ZCB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij5Zb3NzaSBMZW9uLCBaZW5kPC90ZD4KICAgIDx0ZCB2YWxpZ249InRvcCIgYWxpZ249ImNlbnRlciI+PC90ZD4KICAgIDx0ZCB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij5XZW5mZW5nIExpLCBBY3R1YXRlLCBCSVJUPC90ZD4KICAgIDx0ZCB2YWxpZ249InRvcCIgYWxpZ249ImNlbnRlciI+PC90ZD4KICAgIDx0ZCB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij5FZCBNZXJrcywgSUJNLCBNb2RlbGluZzwvdGQ+CiAgICA8dGQgdmFsaWduPSJ0b3AiIGFsaWduPSJjZW50ZXIiPjwvdGQ+CiAgICA8dGQgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCI+UGF1bCBTdHlsZXMsIENvbXB1d2FyZTwvdGQ+CiAgICA8dGQgdmFsaWduPSJ0b3AiIGFsaWduPSJjZW50ZXIiPjwvdGQ+CiAgICA8dGQgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCI+SmVzcyA/LCBCRUE8L3RkPgogICAgPHRkIHZhbGlnbj0idG9wIiBhbGlnbj0iY2VudGVyIj48L3RkPgogICAgPHRkIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCI+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiPkRhdmlkIFdpbGxpYW1zLCBJQk08L3RkPgogICAgPHRkIHZhbGlnbj0idG9wIiBhbGlnbj0iY2VudGVyIj48L3RkPgogICAgPHRkIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCI+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiPk9pc2luIEh1cmxleSwgSU9OQSwgU1RQPC90ZD4KICAgIDx0ZCB2YWxpZ249InRvcCIgYWxpZ249ImNlbnRlciI+PC90ZD4KICAgIDx0ZCB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiPjwvdGQ+CiAgPC90cj4KPC90Ym9keT48L3RhYmxlPgo8aDI+TWludXRlcyAvIERpc2N1c3Npb24gSXRlbXM8L2gyPgo8aDM+RXVyb3BhIENRIFByaW9yaXRpemF0aW9uIFByb2Nlc3M8L2gzPgo8cD5EaXNjdXNzaW9uIG9mIHRoZSA8YSBocmVmPSJodHRwOi8vd2lraS5lY2xpcHNlLm9yZy9pbmRleC5waHAvRXVyb3BhX1NpbXVsdGFuZW91c19SZWxlYXNlIj4gRXVyb3BhPC9hPiBDUSBwcmlvcml0aXphdGlvbiBwcm9jZXNzIGFzIGRlZmluZWQgYnkgSmFuZXQgWzxhIGhyZWY9Imh0dHA6Ly9kZXYuZWNsaXBzZS5vcmcvbWhvbmFyYy9saXN0cy9lY2xpcHNlLm9yZy1wbGFubmluZy1jb3VuY2lsL21zZzAwMzEwLmh0bWwiPjE8L2E+XS4KVGhlIENvdW5jaWwgbWVtYmVycyBmZWx0IHRoYXQgdGhlIExlZ2FsIHF1ZXVlIHdhcyBsb25nIGFuZCBnZXR0aW5nIGxvbmdlciBhbmQKd2VyZSBuZXJ2b3VzIHRoYXQgdGhpcyB0cmVuZCBpcyBnb2luZyB0aGUgd3Jvbmcgd2F5LiBJbiBnZW5lcmFsIHRoZSBDb3VuY2lsIGZlbHQKdGhhdCB0aGUgZGVhZGxpbmUgb2YgSmFudWFyeSAzMXN0IGZvciBzdWJtaXR0aW5nIG5ldyBtYXRlcmlhbCB3YXMgcmVhc29uYWJsZSwKYnV0IHRoZXkgd291bGQgbGlrZSB0aGUgZGVhZGxpbmUgZm9yIHN1Ym1pdHRpbmcgaW5jcmVtZW50YWwgcmVxdWVzdHMgKHVwZGF0ZWQKdmVyc2lvbnMgb2YgcHJldmlvdXMgYXBwcm92ZWQgdGhpcmQtcGFydHkgbGlicmFyaWVzKSB0byBiZSBsYXRlci4gVGhlIHJlYXNvbiBpcwp0byBiZSBhYmxlIHRvIGluY2x1ZGUgdGhlIGxhdGVzdCBhbmQgZ3JlYXRlc3QgdmVyc2lvbnMgb2YsIHNheSwgQXBhY2hlIGxpYnJhcmllcwpldmVuIGlmIHRoZXkgYXJlIHJlbGVhc2VkIChieSwgZS5nLiwgQXBhY2hlKSBldmVuIGlmIHRoZXkgYXJlIHJlbGVhc2VkIGxhdGUgaW4KdGhlIEV1cm9wYSByZWxlYXNlIGN5Y2xlLiBXaGlsZSBpdCB3b3VsZCBiZSBjb252ZW5pZW50IGlmIHRoZSBlbnRpcmUgc29mdHdhcmUKd29ybGQgcmV2b2x2ZWQgYXJvdW5kIHRoZSBFY2xpcHNlIHllYXJseSByZWxlYXNlcywgaXQgZG9lc24ndCwgc28gb3VyIHByb2Nlc3NlcwpuZWVkIHRvIGFjY29tbW9kYXRlIHRoYXQuIEJqb3JuIGV4cGxhaW5lZCBob3cmbmJzcDsgbXVjaCB3b3JrIGlzIHJlcXVpcmVkIGV2ZW4KZm9yIGluY3JlbWVudGFsIHJlbGVhc2VzIChhIGxvdCkgYW5kIHRoZSBDb3VuY2lsIG1lbWJlcnMgZGVjaWRlZCB0aGF0IHRoZXkgY291bGQKbGl2ZSB3aXRoIGFuIE02IGRhdGUgZm9yIHRoZSBkZWFkbGluZSBmb3IgQ1FzIGZvciBpbmNyZW1lbnRhbHMuJm5ic3A7UHJvamVjdAp0ZWFtcyB3aWxsIGFzc2lzdCB3aXRoIGluY3JlbWVudGFscyBieSBwcm92aWRpbmcgZGlmZiByZXBvcnRzIG9uIHdoYXQgaGFzCmNoYW5nZWQgYXQgYWxsIGxldmVscyBvZiBuZXN0aW5nLjwvcD4KPHA+VGhlIHByb2plY3RzIGFsc28gYWdyZWVkIHRvIChwZW5kaW5nIGEgY2hlY2tsaXN0L2V4YW1wbGUpIHN1Ym1pdCBhIGNvbXBsZXRlCmxpc3Qgb2YgYWxsIG5lc3RlZCBqYXJzIGFuZCBzb3VyY2UgY29kZSBzbyB0aGF0IEphbmV0J3MgdGVhbSBjYW4gc3RhcnQgdGhlCmV4YW1pbmF0aW9uIHdpdGggbGVzcyBsZWcgd29yay48L3A+CjxwPjxiPjx1PkFDVElPTjwvdT46PC9iPiAgW0Jqb3JuIEZCXSBUYWtlIHRoZXNlIHJlcXVlc3RzIHRvIEVjbGlwc2UgTGVnYWw6PC9wPgo8dWw+CiAgPGxpPk5ldyB0aGlyZC1wYXJ0eSBsaWJyYXJpZXMgZGVhZGxpbmUmbmJzcDsgaXMgSmFudWFyeSAzMXN0PC9saT4KICA8bGk+SW5jcmVtZW50YWwgdGhpcmQtcGFydHkgbGlicmFyaWVzIGRlYWRsaW5lIGlzIFJDMCAoTWF5IDQpPC9saT4KPC91bD4KPHA+PGI+PHU+QUNUSU9OPC91Pjo8L2I+ICBbQmpvcm4gRkJdIFRha2UgdGhlc2Ugc3VnZ2VzdGlvbnMgdG8gRWNsaXBzZSBMZWdhbDo8L3A+Cjx1bD4KICA8bGk+VHJhbnNwYXJlbmN5OiBwdWJsaXNoIGEgcHJvYmFiaWxpdHkgZGlzdHJpYnV0aW9uIG9mIGhvdyBsb25nIChjYWxlbmRhcgogICAgdGltZSkgaXQgdGFrZXMgdG8gcHJvY2VzcyBDUXM8L2xpPgogIDxsaT5Qcm9jZXNzOiBwdWJsaXNoIGEgY2hlY2tsaXN0IG9mIHRoaW5ncyB0aGF0IHByb2plY3RzIHNob3VsZCBiZSBsb29raW5nIGZvcgogICAgYW5kIHRyeWluZyB0byBzb2x2ZSBiZWZvcmUgc3VibWl0dGluZyBDUXM6IGxpY2Vuc2UgaXNzdWVzLCBjb2RlIHNjYW5uaW5nLAogICAgZXRjLjwvbGk+CiAgPGxpPkVhc2Ugb2YgVXNlOiBhIGJldHRlciBDb250cmlidXRpb24gUXVlc3Rpb25uYWlyZSAtIG1hbnkgb2YgdGhlIHByb2plY3RzCiAgICBmaW5kIHRoZSBleGlzdGluZyBvbmUgY29uZnVzaW5nLCB0aGUgc2VjdGlvbnMgYW5kIHF1ZXN0aW9ucyBoYXJkIHRvCiAgICB1bmRlcnN0YW5kLCBhbmQgdGhlcmUgYXJlIG5vIGV4YW1wbGVzIG9mIGhvdyB0byBmaWxsIGl0IG91dDwvbGk+CiAgPGxpPlNMQTogU2VydmljZSBMZXZlbCBBZ3JlZW1lbnRzIGZvciBzaG9ydCBjb250cmlidXRpb25zIGhhdmluZyBxdWljawogICAgcmVzcG9uc2UgdGltZXM8L2xpPgo8L3VsPgo8cD5FZCBNZXJrcyBhbHNvIHJlcXVlc3RlZCB0aGF0IElQWmlsbGEgYmUgb3BlbmVkIHRvIGNvbnRyaWJ1dG9ycyBhcyB3ZWxsIGFzIGEKY29tbWl0dGVycyBzbyB0aGF0IHRoZSBjb21taXR0ZXJzIGRvIG5vdCBoYXZlIHRvIGFjdCBhcyBpbnRlcm1lZGlhcmllcyB3aGVuCnRyeWluZyB0byByZXNvbHZlIGlzc3VlcyBiZXR3ZWVuIGNvbW1pdHRlcnMgYW5kIEVjbGlwc2UgTGVnYWwuPC9wPgo8aDM+RXVyb3BhIFNjaGVkdWxlIGFuZCBSdWxlcyBSZXZpZXc8L2gzPgo8cD5XZSByZXZpZXdlZCB0aGUgc2NoZWR1bGUgYW5kIHJ1bGVzIG9uIHRoZSA8YSBocmVmPSJodHRwOi8vd2lraS5lY2xpcHNlLm9yZy9pbmRleC5waHAvRXVyb3BhX1NpbXVsdGFuZW91c19SZWxlYXNlIj5FdXJvcGEKd2lraSBwYWdlPC9hPi4gV2UgcmV2aXNlZCB0aGUgcnVsZXMgYSBiaXQgKG9uIHRoZSB3aWtpIHBhZ2UpLiBBbHNvOiBCSVJUIHdpbGwKaGVscCBXVFAgYW5kIFRQVFAgbW92ZSB0aGVpciBjb21tb24gc2hhcmVkIGphcnMgdG8gT3JiaXQuIEFuZCB3ZSBwcm9tb3RlZAomcXVvdDt3cml0dGVuIHJhbXAgZG93biBwb2xpY3kmcXVvdDsgZnJvbSA8aT5zaG91bGQgZG88L2k+IHRvIDxpPm11c3QgZG88L2k+LjwvcD4KPHA+VGhlIHJhbXAgZG93biBwb2xpY3kgc2hvdWxkIGluY2x1ZGU6IG5hbWVkIG1pbGVzdG9uZXMgKEFQSSBmcmVlemUsIGZlYXR1cmUKY29tcGxldGUsIFJDMCksIHJ1bGVzIGZvciB3aGF0IGl0IHRha2VzIHRvIGdldCBhIGNoYW5nZSBpbiAodGVhbSBzYXlzIHdhbnQgdG8KZml4LCCFLCBjb25zZW5zdXMgaGFzIHRvIHJldmlldyBhbmQgYXBwcm92ZSBhbGwgY2hhbmdlczsgdGhlIHByb2Nlc3Mgd2UgdXNlIHRvCnNheSBubyk7IGRlZmluaXRpb24gb2Ygd2hhdCAmcXVvdDtSQyZxdW90OyBtZWFucyB0byBlYWNoIHByb2plY3Q7IGV0Yy48L3A+CjxwPjxiPjx1PkFDVElPTjwvdT46PC9iPiBbYWxsXSBBbGwgRXVyb3BhIHByb2plY3RzIHdpbGwgaGF2ZSBhIHdyaXR0ZW4gcmFtcCBkb3duCnBvbGljeSBvbiB0aGVpciB3ZWJzaXRlIGFuZCBpbiB0aGUgd2lraSBieSBGZWJydWFyeSAyM3JkLjwvcD4KPHA+V2UgYWxzbyBkaXNjdXNzZWQgY2hhbmdpbmcgdGhlIG5hbWUgb2YgUkNzIHRvIEV1cm9wYSBDYW5kaWRhdGVzIChFQ3MpIHRvCmFjY29tbW9kYXRlIHRoZSB2YXJ5aW5nIHF1YWxpdHkgb2YgdGhlIHByb2plY3RzLiZuYnNwOzwvcD4KPGgzPkpWTSAxLjQgdmVyc3VzIEpWTSA1PC9oMz4KPHA+VFBUUCBoYXMgd29ya2VkIGFyb3VuZCB0aGUgaXNzdWUgcmFpc2VkIGVhcmxpZXIgYnkgaGF2aW5nIHRoZSBUUFRQCnN0YW5kLWFsb25lIHJ1bi10aW1lIHVzZSBFTUYgMi4yLjwvcD4KPHA+PGI+PHU+QUNUSU9OPC91PjogPC9iPltFZCBNXSBBZGQgYSBsaW5rIHRvIHRoZSBFdXJvcGEgcGFnZSB0byBoaXMgd2lraSBwYWdlCmRpc2N1c3NpbmcgdGhlIEVNRiAyLjIvMi4zIGZlYXR1cmVzIGFuZCBKVk0gMS40LzEuNSBpc3N1ZXMgYW5kIHdoYXQgdGhlCmNvbnNlcXVlbmNlcyBvZiB3aGV0aGVyIG9uZSBzaG91bGQgdXNlIEVNRiAyLjIgb3IgMi4zIC0gPGVtPjxhIGhyZWY9Imh0dHA6Ly93aWtpLmVjbGlwc2Uub3JnL2luZGV4LnBocC9FTUZfMi4zX0pWTV9SZXF1aXJlbWVudHMjUnVudGltZV8uMkZfQ29tcGlsYXRpb25fQ29tcGF0aWJpbGl0eSI+aGVyZSBpcyB0aGUgbGluazwvYT48L2VtPjwvcD4KPHA+QWRkaXRpb25hbGx5LCB0aGUgZ3JvdXAgY29uc2Vuc3VzIHdhcyB0byBsYWJlbCB5b3VyIG93biBwbHVnLWlucyB3aXRoIHRoZQptaW5pbXVtIHJ1bi10aW1lIGZvciB0aGF0IHBsdWctaW4gYW5kIG5vdCB0byBjb25zaWRlciB0aGUgbWluaW11bSBydW4tdGltZXMgb2YKZGVwZW5kZW5jaWVzLiBCZSBzdXJlIHRvIHRlc3QgeW91ciBjb2RlIGFnYWluc3QgYm90aCB0aGUgMS40IGFuZCA1IEpWTXMuPC9wPgo8aDM+VXNpbmcgTm9uLUFQSXM8L2gzPgo8cD5BZnRlciBtdXN0IGRpc2N1c3Npb24sIHdlIGNvbmNsdWRlZCB0aGF0OjwvcD4KPHVsPgogIDxsaT5Qcm9qZWN0cyBTSE9VTEQgTk9UIHVzZSBub24tQVBJcyBmcm9tIG90aGVyIHByb2plY3RzLCBidXQgaWYgeW91IG11c3QKICAgIHRoZW4uLi48L2xpPgogIDxsaT5XaGVuIHVzaW5nIG5vbi1BUElzLCBwcm9qZWN0cyBNVVNUIGhhdmUgb3BlbmVkIGJ1Z3ppbGxhcyBhZ2FpbnN0IHRoZSBvdGhlcgogICAgcHJvamVjdHMgYW5kIGluY2x1ZGUgcmVmZXJlbmNlcyB0byB0aG9zZSBidWd6aWxsYXMgaW4gdGhlIHJlbGVhc2Ugbm90ZXMgYW5kCiAgICB0aGUgcmVsZWFzZSByZXZpZXcgc2xpZGVzLiBQcm9qZWN0cyBNVVNUIGFsc28gaGF2ZSBhIHBsYW4gZm9yIGFkZHJlc3NpbmcgdGhlCiAgICBub24tQVBJIGlzc3VlIGluIHRoZWlyIG5leHQgbWFqb3IgcmVsZWFzZS48L2xpPgogIDxsaT5XaGVuIHVzaW5nIG5vbi1BUElzLCBwcm9qZWN0cyBNVVNUIE5PVCBleHBvc2UgdGhvc2UgY29uc3VtZWQgbm9uLUFQSXMKICAgIHRocm91Z2ggdGhlIHByb2plY3QncyBvd24gQVBJcy4gV2UgY2Fubm90IGV2ZW4gYmVnaW4gdG8gZXhwbGFpbiB3aGF0IGEgYmFkCiAgICBpZGVhIHRoYXQgd291bGQgYmUuPC9saT4KICA8bGk+V2hlbiB1c2luZyBub24tQVBJcywgcHJvamVjdHMgTVVTVCBwYXJ0aWNpcGF0ZSBpbiB0aGUgc2FtZSBtYWludGVuYW5jZQogICAgcmVsZWFzZXMgYXMgdGhlIHByb2plY3RzIHRoZXkgYXJlIHVzaW5nIGZyb20uPC9saT4KPC91bD4KPHA+RmluZGluZyB0aGUgcmlnaHQgYmFsYW5jZSBvZiBwcm9ncmVzcyB2ZXJzdXMgcmlzayBpcyB2ZXJ5IGRpZmZpY3VsdCB0aHVzIG91cgpnb2FsIGlzIHRvIGV4cG9zZSB0aGUgcmlzayBvZiB0aGUgdXNlIG9mIG5vbi1BUElzLiBXZSBldmVuIGNvbnNpZGVyZWQgaGF2aW5nIGEKY2xvd24tbm9zZSBpY29uIHRoYXQgaXMgYXR0YWNoZWQgdG8gYSBwcm9qZWN0J3Mgd2Vic2l0ZSBzaG91bGQgdGhleSB1c2UKbm9uLUFQSXMuPC9wPgo8aDM+RXVyb3BhIFNES3MgYW5kIFJ1bi10aW1lczwvaDM+CjxwPlRoZSBtYWluIGlzc3VlIGhlcmUgaXMgdGhhdCAmcXVvdDtTREsmcXVvdDsgbWVhbnMgZGlmZmVyZW50IHRoaW5ncyBmb3IKZGlmZmVyZW50IHByb2plY3RzLiBJbiB0aGUgZW5kIHdlIGNvbmNsdWRlZCB0aGF0IHRoZXJlIGFyZSBhdCBsZWFzdCB0aHJlZQpkaWZmZXJlbnQgdGhpbmdzOiAoMSkgcnVuLXRpbWUsICgyKSB0b29saW5nLCAoMykgZXh0ZW5kZXIga2l0LiBOb3QgYWxsIHByb2plY3RzCmhhdmUgYWxsIHRocmVlLiBUaGUgcnVuLXRpbWUgaXMgbGlrZSB0aGUgVk0gZm9yIHRoZSBwcm9qZWN0IC0gY29uc2lkZXIgdGhlIEVNRgpydW4tdGltZTogdGhlcmUncyBubyB0b29saW5nIGFuZCBpdCBpcyBqdXN0IHdoYXQgaXMgbmVlZGVkIHRvIGV4ZWN1dGUgYW4gRU1GCm1vZGVsLiBIb3dldmVyLCB0aGUgUGxhdGZvcm0gcnVuLXRpbWUgZGlzdHJvIGRvZXMgaW5jbHVkZSB0b29saW5nOiB0aGUgYmFzaWMKRWNsaXBzZSBJREUgdG9vbHMuIChIZW5jZSBjb25mdXNpb24gb3ZlciB0aGUgd29yZGluZyk8L3A+CjxwPlRoZSB0b29saW5nIGRpc3RybyBvZiBhIHByb2plY3QgaW5jbHVkZXMgdGhlIHJ1bi10aW1lICh0byBydW4gdGhlIHRvb2xzKSwgZW5kCnVzZXIgdG9vbHMsIGFuZCBlbmQgdXNlciBkb2N1bWVudGF0aW9uLiBUaGUgZXh0ZW5kZXIga2l0IGZvciBlYWNoIHByb2plY3QgaXMgdGhlCnRvb2xpbmcgZGlzdG8gcGx1cyB0aGF0IHdoaWNoIGlzIHJlcXVpcmVkIHRvIGV4dGVuZCB0aGUgdW5kZXJseWluZyBmcmFtZXdvcmtzLgpBbHNvIGtub3duIGFzIGFuIFNESywgdGhlIGV4dGVuZGVyIGNvbnRhaW5zIHNvdXJjZSBjb2RlLCBhZG9wdGVyIGRvY3VtZW50YXRpb24sCmV4YW1wbGVzLCBldGMuIFdlIGRlY2lkZWQgdGhhdCB0aGUgZXh0ZW5kZWQga2l0IFNIT1VMRCBpbmNsdWRlIGFuIGV4cGxhbmF0aW9uCihpbiB0aGUgaGVscCBzeXN0ZW0pIG9mIGhvdyB0byBnZXQgdGhlIGV4YW1wbGVzIGZvciB0aGUgcHJvamVjdCBhbHRob3VnaCB0aGUKZXhhbXBsZXMgZG8gbm90IG5lY2Vzc2FyaWx5IGhhdmUgdG8gYmUgaW5jbHVkZWQgd2l0aCB0aGUga2l0LiBUaGlzIGlzIG9mdGVuCnVzZWZ1bCBiZWNhdXNlIHRoZSBleGFtcGxlcyBzaG91bGQgYmUgaW5zdGFsbGVkIHRoZSBkZXZlbG9wZXIncyB3b3Jrc3BhY2UKaW5zdGVhZCBvZiBpbiB0aGUgRWNsaXBzZSBpbnN0YW5jZSBpdHNlbGYgYW5kIHRoZSBFY2xpcHNlIGRpc3RybyBtZWNoYW5pc20gY2FuCm9ubHkgaW5zdGFsbCB0byB0aGUgaW5zdGFuY2UuPC9wPgo8cD5UaGUgQ291bmNpbCBkZWNpZGVkIHRoYXQgZWFjaCBFdXJvcGEgcHJvamVjdCB3aWxsIGhhdmUgdHdvIGVudHJpZXMgaW4gdGhlCmZlYXR1cmUgbGlzdDogYW4gJnF1b3Q7ZW5kLXVzZXImcXVvdDsgZmVhdHVyZSBhbmQgYW4gJnF1b3Q7ZXh0ZW5kZXImcXVvdDsKZmVhdHVyZS4gVGhlIENvdW5jaWwgZnVydGhlciBkZWNpZGVkIHRoYXQgZWFjaCBwcm9qZWN0IHdpbGwgZGlzdHJpYnV0ZSBpdCdzIHB1cmUKcnVuLXRpbWUgc2VwYXJhdGVseSBmcm9tIHRoZSBtYWluIEV1cm9wYSB1cGRhdGUgc2l0ZS4gSGVyZSB3ZSBhcmUgdGFraW5nIHRoZQpwb3NpdGlvbiB0aGF0IHRoZSBFdXJvcGEgdXBkYXRlIHNpdGUgaXMgZm9yIGVuZC11c2VycyBhbmQgbm90IGFzIGEgc3Vic3RpdHV0ZQpmb3IgdGhlIHByb2plY3Qtc3BlY2lmaWMgZG93bmxvYWQgcGFnZXMgZm9yIHByb2plY3Qtc3BlY2lmaWMgdGhpbmdzIChzdWNoIGFzCnByb2plY3Qtc3BlY2lmaWMgcnVuLXRpbWVzL1ZNcykuPC9wPgo8cD48Yj48dT5BQ1RJT048L3U+OiA8L2I+W2FsbF0gVXBkYXRlIHRoZSB3aWtpIHBhZ2UgdG8gZXhwbGFpbiB3aGV0aGVyIHlvdXIKcHJvamVjdCB3aWxsIGluY2x1ZGUgZXhhbXBsZXMgYXMgcGFydCBvZiB0aGUgZXh0ZW5kZXIgdmVyc2lvbi48L3A+CjxwPjxiPjx1PkFDVElPTjwvdT46PC9iPiBbYWxsXSBVcGRhdGUgeW91ciBwcm9qZWN0J3MgZmVhdHVyZXMgdG8gaW5jbHVkZSB0aGUgd29yZHMKJnF1b3Q7ZW5kLXVzZXImcXVvdDsgYW5kICZxdW90O2V4dGVuZGVyJnF1b3Q7LjwvcD4KPGgzPlN1cHBvcnQgZm9yIFByZXZpb3VzIFJlbGVhc2VzPC9oMz4KPHA+QWZ0ZXIgbXVjaCBkaXNjdXNzaW9uIGFyb3VuZCBzdXBwb3J0LCB3aGF0IGl0IG1lYW5zLCBhbmQgdGhlIHBvdGVudGlhbCBmb3IgYW4KdW5yZWFzb25hYmxlIGJ1cmRlbiBvbiB0aGUgdm9sdW50ZWVycyB3aG8gd29yayBvbiB0aGUgb3BlbiBzb3VyY2UgcHJvamVjdHMsIHdlCmNvbmNsdWRlZCB0aGF0OjwvcD4KPG9sPgogIDxsaT5Qcm9qZWN0cyBhcmUgZXhwZWN0ZWQgdG8gZm9sbG93IHRoZSBvcGVuIHNvdXJjZSBkZXZlbG9wbWVudCBtb2RlbCBmb3IKICAgIHRoZWlyIGN1cnJlbnQgbWFqb3IgcmVsZWFzZSwgYW5kPC9saT4KICA8bGk+UHJvamVjdHMgYXJlIGV4cGVjdGVkIHRvIGhlbHAgZWR1Y2F0ZSB0aGVpciBjb21tdW5pdGllcyBvbiB3aGF0IHRoZSBvcGVuCiAgICBzb3VyY2UgZGV2ZWxvcG1lbnQgbW9kZWwgaXMsIGFuZCB3aGF0IGl0IG1lYW5zIGZvciBzdXBwb3J0LiBUaGUgZnVuZGFtZW50YWwKICAgIHRoaW5nIGl0IG1lYW5zIGZvciBzdXBwb3J0IGlzIHRoYXQgcHJvamVjdHMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gdGhlIHNhbWUKICAgIHdheSB0aGF0IGNvbW1lcmNpYWwgcHJvamVjdHMgYXJlIHN1cHBvcnRlZCAtIHRoZSBjb21tdW5pdHkgaXMgZXhwZWN0ZWQgdG8KICAgIHBhcnRpY2lwYXRlIGluIHRoZSBzdXBwb3J0IGlmIHRoZSBjb21tdW5pdHkgd2FudHMgdG8gYmVuZWZpdCBmcm9tIHRoZQogICAgc3VwcG9ydC48L2xpPgo8L29sPgo8cD5XZSBjb25jbHVkZWQgdGhhdCBwcm9qZWN0cyBwYXJ0aWNpcGF0aW5nIGluIHRoZSBhbm51YWwgcmVsZWFzZSBhcmUKZWZmZWN0aXZlbHkgc2lnbmluZyB1cCBmb3IgdGhlIHR3byByZWxhdGVkIG1haW50ZW5hbmNlIHJlbGVhc2VzIGFzIHdlbGwKKGFsdGhvdWdoIHRoZXJlIGlzIG5vIHJlcXVpcmVtZW50IGZvciBuZXcgYml0cyBmb3IgdGhlIG1haW50ZW5hbmNlIHJlbGVhc2VzIGFzCmxvbmcgYXMgdGhlIG9sZCBiaXRzIGNvbnRpbnVlIHRvIHdvcmspLjwvcD4KPGgzPlVzZXIgSW50ZXJmYWNlIFdvcmtpbmcgR3JvdXA8L2gzPgo8cD5Cb2IgRnJhc2VyIGdhdmUgYSByZXBvcnQgb24gdGhlIFVzZXIgSW50ZXJmYWNlIFdvcmtpbmcgR3JvdXAuIEJvYiBhc2tzIHRoYXQKdGhlIFBsYW5uaW5nIENvdW5jaWwgcHJvbW90ZSB0aGUgZXhpc3RlbmNlIG9mIHRoZSB3b3JraW5nIGdyb3VwIHRvIHRoZWlyIHByb2plY3QKdGVhbXMuIFRoZSB3b3JraW5nIGdyb3VwIGlzIG1ha2luZyBhIHB1c2ggbm93IHRvIGFmZmVjdCB0aGUgTTUgYW5kIE02IHJlbGVhc2VzCm9mIHRoZSBwcm9qZWN0cyBmb3IgdGhlIEV1cm9wYSB0aW1lLWZyYW1lLCBhbmQgdGhlbiBhIGJpZ2dlciBwdXNoIGZvciBuZXh0CnllYXIncyBHYW55bWVkZSByZWxlYXNlLjwvcD4KPHA+PGI+PHU+QUNUSU9OPC91PjogPC9iPlthbGxdIEV4cGxhaW4gdGhlIFVzZXIgSW50ZXJmYWNlIFdvcmtpbmcgR3JvdXAgdG8geW91cgpwcm9qZWN0IHRlYW1zIChwcm9qZWN0IGRldiBsaXN0cz8pPC9wPgo8cD48Yj48dT5BQ1RJT048L3U+OiA8L2I+W0Jqb3JuIEZCXSBnZXQgdGhlIHNsaWRlcyBmcm9tIEJvYiB0byBhdHRhY2ggdG8gdGhpcyB3ZWIKcGFnZS48L3A+CjxoMz5FdXJvcGEgQnVpbGQgU29mdHdhcmU8L2gzPgo8cD5Cam9ybiBnaXZlcyBhIHNob3J0IHJlcG9ydDogbm90IGRvbmUgeWV0LiAmcXVvdDtTb29uLCZxdW90OyBoZSBwcm9taXNlcy4KJnF1b3Q7QmVmb3JlIE01PywmcXVvdDsgc29tZW9uZSBhc2tzLiAmcXVvdDtZZXMmcXVvdDs8L3A+CjxoMz5JbnRlcm5hdGlvbmFsaXphdGlvbiBvZiBFY2xpcHNlIFByb2plY3RzPC9oMz4KPHA+Rm9yIHllYXJzIElCTSBoYXMgcHJvdmlkZWQgdHJhbnNsYXRpb25zIG9mIHRoZSBFY2xpcHNlIFBsYXRmb3JtLiBJQk0gaGFzCmRlY2lkZWQgbm90IHRvIGRvIHRoaXMgYWxvbmUgYW55bW9yZS4gSUJNIHdpbGwgY29udHJpYnV0ZSByZXNvdXJjZXMgdG8gdGhlCmludGVybmF0aW9uYWxpemF0aW9uIGVmZm9ydCwgYnV0IHdpbGwgbm90IGxlYWQgbm9yIHByb3ZpZGUgYSBtYWpvcml0eSBvZiB0aGUKcmVzb3VyY2VzIGZvciBFdXJvcGEuIFRodXMsIHVubGVzcyB0aGUgUGxhbm5pbmcgQ291bmNpbCBzdGVwcyB1cCB0byBkbyBwbGFuIGFuZApleGVjdXRlIHRoZSB0cmFuc2xhdGlvbnMsIHRoZSBFdXJvcGEgcHJvamVjdHMgd2lsbCBub3QgYmUgdHJhbnNsYXRlZC4gUGVyaW9kLjwvcD4KPHA+UGF1bCBDb2x0b24gc2hvd2VkIHVzIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXB0YW5hLmNvbS9ibG9nLz9wPTc2Ij5BcHRhbmEncwp3aWtpLWxpa2Ugc29sdXRpb24gZm9yIHRyYW5zbGF0aW9uczwvYT4uIFRoaXMgd2FzIHZlcnkgY29vbCBhbmQgd2UgYWxsIGp1bXBlZCBvbgp0aGUgaWRlYSBhdCBvbmNlIGFzIGJlaW5nIGEgZ3JlYXQgd2F5IGZvciB0aGUgY29tbXVuaXR5IHRvIHBhcnRpY2lwYXRlLiBUaGVyZQp3YXMgc29tZSBjb25jZXJuIGZyb20gdGhlIGNvcnBvcmF0ZSBtZW1iZXJzIHRoYXQgdGhlIHF1YWxpdHkgd291bGQgbm90IGJlCnN1ZmZpY2llbnQgZm9yIHRoZW0sIHNvIHRoZSBvbmUgdHdpc3Qgd2UgdGhvdWdodCBvZiB3YXMgdG8gaGF2ZSBhbnkgYnVnemlsbGEKYWNjb3VudCBhYmxlIHRvIGNvbnRyaWJ1dGUgKGp1c3QgbGlrZSBhIHBhdGNoKSBidXQgaGF2ZSBjb21taXR0ZXJzIChsYW5ndWFnZQpjb21taXR0ZXJzKSBnaXZlIHRoZSBmaW5hbCBhcHByb3ZhbCBmb3IgaW5jbHVzaW9uIGluIHRoZSBidWlsZHMgKGp1c3QgbGlrZSBhCnBhdGNoKS4gT3IgYXQgbGVhc3QgdG8gZW5hYmxlIHRoaXMgb24gYSBsYW5ndWFnZS1ieS1sYW5ndWFnZSBiYXNpcy4gUGF1bCBvZmZlcmVkCnRoZSBzb2Z0d2FyZSB0byB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLjwvcD4KPHA+VGhlIENvdW5jaWwgZmVlbHMgdGhhdCB0aGVyZSBhcmUgZm91ciBvcHRpb25zIGZvciB0cmFuc2xhdGlvbnM6PC9wPgo8b2w+CiAgPGxpPih0b2RheSdzIGRlZmF1bHQpIG5vIHRyYW5zbGF0aW9uczsgRW5nbGlzaCBvbmx5OyBjb21wYW5pZXMgd2lsbCBkbyB0aGVpcgogICAgb3duIHByb3ByaWV0YXJ5IHRyYW5zbGF0aW9uczwvbGk+CiAgPGxpPkFwdGFuYSB0b29sIGZvciBhbnkgYnVnemlsbGEgbG9naW47IEV1cm9wYSBkb3dubG9hZCBmb3IgdXNlcnMgd2lsbCBoYXZlCiAgICByYW5kb20gcXVhbGl0eSB0cmFuc2xhdGlvbnM7IGNvbXBhbmllcyB3aWxsIGRvIHRoZWlyIG93biBwcm9wcmlldGFyeQogICAgdHJhbnNsYXRpb25zPC9saT4KICA8bGk+QXB0YW5hIHRvb2wgZm9yIGFueSBidWd6aWxsYSBsb2dpbiB3aXRoIGNvbW1pdHRlciByZXZpZXctYXBwbHk7IEV1cm9wYQogICAgdHJhbnNsYXRpb25zIHdpbGwgYmUgZmFpcmx5IGdvb2Q8L2xpPgogIDxsaT5BbiBFY2xpcHNlIFRyYW5zbGF0aW9ucyBwcm9qZWN0IHdpdGggcHJvamVjdCBsZWFkZXJzaGlwIGFuZCBmdWxsLXRpbWUKICAgIHJlc291cmNlczwvbGk+Cjwvb2w+CjxwPk91ciBnb2FsIHNob3VsZCBiZSB0byBmb2xsb3cgdGhlIG9wZW4gc291cmNlIHByaW5jaXBsZXMgYXMgbXVjaCBhcyBwb3NzaWJsZQp3aXRoIHJlc3BlY3QgdG8gdHJhbnNsYXRpb25zIC0gdG8gYmUgb3BlbiBhbmQgdHJhbnNwYXJlbnQgYW5kIHRvIGludm9sdmUgdGhlCmxhcmdlciBjb21tdW5pdHkuPC9wPgo8cD48Yj48dT5BQ1RJT048L3U+OiA8L2I+W0Jqb3JuIEZCXSBXb3JrIHdpdGggUGF1bCB0byBzZWUgaG93IHdlIGNhbiBpbmNvcnBvcmF0ZQpBcHRhbmEncyBzb2Z0d2FyZSBvciBzb21ldGhpbmcgc2ltaWxhciBmb3IgcHJvamVjdHMgdG8gdXNlLjwvcD4KPHA+VGhlIENvdW5jaWwgZGVjaWRlZCB0byBmb2xsb3cgdXAgb24gdHJhbnNsYXRpb25zIGluIHR3byBwYXJ0czogKDEpIGFzayB0aGVpcgoobW9zdGx5IGNvcnBvcmF0ZSkgZnJhbWV3b3JrIHVzZXJzIHdoaWNoIHRyYW5zbGF0aW9ucyBhcmUgbmVjZXNzYXJ5OyBhbmQgKDIpCnJlcG9ydGluZyB0aGUgaW5jcmVtZW50YWwgbnVtYmVyIG9mIHN0cmluZ3MgdGhhdCB3aWxsIG5lZWQgdHJhbnNsYXRpb24gZm9yCkV1cm9wYSBmb3IgdGhlaXIgc3BlY2lmaWMgcHJvamVjdC4gKE5vdCBhbGwgdGhlIHN0cmluZ3MgaW4gdGhlIHByb2plY3QsIGp1c3QKdGhvc2UgdGhhdCBhcmUgbmV3IG9yIGhhdmUgY2hhbmdlZC4pPC9wPgo8cD48Yj5BQ1RJT04gSVRFTTogPC9iPlthbGxdIFJlcG9ydCB0byBCam9ybiBieSBNb25kYXkgdGhlIDI5dGggdGhlIGluY3JlbWVudGFsCm51bWJlciBvZiBzdHJpbmdzIGluIHlvdXIgcHJvamVjdC48L3A+CjxoMz5SZXBvcnQgRnJvbSB0aGUgT3JiaXQgUHJvamVjdDwvaDM+CjxwPkRhdmlkIFdpbGxpYW1zIHJlcG9ydHMgdGhhdCB0aGVyZSBhcmUgZmlmdGVlbiAoMTUpIGJ1bmRsZXMgYW5kIHRoZXJlIGlzIGEKYnVpbGQgcHJvY2VzcyB0aGF0IHByb2R1Y2VzIHppcHMuIEN1cnJlbnRseSBwcm9qZWN0cyB0aGF0IGNvbnN1bWUgT3JiaXQgYnVuZGxlcwptdXN0IGRvd25sb2FkIHRoZSB6aXBzIGFuZCBpbmNvcnBvcmF0ZSB0aGVtIGluIHRoZWlyIG93biB1cGRhdGUgc2l0ZXMuIFJpY2gKR3JvbmJhY2sgY291bnRlciBhcmd1ZXMgdGhhdCBPcmJpdCBzaG91bGQgcHJvZHVjZSBhbiB1cGRhdGUgc2l0ZSwgaWYgb25seSBmb3IKdGhlIGF1dG9tYXRlZCBidWlsZHMsIGFuZCB0aGVuIHRoZSBidWlsZHMgY2FuIGp1c3QgZ2V0IGV2ZXJ0aGluZyB0aGV5IG5lZWQgdmlhCnRoZSB1cGRhdGUgc2l0ZS48L3A+CjxwPjxiPjx1PkFDVElPTjwvdT46IDwvYj5bUmljaCBHXSBFbnRlciBhIGJ1Z3ppbGxhIHRvIHJlcXVlc3QgdGhhdCB0aGUgT3JiaXQgcHJvamVjdAppbmNsdWRlIGFuIHVwZGF0ZSBzaXRlIGZvciBhdXRvbWF0ZWQgYnVpbGRzIHRvIGNvbnN1bWUuIC0gPGVtPjxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0xNzE5NTUiPmJ1ZyAxNzE5NTU8L2E+PC9lbT48L3A+CjxoMz5Sb2FkbWFwIENvbnRyaWJ1dGlvbjwvaDM+CjxwPlRoZSBQbGFubmluZyBDb3VuY2lsIDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2NvdW5jaWxzL3JvYWRtYXAucGhwIj5Sb2FkbWFwPC9hPgpjb250cmlidXRpb24gaXMgdGhlIGZyb3plbi1pbi10aW1lIGFnZ3JlZ2F0aW9uIG9mIGFsbCB0aGUgRXVyb3BhIHByb2plY3RzJwpwbGFucy48L3A+CjxwPjxiPjx1PkFDVElPTjwvdT46IDwvYj5bYWxsXSBNYWtlIHN1cmUgeW91ciBwcm9qZWN0IHBsYW4gaXMgYXZhaWxhYmxlIG9uIHlvdXIKd2Vic2l0ZS4gRW50ZXIgdGhlIHVybCB0byB5b3VyIHBsYW4gaW4gd2lraS4gVGhlc2UgYXJlIGR1ZSBieSBGZWIgMm5kIGluIG9yZGVyCnRvIGJlIGluY29ycG9yYXRlZCBpbnRvIHRoZSBSb2FkbWFwLjwvcD4KPGgzPkNvbmZvcm1pbmcgUHJvamVjdCBXZWJzaXRlczwvaDM+CjxwPkJqb3JuIGV4cGxhaW5lZCB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9vcmcvZG9jdW1lbnRzL0VjbGlwc2VfUHJvamVjdF9SZXF1aXJlbWVudHMuaHRtbCI+Qm9hcmQncwpyZXNvbHV0aW9uIGFib3V0IHdlYnNpdGVzPC9hPiBhbmQgZXhwbGFpbmVkIGhpcyBleHBlcmllbmNlIHRvIGRhdGUgd2l0aApjb252aW5jaW5nIFRlY2hub2xvZ3kgcHJvamVjdHMgdG8gY29uZm9ybS4gSGUgZnVydGhlciBleHBsYWluZWQgaGlzIDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0xNjQ3MjAiPm5hZy1vLW1hdGljCnNvZnR3YXJlPC9hPiBhcyB0aGUgbmV4dCBsZXZlbCBvZiBjb252aW5jaW5nIHByb2plY3RzIHRvIGNvbmZvcm0gYW5kIHByb21pc2VkIHRvCmV4dGVuZCB0aGlzIGVmZm9ydCB0byBhbGwgcHJvamVjdHMgb3ZlciB0aGUgY291cnNlIG9mIHRoZSBuZXh0IHNpeCBtb250aHMuPC9wPgo8cD5Tb21lIHByb2plY3RzJyByZXNwb25zZXMgdG8gdGhpcyB3ZXJlICZxdW90O2htbSwgSSB0aGluayBJJ2xsIHRhbGsgdG8gbXkKQm9hcmQgcmVwIHRvIGdldCB0aGlzIHBvbGljeSBjaGFuZ2VkJnF1b3Q7IDotKTwvcD4KPGgzPlRlc3RpbmcgYW5kIFRlc3RpbmcgRnJhbWV3b3JrczwvaDM+CjxwPlRpbSBXYWduZXIgd2FzIG5vdCBhYmxlIHRvIGF0dGVuZCBzbyBKZXNzIGF0dGVtcHRlZCB0byBleHBsYWluIFRpbSdzIGlkZWFzLgpBZnRlciBkaXNjdXNzaW9uLCB3ZSBjb25jbHVkZWQgdGhyZWUgdGhpbmdzOjwvcD4KPG9sPgogIDxsaT5XZSBuZWVkIHRvIGNhcmVmdWxseSBkaXN0aW5ndWlzaCBiZXR3ZWVuIHN1cHBvcnRlZCBjb25maWd1cmF0aW9ucyAoZm9yCiAgICB0ZXN0aW5nKSBhbmQgdW5zdXBwb3J0ZWQgY29uZmlndXJhdGlvbnMuIElmIGl0IGlzIGEgc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24KICAgIGFuZCBzb21lb25lIHRlc3RzIGl0IGFuZCBmaW5kcyBhIGJ1ZywgdGhlcmUgaXMgYW4gaW1wbGllZCBhZ3JlZW1lbnQgdGhhdCB0aGUKICAgIHByb2plY3Qgd2lsbCBmaXggdGhhdCBidWcuIEtldmluIEhhYWxhbmQgc2F5cyB0aGF0IHRvIGRvIG90aGVyd2lzZSB3b3VsZCBiZQogICAgdmlvbGF0aW5nIGEgdHJ1c3QuPC9saT4KICA8bGk+V2Ugc2hvdWxkIHVzZSB0aGUgT3BlbiBTb3VyY2UgV2F5IGFzIG11Y2ggYXMgcG9zc2libGUgZm9yIHRlc3RzLiBXZSBsaWtlCiAgICB0aGUgQ1BBTiBzY2hlbWUgb2YgaGF2aW5nIGEgY29tbXVuaXR5IGRyaXZlbiB0ZXN0aW5nIGdyaWQuIFByb2plY3RzIGNhbgogICAgc3BlY2lmeSB3aGljaCBwbGF0Zm9ybXMgYXJlIG9mIGludGVyZXN0LCBhbmQgb2YgY291cnNlIHRoZSBkZWZpbml0aW9uIG9mCiAgICBwbGF0Zm9ybSB2YXJpZXMgYnkgcHJvamVjdDogZm9yIGV4YW1wbGUsIHRoZSBQREUgcGxhdGZvcm1zIGluY2x1ZGUgb3BlcmF0aW5nCiAgICBzeXN0ZW1zIGFuZCBKVk1zIHdoaWxlIHRoZSBXVFAgcGxhdGZvcm1zIGluY2x1ZGUgd2ViIHNlcnZlcnMuPC9saT4KICA8bGk+V2Ugc2hvdWxkIGF2b2lkIGhhdmluZyBhIGNlbnRyYWxpemVkIHJhY2sgb2Ygc2VydmVycy9jb25maWd1cmF0aW9ucyBhbmQKICAgIGVtcGhhc2l6ZSBoYXZpbmcgYSBjb21tdW5pdHktcGFydGljaXBhdGlvbiB0ZXN0aW5nIGVmZm9ydC48L2xpPgo8L29sPgo8aDM+Q29tbWl0dGVyLUNlbnRyaWMgV29ya3Nob3AgSWRlYXM8L2gzPgo8cD5UaGUgUGxhbm5pbmcgQ291bmNpbCBkZWNsYXJlcyB0aGF0IGEgd29ya3Nob3AgYXJvdW5kIHRoZSB1cGRhdGUgbWFuYWdlciB3b3VsZApiZSBhIGdvb2QgdGhpbmcuIFRoZSBidWlsZCB3b3Jrc2hvcCB3YXMgc3VjY2Vzc2Z1bCBiZWNhdXNlIHRoZSBwcm9ibGVtIHJlcXVpcmVkCmEgY3Jvc3MtcHJvamVjdCBzb2x1dGlvbi4gVGhlIHVwZGF0ZSBtYW5hZ2VyIGlzbid0IHF1aXRlIHRoZSBzYW1lIGJlY2F1c2UgaXQKZG9lc24ndCByZXF1aXJlIGEgY3Jvc3MtcHJvamVjdCBzb2x1dGlvbiwgYnV0IGl0IGlzIG5lZWRlZCBieSBhbGwgdGhlIHByb2plY3RzCnRodXMgbWFueSBhcmUgZWFnZXIgdG8gaGVscC4mbmJzcDs8L3A+CjxwPlRoaXMgd29ya3Nob3Agd2lsbCBiZSBmb3IgcGVvcGxlIHdobyBhcmUgaW50ZW5kaW5nIHRvIGJlY29tZSBjb21taXR0ZXJzIG9uCnRoZSB1cGRhdGUgY29tcG9uZW50LiBUaGlzIHdpbGwgbm90IGJlIGEgcmVxdWlyZW1lbnRzIGdhdGhlcmluZyBldmVudCAtIHRoaXMgaXMKYW4gZXZlbnQgZm9yIGRvZXJzOiBwZW9wbGUgY29tbWl0dGVkIHRvIGJlaW5nIGNvbW1pdHRlcnMuPC9wPgo8cD5UaGUgUGxhbm5pbmcgQ291bmNpbCByZWNvbW1lbmRzIHRoYXQgSnVseS1BdWd1c3Qgd291bGQgYmUgdGhlIGJlc3QgdGltZSBmcmFtZQpmb3IgdGhpcyBlZmZvcnQ6IGFmdGVyIEV1cm9wYSwgYnV0IGVhcmx5IGVub3VnaCBpbiBHYW55bWVkZSB0byBtYWtlIGEKZGlmZmVyZW5jZS48L3A+CjxwPjxiPjx1PkFDVElPTjwvdT46IDwvYj5bQmpvcm4gRkJdIHBhc3MgdGhlc2UgaWRlYXMgYWxvbmcgdG8gV2FyZDwvcD4KPGgzPkV1cm9wYSBSZWxlYXNlIFJldmlldzwvaDM+CjxwPlRoZSBFdXJvcGEgUmVsZWFzZSBSZXZpZXcgd2lsbCBiZSBXZWRuZXNkYXksIEp1bmUgNnRoLCA3YW0gUGFjaWZpYyB0aW1lLiBUaGUKcmVsZWFzZSByZXZpZXcgc2xpZGUgZGVja3MgKHRoZSB3aG9sZSBkZWNrIHdpdGggYWxsIHRoZSBjaGVja2xpc3QgaXRlbXMpIGFyZSBkdWUKYnkgTWF5IDMwdGguPC9wPgo8cD48Yj5BQ1RJT04gSVRFTTogPC9iPlthbGxdIE1hcmsgeW91ciBjYWxlbmRhcnM8L3A+CjxoMz5GdXR1cmUgU2ltdWx0YW5lb3VzIFJlbGVhc2VzPC9oMz4KPHA+V2UgY2hvc2UgJnF1b3Q7R2FueW1lZGUmcXVvdDsgZm9yIHRoZSAyMDA4IHJlbGVhc2UgYW5kICZxdW90O0lvJnF1b3Q7IGZvciB0aGUKMjAwOSByZWxlYXNlLjwvcD4KPHA+PGk+Tm90ZXMgdGFrZW4gYW5kIHBvc3RlZCBieSBCam9ybiBGcmVlbWFuLUJlbnNvbjwvaT48L3A+CiAgICAgIDwvZGl2PgogIDwvZGl2Pgo8P3BocAoJJGh0bWwgPSBvYl9nZXRfY29udGVudHMoKTsKCW9iX2VuZF9jbGVhbigpOwoKCSMgR2VuZXJhdGUgdGhlIHdlYiBwYWdlCgkkQXBwLT5nZW5lcmF0ZVBhZ2UoJHRoZW1lLCAkTWVudSwgJE5hdiwgJHBhZ2VBdXRob3IsICRwYWdlS2V5d29yZHMsICRwYWdlVGl0bGUsICRodG1sKTsKPz4=