LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgICAgICAgICAgICAgICAKICogRmlsZW5hbWU6ICAgICAgaXJwb3J0LmgKICogVmVyc2lvbjogICAgICAgMC4xCiAqIERlc2NyaXB0aW9uOiAgIFNlcmlhbCBkcml2ZXIgZm9yIElyREEKICogU3RhdHVzOiAgICAgICAgRXhwZXJpbWVudGFsLgogKiBBdXRob3I6ICAgICAgICBEYWcgQnJhdHRsaSA8ZGFnYkBjcy51aXQubm8+CiAqIENyZWF0ZWQgYXQ6ICAgIFN1biBBdWcgIDMgMTM6NDk6NTkgMTk5NwogKiBNb2RpZmllZCBhdDogICBGcmkgSmFuIDE0IDEwOjIxOjEwIDIwMDAKICogTW9kaWZpZWQgYnk6ICAgRGFnIEJyYXR0bGkgPGRhZ2JAY3MudWl0Lm5vPgogKiAKICogICAgIENvcHlyaWdodCAoYykgMTk5NywgMTk5OC0yMDAwIERhZyBCcmF0dGxpIDxkYWdiQGNzLnVpdC5ubz4KICogICAgIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAqICAgICAKICogICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgCiAqICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyAKICogICAgIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIAogKiAgICAgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqICAgICBOZWl0aGVyIERhZyBCcmF0dGxpIG5vciBVbml2ZXJzaXR5IG9mIFRyb21z+CBhZG1pdCBsaWFiaWxpdHkgbm9yCiAqICAgICBwcm92aWRlIHdhcnJhbnR5IGZvciBhbnkgb2YgdGhpcyBzb2Z0d2FyZS4gVGhpcyBtYXRlcmlhbCBpcyAKICogICAgIHByb3ZpZGVkICJBUy1JUyIgYW5kIGF0IG5vIGNoYXJnZS4KICoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKI2lmbmRlZiBJUlBPUlRfSAojZGVmaW5lIElSUE9SVF9ICgojaW5jbHVkZSA8bGludXgvbmV0ZGV2aWNlLmg+CiNpbmNsdWRlIDxsaW51eC9za2J1ZmYuaD4KI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CiNpbmNsdWRlIDxsaW51eC9zcGlubG9jay5oPgoKI2luY2x1ZGUgPG5ldC9pcmRhL2lyZGFfZGV2aWNlLmg+CgojZGVmaW5lIFNQRUVEX0RFRkFVTFQgOTYwMAojZGVmaW5lIFNQRUVEX01BWCAgICAgMTE1MjAwCgovKgogKiBUaGVzZSBhcmUgdGhlIHN1cHBvcnRlZCBzZXJpYWwgdHlwZXMuCiAqLwojZGVmaW5lIFBPUlRfVU5LTk9XTiAgICAwCiNkZWZpbmUgUE9SVF84MjUwICAgICAgIDEKI2RlZmluZSBQT1JUXzE2NDUwICAgICAgMgojZGVmaW5lIFBPUlRfMTY1NTAgICAgICAzCiNkZWZpbmUgUE9SVF8xNjU1MEEgICAgIDQKI2RlZmluZSBQT1JUX0NJUlJVUyAgICAgNQojZGVmaW5lIFBPUlRfMTY2NTAgICAgICA2CiNkZWZpbmUgUE9SVF9NQVggICAgICAgIDYgIAoKI2RlZmluZSBGUkFNRV9NQVhfU0laRSAyMDQ4CgpzdHJ1Y3QgaXJwb3J0X2NiIHsKCXN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7IC8qIFllcyEgd2UgYXJlIHNvbWUga2luZCBvZiBuZXRkZXZpY2UgKi8KCXN0cnVjdCBuZXRfZGV2aWNlX3N0YXRzIHN0YXRzOwoKCXN0cnVjdCBpcmxhcF9jYiAqaXJsYXA7ICAgIC8qIFRoZSBsaW5rIGxheWVyIHdlIGFyZSBhdHRhY2hlZCB0byAqLwoKCWNoaXBpb190IGlvOyAgICAgICAgICAgICAgIC8qIElyREEgY29udHJvbGxlciBpbmZvcm1hdGlvbiAqLwoJaW9idWZmX3QgdHhfYnVmZjsgICAgICAgICAgLyogVHJhbnNtaXQgYnVmZmVyICovCglpb2J1ZmZfdCByeF9idWZmOyAgICAgICAgICAvKiBSZWNlaXZlIGJ1ZmZlciAqLwoKCXN0cnVjdCBxb3NfaW5mbyBxb3M7ICAgICAgIC8qIFFvUyBjYXBhYmlsaXRpZXMgZm9yIHRoaXMgZGV2aWNlICovCglkb25nbGVfdCAqZG9uZ2xlOyAgICAgICAgICAvKiBEb25nbGUgZHJpdmVyICovCgogCV9fdTMyIGZsYWdzOyAgICAgICAgICAgICAgIC8qIEludGVyZmFjZSBmbGFncyAqLwoJX191MzIgbmV3X3NwZWVkOwoJaW50IG1vZGU7CglpbnQgaW5kZXg7ICAgICAgICAgICAgICAgICAvKiBJbnN0YW5jZSBpbmRleCAqLwoJaW50IHRyYW5zbWl0dGluZzsJICAgLyogQXJlIHdlIHRyYW5zbWl0dGluZyA/ICovCgoJc3BpbmxvY2tfdCBsb2NrOyAgICAgICAgICAgLyogRm9yIHNlcmlhbGl6aW5nIG9wZXJhdGlvbnMgKi8KCgkvKiBGb3IgcGlnZ3liYWNrIGRyaXZlcnMgKi8KCXZvaWQgKnByaXY7ICAgICAgICAgICAgICAgIAoJdm9pZCAoKmNoYW5nZV9zcGVlZCkodm9pZCAqcHJpdiwgX191MzIgc3BlZWQpOwoJaW50ICgqaW50ZXJydXB0KShpbnQgaXJxLCB2b2lkICpkZXZfaWQsIHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKfTsKCiNlbmRpZiAvKiBJUlBPUlRfSCAqLwo=