cGFja2FnZSBvcmcuZWNsaXBzZS53c3Quc2VydmVyLnVpLmludGVybmFsLnB1Ymxpc2g7Ci8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIENvcHlyaWdodCAoYykgMjAwMyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KICogQWxsIHJpZ2h0cyByZXNlcnZlZC4goCBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENvbW1vbiBQdWJsaWMgTGljZW5zZSB2MS4wCiAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0CiAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sCqAqCiAqIENvbnRyaWJ1dG9yczoKICogICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCiAqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwppbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uud2l6YXJkLldpemFyZDsKaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIudWkuaW50ZXJuYWwuU2VydmVyVUlQbHVnaW47Ci8qKgogKiBQdWJsaXNoZXJXaXphcmQKICovCnB1YmxpYyBjbGFzcyBQdWJsaXNoZXJXaXphcmQgZXh0ZW5kcyBXaXphcmQgewoJcHJvdGVjdGVkIFZpc3VhbFB1Ymxpc2hlciB2aXN1YWxQdWJsaXNoZXI7CgoJLyoqCgkgKiBQdWJsaXNoZXJXaXphcmQgY29uc3RydWN0b3IgY29tbWVudC4KCSAqLwoJcHVibGljIFB1Ymxpc2hlcldpemFyZChWaXN1YWxQdWJsaXNoZXIgdmlzdWFsUHVibGlzaGVyKSB7CgkJc3VwZXIoKTsKCQlzZXRXaW5kb3dUaXRsZShTZXJ2ZXJVSVBsdWdpbi5nZXRSZXNvdXJjZSgiJXdpelB1Ymxpc2hXaXphcmRUaXRsZSIpKTsKCQoJCXRoaXMudmlzdWFsUHVibGlzaGVyID0gdmlzdWFsUHVibGlzaGVyOwoJfQoKCXB1YmxpYyB2b2lkIGFkZFBhZ2VzKCkgewoJCVB1Ymxpc2hlcldpemFyZFBhZ2UgcGFnZSA9IG5ldyBQdWJsaXNoZXJXaXphcmRQYWdlKHZpc3VhbFB1Ymxpc2hlcik7CgkJYWRkUGFnZShwYWdlKTsKCX0KCgkvKioKCSAqIFN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQgdGhpcyA8Y29kZT5JV2l6YXJkPC9jb2RlPiBtZXRob2QgCgkgKiB0byBwZXJmb3JtIGFueSBzcGVjaWFsIGZpbmlzaCBwcm9jZXNzaW5nIGZvciB0aGVpciB3aXphcmQuCgkgKi8KCXB1YmxpYyBib29sZWFuIHBlcmZvcm1GaW5pc2goKSB7CgkJcmV0dXJuIHRydWU7Cgl9Cn0K