LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQoqIENvcHlyaWdodCAoQykgMjAxNiBieSBTYXZvaXItZmFpcmUgTGludXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCiogQXV0aG9yOiBK5GdlciBOaWNvbGFzIDxuaWNvbGFzLmphZ2VyQHNhdm9pcmZhaXJlbGludXguY29tPiAgICAgICAgICAgICAgKg0KKiBBdXRob3I6IFRyYWN6eWsgQW5kcmVhcyA8YW5kcmVhcy50cmFjenlrQHNhdm9pcmZhaXJlbGludXguY29tPiAgICAgICAgICAqDQoqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCiogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgICAgKg0KKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSAgICAqDQoqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yICAgICAgICoNCiogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQoqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCAgICAgICAgICoNCiogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgICAgICAgICAgKg0KKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlICAgICAgICAgICAqDQoqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAgICAgICAqDQoqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgICoNCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KI3ByYWdtYSBvbmNlDQoNCm5hbWVzcGFjZSBSaW5nQ2xpZW50VVdQDQp7DQoNCm5hbWVzcGFjZSBWaWRlbw0Kew0KDQpyZWYgY2xhc3MgVmlkZW9DYXB0dXJlTWFuYWdlcjsNCnJlZiBjbGFzcyBWaWRlb1JlbmRlcmVyTWFuYWdlcjsNCg0KcHVibGljIHJlZiBjbGFzcyBWaWRlb01hbmFnZXIgc2VhbGVkDQp7DQppbnRlcm5hbDoNCiAgICAvKiByZWYgY2xhc3Mgc2luZ2xldG9uICovDQogICAgc3RhdGljIHByb3BlcnR5IFZpZGVvTWFuYWdlcl4gaW5zdGFuY2UNCiAgICB7DQogICAgICAgIFZpZGVvTWFuYWdlcl4gZ2V0KCkNCiAgICAgICAgew0KICAgICAgICAgICAgc3RhdGljIFZpZGVvTWFuYWdlcl4gaW5zdGFuY2VfID0gcmVmIG5ldyBWaWRlb01hbmFnZXIoKTsNCiAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZV87DQogICAgICAgIH0NCiAgICB9DQoNCnB1YmxpYzoNCiAgICBWaWRlb0NhcHR1cmVNYW5hZ2VyXiAgICBjYXB0dXJlTWFuYWdlciAgKCk7DQogICAgVmlkZW9SZW5kZXJlck1hbmFnZXJeICAgcmVuZGVyZXJNYW5hZ2VyICgpOw0KDQpwcml2YXRlOg0KICAgIFZpZGVvTWFuYWdlcigpOw0KDQogICAgVmlkZW9DYXB0dXJlTWFuYWdlcl4gICAgdmlkZW9DYXB0dXJlTWFuYWdlcjsNCiAgICBWaWRlb1JlbmRlcmVyTWFuYWdlcl4gICB2aWRlb1JlbmRlcmVyTWFuYWdlcjsNCg0KfTsNCg0KfSAvKiBuYW1lc3BhY2UgVmlkZW8gKi8NCn0gLyogbmFtZXNwYWNlIFJpbmdDbGllbnRVV1AgKi8=