I2lmbmRlZiBfX1VBUlRfSF9MT0FERUQKI2RlZmluZSBfX1VBUlRfSF9MT0FERUQKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgogICAgICAgQ29weXJpZ2h0IKkgMTk5MywgMTk5NCBEaWdpdGFsIEVxdWlwbWVudCBDb3Jwb3JhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICBNYXluYXJkLCBNYXNzYWNodXNldHRzLgoKICAgICAgICAgICAgICAgICAgICAgICAgQWxsIFJpZ2h0cyBSZXNlcnZlZAoKUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBhbmQgaXRzIApkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkICAKdGhhdCB0aGUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcyAgCm9mIHNvZnR3YXJlIGFuZCBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24sIGFuZCB0aGF0IHRoZSBuYW1lIG9mIERpZ2l0YWwgbm90ICAKYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlIAp3aXRob3V0IHNwZWNpZmljLCB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uIERpZ2l0YWwgZ3JhbnRzIHRoaXMgcGVybWlzc2lvbiAKcHJvdmlkZWQgdGhhdCB5b3UgcHJvbWluZW50bHkgbWFyaywgYXMgbm90IHBhcnQgb2YgdGhlIG9yaWdpbmFsLCBhbnkgCm1vZGlmaWNhdGlvbnMgbWFkZSB0byB0aGlzIHNvZnR3YXJlIG9yIGRvY3VtZW50YXRpb24uCgpEaWdpdGFsIEVxdWlwbWVudCBDb3Jwb3JhdGlvbiBkaXNjbGFpbXMgYWxsIHdhcnJhbnRpZXMgYW5kL29yIGd1YXJhbnRlZXMgIAp3aXRoIHJlZ2FyZCB0byB0aGlzIHNvZnR3YXJlLCBpbmNsdWRpbmcgYWxsIGltcGxpZWQgd2FycmFudGllcyBvZiBmaXRuZXNzIGZvciAKYSBwYXJ0aWN1bGFyIHB1cnBvc2UgYW5kIG1lcmNoYW50YWJpbGl0eSwgYW5kIG1ha2VzIG5vIHJlcHJlc2VudGF0aW9ucyAKcmVnYXJkaW5nIHRoZSB1c2Ugb2YsIG9yIHRoZSByZXN1bHRzIG9mIHRoZSB1c2Ugb2YsIHRoZSBzb2Z0d2FyZSBhbmQgCmRvY3VtZW50YXRpb24gaW4gdGVybXMgb2YgY29ycmVjdG5lc3MsIGFjY3VyYWN5LCByZWxpYWJpbGl0eSwgY3VycmVudG5lc3Mgb3IKb3RoZXJ3aXNlOyBhbmQgeW91IHJlbHkgb24gdGhlIHNvZnR3YXJlLCBkb2N1bWVudGF0aW9uIGFuZCByZXN1bHRzIHNvbGVseSBhdCAKeW91ciBvd24gcmlzay4gCgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgojZGVmaW5lIGNvbTFSYnIJMHgzZjgKI2RlZmluZSBjb20xVGhyCTB4M2Y4CiNkZWZpbmUgY29tMUllcgkweDNmOQojZGVmaW5lIGNvbTFJaXIJMHgzZmEKI2RlZmluZSBjb20xTGNyCTB4M2ZiCiNkZWZpbmUgY29tMU1jcgkweDNmYwojZGVmaW5lIGNvbTFMc3IJMHgzZmQKI2RlZmluZSBjb20xTXNyCTB4M2ZlCiNkZWZpbmUgY29tMVNjcgkweDNmZgojZGVmaW5lIGNvbTFEbGwJMHgzZjgKI2RlZmluZSBjb20xRGxtCTB4M2Y5CgojZGVmaW5lIGNvbTJSYnIJMHgyZjgKI2RlZmluZSBjb20yVGhyCTB4MmY4CiNkZWZpbmUgY29tMkllcgkweDJmOQojZGVmaW5lIGNvbTJJaXIJMHgyZmEKI2RlZmluZSBjb20yTGNyCTB4MmZiCiNkZWZpbmUgY29tMk1jcgkweDJmYwojZGVmaW5lIGNvbTJMc3IJMHgyZmQKI2RlZmluZSBjb20yTXNyCTB4MmZlCiNkZWZpbmUgY29tMlNjcgkweDJmZgojZGVmaW5lIGNvbTJEbGwJMHgyZjgKI2RlZmluZSBjb20yRGxtCTB4MmY5CgojZGVmaW5lIENPTTEJKGNvbTFSYnIgLSBjb20yUmJyKQojZGVmaW5lIENPTTIJMAoKI2lmbmRlZiBfX0FTU0VNQkxFUl9fCgpleHRlcm4gaW50IHVhcnRfY2hhcmF2KGludCBwb3J0KTsKZXh0ZXJuIGludCB1YXJ0X2dldGNoYXIoaW50IHBvcnQpOwpleHRlcm4gdm9pZCB1YXJ0X3B1dGNoYXJfcmF3KGludCBwb3J0LCBjaGFyIGMpOwpleHRlcm4gdm9pZCB1YXJ0X3B1dGNoYXIoaW50IHBvcnQsIGNoYXIgYyk7CmV4dGVybiB2b2lkIHVhcnRfcHV0cyhpbnQgcG9ydCwgY29uc3QgY2hhciAqcyk7CmV4dGVybiB2b2lkIHVhcnRfaW5pdF9saW5lKGludCBwb3J0LCBpbnQgYmF1ZCk7CmV4dGVybiB2b2lkIHVhcnRfaW5pdCh2b2lkKTsKCiNlbmRpZiAvKiBfX0FTU0VNQkxFUl9fICovCiNlbmRpZiAvKiBfX1VBUlRfSF9MT0FERUQgKi8K