LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgICAgICAgICAgICAgICAKICogRmlsZW5hbWU6ICAgICAgaXJsYW5fcHJvdmlkZXIuaAogKiBWZXJzaW9uOiAgICAgICAwLjEKICogRGVzY3JpcHRpb246ICAgSXJEQSBMQU4gYWNjZXNzIGxheWVyCiAqIFN0YXR1czogICAgICAgIEV4cGVyaW1lbnRhbC4KICogQXV0aG9yOiAgICAgICAgRGFnIEJyYXR0bGkgPGRhZ2JAY3MudWl0Lm5vPgogKiBDcmVhdGVkIGF0OiAgICBTdW4gQXVnIDMxIDIwOjE0OjM3IDE5OTcKICogTW9kaWZpZWQgYXQ6ICAgU3VuIE1heSAgOSAxMjoyNjoxMSAxOTk5CiAqIE1vZGlmaWVkIGJ5OiAgIERhZyBCcmF0dGxpIDxkYWdiQGNzLnVpdC5ubz4KICogCiAqICAgICBDb3B5cmlnaHQgKGMpIDE5OTgtMTk5OSBEYWcgQnJhdHRsaSA8ZGFnYkBjcy51aXQubm8+LCBBbGwgUmlnaHRzIFJlc2VydmVkLgogKiAgICAgCiAqICAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIAogKiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgCiAqICAgICBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiAKICogICAgIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiAgICAgTmVpdGhlciBEYWcgQnJhdHRsaSBub3IgVW5pdmVyc2l0eSBvZiBUcm9tc/ggYWRtaXQgbGlhYmlsaXR5IG5vcgogKiAgICAgcHJvdmlkZSB3YXJyYW50eSBmb3IgYW55IG9mIHRoaXMgc29mdHdhcmUuIFRoaXMgbWF0ZXJpYWwgaXMgCiAqICAgICBwcm92aWRlZCAiQVMtSVMiIGFuZCBhdCBubyBjaGFyZ2UuCiAqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCiNpZm5kZWYgSVJMQU5fU0VSVkVSX0gKI2RlZmluZSBJUkxBTl9TRVJWRVJfSAoKI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgojaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KI2luY2x1ZGUgPGxpbnV4L3NrYnVmZi5oPgojaW5jbHVkZSA8bGludXgvbmV0ZGV2aWNlLmg+CgojaW5jbHVkZSA8bmV0L2lyZGEvaXJsYW5fY29tbW9uLmg+Cgp2b2lkIGlybGFuX3Byb3ZpZGVyX2N0cmxfZGlzY29ubmVjdF9pbmRpY2F0aW9uKHZvaWQgKmluc3RhbmNlLCB2b2lkICpzYXAsIAoJCQkJCSAgICAgICBMTV9SRUFTT04gcmVhc29uLCAKCQkJCQkgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYik7CgoKdm9pZCBpcmxhbl9wcm92aWRlcl9jb25uZWN0X3Jlc3BvbnNlKHN0cnVjdCBpcmxhbl9jYiAqLCBzdHJ1Y3QgdHNhcF9jYiAqKTsKCmludCBpcmxhbl9wYXJzZV9vcGVuX2RhdGFfY21kKHN0cnVjdCBpcmxhbl9jYiAqc2VsZiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7CmludCBpcmxhbl9wcm92aWRlcl9wYXJzZV9jb21tYW5kKHN0cnVjdCBpcmxhbl9jYiAqc2VsZiwgaW50IGNtZCwKCQkJCSBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKCnZvaWQgaXJsYW5fcHJvdmlkZXJfc2VuZF9yZXBseShzdHJ1Y3QgaXJsYW5fY2IgKnNlbGYsIGludCBjb21tYW5kLCAKCQkJICAgICAgIGludCByZXRfY29kZSk7CmludCBpcmxhbl9wcm92aWRlcl9vcGVuX2N0cmxfdHNhcChzdHJ1Y3QgaXJsYW5fY2IgKnNlbGYpOwoKI2VuZGlmCgoK