PD9waHANCg0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAqIENvcHlyaWdodCAoYykgMjAwOSBFY2xpcHNlIEZvdW5kYXRpb24gYW5kIG90aGVycy4NCiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCiAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQogKg0KICogQ29udHJpYnV0b3JzOg0KICogU2ViYXN0aWVuIEdlcmFyZCwgQ0VBIExJU1QNCiAqICAgIA0KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQoNCgkvLyBwcm9qZWN0IHJvb3QNCgkkUFIgPSAibW9kZWxpbmcvbWR0L3BhcHlydXMiOw0KCSRQUl93d3cgPSAibW9kZWxpbmcvbWR0L3BhcHlydXMiOw0KCSRwcm9qZWN0TmFtZSA9ICJQYXB5cnVzIjsNCgkkcHJvamVjdHMgPSBhcnJheSgiUGFweXJ1cyIgPT4gInBhcHlydXMiKTsNCgkvLyRwcm9qZWN0cyA9IGFycmF5KCk7DQoJLy8kZGVmYXVsdFByb2ogPSAicGFweXJ1cyI7DQoNCgkkZXh0cmFwcm9qZWN0cyA9IGFycmF5KCk7IC8vY29tcG9uZW50cyB3aXRoIG9ubHkgZG93bmxvYWRzLCBubyBpbmZvIHlldCwgInByZXR0eW5hbWUiID0+ICJkaXJlY3RvcnkiDQoJJG5vZG93bmxvYWRzID0gYXJyYXkoKTsgLy9jb21wb25lbnRzIHdpdGggb25seSBpbmZvcm1hdGlvbiwgbm8gZG93bmxvYWRzLCBvciBubyBidWlsZHMgYXZhaWxhYmxlIHlldCwgInByb2plY3RrZXkiDQoJJG5vbmV3c2dyb3VwID0gYXJyYXkoKTsgLy9jb21wb25lbnRzIHdpdGhvdXQgbmV3c2dyb3VwDQoJJG5vbWFpbGluZ2xpc3QgPSBhcnJheSgpOyAvL2NvbXBvbmVudHMgd2l0aG91dCBtYWlsaW5nbGlzdA0KCSRpbmN1YmF0aW5nID0gdHJ1ZTsgLy8gY29tcG9uZW50cyB3aGljaCBhcmUgaW5jdWJhdGluZw0KCSRub21lbmNsYXR1cmUgPSAiUHJvamVjdCI7IC8vYXJlIHdlIGRlYWxpbmcgd2l0aCAiY29tcG9uZW50cyIgb3IgInByb2plY3RzIj8NCgkNCgkkYnVpbGR0eXBlcyA9IGFycmF5KA0KCQkiUiIgPT4gIlJlbGVhc2UiLA0KCQkiUyIgPT4gIlN0YWJsZSIsDQoJCSJJIiA9PiAiSW50ZWdyYXRpb24iLA0KCQkiTSIgPT4gIk1haW50ZW5hbmNlIiwNCgkJIk4iID0+ICJOaWdodGx5Ig0KCSk7DQoJDQoJaW5jbHVkZV9vbmNlICRfU0VSVkVSWyJET0NVTUVOVF9ST09UIl0gLiAiL21vZGVsaW5nL2luY2x1ZGVzL3NjcmlwdHMucGhwIjsNCgkNCg0KCSMgU2V0IHRoZSB0aGVtZSBmb3IgeW91ciBwcm9qZWN0J3Mgd2ViIHBhZ2VzLg0KCSMgU2VlIGh0dHA6Ly9lY2xpcHNlLm9yZy9waG9lbml4Lw0KCSR0aGVtZSA9ICJOb3ZhIjsNCgkNCg0KCSMgRGVmaW5lIHlvdXIgcHJvamVjdC13aWRlIE5hdmlnYXRpb24gaGVyZQ0KCSMgVGhpcyBhcHBlYXJzIG9uIHRoZSBsZWZ0IG9mIHRoZSBwYWdlIGlmIHlvdSBkZWZpbmUgYSBsZWZ0IG5hdg0KCSMgRm9ybWF0IGlzIExpbmsgdGV4dCwgbGluayBVUkwgKGNhbiBiZSBodHRwOi8vd3d3LnNvbWVvdGhlcnNpdGUuY29tLyksIHRhcmdldCAoX3NlbGYsIF9ibGFuayksIGxldmVsICgxLCAyIG9yIDMpDQoJIyB0aGVzZSBhcmUgb3B0aW9uYWwNCgkNCgkkTmF2LT5zZXRMaW5rTGlzdChhcnJheSgpKTsNCgkkTmF2LT5hZGROYXZTZXBhcmF0b3IoIlBhcHlydXMiLCAJIi9tb2RlbGluZy9tZHQvcGFweXJ1cyIpOw0KCSROYXYtPmFkZEN1c3RvbU5hdigiR2V0dGluZyBzdGFydGVkIiwgIi9tb2RlbGluZy9tZHQvcGFweXJ1cy91cGRhdGVzL2luZGV4LnBocCIsICJfc2VsZiIsIDMpOw0KCSROYXYtPmFkZEN1c3RvbU5hdigiRG93bmxvYWRzIiwgIi9tb2RlbGluZy9tZHQvcGFweXJ1cy9kb3dubG9hZHMvaW5kZXgucGhwIiwgIl9zZWxmIiwgMyk7DQoJJE5hdi0+YWRkQ3VzdG9tTmF2KCJEb2N1bWVudGF0aW9uIiwgIi9tb2RlbGluZy9tZHQvcGFweXJ1cy91c2Vyc0Nvcm5lci91c2Vyc0Nvcm5lckluZGV4LnBocCIsICJfc2VsZiIsIDMpOw0KCSROYXYtPmFkZEN1c3RvbU5hdigiU3VwcG9ydCIsICIvbW9kZWxpbmcvbWR0L3BhcHlydXMvc3VwcG9ydC9pbmRleC5waHAiLCAiX3NlbGYiLCAzKTsNCgkkTmF2LT5hZGRDdXN0b21OYXYoIkdldHRpbmcgaW52b2x2ZWQiLCAiL21vZGVsaW5nL21kdC9wYXB5cnVzL2RldmVsb3BwZXJzQ29ybmVyL2RldmVsb3BwZXJzQ29ybmVySW5kZXgucGhwIiwgIl9zZWxmIiwgMyk7DQoNCgkjIERlZmluZSBrZXl3b3JkcywgYXV0aG9yIGFuZCB0aXRsZSBoZXJlLCBvciBpbiBlYWNoIFBIUCBwYWdlIHNwZWNpZmljYWxseQ0KCSRwYWdlS2V5d29yZHMJPSAicGFweXJ1cywgZHNsLCBtb2RlbGluZywgZG9tYWluIHNwZWNpZmljIGxhbmd1YWdlLCBncmFwaGljYWwsIHVtbCwgc3lzbWwiOw0KCSRwYWdlQXV0aG9yCQk9ICJTZWJhc3RpZW4gR2VyYXJkLCBS6W1pIFNjaG5la2VuYnVyZ2VyIjsNCgkkcGFnZVRpdGxlIAkJPSAiUGFweXJ1cyI7DQoNCg0KCSMgdG9wIG5hdmlnYXRpb24gYmFyDQoJIyBUbyBvdmVycmlkZSBhbmQgcmVwbGFjZSB0aGUgbmF2aWdhdGlvbiB3aXRoIHlvdXIgb3duLCB1bmNvbW1lbnQgdGhlIGxpbmUgYmVsb3cuDQoJJE1lbnUtPnNldE1lbnVJdGVtTGlzdChhcnJheSgpKTsNCgkkTWVudS0+YWRkTWVudUl0ZW0oIkhvbWUiLCAiL21vZGVsaW5nL21kdC9wYXB5cnVzIiwgIl9zZWxmIik7DQoJJE1lbnUtPmFkZE1lbnVJdGVtKCJHZXR0aW5nIHN0YXJ0ZWQiLCAiL21vZGVsaW5nL21kdC9wYXB5cnVzL3VwZGF0ZXMvaW5kZXgucGhwIiwgIl9zZWxmIik7DQoJJE1lbnUtPmFkZE1lbnVJdGVtKCJEb3dubG9hZHMiLCAiL21vZGVsaW5nL21kdC9wYXB5cnVzL2Rvd25sb2Fkcy9pbmRleC5waHAiLCAiX3NlbGYiKTsNCgkkTWVudS0+YWRkTWVudUl0ZW0oIkRvY3VtZW50YXRpb24iLCAiL21vZGVsaW5nL21kdC9wYXB5cnVzL3VzZXJzQ29ybmVyL3VzZXJzQ29ybmVySW5kZXgucGhwIiwgIl9zZWxmIik7DQoJJE1lbnUtPmFkZE1lbnVJdGVtKCJTdXBwb3J0IiwgIi9tb2RlbGluZy9tZHQvcGFweXJ1cy9zdXBwb3J0L2luZGV4LnBocCIsICJfc2VsZiIpOw0KCSRNZW51LT5hZGRNZW51SXRlbSgiR2V0dGluZyBpbnZvbHZlZCIsICIvbW9kZWxpbmcvbWR0L3BhcHlydXMvZGV2ZWxvcHBlcnNDb3JuZXIvZGV2ZWxvcHBlcnNDb3JuZXJJbmRleC5waHAiLCAiX3NlbGYiKTsNCgkNCgkjIFRvIGRlZmluZSBhZGRpdGlvbmFsIENTUyBvciBvdGhlciBwcmUtYm9keSBoZWFkZXJzDQoJIyAkQXBwLT5BZGRFeHRyYUh0bWxIZWFkZXIoJzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii9kZWZhdWx0L3N0eWxlLmNzcyIvPicpOw0KCQ0KCSMgVG8gZW5hYmxlIG9jY2FzaW9uYWwgRWNsaXBzZSBGb3VuZGF0aW9uIFByb21vdGlvbiBiYW5uZXJzIG9uIHlvdXIgcGFnZXMgKEVjbGlwc2VDb24sIGV0YykNCgkkQXBwLT5Qcm9tb3Rpb24gPSBUUlVFOw0KCQ0KCSMgSWYgeW91IGhhdmUgR29vZ2xlIEFuYWx5dGljcyBjb2RlLCB1c2UgaXQgaGVyZQ0KCSMgJEFwcC0+U2V0R29vZ2xlQW5hbHl0aWNzVHJhY2tpbmdDb2RlKCJZT1VSX0NPREUiKTsNCj8+