cGFja2FnZSBvcmcuZWNsaXBzZS5qc3Quc2VydmVyLnRvbWNhdC51aS5pbnRlcm5hbC5lZGl0b3I7Ci8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIENvcHlyaWdodCAoYykgMjAwMyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KICogQWxsIHJpZ2h0cyByZXNlcnZlZC4goCBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENvbW1vbiBQdWJsaWMgTGljZW5zZSB2MS4wCiAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0CiAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sCqAqCiAqIENvbnRyaWJ1dG9yczoKICogICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwppbXBvcnQgb3JnLmVjbGlwc2UudWkuSUVkaXRvclBhcnQ7CgppbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklTZXJ2ZXI7CmltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSVNlcnZlckNvbmZpZ3VyYXRpb247CmltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLnVpLmVkaXRvci5JU2VydmVyRWRpdG9yUGFydEZhY3RvcnlEZWxlZ2F0ZTsKLyoqCiAqCiAqLwpwdWJsaWMgY2xhc3MgQ29uZmlndXJhdGlvbldlYk1vZHVsZUVkaXRvckZhY3RvcnkgaW1wbGVtZW50cyBJU2VydmVyRWRpdG9yUGFydEZhY3RvcnlEZWxlZ2F0ZSB7CgkvKgoJICogQHNlZSBJU2VydmVyRWRpdG9yUGFydEZhY3RvcnlEZWxlZ2F0ZSNzaG91bGREaXNwbGF5KElTZXJ2ZXIsIElTZXJ2ZXJDb25maWd1cmF0aW9uKQoJICovCglwdWJsaWMgYm9vbGVhbiBzaG91bGRDcmVhdGVQYWdlKElTZXJ2ZXIgc2VydmVyLCBJU2VydmVyQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSB7CgkJcmV0dXJuIChzZXJ2ZXIgIT0gbnVsbCAmJiBjb25maWd1cmF0aW9uICE9IG51bGwpOwoJfQoKCS8qCgkgKiBAc2VlIElTZXJ2ZXJFZGl0b3JQYXJ0RmFjdG9yeURlbGVnYXRlI2NyZWF0ZVBhZ2UoKQoJICovCglwdWJsaWMgSUVkaXRvclBhcnQgY3JlYXRlUGFnZSgpIHsKCQlyZXR1cm4gbmV3IENvbmZpZ3VyYXRpb25XZWJNb2R1bGVFZGl0b3JQYXJ0KCk7Cgl9Cn0K