Tm90ZQo9PT09CgpUaGlzIGZpbGUgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgcGVvcGxlIHdobyBhcmUgcGVybWl0dGVkIHRvIG1ha2UKY2hhbmdlcyB0byB2YXJpb3VzIHBhcnRzIG9mIHRoZSBjb21waWxlciBhbmQgYXNzb2NpYXRlZCBsaWJyYXJpZXMuCgpQbGVhc2UgZG8gbm90IGNvbnRhY3QgdGhlIHBlb3BsZSBpbiB0aGlzIGZpbGUgZGlyZWN0bHkgdG8gcmVwb3J0CnByb2JsZW1zIGluIEdDQy4KCkZvciBnZW5lcmFsIGluZm9ybWF0aW9uIGFib3V0IEdDQywgcGxlYXNlIHZpc2l0OgoKICBodHRwOi8vZ2NjLmdudS5vcmcKClRvIHJlcG9ydCBwcm9ibGVtcyBpbiBHQ0MsIHBsZWFzZSB2aXNpdDoKCiAgaHR0cDovL2djYy5nbnUub3JnL2J1Z3MuaHRtbAoKTWFpbnRhaW5lcnMKPT09PT09PT09PT0KCgkJCUJsYW5rZXQgV3JpdGUgUHJpdnMuCgpSaWNoYXJkIEVhcm5zaGF3CQkJCXJpY2hhcmQuZWFybnNoYXdAYXJtLmNvbQpSaWNoYXJkIEhlbmRlcnNvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGhAcmVkaGF0LmNvbQpHZW9mZnJleSBLZWF0aW5nCQkJCWdlb2Zma0BnZW9mZmsub3JnClJpY2hhcmQgS2VubmVyCQkJCQlrZW5uZXJAbnl1LmVkdQpKZWZmIExhdwkJCQkJbGF3QHJlZGhhdC5jb20KTWljaGFlbCBNZWlzc25lcgkJCQlnbnVAdGhlLW1laXNzbmVycy5vcmcKSmFzb24gTWVycmlsbAkJCQkJamFzb25AcmVkaGF0LmNvbQpEYXZpZCBTLiBNaWxsZXIJCQkJCWRhdmVtQHJlZGhhdC5jb20KTWFyayBNaXRjaGVsbAkJCQkJbWFya0Bjb2Rlc291cmNlcnkuY29tCkJlcm5kIFNjaG1pZHQJCQkJCWJlcm5kLnNjaG1pZHRAYW5hbG9nLmNvbQpKaW0gV2lsc29uCQkJCQl3aWxzb25Ac3BlY2lmaXhpbmMuY29tCgoKCQkJQ1BVIFBvcnQgTWFpbnRhaW5lcnMJKENQVSBhbHBoYWJldGljYWwgb3JkZXIpCgphbHBoYSBwb3J0CQlSaWNoYXJkIEhlbmRlcnNvbglydGhAcmVkaGF0LmNvbQphcm0gcG9ydAkJTmljayBDbGlmdG9uCQluaWNrY0ByZWRoYXQuY29tCmFybSBwb3J0CQlSaWNoYXJkIEVhcm5zaGF3CXJpY2hhcmQuZWFybnNoYXdAYXJtLmNvbQphcm0gcG9ydAkJUGF1bCBCcm9vawkJcGF1bEBjb2Rlc291cmNlcnkuY29tCmF2ciBwb3J0CQlEZW5pcyBDaGVydHlrb3YJCWRlbmlzY0BvdmVydGEucnUKYXZyIHBvcnQJCUFuYXRvbHkgU29rb2xvdgkJYWVzb2tAcG9zdC5ydQpiZmluIHBvcnQJCUJlcm5kIFNjaG1pZHQJCWJlcm5kLnNjaG1pZHRAYW5hbG9nLmNvbQpjNHggcG9ydAkJTWljaGFlbCBIYXllcwkJbS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubnoKY3JpcyBwb3J0CQlIYW5zLVBldGVyIE5pbHNzb24JaHBAYXhpcy5jb20KY3J4IHBvcnQJCVBhdWwgV29lZ2VyZXIJCXBhdWwud29lZ2VyZXJAbnNjLmNvbQpmcjMwIHBvcnQJCU5pY2sgQ2xpZnRvbgkJbmlja2NAcmVkaGF0LmNvbQpmcnYgcG9ydAkJQWxkeSBIZXJuYW5kZXoJCWFsZHloQHJlZGhhdC5jb20KZnJ2IHBvcnQJCUFsZXhhbmRyZSBPbGl2YQkJYW9saXZhQHJlZGhhdC5jb20KaDggcG9ydAkJCUplZmYgTGF3CQlsYXdAcmVkaGF0LmNvbQpoOCBwb3J0CQkJS2F6dSBIaXJhdGEJCWthenVAY29kZXNvdXJjZXJ5LmNvbQpocHBhIHBvcnQJCUplZmYgTGF3CQlsYXdAcmVkaGF0LmNvbQpocHBhIHBvcnQJCURhdmUgQW5nbGluCQlkYXZlLmFuZ2xpbkBucmMuY2EKaTM4NiBwb3J0CQlSaWNoYXJkIEhlbmRlcnNvbglydGhAcmVkaGF0LmNvbQppYTY0IHBvcnQJCUppbSBXaWxzb24JCXdpbHNvbkBzcGVjaWZpeGluYy5jb20KaXEyMDAwIHBvcnQJCU5pY2sgQ2xpZnRvbgkJbmlja2NAcmVkaGF0LmNvbQptMzJjIHBvcnQJCURKIERlbG9yaWUJCWRqQHJlZGhhdC5jb20KbTMyciBwb3J0CQlOaWNrIENsaWZ0b24JCW5pY2tjQHJlZGhhdC5jb20KbTY4aGMxMSBwb3J0CQlTdGVwaGFuZSBDYXJyZXoJCXN0Y2FycmV6QG5lcmltLmZyCm02OGsgcG9ydCAoPykJCUplZmYgTGF3CQlsYXdAcmVkaGF0LmNvbQptNjhrIHBvcnQJCUFuZHJlYXMgU2Nod2FiCQlzY2h3YWJAc3VzZS5kZQptNjhrLW1vdG9yb2xhLXN5c3YgcG9ydAlQaGlsaXBwZSBEZSBNdXl0ZXIJcGhkbUBtYWNxZWwuYmUKbWNvcmUgcG9ydAkJTmljayBDbGlmdG9uCQluaWNrY0ByZWRoYXQuY29tCm1pcHMgcG9ydCAgICAgICAgICAgICAgIEVyaWMgQ2hyaXN0b3BoZXIgICAgICAgIGVjaHJpc3RvQGFwcGxlLmNvbQptaXBzIHBvcnQJCVJpY2hhcmQgU2FuZGlmb3JkCXJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbQptbWl4IHBvcnQJCUhhbnMtUGV0ZXIgTmlsc3NvbglocEBiaXRyYW5nZS5jb20KbW4xMDMwMCBwb3J0CQlKZWZmIExhdwkJbGF3QHJlZGhhdC5jb20KbW4xMDMwMCBwb3J0CQlBbGV4YW5kcmUgT2xpdmEJCWFvbGl2YUByZWRoYXQuY29tCm10IHBvcnQJCQlBbGR5IEhlcm5hbmRlegkJYWxkeWhAcmVkaGF0LmNvbQptdCBwb3J0CQkJTmF0aGFuIFNpZHdlbGwJCW5hdGhhbkBjb2Rlc291cmNlcnkuY29tCnBkcDExIHBvcnQJCVBhdWwgS29uaW5nCQluaTFkQGFycmwubmV0CnJzNjAwMCBwb3J0CQlHZW9mZiBLZWF0aW5nCQlnZW9mZmtAZ2VvZmZrLm9yZwpyczYwMDAgcG9ydAkJRGF2aWQgRWRlbHNvaG4JCWRqZUB3YXRzb24uaWJtLmNvbQpyczYwMDAgdmVjdG9yIGV4dG5zCUFsZHkgSGVybmFuZGV6CQlhbGR5aEByZWRoYXQuY29tCnMzOTAgcG9ydAkJSGFydG11dCBQZW5uZXIJCWhwZW5uZXJAZGUuaWJtLmNvbQpzMzkwIHBvcnQJCVVscmljaCBXZWlnYW5kCQl1d2VpZ2FuZEBkZS5pYm0uY29tCnNoIHBvcnQJCQlKb2VybiBSZW5uZWNrZQkJam9lcm4ucmVubmVja2VAc3QuY29tCnNoIHBvcnQJCQlBbGV4YW5kcmUgT2xpdmEJCWFvbGl2YUByZWRoYXQuY29tCnNoIGxpYnJhcmllcy9jb25maWd1cnkJS2F6IEtvamltYQkJa2tvamltYUBnY2MuZ251Lm9yZwpzcGFyYyBwb3J0CQlSaWNoYXJkIEhlbmRlcnNvbglydGhAcmVkaGF0LmNvbQpzcGFyYyBwb3J0CQlEYXZpZCBTLiBNaWxsZXIJCWRhdmVtQHJlZGhhdC5jb20Kc3BhcmMgcG9ydAkJSmFrdWIgSmVsaW5lawkJamFrdWJAcmVkaGF0LmNvbQpzcGFyYyBwb3J0CQlFcmljIEJvdGNhem91CQllYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnIKdjg1MCBwb3J0CQlOaWNrIENsaWZ0b24JCW5pY2tjQHJlZGhhdC5jb20KdmF4IHBvcnQJCURhdmUgQW5nbGluCQlkYXZlLmFuZ2xpbkBucmMuY2EKdmF4IHBvcnQJCU1hdHQgVGhvbWFzCQltYXR0QDNhbS1zb2Z0d2FyZS5jb20KeDg2LTY0IHBvcnQJCUphbiBIdWJpY2thCQlqaEBzdXNlLmN6CnhzdG9ybXkxNiBwb3J0CQlHZW9mZnJleSBLZWF0aW5nCWdlb2Zma0BnZW9mZmsub3JnCnh0ZW5zYSBwb3J0CQlCb2IgV2lsc29uCQlib2Iud2lsc29uQGFjbS5vcmcKCgkJCU9TIFBvcnQgTWFpbnRhaW5lcnMJKE9TIGFscGhhYmV0aWNhbCBvcmRlcikKCmRhcndpbiBwb3J0CQlEYWxlIEpvaGFubmVzZW4JCWRhbGVqQGFwcGxlLmNvbQpkYXJ3aW4gcG9ydAkJTWlrZSBTdHVtcAkJbXJzQGFwcGxlLmNvbQpkYXJ3aW4gcG9ydAkJU3RhbiBTaGVicwkJc2hlYnNAYXBwbGUuY29tCkRKR1BQCQkJREogRGVsb3JpZQkJZGpAZGVsb3JpZS5jb20KZnJlZWJzZAkJCUxvcmVuIEouIFJpdHRsZQkJbGpyaXR0bGVAYWNtLm9yZwpocHV4CQkJRGF2ZSBBbmdsaW4JCWRhdmUuYW5nbGluQG5yYy5jYQpocHV4CQkJU3RldmUgRWxsY2V5CQlzamVAY3VwLmhwLmNvbQppcml4LCBvc2YJCVJhaW5lciBPcnRoCQlyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREUKbmV0YnNkCQkJSmFzb24gVGhvcnBlCQl0aG9ycGVqQG5ldGJzZC5vcmcKc2NvNSwgdW5peHdhcmUsIHNjbyB1ZGsJS2VhbiBKb2huc3RvbgkJamtqQHNjby5jb20Kc2gtbGludXgtZ251CQlLYXogS29qaW1hCQlra29qaW1hQGdjYy5nbnUub3JnClJURU1TIFBvcnRzCQlKb2VsIFNoZXJyaWxsCQlqb2VsQG9hcmNvcnAuY29tClJURU1TIFBvcnRzCQlSYWxmIENvcnNlcGl1cwkJcmFsZi5jb3JzZXBpdXNAcnRlbXMub3JnClZ4V29ya3MgcG9ydHMJCU5hdGhhbiBTaWR3ZWxsCQluYXRoYW5AY29kZXNvdXJjZXJ5LmNvbQp3aW5kb3dzLCBjeWd3aW4sIG1pbmd3CUNocmlzdG9waGVyIEZheWxvcgljZ2ZAZ2NjLmdudS5vcmcKd2luZG93cywgY3lnd2luLCBtaW5ndwlEYW5ueSBTbWl0aAkJZGFubnlzbWl0aEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQKCgkJCUxhbmd1YWdlIEZyb250IEVuZHMgTWFpbnRhaW5lcnMKCkMgZnJvbnQgZW5kL0lTTyBDOTkJSm9zZXBoIE15ZXJzCQlqc21AcG9seW9taW5vLm9yZy51awpDIGZyb250IGVuZC9JU08gQzk5CVJpY2hhcmQgSGVuZGVyc29uCXJ0aEByZWRoYXQuY29tCkFkYSBmcm9udCBlbmQJCUdlZXJ0IEJvc2NoCQlib3NjaEBnbmF0LmNvbQpBZGEgZnJvbnQgZW5kCQlSb2JlcnQgRGV3YXIJCWRld2FyQGduYXQuY29tCkFkYSBmcm9udCBlbmQJCUFybmF1ZCBDaGFybGV0CQljaGFybGV0QGFjdC1ldXJvcGUuZnIKZm9ydHJhbiA5NQkJUGF1bCBCcm9vawkJcGF1bEBjb2Rlc291cmNlcnkuY29tCmZvcnRyYW4gOTUJCVRob21hcyBLb2VuaWcJCVRob21hcy5Lb2VuaWdAb25saW5lLmRlCmZvcnRyYW4gOTUJCVRvb24gTW9lbmUJCXRvb25AbW9lbmUuaW5kaXYubmx1dWcubmwKZm9ydHJhbiA5NQkJSmVycnkgRGVMaXNsZQkJanZkZWxpc2xlQGdjYy5nbnUub3JnCmZvcnRyYW4gOTUJCUZyYW7nb2lzLVhhdmllciBDb3VkZXJ0CWNvdWRlcnRAY2xpcHBlci5lbnMuZnIKZm9ydHJhbiA5NSAgICAgICAgICAgICAgQnVkIERhdmlzICAgICAgICAgICAgICAgam1kYXZpc0BsaW5rLmNvbQpmb3J0cmFuIDk1CQlTdGV2ZSBLYXJnbAkJc2drQHRyb3V0bWFzay5hcGwud2FzaGluZ3Rvbi5lZHUKZm9ydHJhbiA5NSAgICAgICAgICAgICAgRXJpayBFZGVsbWFubiAgICAgICAgICAgZXJpay5lZGVsbWFubkBpa2kuZmkKZm9ydHJhbiA5NQkJUGF1bCBUaG9tYXMJCXBhdWx0QGdjYy5nbnUub3JnCmZvcnRyYW4gOTUJCVRvYmlhcyBTY2hs/HRlcgkJdG9iaWFzLnNjaGx1ZXRlckBwaHlzaWsudW5pLW11ZW5jaGVuLmRlCmZvcnRyYW4gOTUJCUphbm5lIEJsb21xdmlzdAkJamJAZ2NjLmdudS5vcmcKYysrCQkJSmFzb24gTWVycmlsbAkJamFzb25AcmVkaGF0LmNvbQpjKysgICAgICAgICAgICAgICAgICAgICBNYXJrIE1pdGNoZWxsCQltYXJrQGNvZGVzb3VyY2VyeS5jb20KYysrCQkJTmF0aGFuIFNpZHdlbGwJCW5hdGhhbkBjb2Rlc291cmNlcnkuY29tCmphdmEJCQlQZXIgQm90aG5lcgkJcGVyQGJvdGhuZXIuY29tCmphdmEJCQlBbmRyZXcgSGFsZXkJCWFwaEByZWRoYXQuY29tCmphdmEJCQlUb20gVHJvbWV5CQl0cm9tZXlAcmVkaGF0LmNvbQptZXJjdXJ5CQkJRmVyZ3VzIEhlbmRlcnNvbglmamhAY3MubXUub3ouYXUKb2JqZWN0aXZlLWMJCVN0YW4gU2hlYnMJCXNoZWJzQGFwcGxlLmNvbQpvYmplY3RpdmUtYwkJT3ZpZGl1IFByZWRlc2N1CQlvdmlkaXVAY3VwLmhwLmNvbQpvYmplY3RpdmUtYy9jKysJCVppZW1vd2l0IExhc2tpCQl6bGFza2lAYXBwbGUuY29tCm9iamVjdGl2ZS1jL2MrKwkJTWlrZSBTdHVtcAkJbXJzQGFwcGxlLmNvbQp0cmVlbGFuZyAgICAgICAgICAgICAgICBUaW0gSm9zbGluZyAgICAgICAgICAgICB0ZWpAbWVsYnBjLm9yZy5hdQp0cmVlbGFuZyAgICAgICAgICAgICAgICBKYW1lcyBBLiBNb3JyaXNvbglwaHl0aG9uQGdjYy5nbnUub3JnCgoJCQlWYXJpb3VzIE1haW50YWluZXJzCgpjcHBsaWIJCQlQZXIgQm90aG5lcgkJcGVyQGJvdGhuZXIuY29tCmxpYmRlY251bWJlcgkJQmVuIEVsbGlzdG9uCQliamVAYXUuaWJtLmNvbQpsaWJnY2oJCQlUb20gVHJvbWV5CQl0cm9tZXlAcmVkaGF0LmNvbQpsaWJnY2oJCQlCcnljZSBNY0tpbmxheQkJbWNraW5sYXlAcmVkaGF0LmNvbQpsaWJnb21wICAgICAgICAgICAgICAgICBSaWNoYXJkIEhlbmRlcnNvbiAgICAgICBydGhAcmVkaGF0LmNvbQpsaWJpYmVydHkJCURKIERlbG9yaWUJCWRqQHJlZGhhdC5jb20KbGliaWJlcnR5CQlJYW4gTGFuY2UgVGF5bG9yCWlhbkBhaXJzLmNvbQpsaWJmZmkgdGVzdHN1aXRlCUFuZHJlYXMgVG9ibGVyCQlhbmRyZWFzdEBnY2MuZ251Lm9yZwpsaWJvYmpjCQkJTmljb2xhIFBlcm8JCW4ucGVyb0BtaS5mbGFzaG5ldC5pdApsaWJvYmpjCQkJQW5kcmV3IFBpbnNraQkJcGluc2tpYUBwaHlzaWNzLnVjLmVkdQpsb29wIGRpc2NvdmVyeQkJTWljaGFlbCBIYXllcwkJbS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubnoKc29mdC1mcAkJCUpvc2VwaCBNeWVycwkJanNtQHBvbHlvbWluby5vcmcudWsKc2NoZWR1bGVyICgrIGhhaWZhKQlKaW0gV2lsc29uCQl3aWxzb25Ac3BlY2lmaXhpbmMuY29tCnNjaGVkdWxlciAoKyBoYWlmYSkJTWljaGFlbCBNZWlzc25lcglnbnVAdGhlLW1laXNzbmVycy5vcmcKc2NoZWR1bGVyICgrIGhhaWZhKQlKZWZmIExhdwkJbGF3QHJlZGhhdC5jb20Kc2NoZWR1bGVyICgrIGhhaWZhKQlWbGFkaW1pciBNYWthcm92CXZtYWthcm92QHJlZGhhdC5jb20KcmVvcmcJCQlKZWZmIExhdwkJbGF3QHJlZGhhdC5jb20KY2FsbGVyLXNhdmUuYwkJSmVmZiBMYXcJCWxhd0ByZWRoYXQuY29tCmNhbGxncmFwaAkJSmFuIEh1Ymlja2EJCWpoQHN1c2UuY3oKZGVidWdnaW5nIGNvZGUJCUppbSBXaWxzb24JCXdpbHNvbkBzcGVjaWZpeGluYy5jb20KZHdhcmYgZGVidWdnaW5nIGNvZGUJSmFzb24gTWVycmlsbAkJamFzb25AcmVkaGF0LmNvbQpjKysgcnVudGltZSBsaWJzCVBhb2xvIENhcmxpbmkJCXBjYXJsaW5pQHN1c2UuZGUKYysrIHJ1bnRpbWUgbGlicyAgICAgICAgR2FicmllbCBEb3MgUmVpcyAgICAgICAgZ2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldApjKysgcnVudGltZSBsaWJzCVVscmljaCBEcmVwcGVyCQlkcmVwcGVyQHJlZGhhdC5jb20KYysrIHJ1bnRpbWUgbGlicwlQaGlsIEVkd2FyZHMJCXBtZUBnY2MuZ251Lm9yZwpjKysgcnVudGltZSBsaWJzCUJlbmphbWluIEtvc25pawkJYmtvekByZWRoYXQuY29tCmMrKyBydW50aW1lIGxpYnMJTG9yZW4gSi4gUml0dGxlCQlsanJpdHRsZUBhY20ub3JnCipzeW50aGV0aWMgbXVsdGlwbHkJVG9yYmpvcm4gR3Jhbmx1bmQJdGVnZUBzd294LmNvbQoqYy10b3J0dXJlCQlUb3Jiam9ybiBHcmFubHVuZAl0ZWdlQHN3b3guY29tCmZpeGluY2x1ZGVzCQlCcnVjZSBLb3JiCQlia29yYkBnbnUub3JnCmdjc2UuYyAJCQlKZWZmIExhdwkJbGF3QHJlZGhhdC5jb20KZ2xvYmFsIG9wdCBmcmFtZXdvcmsJSmVmZiBMYXcJCWxhd0ByZWRoYXQuY29tCmp1bXAuYwkJCURhdmlkIFMuIE1pbGxlcgkJZGF2ZW1AcmVkaGF0LmNvbQp3ZWIgcGFnZXMJCUdlcmFsZCBQZmVpZmVyCQlnZXJhbGRAcGZlaWZlci5jb20KYnVpbGQgc3RhdHVzIGxpc3RzCUphbmlzIEpvaG5zb24JCWphbmlzMTg3QHVzLmlibS5jb20KY29uZmlnLnN1Yi9jb25maWcuZ3Vlc3MJQmVuIEVsbGlzdG9uCQljb25maWctcGF0Y2hlc0BnbnUub3JnCmJhc2ljIGJsb2NrIHJlb3JkZXJpbmcJSmFzb24gRWNraGFyZHQJCWpsZUByaWNlLmVkdQppMThuCQkJUGhpbGlwcCBUaG9tYXMJCXB0aG9tYXNAc3VzZS5kZQppMThuCQkJSm9zZXBoIE15ZXJzCQlqc21AcG9seW9taW5vLm9yZy51awpkaWFnbm9zdGljIG1lc3NhZ2VzCUdhYnJpZWwgRG9zIFJlaXMJZ2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldApidWlsZCBtYWNoaW5lcnkgKCouaW4pCURKIERlbG9yaWUJCWRqQHJlZGhhdC5jb20KYnVpbGQgbWFjaGluZXJ5ICgqLmluKQlOYXRoYW5hZWwgTmVyb2RlCW5lcm9kZW5AZ2NjLmdudS5vcmcKYnVpbGQgbWFjaGluZXJ5ICgqLmluKQlBbGV4YW5kcmUgT2xpdmEJCWFvbGl2YUByZWRoYXQuY29tCmRvY3MgY28tbWFpbnRhaW5lcglHZXJhbGQgUGZlaWZlcgkJZ2VyYWxkQHBmZWlmZXIuY29tCmRvY3MgY28tbWFpbnRhaW5lcglKb3NlcGggTXllcnMJCWpzbUBwb2x5b21pbm8ub3JnLnVrCnByZWRpY3QuZGVmCQlKYW4gSHViaWNrYQkJamhAc3VzZS5jegpjb250cmliL3JlZ3Jlc3Npb24JR2VvZmYgS2VhdGluZwkJZ2VvZmZrQGdlb2Zmay5vcmcKZ2NvdgkJCUphbiBIdWJpY2thCQlqaEBzdXNlLmN6Cmdjb3YJCQlOYXRoYW4gU2lkd2VsbAkJbmF0aGFuQGNvZGVzb3VyY2VyeS5jb20Kb3B0aW9uIGhhbmRsaW5nCQlOZWlsIEJvb3RoCQluZWlsQGRhaWtva3V5YS5jby51awp0ZXN0c3VpdGUJCUphbmlzIEpvaG5zb24JCWphbmlzMTg3QHVzLmlibS5jb20KbWlkZGxlLWVuZAkJUm9nZXIgU2F5bGUJCXJvZ2VyQGV5ZXNvcGVuLmNvbQptaWRkbGUtZW5kCQlJYW4gTGFuY2UgVGF5bG9yCWlhbkBhaXJzLmNvbQp0cmVlLXNzYQkJRGllZ28gTm92aWxsbwkJZG5vdmlsbG9AcmVkaGF0LmNvbQp0cmVlLXNzYQkJQW5kcmV3IE1hY0xlb2QJCWFtYWNsZW9kQHJlZGhhdC5jb20KUFJFCQkJRGFuaWVsIEJlcmxpbgkJZGJlcmxpbkBkYmVybGluLm9yZwpjb2RlIHNpbmtpbmcJCURhbmllbCBCZXJsaW4JCWRiZXJsaW5AZGJlcmxpbi5vcmcKbXVkZmxhcAkJCUZyYW5rIENoLiBFaWdsZXIJZmNoZUByZWRoYXQuY29tCnRyZWUgYnJvd3Nlci91bnBhcnNlcglTZWJhc3RpYW4gUG9wCQlwb3BAY3JpLmVuc21wLmZyCnNjZXYsIGRhdGEgZGVwZW5kZW5jZSAgIERhbmllbCBCZXJsaW4JCWRiZXJsaW5AZGJlcmxpbi5vcmcKc2NldiwgZGF0YSBkZXBlbmRlbmNlCVNlYmFzdGlhbiBQb3AJCXBvcEBjcmkuZW5zbXAuZnIKbGluZWFyIGxvb3AgdHJhbnNmb3JtcwlEYW5pZWwgQmVybGluCQlkYmVybGluQGRiZXJsaW4ub3JnCnByb2ZpbGUgZmVlZGJhY2sJSmFuIEh1Ymlja2EJCWpoQHN1c2UuY3oKdHlwZS1zYWZlIHZlY3RvcnMJTmF0aGFuIFNpZHdlbGwJCW5hdGhhbkBjb2Rlc291cmNlcnkuY29tCmFsaWFzIGFuYWx5c2lzCQlEYW5pZWwgQmVybGluCQlkYmVybGluQGRiZXJsaW4ub3JnCmFsaWFzIGFuYWx5c2lzCQlEaWVnbyBOb3ZpbGxvCQlkbm92aWxsb0ByZWRoYXQuY29tCnJlbG9hZAkJCVVscmljaCBXZWlnYW5kCQl1d2VpZ2FuZEBkZS5pYm0uY29tCmRmcC5jLCByZWxhdGVkCQlCZW4gRWxsaXN0b24JCWJqZUBhdS5pYm0uY29tClJUTCBvcHRpbWl6ZXJzCQlFcmljIEJvdGNhem91CQllYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnIKCk5vdGUgaW5kaXZpZHVhbHMgd2hvIG1haW50YWluIHBhcnRzIG9mIHRoZSBjb21waWxlciBuZWVkIGFwcHJvdmFsIHRvIGNoZWNrCmluIGNoYW5nZXMgb3V0c2lkZSBvZiB0aGUgcGFydHMgb2YgdGhlIGNvbXBpbGVyIHRoZXkgbWFpbnRhaW4uCgoKCQkJV3JpdGUgQWZ0ZXIgQXBwcm92YWwJKGxhc3QgbmFtZSBhbHBoYWJldGljYWwgb3JkZXIpCgpNYXJrIEcuIEFkYW1zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrLmcuYWRhbXNAc3ltcGF0aWNvLmNhCk1hdHQgQXVzdGVybiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1c3Rlcm5AYXBwbGUuY29tCkRhdmlkIEF5ZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuYXllcnNAaW5vZGUuYXQKR2lvdmFubmkgQmFqbwkJCQkJZ2lvdmFubmliYWpvQGdjYy5nbnUub3JnClNjb3R0IEJhbWJyb3VnaAkJCQkJc2NvdHRiQG5ldHdpbmRlci5vcmcKV29sZmdhbmcgQmFuZ2VydGgJCQkJYmFuZ2VydGhAZGVhbGlpLm9yZwpKYW4gQmV1bGljaAkJCQkJamJldWxpY2hAbm92ZWxsLmNvbQpEYXZpZCBCaWxsaW5naHVyc3QJCQkJRGF2aWQuQmlsbGluZ2h1cnN0QHJpb3RpbnRvLmNvbQpMYXVyeW5hcyBCaXZlaW5pcwkJCSAgICAgICAgbGF1cnluYXMuYml2ZWluaXNAZ21haWwuY29tClVyb3MgQml6amFrCQkJCQl1cm9zQGtzcy1sb2thLnNpCkVyaWMgQmxha2UJCQkJCWVyaWNiQGdjYy5nbnUub3JnCkppbSBCbGFuZHkJCQkJCWppbWJAY29kZXNvdXJjZXJ5LmNvbQpQaGlsIEJsdW5kZWxsCQkJCQlwYkBmdXR1cmV0di5jb20KSGFucyBCb2VobQkJCQkJaGJvZWhtQGdjYy5nbnUub3JnClNlZ2hlciBCb2Vzc2Vua29vbAkJCQlzZWdoZXJAa2VybmVsLmNyYXNoaW5nLm9yZwpQYW9sbyBCb256aW5pCQkJCQlib256aW5pQGdudS5vcmcKTmVpbCBCb290aAkJCQkJbmVpbEBkYWlrb2t1eWEuY28udWsKU3RldmVuIEJvc3NjaGVyCQkJCQlzdGV2ZW5iLmdjY0BnbWFpbC5jb20KUm9iZXJ0IEJvd2RpZGdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm93ZGlkZ2VAYXBwbGUuY29tCkpvZWwgQnJvYmVja2VyCQkJCQlicm9iZWNrZXJAZ25hdC5jb20KRGF2ZSBCcm9sbGV5CQkJCQlicm9sbGV5QHJlZGhhdC5jb20KS2V2aW4gQnVldHRuZXIJCQkJCWtldmluYkByZWRoYXQuY29tClRvYmlhcyBCdXJudXMJCQkJCWJ1cm51c0BuZXQtYi5kZQpBbmRyZXcgQ2FnbmV5CQkJCQljYWduZXlAcmVkaGF0LmNvbQpKb2huIENhcnIJCQkJCWpmY0BtaXQuZWR1ClN0ZXZlIENoYW1iZXJsYWluCQkJCXNhY0B0cmFuc21ldGEuY29tCk1pY2hhZWwgQ2hhc3RhaW4JCQkJbWVjLmdudUBtaW5kc3ByaW5nLmNvbQpDaGFuZHJhIENoYXZ2YQkJCQkJY2NoYXZ2YUByZWRoYXQuY29tCldpbGxpYW0gQ29oZW4JCQkJCXdjb2hlbkByZWRoYXQuY29tCkpvc2ggQ29ubmVyCQkJCQlqY29ubmVyQGFwcGxlLmNvbQpSLiBLZWxsZXkgQ29vawkJCQkJa2Nvb2tAZ2NjLmdudS5vcmcKQ2hyaXN0aWFuIENvcm5lbHNzZW4JCQkJY2Nvcm5AY3MudHUtYmVybGluLmRlClJvYmVydG8gQ29zdGEJCQkJCXJvYmVydG8uY29zdGFAc3QuY29tCklhbiBEYWxsCQkJCQlpYW5AYmV3YXJlLmRyb3BiZWFyLmlkLmF1CkRhdmlkIERhbmV5CQkJCQlkZGFuZXlAYXZ0cmV4LmNvbQpaZGVuZWsgRHZvcmFrCQkJCQlkdm9yYWt6QHN1c2UuY3oKTW9oYW4gRW1iYXIJCQkJCWdudXN0dWZmQHRoaXNpc2Nvb2wuY29tCk1hcmMgRXNwaWUJCQkJCWVzcGllQGN2cy5vcGVuYnNkLm9yZwpSYWZhZWwgwXZpbGEgZGUgRXNw7W5kb2xhCQkJcmFmYWVsLmVzcGluZG9sYUBnbWFpbC5jb20KQW5zZ2FyIEVzenRlcm1hbm4JCQkJYW5zZ2FyQHRocGh5LnVuaS1kdWVzc2VsZG9yZi5kZQpEb3VnIEV2YW5zCQkJCQlkamVAdHJhbnNtZXRhLmNvbQpCZXJuaGFyZCBGaXNjaGVyCQkJCXJlcC5ub3BAYW9uLmF0ClRob21hcyBGaXR6c2ltbW9ucwkJCQlmaXR6c2ltQHJlZGhhdC5jb20KQnJpYW4gRm9yZAkJCQkJZm9yZEB2c3MuZnNpLmNvbQpLYXZlaCBHaGF6aQkJCQkJZ2hhemlAY2FpcC5ydXRnZXJzLmVkdQpNYXR0aGV3IEdpbmdlbGwJCQkJCWdpbmdlbGxAZ25hdC5jb20KQW50aG9ueSBHcmVlbgkJCQkJZ3JlZW5AcmVkaGF0LmNvbQpEb3VnIEdyZWdvcgkJCQkJZG91Zy5ncmVnb3JAZ21haWwuY29tCkpvbiBHcmltbQkJCQkJamdyaW1tMkB1cy5pYm0uY29tClJpY2hhcmQgR3VlbnRoZXIJCQkJcmd1ZW50aGVyQHN1c2UuZGUKTGF1cmVudCBHdWVyYnkJCQkJCWxhdXJlbnRAZ3VlcmJ5Lm5ldApNb3N0YWZhIEhhZ29nCQkJCQloYWdvZ0BnY2MuZ251Lm9yZwpPbGl2aWVyIEhhaW5xdWUJCQkJCWhhaW5xdWVAYWN0LWV1cm9wZS5mcgpTdHVhcnQgSGFzdGluZ3MJCQkJCXN0dWFydEBhcHBsZS5jb20KTWF0dGhldyBIaWxsZXIJCQkJCWhpbGxlckByZWRoYXQuY29tCk1hbmZyZWQgSG9sbHN0ZWluCQkJCW1oQHN1c2UuY29tCkZhbGsgSHVlZmZuZXIJCQkJCWZhbGtAZGViaWFuLm9yZwpBbmRyZXcgSm9obiBIdWdoZXMJCQkJZ251X2FuZHJld0BtZW1iZXIuZnNmLm9yZwpCZXJuYXJkbyBJbm5vY2VudGkJCQkJYmVybmllQGRldmVsZXIuY29tCkRhbmllbCBKYWNvYm93aXR6CQkJCWRhbkBkZWJpYW4ub3JnCkFuZHJlYXMgSmFlZ2VyCQkJCQlhakBzdXNlLmRlCkZhcmlib3J6IEphaGFuaWFuCQkJCWZqYWhhbmlhbkBhcHBsZS5jb20KUGhpbGxpcCBKb3JkYW4JCQkJCXBoaWxsaXAubS5qb3JkYW5AZ21haWwuY29tCktsYXVzIEthZW1wZgkJCQkJa2thZW1wZkBwcm9naXMuZGUKVmljdG9yIEthcGxhbnNreQkJCQl2aWN0b3JrQGlsLmlibS5jb20KQnJlbmRhbiBLZWhvZQkJCQkJYnJlbmRhbkB6ZW4ub3JnCk11bWl0IEtoYW4JCQkJCWtoYW5AeHJheWxpdGgud2lzYy5lZHUKTWF0dGhpYXMgS2xvc2UJCQkJCWRva29AZGViaWFuLm9yZwpKZWZmIEtuYWdncwkJCQkJamtuYWdnc0ByZWRoYXQuY29tCk1pY2hhZWwgS29jaAkJCQkJa29ucXVlcm9yQGdteC5kZQpNYXR0IEtyYWFpCQkJCQlrcmFhaUBmdGJmcy5vcmcKQW5kcmVhcyBLcmViYmVsCQkJCQlrcmViYmVsMUBkZS5pYm0uY29tCk1heGltIEt1dnlya292CQkJCQlta3V2eXJrb3ZAaXNwcmFzLnJ1ClNjb3R0IFJvYmVydCBMYWRkCQkJCXNjb3R0LmxhZGRAY295b3RlZ3VsY2guY29tClJhenlhIExhZGVsc2t5CQkJCQlyYXp5YUBnY2MuZ251Lm9yZwpBYXJvbiBXLiBMYUZyYW1ib2lzZQkJCQlhYXJvbmF2YXk2MkBhYXJvbndsLmNvbQpBc2hlciBMYW5ndG9uCQkJCQlsYW5ndG9uMkBsbG5sLmdvdgpDaHJpcyBMYXR0bmVyCQkJCQlzYWJyZUBub25kb3Qub3JnClRlcnJ5IExhdXJlbnpvCQkJCQl0bGF1cmVuem9AZ21haWwuY29tCk1hcmMgTGVobWFubgkJCQkJcGNnQGdvb2YuY29tCkFsYW4gTGVob3Rza3kJCQkJCWFwbEBhbHVtLm1pdC5lZHUKSmFtZXMgTGVta2UJCQkJCWppbUBsZW1rZS5vcmcKS3JpYW5nIExlcmRzdXdhbmFraWoJCQkJbGVyZHN1d2FAdXNlcnMuc291cmNlZm9yZ2UubmV0CldhcnJlbiBMZXZ5CQkJCQl3YXJyZW5sQGNydXppby5jb20KRG9uIExpbmRzYXkJCQkJCWRsaW5kc2F5QHJlZGhhdC5jb20KQ2hlbiBMaXFpbgkJCQkJbGlxaW5Ac3Vubm9ydGguY29tLmNuClJhbHBoIExvYWRlcgkJCQkJcmNsQGlodWcuY28ubnoKR2Fib3IgTG9raQkJCQkJbG9raUBpbmYudS1zemVnZWQuaHUKU2FuZHJhIExvb3NlbW9yZQkJCQlzYW5kcmFAY29kZXNvdXJjZXJ5LmNvbQpEYXZlIExvdmUJCQkJCWQubG92ZUBkbC5hYy51awpNYXJ0aW4gdi4gTPZ3aXMJCQkJCWxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZQpISiBMdQkJCQkJCWhqbEBsdWNvbi5vcmcKWmlnYSBNYWhrb3ZlYwkJCQkJemlnYS5tYWhrb3ZlY0BrbGlrYS5zaQpSYW5qaXQgTWF0aGV3CQkJCQlybWF0aGV3QGhvdG1haWwuY29tCk1pY2hhZWwgTWF0egkJCQkJbWF0ekBzdXNlLmRlCkdyZWcgTWNHYXJ5CQkJCQlna21AZ251Lm9yZwpBZGFtIE1lZ2FjegkJCQkJYWRhbUB4d3Qub3JnClJvYmVydCBNaWxsYW4JCQkJCXJtaEBnY2MuZ251Lm9yZwpMZWUgTWlsbHdhcmQJCQkJCWxlZS5taWxsd2FyZEBnbWFpbC5jb20KQWxhbiBNb2RyYQkJCQkJYW1vZHJhQGJpZ3BvbmQubmV0LmF1CkNhdGhlcmluZSBNb29yZQkJCQkJY2xtQHJlZGhhdC5jb20KQnJvb2tzIE1vc2VzCQkJCQlibW9zZXNAc3RhbmZvcmQuZWR1CkRpcmsgTXVlbGxlcgkJCQkJZG11ZWxsZXJAc3VzZS5kZQpBZGFtIE5lbWV0CQkJCQlhbmVtZXRAY2F2aXVtbmV0d29ya3MuY29tCkRhbiBOaWNvbGFlc2N1CQkJCQlkYW5uQGljcy51Y2kuZWR1CkRvcml0IE51em1hbgkJCQkJZG9yaXRAaWwuaWJtLmNvbQpEYXZpZCBPJ0JyaWVuCQkJCQlvYnJpZW5ARnJlZUJTRC5vcmcKVHVybHkgTydDb25ub3IJCQkJCXR1cmx5QGFwcGxlLmNvbQpDYXJsb3MgTydEb25lbGwJCQkJCWNhcmxvc0Bjb2Rlc291cmNlcnkuY29tCkplZmZyZXkgRC4gT2xkaGFtCQkJCW9sZGhhbUBjb2Rlc291cmNlcnkuY29tCkRldmFuZyBQYXRlbAkJCQkJZHBhdGVsQGFwcGxlLmNvbQpBbGV4YW5kcmUgUGV0aXQtQmlhbmNvCQkJCWFwYmlhbmNvQHJlZGhhdC5jb20KTmljb2xhcyBQaXRyZQkJCQkJbmljb0BjYW0ub3JnCkNsaW50b24gUG9wZXR6CQkJCQljcG9wZXR6QGNwb3BldHouY29tCkplcnJ5IFF1aW5uCQkJCQlqbHF1aW5uQG9wdG9ubGluZS5uZXQKUm9sZiBSYXNtdXNzZW4JCQkJCXJvbGZ3ckBnY2MuZ251Lm9yZwpWb2xrZXIgUmVpY2hlbHQJCQkJCXJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGUKVG9tIFJpeAkJCQkJCXRyaXhAcmVkaGF0LmNvbQpDcmFpZyBSb2RyaWd1ZXMJCQkJCXJvZHJpZ2NAZ2NjLmdudS5vcmcKR2F2aW4gUm9taWctS29jaAkJCQlnYXZpbkByZWRoYXQuY29tCklyYSBSb3NlbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlyYXJAaWwuaWJtLmNvbQpNYWNpZWogVy4gUm96eWNraQkJCQltYWNyb0BsaW51eC1taXBzLm9yZwpJcmEgUnViZW4JCQkJCWlyYUBhcHBsZS5jb20KRG91Z2xhcyBSdXBwCQkJCQlydXBwQGduYXQuY29tCk1hdHRoZXcgU2FjaHMJCQkJCW1zYWNoc0BhcHBsZS5jb20KQWxleCBTYW11ZWwJCQkJCXNhbXVlbEBjb2Rlc291cmNlcnkuY29tClN2ZWluIFNlbGRhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN2ZWluQGRldi5zZWxkYWwuY29tClRoaWVtbyBTZXVmZXIJCQkJCXRoc0BuZXR3b3Jrbm8uZGUKTWFyayBTaGlud2VsbAkJCQkJc2hpbndlbGxAY29kZXNvdXJjZXJ5LmNvbQpGcmFueiBTaXJsCQkJCQlmcmFuei5zaXJsLWtlcm5lbEBsYXV0ZXJiYWNoLmNvbQpNaWNoYWVsIFNva29sb3YJCQkJCW1zb2tvbG92QGl2YW4uSGFyaGFuLk9SRwpSaWNoYXJkIFN0YWxsbWFuCQkJCXJtc0BnbnUub3JnCkdyYWhhbSBTdG90dAkJCQkJZ3JhaGFtLnN0b3R0QGJ0aW50ZXJuZXQuY29tCk1pa2UgU3R1bXAJCQkJCW1yc0BhcHBsZS5jb20KSmVmZiBTdHVybQkJCQkJanN0dXJtQGdjYy5nbnUub3JnCktyZXN0ZW4gS3JhYiBUaG9ydXAJCQkJa3JhYkBnY2MuZ251Lm9yZwpDYXJvbGluZSBUaWNlCQkJCQljdGljZUBhcHBsZS5jb20KTWljaGFlbCBUaWVtYW5uCQkJCQl0aWVtYW5uQHJlZGhhdC5jb20KRGF2aWQgVW5nCQkJCQlkYXZpZHVAbWlwcy5jb20KSm9uYXRoYW4gV2FrZWx5CQkJCQlyZWRpQGdjYy5nbnUub3JnCktyaXN0ZXIgV2FsZnJpZHNzb24JCQkJY2F0b0BkZi5sdGguc2UKRmVuZyBXYW5nCQkJCQlmZW5nd2FuZ0BudWR0LmVkdS5jbgpKb2huIFdlaGxlCQkJCQlqb2huQGZlaXRoLmNvbQpGbG9yaWFuIFdlaW1lcgkJCQkJZndAZGVuZWIuZW55by5kZQpaYWNrIFdlaW5iZXJnCQkJCQl6YWNrd0BwYW5peC5jb20KTWFyayBXaWVsYWFyZAkJCQkJbWFya0BnY2MuZ251Lm9yZwpDYXJsbyBXb29kCQkJCQljYXJsb0BhbGlub2UuY29tCkNhbnF1biBZYW5nCQkJCQljYW5xdW5AbnVkdC5lZHUuY24KS2VubmV0aCBaYWRlY2sJCQkJCXphZGVja0BuYXR1cmFsYnJpZGdlLmNvbQpKaWUgWmhhbmcJCQkJCWppZS56aGFuZ0BhbmFsb2cuY29tCkpvbiBaaWVnbGVyCQkJCQlqb256QGFwcGxlLmNvbQpKb3NlZiBabG9tZWsJCQkJCWpvc2VmLnpsb21la0BlbWFpbC5jegpDaGFvLXlpbmcgRnUJCQkJCWZ1QG1pcHMuY29tCgpCdWcgZGF0YWJhc2Ugb25seSBhY2NvdW50cwoKSmFtZXMgRGVubmV0dAkJCQkJamRlbm5ldHRAYWNtLm9yZwpDaHJpc3RpYW4gRWhyaGFyZHQJCQkJZWhyaGFyZHRAbWF0aGVtYXRpay51bmktdWxtLmRlCkRhcmEgSGF6ZWdoaQkJCQkJZGhhemVnaGlAeWFob28uY29tCg==