LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChjKSAyMDAzIElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENvbW1vbiBQdWJsaWMgTGljZW5zZSB2MS4wCiAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0CiAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sCqAqCiAqIENvbnRyaWJ1dG9yczoKICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KcGFja2FnZSBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUudXRpbDsKCmltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUubW9kZWwuSU1vZHVsZTsKaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5tb2RlbC5JTW9kdWxlRXZlbnQ7Ci8qKgogKiAKICovCnB1YmxpYyBjbGFzcyBNb2R1bGVFdmVudCBpbXBsZW1lbnRzIElNb2R1bGVFdmVudCB7Cglwcm90ZWN0ZWQgSU1vZHVsZSBtb2R1bGU7Cglwcm90ZWN0ZWQgYm9vbGVhbiBpc0NoYW5nZWQ7Cglwcm90ZWN0ZWQgSU1vZHVsZVtdIGFkZGVkOwoJcHJvdGVjdGVkIElNb2R1bGVbXSBjaGFuZ2VkOwoJcHJvdGVjdGVkIElNb2R1bGVbXSByZW1vdmVkOwoKCXB1YmxpYyBNb2R1bGVFdmVudChJTW9kdWxlIG1vZHVsZSwgYm9vbGVhbiBpc0NoYW5nZWQsIElNb2R1bGVbXSBhZGRlZCwgSU1vZHVsZVtdIGNoYW5nZWQsIElNb2R1bGVbXSByZW1vdmVkKSB7CgkJdGhpcy5tb2R1bGUgPSBtb2R1bGU7CgkJdGhpcy5pc0NoYW5nZWQgPSBpc0NoYW5nZWQ7CgkJdGhpcy5hZGRlZCA9IGFkZGVkOwoJCXRoaXMuY2hhbmdlZCA9IGNoYW5nZWQ7CgkJdGhpcy5yZW1vdmVkID0gcmVtb3ZlZDsKCX0KCQoJLyoqCgkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5tb2RlbC5JTW9kdWxlRXZlbnQjZ2V0TW9kdWxlKCkKCSAqLwoJcHVibGljIElNb2R1bGUgZ2V0TW9kdWxlKCkgewoJCXJldHVybiBtb2R1bGU7Cgl9CgoJLyoqCgkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5tb2RlbC5JTW9kdWxlRXZlbnQjaXNDaGFuZ2VkKCkKCSAqLwoJcHVibGljIGJvb2xlYW4gaXNDaGFuZ2VkKCkgewoJCXJldHVybiBpc0NoYW5nZWQ7Cgl9CgoJLyoqCgkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5tb2RlbC5JTW9kdWxlRXZlbnQjZ2V0QWRkZWRDaGlsZE1vZHVsZXMoKQoJICovCglwdWJsaWMgSU1vZHVsZVtdIGdldEFkZGVkQ2hpbGRNb2R1bGVzKCkgewoJCXJldHVybiBhZGRlZDsKCX0KCgkvKioKCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLm1vZGVsLklNb2R1bGVFdmVudCNnZXRNb2RpZmllZENoaWxkTW9kdWxlcygpCgkgKi8KCXB1YmxpYyBJTW9kdWxlW10gZ2V0Q2hhbmdlZENoaWxkTW9kdWxlcygpIHsKCQlyZXR1cm4gY2hhbmdlZDsKCX0KCgkvKioKCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLm1vZGVsLklNb2R1bGVFdmVudCNnZXRSZW1vdmVkQ2hpbGRNb2R1bGVzKCkKCSAqLwoJcHVibGljIElNb2R1bGVbXSBnZXRSZW1vdmVkQ2hpbGRNb2R1bGVzKCkgewoJCXJldHVybiByZW1vdmVkOwoJfQp9