LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENvbW1vbiBQdWJsaWMgTGljZW5zZSB2MS4wCiAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0CiAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sCqAqCiAqIENvbnRyaWJ1dG9yczoKICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KcGFja2FnZSBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUudXRpbDsKCmltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSU1vZHVsZTsKaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5tb2RlbC5JTW9kdWxlRmFjdG9yeUV2ZW50OwovKioKICogCiAqLwpwdWJsaWMgY2xhc3MgTW9kdWxlRmFjdG9yeUV2ZW50IGltcGxlbWVudHMgSU1vZHVsZUZhY3RvcnlFdmVudCB7Cglwcm90ZWN0ZWQgU3RyaW5nIGZhY3RvcnlJZDsKCXByb3RlY3RlZCBJTW9kdWxlW10gYWRkZWQ7Cglwcm90ZWN0ZWQgSU1vZHVsZVtdIHJlbW92ZWQ7CgoJcHVibGljIE1vZHVsZUZhY3RvcnlFdmVudChTdHJpbmcgZmFjdG9yeUlkLCBJTW9kdWxlW10gYWRkZWQsIElNb2R1bGVbXSByZW1vdmVkKSB7CgkJdGhpcy5mYWN0b3J5SWQgPSBmYWN0b3J5SWQ7CgkJdGhpcy5hZGRlZCA9IGFkZGVkOwoJCXRoaXMucmVtb3ZlZCA9IHJlbW92ZWQ7Cgl9CgoJLyoqCgkgKiBSZXR1cm5zIHRoZSBpZCBvZiB0aGlzIGZhY3RvcnkuCgkgKiAKCSAqIEByZXR1cm4gamF2YS5sYW5nLlN0cmluZwoJICovCglwdWJsaWMgU3RyaW5nIGdldEZhY3RvcnlJZCgpIHsKCQlyZXR1cm4gZmFjdG9yeUlkOwoJfQoKCS8qKgoJICogUmV0dXJucyBhbnkgbW9kdWxlcyB0aGF0IGhhdmUgYmVlbiBhZGRlZC4KCSAqIAoJICogQHJldHVybiBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUubW9kZWwuSU1vZHVsZVtdCgkgKi8KCXB1YmxpYyBJTW9kdWxlW10gZ2V0QWRkZWRNb2R1bGVzKCkgewoJCXJldHVybiBhZGRlZDsKCX0KCgkvKioKCSAqIFJldHVybnMgYW55IG1vZHVsZXMgdGhhdCBoYXZlIGJlZW4gcmVtb3ZlZC4KCSAqIAoJICogQHJldHVybiBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUubW9kZWwuSU1vZHVsZVtdCgkgKi8KCXB1YmxpYyBJTW9kdWxlW10gZ2V0UmVtb3ZlZE1vZHVsZXMoKSB7CgkJcmV0dXJuIHJlbW92ZWQ7Cgl9Cn0K