IyMKIyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGNvcmVib290IHByb2plY3QuCiMjCiMjIENvcHlyaWdodCAoQykgMjAwNy0yMDA4IGNvcmVzeXN0ZW1zIEdtYkgKIyMKIyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgojIwojIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIwojIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKIyMKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZW50cmllcwoKI3N0YXJ0LWJpdCBsZW5ndGggIGNvbmZpZyBjb25maWctSUQgICAgbmFtZQojMCAgICAgICAgICAgIDggICAgICAgciAgICAgICAwICAgICAgICBzZWNvbmRzCiM4ICAgICAgICAgICAgOCAgICAgICByICAgICAgIDAgICAgICAgIGFsYXJtX3NlY29uZHMKIzE2ICAgICAgICAgICA4ICAgICAgIHIgICAgICAgMCAgICAgICAgbWludXRlcwojMjQgICAgICAgICAgIDggICAgICAgciAgICAgICAwICAgICAgICBhbGFybV9taW51dGVzCiMzMiAgICAgICAgICAgOCAgICAgICByICAgICAgIDAgICAgICAgIGhvdXJzCiM0MCAgICAgICAgICAgOCAgICAgICByICAgICAgIDAgICAgICAgIGFsYXJtX2hvdXJzCiM0OCAgICAgICAgICAgOCAgICAgICByICAgICAgIDAgICAgICAgIGRheV9vZl93ZWVrCiM1NiAgICAgICAgICAgOCAgICAgICByICAgICAgIDAgICAgICAgIGRheV9vZl9tb250aAojNjQgICAgICAgICAgIDggICAgICAgciAgICAgICAwICAgICAgICBtb250aAojNzIgICAgICAgICAgIDggICAgICAgciAgICAgICAwICAgICAgICB5ZWFyCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBTdGF0dXMgUmVnaXN0ZXIgQQojODAgICAgICAgICAgIDQgICAgICAgciAgICAgICAwICAgICAgICByYXRlX3NlbGVjdAojODQgICAgICAgICAgIDMgICAgICAgciAgICAgICAwICAgICAgICBSRUZfQ2xvY2sKIzg3ICAgICAgICAgICAxICAgICAgIHIgICAgICAgMCAgICAgICAgVUlQCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBTdGF0dXMgUmVnaXN0ZXIgQgojODggICAgICAgICAgIDEgICAgICAgciAgICAgICAwICAgICAgICBhdXRvX3N3aXRjaF9EU1QKIzg5ICAgICAgICAgICAxICAgICAgIHIgICAgICAgMCAgICAgICAgMjRfaG91cl9tb2RlCiM5MCAgICAgICAgICAgMSAgICAgICByICAgICAgIDAgICAgICAgIGJpbmFyeV92YWx1ZXNfZW5hYmxlCiM5MSAgICAgICAgICAgMSAgICAgICByICAgICAgIDAgICAgICAgIHNxdWFyZS13YXZlX291dF9lbmFibGUKIzkyICAgICAgICAgICAxICAgICAgIHIgICAgICAgMCAgICAgICAgdXBkYXRlX2ZpbmlzaGVkX2VuYWJsZQojOTMgICAgICAgICAgIDEgICAgICAgciAgICAgICAwICAgICAgICBhbGFybV9pbnRlcnJ1cHRfZW5hYmxlCiM5NCAgICAgICAgICAgMSAgICAgICByICAgICAgIDAgICAgICAgIHBlcmlvZGljX2ludGVycnVwdF9lbmFibGUKIzk1ICAgICAgICAgICAxICAgICAgIHIgICAgICAgMCAgICAgICAgZGlzYWJsZV9jbG9ja191cGRhdGVzCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBTdGF0dXMgUmVnaXN0ZXIgQwojOTYgICAgICAgICAgIDQgICAgICAgciAgICAgICAwICAgICAgICBzdGF0dXNfY19yc3ZkCiMxMDAgICAgICAgICAgMSAgICAgICByICAgICAgIDAgICAgICAgIHVmX2ZsYWcKIzEwMSAgICAgICAgICAxICAgICAgIHIgICAgICAgMCAgICAgICAgYWZfZmxhZwojMTAyICAgICAgICAgIDEgICAgICAgciAgICAgICAwICAgICAgICBwZl9mbGFnCiMxMDMgICAgICAgICAgMSAgICAgICByICAgICAgIDAgICAgICAgIGlycWZfZmxhZwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgU3RhdHVzIFJlZ2lzdGVyIEQKIzEwNCAgICAgICAgICA3ICAgICAgIHIgICAgICAgMCAgICAgICAgc3RhdHVzX2RfcnN2ZAojMTExICAgICAgICAgIDEgICAgICAgciAgICAgICAwICAgICAgICB2YWxpZF9jbW9zX3JhbQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgRGlhZ25vc3RpYyBTdGF0dXMgUmVnaXN0ZXIKIzExMiAgICAgICAgICA4ICAgICAgIHIgICAgICAgMCAgICAgICAgZGlhZ19yc3ZkMQoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQowICAgICAgICAgIDEyMCAgICAgICByICAgICAgIDAgICAgICAgIHJlc2VydmVkX21lbW9yeQojMTIwICAgICAgICAyNjQgICAgICAgciAgICAgICAwICAgICAgICB1bnVzZWQKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBSVENfQk9PVF9CWVRFIChjb3JlYm9vdCBoYXJkY29kZWQpCjM4NCAgICAgICAgICAxICAgICAgIGUgICAgICAgNCAgICAgICAgYm9vdF9vcHRpb24KMzg1ICAgICAgICAgIDEgICAgICAgZSAgICAgICA0ICAgICAgICBsYXN0X2Jvb3QKMzg4ICAgICAgICAgIDQgICAgICAgciAgICAgICAwICAgICAgICByZWJvb3RfYml0cwojMzkwICAgICAgICAgIDIgICAgICAgciAgICAgICAwICAgICAgICB1bnVzZWQ/CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgY29yZWJvb3QgY29uZmlnIG9wdGlvbnM6IGNvbnNvbGUKMzkyICAgICAgICAgIDMgICAgICAgZSAgICAgICA1ICAgICAgICBiYXVkX3JhdGUKMzk1ICAgICAgICAgIDQgICAgICAgZSAgICAgICA2ICAgICAgICBkZWJ1Z19sZXZlbAojMzk5ICAgICAgICAgIDEgICAgICAgciAgICAgICAwICAgICAgICB1bnVzZWQKCiMgY29yZWJvb3QgY29uZmlnIG9wdGlvbnM6IGNwdQo0MDAgICAgICAgICAgMSAgICAgICBlICAgICAgIDIgICAgICAgIGh5cGVyX3RocmVhZGluZwojNDAxICAgICAgICAgIDcgICAgICAgciAgICAgICAwICAgICAgICB1bnVzZWQKCiMgY29yZWJvb3QgY29uZmlnIG9wdGlvbnM6IHNvdXRoYnJpZGdlCjQwOCAgICAgICAgICAxICAgICAgIGUgICAgICAgMSAgICAgICAgbm1pCjQwOSAgICAgICAgICAyICAgICAgIGUgICAgICAgNyAgICAgICAgcG93ZXJfb25fYWZ0ZXJfZmFpbAojNDExICAgICAgICAgIDUgICAgICAgciAgICAgICAwICAgICAgICB1bnVzZWQKCiMgY29yZWJvb3QgY29uZmlnIG9wdGlvbnM6IGJvb3Rsb2FkZXIKNDE2ICAgICAgICA1MTIgICAgICAgcyAgICAgICAwICAgICAgICBib290X2RldmljZXMKIzkyOCAgICAgICAgIDQwICAgICAgIHIgICAgICAgMCAgICAgICAgdW51c2VkCgojIGNvcmVib290IGNvbmZpZyBvcHRpb25zOiBtYWluYm9hcmQgc3BlY2lmaWMgb3B0aW9ucwo5NDggICAgICAgICAgMiAgICAgICBlICAgICAgIDggICAgICAgIGNwdWZhbl9jcnVpc2VfY29udHJvbAo5NTAgICAgICAgICAgMiAgICAgICBlICAgICAgIDggICAgICAgIHN5c2Zhbl9jcnVpc2VfY29udHJvbAo5NTIgICAgICAgICAgNCAgICAgICBlICAgICAgIDkgICAgICAgIGNwdWZhbl9zcGVlZAojOTU2ICAgICAgICAgIDQgICAgICAgZSAgICAgICAxMCAgICAgICBjcHVmYW5fdGVtcGVyYXR1cmUKOTYwICAgICAgICAgIDQgICAgICAgZSAgICAgICA5ICAgICAgICBzeXNmYW5fc3BlZWQKIzk2NCAgICAgICAgICA0ICAgICAgIGUgICAgICAgMTAgICAgICAgc3lzZmFuX3RlbXBlcmF0dXJlCgo5NjggICAgICAgICAgMSAgICAgICBlICAgICAgIDIgICAgICAgIGV0aGVybmV0MQo5NjkgICAgICAgICAgMSAgICAgICBlICAgICAgIDIgICAgICAgIGV0aGVybmV0Mgo5NzAgICAgICAgICAgMSAgICAgICBlICAgICAgIDIgICAgICAgIGV0aGVybmV0MwoKIzk3MSAgICAgICAgICAxMyAgICAgICByICAgICAgIDAgICAgICAgIHVudXNlZAoKIyBjb3JlYm9vdCBjb25maWcgb3B0aW9uczogY2hlY2sgc3Vtcwo5ODQgICAgICAgICAxNiAgICAgICBoICAgICAgIDAgICAgICAgIGNoZWNrX3N1bQojMTAwMCAgICAgICAgMjQgICAgICAgciAgICAgICAwICAgICAgICBhbWRfcmVzZXJ2ZWQKCiMgcmFtIGluaXRpYWxpemF0aW9uIGludGVybmFsIGRhdGEKMTAyNCAgICAgICAgIDggICAgICAgciAgICAgICAwICAgICAgICBDMFdMMFJFT1NUCjEwMzIgICAgICAgICA4ICAgICAgIHIgICAgICAgMCAgICAgICAgQzFXTDBSRU9TVAoxMDQwICAgICAgICAgOCAgICAgICByICAgICAgIDAgICAgICAgIFJDVkVOTVQKMTA0OCAgICAgICAgIDQgICAgICAgciAgICAgICAwICAgICAgICBDMERSVDEKMTA1MiAgICAgICAgIDQgICAgICAgciAgICAgICAwICAgICAgICBDMURSVDEKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmVudW1lcmF0aW9ucwoKI0lEIHZhbHVlICAgdGV4dAoxICAgICAwICAgICBEaXNhYmxlCjEgICAgIDEgICAgIEVuYWJsZQoyICAgICAwICAgICBFbmFibGUKMiAgICAgMSAgICAgRGlzYWJsZQo0ICAgICAwICAgICBGYWxsYmFjawo0ICAgICAxICAgICBOb3JtYWwKNSAgICAgMCAgICAgMTE1MjAwCjUgICAgIDEgICAgIDU3NjAwCjUgICAgIDIgICAgIDM4NDAwCjUgICAgIDMgICAgIDE5MjAwCjUgICAgIDQgICAgIDk2MDAKNSAgICAgNSAgICAgNDgwMAo1ICAgICA2ICAgICAyNDAwCjUgICAgIDcgICAgIDEyMDAKNiAgICAgMSAgICAgRW1lcmdlbmN5CjYgICAgIDIgICAgIEFsZXJ0CjYgICAgIDMgICAgIENyaXRpY2FsCjYgICAgIDQgICAgIEVycm9yCjYgICAgIDUgICAgIFdhcm5pbmcKNiAgICAgNiAgICAgTm90aWNlCjYgICAgIDcgICAgIEluZm8KNiAgICAgOCAgICAgRGVidWcKNiAgICAgOSAgICAgU3Bldwo3ICAgICAwICAgICBEaXNhYmxlCjcgICAgIDEgICAgIEVuYWJsZQo3ICAgICAyICAgICBLZWVwCiMgRmFuIENydWlzZSBDb250cm9sCjggICAgIDAgICAgIERpc2FibGVkCjggICAgIDEgICAgIFNwZWVkCiM4ICAgICAyICAgICBUaGVybWFsCiMgRmFuIFNwZWVkIChSb3RhdGlvbnMgcGVyIE1pbnV0ZSkKOSAgICAgMCAgICAgNTYyNQo5ICAgICAxICAgICA1MTkyCjkgICAgIDIgICAgIDQ3NTMKOSAgICAgMyAgICAgNDMyNgo5ICAgICA0ICAgICAzOTI0CjkgICAgIDUgICAgIDM1NTIKOSAgICAgNiAgICAgMzIxNAo5ICAgICA3ICAgICAyOTA5CjkgICAgIDggICAgIDI2MzYKOSAgICAgOSAgICAgMjM5Mwo5ICAgIDEwICAgICAyMTc3CjkgICAgMTEgICAgIDE5ODUKOSAgICAxMiAgICAgMTgxNAo5ICAgIDEzICAgICAxNjYyCjkgICAgMTQgICAgIDE1MjcKOSAgICAxNSAgICAgMTQwNgojCiMgVGVtcGVyYXR1cmUgKLBDL7BGKQojMTAgICAgIDAgICAgIDMwLzg2CiMxMCAgICAgMSAgICAgMzMvOTEKIzEwICAgICAyICAgICAzNi85NgojMTAgICAgIDMgICAgIDM5LzEwMgojMTAgICAgIDQgICAgIDQyLzEwNwojMTAgICAgIDUgICAgIDQ1LzExMwojMTAgICAgIDYgICAgIDQ4LzExOAojMTAgICAgIDcgICAgIDUxLzEyMwojMTAgICAgIDggICAgIDU0LzEyOQojMTAgICAgIDkgICAgIDU3LzEzNAojMTAgICAgMTAgICAgIDYwLzE0MAojMTAgICAgMTEgICAgIDYzLzE0NQojMTAgICAgMTIgICAgIDY2LzE1MAojMTAgICAgMTMgICAgIDY5LzE1NgojMTAgICAgMTQgICAgIDcyLzE2MQojMTAgICAgMTUgICAgIDc1LzE2NwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmNoZWNrc3VtcwoKY2hlY2tzdW0gMzkyIDk4MyA5ODQKCgo=