I2lmbmRlZiBUQVJHRVRfUEFSQU1TX0gKI2RlZmluZSBUQVJHRVRfUEFSQU1TX0gKCnR5cGVkZWYgc3RydWN0IF9UQVJHRVRfUEFSQU1TCnsKICAgICAgQl9VSU5UMzIgbV91MzJDZmdWZXJzaW9uOwoKICAgICAgLy8gU2Nhbm5pbmcgUmVsYXRlZCBQYXJhbXMKICAgICAgQl9VSU5UMzIgbV91MzJDZW50ZXJGcmVxdWVuY3k7CiAgICAgIEJfVUlOVDMyIG1fdTMyQmFuZEFTY2FuOwogICAgICBCX1VJTlQzMiBtX3UzMkJhbmRCU2NhbjsKICAgICAgQl9VSU5UMzIgbV91MzJCYW5kQ1NjYW47CgoKICAgICAgLy8gUW9TIFBhcmFtcwogICAgICBCX1VJTlQzMiBtX3UzMkVydHBzT3B0aW9uczsKCiAgICAgIEJfVUlOVDMyIG1fdTMyUEhTRW5hYmxlOwoKCiAgICAgIC8vIEhPIFBhcmFtcwogICAgICBCX1VJTlQzMiBtX3UzMkhvRW5hYmxlOwoKICAgICAgQl9VSU5UMzIgbV91MzJIb1Jlc2VydmVkMTsKICAgICAgQl9VSU5UMzIgbV91MzJIb1Jlc2VydmVkMjsKICAgICAgLy8gUG93ZXIgQ29udHJvbCBQYXJhbXMKCiAgICAgIEJfVUlOVDMyIG1fdTMyTWltb0VuYWJsZTsKCiAgICAgIEJfVUlOVDMyIG1fdTMyU2VjdXJpdHlFbmFibGU7CgogICAgICBCX1VJTlQzMiBtX3UzMlBvd2VyU2F2aW5nTW9kZXNFbmFibGU7IC8vYml0IDE6IDEgSWRsZW1vZGUgZW5hYmxlOyBiaXQyOiAxIFNsZWVwbW9kZSBFbmFibGUKCSAgLyogUG93ZXJTYXZpbmcgTW9kZSBPcHRpb25zOgoJICAgICBiaXQgMCA9IDE6IENQRSBtb2RlIC0gdG8ga2VlcCBwY21jaWEgaWYgYWxpdmU7CgkgICAgIGJpdCAxID0gMTogQ0lOUiByZXBvcmluZyBpbiBJZGxlbW9kZSBNc2cKCSAgICAgYml0IDIgPSAxOiBEZWZhdWx0IFBTQyBFbmFibGUgaW4gc2xlZXBtb2RlKi8KICAgICAgQl9VSU5UMzIgbV91MzJQb3dlclNhdmluZ01vZGVPcHRpb25zOwoKICAgICAgQl9VSU5UMzIgbV91MzJBcnFFbmFibGU7CgogICAgICAvLyBGcm9tIFZlcnNpb24gIzMsIHRoZSBIQVJRIHNlY3Rpb24gcmVuYW1lZCBhcyBnZW5lcmFsCiAgICAgIEJfVUlOVDMyIG1fdTMySGFycUVuYWJsZTsKICAgICAgIC8vIEVFUFJPTSBQYXJhbSBMb2NhdGlvbgogICAgICAgQl9VSU5UMzIgIG1fdTMyRUVQUk9NRmxhZzsKICAgICAgIC8vIEJJTkFSWSBUWVBFIC0gNHRoIE1TQnl0ZTogSW50ZXJmYWNlIFR5cGUgLSAgM3JkIE1TQnl0ZTogVmVuZG9yIFR5cGUgLSAybmQgTVNCeXRlCiAgICAgICAvLyBVbnVzZWQgLSBMU0J5dGUKICAgICAgQl9VSU5UMzIgICBtX3UzMkN1c3RvbWl6ZTsKICAgICAgQl9VSU5UMzIgICBtX3UzMkNvbmZpZ0JXOyAgLyogSW4gSHogKi8KICAgICAgQl9VSU5UMzIgICBtX3UzMlNodXREb3duSW5pdFRocmVzaG9sZFRpbWVyOwoKICAgICAgQl9VSU5UMzIgIG1fdTMyUmFkaW9QYXJhbWV0ZXI7CiAgICAgIEJfVUlOVDMyICBtX3UzMlBoeVBhcmFtZXRlcjE7CiAgICAgIEJfVUlOVDMyICBtX3UzMlBoeVBhcmFtZXRlcjI7CiAgICAgIEJfVUlOVDMyICBtX3UzMlBoeVBhcmFtZXRlcjM7CgogICAgICBCX1VJTlQzMgkgIG1fdTMyVGVzdE9wdGlvbnM7IC8vIGluIGV2YWwgbW9kZSBvbmx5OyBsb3dlciAxNmJpdHMgPSBiYXNpYyBjaWQgZm9yIHRlc3Rpbmc7IHRoZW4gYml0IDE2IGlzIHRlc3QgY3FpY2gsYml0IDE3ICB0ZXN0IGluaXQgcmFuZzsgYml0IDE4IHRlc3QgcGVyaW9kaWMgcmFuZyBhbmQgYml0IDE5IGlzIHRlc3QgaGFycSBhY2svbmFjawoKCUJfVUlOVDMyIG1fdTMyTWF4TUFDRGF0YXBlckRMRnJhbWU7CglCX1VJTlQzMiBtX3UzMk1heE1BQ0RhdGFwZXJVTEZyYW1lOwoKCUJfVUlOVDMyIG1fdTMyQ29ycjJNYWNGbGFnczsKCiAgICAvL2FkZGluZyBkcml2ZXIgcGFyYW1zLgoJQl9VSU5UMzIgSG9zdERydnJDb25maWcxOwogICAgQl9VSU5UMzIgSG9zdERydnJDb25maWcyOwogICAgQl9VSU5UMzIgSG9zdERydnJDb25maWczOwogICAgQl9VSU5UMzIgSG9zdERydnJDb25maWc0OwogICAgQl9VSU5UMzIgSG9zdERydnJDb25maWc1OwogICAgQl9VSU5UMzIgSG9zdERydnJDb25maWc2OwogICAgQl9VSU5UMzIgbV91MzJTZWdtZW50ZWRQVVNDZW5hYmxlOwoKCS8vIHJlbW92ZWQgU0hVVCBkb3duIHJlbGF0ZWQgJ3VudXNlZCcgcGFyYW1zIGZyb20gaGVyZSB0byBzeW5jIDQueCBhbmQgNS54IENGRyBmaWxlcy4uCgogICAgLy9CQU1DIFJlbGF0ZWQgUGFyYW1ldGVycwogICAgLy9CaXQgMC0xNSBCYW5kIEFNQyBzaWduYWxpbmcgY29uZmlndXJhdGlvbjogQml0IDEgPSAxIJYgRW5hYmxlIEJhbmQgQU1DIHNpZ25hbGluZy4KICAgIC8vYml0IDE2LTMxIEJhbmQgQU1DIERhdGEgY29uZmlndXJhdGlvbjogQml0IDE2ID0gMSCWIEJhbmQgQU1DIDJ4MyBzdXBwb3J0LgoJQl9VSU5UMzIgbV91MzJCYW5kQU1DRW5hYmxlOwoKfSBzdFRhcmdldFBhcmFtcyxUQVJHRVRfUEFSQU1TLCpQVEFSR0VUX1BBUkFNUywgU1RBUkdFVFBBUkFNUywgKlBTVEFSR0VUUEFSQU1TOwoKI2VuZGlmCg==