LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQoqDQoqICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDEzIFpURSBDb3Jwb3JhdGlvbi4NCioNCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKiDEoyC/6SDD+yA6IGNjDQoqIM7EILz+IMP7IDogY2NfY29tLmgNCiogz+C52M7EvP4gOiANCiogyrXP1rmmxNwgOiBjY8Sjv+m5q7myuuqhosDg0M22qNLlDQoqINf3ICAgINXfIDogDQoqILDmICAgILG+IDogDQoqIM3qs8nI1cbaIDogDQoqIMbky/zLtcP3IDogDQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCg0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQoqINDeuMS8x8K8IDogDQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiog0N64xLHgusUgOiANCiog0N4guMQgyMsgOiANCiog0N64xMjVxtogOiANCiog0N64xMTayN0gOiANCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KI2lmbmRlZiBfY2NfY29tX2hfDQojZGVmaW5lIF9jY19jb21faF8NCg0KI2luY2x1ZGUgPHN5cy90eXBlcy5oPg0KI2luY2x1ZGUgIm9zX3R5cGVfZGVmLmgiDQoNCg0KI2RlZmluZSAgX1VTRV9QUklOVEYNCiNpZmRlZiBfVVNFX1BSSU5URg0KICAgICNkZWZpbmUgIFpfUFJJTlRGKFgpICAgek9zc19QcmludGYgWA0KI2Vsc2UNCiAgICAjZGVmaW5lICBaX1BSSU5URihYKQ0KI2VuZGlmDQoNCiNkZWZpbmUgRkRfU0VUX1NJWkUgICAgIDEwDQoNCiNpZmRlZiBURVNUX0NDQVBQDQp0eXBlZGVmIHN0cnVjdA0Kew0KICBVSU5UOCBzZXRbKEZEX1NFVF9TSVpFICsgOCAtIDEpIC8gOF07DQp9IGZkX3NldDsNCnN0cnVjdCB0aW1ldmFsDQp7DQogIFVJTlQzMiB0dl9zZWM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNlY29uZHMgICAgICAqLw0KICBVSU5UMzIgdHZfdXNlYzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtaWNyb3NlY29uZHMgKi8NCn07DQoNCiNkZWZpbmUgRkRfU0VUKGZkLCBmZHNldCkgXA0KdHJ1ZQ0KI2RlZmluZSBGRF9aRVJPKGZkc2V0KSAgICAgICBtZW1zZXQoZmRzZXQsIDAsIHNpemVvZihmZF9zZXQpKQ0KDQojZGVmaW5lIEZEX0lTU0VUKGZkLCBmZHNldCkgXA0KdHJ1ZQ0KDQojZW5kaWYNCnR5cGVkZWYgc3RydWN0DQp7DQogICAgQ0hBUiAgICAgICAgICAgICAgICBwcm9tcHQ7ICAgICAgLy9wcm9tcHQgYWZ0ZXIgcmVjaXZpbmcgZGF0YQ0KICAgIGludCAgICAgICAgICAgICAgICAgYmF1ZHJhdGU7ICAgICAgIC8vYmF1ZHJhdGUNCiAgICBDSEFSICAgICAgICAgICAgICAgIGRhdGFiaXQ7ICAgICAgICAgLy9kYXRhIGJpdHMsIDUsIDYsIDcsIDgNCiAgICBDSEFSICAgICAgICAgICAgICAgIGRlYnVnOyAgIC8vZGVidWcgbW9kZSwgMDogbm9uZSwgMTogZGVidWcNCiAgICBDSEFSICAgICAgICAgICAgICAgIGVjaG87ICAgIC8vZWNobyBtb2RlLCAwOiBub25lLCAxOiBlY2hvDQogICAgQ0hBUiAgICAgICAgICAgICAgICBmY3RsOyAgICAgICAgICAgIC8vZmxvdyBjb250cm9sLCAwOiBub25lLCAxOiBoYXJkd2FyZSwgMjogc29mdHdhcmUNCiAgICBDSEFSICAgICAgICAgICAgICAgIHR0eTsgICAgICAgICAvL3R0eTogMCwgMSwgMiwgMywgNCwgNSwgNiwgNw0KICAgIENIQVIgICAgICAgICAgICAgICAgcGFyaXR5OyAgICAgIC8vcGFyaXR5IDA6IG5vbmUsIDE6IG9kZCwgMjogZXZlbg0KICAgIENIQVIgICAgICAgICAgICAgICAgc3RvcGJpdDsgICAgICAgICAvL3N0b3AgYml0cywgMSwgMg0KICAgIGludCAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQ7ICAgLy9yZXNlcnZlZCwgbXVzdCBiZSB6ZXJvDQp9VF9DQ19BUFBfUG9ydGluZm87DQojaWZuZGVmIFRFU1RfQ0NBUFANCmludCB6Q2NfQ2xlYW5DQ01TRyh2b2lkKTsNCmludCB6Q2NBcHBfR2V0QXRDbWRGZCh2b2lkKTsNCmludCB6Q2NBcHBfUG9ydFJlY3YoaW50IGZkY29tLCBDSEFSICpkYXRhLCBpbnQgZGF0YWxlbik7DQppbnQgekNjQXBwX1BvcnRTZW5kKGludCBmZGNvbSwgQ0hBUiAqZGF0YSwgaW50IGRhdGFsZW4pOw0KaW50IHpDY0FwcF9TdGFydENvbW0odm9pZCk7DQppbnQgekNjQXBwX1N0YXJ0Q29tbSh2b2lkKTsNCmludCB6Q2NBcHBfUG9ydE9wZW4oY2hhciogRGV2TmFtZSk7DQppbnQgekNjQXBwX0dldEF0SW5kRmQodm9pZCk7DQppbnQgekNjQXBwX0dldEF0Q0NGZCh2b2lkKTsNCiNlbmRpZg0KDQojZW5kaWYNCg==