LyogSGV5LCBFbWFjcywgb3BlbiB0aGlzIGZpbGUgd2l0aCAtKi0gY29kaW5nOiBjcDEyNTAgLSotCiAqCiAqIEN6ZWNoIHJlc291cmNlcyBmb3Igd2luZXBzCiAqIENvcHlyaWdodCAyMDAwIEh1dyBEIE0gRGF2aWVzCiAqIENvcHlyaWdodCAyMDA0IERhdmlkIEtyZWRiYQogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojaW5jbHVkZSAicHNkbGcuaCIKCkxBTkdVQUdFIExBTkdfQ1pFQ0gsIFNVQkxBTkdfREVGQVVMVAoKLyogQ3plY2ggc3RyaW5ncyBpbiBDUDEyNTAgKi8KClBBUEVSIERJQUxPRyBMT0FET05DQUxMIE1PVkVBQkxFIERJU0NBUkRBQkxFIDUsIDQzLCAyMjcsIDIxNQpTVFlMRSAgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfQ0xJUFNJQkxJTkdTIHwgV1NfVklTSUJMRQpDQVBUSU9OICJQYXDtciIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CiBMVEVYVCAiJlZlbGlrb3N0IHBhcO1ydToiLCAtMSwgMTAsIDYsIDEwMCwgOAogTElTVEJPWCBJRERfUEFQRVJTLCAxMCwgMTUsIDIwMCwgNDUsIExCU19TVEFOREFSRCB8IExCU19IQVNTVFJJTkdTIHwKCSBXU19UQUJTVE9QCiBHUk9VUEJPWCAiT3JpZW50YWNlIiwgLTEsIDEwLCA4MCwgMjAwLCA1MAogQ09OVFJPTCAiJk5hIHb9mmt1IiwgSUREX09SSUVOVF9QT1JUUkFJVCwgIkJ1dHRvbiIsIEJTX0FVVE9SQURJT0JVVFRPTiB8CglXU19UQUJTVE9QLCAyMCwgOTAsIDYwLCAxMAogQ09OVFJPTCAiTiZhIJrt+Gt1IiwgSUREX09SSUVOVF9MQU5EU0NBUEUsICJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04sCgkgMjAsIDExMCwgNjAsIDEwCiBMVEVYVCAiT2JvdXN0cmFubuw6IiwgSUREX0RVUExFWF9OQU1FLCAxMCwgMTQwLCAxMDAsIDggCiBDT01CT0JPWCBJRERfRFVQTEVYLCAxMCwgMTUxLCAyMDAsIDIwLCBDQlNfRFJPUERPV05MSVNUIHwgQ0JTX0hBU1NUUklOR1MgfAogICAgICAgIFdTX1RBQlNUT1AKfQo=