Tm90ZQo9PT09CgpUaGlzIGZpbGUgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgcGVvcGxlIHdobyBhcmUgcGVybWl0dGVkIHRvIG1ha2UKY2hhbmdlcyB0byB2YXJpb3VzIHBhcnRzIG9mIHRoZSBjb21waWxlciBhbmQgYXNzb2NpYXRlZCBsaWJyYXJpZXMuCgpQbGVhc2UgZG8gbm90IGNvbnRhY3QgdGhlIHBlb3BsZSBpbiB0aGlzIGZpbGUgZGlyZWN0bHkgdG8gcmVwb3J0CnByb2JsZW1zIGluIEdDQy4KCkZvciBnZW5lcmFsIGluZm9ybWF0aW9uIGFib3V0IEdDQywgcGxlYXNlIHZpc2l0OgoKICBodHRwOi8vZ2NjLmdudS5vcmcKClRvIHJlcG9ydCBwcm9ibGVtcyBpbiBHQ0MsIHBsZWFzZSB2aXNpdDoKCiAgaHR0cDovL2djYy5nbnUub3JnL2J1Z3MuaHRtbAoKTWFpbnRhaW5lcnMKPT09PT09PT09PT0KCgkJCUJsYW5rZXQgV3JpdGUgUHJpdnMuCgpSaWNoYXJkIEVhcm5zaGF3CQkJCXJlYXJuc2hhQGFybS5jb20KUmljaGFyZCBIZW5kZXJzb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRoQHJlZGhhdC5jb20KR2VvZmZyZXkgS2VhdGluZwkJCQlnZW9mZmtAZ2VvZmZrLm9yZwpSaWNoYXJkIEtlbm5lcgkJCQkJa2VubmVyQG55dS5lZHUKSmVmZiBMYXcJCQkJCWxhd0ByZWRoYXQuY29tCk1pY2hhZWwgTWVpc3NuZXIJCQkJZ251QHRoZS1tZWlzc25lcnMub3JnCkphc29uIE1lcnJpbGwJCQkJCWphc29uQHJlZGhhdC5jb20KRGF2aWQgUy4gTWlsbGVyCQkJCQlkYXZlbUByZWRoYXQuY29tCk1hcmsgTWl0Y2hlbGwJCQkJCW1hcmtAY29kZXNvdXJjZXJ5LmNvbQpCZXJuZCBTY2htaWR0CQkJCQliZXJuZC5zY2htaWR0QGFuYWxvZy5jb20KWmFjayBXZWluYmVyZwkJCQkJemFja0Bjb2Rlc291cmNlcnkuY29tCkppbSBXaWxzb24JCQkJCXdpbHNvbkBzcGVjaWZpeGluYy5jb20KCgoJCQlDUFUgUG9ydCBNYWludGFpbmVycwkoQ1BVIGFscGhhYmV0aWNhbCBvcmRlcikKCmFscGhhIHBvcnQJCVJpY2hhcmQgSGVuZGVyc29uCXJ0aEByZWRoYXQuY29tCmFybSBwb3J0CQlOaWNrIENsaWZ0b24JCW5pY2tjQHJlZGhhdC5jb20KYXJtIHBvcnQJCVJpY2hhcmQgRWFybnNoYXcJcmVhcm5zaGFAYXJtLmNvbQphcm0gcG9ydAkJUGF1bCBCcm9vawkJcGF1bEBjb2Rlc291cmNlcnkuY29tCmF2ciBwb3J0CQlEZW5pcyBDaGVydHlrb3YJCWRlbmlzY0BvdmVydGEucnUKYXZyIHBvcnQJCU1hcmVrIE1pY2hhbGtpZXdpY3oJbWFyZWttQGFtZWxlay5nZGEucGwKYmZpbiBwb3J0CQlCZXJuZCBTY2htaWR0CQliZXJuZC5zY2htaWR0QGFuYWxvZy5jb20KYzR4IHBvcnQJCU1pY2hhZWwgSGF5ZXMJCW0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56CmNyaXMgcG9ydAkJSGFucy1QZXRlciBOaWxzc29uCWhwQGF4aXMuY29tCmZyMzAgcG9ydAkJTmljayBDbGlmdG9uCQluaWNrY0ByZWRoYXQuY29tCmZydiBwb3J0CQlBbGR5IEhlcm5hbmRlegkJYWxkeWhAcmVkaGF0LmNvbQpmcnYgcG9ydAkJQWxleGFuZHJlIE9saXZhCQlhb2xpdmFAcmVkaGF0LmNvbQpoOCBwb3J0CQkJSmVmZiBMYXcJCWxhd0ByZWRoYXQuY29tCmg4IHBvcnQJCQlLYXp1IEhpcmF0YQkJa2F6dUBjcy51bWFzcy5lZHUKaHBwYSBwb3J0CQlKZWZmIExhdwkJbGF3QHJlZGhhdC5jb20KaHBwYSBwb3J0CQlEYXZlIEFuZ2xpbgkJZGF2ZS5hbmdsaW5AbnJjLmNhCmkzODYgcG9ydAkJUmljaGFyZCBIZW5kZXJzb24JcnRoQHJlZGhhdC5jb20KaTg2MCBwb3J0CQlKYXNvbiBFY2toYXJkdAkJamxlQHJpY2UuZWR1CmlhNjQgcG9ydAkJSmltIFdpbHNvbgkJd2lsc29uQHNwZWNpZml4aW5jLmNvbQppcDJrIHBvcnQJCURlbmlzIENoZXJ0eWtvdgkJZGVuaXNjQG92ZXJ0YS5ydQppcTIwMDAgcG9ydAkJU3RhbiBDb3gJCXNjb3hAcmVkaGF0LmNvbQptMzJyIHBvcnQJCU5pY2sgQ2xpZnRvbgkJbmlja2NAcmVkaGF0LmNvbQptNjhoYzExIHBvcnQJCVN0ZXBoYW5lIENhcnJlegkJc3RjYXJyZXpAbmVyaW0uZnIKbTY4ayBwb3J0ICg/KQkJSmVmZiBMYXcJCWxhd0ByZWRoYXQuY29tCm02OGstbW90b3JvbGEtc3lzdiBwb3J0CVBoaWxpcHBlIERlIE11eXRlcglwaGRtQG1hY3FlbC5iZQptY29yZSBwb3J0CQlOaWNrIENsaWZ0b24JCW5pY2tjQHJlZGhhdC5jb20KbWlwcyBwb3J0ICAgICAgICAgICAgICAgRXJpYyBDaHJpc3RvcGhlciAgICAgICAgZWNocmlzdG9AcmVkaGF0LmNvbQptaXBzIHBvcnQJCVJpY2hhcmQgU2FuZGlmb3JkCXJzYW5kaWZvQHJlZGhhdC5jb20KbW1peCBwb3J0CQlIYW5zLVBldGVyIE5pbHNzb24JaHBAYml0cmFuZ2UuY29tCm1uMTAzMDAgcG9ydAkJSmVmZiBMYXcJCWxhd0ByZWRoYXQuY29tCm1uMTAzMDAgcG9ydAkJQWxleGFuZHJlIE9saXZhCQlhb2xpdmFAcmVkaGF0LmNvbQpuczMyayBwb3J0CQlJYW4gRGFsbAkJaWFuQGJld2FyZS5kcm9wYmVhci5pZC5hdQpwZHAxMSBwb3J0CQlQYXVsIEtvbmluZwkJbmkxZEBhcnJsLm5ldApyczYwMDAgcG9ydAkJR2VvZmYgS2VhdGluZwkJZ2VvZmZrQGdlb2Zmay5vcmcKcnM2MDAwIHBvcnQJCURhdmlkIEVkZWxzb2huCQlkamVAd2F0c29uLmlibS5jb20KcnM2MDAwIHZlY3RvciBleHRucwlBbGR5IEhlcm5hbmRlegkJYWxkeWhAcmVkaGF0LmNvbQpzMzkwIHBvcnQJCUhhcnRtdXQgUGVubmVyCQlocGVubmVyQGRlLmlibS5jb20KczM5MCBwb3J0CQlVbHJpY2ggV2VpZ2FuZAkJdXdlaWdhbmRAZGUuaWJtLmNvbQpzaCBwb3J0CQkJSm9lcm4gUmVubmVja2UJCWpvZXJuLnJlbm5lY2tlQHN0LmNvbQpzaCBwb3J0CQkJQWxleGFuZHJlIE9saXZhCQlhb2xpdmFAcmVkaGF0LmNvbQpzcGFyYyBwb3J0CQlSaWNoYXJkIEhlbmRlcnNvbglydGhAcmVkaGF0LmNvbQpzcGFyYyBwb3J0CQlEYXZpZCBTLiBNaWxsZXIJCWRhdmVtQHJlZGhhdC5jb20Kc3BhcmMgcG9ydAkJSmFrdWIgSmVsaW5lawkJamFrdWJAcmVkaGF0LmNvbQpzcGFyYyBwb3J0CQlFcmljIEJvdGNhem91CQllYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnIKdjg1MCBwb3J0CQlOaWNrIENsaWZ0b24JCW5pY2tjQHJlZGhhdC5jb20KdmF4IHBvcnQJCURhdmUgQW5nbGluCQlkYXZlLmFuZ2xpbkBucmMuY2EKdmF4IHBvcnQJCU1hdHQgVGhvbWFzCQltYXR0QDNhbS1zb2Z0d2FyZS5jb20KeDg2LTY0IHBvcnQJCUphbiBIdWJpY2thCQlqaEBzdXNlLmN6CnhzdG9ybXkxNiBwb3J0CQlHZW9mZnJleSBLZWF0aW5nCWdlb2Zma0BnZW9mZmsub3JnCnh0ZW5zYSBwb3J0CQlCb2IgV2lsc29uCQlib2Iud2lsc29uQGFjbS5vcmcKCgkJCU9TIFBvcnQgTWFpbnRhaW5lcnMJKE9TIGFscGhhYmV0aWNhbCBvcmRlcikKCmRhcndpbiBwb3J0CQlTdGFuIFNoZWJzCQlzaGVic0BhcHBsZS5jb20KZGFyd2luIHBvcnQJCURhbGUgSm9oYW5uZXNlbgkJZGFsZWpAYXBwbGUuY29tCkRKR1BQCQkJREogRGVsb3JpZQkJZGpAZGVsb3JpZS5jb20KZnJlZWJzZAkJCUxvcmVuIEouIFJpdHRsZQkJbGpyaXR0bGVAYWNtLm9yZwpuZXRic2QJCQlKYXNvbiBUaG9ycGUJCXRob3JwZWpAbmV0YnNkLm9yZwpzY281LCB1bml4d2FyZSwgc2NvIHVkawlLZWFuIEpvaG5zdG9uCQlqa2pAc2NvLmNvbQpzaC1saW51eC1nbnUJCUtheiBLb2ppbWEJCWtrb2ppbWFAZ2NjLmdudS5vcmcKUlRFTVMgUG9ydHMJCUpvZWwgU2hlcnJpbGwJCWpvZWxAb2FyY29ycC5jb20KUlRFTVMgUG9ydHMJCVJhbGYgQ29yc2VwaXVzCQlyYWxmLmNvcnNlcGl1c0BydGVtcy5vcmcKVnhXb3JrcyBwb3J0cwkJWmFjayBXZWluYmVyZwkJemFja0Bjb2Rlc291cmNlcnkuY29tClZ4V29ya3MgcG9ydHMJCU5hdGhhbiBTaWR3ZWxsCQluYXRoYW5AY29kZXNvdXJjZXJ5LmNvbQp3aW5kb3dzLCBjeWd3aW4sIG1pbmd3CUNocmlzdG9waGVyIEZheWxvcgljZ2ZAZ2NjLmdudS5vcmcKd2luZG93cywgY3lnd2luLCBtaW5ndwlEYW5ueSBTbWl0aAkJZGFubnlzbWl0aEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQKCgkJCUxhbmd1YWdlIEZyb250IEVuZHMgTWFpbnRhaW5lcnMKCkMgZnJvbnQgZW5kL0lTTyBDOTkJSm9zZXBoIE15ZXJzCQlqc21AcG9seW9taW5vLm9yZy51awpDIGZyb250IGVuZC9JU08gQzk5CVJpY2hhcmQgSGVuZGVyc29uCXJ0aEByZWRoYXQuY29tCkFkYSBmcm9udCBlbmQJCUdlZXJ0IEJvc2NoCQlib3NjaEBnbmF0LmNvbQpBZGEgZnJvbnQgZW5kCQlSb2JlcnQgRGV3YXIJCWRld2FyQGduYXQuY29tCkFkYSBmcm9udCBlbmQJCUFybmF1ZCBDaGFybGV0CQljaGFybGV0QGFjdC1ldXJvcGUuZnIKZm9ydHJhbiA5NQkJUGF1bCBCcm9vawkJcGF1bEBjb2Rlc291cmNlcnkuY29tCmZvcnRyYW4gOTUJCVN0ZXZlbiBCb3NzY2hlcgkJc3RldmVuYkBzdXNlLmRlCmZvcnRyYW4gOTUJCVRvb24gTW9lbmUJCXRvb25AbW9lbmUuaW5kaXYubmx1dWcubmwKYysrCQkJSmFzb24gTWVycmlsbAkJamFzb25AcmVkaGF0LmNvbQpjKysgICAgICAgICAgICAgICAgICAgICBNYXJrIE1pdGNoZWxsCQltYXJrQGNvZGVzb3VyY2VyeS5jb20KYysrCQkJTmF0aGFuIFNpZHdlbGwJCW5hdGhhbkBjb2Rlc291cmNlcnkuY29tCmphdmEJCQlQZXIgQm90aG5lcgkJcGVyQGJvdGhuZXIuY29tCmphdmEJCQlBbmRyZXcgSGFsZXkJCWFwaEByZWRoYXQuY29tCm1lcmN1cnkJCQlGZXJndXMgSGVuZGVyc29uCWZqaEBjcy5tdS5vei5hdQpvYmplY3RpdmUtYwkJU3RhbiBTaGVicwkJc2hlYnNAYXBwbGUuY29tCm9iamVjdGl2ZS1jCQlPdmlkaXUgUHJlZGVzY3UJCW92aWRpdUBjdXAuaHAuY29tCm9iamVjdGl2ZS1jCQlaaWVtb3dpdCBMYXNraQkJemxhc2tpQGFwcGxlLmNvbQp0cmVlbGFuZyAgICAgICAgICAgICAgICBUaW0gSm9zbGluZyAgICAgICAgICAgICB0ZWpAbWVsYnBjLm9yZy5hdQp0cmVlbGFuZyAgICAgICAgICAgICAgICBKYW1lcyBBLiBNb3JyaXNvbglwaHl0aG9uQGdjYy5nbnUub3JnCgoJCQlWYXJpb3VzIE1haW50YWluZXJzCgpjcHBsaWIJCQlEYXZlIEJyb2xsZXkJCWJyb2xsZXlAcmVkaGF0LmNvbQpjcHBsaWIJCQlQZXIgQm90aG5lcgkJcGVyQGJvdGhuZXIuY29tCmNwcGxpYgkJCVphY2sgV2VpbmJlcmcJCXphY2tAY29kZXNvdXJjZXJ5LmNvbQpsaWJnY2oJCQlUb20gVHJvbWV5CQl0cm9tZXlAcmVkaGF0LmNvbQpsaWJnY2oJCQlCcnljZSBNY0tpbmxheQkJYnJ5Y2VAZ2NjLmdudS5vcmcKbGlib2JqYwkJCU5pY29sYSBQZXJvCQluLnBlcm9AbWkuZmxhc2huZXQuaXQKbGlib2JqYwkJCUFuZHJldyBQaW5za2kJCXBpbnNraWFAcGh5c2ljcy51Yy5lZHUKYWxpYXMgYW5hbHlzaXMJCUpvaG4gQ2FycgkJamZjQG1pdC5lZHUKbG9vcCB1bnJvbGxpbmcJCUppbSBXaWxzb24JCXdpbHNvbkBzcGVjaWZpeGluYy5jb20KbG9vcCBkaXNjb3ZlcnkJCU1pY2hhZWwgSGF5ZXMJCW0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56CnNjaGVkdWxlciAoKyBoYWlmYSkJSmltIFdpbHNvbgkJd2lsc29uQHNwZWNpZml4aW5jLmNvbQpzY2hlZHVsZXIgKCsgaGFpZmEpCU1pY2hhZWwgTWVpc3NuZXIJZ251QHRoZS1tZWlzc25lcnMub3JnCnNjaGVkdWxlciAoKyBoYWlmYSkJSmVmZiBMYXcJCWxhd0ByZWRoYXQuY29tCnNjaGVkdWxlciAoKyBoYWlmYSkJVmxhZGltaXIgTWFrYXJvdgl2bWFrYXJvdkByZWRoYXQuY29tCnJlb3JnCQkJSmVmZiBMYXcJCWxhd0ByZWRoYXQuY29tCmNhbGxlci1zYXZlLmMJCUplZmYgTGF3CQlsYXdAcmVkaGF0LmNvbQpjYWxsZ3JhcGgJCUphbiBIdWJpY2thCQlqaEBzdXNlLmN6CmRlYnVnZ2luZyBjb2RlCQlKaW0gV2lsc29uCQl3aWxzb25Ac3BlY2lmaXhpbmMuY29tCmR3YXJmIGRlYnVnZ2luZyBjb2RlCUphc29uIE1lcnJpbGwJCWphc29uQHJlZGhhdC5jb20KYysrIHJ1bnRpbWUgbGlicwlQYW9sbyBDYXJsaW5pCQlwY2FybGluaUBzdXNlLmRlCmMrKyBydW50aW1lIGxpYnMgICAgICAgIEdhYnJpZWwgRG9zIFJlaXMgICAgICAgIGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQKYysrIHJ1bnRpbWUgbGlicwlVbHJpY2ggRHJlcHBlcgkJZHJlcHBlckByZWRoYXQuY29tCmMrKyBydW50aW1lIGxpYnMJUGhpbCBFZHdhcmRzCQlwbWVAZ2NjLmdudS5vcmcKYysrIHJ1bnRpbWUgbGlicwlCZW5qYW1pbiBLb3NuaWsJCWJrb3pAcmVkaGF0LmNvbQpjKysgcnVudGltZSBsaWJzCUxvcmVuIEouIFJpdHRsZQkJbGpyaXR0bGVAYWNtLm9yZwoqc3ludGhldGljIG11bHRpcGx5CVRvcmJqb3JuIEdyYW5sdW5kCXRlZ2VAc3dveC5jb20KKmMtdG9ydHVyZQkJVG9yYmpvcm4gR3Jhbmx1bmQJdGVnZUBzd294LmNvbQpmaXhpbmNsdWRlcwkJQnJ1Y2UgS29yYgkJYmtvcmJAZ251Lm9yZwpnY3NlLmMgCQkJSmVmZiBMYXcJCWxhd0ByZWRoYXQuY29tCmdsb2JhbCBvcHQgZnJhbWV3b3JrCUplZmYgTGF3CQlsYXdAcmVkaGF0LmNvbQpqdW1wLmMJCQlEYXZpZCBTLiBNaWxsZXIJCWRhdmVtQHJlZGhhdC5jb20Kd2ViIHBhZ2VzCQlHZXJhbGQgUGZlaWZlcgkJZ2VyYWxkQHBmZWlmZXIuY29tCmJ1aWxkIHN0YXR1cyBsaXN0cwlKYW5pcyBKb2huc29uCQlqYW5pczE4N0B1cy5pYm0uY29tCmNvbmZpZy5zdWIvY29uZmlnLmd1ZXNzCUJlbiBFbGxpc3RvbgkJY29uZmlnLXBhdGNoZXNAZ251Lm9yZwpiYXNpYyBibG9jayByZW9yZGVyaW5nCUphc29uIEVja2hhcmR0CQlqbGVAcmljZS5lZHUKaTE4bgkJCVBoaWxpcHAgVGhvbWFzCQlwdGhvbWFzQHN1c2UuZGUKaTE4bgkJCUpvc2VwaCBNeWVycwkJanNtQHBvbHlvbWluby5vcmcudWsKZGlhZ25vc3RpYyBtZXNzYWdlcwlHYWJyaWVsIERvcyBSZWlzCWdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQKbGliaWJlcnR5CQlESiBEZWxvcmllCQlkakByZWRoYXQuY29tCmxpYmliZXJ0eQkJSWFuIExhbmNlIFRheWxvcglpYW5AYWlycy5jb20KYnVpbGQgbWFjaGluZXJ5ICgqLmluKQlESiBEZWxvcmllCQlkakByZWRoYXQuY29tCmJ1aWxkIG1hY2hpbmVyeSAoKi5pbikJTmF0aGFuYWVsIE5lcm9kZQluZXJvZGVuQGdjYy5nbnUub3JnCmJ1aWxkIG1hY2hpbmVyeSAoKi5pbikJQWxleGFuZHJlIE9saXZhCQlhb2xpdmFAcmVkaGF0LmNvbQpkb2NzIGNvLW1haW50YWluZXIJR2VyYWxkIFBmZWlmZXIJCWdlcmFsZEBwZmVpZmVyLmNvbQpkb2NzIGNvLW1haW50YWluZXIJSm9zZXBoIE15ZXJzCQlqc21AcG9seW9taW5vLm9yZy51awpwcmVkaWN0LmRlZgkJSmFuIEh1Ymlja2EJCWpoQHN1c2UuY3oKY29udHJpYi9yZWdyZXNzaW9uCUdlb2ZmIEtlYXRpbmcJCWdlb2Zma0BnZW9mZmsub3JnCmdjb3YJCQlKYW4gSHViaWNrYQkJamhAc3VzZS5jegpnY292CQkJTmF0aGFuIFNpZHdlbGwJCW5hdGhhbkBjb2Rlc291cmNlcnkuY29tCm9wdGlvbiBoYW5kbGluZwkJTmVpbCBCb290aAkJbmVpbEBkYWlrb2t1eWEuY28udWsKbGliZmZpIHRlc3RzdWl0ZQlBbmRyZWFzIFRvYmxlcgkJYW5kcmVhc3RAZ2NjLmdudS5vcmcKdGVzdHN1aXRlCQlKYW5pcyBKb2huc29uCQlqYW5pczE4N0B1cy5pYm0uY29tCm1pZGRsZS1lbmQJCVJvZ2VyIFNheWxlCQlyb2dlckBleWVzb3Blbi5jb20KdHJlZS1zc2EJCURpZWdvIE5vdmlsbG8JCWRub3ZpbGxvQHJlZGhhdC5jb20KdHJlZS1zc2EJCUFuZHJldyBNYWNMZW9kCQlhbWFjbGVvZEByZWRoYXQuY29tClBSRSwgcG9pbnRzLXRvCQlEYW5pZWwgQmVybGluCQlkYmVybGluQGRiZXJsaW4ub3JnCm11ZGZsYXAJCQlGcmFuayBDaC4gRWlnbGVyCWZjaGVAcmVkaGF0LmNvbQp0cmVlIGJyb3dzZXIvdW5wYXJzZXIJU2ViYXN0aWFuIFBvcAkJcG9wQGNyaS5lbnNtcC5mcgpwcm9maWxlIGZlZWRiYWNrCUphbiBIdWJpY2thCQlqaEBzdXNlLmN6CnR5cGUtc2FmZSB2ZWN0b3JzCU5hdGhhbiBTaWR3ZWxsCQluYXRoYW5AY29kZXNvdXJjZXJ5LmNvbQoKTm90ZSBpbmRpdmlkdWFscyB3aG8gbWFpbnRhaW4gcGFydHMgb2YgdGhlIGNvbXBpbGVyIG5lZWQgYXBwcm92YWwgdG8gY2hlY2sKaW4gY2hhbmdlcyBvdXRzaWRlIG9mIHRoZSBwYXJ0cyBvZiB0aGUgY29tcGlsZXIgdGhleSBtYWludGFpbi4KCgoJCQlXcml0ZSBBZnRlciBBcHByb3ZhbAkobGFzdCBuYW1lIGFscGhhYmV0aWNhbCBvcmRlcikKCk1hcmsgRy4gQWRhbXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmsuZy5hZGFtc0BzeW1wYXRpY28uY2EKTWF0dCBBdXN0ZXJuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVzdGVybkBhcHBsZS5jb20KRGF2aWQgQXllcnMJCQkJCWQuYXllcnNAaW5vZGUuYXQKR2lvdmFubmkgQmFqbwkJCQkJZ2lvdmFubmliYWpvQGdjYy5nbnUub3JnClNjb3R0IEJhbWJyb3VnaAkJCQkJc2NvdHRiQG5ldHdpbmRlci5vcmcKV29sZmdhbmcgQmFuZ2VydGgJCQkJYmFuZ2VydGhAZGVhbGlpLm9yZwpEYXZpZCBCaWxsaW5naHVyc3QJCQkJRGF2aWQuQmlsbGluZ2h1cnN0QHJpb3RpbnRvLmNvbQpMYXVyeW5hcyBCaXZlaW5pcwkJCSAgICAgICAgbGF1cnluYXMuYml2ZWluaXNAbWlmLnZ1Lmx0ClVyb3MgQml6amFrCQkJCQl1cm9zQGtzcy1sb2thLnNpCkVyaWMgQmxha2UJCQkJCWVyaWNiQGdjYy5nbnUub3JnCkppbSBCbGFuZHkJCQkJCWppbWJAcmVkaGF0LmNvbQpQaGlsIEJsdW5kZWxsCQkJCQlwYkBmdXR1cmV0di5jb20KSGFucyBCb2VobQkJCQkJaGJvZWhtQGdjYy5nbnUub3JnClNlZ2hlciBCb2Vzc2Vua29vbAkJCQlzZWdoZXJAa2VybmVsLmNyYXNoaW5nLm9yZwpQYW9sbyBCb256aW5pCQkJCQlib256aW5pQGdudS5vcmcKTmVpbCBCb290aAkJCQkJbmVpbEBkYWlrb2t1eWEuY28udWsKUm9iZXJ0IEJvd2RpZGdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm93ZGlkZ2VAYXBwbGUuY29tCkpvZWwgQnJvYmVja2VyCQkJCQlicm9iZWNrZXJAZ25hdC5jb20KS2V2aW4gQnVldHRuZXIJCQkJCWtldmluYkByZWRoYXQuY29tCkFuZHJldyBDYWduZXkJCQkJCWNhZ25leUByZWRoYXQuY29tClN0ZXZlIENoYW1iZXJsYWluCQkJCXNhY0B0cmFuc21ldGEuY29tCk1pY2hhZWwgQ2hhc3RhaW4JCQkJbWVjLmdudUBtaW5kc3ByaW5nLmNvbQpDaGFuZHJhIENoYXZ2YQkJCQkJY2NoYXZ2YUByZWRoYXQuY29tCldpbGxpYW0gQ29oZW4JCQkJCXdjb2hlbkByZWRoYXQuY29tClIuIEtlbGxleSBDb29rCQkJCQlrY29va0BnY2MuZ251Lm9yZwpDaHJpc3RpYW4gQ29ybmVsc3NlbgkJCQljY29ybkBjcy50dS1iZXJsaW4uZGUKRnJhbudvaXMtWGF2aWVyIENvdWRlcnQJCQkJY291ZGVydEBjbGlwcGVyLmVucy5mcgpEYXZpZCBEYW5leQkJCQkJZGRhbmV5QGF2dHJleC5jb20KQnVkIERhdmlzCQkJCQliZGF2aXM5NjU5QGNvbWNhc3QubmV0CkNocmlzIERlbWV0cmlvdQkJCQkJY2dkQGJyb2FkY29tLmNvbQpaZGVuZWsgRHZvcmFrCQkJCQlkdm9yYWt6QHN1c2UuY3oKU3RldmUgRWxsY2V5CQkJCQlzamVAY3VwLmhwLmNvbQpNb2hhbiBFbWJhcgkJCQkJZ251c3R1ZmZAdGhpc2lzY29vbC5jb20KTWFyYyBFc3BpZQkJCQkJZXNwaWVAY3ZzLm9wZW5ic2Qub3JnCkFuc2dhciBFc3p0ZXJtYW5uCQkJCWFuc2dhckB0aHBoeS51bmktZHVlc3NlbGRvcmYuZGUKRG91ZyBFdmFucwkJCQkJZGplQHRyYW5zbWV0YS5jb20KQnJpYW4gRm9yZAkJCQkJZm9yZEB2c3MuZnNpLmNvbQpLYXZlaCBHaGF6aQkJCQkJZ2hhemlAY2FpcC5ydXRnZXJzLmVkdQpNYXR0aGV3IEdpbmdlbGwJCQkJCWdpbmdlbGxAZ25hdC5jb20KQW50aG9ueSBHcmVlbgkJCQkJZ3JlZW5AcmVkaGF0LmNvbQpEb3VnIEdyZWdvcgkJCQkJZG91Zy5ncmVnb3JAZ21haWwuY29tClJpY2hhcmQgR3VlbnRoZXIJCQkJcmd1ZW50aEBnY2MuZ251Lm9yZwpMYXVyZW50IEd1ZXJieQkJCQkJbGF1cmVudEBndWVyYnkubmV0Ck1vc3RhZmEgSGFnb2cJCQkJCWhhZ29nQGdjYy5nbnUub3JnCk9saXZpZXIgSGFpbnF1ZQkJCQkJaGFpbnF1ZUBhY3QtZXVyb3BlLmZyClN0dWFydCBIYXN0aW5ncwkJCQkJc3R1YXJ0QGFwcGxlLmNvbQpNYXR0aGV3IEhpbGxlcgkJCQkJaGlsbGVyQHJlZGhhdC5jb20KTWFuZnJlZCBIb2xsc3RlaW4JCQkJbWhAc3VzZS5jb20KRmFsayBIdWVmZm5lcgkJCQkJZmFsa0BkZWJpYW4ub3JnCkJlcm5hcmRvIElubm9jZW50aQkJCQliZXJuaWVAZGV2ZWxlci5jb20KRGFuaWVsIEphY29ib3dpdHoJCQkJZGFuQGRlYmlhbi5vcmcKQW5kcmVhcyBKYWVnZXIJCQkJCWFqQHN1c2UuZGUKRmFyaWJvcnogSmFoYW5pYW4JCQkJZmphaGFuaWFuQGFwcGxlLmNvbQpLbGF1cyBLYWVtcGYJCQkJCWtrYWVtcGZAcHJvZ2lzLmRlClN0ZXZlIEthcmdsCQkJCQlzZ2tAdHJvdXRtYXNrLmFwbC53YXNoaW5ndG9uLmVkdQpCcmVuZGFuIEtlaG9lCQkJCQlicmVuZGFuQHplbi5vcmcKTXVtaXQgS2hhbgkJCQkJa2hhbkB4cmF5bGl0aC53aXNjLmVkdQpNYXR0aGlhcyBLbG9zZQkJCQkJZG9rb0BkZWJpYW4ub3JnCkplZmYgS25hZ2dzCQkJCQlqa25hZ2dzQHJlZGhhdC5jb20KTWljaGFlbCBLb2NoCQkJCQlrb25xdWVyb3JAZ214LmRlClRob21hcyBLb2VuaWcJCQkJCVRob21hcy5Lb2VuaWdAb25saW5lLmRlCk1hdHQgS3JhYWkJCQkJCWtyYWFpQGZ0YmZzLm9yZwpTY290dCBSb2JlcnQgTGFkZAkJCQlzY290dC5sYWRkQGNveW90ZWd1bGNoLmNvbQpSYXp5YSBMYWRlbHNreQkJCQkJcmF6eWFAZ2NjLmdudS5vcmcKQWFyb24gVy4gTGFGcmFtYm9pc2UJCQkJYWFyb25hdmF5NjJAYWFyb253bC5jb20KTWFyYyBMZWhtYW5uCQkJCQlwY2dAZ29vZi5jb20KQWxhbiBMZWhvdHNreQkJCQkJYXBsQGFsdW0ubWl0LmVkdQpKYW1lcyBMZW1rZQkJCQkJamltQHdhc2FiaXN5c3RlbXMuY29tCktyaWFuZyBMZXJkc3V3YW5ha2lqCQkJCWxlcmRzdXdhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldApXYXJyZW4gTGV2eQkJCQkJd2FycmVubEBjcnV6aW8uY29tCkRvbiBMaW5kc2F5CQkJCQlkbGluZHNheUByZWRoYXQuY29tClJhbHBoIExvYWRlcgkJCQkJcmNsQGlodWcuY28ubnoKR2Fib3IgTG9raQkJCQkJbG9raUBpbmYudS1zemVnZWQuaHUKRGF2ZSBMb3ZlCQkJCQlkLmxvdmVAZGwuYWMudWsKTWFydGluIHYuIEz2d2lzCQkJCQlsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGUKSEogTHUJCQkJCQloamxAbHVjb24ub3JnClJhbmppdCBNYXRoZXcJCQkJCXJtYXRoZXdAaG90bWFpbC5jb20KTWljaGFlbCBNYXR6CQkJCQltYXR6QHN1c2UuZGUKR3JlZyBNY0dhcnkJCQkJCWdrbUBnbnUub3JnCkFkYW0gTWVnYWN6CQkJCQlhZGFtQHh3dC5vcmcKQWxhbiBNb2RyYQkJCQkJYW1vZHJhQGJpZ3BvbmQubmV0LmF1CkNhdGhlcmluZSBNb29yZQkJCQkJY2xtQHJlZGhhdC5jb20KRG9yaXQgTmFpc2hsb3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9yaXRAaWwuaWJtLmNvbQpBZGFtIE5lbWV0CQkJCQlhbmVtZXRAbG54dy5jb20KRGFuIE5pY29sYWVzY3UJCQkJCWRhbm5AaWNzLnVjaS5lZHUKRGF2aWQgTydCcmllbgkJCQkJb2JyaWVuQEZyZWVCU0Qub3JnClR1cmx5IE8nQ29ubm9yCQkJCQl0dXJseUBhcHBsZS5jb20KSmVmZnJleSBELiBPbGRoYW0JCQkJb2xkaGFtQGNvZGVzb3VyY2VyeS5jb20KUmFpbmVyIE9ydGgJCQkJCXJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERQpEZXZhbmcgUGF0ZWwJCQkJCWRwYXRlbEBhcHBsZS5jb20KR3JhZW1lIFBldGVyc29uCQkJCQlncEBxbnguY29tCkFsZXhhbmRyZSBQZXRpdC1CaWFuY28JCQkJYXBiaWFuY29AcmVkaGF0LmNvbQpOaWNvbGFzIFBpdHJlCQkJCQluaWNvQGNhbS5vcmcKQ2xpbnRvbiBQb3BldHoJCQkJCWNwb3BldHpAY3BvcGV0ei5jb20KSmVycnkgUXVpbm4JCQkJCWpscXVpbm5Ab3B0b25saW5lLm5ldApSb2xmIFJhc211c3NlbgkJCQkJcm9sZndyQGdjYy5nbnUub3JnClZvbGtlciBSZWljaGVsdAkJCQkJcmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZQpUb20gUml4CQkJCQkJdHJpeEByZWRoYXQuY29tCkNyYWlnIFJvZHJpZ3VlcwkJCQkJcm9kcmlnY0BnY2MuZ251Lm9yZwpHYXZpbiBSb21pZy1Lb2NoCQkJCWdhdmluQHJlZGhhdC5jb20KSXJhIFJvc2VuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXJhckBpbC5pYm0uY29tCklyYSBSdWJlbgkJCQkJaXJhQGFwcGxlLmNvbQpEb3VnbGFzIFJ1cHAJCQkJCXJ1cHBAZ25hdC5jb20KTWF0dGhldyBTYWNocwkJCQkJbXNhY2hzQGFwcGxlLmNvbQpBbGV4IFNhbXVlbAkJCQkJc2FtdWVsQGNvZGVzb3VyY2VyeS5jb20KVG9iaWFzIFNjaGz8dGVyCQkJCQl0b2JpYXMuc2NobHVldGVyQHBoeXNpay51bmktbXVlbmNoZW4uZGUKQW5kcmVhcyBTY2h3YWIJCQkJCXNjaHdhYkBzdXNlLmRlClN2ZWluIFNlbGRhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN2ZWluLnNlbGRhbEBzb2xpZGFzLmNvbQpGcmFueiBTaXJsCQkJCQlmcmFuei5zaXJsLWtlcm5lbEBsYXV0ZXJiYWNoLmNvbQpNaWNoYWVsIFNva29sb3YJCQkJCW1zb2tvbG92QGl2YW4uSGFyaGFuLk9SRwpSaWNoYXJkIFN0YWxsbWFuCQkJCXJtc0BnbnUub3JnCkdyYWhhbSBTdG90dAkJCQkJZ3JhaGFtLnN0b3R0QGJ0aW50ZXJuZXQuY29tCk1pa2UgU3R1bXAJCQkJCW1yc0BhcHBsZS5jb20KSmVmZiBTdHVybQkJCQkJanN0dXJtQGdjYy5nbnUub3JnCktyZXN0ZW4gS3JhYiBUaG9ydXAJCQkJa3JhYkBnY2MuZ251Lm9yZwpDYXJvbGluZSBUaWNlCQkJCQljdGljZUBhcHBsZS5jb20KTWljaGFlbCBUaWVtYW5uCQkJCQl0aWVtYW5uQHJlZGhhdC5jb20KSm9uYXRoYW4gV2FrZWx5CQkJCQlyZWRpQGdjYy5nbnUub3JnCktyaXN0ZXIgV2FsZnJpZHNzb24JCQkJY2F0b0BkZi5sdGguc2UKRmVuZyBXYW5nCQkJCQlmZW5nd2FuZ0BudWR0LmVkdS5jbgpKb2huIFdlaGxlCQkJCQlqb2huQGZlaXRoLmNvbQpGbG9yaWFuIFdlaW1lcgkJCQkJZndAZGVuZWIuZW55by5kZQpNYXJrIFdpZWxhYXJkCQkJCQltYXJrQGdjYy5nbnUub3JnCkNhcmxvIFdvb2QJCQkJCWNhcmxvQGFsaW5vZS5jb20KQ2FucXVuIFlhbmcJCQkJCWNhbnF1bkBudWR0LmVkdS5jbgpKb24gWmllZ2xlcgkJCQkJam9uekBhcHBsZS5jb20KSm9zZWYgWmxvbWVrCQkJCQlqb3NlZi56bG9tZWtAZW1haWwuY3oKCkJ1ZyBkYXRhYmFzZSBvbmx5IGFjY291bnRzCgpKYW1lcyBEZW5uZXR0CQkJCQlqZGVubmV0dEBhY20ub3JnCkNocmlzdGlhbiBFaHJoYXJkdAkJCQllaHJoYXJkdEBtYXRoZW1hdGlrLnVuaS11bG0uZGUKRGFyYSBIYXplZ2hpCQkJCQlkaGF6ZWdoaUB5YWhvby5jb20K