Ci8qIENvcHlyaWdodCAoQykgMjAwOS0yMDE2IGJ5IERhbmllbCBTdGVuYmVyZwogKgogKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzCiAqIHNvZnR3YXJlIGFuZCBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgYW5kIHdpdGhvdXQKICogZmVlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQKICogbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzIGFuZCB0aGF0IGJvdGggdGhhdCBjb3B5cmlnaHQKICogbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBzdXBwb3J0aW5nCiAqIGRvY3VtZW50YXRpb24sIGFuZCB0aGF0IHRoZSBuYW1lIG9mIE0uSS5ULiBub3QgYmUgdXNlZCBpbgogKiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlCiAqIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMsIHdyaXR0ZW4gcHJpb3IgcGVybWlzc2lvbi4KICogTS5JLlQuIG1ha2VzIG5vIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YKICogdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiCiAqIHdpdGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkIHdhcnJhbnR5LgogKi8KCiNpbmNsdWRlIDx3aW52ZXIuaD4KI2luY2x1ZGUgImFyZXNfdmVyc2lvbi5oIgoKTEFOR1VBR0UgIDB4MDksMHgwMQoKI2RlZmluZSBSQ19WRVJTSU9OICBBUkVTX1ZFUlNJT05fTUFKT1IsIEFSRVNfVkVSU0lPTl9NSU5PUiwgQVJFU19WRVJTSU9OX1BBVENILCAwCgpWU19WRVJTSU9OX0lORk8gVkVSU0lPTklORk8KICBGSUxFVkVSU0lPTiAgICAgUkNfVkVSU0lPTgogIFBST0RVQ1RWRVJTSU9OICBSQ19WRVJTSU9OCiAgRklMRUZMQUdTTUFTSyAgIDB4M2ZMCiNpZiBkZWZpbmVkKERFQlVHQlVJTEQpIHx8IGRlZmluZWQoX0RFQlVHKQogIEZJTEVGTEFHUyAxCiNlbHNlCiAgRklMRUZMQUdTIDAKI2VuZGlmCiAgRklMRU9TICAgICAgVk9TX19XSU5ET1dTMzIKICBGSUxFVFlQRSAgICBWRlRfRExMCiAgRklMRVNVQlRZUEUgMHgwTAoKQkVHSU4KICBCTE9DSyAiU3RyaW5nRmlsZUluZm8iCiAgQkVHSU4KICAgIEJMT0NLICIwNDA5MDRiMCIKICAgIEJFR0lOCiAgICAgIFZBTFVFICJDb21wYW55TmFtZSIsICAgICAgIlRoZSBjLWFyZXMgbGlicmFyeSwgaHR0cHM6Ly9jLWFyZXMuaGF4eC5zZS9cMCIKI2lmIGRlZmluZWQoREVCVUdCVUlMRCkgfHwgZGVmaW5lZChfREVCVUcpCiAgICAgIFZBTFVFICJGaWxlRGVzY3JpcHRpb24iLCAgImMtYXJlcyBEZWJ1ZyBTaGFyZWQgTGlicmFyeVwwIgogICAgICBWQUxVRSAiRmlsZVZlcnNpb24iLCAgICAgIEFSRVNfVkVSU0lPTl9TVFIgIlwwIgogICAgICBWQUxVRSAiSW50ZXJuYWxOYW1lIiwgICAgICJjLWFyZXNcMCIKICAgICAgVkFMVUUgIk9yaWdpbmFsRmlsZW5hbWUiLCAiY2FyZXNkLmRsbFwwIgojZWxzZQogICAgICBWQUxVRSAiRmlsZURlc2NyaXB0aW9uIiwgICJjLWFyZXMgU2hhcmVkIExpYnJhcnlcMCIKICAgICAgVkFMVUUgIkZpbGVWZXJzaW9uIiwgICAgICBBUkVTX1ZFUlNJT05fU1RSICJcMCIKICAgICAgVkFMVUUgIkludGVybmFsTmFtZSIsICAgICAiYy1hcmVzXDAiCiAgICAgIFZBTFVFICJPcmlnaW5hbEZpbGVuYW1lIiwgImNhcmVzLmRsbFwwIgojZW5kaWYKICAgICAgVkFMVUUgIlByb2R1Y3ROYW1lIiwgICAgICAiVGhlIGMtYXJlcyBsaWJyYXJ5XDAiCiAgICAgIFZBTFVFICJQcm9kdWN0VmVyc2lvbiIsICAgQVJFU19WRVJTSU9OX1NUUiAiXDAiCiAgICAgIFZBTFVFICJMZWdhbENvcHlyaWdodCIsICAgIqkgIiBBUkVTX0NPUFlSSUdIVCAiXDAiCiAgICAgIFZBTFVFICJMaWNlbnNlIiwgICAgICAgICAgImh0dHBzOi8vYy1hcmVzLmhheHguc2UvbGljZW5zZS5odG1sXDAiCiAgICBFTkQKICBFTkQKCiAgQkxPQ0sgIlZhckZpbGVJbmZvIgogIEJFR0lOCiAgICBWQUxVRSAiVHJhbnNsYXRpb24iLCAweDQwOSwgMTIwMAogIEVORApFTkQK