IyA8cHJlPgojIEAoIylzb3V0aGFtZXJpY2EJOC4zNgojIFRoaXMgZmlsZSBpcyBpbiB0aGUgcHVibGljIGRvbWFpbiwgc28gY2xhcmlmaWVkIGFzIG9mCiMgMjAwOS0wNS0xNyBieSBBcnRodXIgRGF2aWQgT2xzb24uCgojIFRoaXMgZGF0YSBpcyBieSBubyBtZWFucyBhdXRob3JpdGF0aXZlOyBpZiB5b3UgdGhpbmsgeW91IGtub3cgYmV0dGVyLAojIGdvIGFoZWFkIGFuZCBlZGl0IHRoZSBmaWxlIChhbmQgcGxlYXNlIHNlbmQgYW55IGNoYW5nZXMgdG8KIyB0ekBlbHNpZS5uY2kubmloLmdvdiBmb3IgZ2VuZXJhbCB1c2UgaW4gdGhlIGZ1dHVyZSkuCgojIEZyb20gUGF1bCBFZ2dlcnQgKDIwMDYtMDMtMjIpOgojIEEgZ29vZCBzb3VyY2UgZm9yIHRpbWUgem9uZSBoaXN0b3JpY2FsIGRhdGEgb3V0c2lkZSB0aGUgVS5TLiBpcwojIFRob21hcyBHLiBTaGFua3MgYW5kIFJpcXVlIFBvdHRlbmdlciwgVGhlIEludGVybmF0aW9uYWwgQXRsYXMgKDZ0aCBlZGl0aW9uKSwKIyBTYW4gRGllZ286IEFDUyBQdWJsaWNhdGlvbnMsIEluYy4gKDIwMDMpLgojCiMgR3dpbGxpbSBMYXcgd3JpdGVzIHRoYXQgYSBnb29kIHNvdXJjZQojIGZvciByZWNlbnQgdGltZSB6b25lIGRhdGEgaXMgdGhlIEludGVybmF0aW9uYWwgQWlyIFRyYW5zcG9ydAojIEFzc29jaWF0aW9uJ3MgU3RhbmRhcmQgU2NoZWR1bGVzIEluZm9ybWF0aW9uIE1hbnVhbCAoSUFUQSBTU0lNKSwKIyBwdWJsaXNoZWQgc2VtaWFubnVhbGx5LiAgTGF3IHNlbnQgaW4gc2V2ZXJhbCBoZWxwZnVsIHN1bW1hcmllcwojIG9mIHRoZSBJQVRBJ3MgZGF0YSBhZnRlciAxOTkwLgojCiMgRXhjZXB0IHdoZXJlIG90aGVyd2lzZSBub3RlZCwgU2hhbmtzICYgUG90dGVuZ2VyIGlzIHRoZSBzb3VyY2UgZm9yCiMgZW50cmllcyB0aHJvdWdoIDE5OTAsIGFuZCBJQVRBIFNTSU0gaXMgdGhlIHNvdXJjZSBmb3IgZW50cmllcyBhZnRlcndhcmRzLgojCiMgRWFybGllciBlZGl0aW9ucyBvZiB0aGVzZSB0YWJsZXMgdXNlZCB0aGUgTm9ydGggQW1lcmljYW4gc3R5bGUgKGUuZy4gQVJTVCBhbmQKIyBBUkRUIGZvciBBcmdlbnRpbmUgU3RhbmRhcmQgYW5kIERheWxpZ2h0IFRpbWUpLCBidXQgdGhlIGZvbGxvd2luZyBxdW90ZQojIHN1Z2dlc3RzIHRoYXQgaXQncyBiZXR0ZXIgdG8gdXNlIEV1cm9wZWFuIHN0eWxlIChlLmcuIEFSVCBhbmQgQVJTVCkuCiMJSSBzdWdnZXN0IHRoZSB1c2Ugb2YgX1N1bW1lciB0aW1lXyBpbnN0ZWFkIG9mIHRoZSBtb3JlIGN1bWJlcnNvbWUKIwlfZGF5bGlnaHQtc2F2aW5nIHRpbWVfLiAgX1N1bW1lciB0aW1lXyBzZWVtcyB0byBiZSBpbiBnZW5lcmFsIHVzZQojCWluIEV1cm9wZSBhbmQgU291dGggQW1lcmljYS4KIwktLSBFIE8gQ3V0bGVyLCBfTmV3IFlvcmsgVGltZXNfICgxOTM3LTAyLTE0KSwgcXVvdGVkIGluCiMJSCBMIE1lbmNrZW4sIF9UaGUgQW1lcmljYW4gTGFuZ3VhZ2U6IFN1cHBsZW1lbnQgSV8gKDE5NjApLCBwIDQ2NgojCiMgRWFybGllciBlZGl0aW9ucyBvZiB0aGVzZSB0YWJsZXMgYWxzbyB1c2VkIHRoZSBOb3J0aCBBbWVyaWNhbiBzdHlsZQojIGZvciB0aW1lIHpvbmVzIGluIEJyYXppbCwgYnV0IHRoaXMgd2FzIGluY29ycmVjdCwgYXMgQnJhemlsaWFucyBzYXkKIyAic3VtbWVyIHRpbWUiLiAgUmVpbmFsZG8gR291bGFydCwgYSBTYW8gUGF1bG8gYnVzaW5lc3NtYW4gYWN0aXZlIGluCiMgdGhlIHJhaWxyb2FkIHNlY3Rvciwgd3JpdGVzICgxOTk5LTA3LTA2KToKIwlUaGUgc3ViamVjdCBvZiB0aW1lIHpvbmVzIGlzIGN1cnJlbnRseSBhIG1hdHRlciBvZiBkaXNjdXNzaW9uL2RlYmF0ZSBpbgojCUJyYXppbC4gIExldCdzIHNheSB0aGF0ICJ0aGUgQnJhc2lsaWEgdGltZSIgaXMgY29uc2lkZXJlZCB0aGUKIwkib2ZmaWNpYWwgdGltZSIgYmVjYXVzZSBCcmFzaWxpYSBpcyB0aGUgY2FwaXRhbCBjaXR5LgojCVRoZSBvdGhlciB0aHJlZSB0aW1lIHpvbmVzIGFyZSBjYWxsZWQgIkJyYXNpbGlhIHRpbWUgIm1pbnVzIG9uZSIgb3IKIwkicGx1cyBvbmUiIG9yICJwbHVzIHR3byIuICBBcyBmYXIgYXMgSSBrbm93IHRoZXJlIGlzIG5vIHN1Y2gKIwluYW1lL2Rlc2lnbmF0aW9uIGFzICJFYXN0ZXJuIFRpbWUiIG9yICJDZW50cmFsIFRpbWUiLgojIFNvIEkgaW52ZW50ZWQgdGhlIGZvbGxvd2luZyAoRW5nbGlzaC1sYW5ndWFnZSkgYWJicmV2aWF0aW9ucyBmb3Igbm93LgojIENvcnJlY3Rpb25zIGFyZSB3ZWxjb21lIQojCQlzdGQJZHN0CiMJLTI6MDAJRk5UCUZOU1QJRmVybmFuZG8gZGUgTm9yb25oYQojCS0zOjAwCUJSVAlCUlNUCUJyYXNpbGlhCiMJLTQ6MDAJQU1UCUFNU1QJQW1hem9uCiMJLTU6MDAJQUNUCUFDU1QJQWNyZQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBBcmdlbnRpbmEKCiMgRnJvbSBCb2IgRGV2aW5lICgxOTg4LTAxLTI4KToKIyBBcmdlbnRpbmE6IGZpcnN0IFN1bmRheSBpbiBPY3RvYmVyIHRvIGZpcnN0IFN1bmRheSBpbiBBcHJpbCBzaW5jZSAxOTc2LgojIERvdWJsZSBTdW1tZXIgdGltZSBmcm9tIDE5NjkgdG8gMTk3NC4gIFN3aXRjaGVzIGF0IG1pZG5pZ2h0LgoKIyBGcm9tIFUuIFMuIE5hdmFsIE9ic2VydmF0b3J5ICgxOTg4LTAxLTE5OSk6CiMgQVJHRU5USU5BICAgICAgICAgICAzIEggQkVISU5EICAgVVRDCgojIEZyb20gSGVybmFuIEcuIE90ZXJvICgxOTk1LTA2LTI2KToKIyBJIGFtIHNlbmRpbmcgbW9kaWZpY2F0aW9ucyB0byB0aGUgQXJnZW50aW5lIHRpbWUgem9uZSB0YWJsZS4uLgojIEFSIHdhcyBjaG9zZW4gYmVjYXVzZSB0aGV5IGFyZSB0aGUgSVNPIGxldHRlcnMgdGhhdCByZXByZXNlbnQgQXJnZW50aW5hLgoKIyBSdWxlCU5BTUUJRlJPTQlUTwlUWVBFCUlOCU9OCUFUCVNBVkUJTEVUVEVSL1MKUnVsZQlBcmcJMTkzMAlvbmx5CS0JRGVjCSAxCTA6MDAJMTowMAlTClJ1bGUJQXJnCTE5MzEJb25seQktCUFwcgkgMQkwOjAwCTAJLQpSdWxlCUFyZwkxOTMxCW9ubHkJLQlPY3QJMTUJMDowMAkxOjAwCVMKUnVsZQlBcmcJMTkzMgkxOTQwCS0JTWFyCSAxCTA6MDAJMAktClJ1bGUJQXJnCTE5MzIJMTkzOQktCU5vdgkgMQkwOjAwCTE6MDAJUwpSdWxlCUFyZwkxOTQwCW9ubHkJLQlKdWwJIDEJMDowMAkxOjAwCVMKUnVsZQlBcmcJMTk0MQlvbmx5CS0JSnVuCTE1CTA6MDAJMAktClJ1bGUJQXJnCTE5NDEJb25seQktCU9jdAkxNQkwOjAwCTE6MDAJUwpSdWxlCUFyZwkxOTQzCW9ubHkJLQlBdWcJIDEJMDowMAkwCS0KUnVsZQlBcmcJMTk0Mwlvbmx5CS0JT2N0CTE1CTA6MDAJMTowMAlTClJ1bGUJQXJnCTE5NDYJb25seQktCU1hcgkgMQkwOjAwCTAJLQpSdWxlCUFyZwkxOTQ2CW9ubHkJLQlPY3QJIDEJMDowMAkxOjAwCVMKUnVsZQlBcmcJMTk2Mwlvbmx5CS0JT2N0CSAxCTA6MDAJMAktClJ1bGUJQXJnCTE5NjMJb25seQktCURlYwkxNQkwOjAwCTE6MDAJUwpSdWxlCUFyZwkxOTY0CTE5NjYJLQlNYXIJIDEJMDowMAkwCS0KUnVsZQlBcmcJMTk2NAkxOTY2CS0JT2N0CTE1CTA6MDAJMTowMAlTClJ1bGUJQXJnCTE5NjcJb25seQktCUFwcgkgMgkwOjAwCTAJLQpSdWxlCUFyZwkxOTY3CTE5NjgJLQlPY3QJU3VuPj0xCTA6MDAJMTowMAlTClJ1bGUJQXJnCTE5NjgJMTk2OQktCUFwcglTdW4+PTEJMDowMAkwCS0KUnVsZQlBcmcJMTk3NAlvbmx5CS0JSmFuCTIzCTA6MDAJMTowMAlTClJ1bGUJQXJnCTE5NzQJb25seQktCU1heQkgMQkwOjAwCTAJLQpSdWxlCUFyZwkxOTg4CW9ubHkJLQlEZWMJIDEJMDowMAkxOjAwCVMKIwojIEZyb20gSGVybmFuIEcuIE90ZXJvICgxOTk1LTA2LTI2KToKIyBUaGVzZSBjb3JyZWN0aW9ucyB3ZXJlIGNvbnRyaWJ1dGVkIGJ5IEludGVyU29mdCBBcmdlbnRpbmEgUy5BLiwKIyBvYnRhaW5pbmcgdGhlIGRhdGEgZnJvbSB0aGU6CiMgVGFsbGVyZXMgZGUgSGlkcm9ncmFmaWEgTmF2YWwgQXJnZW50aW5hCiMgKEFyZ2VudGluZSBOYXZhbCBIeWRyb2dyYXBoeSBJbnN0aXR1dGUpClJ1bGUJQXJnCTE5ODkJMTk5MwktCU1hcglTdW4+PTEJMDowMAkwCS0KUnVsZQlBcmcJMTk4OQkxOTkyCS0JT2N0CVN1bj49MTUJMDowMAkxOjAwCVMKIwojIEZyb20gSGVybmFuIEcuIE90ZXJvICgxOTk1LTA2LTI2KToKIyBGcm9tIHRoaXMgbW9tZW50IG9uLCB0aGUgbGF3IHRoYXQgbWFuZGF0ZWQgdGhlIGRheWxpZ2h0IHNhdmluZwojIHRpbWUgY29ycmVjdGlvbnMgd2FzIGRlcm9nYXRlZCBhbmQgbm8gbW9yZSBtb2RpZmljYXRpb25zCiMgdG8gdGhlIHRpbWUgem9uZXMgKGZvciBkYXlsaWdodCBzYXZpbmcpIGFyZSBub3cgbWFkZS4KIwojIEZyb20gUml2ZXMgTWNEb3cgKDIwMDAtMDEtMTApOgojIE9uIE9jdG9iZXIgMywgMTk5OSwgMDowMCBsb2NhbCwgQXJnZW50aW5hIGltcGxlbWVudGVkIGRheWxpZ2h0IHNhdmluZ3MgdGltZSwKIyB3aGljaCBkaWQgbm90IHJlc3VsdCBpbiB0aGUgc3dpdGNoIG9mIGEgdGltZSB6b25lLCBhcyB0aGV5IHN0YXllZCA5IGhvdXJzCiMgZnJvbSB0aGUgSW50ZXJuYXRpb25hbCBEYXRlIExpbmUuClJ1bGUJQXJnCTE5OTkJb25seQktCU9jdAlTdW4+PTEJMDowMAkxOjAwCVMKIyBGcm9tIFBhdWwgRWdnZXJ0ICgyMDA3LTEyLTI4KToKIyBEU1Qgd2FzIHNldCB0byBleHBpcmUgb24gTWFyY2ggNSwgbm90IE1hcmNoIDMsIGJ1dCBzaW5jZSBpdCB3YXMgY29udmVydGVkCiMgdG8gc3RhbmRhcmQgdGltZSBvbiBNYXJjaCAzIGl0J3MgbW9yZSBjb252ZW5pZW50IGZvciB1cyB0byBwcmV0ZW5kIHRoYXQKIyBpdCBlbmRlZCBvbiBNYXJjaCAzLgpSdWxlCUFyZwkyMDAwCW9ubHkJLQlNYXIJMwkwOjAwCTAJLQojCiMgRnJvbSBQZXRlciBHcmFkZWxza2kgdmlhIFN0ZWZmZW4gVGhvcnNlbiAoMjAwMC0wMy0wMSk6CiMgV2UganVzdCBjaGVja2VkIHdpdGggb3VyIFNhbyBQYXVsbyBvZmZpY2UgYW5kIHRoZXkgc2F5IHRoZSBnb3Zlcm5tZW50IG9mCiMgQXJnZW50aW5hIGRlY2lkZWQgbm90IHRvIGJlY29tZSBvbmUgb2YgdGhlIGNvdW50cmllcyB0aGF0IGdvIG9uIG9yIG9mZiBEU1QuCiMgU28gQnVlbm9zIEFpcmVzIHNob3VsZCBiZSAtMyBob3VycyBmcm9tIEdNVCBhdCBhbGwgdGltZXMuCiMKIyBGcm9tIEZhYmlhbiBMLiBBcmNlIEpvZnJlICgyMDAwLTA0LTA0KToKIyBUaGUgbGF3IHRoYXQgY2xhaW1lZCBEU1QgZm9yIEFyZ2VudGluYSB3YXMgZGVyb2dhdGVkIGJ5IFByZXNpZGVudCBGZXJuYW5kbwojIGRlIGxhIFJ1YSBvbiBNYXJjaCAyLCAyMDAwLCBiZWNhdXNlIGl0IHdvdWxkIG1ha2UgcGVvcGxlIHNwZW5kIG1vcmUgZW5lcmd5CiMgaW4gdGhlIHdpbnRlciB0aW1lLCByYXRoZXIgdGhhbiBsZXNzLiAgVGhlIGNoYW5nZSB0b29rIGVmZmVjdCBvbiBNYXJjaCAzLgojCiMgRnJvbSBNYXJpYW5vIEFic2F0eiAoMjAwMS0wNi0wNik6CiMgb25lIG9mIHRoZSBtYWpvciBuZXdzcGFwZXJzIGhlcmUgaW4gQXJnZW50aW5hIHNhaWQgdGhhdCB0aGUgMTk5OQojIFRpbWV6b25lIExhdyAod2hpY2ggbmV2ZXIgd2FzIGVmZmVjdGl2ZWx5IGFwcGxpZWQpIHdpbGwgKHdvdWxkPykgYmUKIyBpbiBlZmZlY3QuLi4uIFRoZSBhcnRpY2xlIGlzIGF0CiMgaHR0cDovL2FyLmNsYXJpbi5jb20vZGlhcmlvLzIwMDEtMDYtMDYvZS0wMTcwMS5odG0KIyAuLi4gVGhlIExhdyBpdHNlbGYgaXMgIkxleSBObyAyNTE1NSIsIHNhbmN0aW9uZWQgb24gMTk5OS0wOC0yNSwgZW5hY3RlZAojIDE5OTktMDktMTcsIGFuZCBwdWJsaXNoZWQgMTk5OS0wOS0yMS4gIFRoZSBvZmZpY2lhbCBwdWJsaWNhdGlvbiBpcyBhdDoKIyBodHRwOi8vd3d3LmJvbGV0aW4uanVzLmdvdi5hci9CT04vUHJpbWVyYS8xOTk5LzA5LVNlcHRpZW1icmUvMjEvUERGL0JPMjEtMDktOTlMRUcuUERGCiMgUmVncmV0ZnVsbHksIHlvdSBoYXZlIHRvIHN1YnNjcmliZSAoYW5kIHBheSkgZm9yIHRoZSBvbi1saW5lIHZlcnNpb24uLi4uCiMKIyAoMjAwMS0wNi0xMik6CiMgdGhlIHRpbWV6b25lIGZvciBBcmdlbnRpbmEgd2lsbCBub3QgY2hhbmdlIG5leHQgU3VuZGF5LgojIEFwcGFyZW50bHkgaXQgd2lsbCBkbyBzbyBvbiBTdW5kYXkgMjR0aC4uLi4KIyBodHRwOi8vYXIuY2xhcmluLmNvbS9kaWFyaW8vMjAwMS0wNi0xMi9zLTAzNTAxLmh0bQojCiMgKDIwMDEtMDYtMjUpOgojIExhc3QgRnJpZGF5ICh5ZXMsIHRoZSBsYXN0IHdvcmtpbmcgZGF5IGJlZm9yZSB0aGUgZGF0ZSBvZiB0aGUgY2hhbmdlKSwgdGhlCiMgU2VuYXRlIGFubnVsbGVkIHRoZSAxOTk5IGxhdyB0aGF0IGludHJvZHVjZWQgdGhlIGNoYW5nZXMgbGF0ZXIgcG9zdHBvbmVkLgojIGh0dHA6Ly93d3cuY2xhcmluLmNvbS5hci9kaWFyaW8vMjAwMS0wNi0yMi9zLTAzNjAxLmh0bQojIEl0IHJlbWFpbnMgdGhlIHZvdGUgb2YgdGhlIERlcHV0aWVzLi4uLCBidXQgaXQgd2lsbCBiZSB0aGUgc2FtZS4uLi4KIyBUaGlzIGtpbmQgb2YgdGhpbmdzIGhhZCBhbHdheXMgYmVlbiBkb25lIHRoaXMgd2F5IGluIEFyZ2VudGluYS4KIyBXZSBhcmUgc3RpbGwgLTAzOjAwIGFsbCB5ZWFyIHJvdW5kIGluIGFsbCBvZiB0aGUgY291bnRyeS4KIwojIEZyb20gU3RlZmZlbiBUaG9yc2VuICgyMDA3LTEyLTIxKToKIyBBIHVzZXIgKExlb25hcmRvIENoYWltKSByZXBvcnRlZCB0aGF0IEFyZ2VudGluYSB3aWxsIGFkb3B0IERTVC4uLi4KIyBhbGwgb2YgdGhlIGNvdW50cnkgKGFsbCBab25lLWVudHJpZXMpIGFyZSBhZmZlY3RlZC4gIE5ld3MgcmVwb3J0cyBsaWtlCiMgaHR0cDovL3d3dy5sYW5hY2lvbi5jb20uYXIvb3Bpbmlvbi9ub3RhLmFzcD9ub3RhX2lkPTk3MzAzNyBpbmRpY2F0ZQojIHRoYXQgQXJnZW50aW5hIHdpbGwgdXNlIERTVCBuZXh0IHllYXIgYXMgd2VsbCwgZnJvbSBPY3RvYmVyIHRvCiMgTWFyY2gsIGFsdGhvdWdoIGV4YWN0IHJ1bGVzIGFyZSBub3QgZ2l2ZW4uCiMKIyBGcm9tIEplc3BlciBOb3JnYWFyZCBXZWxlbiAoMjAwNy0xMi0yNikKIyBUaGUgbGFzdCBodXJkbGUgb2YgQXJnZW50aW5hIERTVCBpcyBvdmVyLCB0aGUgcHJvcG9zYWwgd2FzIGFwcHJvdmVkIGluCiMgdGhlIGxvd2VyIGNoYW1iZXIgdG9vIChEZXB1dGFkb3MpIHdpdGggYSB2b3RlIDE5MiBmb3IgYW5kIDIgYWdhaW5zdC4KIyBCeSB0aGUgd2F5IHRoYW5rcyB0byBNYXJpYW5vIEFic2F0eiBhbmQgRGFuaWVsIE1hcmlvIFZlZ2EgZm9yIHRoZSBsaW5rIHRvCiMgdGhlIG9yaWdpbmFsIHNjYW5uZWQgcHJvcG9zYWwsIHdoZXJlIHRoZSBkYXRlcyBhbmQgdGhlIHplcm8gaG91cnMgYXJlCiMgY2xlYXIgYW5kIHVuYW1iaWd1b3VzLi4uVGhpcyBpcyB0aGUgYXJ0aWNsZSBhYm91dCBmaW5hbCBhcHByb3ZhbDoKIyA8YSBocmVmPSJodHRwOi8vd3d3LmxhbmFjaW9uLmNvbS5hci9wb2xpdGljYS9ub3RhLmFzcD9ub3RhX2lkPTk3Mzk5NiI+CiMgaHR0cDovL3d3dy5sYW5hY2lvbi5jb20uYXIvcG9saXRpY2Evbm90YS5hc3A/bm90YV9pZD05NzM5OTYKIyA8L2E+CiMKIyBGcm9tIFBhdWwgRWdnZXJ0ICgyMDA3LTEyLTIyKToKIyBGb3IgZGF0ZXMgYWZ0ZXIgbWlkLTIwMDgsIHRoZSBmb2xsb3dpbmcgcnVsZXMgYXJlIG15IGd1ZXNzZXMgYW5kCiMgYXJlIHF1aXRlIHBvc3NpYmx5IHdyb25nLCBidXQgYXJlIG1vcmUgbGlrZWx5IHRoYW4gbm8gRFNUIGF0IGFsbC4KCiMgRnJvbSBBbGV4YW5kZXIgS3JpdmVueXNoZXYgKDIwMDgtMDktMDUpOgojIEFzIHBlciBtZXNzYWdlIGZyb20gQ2FybG9zIEFsYmVydG8gRm9uc2VjYSBBcmF1eiAoTmljYXJhZ3VhKSwKIyBBcmdlbnRpbmEgd2lsbCBzdGFydCBEU1Qgb24gU3VuZGF5IE9jdG9iZXIgMTksIDIwMDguCiMKIyA8YSBocmVmPSJodHRwOi8vd3d3LndvcmxkdGltZXpvbmUuY29tL2RzdF9uZXdzL2RzdF9uZXdzX2FyZ2VudGluYTAzLmh0bWwiPgojIGh0dHA6Ly93d3cud29ybGR0aW1lem9uZS5jb20vZHN0X25ld3MvZHN0X25ld3NfYXJnZW50aW5hMDMuaHRtbAojIDwvYT4KIyBPUgojIDxhIGhyZWY9Imh0dHA6Ly93d3cuaW1wdWxzb2JhaXJlcy5jb20uYXIvbm90YS5waHA/aWQ9NTc4MzIgKGluIHNwYW5pc2gpIj4KIyBodHRwOi8vd3d3LmltcHVsc29iYWlyZXMuY29tLmFyL25vdGEucGhwP2lkPTU3ODMyIChpbiBzcGFuaXNoKQojIDwvYT4KCiMgRnJvbSBSb2RyaWdvIFNldmVybyAoMjAwOC0xMC0wNik6CiMgSGVyZSBpcyBzb21lIGluZm8gYXZhaWxhYmxlIGF0IGEgR2VudG9vIGJ1ZyByZWxhdGVkIHRvIFRaIG9uIEFyZ2VudGluYSdzIERTVDoKIyAuLi4KIyAtLS0tLS0tIENvbW1lbnQgIzEgZnJvbSBbam1kb2NpbGVdICAyMDA4LTEwLTA2IDE2OjI4IDAwMDAgLS0tLS0tLQojIEhpLCB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aW1lem9uZS1kYXRhLTIwMDhlIGFuZCBtYXliZSB3aXRoCiMgdGltZXpvbmUtZGF0YS0yMDA4ZgojIEFyZ2VudGluaWFuIGxhdyBbTnVtYmVyXSAyNS4xNTUgaXMgbm8gbG9uZ2VyIHZhbGlkLgojIDxhIGhyZWY9Imh0dHA6Ly93d3cuaW5mb2xlZy5nb3YuYXIvaW5mb2xlZ0ludGVybmV0L2FuZXhvcy82MDAwMC02NDk5OS82MDAzNi9ub3JtYS5odG0iPgojIGh0dHA6Ly93d3cuaW5mb2xlZy5nb3YuYXIvaW5mb2xlZ0ludGVybmV0L2FuZXhvcy82MDAwMC02NDk5OS82MDAzNi9ub3JtYS5odG0KIyA8L2E+CiMgVGhlIG5ldyBvbmUgaXMgbGF3IFtOdW1iZXJdIDI2LjM1MAojIDxhIGhyZWY9Imh0dHA6Ly93d3cuaW5mb2xlZy5nb3YuYXIvaW5mb2xlZ0ludGVybmV0L2FuZXhvcy8xMzUwMDAtMTM5OTk5LzEzNjE5MS9ub3JtYS5odG0iPgojIGh0dHA6Ly93d3cuaW5mb2xlZy5nb3YuYXIvaW5mb2xlZ0ludGVybmV0L2FuZXhvcy8xMzUwMDAtMTM5OTk5LzEzNjE5MS9ub3JtYS5odG0KIyA8L2E+CiMgU28gdGhlcmUgaXMgbm8gc3VtbWVyIHRpbWUgaW4gQXJnZW50aW5hIGZvciBub3cuCgojIEZyb20gTWFyaWFubyBBYnNhdHogKDIwMDgtMTAtMjApOgojIERlY3JlZSAxNjkzLzIwMDggYXBwbGllcyBMYXcgMjYuMzUwIGZvciB0aGUgc3VtbWVyIDIwMDgvMjAwOSBlc3RhYmxpc2hpbmcgRFNUIGluIEFyZ2VudGluYQojIEZyb20gMjAwOC0xMC0xOSB1bnRpbCAyMDA5LTAzLTE1CiMgPGEgaHJlZj0iaHR0cDovL3d3dy5ib2xldGlub2ZpY2lhbC5nb3YuYXIvQm9yYS5Qb3J0YWwvQ3VzdG9tQ29udHJvbHMvUGRmQ29udGVudC5hc3B4P2ZwPTE2MTAyMDA4JnBpPTMmcGY9NCZzPTAmc2VjPTAxIj4KIyBodHRwOi8vd3d3LmJvbGV0aW5vZmljaWFsLmdvdi5hci9Cb3JhLlBvcnRhbC9DdXN0b21Db250cm9scy9QZGZDb250ZW50LmFzcHg/ZnA9MTYxMDIwMDgmcGk9MyZwZj00JnM9MCZzZWM9MDEKIyA8L2E+CiMKIyBEZWNyZWUgMTcwNS8yMDA4IGV4Y2VwdGluZyAxMiBQcm92aW5jZXMgZnJvbSBhcHBseWluZyBEU1QgaW4gdGhlIHN1bW1lciAyMDA4LzIwMDk6CiMgQ2F0YW1hcmNhLCBMYSBSaW9qYSwgTWVuZG96YSwgU2FsdGEsIFNhbiBKdWFuLCBTYW4gTHVpcywgTGEgUGFtcGEsIE5ldXF1ZW4sIFJpbyBOZWdybywgQ2h1YnV0LCBTYW50YSBDcnV6CiMgYW5kIFRpZXJyYSBkZWwgRnVlZ28KIyA8YSBocmVmPSJodHRwOi8vd3d3LmJvbGV0aW5vZmljaWFsLmdvdi5hci9Cb3JhLlBvcnRhbC9DdXN0b21Db250cm9scy9QZGZDb250ZW50LmFzcHg/ZnA9MTcxMDIwMDgmcGk9MSZwZj0xJnM9MCZzZWM9MDEiPgojIGh0dHA6Ly93d3cuYm9sZXRpbm9maWNpYWwuZ292LmFyL0JvcmEuUG9ydGFsL0N1c3RvbUNvbnRyb2xzL1BkZkNvbnRlbnQuYXNweD9mcD0xNzEwMjAwOCZwaT0xJnBmPTEmcz0wJnNlYz0wMQojIDwvYT4KIwojIFByZXNzIHJlbGVhc2UgMjM1IGRhdGVkIFNhdHVyZGF5IE9jdG9iZXIgMTh0aCwgZnJvbSB0aGUgR292ZXJubWVudCBvZiB0aGUgUHJvdmluY2Ugb2YgSnVqdXkgc2F5aW5nCiMgaXQgd2lsbCBub3QgYXBwbHkgRFNUIGVpdGhlciAoZXZlbiB3aGVuIGl0IHdhcyBub3QgaW5jbHVkZWQgaW4gRGVjcmVlIDE3MDUvMjAwOCkKIyA8YSBocmVmPSJodHRwOi8vd3d3Lmp1anV5Lmdvdi5hci9pbmRleDIvcGFydGVzX3ByZW5zYS8xOF8xMF8wOC8yMzUtMTgxMDA4LmRvYyI+CiMgaHR0cDovL3d3dy5qdWp1eS5nb3YuYXIvaW5kZXgyL3BhcnRlc19wcmVuc2EvMThfMTBfMDgvMjM1LTE4MTAwOC5kb2MKIyA8L2E+CgpSdWxlCUFyZwkyMDA3CW9ubHkJLQlEZWMJMzAJMDowMAkxOjAwCVMKUnVsZQlBcmcJMjAwOAltYXgJLQlNYXIJU3VuPj0xNQkwOjAwCTAJLQpSdWxlCUFyZwkyMDA4CW1heAktCU9jdAlTdW4+PTE1CTA6MDAJMTowMAlTCiAKIyBGcm9tIE1hcmlhbm8gQWJzYXR6ICgyMDA0LTA1LTIxKToKIyBUb2RheSBpdCB3YXMgb2ZmaWNpYWxseSBwdWJsaXNoZWQgdGhhdCB0aGUgUHJvdmluY2Ugb2YgTWVuZG96YSBpcyBjaGFuZ2luZwojIGl0cyB0aW1lem9uZSB0aGlzIHdpbnRlci4uLiBzdGFydGluZyB0b21vcnJvdyBuaWdodC4uLi4KIyBodHRwOi8vd3d3LmdvYmVybmFjLm1lbmRvemEuZ292LmFyL2JvbGV0aW4vcGRmLzIwMDQwNTIxLTI3MTU4LW5vcm1hcy5wZGYKIyBGcm9tIFBhdWwgRWdnZXJ0ICgyMDA0LTA1LTI0KToKIyBJdCdzIExhdyBOby4gNywyMTAuICBUaGlzIGNoYW5nZSBpcyBkdWUgdG8gYSBwdWJsaWMgcG93ZXIgZW1lcmdlbmN5LCBzbyBmb3IKIyBub3cgd2UnbGwgYXNzdW1lIGl0J3MgZm9yIHRoaXMgeWVhciBvbmx5LgojCiMgRnJvbSBQYXVsIEVnZ2VydCAoMjAwNi0wMy0yMik6CiMgPGEgaHJlZj0iaHR0cDovL3d3dy5zcGljYXNjLm5ldC9ob3J2ZXJhLmh0bWwiPgojIEhvcmEgZGUgdmVyYW5vIHBhcmEgbGEgUmVwdWJsaWNhIEFyZ2VudGluYSAoMjAwMy0wNi0wOCkKIyA8L2E+IHNheXMgdGhhdCBzdGFuZGFyZCB0aW1lIGluIEFyZ2VudGluYSBmcm9tIDE4OTQtMTAtMzEKIyB0byAxOTIwLTA1LTAxIHdhcyAtNDoxNjo0OC4yNS4gIEdvIHdpdGggdGhpcyBtb3JlLXByZWNpc2UgdmFsdWUKIyBvdmVyIFNoYW5rcyAmIFBvdHRlbmdlci4KIwojIEZyb20gTWFyaWFubyBBYnNhdHogKDIwMDQtMDYtMDUpOgojIFRoZXNlIG1lZGlhIGFydGljbGVzIGZyb20gYSBtYWpvciBuZXdzcGFwZXIgbW9zdGx5IGNvdmVyIHRoZSBjdXJyZW50IHN0YXRlOgojIGh0dHA6Ly93d3cubGFuYWNpb24uY29tLmFyLzA0LzA1LzI3L2RlXzYwNDgyNS5hc3AKIyBodHRwOi8vd3d3LmxhbmFjaW9uLmNvbS5hci8wNC8wNS8yOC9kZV82MDUyMDMuYXNwCiMKIyBUaGUgZm9sbG93aW5nIGVpZ2h0ICg4KSBwcm92aW5jZXMgcHVsbGVkIGNsb2NrcyBiYWNrIHRvIFVUQy0wNDowMCBhdAojIG1pZG5pZ2h0IE1vbmRheSBNYXkgMzFzdC4gKHRoYXQgaXMsIHRoZSBuaWdodCBiZXR3ZWVuIDA1LzMxIGFuZCAwNi8wMSkuCiMgQXBwYXJlbnRseSwgYWxsIG5pbmUgcHJvdmluY2VzIHdvdWxkIGdvIGJhY2sgdG8gVVRDLTAzOjAwIGF0IHRoZSBzYW1lCiMgdGltZSBpbiBPY3RvYmVyIDE3dGguCiMKIyBDYXRhbWFyY2EsIENodWJ1dCwgTGEgUmlvamEsIFNhbiBKdWFuLCBTYW4gTHVpcywgU2FudGEgQ3J1eiwKIyBUaWVycmEgZGVsIEZ1ZWdvLCBUdWN1bWFuLgojCiMgRnJvbSBNYXJpYW5vIEFic2F0eiAoMjAwNC0wNi0xNCk6CiMgLi4uIHRoaXMgd2Vla2VuZCwgdGhlIFByb3ZpbmNlIG9mIFR1Y3VtYW4gZGVjaWRlZCBpdCdkIGdvIGJhY2sgdG8gVVRDLTAzOjAwCiMgeWVzdGVyZGF5IG1pZG5pZ2h0ICh0aGF0IGlzLCBhdCAyNDowMCBTYXR1cmRheSAxMnRoKSwgc2luY2UgdGhlIHBlb3BsZSdzCiMgYW5ub3lhbmNlIHdpdGggdGhlIGNoYW5nZSBpcyBtdWNoIGhpZ2hlciB0aGFuIHRoZSBwb3dlciBzYXZpbmdzIG9idGFpbmVkLi4uLgojCiMgRnJvbSBHd2lsbGltIExhdyAoMjAwNC0wNi0xNCk6CiMgaHR0cDovL3d3dy5sYW5hY2lvbi5jb20uYXIvMDQvMDYvMTAvZGVfNjA5MDc4LmFzcCAuLi4KIyAgICAgIlRoZSB0aW1lIGNoYW5nZSBpbiBUaWVycmEgZGVsIEZ1ZWdvIHdhcyBhIGNvbmZsaWN0ZWQgZGVjaXNpb24gZnJvbQojICAgdGhlIHN0YXJ0LiAgVGhlIGdvdmVybm1lbnQgaGFkIGRlY3JlZWQgdGhhdCB0aGUgbWVhc3VyZSB3b3VsZCB0YWtlCiMgICBlZmZlY3Qgb24gSnVuZSAxLCBidXQgYSBub3JtYXRpdmUgZXJyb3IgZm9yY2VkIHRoZSBuZXcgdGltZSB0byBiZWdpbgojICAgdGhyZWUgZGF5cyBlYXJsaWVyLCBmcm9tIGEgU2F0dXJkYXkgdG8gYSBTdW5kYXkuLi4uCiMgT3VyIHVuZGVyc3RhbmRpbmcgd2FzIHRoYXQgdGhlIGNoYW5nZSB3YXMgb3JpZ2luYWxseSBzY2hlZHVsZWQgdG8gdGFrZSBwbGFjZQojIG9uIEp1bmUgMSBhdCAwMDowMCBpbiBDaHVidXQsIFNhbnRhIENydXosIFRpZXJyYSBkZWwgRnVlZ28gKGFuZCBzb21lIG90aGVyCiMgcHJvdmluY2VzKS4gIFN1bmRheSB3YXMgTWF5IDMwLCBvbmx5IHR3byBkYXlzIGVhcmxpZXIuICBTbyB0aGUgYXJ0aWNsZQojIGNvbnRhaW5zIGEgY29udHJhZGljdGlvbi4gIEkgd291bGQgZ2l2ZSBtb3JlIGNyZWRlbmNlIHRvIHRoZSBTYXR1cmRheS9TdW5kYXkKIyBkYXRlIHRoYW4gdGhlICJ0aHJlZSBkYXlzIGVhcmxpZXIiIHBocmFzZSwgYW5kIGNvbmNsdWRlIHRoYXQgVGllcnJhIGRlbAojIEZ1ZWdvIHNldCBpdHMgY2xvY2tzIGJhY2sgYXQgMjAwNC0wNS0zMCAwMDowMC4KIwojIEZyb20gU3RlZmZlbiBUaG9yc2VuICgyMDA0LTEwLTA1KToKIyBUaGUgcHJldmlvdXMgbGF3IDcyMTAgd2hpY2ggY2hhbmdlZCB0aGUgcHJvdmluY2Ugb2YgTWVuZG96YSdzIHRpbWUgem9uZQojIGJhY2sgaW4gTWF5IGhhdmUgYmVlbiBtb2RpZmllZCBzbGlnaHRseSBpbiBhIG5ldyBsYXcgNzI3Nywgd2hpY2ggc2V0IHRoZQojIG5ldyBlbmQgZGF0ZSB0byAyMDA0LTA5LTI2IChvcmlnaW5hbCBkYXRlIHdhcyAyMDA0LTEwLTE3KS4KIyBodHRwOi8vd3d3LmdvYmVybmFjLm1lbmRvemEuZ292LmFyL2JvbGV0aW4vcGRmLzIwMDQwOTI0LTI3MjQ0LW5vcm1hcy5wZGYKIwojIEZyb20gTWFyaWFubyBBYnNhdHogKDIwMDQtMTAtMDUpOgojIFNhbiBKdWFuIGNoYW5nZWQgZnJvbSBVVEMtMDM6MDAgdG8gVVRDLTA0OjAwIGF0IG1pZG5pZ2h0IGJldHdlZW4KIyBTdW5kYXksIE1heSAzMHRoIGFuZCBNb25kYXksIE1heSAzMXN0LiAgSXQgY2hhbmdlZCBiYWNrIHRvIFVUQy0wMzowMAojIGF0IG1pZG5pZ2h0IGJldHdlZW4gU2F0dXJkYXksIEp1bHkgMjR0aCBhbmQgU3VuZGF5LCBKdWx5IDI1dGguLi4uCiMgaHR0cDovL3d3dy5zYW5qdWFuLmdvdi5hci9wcmVuc2EvYXJjaGl2by8wMDAzMjkuaHRtbAojIGh0dHA6Ly93d3cuc2FuanVhbi5nb3YuYXIvcHJlbnNhL2FyY2hpdm8vMDAwNDI2Lmh0bWwKIyBodHRwOi8vd3d3LnNhbmp1YW4uZ292LmFyL3ByZW5zYS9hcmNoaXZvLzAwMDQ0MS5odG1sCgojIEZyb20gQWxleCBLcml2ZW55c2hldiAoMjAwOC0wMS0xNyk6CiMgSGVyZSBhcmUgYXJ0aWNsZXMgdGhhdCBBcmdlbnRpbmEgUHJvdmluY2UgU2FuIEx1aXMgaXMgcGxhbm5pbmcgdG8gZW5kIERTVAojIGFzIGVhcmxpZXIgYXMgdXBjb21pbmcgTW9uZGF5IEphbnVhcnkgMjEsIDIwMDggb3IgRmVicnVhcnkgMjAwODoKIwojIFByb3ZpbmNpYSBhcmdlbnRpbmEgcmV0cmFzYSByZWxvaiB5IG1hcmNhIGRpZmVyZW5jaWEgY29uIHJlc3RvIGRlbCBwYWlzCiMgKEFyZ2VudGluZSBQcm92aW5jZSBkZWxheWVkIGNsb2NrIGFuZCBtYXJrIGRpZmZlcmVuY2Ugd2l0aCB0aGUgcmVzdCBvZiB0aGUKIyBjb3VudHJ5KQojIDxhIGhyZWY9Imh0dHA6Ly9jbC5pbnZlcnRpYS5jb20vbm90aWNpYXMvbm90aWNpYS5hc3B4P2lkTm90aWNpYT0yMDA4MDExNzE4NDlfRUZFX0VUNDM3MyZpZHRlbCI+CiMgaHR0cDovL2NsLmludmVydGlhLmNvbS9ub3RpY2lhcy9ub3RpY2lhLmFzcHg/aWROb3RpY2lhPTIwMDgwMTE3MTg0OV9FRkVfRVQ0MzczJmlkdGVsCiMgPC9hPgojCiMgRXMgaW5taW5lbnRlIHF1ZSBlbiBTYW4gTHVpcyBhdHJhc2VuIHVuYSBob3JhIGxvcyByZWxvamVzCiMgKEl0IGlzIGltbWluZW50IGluIFNhbiBMdWlzIGNsb2NrcyBvbmUgaG91ciBkZWxheSkKIyA8YSBocmVmPSJodHRwOi8vd3d3LmxhZ2FjZXRhLmNvbS5hci92ZXJub3RhZS5hc3A/aWRfbm90YT0yNTM0MTQiPgojIGh0dHA6Ly93d3cubGFnYWNldGEuY29tLmFyL3Zlcm5vdGFlLmFzcD9pZF9ub3RhPTI1MzQxNAojIDwvYT4KIwojIDxhIGhyZWY9Imh0dHA6Ly93d3cud29ybGR0aW1lem9uZS5uZXQvZHN0X25ld3MvZHN0X25ld3NfYXJnZW50aW5hMDIuaHRtbCI+CiMgaHR0cDovL3d3dy53b3JsZHRpbWV6b25lLm5ldC9kc3RfbmV3cy9kc3RfbmV3c19hcmdlbnRpbmEwMi5odG1sCiMgPC9hPgoKIyBGcm9tIEplc3BlciBOb3JnYWFyZCBXZWxlbiAoMjAwOC0wMS0xOCk6CiMgVGhlIHBhZ2Ugb2YgdGhlIFNhbiBMdWlzIHByb3ZpbmNpYWwgZ292ZXJubWVudAojIDxhIGhyZWY9Imh0dHA6Ly93d3cuc2FubHVpcy5nb3YuYXIvbm90YXMuYXNwP2lkQ2FuYWw9MCZpZD0yMjgxMiI+CiMgaHR0cDovL3d3dy5zYW5sdWlzLmdvdi5hci9ub3Rhcy5hc3A/aWRDYW5hbD0wJmlkPTIyODEyCiMgPC9hPgojIGNvbmZpcm1zIHdoYXQgQWxleCBLcml2ZW55c2hldiBoYXMgZWFybGllciBzZW50IHRvIHRoZSB0egojIGVtYWlsaW5nIGxpc3QgYWJvdXQgdGhhdCBTYW4gTHVpcyBwbGFucyB0byByZXR1cm4gdG8gc3RhbmRhcmQKIyB0aW1lIG11Y2ggZWFybGllciB0aGFuIHRoZSByZXN0IG9mIHRoZSBjb3VudHJ5LiBJdCBhbHNvCiMgY29uZmlybXMgdGhhdCB1cG9uIHJlcXVlc3QgdGhlIHByb3ZpbmNlcyBTYW4gSnVhbiBhbmQgTWVuZG96YSAKIyByZWZ1c2VkIHRvIGZvbGxvdyBTYW4gTHVpcyBpbiB0aGlzIGNoYW5nZS4gCiMgCiMgVGhlIGNoYW5nZSBpcyBzdXBwb3NlZCB0byB0YWtlIHBsYWNlIE1vbmRheSB0aGUgMjEuc3QgYXQgMDowMAojIGhvdXJzLiBBcyBmYXIgYXMgSSB1bmRlcnN0YW5kIGl0IGlmIHRoaXMgZ29lcyBhaGVhZCwgd2UgbmVlZAojIGEgbmV3IHRpbWV6b25lIGZvciBTYW4gTHVpcyAoYWx0aG91Z2ggdGhlcmUgYXJlIGFsc28gZG9jdW1lbnRlZAojIGluZGVwZW5kZW50IGNoYW5nZXMgaW4gdGhlIHNvdXRoYW1lcmljYSBmaWxlIG9mIFNhbiBMdWlzIGluCiMgMTk5MCBhbmQgMTk5MSB3aGljaCBoYXMgbm90IGJlZW4gY29uZmlybWVkKS4KCiMgRnJvbSBKZXNwZXIgTm9yZ2FhcmQgV2VsZW4gKDIwMDgtMDEtMjUpOgojIFVuZm9ydHVuYXRlbHkgdGhlIGJlbG93IHBhZ2UgaGFzIGJlY29tZSBkZWZ1bmN0LCBhYm91dCB0aGUgU2FuIEx1aXMKIyB0aW1lIGNoYW5nZS4gUGVyaGFwcyBiZWNhdXNlIGl0IG5vdyBpcyBwYXJ0IG9mIGEgZ3JvdXAgb2YgcGFnZXMgIk1vc3QKIyBpbXBvcnRhbnQgcGFnZXMgb2YgMjAwOC4iCiMKIyBZb3UgY2FuIHVzZQojIDxhIGhyZWY9Imh0dHA6Ly93d3cuc2FubHVpcy5nb3YuYXIvbm90YXMuYXNwP2lkQ2FuYWw9ODE0MSZpZD0yMjgzNCI+CiMgaHR0cDovL3d3dy5zYW5sdWlzLmdvdi5hci9ub3Rhcy5hc3A/aWRDYW5hbD04MTQxJmlkPTIyODM0CiMgPC9hPgojIGluc3RlYWQgaXQgc2VlbXMuIE9yIHVzZSAiQnVzY2Fkb3IiIGZyb20gdGhlIG1haW4gcGFnZSBvZiB0aGUgU2FuIEx1aXMKIyBnb3Zlcm5tZW50LCBhbmQgZmlsbCBpbiAiaHVzbyIgYW5kIGNsaWNrIE9LLCBhbmQgeW91IHdpbGwgZ2V0IDMgcGFnZXMKIyBmcm9tIHdoaWNoIHRoZSBmaXJzdCBvbmUgaXMgaWRlbnRpY2FsIHRvIHRoZSBhYm92ZS4KCiMgRnJvbSBNYXJpYW5vIEFic2F0eiAoMjAwOC0wMS0yOCk6CiMgSSBjYW4gY29uZmlybSB0aGF0IHRoZSBQcm92aW5jZSBvZiBTYW4gTHVpcyAoYW5kIHNvIGZhciBvbmx5IHRoYXQKIyBwcm92aW5jZSkgZGVjaWRlZCB0byBnbyBiYWNrIHRvIFVUQy0zIGVmZmVjdGl2ZSBtaWRuaWdodCBKYW4gMjB0aCAyMDA4CiMgKHRoYXQgaXMsIE1vbmRheSAyMXN0IGF0IDA6MDAgaXMgdGhlIHRpbWUgdGhlIGNsb2NrcyB3ZXJlIGRlbGF5ZWQgYmFjawojIDEgaG91ciksIGFuZCB0aGV5IGludGVuZCB0byBrZWVwIFVUQy0zIGFzIHRoZWlyIHRpbWV6b25lIGFsbCB5ZWFyIHJvdW5kCiMgKHRoYXQgaXMsIHVubGVzcyB0aGV5IGNoYW5nZSB0aGVpciBtaW5kIGFueSBtaW51dGUgbm93KS4KIwojIFNvIHdlJ2xsIGhhdmUgdG8gYWRkIHlldCBhbm90aGVyIGNpdHkgdG8gJ3NvdXRoYW1lcmljYScgKEkgdGhpbmsgU2FuCiMgTHVpcyBjaXR5IGlzIHRoZSBtb3MgcG9wdWxhdGVkIGNpdHkgaW4gdGhlIFByb3ZpbmNlLCBzbyBpdCdkIGJlCiMgQW1lcmljYS9BcmdlbnRpbmEvU2FuX0x1aXMuLi4gb2YgY291cnNlIEkgY2FuJ3QgcmVtZW1iZXIgaWYgU2FuIEx1aXMncwojIGhpc3Rvcnkgb2YgcGFydGljdWxhciBjaGFuZ2VzIGdvZXMgYWxvbmcgd2l0aCBNZW5kb3phIG9yIFNhbiBKdWFuIDotKAojIChJIG9ubHkgcmVtZW1iZXIgbm90IGJlaW5nIGFibGUgdG8gY29sbGVjdCBoYXJkIGZhY3RzIGFib3V0IFNhbiBMdWlzCiMgYmFjayBpbiAyMDA0LCB3aGVuIHRoZXNlIHByb3ZpbmNlcyBjaGFuZ2VkIHRvIFVUQy00IGZvciBhIGZldyBkYXlzLCBJCiMgbWFpbGVkIHRoZW0gcGVyc29uYWxseSBhbmQgbmV2ZXIgZ290IGFuIGFuc3dlcikuCgojIEZyb20gUGF1bCBFZ2dlcnQgKDIwMDgtMDYtMzApOgojIFVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLCBkYXRhIGFyZSBmcm9tIFNoYW5rcyAmIFBvdHRlbmdlciB0aHJvdWdoIDE5OTIsCiMgZnJvbSB0aGUgSUFUQSBvdGhlcndpc2UuICBBcyBub3RlZCBiZWxvdywgU2hhbmtzICYgUG90dGVuZ2VyIHNheSB0aGF0CiMgQW1lcmljYS9Db3Jkb2JhIHNwbGl0IGludG8gNiBzdWJyZWdpb25zIGR1cmluZyAxOTkxLzE5OTIsIG9uZSBvZiB3aGljaAojIHdhcyBBbWVyaWNhL1Nhbl9MdWlzLCBidXQgd2UgaGF2ZW4ndCB2ZXJpZmllZCB0aGlzIHlldCBzbyBmb3Igbm93IHdlJ2xsCiMga2VlcCBBbWVyaWNhL0NvcmRvYmEgYSBzaW5nbGUgcmVnaW9uIHJhdGhlciB0aGFuIHNwbGl0dGluZyBpdCBpbnRvIHRoZQojIG90aGVyIDUgc3VicmVnaW9ucy4KCiMgRnJvbSBNYXJpYW5vIEFic2F0eiAoMjAwOS0wMy0xMyk6CiMgWWVzdGVyZGF5ICh3aXRoIG91ciB1c3VhbCAyLWRheSBub3RpY2UpIHRoZSBQcm92aW5jZSBvZiBTYW4gTHVpcwojIGRlY2lkZWQgdGhhdCBuZXh0IFN1bmRheSBpbnN0ZWFkIG9mICJzdGF5aW5nIiBAdXRjLTAzOjAwIHRoZXkgd2lsbCBnbwojIHRvIHV0Yy0wNDowMCB1bnRpbCB0aGUgc2Vjb25kIFNhdHVyZGF5IGluIE9jdG9iZXIuLi4KIwojIFRoZSBwcmVzcyByZWxlYXNlIGlzIGF0CiMgPGEgaHJlZj0iaHR0cDovL3d3dy5zYW5sdWlzLmdvdi5hci9TTC9QYWdpbmFzL05vdGljaWFEZXRhbGxlLmFzcD9UZW1hSWQ9MSZJbmZvUHJlbnNhSWQ9MzEwMiI+CiMgaHR0cDovL3d3dy5zYW5sdWlzLmdvdi5hci9TTC9QYWdpbmFzL05vdGljaWFEZXRhbGxlLmFzcD9UZW1hSWQ9MSZJbmZvUHJlbnNhSWQ9MzEwMgojIDwvYT4KIyAoSSBjb3VsZG4ndCBmaW5kIHRoZSBkZWNyZWUsIGJ1dAojIDxhIGhyZWY9Imh0dHA6Ly93d3cuc2FubHVpcy5nb3YuYXIiPgojIHd3dy5zYW5sdWlzLmdvdi5hcgojIDxhLz4KIyBpcyB0aGUgb2ZmaWNpYWwgcGFnZSBmb3IgdGhlIFByb3ZpbmNlIEdvdmVybm1lbnQpLgojCiMgVGhlcmUncyBhbHNvIGEgbm90ZSBpbiBvbmx5IG9uZSBvZiB0aGUgbWFqb3IgbmF0aW9uYWwgcGFwZXJzIChMYSBOYWNp824pIGF0CiMgPGEgaHJlZj0iaHR0cDovL3d3dy5sYW5hY2lvbi5jb20uYXIvbm90YS5hc3A/bm90YV9pZD0xMTA3OTEyIj4KIyBodHRwOi8vd3d3LmxhbmFjaW9uLmNvbS5hci9ub3RhLmFzcD9ub3RhX2lkPTExMDc5MTIKIyA8L2E+CiMgCiMgVGhlIHByZXNzIHJlbGVhc2Ugc2F5czoKIyAgKC4uLikgYW51bmNp8yBxdWUgZWwgcHLzeGltbyBkb21pbmdvIGEgbGFzIDAwOjAwIGxvcyBwdW50YW5vcyBkZWJlcuFuCiMgYXRyYXNhciB1bmEgaG9yYSBzdXMgcmVsb2plcy4KIwojIEEgcGFydGlyIGRlIGVudG9uY2VzLCBTYW4gTHVpcyBlc3RhYmxlY2Vy4SBlbCBodXNvIGhvcmFyaW8gcHJvcGlvIGRlCiMgbGEgUHJvdmluY2lhLiBEZSBlc3RhIG1hbmVyYSwgZHVyYW50ZSBlbCBwZXJpb2RvIGRlbCBjYWxlbmRhcmlvIGFudWFsCiMgMjAwOSwgZWwgY2FtYmlvIGhvcmFyaW8gcXVlZGFy4SBjb21wcmVuZGlkbyBlbnRyZSBsYXMgMDA6MDAgZGVsIHRlcmNlcgojIGRvbWluZ28gZGUgbWFyem8geSBsYXMgMjQ6MDAgZGVsIHNlZ3VuZG8gc+FiYWRvIGRlIG9jdHVicmUuCiMgUXVpY2smZGlydHkgdHJhbnNsYXRpb24KIyAoLi4uKSBhbm5vdW5jZWQgdGhhdCBuZXh0IFN1bmRheSwgYXQgMDA6MDAsIFB1bnRhbm9zICh0aGUgU2FuIEx1aXMKIyBpbmhhYml0YW50cykgd2lsbCBoYXZlIHRvIHR1cm4gYmFjayBvbmUgaG91ciB0aGVpciBjbG9ja3MKIwojIFNpbmNlIHRoZW4sIFNhbiBMdWlzIHdpbGwgZXN0YWJsaXNoIGl0cyBvd24gUHJvdmluY2UgdGltZXpvbmUuIFRodXMsCiMgZHVyaW5nIDIwMDksIHRoaXMgdGltZXpvbmUgY2hhbmdlIHdpbGwgcnVuIGZyb20gMDA6MDAgdGhlIHRoaXJkIFN1bmRheQojIGluIE1hcmNoIHVudGlsIDI0OjAwIG9mIHRoZSBzZWNvbmQgU2F0dXJkYXkgaW4gT2N0b2Jlci4KCiMgRnJvbSBBcnRodXIgRGF2aWQgT2xzb24gKDIwMDktMDMtMTYpOgojIFRoZSB1bm9mZmljaWFsIGNsYWltIGF0CiMgPGEgaHJlZj0iaHR0cDovL3d3dy50aW1lYW5kZGF0ZS5jb20vbmV3cy90aW1lL3Nhbi1sdWlzLW5ldy10aW1lLXpvbmUuaHRtbCI+CiMgaHR0cDovL3d3dy50aW1lYW5kZGF0ZS5jb20vbmV3cy90aW1lL3Nhbi1sdWlzLW5ldy10aW1lLXpvbmUuaHRtbAojIDwvYT4KIyBpcyB0aGF0ICJUaGUgcHJvdmluY2Ugd2lsbCBtb3N0IGxpa2VseSBmb2xsb3cgdGhlIG5leHQgZGF5bGlnaHQgc2F2aW5nIHNjaGVkdWxlLAojIHdoaWNoIGlzIHBsYW5uZWQgZm9yIHRoZSBzZWNvbmQgU3VuZGF5IGluIE9jdG9iZXIuIgoKIwojIFpvbmUJTkFNRQkJR01UT0ZGCVJVTEVTCUZPUk1BVAlbVU5USUxdCiMKIyBCdWVub3MgQWlyZXMgKEJBKSwgQ2FwaXRhbCBGZWRlcmFsIChDRiksClpvbmUgQW1lcmljYS9BcmdlbnRpbmEvQnVlbm9zX0FpcmVzIC0zOjUzOjQ4IC0gTE1UIDE4OTQgT2N0IDMxCgkJCS00OjE2OjQ4IC0JQ01UCTE5MjAgTWF5ICMgQ29yZG9iYSBNZWFuIFRpbWUKCQkJLTQ6MDAJLQlBUlQJMTkzMCBEZWMKCQkJLTQ6MDAJQXJnCUFSJXNUCTE5NjkgT2N0ICA1CgkJCS0zOjAwCUFyZwlBUiVzVAkxOTk5IE9jdCAgMwoJCQktNDowMAlBcmcJQVIlc1QJMjAwMCBNYXIgIDMKCQkJLTM6MDAJQXJnCUFSJXNUCiMKIyBDb3Jkb2JhIChDQiksIFNhbnRhIEZlIChTRiksIEVudHJlIFJpb3MgKEVSKSwgQ29ycmllbnRlcyAoQ04pLCBNaXNpb25lcyAoTU4pLAojIENoYWNvIChDQyksIEZvcm1vc2EgKEZNKSwgU2FudGlhZ28gZGVsIEVzdGVybyAoU0UpCiMKIyBTaGFua3MgJiBQb3R0ZW5nZXIgYWxzbyBtYWtlIHRoZSBmb2xsb3dpbmcgY2xhaW1zLCB3aGljaCB3ZSBoYXZlbid0IHZlcmlmaWVkOgojIC0gRm9ybW9zYSBzd2l0Y2hlZCB0byAtMzowMCBvbiAxOTkxLTAxLTA3LgojIC0gTWlzaW9uZXMgc3dpdGNoZWQgdG8gLTM6MDAgb24gMTk5MC0xMi0yOS4KIyAtIENoYWNvIHN3aXRjaGVkIHRvIC0zOjAwIG9uIDE5OTEtMDEtMDQuCiMgLSBTYW50aWFnbyBkZWwgRXN0ZXJvIHN3aXRjaGVkIHRvIC00OjAwIG9uIDE5OTEtMDQtMDEsCiMgICB0aGVuIHRvIC0zOjAwIG9uIDE5OTEtMDQtMjYuCiMKWm9uZSBBbWVyaWNhL0FyZ2VudGluYS9Db3Jkb2JhIC00OjE2OjQ4IC0gTE1UCTE4OTQgT2N0IDMxCgkJCS00OjE2OjQ4IC0JQ01UCTE5MjAgTWF5CgkJCS00OjAwCS0JQVJUCTE5MzAgRGVjCgkJCS00OjAwCUFyZwlBUiVzVAkxOTY5IE9jdCAgNQoJCQktMzowMAlBcmcJQVIlc1QJMTk5MSBNYXIgIDMKCQkJLTQ6MDAJLQlXQVJUCTE5OTEgT2N0IDIwCgkJCS0zOjAwCUFyZwlBUiVzVAkxOTk5IE9jdCAgMwoJCQktNDowMAlBcmcJQVIlc1QJMjAwMCBNYXIgIDMKCQkJLTM6MDAJQXJnCUFSJXNUCiMKIyBTYWx0YSAoU0EpLCBMYSBQYW1wYSAoTFApLCBOZXVxdWVuIChOUSksIFJpbyBOZWdybyAoUk4pClpvbmUgQW1lcmljYS9BcmdlbnRpbmEvU2FsdGEgLTQ6MjE6NDAgLSBMTVQJMTg5NCBPY3QgMzEKCQkJLTQ6MTY6NDggLQlDTVQJMTkyMCBNYXkKCQkJLTQ6MDAJLQlBUlQJMTkzMCBEZWMKCQkJLTQ6MDAJQXJnCUFSJXNUCTE5NjkgT2N0ICA1CgkJCS0zOjAwCUFyZwlBUiVzVAkxOTkxIE1hciAgMwoJCQktNDowMAktCVdBUlQJMTk5MSBPY3QgMjAKCQkJLTM6MDAJQXJnCUFSJXNUCTE5OTkgT2N0ICAzCgkJCS00OjAwCUFyZwlBUiVzVAkyMDAwIE1hciAgMwoJCQktMzowMAlBcmcJQVIlc1QJMjAwOCBPY3QgMTgKCQkJLTM6MDAJLQlBUlQKIwojIFR1Y3VtYW4gKFRNKQpab25lIEFtZXJpY2EvQXJnZW50aW5hL1R1Y3VtYW4gLTQ6MjA6NTIgLSBMTVQJMTg5NCBPY3QgMzEKCQkJLTQ6MTY6NDggLQlDTVQJMTkyMCBNYXkKCQkJLTQ6MDAJLQlBUlQJMTkzMCBEZWMKCQkJLTQ6MDAJQXJnCUFSJXNUCTE5NjkgT2N0ICA1CgkJCS0zOjAwCUFyZwlBUiVzVAkxOTkxIE1hciAgMwoJCQktNDowMAktCVdBUlQJMTk5MSBPY3QgMjAKCQkJLTM6MDAJQXJnCUFSJXNUCTE5OTkgT2N0ICAzCgkJCS00OjAwCUFyZwlBUiVzVAkyMDAwIE1hciAgMwoJCQktMzowMAktCUFSVAkyMDA0IEp1biAgMQoJCQktNDowMAktCVdBUlQJMjAwNCBKdW4gMTMKCQkJLTM6MDAJQXJnCUFSJXNUCiMKIyBMYSBSaW9qYSAoTFIpClpvbmUgQW1lcmljYS9BcmdlbnRpbmEvTGFfUmlvamEgLTQ6Mjc6MjQgLSBMTVQJMTg5NCBPY3QgMzEKCQkJLTQ6MTY6NDggLQlDTVQJMTkyMCBNYXkKCQkJLTQ6MDAJLQlBUlQJMTkzMCBEZWMKCQkJLTQ6MDAJQXJnCUFSJXNUCTE5NjkgT2N0ICA1CgkJCS0zOjAwCUFyZwlBUiVzVAkxOTkxIE1hciAgMQoJCQktNDowMAktCVdBUlQJMTk5MSBNYXkgIDcKCQkJLTM6MDAJQXJnCUFSJXNUCTE5OTkgT2N0ICAzCgkJCS00OjAwCUFyZwlBUiVzVAkyMDAwIE1hciAgMwoJCQktMzowMAktCUFSVAkyMDA0IEp1biAgMQoJCQktNDowMAktCVdBUlQJMjAwNCBKdW4gMjAKCQkJLTM6MDAJQXJnCUFSJXNUCTIwMDggT2N0IDE4CgkJCS0zOjAwCS0JQVJUCiMKIyBTYW4gSnVhbiAoU0opClpvbmUgQW1lcmljYS9BcmdlbnRpbmEvU2FuX0p1YW4gLTQ6MzQ6MDQgLSBMTVQJMTg5NCBPY3QgMzEKCQkJLTQ6MTY6NDggLQlDTVQJMTkyMCBNYXkKCQkJLTQ6MDAJLQlBUlQJMTkzMCBEZWMKCQkJLTQ6MDAJQXJnCUFSJXNUCTE5NjkgT2N0ICA1CgkJCS0zOjAwCUFyZwlBUiVzVAkxOTkxIE1hciAgMQoJCQktNDowMAktCVdBUlQJMTk5MSBNYXkgIDcKCQkJLTM6MDAJQXJnCUFSJXNUCTE5OTkgT2N0ICAzCgkJCS00OjAwCUFyZwlBUiVzVAkyMDAwIE1hciAgMwoJCQktMzowMAktCUFSVAkyMDA0IE1heSAzMQoJCQktNDowMAktCVdBUlQJMjAwNCBKdWwgMjUKCQkJLTM6MDAJQXJnCUFSJXNUCTIwMDggT2N0IDE4CgkJCS0zOjAwCS0JQVJUCiMKIyBKdWp1eSAoSlkpClpvbmUgQW1lcmljYS9BcmdlbnRpbmEvSnVqdXkgLTQ6MjE6MTIgLQlMTVQJMTg5NCBPY3QgMzEKCQkJLTQ6MTY6NDggLQlDTVQJMTkyMCBNYXkKCQkJLTQ6MDAJLQlBUlQJMTkzMCBEZWMKCQkJLTQ6MDAJQXJnCUFSJXNUCTE5NjkgT2N0ICA1CgkJCS0zOjAwCUFyZwlBUiVzVAkxOTkwIE1hciAgNAoJCQktNDowMAktCVdBUlQJMTk5MCBPY3QgMjgKCQkJLTQ6MDAJMTowMAlXQVJTVAkxOTkxIE1hciAxNwoJCQktNDowMAktCVdBUlQJMTk5MSBPY3QgIDYKCQkJLTM6MDAJMTowMAlBUlNUCTE5OTIKCQkJLTM6MDAJQXJnCUFSJXNUCTE5OTkgT2N0ICAzCgkJCS00OjAwCUFyZwlBUiVzVAkyMDAwIE1hciAgMwoJCQktMzowMAlBcmcJQVIlc1QJMjAwOCBPY3QgMTgKCQkJLTM6MDAJLQlBUlQKIwojIENhdGFtYXJjYSAoQ1QpLCBDaHVidXQgKENIKQpab25lIEFtZXJpY2EvQXJnZW50aW5hL0NhdGFtYXJjYSAtNDoyMzowOCAtIExNVAkxODk0IE9jdCAzMQoJCQktNDoxNjo0OCAtCUNNVAkxOTIwIE1heQoJCQktNDowMAktCUFSVAkxOTMwIERlYwoJCQktNDowMAlBcmcJQVIlc1QJMTk2OSBPY3QgIDUKCQkJLTM6MDAJQXJnCUFSJXNUCTE5OTEgTWFyICAzCgkJCS00OjAwCS0JV0FSVAkxOTkxIE9jdCAyMAoJCQktMzowMAlBcmcJQVIlc1QJMTk5OSBPY3QgIDMKCQkJLTQ6MDAJQXJnCUFSJXNUCTIwMDAgTWFyICAzCgkJCS0zOjAwCS0JQVJUCTIwMDQgSnVuICAxCgkJCS00OjAwCS0JV0FSVAkyMDA0IEp1biAyMAoJCQktMzowMAlBcmcJQVIlc1QJMjAwOCBPY3QgMTgKCQkJLTM6MDAJLQlBUlQKIwojIE1lbmRvemEgKE1aKQpab25lIEFtZXJpY2EvQXJnZW50aW5hL01lbmRvemEgLTQ6MzU6MTYgLSBMTVQJMTg5NCBPY3QgMzEKCQkJLTQ6MTY6NDggLQlDTVQJMTkyMCBNYXkKCQkJLTQ6MDAJLQlBUlQJMTkzMCBEZWMKCQkJLTQ6MDAJQXJnCUFSJXNUCTE5NjkgT2N0ICA1CgkJCS0zOjAwCUFyZwlBUiVzVAkxOTkwIE1hciAgNAoJCQktNDowMAktCVdBUlQJMTk5MCBPY3QgMTUKCQkJLTQ6MDAJMTowMAlXQVJTVAkxOTkxIE1hciAgMQoJCQktNDowMAktCVdBUlQJMTk5MSBPY3QgMTUKCQkJLTQ6MDAJMTowMAlXQVJTVAkxOTkyIE1hciAgMQoJCQktNDowMAktCVdBUlQJMTk5MiBPY3QgMTgKCQkJLTM6MDAJQXJnCUFSJXNUCTE5OTkgT2N0ICAzCgkJCS00OjAwCUFyZwlBUiVzVAkyMDAwIE1hciAgMwoJCQktMzowMAktCUFSVAkyMDA0IE1heSAyMwoJCQktNDowMAktCVdBUlQJMjAwNCBTZXAgMjYKCQkJLTM6MDAJQXJnCUFSJXNUCTIwMDggT2N0IDE4CgkJCS0zOjAwCS0JQVJUCiMKIyBTYW4gTHVpcyAoU0wpClpvbmUgQW1lcmljYS9BcmdlbnRpbmEvU2FuX0x1aXMgLTQ6MjU6MjQgLSBMTVQJMTg5NCBPY3QgMzEKCQkJLTQ6MTY6NDggLQlDTVQJMTkyMCBNYXkKCQkJLTQ6MDAJLQlBUlQJMTkzMCBEZWMKCQkJLTQ6MDAJQXJnCUFSJXNUCTE5NjkgT2N0ICA1CgkJCS0zOjAwCUFyZwlBUiVzVAkxOTkwCgkJCS0zOjAwCTE6MDAJQVJTVAkxOTkwIE1hciAxNAoJCQktNDowMAktCVdBUlQJMTk5MCBPY3QgMTUKCQkJLTQ6MDAJMTowMAlXQVJTVAkxOTkxIE1hciAgMQoJCQktNDowMAktCVdBUlQJMTk5MSBKdW4gIDEKCQkJLTM6MDAJLQlBUlQJMTk5OSBPY3QgIDMKCQkJLTQ6MDAJMTowMAlXQVJTVAkyMDAwIE1hciAgMwoJCQktMzowMAktCUFSVAkyMDA0IE1heSAzMQoJCQktNDowMAktCVdBUlQJMjAwNCBKdWwgMjUKCQkJLTM6MDAJQXJnCUFSJXNUCTIwMDggSmFuIDIxCgkJCS0zOjAwCS0JQVJUCTIwMDkgTWFyIDE1CgkJCS00OjAwCUFyZwlXQVIlc1QKIwojIFNhbnRhIENydXogKFNDKQpab25lIEFtZXJpY2EvQXJnZW50aW5hL1Jpb19HYWxsZWdvcyAtNDozNjo1MiAtIExNVCAxODk0IE9jdCAzMQoJCQktNDoxNjo0OCAtCUNNVAkxOTIwIE1heSAjIENvcmRvYmEgTWVhbiBUaW1lCgkJCS00OjAwCS0JQVJUCTE5MzAgRGVjCgkJCS00OjAwCUFyZwlBUiVzVAkxOTY5IE9jdCAgNQoJCQktMzowMAlBcmcJQVIlc1QJMTk5OSBPY3QgIDMKCQkJLTQ6MDAJQXJnCUFSJXNUCTIwMDAgTWFyICAzCgkJCS0zOjAwCS0JQVJUCTIwMDQgSnVuICAxCgkJCS00OjAwCS0JV0FSVAkyMDA0IEp1biAyMAoJCQktMzowMAlBcmcJQVIlc1QJMjAwOCBPY3QgMTgKCQkJLTM6MDAJLQlBUlQKIwojIFRpZXJyYSBkZWwgRnVlZ28sIEFudGFydGlkYSBlIElzbGFzIGRlbCBBdGxhbnRpY28gU3VyIChURikKWm9uZSBBbWVyaWNhL0FyZ2VudGluYS9Vc2h1YWlhIC00OjMzOjEyIC0gTE1UIDE4OTQgT2N0IDMxCgkJCS00OjE2OjQ4IC0JQ01UCTE5MjAgTWF5ICMgQ29yZG9iYSBNZWFuIFRpbWUKCQkJLTQ6MDAJLQlBUlQJMTkzMCBEZWMKCQkJLTQ6MDAJQXJnCUFSJXNUCTE5NjkgT2N0ICA1CgkJCS0zOjAwCUFyZwlBUiVzVAkxOTk5IE9jdCAgMwoJCQktNDowMAlBcmcJQVIlc1QJMjAwMCBNYXIgIDMKCQkJLTM6MDAJLQlBUlQJMjAwNCBNYXkgMzAKCQkJLTQ6MDAJLQlXQVJUCTIwMDQgSnVuIDIwCgkJCS0zOjAwCUFyZwlBUiVzVAkyMDA4IE9jdCAxOAoJCQktMzowMAktCUFSVAoKIyBBcnViYQojIFpvbmUJTkFNRQkJR01UT0ZGCVJVTEVTCUZPUk1BVAlbVU5USUxdClpvbmUJQW1lcmljYS9BcnViYQktNDo0MDoyNCAtCUxNVAkxOTEyIEZlYiAxMgkjIE9yYW5qZXN0YWQKCQkJLTQ6MzAJLQlBTlQJMTk2NSAjIE5ldGhlcmxhbmRzIEFudGlsbGVzIFRpbWUKCQkJLTQ6MDAJLQlBU1QKCiMgQm9saXZpYQojIFpvbmUJTkFNRQkJR01UT0ZGCVJVTEVTCUZPUk1BVAlbVU5USUxdClpvbmUJQW1lcmljYS9MYV9QYXoJLTQ6MzI6MzYgLQlMTVQJMTg5MAoJCQktNDozMjozNiAtCUNNVAkxOTMxIE9jdCAxNSAjIENhbGFtYXJjYSBNVAoJCQktNDozMjozNiAxOjAwCUJPU1QJMTkzMiBNYXIgMjEgIyBCb2xpdmlhIFNUCgkJCS00OjAwCS0JQk9UCSMgQm9saXZpYSBUaW1lCgojIEJyYXppbAoKIyBGcm9tIFBhdWwgRWdnZXJ0ICgxOTkzLTExLTE4KToKIyBUaGUgbWF5b3Igb2YgUmlvIHJlY2VudGx5IGF0dGVtcHRlZCB0byBjaGFuZ2UgdGhlIHRpbWUgem9uZSBydWxlcwojIGp1c3QgaW4gaGlzIGNpdHksIGluIG9yZGVyIHRvIGxlYXZlIG1vcmUgc3VtbWVyIHRpbWUgZm9yIHRoZSB0b3VyaXN0IHRyYWRlLgojIFRoZSBydWxlIGNoYW5nZSBsYXN0ZWQgb25seSBwYXJ0IG9mIHRoZSBkYXk7CiMgdGhlIGZlZGVyYWwgZ292ZXJubWVudCByZWZ1c2VkIHRvIGZvbGxvdyB0aGUgY2l0eSdzIHJ1bGVzLCBhbmQgYnVzaW5lc3MKIyB3YXMgaW4gYSBjaGFvcywgc28gdGhlIG1heW9yIGJhY2tlZCBkb3duIHRoYXQgYWZ0ZXJub29uLgoKIyBGcm9tIElBVEEgU1NJTSAoMTk5Ni0wMik6CiMgX09ubHlfIHRoZSBmb2xsb3dpbmcgc3RhdGVzIGluIEJSMSBvYnNlcnZlIERTVDogUmlvIEdyYW5kZSBkbyBTdWwgKFJTKSwKIyBTYW50YSBDYXRhcmluYSAoU0MpLCBQYXJhbmEgKFBSKSwgU2FvIFBhdWxvIChTUCksIFJpbyBkZSBKYW5laXJvIChSSiksCiMgRXNwaXJpdG8gU2FudG8gKEVTKSwgTWluYXMgR2VyYWlzIChNRyksIEJhaGlhIChCQSksIEdvaWFzIChHTyksCiMgRGlzdHJpdG8gRmVkZXJhbCAoREYpLCBUb2NhbnRpbnMgKFRPKSwgU2VyZ2lwZSBbU0VdIGFuZCBBbGFnb2FzIFtBTF0uCiMgW1RoZSBsYXN0IHRocmVlIHN0YXRlcyBhcmUgbmV3IHRvIHRoaXMgaXNzdWUgb2YgdGhlIElBVEEgU1NJTS5dCgojIEZyb20gR3dpbGxpbSBMYXcgKDE5OTYtMTAtMDcpOgojIEdlb2dyYXBoeSwgaGlzdG9yeSAoVG9jYW50aW5zIHdhcyBwYXJ0IG9mIEdvaWFzIHVudGlsIDE5ODkpLCBhbmQgb3RoZXIKIyBzb3VyY2VzIG9mIHRpbWUgem9uZSBpbmZvcm1hdGlvbiBsZWFkIG1lIHRvIGJlbGlldmUgdGhhdCBBTCwgU0UsIGFuZCBUTyB3ZXJlCiMgYWx3YXlzIGluIEJSMSwgYW5kIHNvIHRoZSBvbmx5IGNoYW5nZSB3YXMgd2hldGhlciBvciBub3QgdGhleSBvYnNlcnZlZCBEU1QuLi4uCiMgVGhlIGVhcmxpZXN0IGlzc3VlIG9mIHRoZSBTU0lNIEkgaGF2ZSBpcyAyLzkxLiAgRWFjaCBpc3N1ZSBmcm9tIHRoZW4gdW50aWwKIyA5Lzk1IHNheXMgdGhhdCBEU1QgaXMgb2JzZXJ2ZWQgb25seSBpbiB0aGUgdGVuIHN0YXRlcyBJIHF1b3RlZCBmcm9tIDkvOTUsCiMgYWxvbmcgd2l0aCBNYXRvIEdyb3NzbyAoTVQpIGFuZCBNYXRvIEdyb3NzbyBkbyBTdWwgKE1TKSwgd2hpY2ggYXJlIGluIEJSMgojIChVVEMtNCkuLi4uICBUaGUgb3RoZXIgdHdvIHRpbWUgem9uZXMgZ2l2ZW4gZm9yIEJyYXppbCBhcmUgQlIzLCB3aGljaCBpcwojIFVUQy01LCBubyBEU1QsIGFuZCBhcHBsaWVzIG9ubHkgaW4gdGhlIHN0YXRlIG9mIEFjcmUgKEFDKTsgYW5kIEJSNCwgd2hpY2ggaXMKIyBVVEMtMiwgYW5kIGFwcGxpZXMgdG8gRmVybmFuZG8gZGUgTm9yb25oYSAoZm9ybWVybHkgRk4sIGJ1dCBJIGJlbGlldmUgaXQncwojIGJlY29tZSBwYXJ0IG9mIHRoZSBzdGF0ZSBvZiBQZXJuYW1idWNvKS4gIFRoZSBib3VuZGFyeSBiZXR3ZWVuIEJSMSBhbmQgQlIyCiMgaGFzIG5ldmVyIGJlZW4gY2xlYXJseSBzdGF0ZWQuICBUaGV5J3ZlIHNpbXBseSBiZWVuIGNhbGxlZCBFYXN0IGFuZCBXZXN0LgojIEhvd2V2ZXIsIHNvbWUgY29uY2x1c2lvbnMgY2FuIGJlIGRyYXduIGZyb20gYW5vdGhlciBJQVRBIG1hbnVhbDogdGhlIEFpcmxpbmUKIyBDb2RpbmcgRGlyZWN0b3J5LCB3aGljaCBsaXN0cyBjbG9zZSB0byA0MDAgYWlycG9ydHMgaW4gQnJhemlsLiAgRm9yIGVhY2gKIyBhaXJwb3J0IGl0IGdpdmVzIGEgdGltZSB6b25lIHdoaWNoIGlzIGNvZGVkIHRvIHRoZSBTU0lNLiAgRnJvbSB0aGF0CiMgaW5mb3JtYXRpb24sIEknbSBsZWQgdG8gY29uY2x1ZGUgdGhhdCB0aGUgc3RhdGVzIG9mIEFtYXBhIChBUCksIENlYXJhIChDRSksCiMgTWFyYW5oYW8gKE1BKSwgUGFyYWliYSAoUFIpLCBQZXJuYW1idWNvIChQRSksIFBpYXVpIChQSSksIGFuZCBSaW8gR3JhbmRlIGRvCiMgTm9ydGUgKFJOKSwgYW5kIHRoZSBlYXN0ZXJuIHBhcnQgb2YgUGFyYSAoUEEpIGFyZSBhbGwgaW4gQlIxIHdpdGhvdXQgRFNULgoKIyBGcm9tIE1hcmNvcyBUYWRldSAoMTk5OC0wOS0yNyk6CiMgPGEgaHJlZj0iaHR0cDovL3BjZHNoMDEub24uYnIvdmVyYW8xLmh0bWwiPgojIEJyYXppbGlhbiBvZmZpY2lhbCBwYWdlCiMgPC9hPgoKIyBGcm9tIEplc3BlciBOb3JnYWFyZCAoMjAwMC0xMS0wMyk6CiMgW0ZvciBhbiBvZmZpY2lhbCBsaXN0IG9mIHdoaWNoIHJlZ2lvbnMgaW4gQnJhemlsIHVzZSB3aGljaCB0aW1lIHpvbmVzLCBzZWU6XQojIGh0dHA6Ly9wY2RzaDAxLm9uLmJyL0Z1c2JyLmh0bQojIGh0dHA6Ly9wY2RzaDAxLm9uLmJyL0Z1c2JyaHYuaHRtCgojIEZyb20gQ2Vsc28gRG9yaWEgdmlhIERhdmlkIE1hZGVvICgyMDAyLTEwLTA5KToKIyBUaGUgcmVhc29uIGZvciB0aGUgZGVsYXkgdGhpcyB5ZWFyIGhhcyB0byBkbyB3aXRoIGVsZWN0aW9ucyBpbiBCcmF6aWwuCiMKIyBVbmxpa2UgaW4gdGhlIFVuaXRlZCBTdGF0ZXMsIGVsZWN0aW9ucyBpbiBCcmF6aWwgYXJlIDEwMCUgY29tcHV0ZXJpemVkIGFuZAojIHRoZSByZXN1bHRzIGFyZSBrbm93biBhbG1vc3QgaW1tZWRpYXRlbHkuICBZZXN0ZXJkYXksIGl0IHdhcyB0aGUgZmlyc3QKIyByb3VuZCBvZiB0aGUgZWxlY3Rpb25zIHdoZW4gMTE1IG1pbGxpb24gQnJhemlsaWFucyB2b3RlZCBmb3IgUHJlc2lkZW50LAojIEdvdmVybm9yLCBTZW5hdG9ycywgRmVkZXJhbCBEZXB1dGllcywgYW5kIFN0YXRlIERlcHV0aWVzLiAgTm9ib2R5IGlzCiMgY291bnRpbmcgKG9yIHJlLWNvdW50aW5nKSB2b3RlcyBhbnltb3JlIGFuZCB3ZSBrbm93IHRoZXJlIHdpbGwgYmUgYSBzZWNvbmQKIyByb3VuZCBmb3IgdGhlIFByZXNpZGVuY3kgYW5kIGFsc28gZm9yIHNvbWUgR292ZXJub3JzLiAgVGhlIDJuZCByb3VuZCB3aWxsCiMgdGFrZSBwbGFjZSBvbiBPY3RvYmVyIDI3dGguCiMKIyBUaGUgcmVhc29uIHdoeSB0aGUgRFNUIHdpbGwgb25seSBiZWdpbiBOb3ZlbWJlciAzcmQgaXMgdGhhdCB0aGUgdGhvdXNhbmRzCiMgb2YgZWxlY3RvcmFsIG1hY2hpbmVzIHVzZWQgY2Fubm90IGhhdmUgdGhlaXIgdGltZSBjaGFuZ2VkLCBhbmQgc2luY2UgdGhlCiMgQ29uc3RpdHV0aW9uIHNheXMgdGhlIGVsZWN0aW9ucyBtdXN0IGJlZ2luIGF0IDg6MDAgQU0gYW5kIGVuZCBhdCA1OjAwIFBNLAojIHRoZSBHb3Zlcm5tZW50IGRlY2lkZWQgdG8gcG9zdHBvbmUgRFNULCBpbnN0ZWFkIG9mIGNoYW5naW5nIHRoZSBDb25zdGl0dXRpb24KIyAobWF5YmUsIGZvciB0aGUgbmV4dCBlbGVjdGlvbnMsIGl0IHdpbGwgYmUgcG9zc2libGUgdG8gY2hhbmdlIHRoZSBjbG9jaykuLi4KCiMgRnJvbSBSb2RyaWdvIFNldmVybyAoMjAwNC0xMC0wNCk6CiMgSXQncyBqdXN0IHRoZSBiaWFubnVhbCBjaGFuZ2UgbWFkZSBuZWNlc3NhcnkgYnkgdGhlIG11Y2ggaHlwZWQsIHN1cHBvc2VkbHkKIyBtb2Rlcm4gQnJhemlsaWFuIGVsZXRyb25pYyB2b3RpbmcgbWFjaGluZXMgd2hpY2gsIGFwcGFyZW50bHksIGNhbid0IGRlYWwKIyB3aXRoIGEgdGltZSBjaGFuZ2UgYmV0d2VlbiB0aGUgZmlyc3QgYW5kIHRoZSBzZWNvbmQgcm91bmRzIG9mIHRoZSBlbGVjdGlvbnMuCgojIEZyb20gU3RlZmZlbiBUaG9yc2VuICgyMDA3LTA5LTIwKToKIyBCcmF6aWwgd2lsbCBzdGFydCBEU1Qgb24gMjAwNy0xMC0xNCAwMDowMCBhbmQgZW5kIG9uIDIwMDgtMDItMTcgMDA6MDA6CiMgaHR0cDovL3d3dy5tbWUuZ292LmJyL3NpdGUvbmV3cy9kZXRhaWwuZG87anNlc3Npb25pZD1CQkEwNjgxMUFGQ0FBQzI4RjAyODUyMTA5MTM1MTNEQT9uZXdzSWQ9MTM5NzUKCiMgRnJvbSBQYXVsIFNjaHVsemUgKDIwMDgtMDYtMjQpOgojIC4uLmJ5IGxhdyBudW1iZXIgMTEuNjYyIG9mIEFwcmlsIDI0LCAyMDA4IChwdWJsaXNoZWQgaW4gdGhlICJEaWFyaW8KIyBPZmljaWFsIGRhIFVuaWFvIi4uLikgaW4gQnJhemlsIHRoZXJlIGFyZSBjaGFuZ2VzIGluIHRoZSB0aW1lem9uZXMsCiMgZWZmZWN0aXZlIHRvZGF5ICgwMDowMGFtIGF0IEp1bmUgMjQsIDIwMDgpIGFzIGZvbGxvd3M6CiMKIyBhKSBUaGUgdGltZXpvbmUgVVRDKzUgaXMgZVt4XXRpbmd1aXNoZWQsIHdpdGggYWxsIHRoZSBBY3JlIHN0YXRlIGFuZCB0aGUKIyBwYXJ0IG9mIHRoZSBBbWF6b25hcyBzdGF0ZSB0aGF0IGhhZCB0aGlzIHRpbWV6b25lIG5vdyBiZWluZyBwdXQgdG8gdGhlCiMgdGltZXpvbmUgVVRDKzQKIyBiKSBUaGUgd2hvbGUgUGFyYSBzdGF0ZSBub3cgaXMgcHV0IGF0IHRpbWV6b25lIFVUQyszLCBpbnN0ZWFkIG9mIGp1c3QKIyBwYXJ0IG9mIGl0LCBhcyB3YXMgYmVmb3JlLgojCiMgVGhpcyBjaGFuZ2UgZm9sbG93cyBhIHByb3Bvc2FsIG9mIHNlbmF0b3IgVGlhbyBWaWFuYSBvZiBBY3JlIHN0YXRlLCB0aGF0CiMgcHJvcG9zZWQgaXQgZHVlIHRvIGNvbmNlcm5zIGFib3V0IG9wZW4gdGVsZXZpc2lvbiBjaGFubmVscyBkaXNwbGF5aW5nCiMgcHJvZ3JhbXMgaW5hcHByb3ByaWF0ZSB0byB5b3V0aHMgaW4gdGhlIHN0YXRlcyB0aGF0IGhhZCB0aGUgdGltZXpvbmUKIyBVVEMrNSB0b28gZWFybHkgaW4gdGhlIG5pZ2h0LiBJbiB0aGUgb2NjYXNpb24sIHNvbWUgbW9yZSBjb3JyZWN0aW9ucwojIHdlcmUgcHJvcG9zZWQsIHRyeWluZyB0byB1bmlmeSB0aGUgdGltZXpvbmVzIG9mIGFueSBnaXZlbiBzdGF0ZS4gVGhpcwojIGNoYW5nZSBtb2RpZmllcyB0aW1lem9uZSBydWxlcyBkZWZpbmVkIGluIGRlY3JlZSAyLjc4NCBvZiAxOCBKdW5lLAojIDE5MTMuCgojIEZyb20gUm9kcmlnbyBTZXZlcm8gKDIwMDgtMDYtMjQpOgojIEp1c3QgY29ycmVjdGluZyB0aGUgVVJMOgojIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmluLmdvdi5ici9pbXByZW5zYS92aXN1YWxpemEvaW5kZXguanNwP2pvcm5hbD1kbyZzZWNhbz0xJnBhZ2luYT0xJmRhdGE9MjUvMDQvMjAwOCI+CiMgaHR0cHM6Ly93d3cuaW4uZ292LmJyL2ltcHJlbnNhL3Zpc3VhbGl6YS9pbmRleC5qc3A/am9ybmFsPWRvJnNlY2FvPTEmcGFnaW5hPTEmZGF0YT0yNS8wNC8yMDA4CiMgPC9hPgojCiMgQXMgYSByZXN1bHQgb2YgdGhlIGFib3ZlIERlY3JlZSBJIGJlbGlldmUgdGhlIEFtZXJpY2EvUmlvX0JyYW5jbwojIHRpbWV6b25lIHNoYWxsIGJlIG1vZGlmaWVkIGZyb20gVVRDLTUgdG8gVVRDLTQgYW5kIGEgbmV3IHRpbWV6b25lIHNoYWxsCiMgYmUgY3JlYXRlZCB0byByZXByZXNlbnQgdGhlIHRoZSB3ZXN0IHNpZGUgb2YgdGhlIFBhcmEgU3RhdGUuIEkKIyBzdWdnZXN0IHRoaXMgbmV3IHRpbWV6b25lIGJlIGNhbGxlZCBTYW50YXJlbSBhcyB0aGUgbW9zdAojIGltcG9ydGFudC9wb3B1bGF0ZWQgY2l0eSBpbiB0aGUgYWZmZWN0ZWQgYXJlYS4KIwojIFRoaXMgbmV3IHRpbWV6b25lIHdvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBSaW9fQnJhbmNvIHRpbWV6b25lIHVwIHRvCiMgdGhlIDIwMDgvMDYvMjQgY2hhbmdlIHdoaWNoIHdvdWxkIGJlIHRvIFVUQy0zIGluc3RlYWQgb2YgVVRDLTQuCgojIEZyb20gQWxleCBLcml2ZW55c2hldiAoMjAwOC0wNi0yNCk6CiMgVGhpcyBpcyBhIHF1aWNrIHJlZmVyZW5jZSBwYWdlIGZvciBOZXcgYW5kIE9sZCBCcmF6aWwgVGltZSBab25lcyBtYXAuCiMgPGEgaHJlZj0iaHR0cDovL3d3dy53b3JsZHRpbWV6b25lLmNvbS9icmF6aWwtdGltZS1uZXctb2xkLnBocCI+CiMgaHR0cDovL3d3dy53b3JsZHRpbWV6b25lLmNvbS9icmF6aWwtdGltZS1uZXctb2xkLnBocAojIDwvYT4KIwojIC0gNCB0aW1lIHpvbmVzIHJlcGxhY2VkIGJ5IDMgdGltZSB6b25lcy1lbGltaW5hdGluZyB0aW1lIHpvbmUgVVRDLSAwNQojIChzdGF0ZSBBY3JlIGFuZCB0aGUgcGFydCBvZiB0aGUgQW1hem9uYXMgd2lsbCBiZSBVVEMvR01ULSAwNCkgLSB3ZXN0ZXJuCiMgcGFydCBvZiBQYXIgc3RhdGUgaXMgbW92aW5nIHRvIG9uZSB0aW1lem9uZSBVVEMtIDAzIChmcm9tIFVUQyAtMDQpLgoKIyBGcm9tIFBhdWwgRWdnZXJ0ICgyMDAyLTEwLTEwKToKIyBUaGUgb2ZmaWNpYWwgZGVjcmVlcyByZWZlcmVuY2VkIGJlbG93IGFyZSBtb3N0bHkgdGFrZW4gZnJvbQojIDxhIGhyZWY9Imh0dHA6Ly9wY2RzaDAxLm9uLmJyL0RlY0hWLmh0bWwiPgojIERlY3JldG9zIHNvYnJlIG8gSG9yYXJpbyBkZSBWZXJhbyBubyBCcmFzaWwKIyA8L2E+LgoKIyBGcm9tIFN0ZWZmZW4gVGhvcnNlbiAoMjAwOC0wOC0yOSk6CiMgQXMgYW5ub3VuY2VkIGJ5IHRoZSBnb3Zlcm5tZW50IGFuZCBtYW55IG5ld3NwYXBlcnMgaW4gQnJhemlsIGxhdGUKIyB5ZXN0ZXJkYXksIEJyYXppbCB3aWxsIHN0YXJ0IERTVCBvbiAyMDA4LTEwLTE5IChuZWVkIHRvIGNoYW5nZSBydWxlKSBhbmQKIyBpdCB3aWxsIGVuZCBvbiAyMDA5LTAyLTE1IChjdXJyZW50IHJ1bGUgZm9yIEJyYXppbCBpcyBmaW5lKS4gQmFzZWQgb24KIyBwYXN0IHllYXJzIGV4cGVyaWVuY2Ugd2l0aCB0aGUgZWxlY3Rpb25zLCB0aGVyZSB3YXMgYSBnb29kIGNoYW5jZSB0aGF0CiMgdGhlIHN0YXJ0IHdhcyBwb3N0cG9uZWQgdG8gTm92ZW1iZXIsIGJ1dCBpdCBkaWQgbm90IGhhcHBlbiB0aGlzIHllYXIuCiMKIyBJdCBoYXMgbm90IHlldCBiZWVuIHBvc3RlZCB0byBodHRwOi8vcGNkc2gwMS5vbi5ici9EZWNIVi5odG1sCiMKIyBBbiBvZmZpY2lhbCBwYWdlIGFib3V0IGl0OgojIDxhIGhyZWY9Imh0dHA6Ly93d3cubW1lLmdvdi5ici9zaXRlL25ld3MvZGV0YWlsLmRvP25ld3NJZD0xNjcyMiI+CiMgaHR0cDovL3d3dy5tbWUuZ292LmJyL3NpdGUvbmV3cy9kZXRhaWwuZG8/bmV3c0lkPTE2NzIyCiMgPC9hPgojIE5vdGUgdGhhdCB0aGlzIGxpbmsgZG9lcyBub3QgYWx3YXlzIHdvcmsgZGlyZWN0bHksIGJ1dCBtdXN0IGJlIGFjY2Vzc2VkCiMgYnkgZ29pbmcgdG8KIyA8YSBocmVmPSJodHRwOi8vd3d3Lm1tZS5nb3YuYnIvZmlyc3QiPgojIGh0dHA6Ly93d3cubW1lLmdvdi5ici9maXJzdAojIDwvYT4KIwojIE9uZSBleGFtcGxlIGxpbmsgdGhhdCB3b3JrcyBkaXJlY3RseToKIyA8YSBocmVmPSJodHRwOi8vam9ybmFsZS5jb20uYnIvaW5kZXgucGhwP29wdGlvbj1jb21fY29udGVudCZ0YXNrPXZpZXcmaWQ9MTM1MzAmSXRlbWlkPTU0Ij4KIyBodHRwOi8vam9ybmFsZS5jb20uYnIvaW5kZXgucGhwP29wdGlvbj1jb21fY29udGVudCZ0YXNrPXZpZXcmaWQ9MTM1MzAmSXRlbWlkPTU0CiMgKFBvcnR1Z3Vlc2UpCiMgPC9hPgojCiMgV2UgaGF2ZSBhIHdyaXR0ZW4gYSBzaG9ydCBhcnRpY2xlIGFib3V0IGl0IGFzIHdlbGw6CiMgPGEgaHJlZj0iaHR0cDovL3d3dy50aW1lYW5kZGF0ZS5jb20vbmV3cy90aW1lL2JyYXppbC1kc3QtMjAwOC0yMDA5Lmh0bWwiPgojIGh0dHA6Ly93d3cudGltZWFuZGRhdGUuY29tL25ld3MvdGltZS9icmF6aWwtZHN0LTIwMDgtMjAwOS5odG1sCiMgPC9hPgoKIyBSdWxlCU5BTUUJRlJPTQlUTwlUWVBFCUlOCU9OCUFUCVNBVkUJTEVUVEVSL1MKIyBEZWNyZWUgPGEgaHJlZj0iaHR0cDovL3BjZHNoMDEub24uYnIvSFYyMDQ2Ni5odG0iPjIwLDQ2NjwvYT4gKDE5MzEtMTAtMDEpCiMgRGVjcmVlIDxhIGhyZWY9Imh0dHA6Ly9wY2RzaDAxLm9uLmJyL0hWMjE4OTYuaHRtIj4yMSw4OTY8L2E+ICgxOTMyLTAxLTEwKQpSdWxlCUJyYXppbAkxOTMxCW9ubHkJLQlPY3QJIDMJMTE6MDAJMTowMAlTClJ1bGUJQnJhemlsCTE5MzIJMTkzMwktCUFwcgkgMQkgMDowMAkwCS0KUnVsZQlCcmF6aWwJMTkzMglvbmx5CS0JT2N0CSAzCSAwOjAwCTE6MDAJUwojIERlY3JlZSA8YSBocmVmPSJodHRwOi8vcGNkc2gwMS5vbi5ici9IVjIzMTk1Lmh0bSI+MjMsMTk1PC9hPiAoMTkzMy0xMC0xMCkKIyByZXZva2VkIERTVC4KIyBEZWNyZWUgPGEgaHJlZj0iaHR0cDovL3BjZHNoMDEub24uYnIvSFYyNzQ5Ni5odG0iPjI3LDQ5NjwvYT4gKDE5NDktMTEtMjQpCiMgRGVjcmVlIDxhIGhyZWY9Imh0dHA6Ly9wY2RzaDAxLm9uLmJyL0hWMjc5OTguaHRtIj4yNyw5OTg8L2E+ICgxOTUwLTA0LTEzKQpSdWxlCUJyYXppbAkxOTQ5CTE5NTIJLQlEZWMJIDEJIDA6MDAJMTowMAlTClJ1bGUJQnJhemlsCTE5NTAJb25seQktCUFwcgkxNgkgMTowMAkwCS0KUnVsZQlCcmF6aWwJMTk1MQkxOTUyCS0JQXByCSAxCSAwOjAwCTAJLQojIERlY3JlZSA8YSBocmVmPSJodHRwOi8vcGNkc2gwMS5vbi5ici9IVjMyMzA4Lmh0bSI+MzIsMzA4PC9hPiAoMTk1My0wMi0yNCkKUnVsZQlCcmF6aWwJMTk1Mwlvbmx5CS0JTWFyCSAxCSAwOjAwCTAJLQojIERlY3JlZSA8YSBocmVmPSJodHRwOi8vcGNkc2gwMS5vbi5ici9IVjM0NzI0Lmh0bSI+MzQsNzI0PC9hPiAoMTk1My0xMS0zMCkKIyByZXZva2VkIERTVC4KIyBEZWNyZWUgPGEgaHJlZj0iaHR0cDovL3BjZHNoMDEub24uYnIvSFY1MjcwMC5odG0iPjUyLDcwMDwvYT4gKDE5NjMtMTAtMTgpCiMgZXN0YWJsaXNoZWQgRFNUIGZyb20gMTk2My0xMC0yMyAwMDowMCB0byAxOTY0LTAyLTI5IDAwOjAwCiMgaW4gU1AsIFJKLCBHQiwgTUcsIEVTLCBkdWUgdG8gdGhlIHByb2xvbmdhdGlvbiBvZiB0aGUgZHJvdWdodC4KIyBEZWNyZWUgPGEgaHJlZj0iaHR0cDovL3BjZHNoMDEub24uYnIvSFY1MzA3MS5odG0iPjUzLDA3MTwvYT4gKDE5NjMtMTItMDMpCiMgZXh0ZW5kZWQgdGhlIGFib3ZlIGRlY3JlZSB0byBhbGwgb2YgdGhlIG5hdGlvbmFsIHRlcnJpdG9yeSBvbiAxMi0wOS4KUnVsZQlCcmF6aWwJMTk2Mwlvbmx5CS0JRGVjCSA5CSAwOjAwCTE6MDAJUwojIERlY3JlZSA8YSBocmVmPSJodHRwOi8vcGNkc2gwMS5vbi5ici9IVjUzNjA0Lmh0bSI+NTMsNjA0PC9hPiAoMTk2NC0wMi0yNSkKIyBleHRlbmRlZCBzdW1tZXIgdGltZSBieSBvbmUgZGF5IHRvIDE5NjQtMDMtMDEgMDA6MDAgKHN0YXJ0IG9mIHNjaG9vbCkuClJ1bGUJQnJhemlsCTE5NjQJb25seQktCU1hcgkgMQkgMDowMAkwCS0KIyBEZWNyZWUgPGEgaHJlZj0iaHR0cDovL3BjZHNoMDEub24uYnIvSFY1NTYzOS5odG0iPjU1LDYzOTwvYT4gKDE5NjUtMDEtMjcpClJ1bGUJQnJhemlsCTE5NjUJb25seQktCUphbgkzMQkgMDowMAkxOjAwCVMKUnVsZQlCcmF6aWwJMTk2NQlvbmx5CS0JTWFyCTMxCSAwOjAwCTAJLQojIERlY3JlZSA8YSBocmVmPSJodHRwOi8vcGNkc2gwMS5vbi5ici9IVjU3MzAzLmh0bSI+NTcsMzAzPC9hPiAoMTk2NS0xMS0yMikKUnVsZQlCcmF6aWwJMTk2NQlvbmx5CS0JRGVjCSAxCSAwOjAwCTE6MDAJUwojIERlY3JlZSA8YSBocmVmPSJodHRwOi8vcGNkc2gwMS5vbi5ici9IVjU3ODQzLmh0bSI+NTcsODQzPC9hPiAoMTk2Ni0wMi0xOCkKUnVsZQlCcmF6aWwJMTk2NgkxOTY4CS0JTWFyCSAxCSAwOjAwCTAJLQpSdWxlCUJyYXppbAkxOTY2CTE5NjcJLQlOb3YJIDEJIDA6MDAJMTowMAlTCiMgRGVjcmVlIDxhIGhyZWY9Imh0dHA6Ly9wY2RzaDAxLm9uLmJyL0hWNjM0MjkuaHRtIj42Myw0Mjk8L2E+ICgxOTY4LTEwLTE1KQojIHJldm9rZWQgRFNULgojIERlY3JlZSA8YSBocmVmPSJodHRwOi8vcGNkc2gwMS5vbi5ici9IVjkxNjk4Lmh0bSI+OTEsNjk4PC9hPiAoMTk4NS0wOS0yNykKUnVsZQlCcmF6aWwJMTk4NQlvbmx5CS0JTm92CSAyCSAwOjAwCTE6MDAJUwojIERlY3JlZSA5MiwzMTAgKDE5ODYtMDEtMjEpCiMgRGVjcmVlIDkyLDQ2MyAoMTk4Ni0wMy0xMykKUnVsZQlCcmF6aWwJMTk4Nglvbmx5CS0JTWFyCTE1CSAwOjAwCTAJLQojIERlY3JlZSA5MywzMTYgKDE5ODYtMTAtMDEpClJ1bGUJQnJhemlsCTE5ODYJb25seQktCU9jdAkyNQkgMDowMAkxOjAwCVMKUnVsZQlCcmF6aWwJMTk4Nwlvbmx5CS0JRmViCTE0CSAwOjAwCTAJLQojIERlY3JlZSA8YSBocmVmPSJodHRwOi8vcGNkc2gwMS5vbi5ici9IVjk0OTIyLmh0bSI+OTQsOTIyPC9hPiAoMTk4Ny0wOS0yMikKUnVsZQlCcmF6aWwJMTk4Nwlvbmx5CS0JT2N0CTI1CSAwOjAwCTE6MDAJUwpSdWxlCUJyYXppbAkxOTg4CW9ubHkJLQlGZWIJIDcJIDA6MDAJMAktCiMgRGVjcmVlIDxhIGhyZWY9Imh0dHA6Ly9wY2RzaDAxLm9uLmJyL0hWOTY2NzYuaHRtIj45Niw2NzY8L2E+ICgxOTg4LTA5LTEyKQojIGV4Y2VwdCBmb3IgdGhlIHN0YXRlcyBvZiBBQywgQU0sIFBBLCBSUiwgUk8sIGFuZCBBUCAodGhlbiBhIHRlcnJpdG9yeSkKUnVsZQlCcmF6aWwJMTk4OAlvbmx5CS0JT2N0CTE2CSAwOjAwCTE6MDAJUwpSdWxlCUJyYXppbAkxOTg5CW9ubHkJLQlKYW4JMjkJIDA6MDAJMAktCiMgRGVjcmVlIDxhIGhyZWY9Imh0dHA6Ly9wY2RzaDAxLm9uLmJyL0hWOTgwNzcuaHRtIj45OCwwNzc8L2E+ICgxOTg5LTA4LTIxKQojIHdpdGggdGhlIHNhbWUgZXhjZXB0aW9ucwpSdWxlCUJyYXppbAkxOTg5CW9ubHkJLQlPY3QJMTUJIDA6MDAJMTowMAlTClJ1bGUJQnJhemlsCTE5OTAJb25seQktCUZlYgkxMQkgMDowMAkwCS0KIyBEZWNyZWUgPGEgaHJlZj0iaHR0cDovL3BjZHNoMDEub24uYnIvSFY5OTUzMC5odG0iPjk5LDUzMDwvYT4gKDE5OTAtMDktMTcpCiMgYWRvcHRlZCBieSBSUywgU0MsIFBSLCBTUCwgUkosIEVTLCBNRywgR08sIE1TLCBERi4KIyBEZWNyZWUgOTksNjI5ICgxOTkwLTEwLTE5KSBhZGRzIEJBLCBNVC4KUnVsZQlCcmF6aWwJMTk5MAlvbmx5CS0JT2N0CTIxCSAwOjAwCTE6MDAJUwpSdWxlCUJyYXppbAkxOTkxCW9ubHkJLQlGZWIJMTcJIDA6MDAJMAktCiMgPGEgaHJlZj0iaHR0cDovL3BjZHNoMDEub24uYnIvSFYxOTkxLmh0bSI+VW5udW1iZXJlZCBkZWNyZWU8L2E+ICgxOTkxLTA5LTI1KQojIGFkb3B0ZWQgYnkgUlMsIFNDLCBQUiwgU1AsIFJKLCBFUywgTUcsIEJBLCBHTywgTVQsIE1TLCBERi4KUnVsZQlCcmF6aWwJMTk5MQlvbmx5CS0JT2N0CTIwCSAwOjAwCTE6MDAJUwpSdWxlCUJyYXppbAkxOTkyCW9ubHkJLQlGZWIJIDkJIDA6MDAJMAktCiMgPGEgaHJlZj0iaHR0cDovL3BjZHNoMDEub24uYnIvSFYxOTkyLmh0bSI+VW5udW1iZXJlZCBkZWNyZWU8L2E+ICgxOTkyLTEwLTE2KQojIGFkb3B0ZWQgYnkgc2FtZSBzdGF0ZXMuClJ1bGUJQnJhemlsCTE5OTIJb25seQktCU9jdAkyNQkgMDowMAkxOjAwCVMKUnVsZQlCcmF6aWwJMTk5Mwlvbmx5CS0JSmFuCTMxCSAwOjAwCTAJLQojIERlY3JlZSA8YSBocmVmPSJodHRwOi8vcGNkc2gwMS5vbi5ici9IVjk0Mi5odG0iPjk0MjwvYT4gKDE5OTMtMDktMjgpCiMgYWRvcHRlZCBieSBzYW1lIHN0YXRlcywgcGx1cyBBTS4KIyBEZWNyZWUgPGEgaHJlZj0iaHR0cDovL3BjZHNoMDEub24uYnIvSFYxMjUyLmh0bSI+MSwyNTI8L2E+ICgxOTk0LTA5LTIyOwojIHdlYiBwYWdlIGNvcnJlY3RlZCAyMDA0LTAxLTA3KSBhZG9wdGVkIGJ5IHNhbWUgc3RhdGVzLCBtaW51cyBBTS4KIyBEZWNyZWUgPGEgaHJlZj0iaHR0cDovL3BjZHNoMDEub24uYnIvSFYxNjM2Lmh0bSI+MSw2MzY8L2E+ICgxOTk1LTA5LTE0KQojIGFkb3B0ZWQgYnkgc2FtZSBzdGF0ZXMsIHBsdXMgTVQgYW5kIFRPLgojIERlY3JlZSA8YSBocmVmPSJodHRwOi8vcGNkc2gwMS5vbi5ici9IVjE2NzQuaHRtIj4xLDY3NDwvYT4gKDE5OTUtMTAtMTMpCiMgYWRkcyBBTCwgU0UuClJ1bGUJQnJhemlsCTE5OTMJMTk5NQktCU9jdAlTdW4+PTExCSAwOjAwCTE6MDAJUwpSdWxlCUJyYXppbAkxOTk0CTE5OTUJLQlGZWIJU3VuPj0xNQkgMDowMAkwCS0KUnVsZQlCcmF6aWwJMTk5Nglvbmx5CS0JRmViCTExCSAwOjAwCTAJLQojIERlY3JlZSA8YSBocmVmPSJodHRwOi8vcGNkc2gwMS5vbi5ici9IVjIwMDAuaHRtIj4yLDAwMDwvYT4gKDE5OTYtMDktMDQpCiMgYWRvcHRlZCBieSBzYW1lIHN0YXRlcywgbWludXMgQUwsIFNFLgpSdWxlCUJyYXppbAkxOTk2CW9ubHkJLQlPY3QJIDYJIDA6MDAJMTowMAlTClJ1bGUJQnJhemlsCTE5OTcJb25seQktCUZlYgkxNgkgMDowMAkwCS0KIyBGcm9tIERhbmllbCBDLiBTb2JyYWwgKDE5OTgtMDItMTIpOgojIEluIDE5OTcsIHRoZSBEUyBiZWdhbiBvbiBPY3RvYmVyIDYuIFRoZSBzdGF0ZWQgcmVhc29uIHdhcyB0aGF0CiMgYmVjYXVzZSBpbnRlcm5hdGlvbmFsIHRlbGV2aXNpb24gbmV0d29ya3MgaWdub3JlZCBCcmF6aWwncyBwb2xpY3kgb24gRFMsCiMgdGhleSBib3VnaHQgdGhlIHdyb25nIHRpbWVzIG9uIHNhdGVsbGl0ZSBmb3IgY292ZXJhZ2Ugb2YgUG9wZSdzIHZpc2l0LgojIFRoaXMgeWVhciwgdGhlIGVuZGluZyBkYXRlIG9mIERTIHdhcyBwb3N0cG9uZWQgdG8gTWFyY2ggMQojIHRvIGhlbHAgZGVhbGluZyB3aXRoIHRoZSBzaG9ydGFnZXMgb2YgZWxlY3RyaWMgcG93ZXIuCiMKIyBEZWNyZWUgMiwzMTcgKDE5OTctMDktMDQpLCBhZG9wdGVkIGJ5IHNhbWUgc3RhdGVzLgpSdWxlCUJyYXppbAkxOTk3CW9ubHkJLQlPY3QJIDYJIDA6MDAJMTowMAlTCiMgRGVjcmVlIDxhIGhyZWY9Imh0dHA6Ly9wY2RzaDAxLm9uLmJyL2ZpZ3VyYXMvSFYyNDk1LkpQRyI+Miw0OTU8L2E+CiMgKDE5OTgtMDItMTApClJ1bGUJQnJhemlsCTE5OTgJb25seQktCU1hcgkgMQkgMDowMAkwCS0KIyBEZWNyZWUgPGEgaHJlZj0iaHR0cDovL3BjZHNoMDEub24uYnIvZmlndXJhcy9Idjk4LmpwZyI+Miw3ODA8L2E+ICgxOTk4LTA5LTExKQojIGFkb3B0ZWQgYnkgdGhlIHNhbWUgc3RhdGVzIGFzIGJlZm9yZS4KUnVsZQlCcmF6aWwJMTk5OAlvbmx5CS0JT2N0CTExCSAwOjAwCTE6MDAJUwpSdWxlCUJyYXppbAkxOTk5CW9ubHkJLQlGZWIJMjEJIDA6MDAJMAktCiMgRGVjcmVlIDxhIGhyZWY9Imh0dHA6Ly9wY2RzaDAxLm9uLmJyL2ZpZ3VyYXMvSFYzMTUwLmdpZiI+MywxNTA8L2E+CiMgKDE5OTktMDgtMjMpIGFkb3B0ZWQgYnkgc2FtZSBzdGF0ZXMuCiMgRGVjcmVlIDxhIGhyZWY9Imh0dHA6Ly9wY2RzaDAxLm9uLmJyL0RlY0hWOTkuZ2lmIj4zLDE4ODwvYT4gKDE5OTktMDktMzApCiMgYWRkcyBTRSwgQUwsIFBCLCBQRSwgUk4sIENFLCBQSSwgTUEgYW5kIFJSLgpSdWxlCUJyYXppbAkxOTk5CW9ubHkJLQlPY3QJIDMJIDA6MDAJMTowMAlTClJ1bGUJQnJhemlsCTIwMDAJb25seQktCUZlYgkyNwkgMDowMAkwCS0KIyBEZWNyZWUgPGEgaHJlZj0iaHR0cDovL3BjZHNoMDEub24uYnIvREVDMzU5Mi5odG0iPjMsNTkyPC9hPiAoMjAwMC0wOS0wNikKIyBhZG9wdGVkIGJ5IHRoZSBzYW1lIHN0YXRlcyBhcyBiZWZvcmUuCiMgRGVjcmVlIDxhIGhyZWY9Imh0dHA6Ly9wY2RzaDAxLm9uLmJyL0RlYzM2MzAuanBnIj4zLDYzMDwvYT4gKDIwMDAtMTAtMTMpCiMgcmVwZWFscyBEU1QgaW4gUEUgYW5kIFJSLCBlZmZlY3RpdmUgMjAwMC0xMC0xNSAwMDowMC4KIyBEZWNyZWUgPGEgaHJlZj0iaHR0cDovL3BjZHNoMDEub24uYnIvRGVjMzYzMi5qcGciPjMsNjMyPC9hPiAoMjAwMC0xMC0xNykKIyByZXBlYWxzIERTVCBpbiBTRSwgQUwsIFBCLCBSTiwgQ0UsIFBJIGFuZCBNQSwgZWZmZWN0aXZlIDIwMDAtMTAtMjIgMDA6MDAuCiMgRGVjcmVlIDxhIGhyZWY9Imh0dHA6Ly9wY2RzaDAxLm9uLmJyL2ZpZ3VyYXMvSFYzOTE2LmdpZiI+Myw5MTY8L2E+CiMgKDIwMDEtMDktMTMpIHJlZXN0YWJsaXNoZXMgRFNUIGluIEFMLCBDRSwgTUEsIFBCLCBQRSwgUEksIFJOLCBTRS4KUnVsZQlCcmF6aWwJMjAwMAkyMDAxCS0JT2N0CVN1bj49OAkgMDowMAkxOjAwCVMKUnVsZQlCcmF6aWwJMjAwMQkyMDA2CS0JRmViCVN1bj49MTUJIDA6MDAJMAktCiMgRGVjcmVlIDQsMzk5ICgyMDAyLTEwLTAxKSByZXBlYWxzIERTVCBpbiBBTCwgQ0UsIE1BLCBQQiwgUEUsIFBJLCBSTiwgU0UuCiMgPGEgaHJlZj0iaHR0cDovL3d3dy5wcmVzaWRlbmNpYS5nb3YuYnIvQ0NJVklML2RlY3JldG8vMjAwMi9ENDM5OS5odG0iPjQsMzk5PC9hPgpSdWxlCUJyYXppbAkyMDAyCW9ubHkJLQlOb3YJIDMJIDA6MDAJMTowMAlTCiMgRGVjcmVlIDQsODQ0ICgyMDAzLTA5LTI0OyBjb3JyZWN0ZWQgMjAwMy0wOS0yNikgcmVwZWFscyBEU1QgaW4gQkEsIE1ULCBUTy4KIyA8YSBocmVmPSJodHRwOi8vd3d3LnByZXNpZGVuY2lhLmdvdi5ici9DQ0lWSUwvZGVjcmV0by8yMDAzL0Q0ODQ0Lmh0bSI+NCw4NDQ8L2E+ClJ1bGUJQnJhemlsCTIwMDMJb25seQktCU9jdAkxOQkgMDowMAkxOjAwCVMKIyBEZWNyZWUgNSwyMjMgKDIwMDQtMTAtMDEpIHJlZXN0YWJsaXNoZXMgRFNUIGluIE1ULgojIDxhIGhyZWY9Imh0dHA6Ly93d3cucGxhbmFsdG8uZ292LmJyL2NjaXZpbF8wMy9fQXRvMjAwNC0yMDA2LzIwMDQvRGVjcmV0by9ENTIyMy5odG0iPjUsMjIzPC9hPgpSdWxlCUJyYXppbAkyMDA0CW9ubHkJLQlOb3YJIDIJIDA6MDAJMTowMAlTCiMgRGVjcmVlIDxhIGhyZWY9Imh0dHA6Ly9wY2RzaDAxLm9uLmJyL0RlY0hWNTUzOS5naWYiPjUsNTM5PC9hPiAoMjAwNS0wOS0xOSksCiMgYWRvcHRlZCBieSB0aGUgc2FtZSBzdGF0ZXMgYXMgYmVmb3JlLgpSdWxlCUJyYXppbAkyMDA1CW9ubHkJLQlPY3QJMTYJIDA6MDAJMTowMAlTCiMgRGVjcmVlIDxhIGhyZWY9Imh0dHA6Ly9wY2RzaDAxLm9uLmJyL0RlY0hWNTkyMC5naWYiPjUsOTIwPC9hPiAoMjAwNi0xMC0wMyksCiMgYWRvcHRlZCBieSB0aGUgc2FtZSBzdGF0ZXMgYXMgYmVmb3JlLgpSdWxlCUJyYXppbAkyMDA2CW9ubHkJLQlOb3YJIDUJIDA6MDAJMTowMAlTClJ1bGUJQnJhemlsCTIwMDcJb25seQktCUZlYgkyNQkgMDowMAkwCS0KIyBEZWNyZWUgPGEgaHJlZj0iaHR0cDovL3BjZHNoMDEub24uYnIvRGVjSFY2MjEyLmdpZiI+NiwyMTI8L2E+ICgyMDA3LTA5LTI2KSwKIyBhZG9wdGVkIGJ5IHRoZSBzYW1lIHN0YXRlcyBhcyBiZWZvcmUuClJ1bGUJQnJhemlsCTIwMDcJb25seQktCU9jdAlTdW4+PTgJIDA6MDAJMTowMAlTCiMgRnJvbSBGcmVkZXJpY28gQS4gQy4gTmV2ZXMgKDIwMDgtMDktMTApOgojIEFjb3JkaW5nIHRvIHRoaXMgZGVjcmVlCiMgPGEgaHJlZj0iaHR0cDovL3d3dy5wbGFuYWx0by5nb3YuYnIvY2NpdmlsXzAzL19BdG8yMDA3LTIwMTAvMjAwOC9EZWNyZXRvL0Q2NTU4Lmh0bSI+CiMgaHR0cDovL3d3dy5wbGFuYWx0by5nb3YuYnIvY2NpdmlsXzAzL19BdG8yMDA3LTIwMTAvMjAwOC9EZWNyZXRvL0Q2NTU4Lmh0bQojIDwvYT4KIyBbdF1oZSBEU1QgcGVyaW9kIGluIEJyYXppbCBub3cgb24gd2lsbCBiZSBmcm9tIHRoZSAzcmQgT2N0IFN1bmRheSB0byB0aGUKIyAzcmQgRmViIFN1bmRheS4gVGhlcmUgaXMgYW4gZXhjZXB0aW9uIG9uIHRoZSByZXR1cm4gZGF0ZSB3aGVuIHRoaXMgaXMKIyB0aGUgQ2Fybml2YWwgU3VuZGF5IHRoZW4gdGhlIHJldHVybiBkYXRlIHdpbGwgYmUgdGhlIG5leHQgU3VuZGF5Li4uClJ1bGUJQnJhemlsCTIwMDgJbWF4CS0JT2N0CVN1bj49MTUJMDowMAkxOjAwCVMKUnVsZQlCcmF6aWwJMjAwOAkyMDExCS0JRmViCVN1bj49MTUJMDowMAkwCS0KUnVsZQlCcmF6aWwJMjAxMglvbmx5CS0JRmViCVN1bj49MjIJMDowMAkwCS0KUnVsZQlCcmF6aWwJMjAxMwkyMDE0CS0JRmViCVN1bj49MTUJMDowMAkwCS0KUnVsZQlCcmF6aWwJMjAxNQlvbmx5CS0JRmViCVN1bj49MjIJMDowMAkwCS0KUnVsZQlCcmF6aWwJMjAxNgkyMDIyCS0JRmViCVN1bj49MTUJMDowMAkwCS0KUnVsZQlCcmF6aWwJMjAyMwlvbmx5CS0JRmViCVN1bj49MjIJMDowMAkwCS0KUnVsZQlCcmF6aWwJMjAyNAkyMDI1CS0JRmViCVN1bj49MTUJMDowMAkwCS0KUnVsZQlCcmF6aWwJMjAyNglvbmx5CS0JRmViCVN1bj49MjIJMDowMAkwCS0KUnVsZQlCcmF6aWwJMjAyNwkyMDMzCS0JRmViCVN1bj49MTUJMDowMAkwCS0KUnVsZQlCcmF6aWwJMjAzNAlvbmx5CS0JRmViCVN1bj49MjIJMDowMAkwCS0KUnVsZQlCcmF6aWwJMjAzNQkyMDM2CS0JRmViCVN1bj49MTUJMDowMAkwCS0KUnVsZQlCcmF6aWwJMjAzNwlvbmx5CS0JRmViCVN1bj49MjIJMDowMAkwCS0KIyBGcm9tIEFydGh1ciBEYXZpZCBPbHNvbiAoMjAwOC0wOS0yOSk6CiMgVGhlIG5leHQgaXMgd3JvbmcgaW4gc29tZSB5ZWFycyBidXQgaXMgYmV0dGVyIHRoYW4gbm90aGluZy4KUnVsZQlCcmF6aWwJMjAzOAltYXgJLQlGZWIJU3VuPj0xNQkwOjAwCTAJLQoKIyBUaGUgbGF0ZXN0IHJ1bGVzZXQgbGlzdGVkIGFib3ZlIHNheXMgdGhhdCB0aGUgZm9sbG93aW5nIHN0YXRlcyBvYnNlcnZlIERTVDoKIyBERiwgRVMsIEdPLCBNRywgTVMsIE1ULCBQUiwgUkosIFJTLCBTQywgU1AuCgojIFpvbmUJTkFNRQkJR01UT0ZGCVJVTEVTCUZPUk1BVAlbVU5USUxdCiMKIyBGZXJuYW5kbyBkZSBOb3JvbmhhIChhZG1pbmlzdHJhdGl2ZWx5IHBhcnQgb2YgUEUpClpvbmUgQW1lcmljYS9Ob3JvbmhhCS0yOjA5OjQwIC0JTE1UCTE5MTQKCQkJLTI6MDAJQnJhemlsCUZOJXNUCTE5OTAgU2VwIDE3CgkJCS0yOjAwCS0JRk5UCTE5OTkgU2VwIDMwCgkJCS0yOjAwCUJyYXppbAlGTiVzVAkyMDAwIE9jdCAxNQoJCQktMjowMAktCUZOVAkyMDAxIFNlcCAxMwoJCQktMjowMAlCcmF6aWwJRk4lc1QJMjAwMiBPY3QgIDEKCQkJLTI6MDAJLQlGTlQKIyBPdGhlciBBdGxhbnRpYyBpc2xhbmRzIGhhdmUgbm8gcGVybWFuZW50IHNldHRsZW1lbnQuCiMgVGhlc2UgaW5jbHVkZSBUcmluZGFkZSBhbmQgTWFydGluIFZheiAoYWRtaW5pc3RyYXRpdmVseSBwYXJ0IG9mIEVTKSwKIyBBdG9sIGRhcyBSb2NhcyAoUk4pLCBhbmQgUGVuZWRvcyBkZSBTYW8gUGVkcm8gZSBTYW8gUGF1bG8gKFBFKS4KIyBGZXJuYW5kbyBkZSBOb3JvbmhhIHdhcyBhIHNlcGFyYXRlIHRlcnJpdG9yeSBmcm9tIDE5NDItMDktMDIgdG8gMTk4OS0wMS0wMTsKIyBpdCBhbHNvIGluY2x1ZGVkIHRoZSBQZW5lZG9zLgojCiMgQW1hcGEgKEFQKSwgZWFzdCBQYXJhIChQQSkKIyBFYXN0IFBhcmEgaW5jbHVkZXMgQmVsZW0sIE1hcmFiYSwgU2VycmEgTm9ydGUsIGFuZCBTYW8gRmVsaXggZG8gWGluZ3UuCiMgVGhlIGRpdmlzaW9uIGJldHdlZW4gZWFzdCBhbmQgd2VzdCBQYXJhIGlzIHRoZSByaXZlciBYaW5ndS4KIyBJbiB0aGUgbm9ydGggYSB2ZXJ5IHNtYWxsIHBhcnQgZnJvbSB0aGUgcml2ZXIgSmF2YXJ5IChub3cgSmFyaSBJIGd1ZXNzLAojIHRoZSBib3JkZXIgd2l0aCBBbWFwYSkgdG8gdGhlIEFtYXpvbiwgdGhlbiB0byB0aGUgWGluZ3UuClpvbmUgQW1lcmljYS9CZWxlbQktMzoxMzo1NiAtCUxNVAkxOTE0CgkJCS0zOjAwCUJyYXppbAlCUiVzVAkxOTg4IFNlcCAxMgoJCQktMzowMAktCUJSVAojCiMgd2VzdCBQYXJhIChQQSkKIyBXZXN0IFBhcmEgaW5jbHVkZXMgQWx0YW1pcmEsIE9yaWJpZG9zLCBQcmFpbmhhLCBPcml4aW1pbmEsIGFuZCBTYW50YXJlbS4KWm9uZSBBbWVyaWNhL1NhbnRhcmVtCS0zOjM4OjQ4IC0JTE1UCTE5MTQKCQkJLTQ6MDAJQnJhemlsCUFNJXNUCTE5ODggU2VwIDEyCgkJCS00OjAwCS0JQU1UCTIwMDggSnVuIDI0IDAwOjAwCgkJCS0zOjAwCS0JQlJUCiMKIyBNYXJhbmhhbyAoTUEpLCBQaWF1aSAoUEkpLCBDZWFyYSAoQ0UpLCBSaW8gR3JhbmRlIGRvIE5vcnRlIChSTiksCiMgUGFyYWliYSAoUEIpClpvbmUgQW1lcmljYS9Gb3J0YWxlemEJLTI6MzQ6MDAgLQlMTVQJMTkxNAoJCQktMzowMAlCcmF6aWwJQlIlc1QJMTk5MCBTZXAgMTcKCQkJLTM6MDAJLQlCUlQJMTk5OSBTZXAgMzAKCQkJLTM6MDAJQnJhemlsCUJSJXNUCTIwMDAgT2N0IDIyCgkJCS0zOjAwCS0JQlJUCTIwMDEgU2VwIDEzCgkJCS0zOjAwCUJyYXppbAlCUiVzVAkyMDAyIE9jdCAgMQoJCQktMzowMAktCUJSVAojCiMgUGVybmFtYnVjbyAoUEUpIChleGNlcHQgQXRsYW50aWMgaXNsYW5kcykKWm9uZSBBbWVyaWNhL1JlY2lmZQktMjoxOTozNiAtCUxNVAkxOTE0CgkJCS0zOjAwCUJyYXppbAlCUiVzVAkxOTkwIFNlcCAxNwoJCQktMzowMAktCUJSVAkxOTk5IFNlcCAzMAoJCQktMzowMAlCcmF6aWwJQlIlc1QJMjAwMCBPY3QgMTUKCQkJLTM6MDAJLQlCUlQJMjAwMSBTZXAgMTMKCQkJLTM6MDAJQnJhemlsCUJSJXNUCTIwMDIgT2N0ICAxCgkJCS0zOjAwCS0JQlJUCiMKIyBUb2NhbnRpbnMgKFRPKQpab25lIEFtZXJpY2EvQXJhZ3VhaW5hCS0zOjEyOjQ4IC0JTE1UCTE5MTQKCQkJLTM6MDAJQnJhemlsCUJSJXNUCTE5OTAgU2VwIDE3CgkJCS0zOjAwCS0JQlJUCTE5OTUgU2VwIDE0CgkJCS0zOjAwCUJyYXppbAlCUiVzVAkyMDAzIFNlcCAyNAoJCQktMzowMAktCUJSVAojCiMgQWxhZ29hcyAoQUwpLCBTZXJnaXBlIChTRSkKWm9uZSBBbWVyaWNhL01hY2VpbwktMjoyMjo1MiAtCUxNVAkxOTE0CgkJCS0zOjAwCUJyYXppbAlCUiVzVAkxOTkwIFNlcCAxNwoJCQktMzowMAktCUJSVAkxOTk1IE9jdCAxMwoJCQktMzowMAlCcmF6aWwJQlIlc1QJMTk5NiBTZXAgIDQKCQkJLTM6MDAJLQlCUlQJMTk5OSBTZXAgMzAKCQkJLTM6MDAJQnJhemlsCUJSJXNUCTIwMDAgT2N0IDIyCgkJCS0zOjAwCS0JQlJUCTIwMDEgU2VwIDEzCgkJCS0zOjAwCUJyYXppbAlCUiVzVAkyMDAyIE9jdCAgMQoJCQktMzowMAktCUJSVAojCiMgQmFoaWEgKEJBKQojIFRoZXJlIGFyZSB0b28gbWFueSBTYWx2YWRvcnMgZWxzZXdoZXJlLCBzbyB1c2UgQW1lcmljYS9CYWhpYSBpbnN0ZWFkCiMgb2YgQW1lcmljYS9TYWx2YWRvci4KWm9uZSBBbWVyaWNhL0JhaGlhCS0yOjM0OjA0IC0JTE1UCTE5MTQKCQkJLTM6MDAJQnJhemlsCUJSJXNUCTIwMDMgU2VwIDI0CgkJCS0zOjAwCS0JQlJUCiMKIyBHb2lhcyAoR08pLCBEaXN0cml0byBGZWRlcmFsIChERiksIE1pbmFzIEdlcmFpcyAoTUcpLAojIEVzcGlyaXRvIFNhbnRvIChFUyksIFJpbyBkZSBKYW5laXJvIChSSiksIFNhbyBQYXVsbyAoU1ApLCBQYXJhbmEgKFBSKSwKIyBTYW50YSBDYXRhcmluYSAoU0MpLCBSaW8gR3JhbmRlIGRvIFN1bCAoUlMpClpvbmUgQW1lcmljYS9TYW9fUGF1bG8JLTM6MDY6MjggLQlMTVQJMTkxNAoJCQktMzowMAlCcmF6aWwJQlIlc1QJMTk2MyBPY3QgMjMgMDA6MDAKCQkJLTM6MDAJMTowMAlCUlNUCTE5NjQKCQkJLTM6MDAJQnJhemlsCUJSJXNUCiMKIyBNYXRvIEdyb3NzbyBkbyBTdWwgKE1TKQpab25lIEFtZXJpY2EvQ2FtcG9fR3JhbmRlIC0zOjM4OjI4IC0JTE1UCTE5MTQKCQkJLTQ6MDAJQnJhemlsCUFNJXNUCiMKIyBNYXRvIEdyb3NzbyAoTVQpClpvbmUgQW1lcmljYS9DdWlhYmEJLTM6NDQ6MjAgLQlMTVQJMTkxNAoJCQktNDowMAlCcmF6aWwJQU0lc1QJMjAwMyBTZXAgMjQKCQkJLTQ6MDAJLQlBTVQJMjAwNCBPY3QgIDEKCQkJLTQ6MDAJQnJhemlsCUFNJXNUCiMKIyBSb25kb25pYSAoUk8pClpvbmUgQW1lcmljYS9Qb3J0b19WZWxobyAtNDoxNTozNiAtCUxNVAkxOTE0CgkJCS00OjAwCUJyYXppbAlBTSVzVAkxOTg4IFNlcCAxMgoJCQktNDowMAktCUFNVAojCiMgUm9yYWltYSAoUlIpClpvbmUgQW1lcmljYS9Cb2FfVmlzdGEJLTQ6MDI6NDAgLQlMTVQJMTkxNAoJCQktNDowMAlCcmF6aWwJQU0lc1QJMTk4OCBTZXAgMTIKCQkJLTQ6MDAJLQlBTVQJMTk5OSBTZXAgMzAKCQkJLTQ6MDAJQnJhemlsCUFNJXNUCTIwMDAgT2N0IDE1CgkJCS00OjAwCS0JQU1UCiMKIyBlYXN0IEFtYXpvbmFzIChBTSk6IEJvY2EgZG8gQWNyZSwgSnV0YWksIE1hbmF1cywgRmxvcmlhbm8gUGVpeG90bwojIFRoZSBncmVhdCBjaXJjbGUgbGluZSBmcm9tIFRhYmF0aW5nYSB0byBQb3J0byBBY3JlIGRpdmlkZXMKIyBlYXN0IGZyb20gd2VzdCBBbWF6b25hcy4KWm9uZSBBbWVyaWNhL01hbmF1cwktNDowMDowNCAtCUxNVAkxOTE0CgkJCS00OjAwCUJyYXppbAlBTSVzVAkxOTg4IFNlcCAxMgoJCQktNDowMAktCUFNVAkxOTkzIFNlcCAyOAoJCQktNDowMAlCcmF6aWwJQU0lc1QJMTk5NCBTZXAgMjIKCQkJLTQ6MDAJLQlBTVQKIwojIHdlc3QgQW1hem9uYXMgKEFNKTogQXRhbGFpYSBkbyBOb3J0ZSwgQm9jYSBkbyBNYW9jbywgQmVuamFtaW4gQ29uc3RhbnQsCiMJRWlydW5lcGUsIEVudmlyYSwgSXBpeHVuYQpab25lIEFtZXJpY2EvRWlydW5lcGUJLTQ6Mzk6MjggLQlMTVQJMTkxNAoJCQktNTowMAlCcmF6aWwJQUMlc1QJMTk4OCBTZXAgMTIKCQkJLTU6MDAJLQlBQ1QJMTk5MyBTZXAgMjgKCQkJLTU6MDAJQnJhemlsCUFDJXNUCTE5OTQgU2VwIDIyCgkJCS01OjAwCS0JQUNUCTIwMDggSnVuIDI0IDAwOjAwCgkJCS00OjAwCS0JQU1UCiMKIyBBY3JlIChBQykKWm9uZSBBbWVyaWNhL1Jpb19CcmFuY28JLTQ6MzE6MTIgLQlMTVQJMTkxNAoJCQktNTowMAlCcmF6aWwJQUMlc1QJMTk4OCBTZXAgMTIKCQkJLTU6MDAJLQlBQ1QJMjAwOCBKdW4gMjQgMDA6MDAKCQkJLTQ6MDAJLQlBTVQKCiMgQ2hpbGUKCiMgRnJvbSBFZHVhcmRvIEtyZWxsICgxOTk1LTEwLTE5KToKIyBUaGUgbGF3IHNheXMgdG8gc3dpdGNoIHRvIERTVCBhdCBtaWRuaWdodCBbMjQ6MDBdIG9uIHRoZSBzZWNvbmQgU0FUVVJEQVkKIyBvZiBPY3RvYmVyLi4uLiAgVGhlIGxhdyBpcyB0aGUgc2FtZSBmb3IgTWFyY2ggYW5kIE9jdG9iZXIuCiMgKDE5OTgtMDktMjkpOgojIEJlY2F1c2Ugb2YgdGhlIGRyb3VnaHQgdGhpcyB5ZWFyLCB0aGUgZ292ZXJubWVudCBkZWNpZGVkIHRvIGdvIGludG8KIyBEU1QgZWFybGllciAoc2F0dXJkYXkgOS8yNiBhdCAyNDowMCkuIFRoaXMgaXMgYSBvbmUtdGltZSBjaGFuZ2Ugb25seSAuLi4KIyAodW5sZXNzIHRoZXJlJ3MgYW5vdGhlciBkcnkgc2Vhc29uIG5leHQgeWVhciwgSSBndWVzcykuCgojIEZyb20gSnVsaW8gSS4gUGFjaGVjbyBUcm9uY29zbyAoMTk5OS0wMy0xOCk6CiMgQmVjYXVzZSBvZiB0aGUgc2FtZSBkcm91Z2h0LCB0aGUgZ292ZXJubWVudCBkZWNpZGVkIHRvIGVuZCBEU1QgbGF0ZXIsCiMgb24gQXByaWwgMywgKG9uZS10aW1lIGNoYW5nZSkuCgojIEZyb20gT3NjYXIgdmFuIFZsaWptZW4gKDIwMDYtMTAtMDgpOgojIGh0dHA6Ly93d3cuaG9yYW9maWNpYWwuY2wvY2FtYmlvLmh0bQoKIyBGcm9tIEplc3BlciBOb3JnYWFyZCBXZWxlbiAoMjAwNi0xMC0wOCk6CiMgSSB0aGluayB0aGF0IHRoZXJlIGFyZSBzb21lIG9idmlvdXMgbWlzdGFrZXMgaW4gdGhlIHN1Z2dlc3RlZCBsaW5rCiMgZnJvbSBPc2NhciB2YW4gVmxpam1lbiwuLi4gZm9yIGluc3RhbmNlIGVudHJ5IDY2IHNheXMgdGhhdCBHTVQtNAojIGVuZGVkIDE5OTAtMDktMTIgd2hpbGUgZW50cnkgNjcgb25seSBiZWdpbnMgR01ULTMgYXQgMTk5MC0wOS0xNQojICh0aGV5IHNob3VsZCBoYXZlIGJlZW4gMTk5MC0wOS0xNSBhbmQgMTk5MC0wOS0xNiByZXNwZWN0aXZlbHkpLCBidXQKIyBhbnlob3cgaXQgY2xlYXJzIHVwIHNvbWUgZG91YnRzIHRvby4KCiMgRnJvbSBQYXVsIEVnZ2VydCAoMjAwNi0xMi0yNyk6CiMgVGhlIGZvbGxvd2luZyBkYXRhIGZvciBDaGlsZSBhbmQgQW1lcmljYS9TYW50aWFnbyBhcmUgZnJvbQojIDxodHRwOi8vd3d3LmhvcmFvZmljaWFsLmNsL2hvcmFvZi5odG0+ICgyMDA2LTA5LTIwKSwgdHJhbnNjcmliZWQgYnkKIyBKZXNwZXIgTm9yZ2FhcmQgV2VsZW4uICBUaGUgZGF0YSBmb3IgUGFjaWZpYy9FYXN0ZXIgYXJlIGZyb20gU2hhbmtzCiMgJiBQb3R0ZW5nZXIsIGV4Y2VwdCB3aXRoIERTVCB0cmFuc2l0aW9ucyBhZnRlciAxOTMyIGNsb25lZCBmcm9tCiMgQW1lcmljYS9TYW50aWFnby4gIFRoZSBwcmUtMTk4MCBQYWNpZmljL0Vhc3RlciBkYXRhIGFyZSBkdWJpb3VzLAojIGJ1dCB3ZSBoYXZlIG5vIG90aGVyIHNvdXJjZS4KCiMgRnJvbSBHZXJtYW4gUG9vLUNhYW1hbn5vICgyMDA4LTAzLTAzKToKIyBEdWUgdG8gZHJvdWdodCwgQ2hpbGUgZXh0ZW5kcyBEYXlsaWdodCBUaW1lIGluIHRocmVlIHdlZWtzLiAgVGhpcwojIGlzIG9uZS10aW1lIGNoYW5nZSAoU2F0dXJkYXkgMy8yOSBhdCAyNDowMCBmb3IgQW1lcmljYS9TYW50aWFnbwojIGFuZCBTYXR1cmRheSAzLzI5IGF0IDIyOjAwIGZvciBQYWNpZmljL0Vhc3RlcikKIyBUaGUgU3VwcmVtZSBEZWNyZWUgaXMgbG9jYXRlZCBhdCAKIyA8YSBocmVmPSJodHRwOi8vd3d3LnNob2EuY2wvc2VydmljaW9zL3N1cHJlbW8zMTYucGRmIj4KIyBodHRwOi8vd3d3LnNob2EuY2wvc2VydmljaW9zL3N1cHJlbW8zMTYucGRmCiMgPC9hPgojIGFuZCB0aGUgaW5zdHJ1Y3Rpb25zIGZvciAyMDA4IGFyZSBsb2NhdGVkIGluOgojIDxhIGhyZWY9Imh0dHA6Ly93d3cuaG9yYW9maWNpYWwuY2wvY2FtYmlvLmh0bSI+CiMgaHR0cDovL3d3dy5ob3Jhb2ZpY2lhbC5jbC9jYW1iaW8uaHRtCiMgPC9hPi4KCiMgRnJvbSBKb3NlIE1pZ3VlbCBHYXJyaWRvICgyMDA4LTAzLTA1KToKIyAuLi4KIyBZb3UgY291bGQgc2VlIHRoZSBhbm5vdW5jZXMgb2YgdGhlIGNoYW5nZSBvbiAKIyA8YSBocmVmPSJodHRwOi8vd3d3LnNob2EuY2wvbm90aWNpYXMvMjAwOC8wNGhvcmEvaG9yYS5odG0iPgojIGh0dHA6Ly93d3cuc2hvYS5jbC9ub3RpY2lhcy8yMDA4LzA0aG9yYS9ob3JhLmh0bQojIDwvYT4uCgojIFJ1bGUJTkFNRQlGUk9NCVRPCVRZUEUJSU4JT04JQVQJU0FWRQlMRVRURVIvUwpSdWxlCUNoaWxlCTE5MjcJMTkzMgktCVNlcAkgMQkwOjAwCTE6MDAJUwpSdWxlCUNoaWxlCTE5MjgJMTkzMgktCUFwcgkgMQkwOjAwCTAJLQpSdWxlCUNoaWxlCTE5NDIJb25seQktCUp1bgkgMQk0OjAwdQkwCS0KUnVsZQlDaGlsZQkxOTQyCW9ubHkJLQlBdWcJIDEJNTowMHUJMTowMAlTClJ1bGUJQ2hpbGUJMTk0Nglvbmx5CS0JSnVsCTE1CTQ6MDB1CTE6MDAJUwpSdWxlCUNoaWxlCTE5NDYJb25seQktCVNlcAkgMQkzOjAwdQkwOjAwCS0KUnVsZQlDaGlsZQkxOTQ3CW9ubHkJLQlBcHIJIDEJNDowMHUJMAktClJ1bGUJQ2hpbGUJMTk2OAlvbmx5CS0JTm92CSAzCTQ6MDB1CTE6MDAJUwpSdWxlCUNoaWxlCTE5NjkJb25seQktCU1hcgkzMAkzOjAwdQkwCS0KUnVsZQlDaGlsZQkxOTY5CW9ubHkJLQlOb3YJMjMJNDowMHUJMTowMAlTClJ1bGUJQ2hpbGUJMTk3MAlvbmx5CS0JTWFyCTI5CTM6MDB1CTAJLQpSdWxlCUNoaWxlCTE5NzEJb25seQktCU1hcgkxNAkzOjAwdQkwCS0KUnVsZQlDaGlsZQkxOTcwCTE5NzIJLQlPY3QJU3VuPj05CTQ6MDB1CTE6MDAJUwpSdWxlCUNoaWxlCTE5NzIJMTk4NgktCU1hcglTdW4+PTkJMzowMHUJMAktClJ1bGUJQ2hpbGUJMTk3Mwlvbmx5CS0JU2VwCTMwCTQ6MDB1CTE6MDAJUwpSdWxlCUNoaWxlCTE5NzQJMTk4NwktCU9jdAlTdW4+PTkJNDowMHUJMTowMAlTClJ1bGUJQ2hpbGUJMTk4Nwlvbmx5CS0JQXByCTEyCTM6MDB1CTAJLQpSdWxlCUNoaWxlCTE5ODgJMTk4OQktCU1hcglTdW4+PTkJMzowMHUJMAktClJ1bGUJQ2hpbGUJMTk4OAlvbmx5CS0JT2N0CVN1bj49MQk0OjAwdQkxOjAwCVMKUnVsZQlDaGlsZQkxOTg5CW9ubHkJLQlPY3QJU3VuPj05CTQ6MDB1CTE6MDAJUwpSdWxlCUNoaWxlCTE5OTAJb25seQktCU1hcgkxOAkzOjAwdQkwCS0KUnVsZQlDaGlsZQkxOTkwCW9ubHkJLQlTZXAJMTYJNDowMHUJMTowMAlTClJ1bGUJQ2hpbGUJMTk5MQkxOTk2CS0JTWFyCVN1bj49OQkzOjAwdQkwCS0KUnVsZQlDaGlsZQkxOTkxCTE5OTcJLQlPY3QJU3VuPj05CTQ6MDB1CTE6MDAJUwpSdWxlCUNoaWxlCTE5OTcJb25seQktCU1hcgkzMAkzOjAwdQkwCS0KUnVsZQlDaGlsZQkxOTk4CW9ubHkJLQlNYXIJU3VuPj05CTM6MDB1CTAJLQpSdWxlCUNoaWxlCTE5OTgJb25seQktCVNlcAkyNwk0OjAwdQkxOjAwCVMKUnVsZQlDaGlsZQkxOTk5CW9ubHkJLQlBcHIJIDQJMzowMHUJMAktClJ1bGUJQ2hpbGUJMTk5OQltYXgJLQlPY3QJU3VuPj05CTQ6MDB1CTE6MDAJUwpSdWxlCUNoaWxlCTIwMDAJMjAwNwktCU1hcglTdW4+PTkJMzowMHUJMAktCiMgTi5CLjogdGhlIGVuZCBvZiBNYXJjaCAyOSBpbiBDaGlsZSBpcyBNYXJjaCAzMCBpbiBVbml2ZXJzYWwgdGltZSwKIyB3aGljaCBpcyB1c2VkIGJlbG93IGluIHNwZWNpZnlpbmcgdGhlIHRyYW5zaXRpb24uClJ1bGUJQ2hpbGUJMjAwOAlvbmx5CS0JTWFyCTMwCTM6MDB1CTAJLQpSdWxlCUNoaWxlCTIwMDkJbWF4CS0JTWFyCVN1bj49OQkzOjAwdQkwCS0KIyBJQVRBIFNTSU0gYW5vbWFsaWVzOiAoMTk5Mi0wMikgc2F5cyAxOTkyLTAzLTE0OwojICgxOTk2LTA5KSBzYXlzIDE5OTgtMDMtMDguICBJZ25vcmUgdGhlc2UuCiMgWm9uZQlOQU1FCQlHTVRPRkYJUlVMRVMJRk9STUFUCVtVTlRJTF0KWm9uZSBBbWVyaWNhL1NhbnRpYWdvCS00OjQyOjQ2IC0JTE1UCTE4OTAKCQkJLTQ6NDI6NDYgLQlTTVQJMTkxMCAJICAgICMgU2FudGlhZ28gTWVhbiBUaW1lCgkJCS01OjAwCS0JQ0xUCTE5MTYgSnVsICAxICMgQ2hpbGUgVGltZQoJCQktNDo0Mjo0NiAtCVNNVAkxOTE4IFNlcCAgMSAjIFNhbnRpYWdvIE1lYW4gVGltZQoJCQktNDowMAktCUNMVAkxOTE5IEp1bCAgMSAjIENoaWxlIFRpbWUKCQkJLTQ6NDI6NDYgLQlTTVQJMTkyNyBTZXAgIDEgIyBTYW50aWFnbyBNZWFuIFRpbWUKCQkJLTU6MDAJQ2hpbGUJQ0wlc1QJMTk0NyBNYXkgMjIgIyBDaGlsZSBUaW1lCgkJCS00OjAwCUNoaWxlCUNMJXNUClpvbmUgUGFjaWZpYy9FYXN0ZXIJLTc6MTc6NDQgLQlMTVQJMTg5MAoJCQktNzoxNzoyOCAtCUVNVAkxOTMyIFNlcCAgICAjIEVhc3RlciBNZWFuIFRpbWUKCQkJLTc6MDAJQ2hpbGUJRUFTJXNUCTE5ODIgTWFyIDEzIDIxOjAwICMgRWFzdGVyIEkgVGltZQoJCQktNjowMAlDaGlsZQlFQVMlc1QKIwojIFNhbGEgeSBHb21leiBJc2xhbmQgaXMgbGlrZSBQYWNpZmljL0Vhc3Rlci4KIyBPdGhlciBDaGlsZWFuIGxvY2F0aW9ucywgaW5jbHVkaW5nIEp1YW4gRmVybmFuZGV6IElzLCBTYW4gQW1icm9zaW8sCiMgU2FuIEZlbGl4LCBhbmQgQW50YXJjdGljIGJhc2VzLCBhcmUgbGlrZSBBbWVyaWNhL1NhbnRpYWdvLgoKIyBDb2xvbWJpYQojIFJ1bGUJTkFNRQlGUk9NCVRPCVRZUEUJSU4JT04JQVQJU0FWRQlMRVRURVIvUwpSdWxlCUNPCTE5OTIJb25seQktCU1heQkgMwkwOjAwCTE6MDAJUwpSdWxlCUNPCTE5OTMJb25seQktCUFwcgkgNAkwOjAwCTAJLQojIFpvbmUJTkFNRQkJR01UT0ZGCVJVTEVTCUZPUk1BVAlbVU5USUxdClpvbmUJQW1lcmljYS9Cb2dvdGEJLTQ6NTY6MjAgLQlMTVQJMTg4NCBNYXIgMTMKCQkJLTQ6NTY6MjAgLQlCTVQJMTkxNCBOb3YgMjMgIyBCb2dvdGEgTWVhbiBUaW1lCgkJCS01OjAwCUNPCUNPJXNUCSMgQ29sb21iaWEgVGltZQojIE1hbHBlbG8sIFByb3ZpZGVuY2lhLCBTYW4gQW5kcmVzCiMgbm8gaW5mb3JtYXRpb247IHByb2JhYmx5IGxpa2UgQW1lcmljYS9Cb2dvdGEKCiMgQ3VyYWNhbwojCiMgRnJvbSBQYXVsIEVnZ2VydCAoMjAwNi0wMy0yMik6CiMgU2hhbmtzICYgUG90dGVuZ2VyIHNheSB0aGF0IFRoZSBCb3R0b20gYW5kIFBoaWxpcHNidXJnIGhhdmUgYmVlbiBhdAojIC00OjAwIHNpbmNlIHN0YW5kYXJkIHRpbWUgd2FzIGludHJvZHVjZWQgb24gMTkxMi0wMy0wMjsgYW5kIHRoYXQKIyBLcmFsZW5kaWprIGFuZCBSaW5jb24gdXNlZCBLcmFsZW5kaWprIE1lYW4gVGltZSAoLTQ6MzM6MDgpIGZyb20KIyAxOTEyLTAyLTAyIHRvIDE5NjUtMDEtMDEuICBUaGUgZm9ybWVyIGlzIGR1YmlvdXMsIHNpbmNlIFMmUCBhbHNvIHNheQojIFNhYmEgSXNsYW5kIGhhcyBiZWVuIGxpa2UgQ3VyYWNhby4KIyBUaGlzIGFsbCBwcmVkYXRlcyBvdXIgMTk3MCBjdXRvZmYsIHRob3VnaC4KIwojIEJ5IEp1bHkgMjAwNyBDdXJhY2FvIGFuZCBTdCBNYWFydGVuIGFyZSBwbGFubmVkIHRvIGJlY29tZQojIGFzc29jaWF0ZWQgc3RhdGVzIHdpdGhpbiB0aGUgTmV0aGVybGFuZHMsIG11Y2ggbGlrZSBBcnViYTsKIyBCb25haXJlLCBTYWJhIGFuZCBTdCBFdXN0YXRpdXMgd291bGQgYmVjb21lIGRpcmVjdGx5IHBhcnQgb2YgdGhlCiMgTmV0aGVybGFuZHMgYXMgS2luZ2RvbSBJc2xhbmRzLiAgVGhpcyB3b24ndCBhZmZlY3QgdGhlaXIgdGltZSB6b25lcwojIHRob3VnaCwgYXMgZmFyIGFzIHdlIGtub3cuCiMKIyBab25lCU5BTUUJCUdNVE9GRglSVUxFUwlGT1JNQVQJW1VOVElMXQpab25lCUFtZXJpY2EvQ3VyYWNhbwktNDozNTo0NCAtCUxNVAkxOTEyIEZlYiAxMgkjIFdpbGxlbXN0YWQKCQkJLTQ6MzAJLQlBTlQJMTk2NSAjIE5ldGhlcmxhbmRzIEFudGlsbGVzIFRpbWUKCQkJLTQ6MDAJLQlBU1QKCiMgRWN1YWRvcgojCiMgRnJvbSBQYXVsIEVnZ2VydCAoMjAwNy0wMy0wNCk6CiMgQXBwYXJlbnRseSBFY3VhZG9yIGhhZCBhIGZhaWxlZCBleHBlcmltZW50IHdpdGggRFNUIGluIDE5OTIuCiMgPGh0dHA6Ly9taWRlbmEuZ292LmVjL2NvbnRlbnQvdmlldy8xMjYxLzIwOC8+ICgyMDA3LTAyLTI3KSBhbmQKIyA8aHR0cDovL3d3dy5ob3kuY29tLmVjL05vdGljaWFOdWUuYXNwP3Jvd19pZD0yNDk4NTY+ICgyMDA2LTExLTA2KSBib3RoCiMgdGFsayBhYm91dCAiaG9yYSBTaXh0byIuICBMZWF2ZSB0aGlzIGFsb25lIGZvciBub3csIGFzIHdlIGhhdmUgbm8gZGF0YS4KIwojIFpvbmUJTkFNRQkJR01UT0ZGCVJVTEVTCUZPUk1BVAlbVU5USUxdClpvbmUgQW1lcmljYS9HdWF5YXF1aWwJLTU6MTk6MjAgLQlMTVQJMTg5MAoJCQktNToxNDowMCAtCVFNVAkxOTMxICMgUXVpdG8gTWVhbiBUaW1lCgkJCS01OjAwCS0JRUNUCSAgICAgIyBFY3VhZG9yIFRpbWUKWm9uZSBQYWNpZmljL0dhbGFwYWdvcwktNTo1ODoyNCAtCUxNVAkxOTMxICMgUHVlcnRvIEJhcXVlcml6byBNb3Jlbm8KCQkJLTU6MDAJLQlFQ1QJMTk4NgoJCQktNjowMAktCUdBTFQJICAgICAjIEdhbGFwYWdvcyBUaW1lCgojIEZhbGtsYW5kcwoKIyBGcm9tIFBhdWwgRWdnZXJ0ICgyMDA2LTAzLTIyKToKIyBCZXR3ZWVuIDE5OTAgYW5kIDIwMDAgaW5jbHVzaXZlLCBTaGFua3MgJiBQb3R0ZW5nZXIgYW5kIHRoZSBJQVRBIGFncmVlIGV4Y2VwdAojIHRoZSBJQVRBIGdpdmVzIDE5OTYtMDktMDguICBHbyB3aXRoIFNoYW5rcyAmIFBvdHRlbmdlci4KCiMgRnJvbSBGYWxrbGFuZCBJc2xhbmRzIEdvdmVybm1lbnQgT2ZmaWNlLCBMb25kb24gKDIwMDEtMDEtMjIpCiMgdmlhIEplc3BlciBOb3JnYWFyZDoKIyAuLi4gdGhlIGNsb2NrcyByZXZlcnQgYmFjayB0byBMb2NhbCBNZWFuIFRpbWUgYXQgMiBhbSBvbiBTdW5kYXkgMTUKIyBBcHJpbCAyMDAxIGFuZCBhZHZhbmNlIG9uZSBob3VyIHRvIHN1bW1lciB0aW1lIGF0IDIgYW0gb24gU3VuZGF5IDIKIyBTZXB0ZW1iZXIuICBJdCBpcyBhbnRpY2lwYXRlZCB0aGF0IHRoZSBjbG9ja3Mgd2lsbCByZXZlcnQgYmFjayBhdCAyCiMgYW0gb24gU3VuZGF5IDIxIEFwcmlsIDIwMDIgYW5kIGFkdmFuY2UgdG8gc3VtbWVyIHRpbWUgYXQgMiBhbSBvbgojIFN1bmRheSAxIFNlcHRlbWJlci4KCiMgRnJvbSBSaXZlcyBNY0RvdyAoMjAwMS0wMi0xMyk6CiMKIyBJIGhhdmUgY29tbXVuaWNhdGVkIHNldmVyYWwgdGltZXMgd2l0aCBwZW9wbGUgdGhlcmUsIGFuZCB0aGUgbGFzdAojIHRpbWUgSSBoYWQgY29tbXVuaWNhdGlvbnMgdGhhdCB3YXMgaGVscGZ1bCB3YXMgaW4gMTk5OC4gIEhlcmUgaXMKIyB3aGF0IHdhcyBzYWlkIHRoZW46CiMKIyAiVGhlIGdlbmVyYWwgcnVsZSB3YXMgdGhhdCBTdGFubGV5IHVzZWQgZGF5bGlnaHQgc2F2aW5nIGFuZCB0aGUgQ2FtcAojIGRpZCBub3QuIEhvd2V2ZXIgZm9yIHZhcmlvdXMgcmVhc29ucyBtYW55IHBlb3BsZSBpbiB0aGUgQ2FtcCBoYXZlCiMgc3RhcnRlZCB0byB1c2UgZGF5bGlnaHQgc2F2aW5nIChrbm93biBsb2NhbGx5IGFzICdTdGFubGV5IFRpbWUnKQojIFRoZXJlIGlzIG5vIHJ1bGUgYXMgdG8gd2hvIHVzZXMgZGF5bGlnaHQgc2F2aW5nIC0gaXQgaXMgYSBtYXR0ZXIgb2YKIyBwZXJzb25hbCBjaG9pY2UgYW5kIHNvIGl0IGlzIGltcG9zc2libGUgdG8gZHJhdyBhIG1hcCBzaG93aW5nIHdobwojIHVzZXMgaXQgYW5kIHdobyBkb2VzIG5vdC4gQW55IGxpc3Qgd291bGQgYmUgb3V0IG9mIGRhdGUgYXMgc29vbiBhcwojIGl0IHdhcyBwcm9kdWNlZC4gVGhpcyB5ZWFyIGRheWxpZ2h0IHNhdmluZyBlbmRlZCBvbiBBcHJpbCAxOC8xOXRoCiMgYW5kIHN0YXJ0ZWQgYWdhaW4gb24gU2VwdGVtYmVyIDEyLzEzdGguICBJIGRvIG5vdCBrbm93IHdoYXQgdGhlIHJ1bGUKIyBpcywgYnV0IGNhbiBmaW5kIG91dCBpZiB5b3UgbGlrZS4gIFdlIGRvIG5vdCBjaGFuZ2UgYXQgdGhlIHNhbWUgdGltZQojIGFzIFVLIG9yIENoaWxlLiIKIwojIEkgZGlkIGhhdmUgaW4gbXkgbm90ZXMgdGhhdCB0aGUgcnVsZSB3YXMgIlNlY29uZCBTYXR1cmRheSBpbiBTZXAgYXQKIyAwOjAwIHVudGlsIHRoaXJkIFNhdHVyZGF5IGluIEFwciBhdCAwOjAwIi4gIEkgdGhpbmsgdGhhdCB0aGlzIGRvZXMKIyBub3QgYWdyZWUgaW4gc29tZSBjYXNlcyB3aXRoIFNoYW5rczsgaXMgdGhpcyB0cnVlPwojCiMgQWxzbywgdGhlcmUgaXMgbm8gbWVudGlvbiBpbiB0aGUgbGlzdCB0aGF0IHNvbWUgYXJlYXMgaW4gdGhlCiMgRmFsa2xhbmRzIGRvIG5vdCB1c2UgRFNULiAgSSBoYXZlIGZvdW5kIGluIG15IGNvbW11bmljYXRpb25zIHRoZXJlCiMgdGhhdCB0aGVzZSBhcmVhcyBhcmUgb24gdGhlIHdlc3Rlcm4gaGFsZiBvZiBFYXN0IEZhbGtsYW5kIGFuZCBhbGwgb2YKIyBXZXN0IEZhbGtsYW5kLiAgU3RhbmxleSBpcyB0aGUgb25seSBwbGFjZSB0aGF0IGNvbnNpc3RlbnRseSBvYnNlcnZlcwojIERTVC4gIEFnYWluLCBhcyBpbiBvdGhlciBwbGFjZXMgaW4gdGhlIHdvcmxkLCB0aGUgZmFybWVycyBkb24ndCBsaWtlCiMgaXQuICBXZXN0IEZhbGtsYW5kIGlzIGFsbW9zdCBlbnRpcmVseSBzaGVlcCBmYXJtZXJzLgojCiMgSSBrbm93IG9uZSBsYWR5IHRoZXJlIHRoYXQga2VlcHMgYSBsaXN0IG9mIHdoaWNoIGZhcm0ga2VlcHMgRFNUIGFuZAojIHdoaWNoIGRvZXNuJ3QgZWFjaCB5ZWFyLiAgU2hlIHJ1bnMgYSBzaG9wIGluIFN0YW5sZXksIGFuZCBzYXlzIHRoYXQKIyB0aGUgbGlzdCBjaGFuZ2VzIGVhY2ggeWVhci4gIFNoZSB1c2VzIGl0IHRvIGNvbW11bmljYXRlIHRvIGhlcgojIGN1c3RvbWVycywgY2F0Y2hpbmcgdGhlbSB3aGVuIHRoZXkgYXJlIGhvbWUgZm9yIGx1bmNoIG9yIGRpbm5lci4KCiMgRnJvbSBQYXVsIEVnZ2VydCAoMjAwMS0wMy0wNSk6CiMgRm9yIG5vdywgd2UnbGwganVzdCByZWNvcmQgdGhlIHRpbWUgaW4gU3RhbmxleSwgc2luY2Ugd2UgaGF2ZSBubwojIGJldHRlciBpbmZvLgoKIyBSdWxlCU5BTUUJRlJPTQlUTwlUWVBFCUlOCU9OCUFUCVNBVkUJTEVUVEVSL1MKUnVsZQlGYWxrCTE5MzcJMTkzOAktCVNlcAlsYXN0U3VuCTA6MDAJMTowMAlTClJ1bGUJRmFsawkxOTM4CTE5NDIJLQlNYXIJU3VuPj0xOQkwOjAwCTAJLQpSdWxlCUZhbGsJMTkzOQlvbmx5CS0JT2N0CTEJMDowMAkxOjAwCVMKUnVsZQlGYWxrCTE5NDAJMTk0MgktCVNlcAlsYXN0U3VuCTA6MDAJMTowMAlTClJ1bGUJRmFsawkxOTQzCW9ubHkJLQlKYW4JMQkwOjAwCTAJLQpSdWxlCUZhbGsJMTk4Mwlvbmx5CS0JU2VwCWxhc3RTdW4JMDowMAkxOjAwCVMKUnVsZQlGYWxrCTE5ODQJMTk4NQktCUFwcglsYXN0U3VuCTA6MDAJMAktClJ1bGUJRmFsawkxOTg0CW9ubHkJLQlTZXAJMTYJMDowMAkxOjAwCVMKUnVsZQlGYWxrCTE5ODUJMjAwMAktCVNlcAlTdW4+PTkJMDowMAkxOjAwCVMKUnVsZQlGYWxrCTE5ODYJMjAwMAktCUFwcglTdW4+PTE2CTA6MDAJMAktClJ1bGUJRmFsawkyMDAxCW1heAktCUFwcglTdW4+PTE1CTI6MDAJMAktClJ1bGUJRmFsawkyMDAxCW1heAktCVNlcAlTdW4+PTEJMjowMAkxOjAwCVMKIyBab25lCU5BTUUJCUdNVE9GRglSVUxFUwlGT1JNQVQJW1VOVElMXQpab25lIEF0bGFudGljL1N0YW5sZXkJLTM6NTE6MjQgLQlMTVQJMTg5MAoJCQktMzo1MToyNCAtCVNNVAkxOTEyIE1hciAxMiAgIyBTdGFubGV5IE1lYW4gVGltZQoJCQktNDowMAlGYWxrCUZLJXNUCTE5ODMgTWF5ICAgICAjIEZhbGtsYW5kIElzIFRpbWUKCQkJLTM6MDAJRmFsawlGSyVzVAkxOTg1IFNlcCAxNQoJCQktNDowMAlGYWxrCUZLJXNUCgojIEZyZW5jaCBHdWlhbmEKIyBab25lCU5BTUUJCUdNVE9GRglSVUxFUwlGT1JNQVQJW1VOVElMXQpab25lIEFtZXJpY2EvQ2F5ZW5uZQktMzoyOToyMCAtCUxNVAkxOTExIEp1bAoJCQktNDowMAktCUdGVAkxOTY3IE9jdCAjIEZyZW5jaCBHdWlhbmEgVGltZQoJCQktMzowMAktCUdGVAoKIyBHdXlhbmEKIyBab25lCU5BTUUJCUdNVE9GRglSVUxFUwlGT1JNQVQJW1VOVElMXQpab25lCUFtZXJpY2EvR3V5YW5hCS0zOjUyOjQwIC0JTE1UCTE5MTUgTWFyCSMgR2VvcmdldG93bgoJCQktMzo0NQktCUdCR1QJMTk2NiBNYXkgMjYgIyBCciBHdWlhbmEgVGltZQoJCQktMzo0NQktCUdZVAkxOTc1IEp1bCAzMSAjIEd1eWFuYSBUaW1lCgkJCS0zOjAwCS0JR1lUCTE5OTEKIyBJQVRBIFNTSU0gKDE5OTYtMDYpIHNheXMgLTQ6MDAuICBBc3N1bWUgYSAxOTkxIHN3aXRjaC4KCQkJLTQ6MDAJLQlHWVQKCiMgUGFyYWd1YXkKIyBGcm9tIFBhdWwgRWdnZXJ0ICgyMDA2LTAzLTIyKToKIyBTaGFua3MgJiBQb3R0ZW5nZXIgc2F5IHRoYXQgc3ByaW5nIHRyYW5zaXRpb25zIGFyZSBmcm9tIDAxOjAwIC0+IDAyOjAwLAojIGFuZCBhdXR1bW4gdHJhbnNpdGlvbnMgYXJlIGZyb20gMDA6MDAgLT4gMjM6MDAuICBHbyB3aXRoIHByZS0xOTk5CiMgZWRpdGlvbnMgb2YgU2hhbmtzLCBhbmQgd2l0aCB0aGUgSUFUQSwgd2hvIHNheSB0cmFuc2l0aW9ucyBvY2N1ciBhdCAwMDowMC4KIyBSdWxlCU5BTUUJRlJPTQlUTwlUWVBFCUlOCU9OCUFUCVNBVkUJTEVUVEVSL1MKUnVsZQlQYXJhCTE5NzUJMTk4OAktCU9jdAkgMQkwOjAwCTE6MDAJUwpSdWxlCVBhcmEJMTk3NQkxOTc4CS0JTWFyCSAxCTA6MDAJMAktClJ1bGUJUGFyYQkxOTc5CTE5OTEJLQlBcHIJIDEJMDowMAkwCS0KUnVsZQlQYXJhCTE5ODkJb25seQktCU9jdAkyMgkwOjAwCTE6MDAJUwpSdWxlCVBhcmEJMTk5MAlvbmx5CS0JT2N0CSAxCTA6MDAJMTowMAlTClJ1bGUJUGFyYQkxOTkxCW9ubHkJLQlPY3QJIDYJMDowMAkxOjAwCVMKUnVsZQlQYXJhCTE5OTIJb25seQktCU1hcgkgMQkwOjAwCTAJLQpSdWxlCVBhcmEJMTk5Mglvbmx5CS0JT2N0CSA1CTA6MDAJMTowMAlTClJ1bGUJUGFyYQkxOTkzCW9ubHkJLQlNYXIJMzEJMDowMAkwCS0KUnVsZQlQYXJhCTE5OTMJMTk5NQktCU9jdAkgMQkwOjAwCTE6MDAJUwpSdWxlCVBhcmEJMTk5NAkxOTk1CS0JRmViCWxhc3RTdW4JMDowMAkwCS0KUnVsZQlQYXJhCTE5OTYJb25seQktCU1hcgkgMQkwOjAwCTAJLQojIElBVEEgU1NJTSAoMjAwMC0wMikgc2F5cyAxOTk5LTEwLTEwOyBpZ25vcmUgdGhpcyBmb3Igbm93LgojIEZyb20gU3RlZmZlbiBUaG9yc2VuICgyMDAwLTEwLTAyKToKIyBJIGhhdmUgdGhyZWUgaW5kZXBlbmRlbnQgcmVwb3J0cyB0aGF0IFBhcmFndWF5IGNoYW5nZWQgdG8gRFNUIHRoaXMgU3VuZGF5CiMgKDEwLTAxKS4KIwojIFRyYW5zbGF0ZWQgYnkgR3dpbGxpbSBMYXcgKDIwMDEtMDItMjcpIGZyb20KIyA8YSBocmVmPSJodHRwOi8vd3d3LmRpYXJpb25vdGljaWFzLmNvbS5weS8wMTEwMDAvbmFjaW9uYWwvbmFjaW9uYTEuaHRtIj4KIyBOb3RpY2lhcywgYSBkYWlseSBwYXBlciBpbiBBc3VuY2lvbiwgUGFyYWd1YXkgKDIwMDAtMTAtMDEpCiMgPC9hPjoKIyBTdGFydGluZyBhdCAwOjAwIHRvZGF5LCB0aGUgY2xvY2sgd2lsbCBiZSBzZXQgZm9yd2FyZCA2MCBtaW51dGVzLCBpbgojIGZ1bGZpbGxtZW50IG9mIERlY3JlZSBOby4gNywyNzMgb2YgdGhlIEV4ZWN1dGl2ZSBQb3dlci4uLi4gIFRoZSB0aW1lIGNoYW5nZQojIHN5c3RlbSBoYXMgYmVlbiBvcGVyYXRpbmcgZm9yIHNldmVyYWwgeWVhcnMuICBGb3JtZXJseSB0aGVyZSB3YXMgYSBzZXBhcmF0ZQojIGRlY3JlZSBlYWNoIHllYXI7IHRoZSBuZXcgbGF3IGhhcyB0aGUgc2FtZSBlZmZlY3QsIGJ1dCBwZXJtYW5lbnRseS4gIEV2ZXJ5CiMgeWVhciwgdGhlIHRpbWUgd2lsbCBjaGFuZ2Ugb24gdGhlIGZpcnN0IFN1bmRheSBvZiBPY3RvYmVyOyBsaWtld2lzZSwgdGhlCiMgY2xvY2sgd2lsbCBiZSBzZXQgYmFjayBvbiB0aGUgZmlyc3QgU3VuZGF5IG9mIE1hcmNoLgojClJ1bGUJUGFyYQkxOTk2CTIwMDEJLQlPY3QJU3VuPj0xCTA6MDAJMTowMAlTCiMgSUFUQSBTU0lNICgxOTk3LTA5KSBzYXlzIE1hciAxOyBnbyB3aXRoIFNoYW5rcyAmIFBvdHRlbmdlci4KUnVsZQlQYXJhCTE5OTcJb25seQktCUZlYglsYXN0U3VuCTA6MDAJMAktCiMgU2hhbmtzICYgUG90dGVuZ2VyIHNheSAxOTk5LTAyLTI4OyBJQVRBIFNTSU0gKDE5OTktMDIpIHNheXMgMTk5OS0wMi0yNywgYnV0CiMgKDE5OTktMDkpIHJlcG9ydHMgbm8gZGF0ZTsgZ28gd2l0aCBhYm92ZSBzb3VyY2VzIGFuZCBHZXJkIEtub3BzICgyMDAxLTAyLTI3KS4KUnVsZQlQYXJhCTE5OTgJMjAwMQktCU1hcglTdW4+PTEJMDowMAkwCS0KIyBGcm9tIFJpdmVzIE1jRG93ICgyMDAyLTAyLTI4KToKIyBBIGRlY3JlZSB3YXMgaXNzdWVkIGluIFBhcmFndWF5IChuby4gMTYzNTApIG9uIDIwMDItMDItMjYgdGhhdCBjaGFuZ2VkIHRoZQojIGRzdCBtZXRob2QgdG8gYmUgZnJvbSB0aGUgZmlyc3QgU3VuZGF5IGluIFNlcHRlbWJlciB0byB0aGUgZmlyc3QgU3VuZGF5IGluCiMgQXByaWwuClJ1bGUJUGFyYQkyMDAyCTIwMDQJLQlBcHIJU3VuPj0xCTA6MDAJMAktClJ1bGUJUGFyYQkyMDAyCTIwMDMJLQlTZXAJU3VuPj0xCTA6MDAJMTowMAlTCiMKIyBGcm9tIEplc3BlciBOb3JnYWFyZCBXZWxlbiAoMjAwNS0wMS0wMik6CiMgVGhlcmUgYXJlIHNldmVyYWwgc291cmNlcyB0aGF0IGNsYWltIHRoYXQgUGFyYWd1YXkgbWFkZQojIGEgdGltZXpvbmUgcnVsZSBjaGFuZ2UgaW4gYXV0dW1uIDIwMDQuCiMgRnJvbSBTdGVmZmVuIFRob3JzZW4gKDIwMDUtMDEtMDUpOgojIERlY3JlZSAxLDg2NyAoMjAwNC0wMy0wNSkKIyBGcm9tIENhcmxvcyBSYXVsIFBlcmFzc28gdmlhIEplc3BlciBOb3JnYWFyZCBXZWxlbiAoMjAwNi0xMC0xMykKIyA8aHR0cDovL3d3dy5wcmVzaWRlbmNpYS5nb3YucHkvZGVjcmV0b3MvRDE4NjcucGRmPgpSdWxlCVBhcmEJMjAwNAltYXgJLQlPY3QJU3VuPj0xNQkwOjAwCTE6MDAJUwpSdWxlCVBhcmEJMjAwNQltYXgJLQlNYXIJU3VuPj04CTA6MDAJMAktCgojIFpvbmUJTkFNRQkJR01UT0ZGCVJVTEVTCUZPUk1BVAlbVU5USUxdClpvbmUgQW1lcmljYS9Bc3VuY2lvbgktMzo1MDo0MCAtCUxNVAkxODkwCgkJCS0zOjUwOjQwIC0JQU1UCTE5MzEgT2N0IDEwICMgQXN1bmNpb24gTWVhbiBUaW1lCgkJCS00OjAwCS0JUFlUCTE5NzIgT2N0ICMgUGFyYWd1YXkgVGltZQoJCQktMzowMAktCVBZVAkxOTc0IEFwcgoJCQktNDowMAlQYXJhCVBZJXNUCgojIFBlcnUKIwojIDxhIGhyZWY9Im5ld3M6eHJHbWIuMzk5MzUkZ0ExLjEzODk2MTEzQG5ld3M0LnNydi5oY3ZsbnkuY3YubmV0Ij4KIyBGcm9tIEV2ZWx5biBDLiBMZWVwZXIgdmlhIE1hcmsgQnJhZGVyICgyMDAzLTEwLTI2KTo8L2E+CiMgV2hlbiB3ZSB3ZXJlIGluIFBlcnUgaW4gMTk4NS0xOTg2LCB0aGV5IGFwcGFyZW50bHkgc3dpdGNoZWQgb3ZlcgojIHNvbWV0aW1lIGJldHdlZW4gRGVjZW1iZXIgMjkgYW5kIEphbnVhcnkgMyB3aGlsZSB3ZSB3ZXJlIG9uIHRoZSBBbWF6b24uCiMKIyBGcm9tIFBhdWwgRWdnZXJ0ICgyMDA2LTAzLTIyKToKIyBTaGFua3MgJiBQb3R0ZW5nZXIgZG9uJ3QgaGF2ZSB0aGlzIHRyYW5zaXRpb24uICBBc3N1bWUgMTk4NiB3YXMgbGlrZSAxOTg3LgoKIyBSdWxlCU5BTUUJRlJPTQlUTwlUWVBFCUlOCU9OCUFUCVNBVkUJTEVUVEVSL1MKUnVsZQlQZXJ1CTE5MzgJb25seQktCUphbgkgMQkwOjAwCTE6MDAJUwpSdWxlCVBlcnUJMTkzOAlvbmx5CS0JQXByCSAxCTA6MDAJMAktClJ1bGUJUGVydQkxOTM4CTE5MzkJLQlTZXAJbGFzdFN1bgkwOjAwCTE6MDAJUwpSdWxlCVBlcnUJMTkzOQkxOTQwCS0JTWFyCVN1bj49MjQJMDowMAkwCS0KUnVsZQlQZXJ1CTE5ODYJMTk4NwktCUphbgkgMQkwOjAwCTE6MDAJUwpSdWxlCVBlcnUJMTk4NgkxOTg3CS0JQXByCSAxCTA6MDAJMAktClJ1bGUJUGVydQkxOTkwCW9ubHkJLQlKYW4JIDEJMDowMAkxOjAwCVMKUnVsZQlQZXJ1CTE5OTAJb25seQktCUFwcgkgMQkwOjAwCTAJLQojIElBVEEgaXMgYW1iaWd1b3VzIGZvciAxOTkzLzE5OTU7IGdvIHdpdGggU2hhbmtzICYgUG90dGVuZ2VyLgpSdWxlCVBlcnUJMTk5NAlvbmx5CS0JSmFuCSAxCTA6MDAJMTowMAlTClJ1bGUJUGVydQkxOTk0CW9ubHkJLQlBcHIJIDEJMDowMAkwCS0KIyBab25lCU5BTUUJCUdNVE9GRglSVUxFUwlGT1JNQVQJW1VOVElMXQpab25lCUFtZXJpY2EvTGltYQktNTowODoxMiAtCUxNVAkxODkwCgkJCS01OjA4OjM2IC0JTE1UCTE5MDggSnVsIDI4ICMgTGltYSBNZWFuIFRpbWU/CgkJCS01OjAwCVBlcnUJUEUlc1QJIyBQZXJ1IFRpbWUKCiMgU291dGggR2VvcmdpYQojIFpvbmUJTkFNRQkJR01UT0ZGCVJVTEVTCUZPUk1BVAlbVU5USUxdClpvbmUgQXRsYW50aWMvU291dGhfR2VvcmdpYSAtMjoyNjowOCAtCUxNVAkxODkwCQkjIEdyeXR2aWtlbgoJCQktMjowMAktCUdTVAkjIFNvdXRoIEdlb3JnaWEgVGltZQoKIyBTb3V0aCBTYW5kd2ljaCBJcwojIHVuaW5oYWJpdGVkOyBzY2llbnRpZmljIHBlcnNvbm5lbCBoYXZlIHdpbnRlcmVkCgojIFN1cmluYW1lCiMgWm9uZQlOQU1FCQlHTVRPRkYJUlVMRVMJRk9STUFUCVtVTlRJTF0KWm9uZSBBbWVyaWNhL1BhcmFtYXJpYm8JLTM6NDA6NDAgLQlMTVQJMTkxMQoJCQktMzo0MDo1MiAtCVBNVAkxOTM1ICAgICAjIFBhcmFtYXJpYm8gTWVhbiBUaW1lCgkJCS0zOjQwOjM2IC0JUE1UCTE5NDUgT2N0ICMgVGhlIGNhcGl0YWwgbW92ZWQ/CgkJCS0zOjMwCS0JTkVHVAkxOTc1IE5vdiAyMCAjIER1dGNoIEd1aWFuYSBUaW1lCgkJCS0zOjMwCS0JU1JUCTE5ODQgT2N0ICMgU3VyaW5hbWUgVGltZQoJCQktMzowMAktCVNSVAoKIyBUcmluaWRhZCBhbmQgVG9iYWdvCiMgWm9uZQlOQU1FCQlHTVRPRkYJUlVMRVMJRk9STUFUCVtVTlRJTF0KWm9uZSBBbWVyaWNhL1BvcnRfb2ZfU3BhaW4gLTQ6MDY6MDQgLQlMTVQJMTkxMiBNYXIgMgoJCQktNDowMAktCUFTVAoKIyBVcnVndWF5CiMgRnJvbSBQYXVsIEVnZ2VydCAoMTk5My0xMS0xOCk6CiMgVXJ1Z3VheSB3aW5zIHRoZSBwcml6ZSBmb3IgdGhlIHN0cmFuZ2VzdCBwZWFjZXRpbWUgbWFuaXB1bGF0aW9uIG9mIHRoZSBydWxlcy4KIyBGcm9tIFNoYW5rcyAmIFBvdHRlbmdlcjoKIyBSdWxlCU5BTUUJRlJPTQlUTwlUWVBFCUlOCU9OCUFUCVNBVkUJTEVUVEVSL1MKIyBXaGl0bWFuIGdpdmVzIDE5MjMgT2N0IDE7IGdvIHdpdGggU2hhbmtzICYgUG90dGVuZ2VyLgpSdWxlCVVydWd1YXkJMTkyMwlvbmx5CS0JT2N0CSAyCSAwOjAwCTA6MzAJSFMKUnVsZQlVcnVndWF5CTE5MjQJMTkyNgktCUFwcgkgMQkgMDowMAkwCS0KUnVsZQlVcnVndWF5CTE5MjQJMTkyNQktCU9jdAkgMQkgMDowMAkwOjMwCUhTClJ1bGUJVXJ1Z3VheQkxOTMzCTE5MzUJLQlPY3QJbGFzdFN1bgkgMDowMAkwOjMwCUhTCiMgU2hhbmtzICYgUG90dGVuZ2VyIGdpdmUgMTkzNSBBcHIgMSAwOjAwICYgMTkzNiBNYXIgMzAgMDowMDsgZ28gd2l0aCBXaGl0bWFuLgpSdWxlCVVydWd1YXkJMTkzNAkxOTM2CS0JTWFyCVNhdD49MjUJMjM6MzBzCTAJLQpSdWxlCVVydWd1YXkJMTkzNglvbmx5CS0JTm92CSAxCSAwOjAwCTA6MzAJSFMKUnVsZQlVcnVndWF5CTE5MzcJMTk0MQktCU1hcglsYXN0U3VuCSAwOjAwCTAJLQojIFdoaXRtYW4gZ2l2ZXMgMTkzNyBPY3QgMzsgZ28gd2l0aCBTaGFua3MgJiBQb3R0ZW5nZXIuClJ1bGUJVXJ1Z3VheQkxOTM3CTE5NDAJLQlPY3QJbGFzdFN1bgkgMDowMAkwOjMwCUhTCiMgV2hpdG1hbiBnaXZlcyAxOTQxIE9jdCAyNCAtIDE5NDIgTWFyIDI3LCAxOTQyIERlYyAxNCAtIDE5NDMgQXByIDEzLAojIGFuZCAxOTQzIEFwciAxMyBgYHRvIHByZXNlbnQgdGltZScnOyBnbyB3aXRoIFNoYW5rcyAmIFBvdHRlbmdlci4KUnVsZQlVcnVndWF5CTE5NDEJb25seQktCUF1ZwkgMQkgMDowMAkwOjMwCUhTClJ1bGUJVXJ1Z3VheQkxOTQyCW9ubHkJLQlKYW4JIDEJIDA6MDAJMAktClJ1bGUJVXJ1Z3VheQkxOTQyCW9ubHkJLQlEZWMJMTQJIDA6MDAJMTowMAlTClJ1bGUJVXJ1Z3VheQkxOTQzCW9ubHkJLQlNYXIJMTQJIDA6MDAJMAktClJ1bGUJVXJ1Z3VheQkxOTU5CW9ubHkJLQlNYXkJMjQJIDA6MDAJMTowMAlTClJ1bGUJVXJ1Z3VheQkxOTU5CW9ubHkJLQlOb3YJMTUJIDA6MDAJMAktClJ1bGUJVXJ1Z3VheQkxOTYwCW9ubHkJLQlKYW4JMTcJIDA6MDAJMTowMAlTClJ1bGUJVXJ1Z3VheQkxOTYwCW9ubHkJLQlNYXIJIDYJIDA6MDAJMAktClJ1bGUJVXJ1Z3VheQkxOTY1CTE5NjcJLQlBcHIJU3VuPj0xCSAwOjAwCTE6MDAJUwpSdWxlCVVydWd1YXkJMTk2NQlvbmx5CS0JU2VwCTI2CSAwOjAwCTAJLQpSdWxlCVVydWd1YXkJMTk2NgkxOTY3CS0JT2N0CTMxCSAwOjAwCTAJLQpSdWxlCVVydWd1YXkJMTk2OAkxOTcwCS0JTWF5CTI3CSAwOjAwCTA6MzAJSFMKUnVsZQlVcnVndWF5CTE5NjgJMTk3MAktCURlYwkgMgkgMDowMAkwCS0KUnVsZQlVcnVndWF5CTE5NzIJb25seQktCUFwcgkyNAkgMDowMAkxOjAwCVMKUnVsZQlVcnVndWF5CTE5NzIJb25seQktCUF1ZwkxNQkgMDowMAkwCS0KUnVsZQlVcnVndWF5CTE5NzQJb25seQktCU1hcgkxMAkgMDowMAkwOjMwCUhTClJ1bGUJVXJ1Z3VheQkxOTc0CW9ubHkJLQlEZWMJMjIJIDA6MDAJMTowMAlTClJ1bGUJVXJ1Z3VheQkxOTc2CW9ubHkJLQlPY3QJIDEJIDA6MDAJMAktClJ1bGUJVXJ1Z3VheQkxOTc3CW9ubHkJLQlEZWMJIDQJIDA6MDAJMTowMAlTClJ1bGUJVXJ1Z3VheQkxOTc4CW9ubHkJLQlBcHIJIDEJIDA6MDAJMAktClJ1bGUJVXJ1Z3VheQkxOTc5CW9ubHkJLQlPY3QJIDEJIDA6MDAJMTowMAlTClJ1bGUJVXJ1Z3VheQkxOTgwCW9ubHkJLQlNYXkJIDEJIDA6MDAJMAktClJ1bGUJVXJ1Z3VheQkxOTg3CW9ubHkJLQlEZWMJMTQJIDA6MDAJMTowMAlTClJ1bGUJVXJ1Z3VheQkxOTg4CW9ubHkJLQlNYXIJMTQJIDA6MDAJMAktClJ1bGUJVXJ1Z3VheQkxOTg4CW9ubHkJLQlEZWMJMTEJIDA6MDAJMTowMAlTClJ1bGUJVXJ1Z3VheQkxOTg5CW9ubHkJLQlNYXIJMTIJIDA6MDAJMAktClJ1bGUJVXJ1Z3VheQkxOTg5CW9ubHkJLQlPY3QJMjkJIDA6MDAJMTowMAlTCiMgU2hhbmtzICYgUG90dGVuZ2VyIHNheSBubyBEU1Qgd2FzIG9ic2VydmVkIGluIDE5OTAvMSBhbmQgMTk5MS8yLAojIGFuZCB0aGF0IDE5OTIvMydzIERTVCB3YXMgZnJvbSAxMC0yNSB0byAwMy0wMS4gIEdvIHdpdGggSUFUQS4KUnVsZQlVcnVndWF5CTE5OTAJMTk5MgktCU1hcglTdW4+PTEJIDA6MDAJMAktClJ1bGUJVXJ1Z3VheQkxOTkwCTE5OTEJLQlPY3QJU3VuPj0yMQkgMDowMAkxOjAwCVMKUnVsZQlVcnVndWF5CTE5OTIJb25seQktCU9jdAkxOAkgMDowMAkxOjAwCVMKUnVsZQlVcnVndWF5CTE5OTMJb25seQktCUZlYgkyOAkgMDowMAkwCS0KIyBGcm9tIEVkdWFyZG8gQ290YSAoMjAwNC0wOS0yMCk6CiMgVGhlIHVydWd1YXlhbiBnb3Zlcm5tZW50IGhhcyBkZWNyZWVkIGEgY2hhbmdlIGluIHRoZSBsb2NhbCB0aW1lLi4uLgojIGh0dHA6Ly93d3cucHJlc2lkZW5jaWEuZ3ViLnV5L2RlY3JldG9zLzIwMDQwOTE1MDIuaHRtClJ1bGUJVXJ1Z3VheQkyMDA0CW9ubHkJLQlTZXAJMTkJIDA6MDAJMTowMAlTCiMgRnJvbSBTdGVmZmVuIFRob3JzZW4gKDIwMDUtMDMtMTEpOgojIFVydWd1YXkncyBEU1Qgd2FzIHNjaGVkdWxlZCB0byBlbmQgb24gU3VuZGF5LCAyMDA1LTAzLTEzLCBidXQgaW4gb3JkZXIgdG8KIyBzYXZlIGVuZXJneSAuLi4gaXQgd2FzIHBvc3Rwb25lZCB0d28gd2Vla3MuLi4uCiMgaHR0cDovL3d3dy5wcmVzaWRlbmNpYS5ndWIudXkvX1dlYi9ub3RpY2lhcy8yMDA1LzAzLzIwMDUwMzEwMDUuaHRtClJ1bGUJVXJ1Z3VheQkyMDA1CW9ubHkJLQlNYXIJMjcJIDI6MDAJMAktCiMgRnJvbSBFZHVhcmRvIENvdGEgKDIwMDUtMDktMjcpOgojIGh0dHA6Ly93d3cucHJlc2lkZW5jaWEuZ3ViLnV5L19XZWIvZGVjcmV0b3MvMjAwNS8wOS9DTSUyMDExOV8wOSUyMDA5JTIwMjAwNV8wMDAwMS5QREYKIyBUaGlzIG1lYW5zIHRoYXQgZnJvbSAyMDA1LTEwLTA5IGF0IDAyOjAwIGxvY2FsIHRpbWUsIHVudGlsIDIwMDYtMDMtMTIgYXQKIyAwMjowMCBsb2NhbCB0aW1lLCBvZmZpY2lhbCB0aW1lIGluIFVydWd1YXkgd2lsbCBiZSBhdCBHTVQgLTIuClJ1bGUJVXJ1Z3VheQkyMDA1CW9ubHkJLQlPY3QJIDkJIDI6MDAJMTowMAlTClJ1bGUJVXJ1Z3VheQkyMDA2CW9ubHkJLQlNYXIJMTIJIDI6MDAJMAktCiMgRnJvbSBKZXNwZXIgTm9yZ2FhcmQgV2VsZW4gKDIwMDYtMDktMDYpOgojIGh0dHA6Ly93d3cucHJlc2lkZW5jaWEuZ3ViLnV5L193ZWIvZGVjcmV0b3MvMjAwNi8wOS9DTSUyMDIxMF8wOCUyMDA2JTIwMjAwNl8wMDAwMS5QREYKUnVsZQlVcnVndWF5CTIwMDYJbWF4CS0JT2N0CVN1bj49MQkgMjowMAkxOjAwCVMKUnVsZQlVcnVndWF5CTIwMDcJbWF4CS0JTWFyCVN1bj49OAkgMjowMAkwCS0KIyBab25lCU5BTUUJCUdNVE9GRglSVUxFUwlGT1JNQVQJW1VOVElMXQpab25lIEFtZXJpY2EvTW9udGV2aWRlbwktMzo0NDo0NCAtCUxNVAkxODk4IEp1biAyOAoJCQktMzo0NDo0NCAtCU1NVAkxOTIwIE1heSAgMQkjIE1vbnRldmlkZW8gTVQKCQkJLTM6MzAJVXJ1Z3VheQlVWSVzVAkxOTQyIERlYyAxNAkjIFVydWd1YXkgVGltZQoJCQktMzowMAlVcnVndWF5CVVZJXNUCgojIFZlbmV6dWVsYQojCiMgRnJvbSBKb2huIFN0YWluZm9ydGggKDIwMDctMTEtMjgpOgojIC4uLiB0aGUgY2hhbmdlIGZvciBWZW5lenVlbGEgb3JpZ2luYWxseSBleHBlY3RlZCBmb3IgMjAwNy0xMi0zMSBoYXMKIyBiZWVuIGJyb3VnaHQgZm9yd2FyZCB0byAyMDA3LTEyLTA5LiAgVGhlIG9mZmljaWFsIGFubm91bmNlbWVudCB3YXMKIyBwdWJsaXNoZWQgdG9kYXkgaW4gdGhlICJHYWNldGEgT2ZpY2lhbCBkZSBsYSBSZXB1YmxpY2EgQm9saXZhcmlhbmEKIyBkZSBWZW5lenVlbGEsIG51bWVybyAzOC44MTkiIChvZmZpY2lhbCBkb2N1bWVudCBmb3IgYWxsIGxhd3Mgb3IKIyByZXNvbHV0aW9uIHB1YmxpY2F0aW9uKQojIGh0dHA6Ly93d3cuZ2xvYm92aXNpb24uY29tL25ld3MucGhwP25pZD03MjIwOAoKIyBab25lCU5BTUUJCUdNVE9GRglSVUxFUwlGT1JNQVQJW1VOVElMXQpab25lCUFtZXJpY2EvQ2FyYWNhcwktNDoyNzo0NCAtCUxNVAkxODkwCgkJCS00OjI3OjQwIC0JQ01UCTE5MTIgRmViIDEyICMgQ2FyYWNhcyBNZWFuIFRpbWU/CgkJCS00OjMwCS0JVkVUCTE5NjUJICAgICAjIFZlbmV6dWVsYSBUaW1lCgkJCS00OjAwCS0JVkVUCTIwMDcgRGVjICA5IDAzOjAwCgkJCS00OjMwCS0JVkVUCg==