LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAqIFRyYWNlIFJlY29yZGVyIExpYnJhcnkgZm9yIFRyYWNlYWx5emVyIHYzLjAuMg0KICogUGVyY2VwaW8gQUIsIHd3dy5wZXJjZXBpby5jb20NCiAqDQogKiB0cmNQYWdlZEV2ZW50QnVmZmVyLmgNCiAqDQogKiBDb25maWd1cmF0aW9uIGZvciB0aGUgcGFnZWQgZXZlbnQgYnVmZmVyIHRoYXQgY2FuIGJlIHVzZWQgYnkgVENQL0lQIG9yIA0KICogY3VzdG9tIHRyYW5zZmVyIG1ldGhvZHMuDQogKg0KICogVGVybXMgb2YgVXNlDQogKiBUaGlzIHNvZnR3YXJlICh0aGUgIlRyYWNlYWx5emVyIFJlY29yZGVyIExpYnJhcnkiKSBpcyB0aGUgaW50ZWxsZWN0dWFsDQogKiBwcm9wZXJ0eSBvZiBQZXJjZXBpbyBBQiBhbmQgbWF5IG5vdCBiZSBzb2xkIG9yIGluIG90aGVyIHdheXMgY29tbWVyY2lhbGx5DQogKiByZWRpc3RyaWJ1dGVkIHdpdGhvdXQgZXhwbGljaXQgd3JpdHRlbiBwZXJtaXNzaW9uIGJ5IFBlcmNlcGlvIEFCLg0KICoNCiAqIFNlcGFyYXRlIGNvbmRpdGlvbnMgYXBwbGllcyBmb3IgdGhlIFNFR0dFUiBicmFuZGVkIHNvdXJjZSBjb2RlIGluY2x1ZGVkLg0KICoNCiAqIFRoZSByZWNvcmRlciBsaWJyYXJ5IGlzIGZyZWUgZm9yIHVzZSB0b2dldGhlciB3aXRoIFBlcmNlcGlvIHByb2R1Y3RzLg0KICogWW91IG1heSBkaXN0cmlidXRlIHRoZSByZWNvcmRlciBsaWJyYXJ5IGluIGl0cyBvcmlnaW5hbCBmb3JtLCBidXQgcHVibGljDQogKiBkaXN0cmlidXRpb24gb2YgbW9kaWZpZWQgdmVyc2lvbnMgcmVxdWlyZSBhcHByb3ZhbCBieSBQZXJjZXBpbyBBQi4NCiAqDQogKiBEaXNjbGFpbWVyDQogKiBUaGUgdHJhY2UgdG9vbCBhbmQgcmVjb3JkZXIgbGlicmFyeSBpcyBiZWluZyBkZWxpdmVyZWQgdG8geW91IEFTIElTIGFuZA0KICogUGVyY2VwaW8gQUIgbWFrZXMgbm8gd2FycmFudHkgYXMgdG8gaXRzIHVzZSBvciBwZXJmb3JtYW5jZS4gUGVyY2VwaW8gQUIgZG9lcw0KICogbm90IGFuZCBjYW5ub3Qgd2FycmFudCB0aGUgcGVyZm9ybWFuY2Ugb3IgcmVzdWx0cyB5b3UgbWF5IG9idGFpbiBieSB1c2luZyB0aGUNCiAqIHNvZnR3YXJlIG9yIGRvY3VtZW50YXRpb24uIFBlcmNlcGlvIEFCIG1ha2Ugbm8gd2FycmFudGllcywgZXhwcmVzcyBvcg0KICogaW1wbGllZCwgYXMgdG8gbm9uaW5mcmluZ2VtZW50IG9mIHRoaXJkIHBhcnR5IHJpZ2h0cywgbWVyY2hhbnRhYmlsaXR5LCBvcg0KICogZml0bmVzcyBmb3IgYW55IHBhcnRpY3VsYXIgcHVycG9zZS4gSW4gbm8gZXZlbnQgd2lsbCBQZXJjZXBpbyBBQiwgaXRzDQogKiB0ZWNobm9sb2d5IHBhcnRuZXJzLCBvciBkaXN0cmlidXRvcnMgYmUgbGlhYmxlIHRvIHlvdSBmb3IgYW55IGNvbnNlcXVlbnRpYWwsDQogKiBpbmNpZGVudGFsIG9yIHNwZWNpYWwgZGFtYWdlcywgaW5jbHVkaW5nIGFueSBsb3N0IHByb2ZpdHMgb3IgbG9zdCBzYXZpbmdzLA0KICogZXZlbiBpZiBhIHJlcHJlc2VudGF0aXZlIG9mIFBlcmNlcGlvIEFCIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5DQogKiBvZiBzdWNoIGRhbWFnZXMsIG9yIGZvciBhbnkgY2xhaW0gYnkgYW55IHRoaXJkIHBhcnR5LiBTb21lIGp1cmlzZGljdGlvbnMgZG8NCiAqIG5vdCBhbGxvdyB0aGUgZXhjbHVzaW9uIG9yIGxpbWl0YXRpb24gb2YgaW5jaWRlbnRhbCwgY29uc2VxdWVudGlhbCBvciBzcGVjaWFsDQogKiBkYW1hZ2VzLCBvciB0aGUgZXhjbHVzaW9uIG9mIGltcGxpZWQgd2FycmFudGllcyBvciBsaW1pdGF0aW9ucyBvbiBob3cgbG9uZyBhbg0KICogaW1wbGllZCB3YXJyYW50eSBtYXkgbGFzdCwgc28gdGhlIGFib3ZlIGxpbWl0YXRpb25zIG1heSBub3QgYXBwbHkgdG8geW91Lg0KICoNCiAqIFRhYnMgYXJlIHVzZWQgZm9yIGluZGVudCBpbiB0aGlzIGZpbGUgKDEgdGFiID0gNCBzcGFjZXMpDQogKg0KICogQ29weXJpZ2h0IFBlcmNlcGlvIEFCLCAyMDE1Lg0KICogd3d3LnBlcmNlcGlvLmNvbQ0KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCg0KI2lmbmRlZiBUUkNfUEFHRURfRVZFTlRfQlVGRkVSX0NPTkZJR19IDQojZGVmaW5lIFRSQ19QQUdFRF9FVkVOVF9CVUZGRVJfQ09ORklHX0gNCg0KI2lmZGVmIF9fY3BsdXNwbHVzDQpleHRlcm4gk0OUIHsNCiNlbmRpZg0KDQojZGVmaW5lIFRSQ19QQUdFRF9FVkVOVF9CVUZGRVJfUEFHRV9DT1VOVCA1DQojZGVmaW5lIFRSQ19QQUdFRF9FVkVOVF9CVUZGRVJfUEFHRV9TSVpFIDE0NDANCg0KI2lmZGVmIF9fY3BsdXNwbHVzDQp9DQojZW5kaWYNCg0KI2VuZGlmIC8qVFJDX1BBR0VEX0VWRU5UX0JVRkZFUl9DT05GSUdfSCov