LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qKioqKioqKioqKioqKioqKioqKioqKioqIEZpbGUgRGVzY3JpcHRpb24gKioqKioqKioqKioqKioqKioqKioqKioqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyogRmlsZSBOYW1lOgkJJFdvcmtmaWxlOiAgIGhteF91cHJhZGVfc3lzdGVtLmggICQKICogVmVyc2lvbjoJCQkkUmV2aXNpb246ICAgMS4wICAkCiAqIE9yaWdpbmFsIEF1dGhvcjogWWFuZyBIeXVuIFVrICQKICogQ3VycmVudCBBdXRob3I6CSRBdXRob3I6IGh1eWFuZ0BodW1heGRpZ2l0YWwuY29tICQKICogRGF0ZToJCQkkRGF0ZTogMjAxMS4wOS4zMAogKiBGaWxlIERlc2NyaXB0aW9uOglVcGdyYWRlIEFQSXMKICogTW9kdWxlOgogKiBSZW1hcmtzOgogKi8KCgovKioKICogQGF1dGhvciBIeXVudWsgWWFuZyhodXlhbmdAaHVtYXhkaWdpdGFsLmNvbSkKICogQGRhdGUgMzAgU2VwdCAyMDExCiAqLwoKLyoqCiAqIEBub3RlCiAqIENvcHlyaWdodCAoQykgMjAxMSBIdW1heCBDb3Jwb3JhdGlvbi4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gPGJyPgogKiBUaGlzIHNvZnR3YXJlIGlzIHRoZSBjb25maWRlbnRpYWwgYW5kIHByb3ByaWV0YXJ5IGluZm9ybWF0aW9uCiAqIG9mIEh1bWF4IENvcnBvcmF0aW9uLiBZb3UgbWF5IG5vdCB1c2Ugb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlCiAqIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIGFueSBhcHBsaWNhYmxlIGxpY2Vuc2UKICogYWdyZWVtZW50IGluIHdyaXRpbmcgYmV0d2VlbiBIdW1heCBDb3Jwb3JhdGlvbiBhbmQgeW91LgogKi8KCiAvKkB7Ki8KCi8qKgogKiBAZmlsZSBobXhfdXBncmFkZV9zeXN0ZW0uaAogKi8KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBIZWFkZXIgRmlsZXMqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIFN0YXJ0IEluY2x1ZGluZyBIZWFkZXIgRmlsZXMgKi8KI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8cHRocmVhZC5oPgojaW5jbHVkZSA8ZXJybm8uaD4KI2luY2x1ZGUgPGFzc2VydC5oPgojaW5jbHVkZSA8c3lzL3F1ZXVlLmg+CiNpbmNsdWRlIDx1bmlzdGQuaD4KI2luY2x1ZGUgPGZjbnRsLmg+Ci8qIEVuZCBJbmNsdWRpbmcgSGVhZGVycyovCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKiBFeHRlcm4gdmFyaWFibGVzICoqKioqKioqKioqKioqKioqKioqKioqKiovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBTdGFydCBFeHRlcm4gdmFyaWFibGVlICovCgovKiBFbmQgRXh0ZXJuIHZhcmlhYmxlICovCgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qKioqKioqKioqKioqKioqKioqKioqKiogTWFjcm8gRGVmaW5pdGlvbiAqKioqKioqKioqKioqKioqKioqKioqKioqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyogU3RhcnQgTWFjcm8gZGVmaW5pdGlvbiAqLwojZGVmaW5lIEhNWF9UQVNLX0NoZWNrQ2FsbGJhY2soKQojZGVmaW5lIEhNWF9PSwkwCiNkZWZpbmUgSE1YX0VSUk9SCTEKI2RlZmluZSBITVhfVElNRU9VVAkJMgojZGVmaW5lIEhNWF9JTlZBTElEX0lECQkzCiNkZWZpbmUgSE1YX0FMTE9DX0VSUk9SCQk0CiNkZWZpbmUgSE1YX05PX01TRwkJCTUKI2RlZmluZSBITVhfQ1JFQVRFX0VSUk9SCQkxMAojZGVmaW5lIEhNWF9ERVNUUk9ZX0VSUk9SCTExCiNkZWZpbmUgSE1YX0xPQ0tfRVJST1IJCTEyCiNkZWZpbmUgSE1YX1VOTE9DS19FUlJPUgkJMTMKI2RlZmluZSBITVhfVElNRV9JTkZJTklURSAgICAxNAojZGVmaW5lIEhNWF9JTlZBTElEX0NMT0NLCTE1CiNkZWZpbmUgSE1YX01TR19GVUxMCQkJMTcKCiNkZWZpbmUgVFJVRSAxCiNkZWZpbmUgRkFMU0UgMAoKCiNkZWZpbmUgSE1YX1RBU0tfUFRIUkVBRF9TVEFDS19NSU4JKDE2KjEwMjQpCiNkZWZpbmUgSE1YX1RBU0tfUFRIUkVBRF9ERUZBVUxUX1BSSU8JU0NIRURfUlIKCiNkZWZpbmUgSE1YX1RBU0tfU1RBQ0tfT1ZFUkhFQURfU0laRSAJCQkweDIwMDAKI2RlZmluZSBITVhfVEFTS19HVUFSRF9TSVpFIAkJCTE2CgovKiBFbmQgTWFjcm8gZGVmaW5pdGlvbiAqLwoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogdHlwZWRlZiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyogU3RhcnQgdHlwZWRlZiAqLwoKLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLy8gVGFzayBQcmlvcml0eSBTZXQKLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLyoKICAgIMHWwMe758fXCiAgICBQcmlvcml0ebimIMH1sKEgvcPFsrTZuOkgVktfTVNHX1BSSU9SSVRZwMcgsKq1tSCwsMDMIMH1sKEgvcPE0b7fIMfRtNkuCiAgICBWS19NU0dfUFJJT1JJVFnAxyCwqsC6IMfXu/MgcHJpb3JpdHnAxyCwqiC6uLTZIDEguLm+xr7fILHXt6G+3yBVcmdlbnQgbXNnuKYgw7O4riDH0bTZLgoqLwovKiBCYXNpYyBQcmlvcml0eSBTZXQgKi8KI2RlZmluZQlCQVNFX1BSSU9SSVRZCQkJNjAKI2RlZmluZQlISUdIRVNUX1BSSU9SSVRZCQkxMDgKCiNkZWZpbmUJUFJJT1JJVFlfSU5DUkVNRU5UCTEKCi8vdGVtcCA6OiBOZXZlciB1c2UKI2RlZmluZQlVU0VSX1BSSU9SSVRZMAkJCUJBU0VfUFJJT1JJVFkJCQkJCQkJLy8gNjAKI2RlZmluZQlVU0VSX1BSSU9SSVRZMQkJCShCQVNFX1BSSU9SSVRZICsgUFJJT1JJVFlfSU5DUkVNRU5UKjEpCiNkZWZpbmUJVVNFUl9QUklPUklUWTIJCQkoQkFTRV9QUklPUklUWSArIFBSSU9SSVRZX0lOQ1JFTUVOVCoyKQojZGVmaW5lCVVTRVJfUFJJT1JJVFkzCQkJKEJBU0VfUFJJT1JJVFkgKyBQUklPUklUWV9JTkNSRU1FTlQqMykKI2RlZmluZQlVU0VSX1BSSU9SSVRZNAkJCShCQVNFX1BSSU9SSVRZICsgUFJJT1JJVFlfSU5DUkVNRU5UKjQpCgovL8DPtNwgZGVmYXVsdCBwcmlvcml0ebfOIDa5+CC757/rCTUwwLsgseLB2MC4t84gOMDMIMD7tOfH0iC17S4KI2RlZmluZQlVU0VSX1BSSU9SSVRZNQkJCShCQVNFX1BSSU9SSVRZICsgUFJJT1JJVFlfSU5DUkVNRU5UKjUpCiNkZWZpbmUJVVNFUl9QUklPUklUWTYJCQkoQkFTRV9QUklPUklUWSArIFBSSU9SSVRZX0lOQ1JFTUVOVCo2KQojZGVmaW5lCVVTRVJfUFJJT1JJVFk3CQkJKEJBU0VfUFJJT1JJVFkgKyBQUklPUklUWV9JTkNSRU1FTlQqNykKI2RlZmluZQlVU0VSX1BSSU9SSVRZOAkJCShCQVNFX1BSSU9SSVRZICsgUFJJT1JJVFlfSU5DUkVNRU5UKjgpCiNkZWZpbmUJVVNFUl9QUklPUklUWTkJCQkoQkFTRV9QUklPUklUWSArIFBSSU9SSVRZX0lOQ1JFTUVOVCo5KQoKI2RlZmluZQlVU0VSX1BSSU9SSVRZMTAJCQkoQkFTRV9QUklPUklUWSArIFBSSU9SSVRZX0lOQ1JFTUVOVCoxMCkJLy8gODAKI2RlZmluZQlVU0VSX1BSSU9SSVRZMTEJCQkoQkFTRV9QUklPUklUWSArIFBSSU9SSVRZX0lOQ1JFTUVOVCoxMSkKI2RlZmluZQlVU0VSX1BSSU9SSVRZMTIJCQkoQkFTRV9QUklPUklUWSArIFBSSU9SSVRZX0lOQ1JFTUVOVCoxMikKCi8vdGVtcCA6OiBmb3IgdGhlIGhpZ2hlc3QgREQKI2RlZmluZQlVU0VSX1BSSU9SSVRZMTMJCQkoQkFTRV9QUklPUklUWSArIFBSSU9SSVRZX0lOQ1JFTUVOVCoxMykKI2RlZmluZQlVU0VSX1BSSU9SSVRZMTQJCQkoQkFTRV9QUklPUklUWSArIFBSSU9SSVRZX0lOQ1JFTUVOVCoxNCkKCi8vVVNFUl9QUklPUklUWTE1tMIgu+e/68fPwfYguLsgsM0uLi4uLiAvLzIwMDcxMDExIFRlc3RCeVBvb2gKLy9Pbmx5IHRhc2sgcHJpb3JpdHkgYWRqdXN0CiNkZWZpbmUJVVNFUl9QUklPUklUWTE1CQkJSElHSEVTVF9QUklPUklUWQoKCgovL01TR19QUklPUklUWcDHILCqwLogVGFzayBQcmlvcml0ecDHILC5vPa6uLTZIDGwsyC4ub7Gvt8gx9G02S4KdHlwZWRlZiBlbnVtCnsKICAgIE1TR19QUklPUklUWTAsCiAgICBNU0dfUFJJT1JJVFkxLAogICAgTVNHX1BSSU9SSVRZMiwKICAgIE1TR19QUklPUklUWTMsCiAgICBNU0dfUFJJT1JJVFk0LAogICAgTVNHX1BSSU9SSVRZNSwKICAgIE1TR19QUklPUklUWTYsCiAgICBNU0dfUFJJT1JJVFk3LAogICAgTVNHX1BSSU9SSVRZOCwKICAgIE1TR19QUklPUklUWTksCiAgICBNU0dfUFJJT1JJVFkxMCwKICAgIE1TR19QUklPUklUWTExLAogICAgTVNHX1BSSU9SSVRZMTIsCiAgICBNU0dfUFJJT1JJVFkxMywKICAgIE1TR19QUklPUklUWTE0LAogICAgTVNHX1BSSU9SSVRZMTUsCiAgICBNU0dfUFJJT1JJVFkxNiwKICAgIE1TR19QUklPUklUWV9NQVggICAvL8PWu/PAp8DHIFBSSU9SSVRZtMIgVXJnZW50t84gu+e/68fULi4KfUhNWF9NU0dfUFJJT1JJVFk7Cgp0eXBlZGVmIGVudW0KewoJSE1YX1NVU1BFTkRUWVBFX0ZJRk8sCglITVhfU1VTUEVORFRZUEVfUFJJT1JJVFksCglITVhfU1VTUEVORFRZUEVfTUFYCn1ITVhfU1VTUEVORFRZUEU7CgoKLyogRW5kIHR5cGVkZWYgKi8KCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoqKioqKioqKioqKioqKioqKioqIGdsb2JhbCBmdW5jdGlvbiBwcm90b3R5cGUgKioqKioqKioqKioqKioqKioqKiovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBTdGFydCBnbG9iYWwgZnVuY3Rpb24gcHJvdG90eXBlcyAqLwoKLyogRW5kIGdsb2JhbCBmdW5jdGlvbiBwcm90b3R5cGVzICovCgoKc3RydWN0IEhNWF9UQVNLX2FyZyB7CglwdGhyZWFkX211dGV4X3QJbG9ja187CglwdGhyZWFkX2NvbmRfdAljb25kXzsKCXVuc2lnbmVkIGxvbmcJCXByaW9yaXR5XzsKCXVuc2lnbmVkIGxvbmcJCXN0YWNrU2l6ZV87CglpbnQJCQkJCUlzSm9pbmFibGU7CglpbnQgCQkJCXN0YXJ0OwoJdW5zaWduZWQgbG9uZwkJKnB1Y1Rhc2tTdGFjazsKCXVuc2lnbmVkIGxvbmcJCSpwdWxTdGFja1N0YXJ0QWRkcmVzczsKCXZvaWQgKCpzdGFydF9mdW5jXykodm9pZCAqKTsKCXZvaWQgKmFyZ187CiNpZiBkZWZpbmVkKENPTkZJR19ERUJVRykKCXBpZF90IHBpZDsKCXBpZF90IHRpZDsKI2VuZGlmCgojaWYgZGVmaW5lZChDT05GSUdfREVCVUcpCglpbnQgdGhyZWFkX2lkOwojZW5kaWYKCWNoYXIgbmFtZVszMl07Cn07CgpzdHJ1Y3QgSE1YX1RBU0sgewoJcHRocmVhZF90IHRhc2tfOwoJc3RydWN0IEhNWF9UQVNLX2FyZyB0YXJnXzsKfTsKCnN0cnVjdCAgSE1YX01TR19lbGVtZW50CnsKICAgIHZvaWQgICAgICAgICAgICAgKmRhdGE7CiAgICBzdHJ1Y3QgSE1YX01TR19lbGVtZW50ICAqbmV4dDsKICAgIHN0cnVjdCBITVhfTVNHX2VsZW1lbnQgICpwcmV2Owp9OwoKc3RydWN0IEhNWF9NU0dfcXVldWUKewoKICAgIHB0aHJlYWRfbXV0ZXhfdCAgICAgcV9sb2NrXzsKICAgIHB0aHJlYWRfY29uZF90ICAgICAgcV9ub3RfZW1wdHlfOwogICAgcHRocmVhZF9jb25kX3QgICAgICBxX25vdF9mdWxsXzsKICAgIHVuc2lnbmVkIGxvbmcgICAgICAgY3Vycl9tc2dfY291bnRfOwogICAgdW5zaWduZWQgbG9uZyAgICAgICBtc2dfc2l6ZV87CiAgICB1bnNpZ25lZCBsb25nICAgICAgIG1zZ19jb3VudF87CiAgICB1bnNpZ25lZCBsb25nICAgICAgIGJpdG1hcF9jb3VudFtNU0dfUFJJT1JJVFlfTUFYXTsKICAgIHVuc2lnbmVkIGNoYXIgICAgICAgYml0bWFwW01TR19QUklPUklUWV9NQVhdOwogICAgdW5zaWduZWQgY2hhciAgICAgICBzdXNwZW5kX3R5cGVfOwoJdm9pZAkJCQkqcFBvb2w7Cgl2b2lkCQkJCSpwRGF0YVBvb2w7CgogICAgaW50IHdyaXRlcl9jb3VudF87CiAgICBpbnQgcmVhZGVyX2NvdW50XzsKCiAgICBzdHJ1Y3QgSE1YX01TR19lbGVtZW50ICAgICAgICAgICAqdGVtcF9oZWFkOwogICAgc3RydWN0IEhNWF9NU0dfZWxlbWVudCAgICAgICAgICAgKnRlbXBfdGFpbDsKICAgIHN0cnVjdCAgSE1YX01TR19lbGVtZW50ICAgICAgICAgICpoZWFkW01TR19QUklPUklUWV9NQVhdOwogICAgc3RydWN0ICBITVhfTVNHX2VsZW1lbnQgICAgICAgICAgKnRhaWxbTVNHX1BSSU9SSVRZX01BWF07CgojaWYgZGVmaW5lZChDT05GSUdfREVCVUcpCiAgICB1bnNpZ25lZCBsb25nIHNlbmRUaWNrOwogICAgdW5zaWduZWQgbG9uZyByZWNlaXZlVGljazsKICAgIHVuc2lnbmVkIGxvbmcgbGFzdFNlbmRUaWNrOwogICAgdW5zaWduZWQgbG9uZyBsYXN0UmVjZWl2ZVRpY2s7CiAgICBjaGFyIG5hbWVbMzJdOwogICAgVEFJTFFfRU5UUlkoSE1YX01TR19xdWV1ZSkgZW50cmllczsKI2VuZGlmCn07CgojaWYgZGVmaW5lZChWS19NU0dfREVCVUcpClRBSUxRX0hFQUQobGlzdGhlYWQsIEhNWF9NU0dfcXVldWUpIG1zZ19xX2xpc3RfaGVhZDsKI2VuZGlmCgojaWYgZGVmaW5lZChDT05GSUdfREVCVUcpCnVuc2lnbmVkIGxvbmcJdGlja0ZvclZrRGVidWc7CiNlbmRpZgoKLypAfSovCg==