fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Ck1PVE9ST0xBIE1JQ1JPUFJPQ0VTU09SICYgTUVNT1JZIFRFQ0hOT0xPR1kgR1JPVVAKTTY4MDAwIEhpLVBlcmZvcm1hbmNlIE1pY3JvcHJvY2Vzc29yIERpdmlzaW9uCk02ODA2MCBTb2Z0d2FyZSBQYWNrYWdlClByb2R1Y3Rpb24gUmVsZWFzZSBQMS4wMCAtLSBPY3RvYmVyIDEwLCAxOTk0CgpNNjgwNjAgU29mdHdhcmUgUGFja2FnZSBDb3B5cmlnaHQgqSAxOTkzLCAxOTk0IE1vdG9yb2xhIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgpUSEUgU09GVFdBUkUgaXMgcHJvdmlkZWQgb24gYW4gIkFTIElTIiBiYXNpcyBhbmQgd2l0aG91dCB3YXJyYW50eS4KVG8gdGhlIG1heGltdW0gZXh0ZW50IHBlcm1pdHRlZCBieSBhcHBsaWNhYmxlIGxhdywKTU9UT1JPTEEgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdIRVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELApJTkNMVURJTkcgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBPUiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQphbmQgYW55IHdhcnJhbnR5IGFnYWluc3QgaW5mcmluZ2VtZW50IHdpdGggcmVnYXJkIHRvIHRoZSBTT0ZUV0FSRQooSU5DTFVESU5HIEFOWSBNT0RJRklFRCBWRVJTSU9OUyBUSEVSRU9GKSBhbmQgYW55IGFjY29tcGFueWluZyB3cml0dGVuIG1hdGVyaWFscy4KClRvIHRoZSBtYXhpbXVtIGV4dGVudCBwZXJtaXR0ZWQgYnkgYXBwbGljYWJsZSBsYXcsCklOIE5PIEVWRU5UIFNIQUxMIE1PVE9ST0xBIEJFIExJQUJMRSBGT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUgooSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiwgREFNQUdFUyBGT1IgTE9TUyBPRiBCVVNJTkVTUyBQUk9GSVRTLApCVVNJTkVTUyBJTlRFUlJVUFRJT04sIExPU1MgT0YgQlVTSU5FU1MgSU5GT1JNQVRJT04sIE9SIE9USEVSIFBFQ1VOSUFSWSBMT1NTKQpBUklTSU5HIE9GIFRIRSBVU0UgT1IgSU5BQklMSVRZIFRPIFVTRSBUSEUgU09GVFdBUkUuCk1vdG9yb2xhIGFzc3VtZXMgbm8gcmVzcG9uc2liaWxpdHkgZm9yIHRoZSBtYWludGVuYW5jZSBhbmQgc3VwcG9ydCBvZiB0aGUgU09GVFdBUkUuCgpZb3UgYXJlIGhlcmVieSBncmFudGVkIGEgY29weXJpZ2h0IGxpY2Vuc2UgdG8gdXNlLCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoZSBTT0ZUV0FSRQpzbyBsb25nIGFzIHRoaXMgZW50aXJlIG5vdGljZSBpcyByZXRhaW5lZCB3aXRob3V0IGFsdGVyYXRpb24gaW4gYW55IG1vZGlmaWVkIGFuZC9vcgpyZWRpc3RyaWJ1dGVkIHZlcnNpb25zLCBhbmQgdGhhdCBzdWNoIG1vZGlmaWVkIHZlcnNpb25zIGFyZSBjbGVhcmx5IGlkZW50aWZpZWQgYXMgc3VjaC4KTm8gbGljZW5zZXMgYXJlIGdyYW50ZWQgYnkgaW1wbGljYXRpb24sIGVzdG9wcGVsIG9yIG90aGVyd2lzZSB1bmRlciBhbnkgcGF0ZW50cwpvciB0cmFkZW1hcmtzIG9mIE1vdG9yb2xhLCBJbmMuCn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgojCiMgbGZwdG9wLnM6CiMJVGhpcyBmaWxlIGlzIGFwcGVuZGVkIHRvIHRoZSB0b3Agb2YgdGhlIDA2MElMU1AgcGFja2FnZQojIGFuZCBjb250YWlucyB0aGUgZW50cnkgcG9pbnRzIGludG8gdGhlIHBhY2thZ2UuIFRoZSB1c2VyLCBpbgojIGVmZmVjdCwgYnJhbmNoZXMgdG8gb25lIG9mIHRoZSBicmFuY2ggdGFibGUgZW50cmllcyBsb2NhdGVkIGhlcmUuCiMKCglicmEubAlfZmFjb3NzXwoJc2hvcnQJMHgwMDAwCglicmEubAlfZmFjb3NkXwoJc2hvcnQJMHgwMDAwCglicmEubAlfZmFjb3N4XwoJc2hvcnQJMHgwMDAwCgoJYnJhLmwJX2Zhc2luc18KCXNob3J0CTB4MDAwMAoJYnJhLmwJX2Zhc2luZF8KCXNob3J0CTB4MDAwMAoJYnJhLmwJX2Zhc2lueF8KCXNob3J0CTB4MDAwMAoKCWJyYS5sCV9mYXRhbnNfCglzaG9ydAkweDAwMDAKCWJyYS5sCV9mYXRhbmRfCglzaG9ydAkweDAwMDAKCWJyYS5sCV9mYXRhbnhfCglzaG9ydAkweDAwMDAKCglicmEubAlfZmF0YW5oc18KCXNob3J0CTB4MDAwMAoJYnJhLmwJX2ZhdGFuaGRfCglzaG9ydAkweDAwMDAKCWJyYS5sCV9mYXRhbmh4XwoJc2hvcnQJMHgwMDAwCgoJYnJhLmwJX2Zjb3NzXwoJc2hvcnQJMHgwMDAwCglicmEubAlfZmNvc2RfCglzaG9ydAkweDAwMDAKCWJyYS5sCV9mY29zeF8KCXNob3J0CTB4MDAwMAoKCWJyYS5sCV9mY29zaHNfCglzaG9ydAkweDAwMDAKCWJyYS5sCV9mY29zaGRfCglzaG9ydAkweDAwMDAKCWJyYS5sCV9mY29zaHhfCglzaG9ydAkweDAwMDAKCglicmEubAlfZmV0b3hzXwoJc2hvcnQJMHgwMDAwCglicmEubAlfZmV0b3hkXwoJc2hvcnQJMHgwMDAwCglicmEubAlfZmV0b3h4XwoJc2hvcnQJMHgwMDAwCgoJYnJhLmwJX2ZldG94bTFzXwoJc2hvcnQJMHgwMDAwCglicmEubAlfZmV0b3htMWRfCglzaG9ydAkweDAwMDAKCWJyYS5sCV9mZXRveG0xeF8KCXNob3J0CTB4MDAwMAoKCWJyYS5sCV9mZ2V0ZXhwc18KCXNob3J0CTB4MDAwMAoJYnJhLmwJX2ZnZXRleHBkXwoJc2hvcnQJMHgwMDAwCglicmEubAlfZmdldGV4cHhfCglzaG9ydAkweDAwMDAKCglicmEubAlfZmdldG1hbnNfCglzaG9ydAkweDAwMDAKCWJyYS5sCV9mZ2V0bWFuZF8KCXNob3J0CTB4MDAwMAoJYnJhLmwJX2ZnZXRtYW54XwoJc2hvcnQJMHgwMDAwCgoJYnJhLmwJX2Zsb2cxMHNfCglzaG9ydAkweDAwMDAKCWJyYS5sCV9mbG9nMTBkXwoJc2hvcnQJMHgwMDAwCglicmEubAlfZmxvZzEweF8KCXNob3J0CTB4MDAwMAoKCWJyYS5sCV9mbG9nMnNfCglzaG9ydAkweDAwMDAKCWJyYS5sCV9mbG9nMmRfCglzaG9ydAkweDAwMDAKCWJyYS5sCV9mbG9nMnhfCglzaG9ydAkweDAwMDAKCglicmEubAlfZmxvZ25zXwoJc2hvcnQJMHgwMDAwCglicmEubAlfZmxvZ25kXwoJc2hvcnQJMHgwMDAwCglicmEubAlfZmxvZ254XwoJc2hvcnQJMHgwMDAwCgoJYnJhLmwJX2Zsb2ducDFzXwoJc2hvcnQJMHgwMDAwCglicmEubAlfZmxvZ25wMWRfCglzaG9ydAkweDAwMDAKCWJyYS5sCV9mbG9nbnAxeF8KCXNob3J0CTB4MDAwMAoKCWJyYS5sCV9mbW9kc18KCXNob3J0CTB4MDAwMAoJYnJhLmwJX2Ztb2RkXwoJc2hvcnQJMHgwMDAwCglicmEubAlfZm1vZHhfCglzaG9ydAkweDAwMDAKCglicmEubAlfZnJlbXNfCglzaG9ydAkweDAwMDAKCWJyYS5sCV9mcmVtZF8KCXNob3J0CTB4MDAwMAoJYnJhLmwJX2ZyZW14XwoJc2hvcnQJMHgwMDAwCgoJYnJhLmwJX2ZzY2FsZXNfCglzaG9ydAkweDAwMDAKCWJyYS5sCV9mc2NhbGVkXwoJc2hvcnQJMHgwMDAwCglicmEubAlfZnNjYWxleF8KCXNob3J0CTB4MDAwMAoKCWJyYS5sCV9mc2luc18KCXNob3J0CTB4MDAwMAoJYnJhLmwJX2ZzaW5kXwoJc2hvcnQJMHgwMDAwCglicmEubAlfZnNpbnhfCglzaG9ydAkweDAwMDAKCglicmEubAlfZnNpbmNvc3NfCglzaG9ydAkweDAwMDAKCWJyYS5sCV9mc2luY29zZF8KCXNob3J0CTB4MDAwMAoJYnJhLmwJX2ZzaW5jb3N4XwoJc2hvcnQJMHgwMDAwCgoJYnJhLmwJX2ZzaW5oc18KCXNob3J0CTB4MDAwMAoJYnJhLmwJX2ZzaW5oZF8KCXNob3J0CTB4MDAwMAoJYnJhLmwJX2ZzaW5oeF8KCXNob3J0CTB4MDAwMAoKCWJyYS5sCV9mdGFuc18KCXNob3J0CTB4MDAwMAoJYnJhLmwJX2Z0YW5kXwoJc2hvcnQJMHgwMDAwCglicmEubAlfZnRhbnhfCglzaG9ydAkweDAwMDAKCglicmEubAlfZnRhbmhzXwoJc2hvcnQJMHgwMDAwCglicmEubAlfZnRhbmhkXwoJc2hvcnQJMHgwMDAwCglicmEubAlfZnRhbmh4XwoJc2hvcnQJMHgwMDAwCgoJYnJhLmwJX2Z0ZW50b3hzXwoJc2hvcnQJMHgwMDAwCglicmEubAlfZnRlbnRveGRfCglzaG9ydAkweDAwMDAKCWJyYS5sCV9mdGVudG94eF8KCXNob3J0CTB4MDAwMAoKCWJyYS5sCV9mdHdvdG94c18KCXNob3J0CTB4MDAwMAoJYnJhLmwJX2Z0d290b3hkXwoJc2hvcnQJMHgwMDAwCglicmEubAlfZnR3b3RveHhfCglzaG9ydAkweDAwMDAKCglicmEubAlfZmFic3NfCglzaG9ydAkweDAwMDAKCWJyYS5sCV9mYWJzZF8KCXNob3J0CTB4MDAwMAoJYnJhLmwJX2ZhYnN4XwoJc2hvcnQJMHgwMDAwCgoJYnJhLmwJX2ZhZGRzXwoJc2hvcnQJMHgwMDAwCglicmEubAlfZmFkZGRfCglzaG9ydAkweDAwMDAKCWJyYS5sCV9mYWRkeF8KCXNob3J0CTB4MDAwMAoKCWJyYS5sCV9mZGl2c18KCXNob3J0CTB4MDAwMAoJYnJhLmwJX2ZkaXZkXwoJc2hvcnQJMHgwMDAwCglicmEubAlfZmRpdnhfCglzaG9ydAkweDAwMDAKCglicmEubAlfZmludHNfCglzaG9ydAkweDAwMDAKCWJyYS5sCV9maW50ZF8KCXNob3J0CTB4MDAwMAoJYnJhLmwJX2ZpbnR4XwoJc2hvcnQJMHgwMDAwCgoJYnJhLmwJX2ZpbnRyenNfCglzaG9ydAkweDAwMDAKCWJyYS5sCV9maW50cnpkXwoJc2hvcnQJMHgwMDAwCglicmEubAlfZmludHJ6eF8KCXNob3J0CTB4MDAwMAoKCWJyYS5sCV9mbXVsc18KCXNob3J0CTB4MDAwMAoJYnJhLmwJX2ZtdWxkXwoJc2hvcnQJMHgwMDAwCglicmEubAlfZm11bHhfCglzaG9ydAkweDAwMDAKCglicmEubAlfZm5lZ3NfCglzaG9ydAkweDAwMDAKCWJyYS5sCV9mbmVnZF8KCXNob3J0CTB4MDAwMAoJYnJhLmwJX2ZuZWd4XwoJc2hvcnQJMHgwMDAwCgoJYnJhLmwJX2ZzcXJ0c18KCXNob3J0CTB4MDAwMAoJYnJhLmwJX2ZzcXJ0ZF8KCXNob3J0CTB4MDAwMAoJYnJhLmwJX2ZzcXJ0eF8KCXNob3J0CTB4MDAwMAoKCWJyYS5sCV9mc3Vic18KCXNob3J0CTB4MDAwMAoJYnJhLmwJX2ZzdWJkXwoJc2hvcnQJMHgwMDAwCglicmEubAlfZnN1YnhfCglzaG9ydAkweDAwMDAKCiMgbGVhdmUgcm9vbSBmb3IgZnV0dXJlIHBvc3NpYmxlIGFkZGl0aW9ucwoJYWxpZ24JMHg0MDAKCiMKIyBUaGlzIGZpbGUgY29udGFpbnMgYSBzZXQgb2YgZGVmaW5lIHN0YXRlbWVudHMgZm9yIGNvbnN0YW50cwojIGluIG9yZGVyIHRvIHByb21vdGUgcmVhZGFiaWxpdHkgd2l0aGluIHRoZSBjb3JlY29kZSBpdHNlbGYuCiMKCnNldCBMT0NBTF9TSVpFLAkJMTkyCQkJIyBzdGFjayBmcmFtZSBzaXplKGJ5dGVzKQpzZXQgTFYsCQkJLUxPQ0FMX1NJWkUJCSMgc3RhY2sgb2Zmc2V0CgpzZXQgRVhDX1NSLAkJMHg0CQkJIyBzdGFjayBzdGF0dXMgcmVnaXN0ZXIKc2V0IEVYQ19QQywJCTB4NgkJCSMgc3RhY2sgcGMKc2V0IEVYQ19WT0ZGLAkJMHhhCQkJIyBzdGFja2VkIHZlY3RvciBvZmZzZXQKc2V0IEVYQ19FQSwJCTB4YwkJCSMgc3RhY2tlZCA8ZWE+CgpzZXQgRVhDX0ZQLAkJMHgwCQkJIyBmcmFtZSBwb2ludGVyCgpzZXQgRVhDX0FSRUdTLAkJLTY4CQkJIyBvZmZzZXQgb2YgYWxsIGFkZHJlc3MgcmVncwpzZXQgRVhDX0RSRUdTLAkJLTEwMAkJCSMgb2Zmc2V0IG9mIGFsbCBkYXRhIHJlZ3MKc2V0IEVYQ19GUFJFR1MsCQktMzYJCQkjIG9mZnNldCBvZiBhbGwgZnAgcmVncwoKc2V0IEVYQ19BNywJCUVYQ19BUkVHUysoNyo0KQkJIyBvZmZzZXQgb2Ygc2F2ZWQgYTcKc2V0IE9MRF9BNywJCUVYQ19BUkVHUysoNio0KQkJIyBleHRyYSBjb3B5IG9mIHNhdmVkIGE3CnNldCBFWENfQTYsCQlFWENfQVJFR1MrKDYqNCkJCSMgb2Zmc2V0IG9mIHNhdmVkIGE2CnNldCBFWENfQTUsCQlFWENfQVJFR1MrKDUqNCkKc2V0IEVYQ19BNCwJCUVYQ19BUkVHUysoNCo0KQpzZXQgRVhDX0EzLAkJRVhDX0FSRUdTKygzKjQpCnNldCBFWENfQTIsCQlFWENfQVJFR1MrKDIqNCkKc2V0IEVYQ19BMSwJCUVYQ19BUkVHUysoMSo0KQpzZXQgRVhDX0EwLAkJRVhDX0FSRUdTKygwKjQpCnNldCBFWENfRDcsCQlFWENfRFJFR1MrKDcqNCkKc2V0IEVYQ19ENiwJCUVYQ19EUkVHUysoNio0KQpzZXQgRVhDX0Q1LAkJRVhDX0RSRUdTKyg1KjQpCnNldCBFWENfRDQsCQlFWENfRFJFR1MrKDQqNCkKc2V0IEVYQ19EMywJCUVYQ19EUkVHUysoMyo0KQpzZXQgRVhDX0QyLAkJRVhDX0RSRUdTKygyKjQpCnNldCBFWENfRDEsCQlFWENfRFJFR1MrKDEqNCkKc2V0IEVYQ19EMCwJCUVYQ19EUkVHUysoMCo0KQoKc2V0IEVYQ19GUDAsCQlFWENfRlBSRUdTKygwKjEyKQkjIG9mZnNldCBvZiBzYXZlZCBmcDAKc2V0IEVYQ19GUDEsCQlFWENfRlBSRUdTKygxKjEyKQkjIG9mZnNldCBvZiBzYXZlZCBmcDEKc2V0IEVYQ19GUDIsCQlFWENfRlBSRUdTKygyKjEyKQkjIG9mZnNldCBvZiBzYXZlZCBmcDIgKG5vdCB1c2VkKQoKc2V0IEZQX1NDUjEsCQlMVis4MAkJCSMgZnAgc2NyYXRjaCAxCnNldCBGUF9TQ1IxX0VYLAkJRlBfU0NSMSswCnNldCBGUF9TQ1IxX1NHTiwJRlBfU0NSMSsyCnNldCBGUF9TQ1IxX0hJLAkJRlBfU0NSMSs0CnNldCBGUF9TQ1IxX0xPLAkJRlBfU0NSMSs4CgpzZXQgRlBfU0NSMCwJCUxWKzY4CQkJIyBmcCBzY3JhdGNoIDAKc2V0IEZQX1NDUjBfRVgsCQlGUF9TQ1IwKzAKc2V0IEZQX1NDUjBfU0dOLAlGUF9TQ1IwKzIKc2V0IEZQX1NDUjBfSEksCQlGUF9TQ1IwKzQKc2V0IEZQX1NDUjBfTE8sCQlGUF9TQ1IwKzgKCnNldCBGUF9EU1QsCQlMVis1NgkJCSMgZnAgZGVzdGluYXRpb24gb3BlcmFuZApzZXQgRlBfRFNUX0VYLAkJRlBfRFNUKzAKc2V0IEZQX0RTVF9TR04sCQlGUF9EU1QrMgpzZXQgRlBfRFNUX0hJLAkJRlBfRFNUKzQKc2V0IEZQX0RTVF9MTywJCUZQX0RTVCs4CgpzZXQgRlBfU1JDLAkJTFYrNDQJCQkjIGZwIHNvdXJjZSBvcGVyYW5kCnNldCBGUF9TUkNfRVgsCQlGUF9TUkMrMApzZXQgRlBfU1JDX1NHTiwJCUZQX1NSQysyCnNldCBGUF9TUkNfSEksCQlGUF9TUkMrNApzZXQgRlBfU1JDX0xPLAkJRlBfU1JDKzgKCnNldCBVU0VSX0ZQSUFSLAkJTFYrNDAJCQkjIEZQIGluc3RyIGFkZHJlc3MgcmVnaXN0ZXIKCnNldCBVU0VSX0ZQU1IsCQlMViszNgkJCSMgRlAgc3RhdHVzIHJlZ2lzdGVyCnNldCBGUFNSX0NDLAkJVVNFUl9GUFNSKzAJCSMgRlBTUiBjb25kaXRpb24gY29kZXMKc2V0IEZQU1JfUUJZVEUsCQlVU0VSX0ZQU1IrMQkJIyBGUFNSIHFvdXRpZW50IGJ5dGUKc2V0IEZQU1JfRVhDRVBULAlVU0VSX0ZQU1IrMgkJIyBGUFNSIGV4Y2VwdGlvbiBzdGF0dXMgYnl0ZQpzZXQgRlBTUl9BRVhDRVBULAlVU0VSX0ZQU1IrMwkJIyBGUFNSIGFjY3J1ZWQgZXhjZXB0aW9uIGJ5dGUKCnNldCBVU0VSX0ZQQ1IsCQlMViszMgkJCSMgRlAgY29udHJvbCByZWdpc3RlcgpzZXQgRlBDUl9FTkFCTEUsCVVTRVJfRlBDUisyCQkjIEZQQ1IgZXhjZXB0aW9uIGVuYWJsZQpzZXQgRlBDUl9NT0RFLAkJVVNFUl9GUENSKzMJCSMgRlBDUiByb3VuZGluZyBtb2RlIGNvbnRyb2wKCnNldCBMX1NDUjMsCQlMVisyOAkJCSMgaW50ZWdlciBzY3JhdGNoIDMKc2V0IExfU0NSMiwJCUxWKzI0CQkJIyBpbnRlZ2VyIHNjcmF0Y2ggMgpzZXQgTF9TQ1IxLAkJTFYrMjAJCQkjIGludGVnZXIgc2NyYXRjaCAxCgpzZXQgU1RPUkVfRkxHLAkJTFYrMTkJCQkjIGZsYWc6IG9wZXJhbmQgc3RvcmUgKGllLiBub3QgZmNtcC9mdHN0KQoKc2V0IEVYQ19URU1QMiwJCUxWKzI0CQkJIyB0ZW1wb3Jhcnkgc3BhY2UKc2V0IEVYQ19URU1QLAkJTFYrMTYJCQkjIHRlbXBvcmFyeSBzcGFjZQoKc2V0IERUQUcsCQlMVisxNQkJCSMgZGVzdGluYXRpb24gb3BlcmFuZCB0eXBlCnNldCBTVEFHLAkJTFYrMTQJCQkjIHNvdXJjZSBvcGVyYW5kIHR5cGUKCnNldCBTUENPTkRfRkxHLAkJTFYrMTAJCQkjIGZsYWc6IHNwZWNpYWwgY2FzZSAoc2VlIGJlbG93KQoKc2V0IEVYQ19DQywJCUxWKzgJCQkjIHNhdmVkIGNvbmRpdGlvbiBjb2RlcwpzZXQgRVhDX0VYVFdQVFIsCUxWKzQJCQkjIHNhdmVkIGN1cnJlbnQgUEMgKGFjdGl2ZSkKc2V0IEVYQ19FWFRXT1JELAlMVisyCQkJIyBzYXZlZCBleHRlbnNpb24gd29yZApzZXQgRVhDX0NNRFJFRywJCUxWKzIJCQkjIHNhdmVkIGV4dGVuc2lvbiB3b3JkCnNldCBFWENfT1BXT1JELAkJTFYrMAkJCSMgc2F2ZWQgb3BlcmF0aW9uIHdvcmQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIEhlbHBmdWwgbWFjcm9zCgpzZXQgRlRFTVAsCQkwCQkJIyBvZmZzZXRzIHdpdGhpbiBhbgpzZXQgRlRFTVBfRVgsCQkwCQkJIyBleHRlbmRlZCBwcmVjaXNpb24Kc2V0IEZURU1QX1NHTiwJCTIJCQkjIHZhbHVlIHNhdmVkIGluIG1lbW9yeS4Kc2V0IEZURU1QX0hJLAkJNApzZXQgRlRFTVBfTE8sCQk4CnNldCBGVEVNUF9HUlMsCQkxMgoKc2V0IExPQ0FMLAkJMAkJCSMgb2Zmc2V0cyB3aXRoaW4gYW4Kc2V0IExPQ0FMX0VYLAkJMAkJCSMgZXh0ZW5kZWQgcHJlY2lzaW9uCnNldCBMT0NBTF9TR04sCQkyCQkJIyB2YWx1ZSBzYXZlZCBpbiBtZW1vcnkuCnNldCBMT0NBTF9ISSwJCTQKc2V0IExPQ0FMX0xPLAkJOApzZXQgTE9DQUxfR1JTLAkJMTIKCnNldCBEU1QsCQkwCQkJIyBvZmZzZXRzIHdpdGhpbiBhbgpzZXQgRFNUX0VYLAkJMAkJCSMgZXh0ZW5kZWQgcHJlY2lzaW9uCnNldCBEU1RfSEksCQk0CQkJIyB2YWx1ZSBzYXZlZCBpbiBtZW1vcnkuCnNldCBEU1RfTE8sCQk4CgpzZXQgU1JDLAkJMAkJCSMgb2Zmc2V0cyB3aXRoaW4gYW4Kc2V0IFNSQ19FWCwJCTAJCQkjIGV4dGVuZGVkIHByZWNpc2lvbgpzZXQgU1JDX0hJLAkJNAkJCSMgdmFsdWUgc2F2ZWQgaW4gbWVtb3J5LgpzZXQgU1JDX0xPLAkJOAoKc2V0IFNHTF9MTywJCTB4M2Y4MQkJCSMgbWluIHNnbCBwcmVjIGV4cG9uZW50CnNldCBTR0xfSEksCQkweDQwN2UJCQkjIG1heCBzZ2wgcHJlYyBleHBvbmVudApzZXQgREJMX0xPLAkJMHgzYzAxCQkJIyBtaW4gZGJsIHByZWMgZXhwb25lbnQKc2V0IERCTF9ISSwJCTB4NDNmZQkJCSMgbWF4IGRibCBwcmVjIGV4cG9uZW50CnNldCBFWFRfTE8sCQkweDAJCQkjIG1pbiBleHQgcHJlYyBleHBvbmVudApzZXQgRVhUX0hJLAkJMHg3ZmZlCQkJIyBtYXggZXh0IHByZWMgZXhwb25lbnQKCnNldCBFWFRfQklBUywJCTB4M2ZmZgkJCSMgZXh0ZW5kZWQgcHJlY2lzaW9uIGJpYXMKc2V0IFNHTF9CSUFTLAkJMHgwMDdmCQkJIyBzaW5nbGUgcHJlY2lzaW9uIGJpYXMKc2V0IERCTF9CSUFTLAkJMHgwM2ZmCQkJIyBkb3VibGUgcHJlY2lzaW9uIGJpYXMKCnNldCBOT1JNLAkJMHgwMAkJCSMgb3BlcmFuZCB0eXBlIGZvciBTVEFHL0RUQUcKc2V0IFpFUk8sCQkweDAxCQkJIyBvcGVyYW5kIHR5cGUgZm9yIFNUQUcvRFRBRwpzZXQgSU5GLAkJMHgwMgkJCSMgb3BlcmFuZCB0eXBlIGZvciBTVEFHL0RUQUcKc2V0IFFOQU4sCQkweDAzCQkJIyBvcGVyYW5kIHR5cGUgZm9yIFNUQUcvRFRBRwpzZXQgREVOT1JNLAkJMHgwNAkJCSMgb3BlcmFuZCB0eXBlIGZvciBTVEFHL0RUQUcKc2V0IFNOQU4sCQkweDA1CQkJIyBvcGVyYW5kIHR5cGUgZm9yIFNUQUcvRFRBRwpzZXQgVU5OT1JNLAkJMHgwNgkJCSMgb3BlcmFuZCB0eXBlIGZvciBTVEFHL0RUQUcKCiMjIyMjIyMjIyMjIyMjIyMjIwojIEZQU1IvRlBDUiBiaXRzICMKIyMjIyMjIyMjIyMjIyMjIyMjCnNldCBuZWdfYml0LAkJMHgzCQkJIyBuZWdhdGl2ZSByZXN1bHQKc2V0IHpfYml0LAkJMHgyCQkJIyB6ZXJvIHJlc3VsdApzZXQgaW5mX2JpdCwJCTB4MQkJCSMgaW5maW5pdGUgcmVzdWx0CnNldCBuYW5fYml0LAkJMHgwCQkJIyBOQU4gcmVzdWx0CgpzZXQgcV9zbl9iaXQsCQkweDcJCQkjIHNpZ24gYml0IG9mIHF1b3RpZW50IGJ5dGUKCnNldCBic3VuX2JpdCwJCTcJCQkjIGJyYW5jaCBvbiB1bm9yZGVyZWQKc2V0IHNuYW5fYml0LAkJNgkJCSMgc2lnbmFsbGluZyBOQU4Kc2V0IG9wZXJyX2JpdCwJCTUJCQkjIG9wZXJhbmQgZXJyb3IKc2V0IG92ZmxfYml0LAkJNAkJCSMgb3ZlcmZsb3cKc2V0IHVuZmxfYml0LAkJMwkJCSMgdW5kZXJmbG93CnNldCBkel9iaXQsCQkyCQkJIyBkaXZpZGUgYnkgemVybwpzZXQgaW5leDJfYml0LAkJMQkJCSMgaW5leGFjdCByZXN1bHQgMgpzZXQgaW5leDFfYml0LAkJMAkJCSMgaW5leGFjdCByZXN1bHQgMQoKc2V0IGFpb3BfYml0LAkJNwkJCSMgYWNjcnVlZCBpbmV4YWN0IG9wZXJhdGlvbiBiaXQKc2V0IGFvdmZsX2JpdCwJCTYJCQkjIGFjY3J1ZWQgb3ZlcmZsb3cgYml0CnNldCBhdW5mbF9iaXQsCQk1CQkJIyBhY2NydWVkIHVuZGVyZmxvdyBiaXQKc2V0IGFkel9iaXQsCQk0CQkJIyBhY2NydWVkIGR6IGJpdApzZXQgYWluZXhfYml0LAkJMwkJCSMgYWNjcnVlZCBpbmV4YWN0IGJpdAoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBGUFNSIGluZGl2aWR1YWwgYml0IG1hc2tzICMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKc2V0IG5lZ19tYXNrLAkJMHgwODAwMDAwMAkJIyBuZWdhdGl2ZSBiaXQgbWFzayAobHcpCnNldCBpbmZfbWFzaywJCTB4MDIwMDAwMDAJCSMgaW5maW5pdHkgYml0IG1hc2sgKGx3KQpzZXQgel9tYXNrLAkJMHgwNDAwMDAwMAkJIyB6ZXJvIGJpdCBtYXNrIChsdykKc2V0IG5hbl9tYXNrLAkJMHgwMTAwMDAwMAkJIyBuYW4gYml0IG1hc2sgKGx3KQoKc2V0IG5lZ19ibWFzaywJCTB4MDgJCQkjIG5lZ2F0aXZlIGJpdCBtYXNrIChieXRlKQpzZXQgaW5mX2JtYXNrLAkJMHgwMgkJCSMgaW5maW5pdHkgYml0IG1hc2sgKGJ5dGUpCnNldCB6X2JtYXNrLAkJMHgwNAkJCSMgemVybyBiaXQgbWFzayAoYnl0ZSkKc2V0IG5hbl9ibWFzaywJCTB4MDEJCQkjIG5hbiBiaXQgbWFzayAoYnl0ZSkKCnNldCBic3VuX21hc2ssCQkweDAwMDA4MDAwCQkjIGJzdW4gZXhjZXB0aW9uIG1hc2sKc2V0IHNuYW5fbWFzaywJCTB4MDAwMDQwMDAJCSMgc25hbiBleGNlcHRpb24gbWFzawpzZXQgb3BlcnJfbWFzaywJCTB4MDAwMDIwMDAJCSMgb3BlcnIgZXhjZXB0aW9uIG1hc2sKc2V0IG92ZmxfbWFzaywJCTB4MDAwMDEwMDAJCSMgb3ZlcmZsb3cgZXhjZXB0aW9uIG1hc2sKc2V0IHVuZmxfbWFzaywJCTB4MDAwMDA4MDAJCSMgdW5kZXJmbG93IGV4Y2VwdGlvbiBtYXNrCnNldCBkel9tYXNrLAkJMHgwMDAwMDQwMAkJIyBkeiBleGNlcHRpb24gbWFzawpzZXQgaW5leDJfbWFzaywJCTB4MDAwMDAyMDAJCSMgaW5leDIgZXhjZXB0aW9uIG1hc2sKc2V0IGluZXgxX21hc2ssCQkweDAwMDAwMTAwCQkjIGluZXgxIGV4Y2VwdGlvbiBtYXNrCgpzZXQgYWlvcF9tYXNrLAkJMHgwMDAwMDA4MAkJIyBhY2NydWVkIGlsbGVnYWwgb3BlcmF0aW9uCnNldCBhb3ZmbF9tYXNrLAkJMHgwMDAwMDA0MAkJIyBhY2NydWVkIG92ZXJmbG93CnNldCBhdW5mbF9tYXNrLAkJMHgwMDAwMDAyMAkJIyBhY2NydWVkIHVuZGVyZmxvdwpzZXQgYWR6X21hc2ssCQkweDAwMDAwMDEwCQkjIGFjY3J1ZWQgZGl2aWRlIGJ5IHplcm8Kc2V0IGFpbmV4X21hc2ssCQkweDAwMDAwMDA4CQkjIGFjY3J1ZWQgaW5leGFjdAoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBGUFNSIGNvbWJpbmF0aW9ucyB1c2VkIGluIHRoZSBGUFNQICMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKc2V0IGR6aW5mX21hc2ssCQlpbmZfbWFzaytkel9tYXNrK2Fkel9tYXNrCnNldCBvcG5hbl9tYXNrLAkJbmFuX21hc2srb3BlcnJfbWFzaythaW9wX21hc2sKc2V0IG56aV9tYXNrLAkJMHgwMWZmZmZmZgkJI2NsZWFycyBOLCBaLCBhbmQgSQpzZXQgdW5maW54X21hc2ssCXVuZmxfbWFzaytpbmV4Ml9tYXNrK2F1bmZsX21hc2srYWluZXhfbWFzawpzZXQgdW5mMmlueF9tYXNrLAl1bmZsX21hc2sraW5leDJfbWFzaythaW5leF9tYXNrCnNldCBvdmZpbnhfbWFzaywJb3ZmbF9tYXNrK2luZXgyX21hc2srYW92ZmxfbWFzaythaW5leF9tYXNrCnNldCBpbngxYV9tYXNrLAkJaW5leDFfbWFzaythaW5leF9tYXNrCnNldCBpbngyYV9tYXNrLAkJaW5leDJfbWFzaythaW5leF9tYXNrCnNldCBzbmFuaW9wX21hc2ssCW5hbl9tYXNrK3NuYW5fbWFzaythaW9wX21hc2sKc2V0IHNuYW5pb3AyX21hc2ssCXNuYW5fbWFzaythaW9wX21hc2sKc2V0IG5hbmlvcF9tYXNrLAluYW5fbWFzaythaW9wX21hc2sKc2V0IG5lZ2luZl9tYXNrLAluZWdfbWFzaytpbmZfbWFzawpzZXQgaW5mYWlvcF9tYXNrLAlpbmZfbWFzaythaW9wX21hc2sKc2V0IG5lZ3pfbWFzaywJCW5lZ19tYXNrK3pfbWFzawpzZXQgb3Bhb3BfbWFzaywJCW9wZXJyX21hc2srYWlvcF9tYXNrCnNldCB1bmZsX2lueF9tYXNrLAl1bmZsX21hc2srYXVuZmxfbWFzaythaW5leF9tYXNrCnNldCBvdmZsX2lueF9tYXNrLAlvdmZsX21hc2srYW92ZmxfbWFzaythaW5leF9tYXNrCgojIyMjIyMjIyMKIyBtaXNjLiAjCiMjIyMjIyMjIwpzZXQgcm5kX3N0a3lfYml0LAkyOQkJCSMgc3RreSBiaXQgcG9zIGluIGxvbmd3b3JkCgpzZXQgc2lnbl9iaXQsCQkweDcJCQkjIHNpZ24gYml0CnNldCBzaWduYW5fYml0LAkJMHg2CQkJIyBzaWduYWxsaW5nIG5hbiBiaXQKCnNldCBzZ2xfdGhyZXNoLAkJMHgzZjgxCQkJIyBtaW5pbXVtIHNnbCBleHBvbmVudApzZXQgZGJsX3RocmVzaCwJCTB4M2MwMQkJCSMgbWluaW11bSBkYmwgZXhwb25lbnQKCnNldCB4X21vZGUsCQkweDAJCQkjIGV4dGVuZGVkIHByZWNpc2lvbgpzZXQgc19tb2RlLAkJMHg0CQkJIyBzaW5nbGUgcHJlY2lzaW9uCnNldCBkX21vZGUsCQkweDgJCQkjIGRvdWJsZSBwcmVjaXNpb24KCnNldCBybl9tb2RlLAkJMHgwCQkJIyByb3VuZC10by1uZWFyZXN0CnNldCByel9tb2RlLAkJMHgxCQkJIyByb3VuZC10by16ZXJvCnNldCBybV9tb2RlLAkJMHgyCQkJIyByb3VuZC10cC1taW51cy1pbmZpbml0eQpzZXQgcnBfbW9kZSwJCTB4MwkJCSMgcm91bmQtdG8tcGx1cy1pbmZpbml0eQoKc2V0IG1hbnRpc3NhbGVuLAk2NAkJCSMgbGVuZ3RoIG9mIG1hbnRpc3NhIGluIGJpdHMKCnNldCBCWVRFLAkJMQkJCSMgbGVuKGJ5dGUpID09IDEgYnl0ZQpzZXQgV09SRCwJCTIJCQkjIGxlbih3b3JkKSA9PSAyIGJ5dGVzCnNldCBMT05HLAkJNAkJCSMgbGVuKGxvbmd3b3JkKSA9PSAyIGJ5dGVzCgpzZXQgQlNVTl9WRUMsCQkweGMwCQkJIyBic3VuICAgIHZlY3RvciBvZmZzZXQKc2V0IElORVhfVkVDLAkJMHhjNAkJCSMgaW5leGFjdCB2ZWN0b3Igb2Zmc2V0CnNldCBEWl9WRUMsCQkweGM4CQkJIyBkeiAgICAgIHZlY3RvciBvZmZzZXQKc2V0IFVORkxfVkVDLAkJMHhjYwkJCSMgdW5mbCAgICB2ZWN0b3Igb2Zmc2V0CnNldCBPUEVSUl9WRUMsCQkweGQwCQkJIyBvcGVyciAgIHZlY3RvciBvZmZzZXQKc2V0IE9WRkxfVkVDLAkJMHhkNAkJCSMgb3ZmbCAgICB2ZWN0b3Igb2Zmc2V0CnNldCBTTkFOX1ZFQywJCTB4ZDgJCQkjIHNuYW4gICAgdmVjdG9yIG9mZnNldAoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU1BlY2lhbCBDT05EaXRpb24gRkxhR3MgIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKc2V0IGZ0cmFwY2NfZmxnLAkweDAxCQkJIyBmbGFnIGJpdDogZnRyYXBjYyBleGNlcHRpb24Kc2V0IGZic3VuX2ZsZywJCTB4MDIJCQkjIGZsYWcgYml0OiBic3VuIGV4Y2VwdGlvbgpzZXQgbWlhN19mbGcsCQkweDA0CQkJIyBmbGFnIGJpdDogKGE3KSsgPGVhPgpzZXQgbWRhN19mbGcsCQkweDA4CQkJIyBmbGFnIGJpdDogLShhNykgPGVhPgpzZXQgZm1vdm1fZmxnLAkJMHg0MAkJCSMgZmxhZyBiaXQ6IGZtb3ZtIGluc3RydWN0aW9uCnNldCBpbW1lZF9mbGcsCQkweDgwCQkJIyBmbGFnIGJpdDogJjxkYXRhPiA8ZWE+CgpzZXQgZnRyYXBjY19iaXQsCTB4MApzZXQgZmJzdW5fYml0LAkJMHgxCnNldCBtaWE3X2JpdCwJCTB4MgpzZXQgbWRhN19iaXQsCQkweDMKc2V0IGltbWVkX2JpdCwJCTB4NwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFRSQU5TQ0VOREVOVEFMICJMQVNULU9QIiBGTEFHUyAjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKc2V0IEZNVUxfT1AsCQkweDAJCQkjIGZtdWwgaW5zdHIgcGVyZm9ybWVkIGxhc3QKc2V0IEZESVZfT1AsCQkweDEJCQkjIGZkaXYgcGVyZm9ybWVkIGxhc3QKc2V0IEZBRERfT1AsCQkweDIJCQkjIGZhZGQgcGVyZm9ybWVkIGxhc3QKc2V0IEZNT1ZfT1AsCQkweDMJCQkjIGZtb3YgcGVyZm9ybWVkIGxhc3QKCiMjIyMjIyMjIyMjIyMKIyBDT05TVEFOVFMgIwojIyMjIyMjIyMjIyMjClQxOglsb25nCQkweDQwQzYyRDM4LDB4RDNENjQ2MzQJIyAxNjM4MSBMT0cyIExFQUQKVDI6CWxvbmcJCTB4M0Q2RjkwQUUsMHhCMUU3NUNDNwkjIDE2MzgxIExPRzIgVFJBSUwKClBJOglsb25nCQkweDQwMDAwMDAwLDB4QzkwRkRBQTIsMHgyMTY4QzIzNSwweDAwMDAwMDAwClBJQlkyOglsb25nCQkweDNGRkYwMDAwLDB4QzkwRkRBQTIsMHgyMTY4QzIzNSwweDAwMDAwMDAwCgpUV09CWVBJOgoJbG9uZwkJMHgzRkU0NUYzMCwweDZEQzlDODgzCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgTU9OQURJQyBURU1QTEFURQkJCQkJCQkjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCWdsb2JhbAkJX2ZzaW5zXwpfZnNpbnNfOgoJbGluawkJJWE2LCYtTE9DQUxfU0laRQoKCW1vdm0ubAkJJjB4MDMwMyxFWENfRFJFR1MoJWE2KQkjIHNhdmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCSVmcGNyLCVmcHNyLFVTRVJfRlBDUiglYTYpICMgc2F2ZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCSYweGMwLEVYQ19GUDAoJWE2KQkjIHNhdmUgZnAwL2ZwMQoKCWZtb3YubAkJJjB4MCwlZnBjcgkJIyB6ZXJvIEZQQ1IKCiMKIwljb3B5LCBjb252ZXJ0LCBhbmQgdGFnIGlucHV0IGFyZ3VtZW50CiMKCWZtb3YucwkJMHg4KCVhNiksJWZwMAkJIyBsb2FkIHNnbCBpbnB1dAoJZm1vdi54CQklZnAwLEZQX1NSQyglYTYpCglsZWEJCUZQX1NSQyglYTYpLCVhMAoJYnNyLmwJCXRhZwkJCSMgZmV0Y2ggb3BlcmFuZCB0eXBlCgltb3YuYgkJJWQwLFNUQUcoJWE2KQoJbW92LmIJCSVkMCwlZDEKCglhbmRpLmwJCSYweDAwZmYwMGZmLFVTRVJfRlBTUiglYTYpCgoJY2xyLmwJCSVkMAoJbW92LmIJCUZQQ1JfTU9ERSglYTYpLCVkMAkjIHBhc3Mgcm5kIG1vZGUscHJlYwoKCXRzdC5iCQklZDEKCWJuZS5iCQlfTDBfMnMKCWJzci5sCQlzc2luCQkJIyBvcGVyYW5kIGlzIGEgTk9STQoJYnJhLmIJCV9MMF82cwpfTDBfMnM6CgljbXBpLmIJCSVkMSwmWkVSTwkJIyBpcyBvcGVyYW5kIGEgWkVSTz8KCWJuZS5iCQlfTDBfM3MJCQkjIG5vCglic3IubAkJc3JjX3plcm8JCQkjIHllcwoJYnJhLmIJCV9MMF82cwpfTDBfM3M6CgljbXBpLmIJCSVkMSwmSU5GCQkjIGlzIG9wZXJhbmQgYW4gSU5GPwoJYm5lLmIJCV9MMF80cwkJCSMgbm8KCWJzci5sCQl0X29wZXJyCQkJIyB5ZXMKCWJyYS5iCQlfTDBfNnMKX0wwXzRzOgoJY21waS5iCQklZDEsJlFOQU4JCSMgaXMgb3BlcmFuZCBhIFFOQU4/CglibmUuYgkJX0wwXzVzCQkJIyBubwoJYnNyLmwJCXNyY19xbmFuCQkJIyB5ZXMKCWJyYS5iCQlfTDBfNnMKX0wwXzVzOgoJYnNyLmwJCXNzaW5kCQkJIyBvcGVyYW5kIGlzIGEgREVOT1JNCl9MMF82czoKCiMKIwlSZXN1bHQgaXMgbm93IGluIEZQMAojCgltb3ZtLmwJCUVYQ19EUkVHUyglYTYpLCYweDAzMDMJIyByZXN0b3JlIGQwLWQxL2EwLWExCglmbW92bS5sCQlVU0VSX0ZQQ1IoJWE2KSwlZnBjciwlZnBzciAjIHJlc3RvcmUgY3RybCByZWdzCglmbW92bS54CQlFWENfRlAxKCVhNiksJjB4NDAJIyByZXN0b3JlIGZwMQoJdW5sawkJJWE2CglydHMKCglnbG9iYWwJCV9mc2luZF8KX2ZzaW5kXzoKCWxpbmsJCSVhNiwmLUxPQ0FMX1NJWkUKCgltb3ZtLmwJCSYweDAzMDMsRVhDX0RSRUdTKCVhNikJIyBzYXZlIGQwLWQxL2EwLWExCglmbW92bS5sCQklZnBjciwlZnBzcixVU0VSX0ZQQ1IoJWE2KSAjIHNhdmUgY3RybCByZWdzCglmbW92bS54CQkmMHhjMCxFWENfRlAwKCVhNikJIyBzYXZlIGZwMC9mcDEKCglmbW92LmwJCSYweDAsJWZwY3IJCSMgemVybyBGUENSCgojCiMJY29weSwgY29udmVydCwgYW5kIHRhZyBpbnB1dCBhcmd1bWVudAojCglmbW92LmQJCTB4OCglYTYpLCVmcDAJCSMgbG9hZCBkYmwgaW5wdXQKCWZtb3YueAkJJWZwMCxGUF9TUkMoJWE2KQoJbGVhCQlGUF9TUkMoJWE2KSwlYTAKCWJzci5sCQl0YWcJCQkjIGZldGNoIG9wZXJhbmQgdHlwZQoJbW92LmIJCSVkMCxTVEFHKCVhNikKCW1vdi5iCQklZDAsJWQxCgoJYW5kaS5sCQkmMHgwMGZmMDBmZixVU0VSX0ZQU1IoJWE2KQoKCWNsci5sCQklZDAKCW1vdi5iCQlGUENSX01PREUoJWE2KSwlZDAJIyBwYXNzIHJuZCBtb2RlLHByZWMKCgltb3YuYgkJJWQxLFNUQUcoJWE2KQoJdHN0LmIJCSVkMQoJYm5lLmIJCV9MMF8yZAoJYnNyLmwJCXNzaW4JCQkjIG9wZXJhbmQgaXMgYSBOT1JNCglicmEuYgkJX0wwXzZkCl9MMF8yZDoKCWNtcGkuYgkJJWQxLCZaRVJPCQkjIGlzIG9wZXJhbmQgYSBaRVJPPwoJYm5lLmIJCV9MMF8zZAkJCSMgbm8KCWJzci5sCQlzcmNfemVybwkJCSMgeWVzCglicmEuYgkJX0wwXzZkCl9MMF8zZDoKCWNtcGkuYgkJJWQxLCZJTkYJCSMgaXMgb3BlcmFuZCBhbiBJTkY/CglibmUuYgkJX0wwXzRkCQkJIyBubwoJYnNyLmwJCXRfb3BlcnIJCQkjIHllcwoJYnJhLmIJCV9MMF82ZApfTDBfNGQ6CgljbXBpLmIJCSVkMSwmUU5BTgkJIyBpcyBvcGVyYW5kIGEgUU5BTj8KCWJuZS5iCQlfTDBfNWQJCQkjIG5vCglic3IubAkJc3JjX3FuYW4JCQkjIHllcwoJYnJhLmIJCV9MMF82ZApfTDBfNWQ6Cglic3IubAkJc3NpbmQJCQkjIG9wZXJhbmQgaXMgYSBERU5PUk0KX0wwXzZkOgoKIwojCVJlc3VsdCBpcyBub3cgaW4gRlAwCiMKCW1vdm0ubAkJRVhDX0RSRUdTKCVhNiksJjB4MDMwMwkjIHJlc3RvcmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCVVTRVJfRlBDUiglYTYpLCVmcGNyLCVmcHNyICMgcmVzdG9yZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCUVYQ19GUDEoJWE2KSwmMHg0MAkjIHJlc3RvcmUgZnAxCgl1bmxrCQklYTYKCXJ0cwoKCWdsb2JhbAkJX2ZzaW54XwpfZnNpbnhfOgoJbGluawkJJWE2LCYtTE9DQUxfU0laRQoKCW1vdm0ubAkJJjB4MDMwMyxFWENfRFJFR1MoJWE2KQkjIHNhdmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCSVmcGNyLCVmcHNyLFVTRVJfRlBDUiglYTYpICMgc2F2ZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCSYweGMwLEVYQ19GUDAoJWE2KQkjIHNhdmUgZnAwL2ZwMQoKCWZtb3YubAkJJjB4MCwlZnBjcgkJIyB6ZXJvIEZQQ1IKCiMKIwljb3B5LCBjb252ZXJ0LCBhbmQgdGFnIGlucHV0IGFyZ3VtZW50CiMKCWxlYQkJRlBfU1JDKCVhNiksJWEwCgltb3YubAkJMHg4KzB4MCglYTYpLDB4MCglYTApCSMgbG9hZCBleHQgaW5wdXQKCW1vdi5sCQkweDgrMHg0KCVhNiksMHg0KCVhMCkKCW1vdi5sCQkweDgrMHg4KCVhNiksMHg4KCVhMCkKCWJzci5sCQl0YWcJCQkjIGZldGNoIG9wZXJhbmQgdHlwZQoJbW92LmIJCSVkMCxTVEFHKCVhNikKCW1vdi5iCQklZDAsJWQxCgoJYW5kaS5sCQkmMHgwMGZmMDBmZixVU0VSX0ZQU1IoJWE2KQoKCWNsci5sCQklZDAKCW1vdi5iCQlGUENSX01PREUoJWE2KSwlZDAJIyBwYXNzIHJuZCBtb2RlLHByZWMKCgl0c3QuYgkJJWQxCglibmUuYgkJX0wwXzJ4Cglic3IubAkJc3NpbgkJCSMgb3BlcmFuZCBpcyBhIE5PUk0KCWJyYS5iCQlfTDBfNngKX0wwXzJ4OgoJY21waS5iCQklZDEsJlpFUk8JCSMgaXMgb3BlcmFuZCBhIFpFUk8/CglibmUuYgkJX0wwXzN4CQkJIyBubwoJYnNyLmwJCXNyY196ZXJvCQkJIyB5ZXMKCWJyYS5iCQlfTDBfNngKX0wwXzN4OgoJY21waS5iCQklZDEsJklORgkJIyBpcyBvcGVyYW5kIGFuIElORj8KCWJuZS5iCQlfTDBfNHgJCQkjIG5vCglic3IubAkJdF9vcGVycgkJCSMgeWVzCglicmEuYgkJX0wwXzZ4Cl9MMF80eDoKCWNtcGkuYgkJJWQxLCZRTkFOCQkjIGlzIG9wZXJhbmQgYSBRTkFOPwoJYm5lLmIJCV9MMF81eAkJCSMgbm8KCWJzci5sCQlzcmNfcW5hbgkJCSMgeWVzCglicmEuYgkJX0wwXzZ4Cl9MMF81eDoKCWJzci5sCQlzc2luZAkJCSMgb3BlcmFuZCBpcyBhIERFTk9STQpfTDBfNng6CgojCiMJUmVzdWx0IGlzIG5vdyBpbiBGUDAKIwoJbW92bS5sCQlFWENfRFJFR1MoJWE2KSwmMHgwMzAzCSMgcmVzdG9yZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJVVNFUl9GUENSKCVhNiksJWZwY3IsJWZwc3IgIyByZXN0b3JlIGN0cmwgcmVncwoJZm1vdm0ueAkJRVhDX0ZQMSglYTYpLCYweDQwCSMgcmVzdG9yZSBmcDEKCXVubGsJCSVhNgoJcnRzCgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE1PTkFESUMgVEVNUExBVEUJCQkJCQkJIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCglnbG9iYWwJCV9mY29zc18KX2Zjb3NzXzoKCWxpbmsJCSVhNiwmLUxPQ0FMX1NJWkUKCgltb3ZtLmwJCSYweDAzMDMsRVhDX0RSRUdTKCVhNikJIyBzYXZlIGQwLWQxL2EwLWExCglmbW92bS5sCQklZnBjciwlZnBzcixVU0VSX0ZQQ1IoJWE2KSAjIHNhdmUgY3RybCByZWdzCglmbW92bS54CQkmMHhjMCxFWENfRlAwKCVhNikJIyBzYXZlIGZwMC9mcDEKCglmbW92LmwJCSYweDAsJWZwY3IJCSMgemVybyBGUENSCgojCiMJY29weSwgY29udmVydCwgYW5kIHRhZyBpbnB1dCBhcmd1bWVudAojCglmbW92LnMJCTB4OCglYTYpLCVmcDAJCSMgbG9hZCBzZ2wgaW5wdXQKCWZtb3YueAkJJWZwMCxGUF9TUkMoJWE2KQoJbGVhCQlGUF9TUkMoJWE2KSwlYTAKCWJzci5sCQl0YWcJCQkjIGZldGNoIG9wZXJhbmQgdHlwZQoJbW92LmIJCSVkMCxTVEFHKCVhNikKCW1vdi5iCQklZDAsJWQxCgoJYW5kaS5sCQkmMHgwMGZmMDBmZixVU0VSX0ZQU1IoJWE2KQoKCWNsci5sCQklZDAKCW1vdi5iCQlGUENSX01PREUoJWE2KSwlZDAJIyBwYXNzIHJuZCBtb2RlLHByZWMKCgl0c3QuYgkJJWQxCglibmUuYgkJX0wxXzJzCglic3IubAkJc2NvcwkJCSMgb3BlcmFuZCBpcyBhIE5PUk0KCWJyYS5iCQlfTDFfNnMKX0wxXzJzOgoJY21waS5iCQklZDEsJlpFUk8JCSMgaXMgb3BlcmFuZCBhIFpFUk8/CglibmUuYgkJX0wxXzNzCQkJIyBubwoJYnNyLmwJCWxkX3BvbmUJCQkjIHllcwoJYnJhLmIJCV9MMV82cwpfTDFfM3M6CgljbXBpLmIJCSVkMSwmSU5GCQkjIGlzIG9wZXJhbmQgYW4gSU5GPwoJYm5lLmIJCV9MMV80cwkJCSMgbm8KCWJzci5sCQl0X29wZXJyCQkJIyB5ZXMKCWJyYS5iCQlfTDFfNnMKX0wxXzRzOgoJY21waS5iCQklZDEsJlFOQU4JCSMgaXMgb3BlcmFuZCBhIFFOQU4/CglibmUuYgkJX0wxXzVzCQkJIyBubwoJYnNyLmwJCXNyY19xbmFuCQkJIyB5ZXMKCWJyYS5iCQlfTDFfNnMKX0wxXzVzOgoJYnNyLmwJCXNjb3NkCQkJIyBvcGVyYW5kIGlzIGEgREVOT1JNCl9MMV82czoKCiMKIwlSZXN1bHQgaXMgbm93IGluIEZQMAojCgltb3ZtLmwJCUVYQ19EUkVHUyglYTYpLCYweDAzMDMJIyByZXN0b3JlIGQwLWQxL2EwLWExCglmbW92bS5sCQlVU0VSX0ZQQ1IoJWE2KSwlZnBjciwlZnBzciAjIHJlc3RvcmUgY3RybCByZWdzCglmbW92bS54CQlFWENfRlAxKCVhNiksJjB4NDAJIyByZXN0b3JlIGZwMQoJdW5sawkJJWE2CglydHMKCglnbG9iYWwJCV9mY29zZF8KX2Zjb3NkXzoKCWxpbmsJCSVhNiwmLUxPQ0FMX1NJWkUKCgltb3ZtLmwJCSYweDAzMDMsRVhDX0RSRUdTKCVhNikJIyBzYXZlIGQwLWQxL2EwLWExCglmbW92bS5sCQklZnBjciwlZnBzcixVU0VSX0ZQQ1IoJWE2KSAjIHNhdmUgY3RybCByZWdzCglmbW92bS54CQkmMHhjMCxFWENfRlAwKCVhNikJIyBzYXZlIGZwMC9mcDEKCglmbW92LmwJCSYweDAsJWZwY3IJCSMgemVybyBGUENSCgojCiMJY29weSwgY29udmVydCwgYW5kIHRhZyBpbnB1dCBhcmd1bWVudAojCglmbW92LmQJCTB4OCglYTYpLCVmcDAJCSMgbG9hZCBkYmwgaW5wdXQKCWZtb3YueAkJJWZwMCxGUF9TUkMoJWE2KQoJbGVhCQlGUF9TUkMoJWE2KSwlYTAKCWJzci5sCQl0YWcJCQkjIGZldGNoIG9wZXJhbmQgdHlwZQoJbW92LmIJCSVkMCxTVEFHKCVhNikKCW1vdi5iCQklZDAsJWQxCgoJYW5kaS5sCQkmMHgwMGZmMDBmZixVU0VSX0ZQU1IoJWE2KQoKCWNsci5sCQklZDAKCW1vdi5iCQlGUENSX01PREUoJWE2KSwlZDAJIyBwYXNzIHJuZCBtb2RlLHByZWMKCgltb3YuYgkJJWQxLFNUQUcoJWE2KQoJdHN0LmIJCSVkMQoJYm5lLmIJCV9MMV8yZAoJYnNyLmwJCXNjb3MJCQkjIG9wZXJhbmQgaXMgYSBOT1JNCglicmEuYgkJX0wxXzZkCl9MMV8yZDoKCWNtcGkuYgkJJWQxLCZaRVJPCQkjIGlzIG9wZXJhbmQgYSBaRVJPPwoJYm5lLmIJCV9MMV8zZAkJCSMgbm8KCWJzci5sCQlsZF9wb25lCQkJIyB5ZXMKCWJyYS5iCQlfTDFfNmQKX0wxXzNkOgoJY21waS5iCQklZDEsJklORgkJIyBpcyBvcGVyYW5kIGFuIElORj8KCWJuZS5iCQlfTDFfNGQJCQkjIG5vCglic3IubAkJdF9vcGVycgkJCSMgeWVzCglicmEuYgkJX0wxXzZkCl9MMV80ZDoKCWNtcGkuYgkJJWQxLCZRTkFOCQkjIGlzIG9wZXJhbmQgYSBRTkFOPwoJYm5lLmIJCV9MMV81ZAkJCSMgbm8KCWJzci5sCQlzcmNfcW5hbgkJCSMgeWVzCglicmEuYgkJX0wxXzZkCl9MMV81ZDoKCWJzci5sCQlzY29zZAkJCSMgb3BlcmFuZCBpcyBhIERFTk9STQpfTDFfNmQ6CgojCiMJUmVzdWx0IGlzIG5vdyBpbiBGUDAKIwoJbW92bS5sCQlFWENfRFJFR1MoJWE2KSwmMHgwMzAzCSMgcmVzdG9yZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJVVNFUl9GUENSKCVhNiksJWZwY3IsJWZwc3IgIyByZXN0b3JlIGN0cmwgcmVncwoJZm1vdm0ueAkJRVhDX0ZQMSglYTYpLCYweDQwCSMgcmVzdG9yZSBmcDEKCXVubGsJCSVhNgoJcnRzCgoJZ2xvYmFsCQlfZmNvc3hfCl9mY29zeF86CglsaW5rCQklYTYsJi1MT0NBTF9TSVpFCgoJbW92bS5sCQkmMHgwMzAzLEVYQ19EUkVHUyglYTYpCSMgc2F2ZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJJWZwY3IsJWZwc3IsVVNFUl9GUENSKCVhNikgIyBzYXZlIGN0cmwgcmVncwoJZm1vdm0ueAkJJjB4YzAsRVhDX0ZQMCglYTYpCSMgc2F2ZSBmcDAvZnAxCgoJZm1vdi5sCQkmMHgwLCVmcGNyCQkjIHplcm8gRlBDUgoKIwojCWNvcHksIGNvbnZlcnQsIGFuZCB0YWcgaW5wdXQgYXJndW1lbnQKIwoJbGVhCQlGUF9TUkMoJWE2KSwlYTAKCW1vdi5sCQkweDgrMHgwKCVhNiksMHgwKCVhMCkJIyBsb2FkIGV4dCBpbnB1dAoJbW92LmwJCTB4OCsweDQoJWE2KSwweDQoJWEwKQoJbW92LmwJCTB4OCsweDgoJWE2KSwweDgoJWEwKQoJYnNyLmwJCXRhZwkJCSMgZmV0Y2ggb3BlcmFuZCB0eXBlCgltb3YuYgkJJWQwLFNUQUcoJWE2KQoJbW92LmIJCSVkMCwlZDEKCglhbmRpLmwJCSYweDAwZmYwMGZmLFVTRVJfRlBTUiglYTYpCgoJY2xyLmwJCSVkMAoJbW92LmIJCUZQQ1JfTU9ERSglYTYpLCVkMAkjIHBhc3Mgcm5kIG1vZGUscHJlYwoKCXRzdC5iCQklZDEKCWJuZS5iCQlfTDFfMngKCWJzci5sCQlzY29zCQkJIyBvcGVyYW5kIGlzIGEgTk9STQoJYnJhLmIJCV9MMV82eApfTDFfMng6CgljbXBpLmIJCSVkMSwmWkVSTwkJIyBpcyBvcGVyYW5kIGEgWkVSTz8KCWJuZS5iCQlfTDFfM3gJCQkjIG5vCglic3IubAkJbGRfcG9uZQkJCSMgeWVzCglicmEuYgkJX0wxXzZ4Cl9MMV8zeDoKCWNtcGkuYgkJJWQxLCZJTkYJCSMgaXMgb3BlcmFuZCBhbiBJTkY/CglibmUuYgkJX0wxXzR4CQkJIyBubwoJYnNyLmwJCXRfb3BlcnIJCQkjIHllcwoJYnJhLmIJCV9MMV82eApfTDFfNHg6CgljbXBpLmIJCSVkMSwmUU5BTgkJIyBpcyBvcGVyYW5kIGEgUU5BTj8KCWJuZS5iCQlfTDFfNXgJCQkjIG5vCglic3IubAkJc3JjX3FuYW4JCQkjIHllcwoJYnJhLmIJCV9MMV82eApfTDFfNXg6Cglic3IubAkJc2Nvc2QJCQkjIG9wZXJhbmQgaXMgYSBERU5PUk0KX0wxXzZ4OgoKIwojCVJlc3VsdCBpcyBub3cgaW4gRlAwCiMKCW1vdm0ubAkJRVhDX0RSRUdTKCVhNiksJjB4MDMwMwkjIHJlc3RvcmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCVVTRVJfRlBDUiglYTYpLCVmcGNyLCVmcHNyICMgcmVzdG9yZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCUVYQ19GUDEoJWE2KSwmMHg0MAkjIHJlc3RvcmUgZnAxCgl1bmxrCQklYTYKCXJ0cwoKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBNT05BRElDIFRFTVBMQVRFCQkJCQkJCSMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoJZ2xvYmFsCQlfZnNpbmhzXwpfZnNpbmhzXzoKCWxpbmsJCSVhNiwmLUxPQ0FMX1NJWkUKCgltb3ZtLmwJCSYweDAzMDMsRVhDX0RSRUdTKCVhNikJIyBzYXZlIGQwLWQxL2EwLWExCglmbW92bS5sCQklZnBjciwlZnBzcixVU0VSX0ZQQ1IoJWE2KSAjIHNhdmUgY3RybCByZWdzCglmbW92bS54CQkmMHhjMCxFWENfRlAwKCVhNikJIyBzYXZlIGZwMC9mcDEKCglmbW92LmwJCSYweDAsJWZwY3IJCSMgemVybyBGUENSCgojCiMJY29weSwgY29udmVydCwgYW5kIHRhZyBpbnB1dCBhcmd1bWVudAojCglmbW92LnMJCTB4OCglYTYpLCVmcDAJCSMgbG9hZCBzZ2wgaW5wdXQKCWZtb3YueAkJJWZwMCxGUF9TUkMoJWE2KQoJbGVhCQlGUF9TUkMoJWE2KSwlYTAKCWJzci5sCQl0YWcJCQkjIGZldGNoIG9wZXJhbmQgdHlwZQoJbW92LmIJCSVkMCxTVEFHKCVhNikKCW1vdi5iCQklZDAsJWQxCgoJYW5kaS5sCQkmMHgwMGZmMDBmZixVU0VSX0ZQU1IoJWE2KQoKCWNsci5sCQklZDAKCW1vdi5iCQlGUENSX01PREUoJWE2KSwlZDAJIyBwYXNzIHJuZCBtb2RlLHByZWMKCgl0c3QuYgkJJWQxCglibmUuYgkJX0wyXzJzCglic3IubAkJc3NpbmgJCQkjIG9wZXJhbmQgaXMgYSBOT1JNCglicmEuYgkJX0wyXzZzCl9MMl8yczoKCWNtcGkuYgkJJWQxLCZaRVJPCQkjIGlzIG9wZXJhbmQgYSBaRVJPPwoJYm5lLmIJCV9MMl8zcwkJCSMgbm8KCWJzci5sCQlzcmNfemVybwkJCSMgeWVzCglicmEuYgkJX0wyXzZzCl9MMl8zczoKCWNtcGkuYgkJJWQxLCZJTkYJCSMgaXMgb3BlcmFuZCBhbiBJTkY/CglibmUuYgkJX0wyXzRzCQkJIyBubwoJYnNyLmwJCXNyY19pbmYJCQkjIHllcwoJYnJhLmIJCV9MMl82cwpfTDJfNHM6CgljbXBpLmIJCSVkMSwmUU5BTgkJIyBpcyBvcGVyYW5kIGEgUU5BTj8KCWJuZS5iCQlfTDJfNXMJCQkjIG5vCglic3IubAkJc3JjX3FuYW4JCQkjIHllcwoJYnJhLmIJCV9MMl82cwpfTDJfNXM6Cglic3IubAkJc3NpbmhkCQkJIyBvcGVyYW5kIGlzIGEgREVOT1JNCl9MMl82czoKCiMKIwlSZXN1bHQgaXMgbm93IGluIEZQMAojCgltb3ZtLmwJCUVYQ19EUkVHUyglYTYpLCYweDAzMDMJIyByZXN0b3JlIGQwLWQxL2EwLWExCglmbW92bS5sCQlVU0VSX0ZQQ1IoJWE2KSwlZnBjciwlZnBzciAjIHJlc3RvcmUgY3RybCByZWdzCglmbW92bS54CQlFWENfRlAxKCVhNiksJjB4NDAJIyByZXN0b3JlIGZwMQoJdW5sawkJJWE2CglydHMKCglnbG9iYWwJCV9mc2luaGRfCl9mc2luaGRfOgoJbGluawkJJWE2LCYtTE9DQUxfU0laRQoKCW1vdm0ubAkJJjB4MDMwMyxFWENfRFJFR1MoJWE2KQkjIHNhdmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCSVmcGNyLCVmcHNyLFVTRVJfRlBDUiglYTYpICMgc2F2ZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCSYweGMwLEVYQ19GUDAoJWE2KQkjIHNhdmUgZnAwL2ZwMQoKCWZtb3YubAkJJjB4MCwlZnBjcgkJIyB6ZXJvIEZQQ1IKCiMKIwljb3B5LCBjb252ZXJ0LCBhbmQgdGFnIGlucHV0IGFyZ3VtZW50CiMKCWZtb3YuZAkJMHg4KCVhNiksJWZwMAkJIyBsb2FkIGRibCBpbnB1dAoJZm1vdi54CQklZnAwLEZQX1NSQyglYTYpCglsZWEJCUZQX1NSQyglYTYpLCVhMAoJYnNyLmwJCXRhZwkJCSMgZmV0Y2ggb3BlcmFuZCB0eXBlCgltb3YuYgkJJWQwLFNUQUcoJWE2KQoJbW92LmIJCSVkMCwlZDEKCglhbmRpLmwJCSYweDAwZmYwMGZmLFVTRVJfRlBTUiglYTYpCgoJY2xyLmwJCSVkMAoJbW92LmIJCUZQQ1JfTU9ERSglYTYpLCVkMAkjIHBhc3Mgcm5kIG1vZGUscHJlYwoKCW1vdi5iCQklZDEsU1RBRyglYTYpCgl0c3QuYgkJJWQxCglibmUuYgkJX0wyXzJkCglic3IubAkJc3NpbmgJCQkjIG9wZXJhbmQgaXMgYSBOT1JNCglicmEuYgkJX0wyXzZkCl9MMl8yZDoKCWNtcGkuYgkJJWQxLCZaRVJPCQkjIGlzIG9wZXJhbmQgYSBaRVJPPwoJYm5lLmIJCV9MMl8zZAkJCSMgbm8KCWJzci5sCQlzcmNfemVybwkJCSMgeWVzCglicmEuYgkJX0wyXzZkCl9MMl8zZDoKCWNtcGkuYgkJJWQxLCZJTkYJCSMgaXMgb3BlcmFuZCBhbiBJTkY/CglibmUuYgkJX0wyXzRkCQkJIyBubwoJYnNyLmwJCXNyY19pbmYJCQkjIHllcwoJYnJhLmIJCV9MMl82ZApfTDJfNGQ6CgljbXBpLmIJCSVkMSwmUU5BTgkJIyBpcyBvcGVyYW5kIGEgUU5BTj8KCWJuZS5iCQlfTDJfNWQJCQkjIG5vCglic3IubAkJc3JjX3FuYW4JCQkjIHllcwoJYnJhLmIJCV9MMl82ZApfTDJfNWQ6Cglic3IubAkJc3NpbmhkCQkJIyBvcGVyYW5kIGlzIGEgREVOT1JNCl9MMl82ZDoKCiMKIwlSZXN1bHQgaXMgbm93IGluIEZQMAojCgltb3ZtLmwJCUVYQ19EUkVHUyglYTYpLCYweDAzMDMJIyByZXN0b3JlIGQwLWQxL2EwLWExCglmbW92bS5sCQlVU0VSX0ZQQ1IoJWE2KSwlZnBjciwlZnBzciAjIHJlc3RvcmUgY3RybCByZWdzCglmbW92bS54CQlFWENfRlAxKCVhNiksJjB4NDAJIyByZXN0b3JlIGZwMQoJdW5sawkJJWE2CglydHMKCglnbG9iYWwJCV9mc2luaHhfCl9mc2luaHhfOgoJbGluawkJJWE2LCYtTE9DQUxfU0laRQoKCW1vdm0ubAkJJjB4MDMwMyxFWENfRFJFR1MoJWE2KQkjIHNhdmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCSVmcGNyLCVmcHNyLFVTRVJfRlBDUiglYTYpICMgc2F2ZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCSYweGMwLEVYQ19GUDAoJWE2KQkjIHNhdmUgZnAwL2ZwMQoKCWZtb3YubAkJJjB4MCwlZnBjcgkJIyB6ZXJvIEZQQ1IKCiMKIwljb3B5LCBjb252ZXJ0LCBhbmQgdGFnIGlucHV0IGFyZ3VtZW50CiMKCWxlYQkJRlBfU1JDKCVhNiksJWEwCgltb3YubAkJMHg4KzB4MCglYTYpLDB4MCglYTApCSMgbG9hZCBleHQgaW5wdXQKCW1vdi5sCQkweDgrMHg0KCVhNiksMHg0KCVhMCkKCW1vdi5sCQkweDgrMHg4KCVhNiksMHg4KCVhMCkKCWJzci5sCQl0YWcJCQkjIGZldGNoIG9wZXJhbmQgdHlwZQoJbW92LmIJCSVkMCxTVEFHKCVhNikKCW1vdi5iCQklZDAsJWQxCgoJYW5kaS5sCQkmMHgwMGZmMDBmZixVU0VSX0ZQU1IoJWE2KQoKCWNsci5sCQklZDAKCW1vdi5iCQlGUENSX01PREUoJWE2KSwlZDAJIyBwYXNzIHJuZCBtb2RlLHByZWMKCgl0c3QuYgkJJWQxCglibmUuYgkJX0wyXzJ4Cglic3IubAkJc3NpbmgJCQkjIG9wZXJhbmQgaXMgYSBOT1JNCglicmEuYgkJX0wyXzZ4Cl9MMl8yeDoKCWNtcGkuYgkJJWQxLCZaRVJPCQkjIGlzIG9wZXJhbmQgYSBaRVJPPwoJYm5lLmIJCV9MMl8zeAkJCSMgbm8KCWJzci5sCQlzcmNfemVybwkJCSMgeWVzCglicmEuYgkJX0wyXzZ4Cl9MMl8zeDoKCWNtcGkuYgkJJWQxLCZJTkYJCSMgaXMgb3BlcmFuZCBhbiBJTkY/CglibmUuYgkJX0wyXzR4CQkJIyBubwoJYnNyLmwJCXNyY19pbmYJCQkjIHllcwoJYnJhLmIJCV9MMl82eApfTDJfNHg6CgljbXBpLmIJCSVkMSwmUU5BTgkJIyBpcyBvcGVyYW5kIGEgUU5BTj8KCWJuZS5iCQlfTDJfNXgJCQkjIG5vCglic3IubAkJc3JjX3FuYW4JCQkjIHllcwoJYnJhLmIJCV9MMl82eApfTDJfNXg6Cglic3IubAkJc3NpbmhkCQkJIyBvcGVyYW5kIGlzIGEgREVOT1JNCl9MMl82eDoKCiMKIwlSZXN1bHQgaXMgbm93IGluIEZQMAojCgltb3ZtLmwJCUVYQ19EUkVHUyglYTYpLCYweDAzMDMJIyByZXN0b3JlIGQwLWQxL2EwLWExCglmbW92bS5sCQlVU0VSX0ZQQ1IoJWE2KSwlZnBjciwlZnBzciAjIHJlc3RvcmUgY3RybCByZWdzCglmbW92bS54CQlFWENfRlAxKCVhNiksJjB4NDAJIyByZXN0b3JlIGZwMQoJdW5sawkJJWE2CglydHMKCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgTU9OQURJQyBURU1QTEFURQkJCQkJCQkjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCWdsb2JhbAkJX2Zsb2ducDFzXwpfZmxvZ25wMXNfOgoJbGluawkJJWE2LCYtTE9DQUxfU0laRQoKCW1vdm0ubAkJJjB4MDMwMyxFWENfRFJFR1MoJWE2KQkjIHNhdmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCSVmcGNyLCVmcHNyLFVTRVJfRlBDUiglYTYpICMgc2F2ZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCSYweGMwLEVYQ19GUDAoJWE2KQkjIHNhdmUgZnAwL2ZwMQoKCWZtb3YubAkJJjB4MCwlZnBjcgkJIyB6ZXJvIEZQQ1IKCiMKIwljb3B5LCBjb252ZXJ0LCBhbmQgdGFnIGlucHV0IGFyZ3VtZW50CiMKCWZtb3YucwkJMHg4KCVhNiksJWZwMAkJIyBsb2FkIHNnbCBpbnB1dAoJZm1vdi54CQklZnAwLEZQX1NSQyglYTYpCglsZWEJCUZQX1NSQyglYTYpLCVhMAoJYnNyLmwJCXRhZwkJCSMgZmV0Y2ggb3BlcmFuZCB0eXBlCgltb3YuYgkJJWQwLFNUQUcoJWE2KQoJbW92LmIJCSVkMCwlZDEKCglhbmRpLmwJCSYweDAwZmYwMGZmLFVTRVJfRlBTUiglYTYpCgoJY2xyLmwJCSVkMAoJbW92LmIJCUZQQ1JfTU9ERSglYTYpLCVkMAkjIHBhc3Mgcm5kIG1vZGUscHJlYwoKCXRzdC5iCQklZDEKCWJuZS5iCQlfTDNfMnMKCWJzci5sCQlzbG9nbnAxCQkJIyBvcGVyYW5kIGlzIGEgTk9STQoJYnJhLmIJCV9MM182cwpfTDNfMnM6CgljbXBpLmIJCSVkMSwmWkVSTwkJIyBpcyBvcGVyYW5kIGEgWkVSTz8KCWJuZS5iCQlfTDNfM3MJCQkjIG5vCglic3IubAkJc3JjX3plcm8JCQkjIHllcwoJYnJhLmIJCV9MM182cwpfTDNfM3M6CgljbXBpLmIJCSVkMSwmSU5GCQkjIGlzIG9wZXJhbmQgYW4gSU5GPwoJYm5lLmIJCV9MM180cwkJCSMgbm8KCWJzci5sCQlzb3ByX2luZgkJCSMgeWVzCglicmEuYgkJX0wzXzZzCl9MM180czoKCWNtcGkuYgkJJWQxLCZRTkFOCQkjIGlzIG9wZXJhbmQgYSBRTkFOPwoJYm5lLmIJCV9MM181cwkJCSMgbm8KCWJzci5sCQlzcmNfcW5hbgkJCSMgeWVzCglicmEuYgkJX0wzXzZzCl9MM181czoKCWJzci5sCQlzbG9nbnAxZAkJCSMgb3BlcmFuZCBpcyBhIERFTk9STQpfTDNfNnM6CgojCiMJUmVzdWx0IGlzIG5vdyBpbiBGUDAKIwoJbW92bS5sCQlFWENfRFJFR1MoJWE2KSwmMHgwMzAzCSMgcmVzdG9yZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJVVNFUl9GUENSKCVhNiksJWZwY3IsJWZwc3IgIyByZXN0b3JlIGN0cmwgcmVncwoJZm1vdm0ueAkJRVhDX0ZQMSglYTYpLCYweDQwCSMgcmVzdG9yZSBmcDEKCXVubGsJCSVhNgoJcnRzCgoJZ2xvYmFsCQlfZmxvZ25wMWRfCl9mbG9nbnAxZF86CglsaW5rCQklYTYsJi1MT0NBTF9TSVpFCgoJbW92bS5sCQkmMHgwMzAzLEVYQ19EUkVHUyglYTYpCSMgc2F2ZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJJWZwY3IsJWZwc3IsVVNFUl9GUENSKCVhNikgIyBzYXZlIGN0cmwgcmVncwoJZm1vdm0ueAkJJjB4YzAsRVhDX0ZQMCglYTYpCSMgc2F2ZSBmcDAvZnAxCgoJZm1vdi5sCQkmMHgwLCVmcGNyCQkjIHplcm8gRlBDUgoKIwojCWNvcHksIGNvbnZlcnQsIGFuZCB0YWcgaW5wdXQgYXJndW1lbnQKIwoJZm1vdi5kCQkweDgoJWE2KSwlZnAwCQkjIGxvYWQgZGJsIGlucHV0CglmbW92LngJCSVmcDAsRlBfU1JDKCVhNikKCWxlYQkJRlBfU1JDKCVhNiksJWEwCglic3IubAkJdGFnCQkJIyBmZXRjaCBvcGVyYW5kIHR5cGUKCW1vdi5iCQklZDAsU1RBRyglYTYpCgltb3YuYgkJJWQwLCVkMQoKCWFuZGkubAkJJjB4MDBmZjAwZmYsVVNFUl9GUFNSKCVhNikKCgljbHIubAkJJWQwCgltb3YuYgkJRlBDUl9NT0RFKCVhNiksJWQwCSMgcGFzcyBybmQgbW9kZSxwcmVjCgoJbW92LmIJCSVkMSxTVEFHKCVhNikKCXRzdC5iCQklZDEKCWJuZS5iCQlfTDNfMmQKCWJzci5sCQlzbG9nbnAxCQkJIyBvcGVyYW5kIGlzIGEgTk9STQoJYnJhLmIJCV9MM182ZApfTDNfMmQ6CgljbXBpLmIJCSVkMSwmWkVSTwkJIyBpcyBvcGVyYW5kIGEgWkVSTz8KCWJuZS5iCQlfTDNfM2QJCQkjIG5vCglic3IubAkJc3JjX3plcm8JCQkjIHllcwoJYnJhLmIJCV9MM182ZApfTDNfM2Q6CgljbXBpLmIJCSVkMSwmSU5GCQkjIGlzIG9wZXJhbmQgYW4gSU5GPwoJYm5lLmIJCV9MM180ZAkJCSMgbm8KCWJzci5sCQlzb3ByX2luZgkJCSMgeWVzCglicmEuYgkJX0wzXzZkCl9MM180ZDoKCWNtcGkuYgkJJWQxLCZRTkFOCQkjIGlzIG9wZXJhbmQgYSBRTkFOPwoJYm5lLmIJCV9MM181ZAkJCSMgbm8KCWJzci5sCQlzcmNfcW5hbgkJCSMgeWVzCglicmEuYgkJX0wzXzZkCl9MM181ZDoKCWJzci5sCQlzbG9nbnAxZAkJCSMgb3BlcmFuZCBpcyBhIERFTk9STQpfTDNfNmQ6CgojCiMJUmVzdWx0IGlzIG5vdyBpbiBGUDAKIwoJbW92bS5sCQlFWENfRFJFR1MoJWE2KSwmMHgwMzAzCSMgcmVzdG9yZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJVVNFUl9GUENSKCVhNiksJWZwY3IsJWZwc3IgIyByZXN0b3JlIGN0cmwgcmVncwoJZm1vdm0ueAkJRVhDX0ZQMSglYTYpLCYweDQwCSMgcmVzdG9yZSBmcDEKCXVubGsJCSVhNgoJcnRzCgoJZ2xvYmFsCQlfZmxvZ25wMXhfCl9mbG9nbnAxeF86CglsaW5rCQklYTYsJi1MT0NBTF9TSVpFCgoJbW92bS5sCQkmMHgwMzAzLEVYQ19EUkVHUyglYTYpCSMgc2F2ZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJJWZwY3IsJWZwc3IsVVNFUl9GUENSKCVhNikgIyBzYXZlIGN0cmwgcmVncwoJZm1vdm0ueAkJJjB4YzAsRVhDX0ZQMCglYTYpCSMgc2F2ZSBmcDAvZnAxCgoJZm1vdi5sCQkmMHgwLCVmcGNyCQkjIHplcm8gRlBDUgoKIwojCWNvcHksIGNvbnZlcnQsIGFuZCB0YWcgaW5wdXQgYXJndW1lbnQKIwoJbGVhCQlGUF9TUkMoJWE2KSwlYTAKCW1vdi5sCQkweDgrMHgwKCVhNiksMHgwKCVhMCkJIyBsb2FkIGV4dCBpbnB1dAoJbW92LmwJCTB4OCsweDQoJWE2KSwweDQoJWEwKQoJbW92LmwJCTB4OCsweDgoJWE2KSwweDgoJWEwKQoJYnNyLmwJCXRhZwkJCSMgZmV0Y2ggb3BlcmFuZCB0eXBlCgltb3YuYgkJJWQwLFNUQUcoJWE2KQoJbW92LmIJCSVkMCwlZDEKCglhbmRpLmwJCSYweDAwZmYwMGZmLFVTRVJfRlBTUiglYTYpCgoJY2xyLmwJCSVkMAoJbW92LmIJCUZQQ1JfTU9ERSglYTYpLCVkMAkjIHBhc3Mgcm5kIG1vZGUscHJlYwoKCXRzdC5iCQklZDEKCWJuZS5iCQlfTDNfMngKCWJzci5sCQlzbG9nbnAxCQkJIyBvcGVyYW5kIGlzIGEgTk9STQoJYnJhLmIJCV9MM182eApfTDNfMng6CgljbXBpLmIJCSVkMSwmWkVSTwkJIyBpcyBvcGVyYW5kIGEgWkVSTz8KCWJuZS5iCQlfTDNfM3gJCQkjIG5vCglic3IubAkJc3JjX3plcm8JCQkjIHllcwoJYnJhLmIJCV9MM182eApfTDNfM3g6CgljbXBpLmIJCSVkMSwmSU5GCQkjIGlzIG9wZXJhbmQgYW4gSU5GPwoJYm5lLmIJCV9MM180eAkJCSMgbm8KCWJzci5sCQlzb3ByX2luZgkJCSMgeWVzCglicmEuYgkJX0wzXzZ4Cl9MM180eDoKCWNtcGkuYgkJJWQxLCZRTkFOCQkjIGlzIG9wZXJhbmQgYSBRTkFOPwoJYm5lLmIJCV9MM181eAkJCSMgbm8KCWJzci5sCQlzcmNfcW5hbgkJCSMgeWVzCglicmEuYgkJX0wzXzZ4Cl9MM181eDoKCWJzci5sCQlzbG9nbnAxZAkJCSMgb3BlcmFuZCBpcyBhIERFTk9STQpfTDNfNng6CgojCiMJUmVzdWx0IGlzIG5vdyBpbiBGUDAKIwoJbW92bS5sCQlFWENfRFJFR1MoJWE2KSwmMHgwMzAzCSMgcmVzdG9yZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJVVNFUl9GUENSKCVhNiksJWZwY3IsJWZwc3IgIyByZXN0b3JlIGN0cmwgcmVncwoJZm1vdm0ueAkJRVhDX0ZQMSglYTYpLCYweDQwCSMgcmVzdG9yZSBmcDEKCXVubGsJCSVhNgoJcnRzCgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE1PTkFESUMgVEVNUExBVEUJCQkJCQkJIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCglnbG9iYWwJCV9mZXRveG0xc18KX2ZldG94bTFzXzoKCWxpbmsJCSVhNiwmLUxPQ0FMX1NJWkUKCgltb3ZtLmwJCSYweDAzMDMsRVhDX0RSRUdTKCVhNikJIyBzYXZlIGQwLWQxL2EwLWExCglmbW92bS5sCQklZnBjciwlZnBzcixVU0VSX0ZQQ1IoJWE2KSAjIHNhdmUgY3RybCByZWdzCglmbW92bS54CQkmMHhjMCxFWENfRlAwKCVhNikJIyBzYXZlIGZwMC9mcDEKCglmbW92LmwJCSYweDAsJWZwY3IJCSMgemVybyBGUENSCgojCiMJY29weSwgY29udmVydCwgYW5kIHRhZyBpbnB1dCBhcmd1bWVudAojCglmbW92LnMJCTB4OCglYTYpLCVmcDAJCSMgbG9hZCBzZ2wgaW5wdXQKCWZtb3YueAkJJWZwMCxGUF9TUkMoJWE2KQoJbGVhCQlGUF9TUkMoJWE2KSwlYTAKCWJzci5sCQl0YWcJCQkjIGZldGNoIG9wZXJhbmQgdHlwZQoJbW92LmIJCSVkMCxTVEFHKCVhNikKCW1vdi5iCQklZDAsJWQxCgoJYW5kaS5sCQkmMHgwMGZmMDBmZixVU0VSX0ZQU1IoJWE2KQoKCWNsci5sCQklZDAKCW1vdi5iCQlGUENSX01PREUoJWE2KSwlZDAJIyBwYXNzIHJuZCBtb2RlLHByZWMKCgl0c3QuYgkJJWQxCglibmUuYgkJX0w0XzJzCglic3IubAkJc2V0b3htMQkJCSMgb3BlcmFuZCBpcyBhIE5PUk0KCWJyYS5iCQlfTDRfNnMKX0w0XzJzOgoJY21waS5iCQklZDEsJlpFUk8JCSMgaXMgb3BlcmFuZCBhIFpFUk8/CglibmUuYgkJX0w0XzNzCQkJIyBubwoJYnNyLmwJCXNyY196ZXJvCQkJIyB5ZXMKCWJyYS5iCQlfTDRfNnMKX0w0XzNzOgoJY21waS5iCQklZDEsJklORgkJIyBpcyBvcGVyYW5kIGFuIElORj8KCWJuZS5iCQlfTDRfNHMJCQkjIG5vCglic3IubAkJc2V0b3htMWkJCQkjIHllcwoJYnJhLmIJCV9MNF82cwpfTDRfNHM6CgljbXBpLmIJCSVkMSwmUU5BTgkJIyBpcyBvcGVyYW5kIGEgUU5BTj8KCWJuZS5iCQlfTDRfNXMJCQkjIG5vCglic3IubAkJc3JjX3FuYW4JCQkjIHllcwoJYnJhLmIJCV9MNF82cwpfTDRfNXM6Cglic3IubAkJc2V0b3htMWQJCQkjIG9wZXJhbmQgaXMgYSBERU5PUk0KX0w0XzZzOgoKIwojCVJlc3VsdCBpcyBub3cgaW4gRlAwCiMKCW1vdm0ubAkJRVhDX0RSRUdTKCVhNiksJjB4MDMwMwkjIHJlc3RvcmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCVVTRVJfRlBDUiglYTYpLCVmcGNyLCVmcHNyICMgcmVzdG9yZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCUVYQ19GUDEoJWE2KSwmMHg0MAkjIHJlc3RvcmUgZnAxCgl1bmxrCQklYTYKCXJ0cwoKCWdsb2JhbAkJX2ZldG94bTFkXwpfZmV0b3htMWRfOgoJbGluawkJJWE2LCYtTE9DQUxfU0laRQoKCW1vdm0ubAkJJjB4MDMwMyxFWENfRFJFR1MoJWE2KQkjIHNhdmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCSVmcGNyLCVmcHNyLFVTRVJfRlBDUiglYTYpICMgc2F2ZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCSYweGMwLEVYQ19GUDAoJWE2KQkjIHNhdmUgZnAwL2ZwMQoKCWZtb3YubAkJJjB4MCwlZnBjcgkJIyB6ZXJvIEZQQ1IKCiMKIwljb3B5LCBjb252ZXJ0LCBhbmQgdGFnIGlucHV0IGFyZ3VtZW50CiMKCWZtb3YuZAkJMHg4KCVhNiksJWZwMAkJIyBsb2FkIGRibCBpbnB1dAoJZm1vdi54CQklZnAwLEZQX1NSQyglYTYpCglsZWEJCUZQX1NSQyglYTYpLCVhMAoJYnNyLmwJCXRhZwkJCSMgZmV0Y2ggb3BlcmFuZCB0eXBlCgltb3YuYgkJJWQwLFNUQUcoJWE2KQoJbW92LmIJCSVkMCwlZDEKCglhbmRpLmwJCSYweDAwZmYwMGZmLFVTRVJfRlBTUiglYTYpCgoJY2xyLmwJCSVkMAoJbW92LmIJCUZQQ1JfTU9ERSglYTYpLCVkMAkjIHBhc3Mgcm5kIG1vZGUscHJlYwoKCW1vdi5iCQklZDEsU1RBRyglYTYpCgl0c3QuYgkJJWQxCglibmUuYgkJX0w0XzJkCglic3IubAkJc2V0b3htMQkJCSMgb3BlcmFuZCBpcyBhIE5PUk0KCWJyYS5iCQlfTDRfNmQKX0w0XzJkOgoJY21waS5iCQklZDEsJlpFUk8JCSMgaXMgb3BlcmFuZCBhIFpFUk8/CglibmUuYgkJX0w0XzNkCQkJIyBubwoJYnNyLmwJCXNyY196ZXJvCQkJIyB5ZXMKCWJyYS5iCQlfTDRfNmQKX0w0XzNkOgoJY21waS5iCQklZDEsJklORgkJIyBpcyBvcGVyYW5kIGFuIElORj8KCWJuZS5iCQlfTDRfNGQJCQkjIG5vCglic3IubAkJc2V0b3htMWkJCQkjIHllcwoJYnJhLmIJCV9MNF82ZApfTDRfNGQ6CgljbXBpLmIJCSVkMSwmUU5BTgkJIyBpcyBvcGVyYW5kIGEgUU5BTj8KCWJuZS5iCQlfTDRfNWQJCQkjIG5vCglic3IubAkJc3JjX3FuYW4JCQkjIHllcwoJYnJhLmIJCV9MNF82ZApfTDRfNWQ6Cglic3IubAkJc2V0b3htMWQJCQkjIG9wZXJhbmQgaXMgYSBERU5PUk0KX0w0XzZkOgoKIwojCVJlc3VsdCBpcyBub3cgaW4gRlAwCiMKCW1vdm0ubAkJRVhDX0RSRUdTKCVhNiksJjB4MDMwMwkjIHJlc3RvcmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCVVTRVJfRlBDUiglYTYpLCVmcGNyLCVmcHNyICMgcmVzdG9yZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCUVYQ19GUDEoJWE2KSwmMHg0MAkjIHJlc3RvcmUgZnAxCgl1bmxrCQklYTYKCXJ0cwoKCWdsb2JhbAkJX2ZldG94bTF4XwpfZmV0b3htMXhfOgoJbGluawkJJWE2LCYtTE9DQUxfU0laRQoKCW1vdm0ubAkJJjB4MDMwMyxFWENfRFJFR1MoJWE2KQkjIHNhdmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCSVmcGNyLCVmcHNyLFVTRVJfRlBDUiglYTYpICMgc2F2ZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCSYweGMwLEVYQ19GUDAoJWE2KQkjIHNhdmUgZnAwL2ZwMQoKCWZtb3YubAkJJjB4MCwlZnBjcgkJIyB6ZXJvIEZQQ1IKCiMKIwljb3B5LCBjb252ZXJ0LCBhbmQgdGFnIGlucHV0IGFyZ3VtZW50CiMKCWxlYQkJRlBfU1JDKCVhNiksJWEwCgltb3YubAkJMHg4KzB4MCglYTYpLDB4MCglYTApCSMgbG9hZCBleHQgaW5wdXQKCW1vdi5sCQkweDgrMHg0KCVhNiksMHg0KCVhMCkKCW1vdi5sCQkweDgrMHg4KCVhNiksMHg4KCVhMCkKCWJzci5sCQl0YWcJCQkjIGZldGNoIG9wZXJhbmQgdHlwZQoJbW92LmIJCSVkMCxTVEFHKCVhNikKCW1vdi5iCQklZDAsJWQxCgoJYW5kaS5sCQkmMHgwMGZmMDBmZixVU0VSX0ZQU1IoJWE2KQoKCWNsci5sCQklZDAKCW1vdi5iCQlGUENSX01PREUoJWE2KSwlZDAJIyBwYXNzIHJuZCBtb2RlLHByZWMKCgl0c3QuYgkJJWQxCglibmUuYgkJX0w0XzJ4Cglic3IubAkJc2V0b3htMQkJCSMgb3BlcmFuZCBpcyBhIE5PUk0KCWJyYS5iCQlfTDRfNngKX0w0XzJ4OgoJY21waS5iCQklZDEsJlpFUk8JCSMgaXMgb3BlcmFuZCBhIFpFUk8/CglibmUuYgkJX0w0XzN4CQkJIyBubwoJYnNyLmwJCXNyY196ZXJvCQkJIyB5ZXMKCWJyYS5iCQlfTDRfNngKX0w0XzN4OgoJY21waS5iCQklZDEsJklORgkJIyBpcyBvcGVyYW5kIGFuIElORj8KCWJuZS5iCQlfTDRfNHgJCQkjIG5vCglic3IubAkJc2V0b3htMWkJCQkjIHllcwoJYnJhLmIJCV9MNF82eApfTDRfNHg6CgljbXBpLmIJCSVkMSwmUU5BTgkJIyBpcyBvcGVyYW5kIGEgUU5BTj8KCWJuZS5iCQlfTDRfNXgJCQkjIG5vCglic3IubAkJc3JjX3FuYW4JCQkjIHllcwoJYnJhLmIJCV9MNF82eApfTDRfNXg6Cglic3IubAkJc2V0b3htMWQJCQkjIG9wZXJhbmQgaXMgYSBERU5PUk0KX0w0XzZ4OgoKIwojCVJlc3VsdCBpcyBub3cgaW4gRlAwCiMKCW1vdm0ubAkJRVhDX0RSRUdTKCVhNiksJjB4MDMwMwkjIHJlc3RvcmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCVVTRVJfRlBDUiglYTYpLCVmcGNyLCVmcHNyICMgcmVzdG9yZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCUVYQ19GUDEoJWE2KSwmMHg0MAkjIHJlc3RvcmUgZnAxCgl1bmxrCQklYTYKCXJ0cwoKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBNT05BRElDIFRFTVBMQVRFCQkJCQkJCSMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoJZ2xvYmFsCQlfZnRhbmhzXwpfZnRhbmhzXzoKCWxpbmsJCSVhNiwmLUxPQ0FMX1NJWkUKCgltb3ZtLmwJCSYweDAzMDMsRVhDX0RSRUdTKCVhNikJIyBzYXZlIGQwLWQxL2EwLWExCglmbW92bS5sCQklZnBjciwlZnBzcixVU0VSX0ZQQ1IoJWE2KSAjIHNhdmUgY3RybCByZWdzCglmbW92bS54CQkmMHhjMCxFWENfRlAwKCVhNikJIyBzYXZlIGZwMC9mcDEKCglmbW92LmwJCSYweDAsJWZwY3IJCSMgemVybyBGUENSCgojCiMJY29weSwgY29udmVydCwgYW5kIHRhZyBpbnB1dCBhcmd1bWVudAojCglmbW92LnMJCTB4OCglYTYpLCVmcDAJCSMgbG9hZCBzZ2wgaW5wdXQKCWZtb3YueAkJJWZwMCxGUF9TUkMoJWE2KQoJbGVhCQlGUF9TUkMoJWE2KSwlYTAKCWJzci5sCQl0YWcJCQkjIGZldGNoIG9wZXJhbmQgdHlwZQoJbW92LmIJCSVkMCxTVEFHKCVhNikKCW1vdi5iCQklZDAsJWQxCgoJYW5kaS5sCQkmMHgwMGZmMDBmZixVU0VSX0ZQU1IoJWE2KQoKCWNsci5sCQklZDAKCW1vdi5iCQlGUENSX01PREUoJWE2KSwlZDAJIyBwYXNzIHJuZCBtb2RlLHByZWMKCgl0c3QuYgkJJWQxCglibmUuYgkJX0w1XzJzCglic3IubAkJc3RhbmgJCQkjIG9wZXJhbmQgaXMgYSBOT1JNCglicmEuYgkJX0w1XzZzCl9MNV8yczoKCWNtcGkuYgkJJWQxLCZaRVJPCQkjIGlzIG9wZXJhbmQgYSBaRVJPPwoJYm5lLmIJCV9MNV8zcwkJCSMgbm8KCWJzci5sCQlzcmNfemVybwkJCSMgeWVzCglicmEuYgkJX0w1XzZzCl9MNV8zczoKCWNtcGkuYgkJJWQxLCZJTkYJCSMgaXMgb3BlcmFuZCBhbiBJTkY/CglibmUuYgkJX0w1XzRzCQkJIyBubwoJYnNyLmwJCXNyY19vbmUJCQkjIHllcwoJYnJhLmIJCV9MNV82cwpfTDVfNHM6CgljbXBpLmIJCSVkMSwmUU5BTgkJIyBpcyBvcGVyYW5kIGEgUU5BTj8KCWJuZS5iCQlfTDVfNXMJCQkjIG5vCglic3IubAkJc3JjX3FuYW4JCQkjIHllcwoJYnJhLmIJCV9MNV82cwpfTDVfNXM6Cglic3IubAkJc3RhbmhkCQkJIyBvcGVyYW5kIGlzIGEgREVOT1JNCl9MNV82czoKCiMKIwlSZXN1bHQgaXMgbm93IGluIEZQMAojCgltb3ZtLmwJCUVYQ19EUkVHUyglYTYpLCYweDAzMDMJIyByZXN0b3JlIGQwLWQxL2EwLWExCglmbW92bS5sCQlVU0VSX0ZQQ1IoJWE2KSwlZnBjciwlZnBzciAjIHJlc3RvcmUgY3RybCByZWdzCglmbW92bS54CQlFWENfRlAxKCVhNiksJjB4NDAJIyByZXN0b3JlIGZwMQoJdW5sawkJJWE2CglydHMKCglnbG9iYWwJCV9mdGFuaGRfCl9mdGFuaGRfOgoJbGluawkJJWE2LCYtTE9DQUxfU0laRQoKCW1vdm0ubAkJJjB4MDMwMyxFWENfRFJFR1MoJWE2KQkjIHNhdmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCSVmcGNyLCVmcHNyLFVTRVJfRlBDUiglYTYpICMgc2F2ZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCSYweGMwLEVYQ19GUDAoJWE2KQkjIHNhdmUgZnAwL2ZwMQoKCWZtb3YubAkJJjB4MCwlZnBjcgkJIyB6ZXJvIEZQQ1IKCiMKIwljb3B5LCBjb252ZXJ0LCBhbmQgdGFnIGlucHV0IGFyZ3VtZW50CiMKCWZtb3YuZAkJMHg4KCVhNiksJWZwMAkJIyBsb2FkIGRibCBpbnB1dAoJZm1vdi54CQklZnAwLEZQX1NSQyglYTYpCglsZWEJCUZQX1NSQyglYTYpLCVhMAoJYnNyLmwJCXRhZwkJCSMgZmV0Y2ggb3BlcmFuZCB0eXBlCgltb3YuYgkJJWQwLFNUQUcoJWE2KQoJbW92LmIJCSVkMCwlZDEKCglhbmRpLmwJCSYweDAwZmYwMGZmLFVTRVJfRlBTUiglYTYpCgoJY2xyLmwJCSVkMAoJbW92LmIJCUZQQ1JfTU9ERSglYTYpLCVkMAkjIHBhc3Mgcm5kIG1vZGUscHJlYwoKCW1vdi5iCQklZDEsU1RBRyglYTYpCgl0c3QuYgkJJWQxCglibmUuYgkJX0w1XzJkCglic3IubAkJc3RhbmgJCQkjIG9wZXJhbmQgaXMgYSBOT1JNCglicmEuYgkJX0w1XzZkCl9MNV8yZDoKCWNtcGkuYgkJJWQxLCZaRVJPCQkjIGlzIG9wZXJhbmQgYSBaRVJPPwoJYm5lLmIJCV9MNV8zZAkJCSMgbm8KCWJzci5sCQlzcmNfemVybwkJCSMgeWVzCglicmEuYgkJX0w1XzZkCl9MNV8zZDoKCWNtcGkuYgkJJWQxLCZJTkYJCSMgaXMgb3BlcmFuZCBhbiBJTkY/CglibmUuYgkJX0w1XzRkCQkJIyBubwoJYnNyLmwJCXNyY19vbmUJCQkjIHllcwoJYnJhLmIJCV9MNV82ZApfTDVfNGQ6CgljbXBpLmIJCSVkMSwmUU5BTgkJIyBpcyBvcGVyYW5kIGEgUU5BTj8KCWJuZS5iCQlfTDVfNWQJCQkjIG5vCglic3IubAkJc3JjX3FuYW4JCQkjIHllcwoJYnJhLmIJCV9MNV82ZApfTDVfNWQ6Cglic3IubAkJc3RhbmhkCQkJIyBvcGVyYW5kIGlzIGEgREVOT1JNCl9MNV82ZDoKCiMKIwlSZXN1bHQgaXMgbm93IGluIEZQMAojCgltb3ZtLmwJCUVYQ19EUkVHUyglYTYpLCYweDAzMDMJIyByZXN0b3JlIGQwLWQxL2EwLWExCglmbW92bS5sCQlVU0VSX0ZQQ1IoJWE2KSwlZnBjciwlZnBzciAjIHJlc3RvcmUgY3RybCByZWdzCglmbW92bS54CQlFWENfRlAxKCVhNiksJjB4NDAJIyByZXN0b3JlIGZwMQoJdW5sawkJJWE2CglydHMKCglnbG9iYWwJCV9mdGFuaHhfCl9mdGFuaHhfOgoJbGluawkJJWE2LCYtTE9DQUxfU0laRQoKCW1vdm0ubAkJJjB4MDMwMyxFWENfRFJFR1MoJWE2KQkjIHNhdmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCSVmcGNyLCVmcHNyLFVTRVJfRlBDUiglYTYpICMgc2F2ZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCSYweGMwLEVYQ19GUDAoJWE2KQkjIHNhdmUgZnAwL2ZwMQoKCWZtb3YubAkJJjB4MCwlZnBjcgkJIyB6ZXJvIEZQQ1IKCiMKIwljb3B5LCBjb252ZXJ0LCBhbmQgdGFnIGlucHV0IGFyZ3VtZW50CiMKCWxlYQkJRlBfU1JDKCVhNiksJWEwCgltb3YubAkJMHg4KzB4MCglYTYpLDB4MCglYTApCSMgbG9hZCBleHQgaW5wdXQKCW1vdi5sCQkweDgrMHg0KCVhNiksMHg0KCVhMCkKCW1vdi5sCQkweDgrMHg4KCVhNiksMHg4KCVhMCkKCWJzci5sCQl0YWcJCQkjIGZldGNoIG9wZXJhbmQgdHlwZQoJbW92LmIJCSVkMCxTVEFHKCVhNikKCW1vdi5iCQklZDAsJWQxCgoJYW5kaS5sCQkmMHgwMGZmMDBmZixVU0VSX0ZQU1IoJWE2KQoKCWNsci5sCQklZDAKCW1vdi5iCQlGUENSX01PREUoJWE2KSwlZDAJIyBwYXNzIHJuZCBtb2RlLHByZWMKCgl0c3QuYgkJJWQxCglibmUuYgkJX0w1XzJ4Cglic3IubAkJc3RhbmgJCQkjIG9wZXJhbmQgaXMgYSBOT1JNCglicmEuYgkJX0w1XzZ4Cl9MNV8yeDoKCWNtcGkuYgkJJWQxLCZaRVJPCQkjIGlzIG9wZXJhbmQgYSBaRVJPPwoJYm5lLmIJCV9MNV8zeAkJCSMgbm8KCWJzci5sCQlzcmNfemVybwkJCSMgeWVzCglicmEuYgkJX0w1XzZ4Cl9MNV8zeDoKCWNtcGkuYgkJJWQxLCZJTkYJCSMgaXMgb3BlcmFuZCBhbiBJTkY/CglibmUuYgkJX0w1XzR4CQkJIyBubwoJYnNyLmwJCXNyY19vbmUJCQkjIHllcwoJYnJhLmIJCV9MNV82eApfTDVfNHg6CgljbXBpLmIJCSVkMSwmUU5BTgkJIyBpcyBvcGVyYW5kIGEgUU5BTj8KCWJuZS5iCQlfTDVfNXgJCQkjIG5vCglic3IubAkJc3JjX3FuYW4JCQkjIHllcwoJYnJhLmIJCV9MNV82eApfTDVfNXg6Cglic3IubAkJc3RhbmhkCQkJIyBvcGVyYW5kIGlzIGEgREVOT1JNCl9MNV82eDoKCiMKIwlSZXN1bHQgaXMgbm93IGluIEZQMAojCgltb3ZtLmwJCUVYQ19EUkVHUyglYTYpLCYweDAzMDMJIyByZXN0b3JlIGQwLWQxL2EwLWExCglmbW92bS5sCQlVU0VSX0ZQQ1IoJWE2KSwlZnBjciwlZnBzciAjIHJlc3RvcmUgY3RybCByZWdzCglmbW92bS54CQlFWENfRlAxKCVhNiksJjB4NDAJIyByZXN0b3JlIGZwMQoJdW5sawkJJWE2CglydHMKCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgTU9OQURJQyBURU1QTEFURQkJCQkJCQkjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCWdsb2JhbAkJX2ZhdGFuc18KX2ZhdGFuc186CglsaW5rCQklYTYsJi1MT0NBTF9TSVpFCgoJbW92bS5sCQkmMHgwMzAzLEVYQ19EUkVHUyglYTYpCSMgc2F2ZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJJWZwY3IsJWZwc3IsVVNFUl9GUENSKCVhNikgIyBzYXZlIGN0cmwgcmVncwoJZm1vdm0ueAkJJjB4YzAsRVhDX0ZQMCglYTYpCSMgc2F2ZSBmcDAvZnAxCgoJZm1vdi5sCQkmMHgwLCVmcGNyCQkjIHplcm8gRlBDUgoKIwojCWNvcHksIGNvbnZlcnQsIGFuZCB0YWcgaW5wdXQgYXJndW1lbnQKIwoJZm1vdi5zCQkweDgoJWE2KSwlZnAwCQkjIGxvYWQgc2dsIGlucHV0CglmbW92LngJCSVmcDAsRlBfU1JDKCVhNikKCWxlYQkJRlBfU1JDKCVhNiksJWEwCglic3IubAkJdGFnCQkJIyBmZXRjaCBvcGVyYW5kIHR5cGUKCW1vdi5iCQklZDAsU1RBRyglYTYpCgltb3YuYgkJJWQwLCVkMQoKCWFuZGkubAkJJjB4MDBmZjAwZmYsVVNFUl9GUFNSKCVhNikKCgljbHIubAkJJWQwCgltb3YuYgkJRlBDUl9NT0RFKCVhNiksJWQwCSMgcGFzcyBybmQgbW9kZSxwcmVjCgoJdHN0LmIJCSVkMQoJYm5lLmIJCV9MNl8ycwoJYnNyLmwJCXNhdGFuCQkJIyBvcGVyYW5kIGlzIGEgTk9STQoJYnJhLmIJCV9MNl82cwpfTDZfMnM6CgljbXBpLmIJCSVkMSwmWkVSTwkJIyBpcyBvcGVyYW5kIGEgWkVSTz8KCWJuZS5iCQlfTDZfM3MJCQkjIG5vCglic3IubAkJc3JjX3plcm8JCQkjIHllcwoJYnJhLmIJCV9MNl82cwpfTDZfM3M6CgljbXBpLmIJCSVkMSwmSU5GCQkjIGlzIG9wZXJhbmQgYW4gSU5GPwoJYm5lLmIJCV9MNl80cwkJCSMgbm8KCWJzci5sCQlzcGlfMgkJCSMgeWVzCglicmEuYgkJX0w2XzZzCl9MNl80czoKCWNtcGkuYgkJJWQxLCZRTkFOCQkjIGlzIG9wZXJhbmQgYSBRTkFOPwoJYm5lLmIJCV9MNl81cwkJCSMgbm8KCWJzci5sCQlzcmNfcW5hbgkJCSMgeWVzCglicmEuYgkJX0w2XzZzCl9MNl81czoKCWJzci5sCQlzYXRhbmQJCQkjIG9wZXJhbmQgaXMgYSBERU5PUk0KX0w2XzZzOgoKIwojCVJlc3VsdCBpcyBub3cgaW4gRlAwCiMKCW1vdm0ubAkJRVhDX0RSRUdTKCVhNiksJjB4MDMwMwkjIHJlc3RvcmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCVVTRVJfRlBDUiglYTYpLCVmcGNyLCVmcHNyICMgcmVzdG9yZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCUVYQ19GUDEoJWE2KSwmMHg0MAkjIHJlc3RvcmUgZnAxCgl1bmxrCQklYTYKCXJ0cwoKCWdsb2JhbAkJX2ZhdGFuZF8KX2ZhdGFuZF86CglsaW5rCQklYTYsJi1MT0NBTF9TSVpFCgoJbW92bS5sCQkmMHgwMzAzLEVYQ19EUkVHUyglYTYpCSMgc2F2ZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJJWZwY3IsJWZwc3IsVVNFUl9GUENSKCVhNikgIyBzYXZlIGN0cmwgcmVncwoJZm1vdm0ueAkJJjB4YzAsRVhDX0ZQMCglYTYpCSMgc2F2ZSBmcDAvZnAxCgoJZm1vdi5sCQkmMHgwLCVmcGNyCQkjIHplcm8gRlBDUgoKIwojCWNvcHksIGNvbnZlcnQsIGFuZCB0YWcgaW5wdXQgYXJndW1lbnQKIwoJZm1vdi5kCQkweDgoJWE2KSwlZnAwCQkjIGxvYWQgZGJsIGlucHV0CglmbW92LngJCSVmcDAsRlBfU1JDKCVhNikKCWxlYQkJRlBfU1JDKCVhNiksJWEwCglic3IubAkJdGFnCQkJIyBmZXRjaCBvcGVyYW5kIHR5cGUKCW1vdi5iCQklZDAsU1RBRyglYTYpCgltb3YuYgkJJWQwLCVkMQoKCWFuZGkubAkJJjB4MDBmZjAwZmYsVVNFUl9GUFNSKCVhNikKCgljbHIubAkJJWQwCgltb3YuYgkJRlBDUl9NT0RFKCVhNiksJWQwCSMgcGFzcyBybmQgbW9kZSxwcmVjCgoJbW92LmIJCSVkMSxTVEFHKCVhNikKCXRzdC5iCQklZDEKCWJuZS5iCQlfTDZfMmQKCWJzci5sCQlzYXRhbgkJCSMgb3BlcmFuZCBpcyBhIE5PUk0KCWJyYS5iCQlfTDZfNmQKX0w2XzJkOgoJY21waS5iCQklZDEsJlpFUk8JCSMgaXMgb3BlcmFuZCBhIFpFUk8/CglibmUuYgkJX0w2XzNkCQkJIyBubwoJYnNyLmwJCXNyY196ZXJvCQkJIyB5ZXMKCWJyYS5iCQlfTDZfNmQKX0w2XzNkOgoJY21waS5iCQklZDEsJklORgkJIyBpcyBvcGVyYW5kIGFuIElORj8KCWJuZS5iCQlfTDZfNGQJCQkjIG5vCglic3IubAkJc3BpXzIJCQkjIHllcwoJYnJhLmIJCV9MNl82ZApfTDZfNGQ6CgljbXBpLmIJCSVkMSwmUU5BTgkJIyBpcyBvcGVyYW5kIGEgUU5BTj8KCWJuZS5iCQlfTDZfNWQJCQkjIG5vCglic3IubAkJc3JjX3FuYW4JCQkjIHllcwoJYnJhLmIJCV9MNl82ZApfTDZfNWQ6Cglic3IubAkJc2F0YW5kCQkJIyBvcGVyYW5kIGlzIGEgREVOT1JNCl9MNl82ZDoKCiMKIwlSZXN1bHQgaXMgbm93IGluIEZQMAojCgltb3ZtLmwJCUVYQ19EUkVHUyglYTYpLCYweDAzMDMJIyByZXN0b3JlIGQwLWQxL2EwLWExCglmbW92bS5sCQlVU0VSX0ZQQ1IoJWE2KSwlZnBjciwlZnBzciAjIHJlc3RvcmUgY3RybCByZWdzCglmbW92bS54CQlFWENfRlAxKCVhNiksJjB4NDAJIyByZXN0b3JlIGZwMQoJdW5sawkJJWE2CglydHMKCglnbG9iYWwJCV9mYXRhbnhfCl9mYXRhbnhfOgoJbGluawkJJWE2LCYtTE9DQUxfU0laRQoKCW1vdm0ubAkJJjB4MDMwMyxFWENfRFJFR1MoJWE2KQkjIHNhdmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCSVmcGNyLCVmcHNyLFVTRVJfRlBDUiglYTYpICMgc2F2ZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCSYweGMwLEVYQ19GUDAoJWE2KQkjIHNhdmUgZnAwL2ZwMQoKCWZtb3YubAkJJjB4MCwlZnBjcgkJIyB6ZXJvIEZQQ1IKCiMKIwljb3B5LCBjb252ZXJ0LCBhbmQgdGFnIGlucHV0IGFyZ3VtZW50CiMKCWxlYQkJRlBfU1JDKCVhNiksJWEwCgltb3YubAkJMHg4KzB4MCglYTYpLDB4MCglYTApCSMgbG9hZCBleHQgaW5wdXQKCW1vdi5sCQkweDgrMHg0KCVhNiksMHg0KCVhMCkKCW1vdi5sCQkweDgrMHg4KCVhNiksMHg4KCVhMCkKCWJzci5sCQl0YWcJCQkjIGZldGNoIG9wZXJhbmQgdHlwZQoJbW92LmIJCSVkMCxTVEFHKCVhNikKCW1vdi5iCQklZDAsJWQxCgoJYW5kaS5sCQkmMHgwMGZmMDBmZixVU0VSX0ZQU1IoJWE2KQoKCWNsci5sCQklZDAKCW1vdi5iCQlGUENSX01PREUoJWE2KSwlZDAJIyBwYXNzIHJuZCBtb2RlLHByZWMKCgl0c3QuYgkJJWQxCglibmUuYgkJX0w2XzJ4Cglic3IubAkJc2F0YW4JCQkjIG9wZXJhbmQgaXMgYSBOT1JNCglicmEuYgkJX0w2XzZ4Cl9MNl8yeDoKCWNtcGkuYgkJJWQxLCZaRVJPCQkjIGlzIG9wZXJhbmQgYSBaRVJPPwoJYm5lLmIJCV9MNl8zeAkJCSMgbm8KCWJzci5sCQlzcmNfemVybwkJCSMgeWVzCglicmEuYgkJX0w2XzZ4Cl9MNl8zeDoKCWNtcGkuYgkJJWQxLCZJTkYJCSMgaXMgb3BlcmFuZCBhbiBJTkY/CglibmUuYgkJX0w2XzR4CQkJIyBubwoJYnNyLmwJCXNwaV8yCQkJIyB5ZXMKCWJyYS5iCQlfTDZfNngKX0w2XzR4OgoJY21waS5iCQklZDEsJlFOQU4JCSMgaXMgb3BlcmFuZCBhIFFOQU4/CglibmUuYgkJX0w2XzV4CQkJIyBubwoJYnNyLmwJCXNyY19xbmFuCQkJIyB5ZXMKCWJyYS5iCQlfTDZfNngKX0w2XzV4OgoJYnNyLmwJCXNhdGFuZAkJCSMgb3BlcmFuZCBpcyBhIERFTk9STQpfTDZfNng6CgojCiMJUmVzdWx0IGlzIG5vdyBpbiBGUDAKIwoJbW92bS5sCQlFWENfRFJFR1MoJWE2KSwmMHgwMzAzCSMgcmVzdG9yZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJVVNFUl9GUENSKCVhNiksJWZwY3IsJWZwc3IgIyByZXN0b3JlIGN0cmwgcmVncwoJZm1vdm0ueAkJRVhDX0ZQMSglYTYpLCYweDQwCSMgcmVzdG9yZSBmcDEKCXVubGsJCSVhNgoJcnRzCgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE1PTkFESUMgVEVNUExBVEUJCQkJCQkJIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCglnbG9iYWwJCV9mYXNpbnNfCl9mYXNpbnNfOgoJbGluawkJJWE2LCYtTE9DQUxfU0laRQoKCW1vdm0ubAkJJjB4MDMwMyxFWENfRFJFR1MoJWE2KQkjIHNhdmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCSVmcGNyLCVmcHNyLFVTRVJfRlBDUiglYTYpICMgc2F2ZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCSYweGMwLEVYQ19GUDAoJWE2KQkjIHNhdmUgZnAwL2ZwMQoKCWZtb3YubAkJJjB4MCwlZnBjcgkJIyB6ZXJvIEZQQ1IKCiMKIwljb3B5LCBjb252ZXJ0LCBhbmQgdGFnIGlucHV0IGFyZ3VtZW50CiMKCWZtb3YucwkJMHg4KCVhNiksJWZwMAkJIyBsb2FkIHNnbCBpbnB1dAoJZm1vdi54CQklZnAwLEZQX1NSQyglYTYpCglsZWEJCUZQX1NSQyglYTYpLCVhMAoJYnNyLmwJCXRhZwkJCSMgZmV0Y2ggb3BlcmFuZCB0eXBlCgltb3YuYgkJJWQwLFNUQUcoJWE2KQoJbW92LmIJCSVkMCwlZDEKCglhbmRpLmwJCSYweDAwZmYwMGZmLFVTRVJfRlBTUiglYTYpCgoJY2xyLmwJCSVkMAoJbW92LmIJCUZQQ1JfTU9ERSglYTYpLCVkMAkjIHBhc3Mgcm5kIG1vZGUscHJlYwoKCXRzdC5iCQklZDEKCWJuZS5iCQlfTDdfMnMKCWJzci5sCQlzYXNpbgkJCSMgb3BlcmFuZCBpcyBhIE5PUk0KCWJyYS5iCQlfTDdfNnMKX0w3XzJzOgoJY21waS5iCQklZDEsJlpFUk8JCSMgaXMgb3BlcmFuZCBhIFpFUk8/CglibmUuYgkJX0w3XzNzCQkJIyBubwoJYnNyLmwJCXNyY196ZXJvCQkJIyB5ZXMKCWJyYS5iCQlfTDdfNnMKX0w3XzNzOgoJY21waS5iCQklZDEsJklORgkJIyBpcyBvcGVyYW5kIGFuIElORj8KCWJuZS5iCQlfTDdfNHMJCQkjIG5vCglic3IubAkJdF9vcGVycgkJCSMgeWVzCglicmEuYgkJX0w3XzZzCl9MN180czoKCWNtcGkuYgkJJWQxLCZRTkFOCQkjIGlzIG9wZXJhbmQgYSBRTkFOPwoJYm5lLmIJCV9MN181cwkJCSMgbm8KCWJzci5sCQlzcmNfcW5hbgkJCSMgeWVzCglicmEuYgkJX0w3XzZzCl9MN181czoKCWJzci5sCQlzYXNpbmQJCQkjIG9wZXJhbmQgaXMgYSBERU5PUk0KX0w3XzZzOgoKIwojCVJlc3VsdCBpcyBub3cgaW4gRlAwCiMKCW1vdm0ubAkJRVhDX0RSRUdTKCVhNiksJjB4MDMwMwkjIHJlc3RvcmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCVVTRVJfRlBDUiglYTYpLCVmcGNyLCVmcHNyICMgcmVzdG9yZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCUVYQ19GUDEoJWE2KSwmMHg0MAkjIHJlc3RvcmUgZnAxCgl1bmxrCQklYTYKCXJ0cwoKCWdsb2JhbAkJX2Zhc2luZF8KX2Zhc2luZF86CglsaW5rCQklYTYsJi1MT0NBTF9TSVpFCgoJbW92bS5sCQkmMHgwMzAzLEVYQ19EUkVHUyglYTYpCSMgc2F2ZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJJWZwY3IsJWZwc3IsVVNFUl9GUENSKCVhNikgIyBzYXZlIGN0cmwgcmVncwoJZm1vdm0ueAkJJjB4YzAsRVhDX0ZQMCglYTYpCSMgc2F2ZSBmcDAvZnAxCgoJZm1vdi5sCQkmMHgwLCVmcGNyCQkjIHplcm8gRlBDUgoKIwojCWNvcHksIGNvbnZlcnQsIGFuZCB0YWcgaW5wdXQgYXJndW1lbnQKIwoJZm1vdi5kCQkweDgoJWE2KSwlZnAwCQkjIGxvYWQgZGJsIGlucHV0CglmbW92LngJCSVmcDAsRlBfU1JDKCVhNikKCWxlYQkJRlBfU1JDKCVhNiksJWEwCglic3IubAkJdGFnCQkJIyBmZXRjaCBvcGVyYW5kIHR5cGUKCW1vdi5iCQklZDAsU1RBRyglYTYpCgltb3YuYgkJJWQwLCVkMQoKCWFuZGkubAkJJjB4MDBmZjAwZmYsVVNFUl9GUFNSKCVhNikKCgljbHIubAkJJWQwCgltb3YuYgkJRlBDUl9NT0RFKCVhNiksJWQwCSMgcGFzcyBybmQgbW9kZSxwcmVjCgoJbW92LmIJCSVkMSxTVEFHKCVhNikKCXRzdC5iCQklZDEKCWJuZS5iCQlfTDdfMmQKCWJzci5sCQlzYXNpbgkJCSMgb3BlcmFuZCBpcyBhIE5PUk0KCWJyYS5iCQlfTDdfNmQKX0w3XzJkOgoJY21waS5iCQklZDEsJlpFUk8JCSMgaXMgb3BlcmFuZCBhIFpFUk8/CglibmUuYgkJX0w3XzNkCQkJIyBubwoJYnNyLmwJCXNyY196ZXJvCQkJIyB5ZXMKCWJyYS5iCQlfTDdfNmQKX0w3XzNkOgoJY21waS5iCQklZDEsJklORgkJIyBpcyBvcGVyYW5kIGFuIElORj8KCWJuZS5iCQlfTDdfNGQJCQkjIG5vCglic3IubAkJdF9vcGVycgkJCSMgeWVzCglicmEuYgkJX0w3XzZkCl9MN180ZDoKCWNtcGkuYgkJJWQxLCZRTkFOCQkjIGlzIG9wZXJhbmQgYSBRTkFOPwoJYm5lLmIJCV9MN181ZAkJCSMgbm8KCWJzci5sCQlzcmNfcW5hbgkJCSMgeWVzCglicmEuYgkJX0w3XzZkCl9MN181ZDoKCWJzci5sCQlzYXNpbmQJCQkjIG9wZXJhbmQgaXMgYSBERU5PUk0KX0w3XzZkOgoKIwojCVJlc3VsdCBpcyBub3cgaW4gRlAwCiMKCW1vdm0ubAkJRVhDX0RSRUdTKCVhNiksJjB4MDMwMwkjIHJlc3RvcmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCVVTRVJfRlBDUiglYTYpLCVmcGNyLCVmcHNyICMgcmVzdG9yZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCUVYQ19GUDEoJWE2KSwmMHg0MAkjIHJlc3RvcmUgZnAxCgl1bmxrCQklYTYKCXJ0cwoKCWdsb2JhbAkJX2Zhc2lueF8KX2Zhc2lueF86CglsaW5rCQklYTYsJi1MT0NBTF9TSVpFCgoJbW92bS5sCQkmMHgwMzAzLEVYQ19EUkVHUyglYTYpCSMgc2F2ZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJJWZwY3IsJWZwc3IsVVNFUl9GUENSKCVhNikgIyBzYXZlIGN0cmwgcmVncwoJZm1vdm0ueAkJJjB4YzAsRVhDX0ZQMCglYTYpCSMgc2F2ZSBmcDAvZnAxCgoJZm1vdi5sCQkmMHgwLCVmcGNyCQkjIHplcm8gRlBDUgoKIwojCWNvcHksIGNvbnZlcnQsIGFuZCB0YWcgaW5wdXQgYXJndW1lbnQKIwoJbGVhCQlGUF9TUkMoJWE2KSwlYTAKCW1vdi5sCQkweDgrMHgwKCVhNiksMHgwKCVhMCkJIyBsb2FkIGV4dCBpbnB1dAoJbW92LmwJCTB4OCsweDQoJWE2KSwweDQoJWEwKQoJbW92LmwJCTB4OCsweDgoJWE2KSwweDgoJWEwKQoJYnNyLmwJCXRhZwkJCSMgZmV0Y2ggb3BlcmFuZCB0eXBlCgltb3YuYgkJJWQwLFNUQUcoJWE2KQoJbW92LmIJCSVkMCwlZDEKCglhbmRpLmwJCSYweDAwZmYwMGZmLFVTRVJfRlBTUiglYTYpCgoJY2xyLmwJCSVkMAoJbW92LmIJCUZQQ1JfTU9ERSglYTYpLCVkMAkjIHBhc3Mgcm5kIG1vZGUscHJlYwoKCXRzdC5iCQklZDEKCWJuZS5iCQlfTDdfMngKCWJzci5sCQlzYXNpbgkJCSMgb3BlcmFuZCBpcyBhIE5PUk0KCWJyYS5iCQlfTDdfNngKX0w3XzJ4OgoJY21waS5iCQklZDEsJlpFUk8JCSMgaXMgb3BlcmFuZCBhIFpFUk8/CglibmUuYgkJX0w3XzN4CQkJIyBubwoJYnNyLmwJCXNyY196ZXJvCQkJIyB5ZXMKCWJyYS5iCQlfTDdfNngKX0w3XzN4OgoJY21waS5iCQklZDEsJklORgkJIyBpcyBvcGVyYW5kIGFuIElORj8KCWJuZS5iCQlfTDdfNHgJCQkjIG5vCglic3IubAkJdF9vcGVycgkJCSMgeWVzCglicmEuYgkJX0w3XzZ4Cl9MN180eDoKCWNtcGkuYgkJJWQxLCZRTkFOCQkjIGlzIG9wZXJhbmQgYSBRTkFOPwoJYm5lLmIJCV9MN181eAkJCSMgbm8KCWJzci5sCQlzcmNfcW5hbgkJCSMgeWVzCglicmEuYgkJX0w3XzZ4Cl9MN181eDoKCWJzci5sCQlzYXNpbmQJCQkjIG9wZXJhbmQgaXMgYSBERU5PUk0KX0w3XzZ4OgoKIwojCVJlc3VsdCBpcyBub3cgaW4gRlAwCiMKCW1vdm0ubAkJRVhDX0RSRUdTKCVhNiksJjB4MDMwMwkjIHJlc3RvcmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCVVTRVJfRlBDUiglYTYpLCVmcGNyLCVmcHNyICMgcmVzdG9yZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCUVYQ19GUDEoJWE2KSwmMHg0MAkjIHJlc3RvcmUgZnAxCgl1bmxrCQklYTYKCXJ0cwoKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBNT05BRElDIFRFTVBMQVRFCQkJCQkJCSMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoJZ2xvYmFsCQlfZmF0YW5oc18KX2ZhdGFuaHNfOgoJbGluawkJJWE2LCYtTE9DQUxfU0laRQoKCW1vdm0ubAkJJjB4MDMwMyxFWENfRFJFR1MoJWE2KQkjIHNhdmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCSVmcGNyLCVmcHNyLFVTRVJfRlBDUiglYTYpICMgc2F2ZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCSYweGMwLEVYQ19GUDAoJWE2KQkjIHNhdmUgZnAwL2ZwMQoKCWZtb3YubAkJJjB4MCwlZnBjcgkJIyB6ZXJvIEZQQ1IKCiMKIwljb3B5LCBjb252ZXJ0LCBhbmQgdGFnIGlucHV0IGFyZ3VtZW50CiMKCWZtb3YucwkJMHg4KCVhNiksJWZwMAkJIyBsb2FkIHNnbCBpbnB1dAoJZm1vdi54CQklZnAwLEZQX1NSQyglYTYpCglsZWEJCUZQX1NSQyglYTYpLCVhMAoJYnNyLmwJCXRhZwkJCSMgZmV0Y2ggb3BlcmFuZCB0eXBlCgltb3YuYgkJJWQwLFNUQUcoJWE2KQoJbW92LmIJCSVkMCwlZDEKCglhbmRpLmwJCSYweDAwZmYwMGZmLFVTRVJfRlBTUiglYTYpCgoJY2xyLmwJCSVkMAoJbW92LmIJCUZQQ1JfTU9ERSglYTYpLCVkMAkjIHBhc3Mgcm5kIG1vZGUscHJlYwoKCXRzdC5iCQklZDEKCWJuZS5iCQlfTDhfMnMKCWJzci5sCQlzYXRhbmgJCQkjIG9wZXJhbmQgaXMgYSBOT1JNCglicmEuYgkJX0w4XzZzCl9MOF8yczoKCWNtcGkuYgkJJWQxLCZaRVJPCQkjIGlzIG9wZXJhbmQgYSBaRVJPPwoJYm5lLmIJCV9MOF8zcwkJCSMgbm8KCWJzci5sCQlzcmNfemVybwkJCSMgeWVzCglicmEuYgkJX0w4XzZzCl9MOF8zczoKCWNtcGkuYgkJJWQxLCZJTkYJCSMgaXMgb3BlcmFuZCBhbiBJTkY/CglibmUuYgkJX0w4XzRzCQkJIyBubwoJYnNyLmwJCXRfb3BlcnIJCQkjIHllcwoJYnJhLmIJCV9MOF82cwpfTDhfNHM6CgljbXBpLmIJCSVkMSwmUU5BTgkJIyBpcyBvcGVyYW5kIGEgUU5BTj8KCWJuZS5iCQlfTDhfNXMJCQkjIG5vCglic3IubAkJc3JjX3FuYW4JCQkjIHllcwoJYnJhLmIJCV9MOF82cwpfTDhfNXM6Cglic3IubAkJc2F0YW5oZAkJCSMgb3BlcmFuZCBpcyBhIERFTk9STQpfTDhfNnM6CgojCiMJUmVzdWx0IGlzIG5vdyBpbiBGUDAKIwoJbW92bS5sCQlFWENfRFJFR1MoJWE2KSwmMHgwMzAzCSMgcmVzdG9yZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJVVNFUl9GUENSKCVhNiksJWZwY3IsJWZwc3IgIyByZXN0b3JlIGN0cmwgcmVncwoJZm1vdm0ueAkJRVhDX0ZQMSglYTYpLCYweDQwCSMgcmVzdG9yZSBmcDEKCXVubGsJCSVhNgoJcnRzCgoJZ2xvYmFsCQlfZmF0YW5oZF8KX2ZhdGFuaGRfOgoJbGluawkJJWE2LCYtTE9DQUxfU0laRQoKCW1vdm0ubAkJJjB4MDMwMyxFWENfRFJFR1MoJWE2KQkjIHNhdmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCSVmcGNyLCVmcHNyLFVTRVJfRlBDUiglYTYpICMgc2F2ZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCSYweGMwLEVYQ19GUDAoJWE2KQkjIHNhdmUgZnAwL2ZwMQoKCWZtb3YubAkJJjB4MCwlZnBjcgkJIyB6ZXJvIEZQQ1IKCiMKIwljb3B5LCBjb252ZXJ0LCBhbmQgdGFnIGlucHV0IGFyZ3VtZW50CiMKCWZtb3YuZAkJMHg4KCVhNiksJWZwMAkJIyBsb2FkIGRibCBpbnB1dAoJZm1vdi54CQklZnAwLEZQX1NSQyglYTYpCglsZWEJCUZQX1NSQyglYTYpLCVhMAoJYnNyLmwJCXRhZwkJCSMgZmV0Y2ggb3BlcmFuZCB0eXBlCgltb3YuYgkJJWQwLFNUQUcoJWE2KQoJbW92LmIJCSVkMCwlZDEKCglhbmRpLmwJCSYweDAwZmYwMGZmLFVTRVJfRlBTUiglYTYpCgoJY2xyLmwJCSVkMAoJbW92LmIJCUZQQ1JfTU9ERSglYTYpLCVkMAkjIHBhc3Mgcm5kIG1vZGUscHJlYwoKCW1vdi5iCQklZDEsU1RBRyglYTYpCgl0c3QuYgkJJWQxCglibmUuYgkJX0w4XzJkCglic3IubAkJc2F0YW5oCQkJIyBvcGVyYW5kIGlzIGEgTk9STQoJYnJhLmIJCV9MOF82ZApfTDhfMmQ6CgljbXBpLmIJCSVkMSwmWkVSTwkJIyBpcyBvcGVyYW5kIGEgWkVSTz8KCWJuZS5iCQlfTDhfM2QJCQkjIG5vCglic3IubAkJc3JjX3plcm8JCQkjIHllcwoJYnJhLmIJCV9MOF82ZApfTDhfM2Q6CgljbXBpLmIJCSVkMSwmSU5GCQkjIGlzIG9wZXJhbmQgYW4gSU5GPwoJYm5lLmIJCV9MOF80ZAkJCSMgbm8KCWJzci5sCQl0X29wZXJyCQkJIyB5ZXMKCWJyYS5iCQlfTDhfNmQKX0w4XzRkOgoJY21waS5iCQklZDEsJlFOQU4JCSMgaXMgb3BlcmFuZCBhIFFOQU4/CglibmUuYgkJX0w4XzVkCQkJIyBubwoJYnNyLmwJCXNyY19xbmFuCQkJIyB5ZXMKCWJyYS5iCQlfTDhfNmQKX0w4XzVkOgoJYnNyLmwJCXNhdGFuaGQJCQkjIG9wZXJhbmQgaXMgYSBERU5PUk0KX0w4XzZkOgoKIwojCVJlc3VsdCBpcyBub3cgaW4gRlAwCiMKCW1vdm0ubAkJRVhDX0RSRUdTKCVhNiksJjB4MDMwMwkjIHJlc3RvcmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCVVTRVJfRlBDUiglYTYpLCVmcGNyLCVmcHNyICMgcmVzdG9yZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCUVYQ19GUDEoJWE2KSwmMHg0MAkjIHJlc3RvcmUgZnAxCgl1bmxrCQklYTYKCXJ0cwoKCWdsb2JhbAkJX2ZhdGFuaHhfCl9mYXRhbmh4XzoKCWxpbmsJCSVhNiwmLUxPQ0FMX1NJWkUKCgltb3ZtLmwJCSYweDAzMDMsRVhDX0RSRUdTKCVhNikJIyBzYXZlIGQwLWQxL2EwLWExCglmbW92bS5sCQklZnBjciwlZnBzcixVU0VSX0ZQQ1IoJWE2KSAjIHNhdmUgY3RybCByZWdzCglmbW92bS54CQkmMHhjMCxFWENfRlAwKCVhNikJIyBzYXZlIGZwMC9mcDEKCglmbW92LmwJCSYweDAsJWZwY3IJCSMgemVybyBGUENSCgojCiMJY29weSwgY29udmVydCwgYW5kIHRhZyBpbnB1dCBhcmd1bWVudAojCglsZWEJCUZQX1NSQyglYTYpLCVhMAoJbW92LmwJCTB4OCsweDAoJWE2KSwweDAoJWEwKQkjIGxvYWQgZXh0IGlucHV0Cgltb3YubAkJMHg4KzB4NCglYTYpLDB4NCglYTApCgltb3YubAkJMHg4KzB4OCglYTYpLDB4OCglYTApCglic3IubAkJdGFnCQkJIyBmZXRjaCBvcGVyYW5kIHR5cGUKCW1vdi5iCQklZDAsU1RBRyglYTYpCgltb3YuYgkJJWQwLCVkMQoKCWFuZGkubAkJJjB4MDBmZjAwZmYsVVNFUl9GUFNSKCVhNikKCgljbHIubAkJJWQwCgltb3YuYgkJRlBDUl9NT0RFKCVhNiksJWQwCSMgcGFzcyBybmQgbW9kZSxwcmVjCgoJdHN0LmIJCSVkMQoJYm5lLmIJCV9MOF8yeAoJYnNyLmwJCXNhdGFuaAkJCSMgb3BlcmFuZCBpcyBhIE5PUk0KCWJyYS5iCQlfTDhfNngKX0w4XzJ4OgoJY21waS5iCQklZDEsJlpFUk8JCSMgaXMgb3BlcmFuZCBhIFpFUk8/CglibmUuYgkJX0w4XzN4CQkJIyBubwoJYnNyLmwJCXNyY196ZXJvCQkJIyB5ZXMKCWJyYS5iCQlfTDhfNngKX0w4XzN4OgoJY21waS5iCQklZDEsJklORgkJIyBpcyBvcGVyYW5kIGFuIElORj8KCWJuZS5iCQlfTDhfNHgJCQkjIG5vCglic3IubAkJdF9vcGVycgkJCSMgeWVzCglicmEuYgkJX0w4XzZ4Cl9MOF80eDoKCWNtcGkuYgkJJWQxLCZRTkFOCQkjIGlzIG9wZXJhbmQgYSBRTkFOPwoJYm5lLmIJCV9MOF81eAkJCSMgbm8KCWJzci5sCQlzcmNfcW5hbgkJCSMgeWVzCglicmEuYgkJX0w4XzZ4Cl9MOF81eDoKCWJzci5sCQlzYXRhbmhkCQkJIyBvcGVyYW5kIGlzIGEgREVOT1JNCl9MOF82eDoKCiMKIwlSZXN1bHQgaXMgbm93IGluIEZQMAojCgltb3ZtLmwJCUVYQ19EUkVHUyglYTYpLCYweDAzMDMJIyByZXN0b3JlIGQwLWQxL2EwLWExCglmbW92bS5sCQlVU0VSX0ZQQ1IoJWE2KSwlZnBjciwlZnBzciAjIHJlc3RvcmUgY3RybCByZWdzCglmbW92bS54CQlFWENfRlAxKCVhNiksJjB4NDAJIyByZXN0b3JlIGZwMQoJdW5sawkJJWE2CglydHMKCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgTU9OQURJQyBURU1QTEFURQkJCQkJCQkjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCWdsb2JhbAkJX2Z0YW5zXwpfZnRhbnNfOgoJbGluawkJJWE2LCYtTE9DQUxfU0laRQoKCW1vdm0ubAkJJjB4MDMwMyxFWENfRFJFR1MoJWE2KQkjIHNhdmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCSVmcGNyLCVmcHNyLFVTRVJfRlBDUiglYTYpICMgc2F2ZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCSYweGMwLEVYQ19GUDAoJWE2KQkjIHNhdmUgZnAwL2ZwMQoKCWZtb3YubAkJJjB4MCwlZnBjcgkJIyB6ZXJvIEZQQ1IKCiMKIwljb3B5LCBjb252ZXJ0LCBhbmQgdGFnIGlucHV0IGFyZ3VtZW50CiMKCWZtb3YucwkJMHg4KCVhNiksJWZwMAkJIyBsb2FkIHNnbCBpbnB1dAoJZm1vdi54CQklZnAwLEZQX1NSQyglYTYpCglsZWEJCUZQX1NSQyglYTYpLCVhMAoJYnNyLmwJCXRhZwkJCSMgZmV0Y2ggb3BlcmFuZCB0eXBlCgltb3YuYgkJJWQwLFNUQUcoJWE2KQoJbW92LmIJCSVkMCwlZDEKCglhbmRpLmwJCSYweDAwZmYwMGZmLFVTRVJfRlBTUiglYTYpCgoJY2xyLmwJCSVkMAoJbW92LmIJCUZQQ1JfTU9ERSglYTYpLCVkMAkjIHBhc3Mgcm5kIG1vZGUscHJlYwoKCXRzdC5iCQklZDEKCWJuZS5iCQlfTDlfMnMKCWJzci5sCQlzdGFuCQkJIyBvcGVyYW5kIGlzIGEgTk9STQoJYnJhLmIJCV9MOV82cwpfTDlfMnM6CgljbXBpLmIJCSVkMSwmWkVSTwkJIyBpcyBvcGVyYW5kIGEgWkVSTz8KCWJuZS5iCQlfTDlfM3MJCQkjIG5vCglic3IubAkJc3JjX3plcm8JCQkjIHllcwoJYnJhLmIJCV9MOV82cwpfTDlfM3M6CgljbXBpLmIJCSVkMSwmSU5GCQkjIGlzIG9wZXJhbmQgYW4gSU5GPwoJYm5lLmIJCV9MOV80cwkJCSMgbm8KCWJzci5sCQl0X29wZXJyCQkJIyB5ZXMKCWJyYS5iCQlfTDlfNnMKX0w5XzRzOgoJY21waS5iCQklZDEsJlFOQU4JCSMgaXMgb3BlcmFuZCBhIFFOQU4/CglibmUuYgkJX0w5XzVzCQkJIyBubwoJYnNyLmwJCXNyY19xbmFuCQkJIyB5ZXMKCWJyYS5iCQlfTDlfNnMKX0w5XzVzOgoJYnNyLmwJCXN0YW5kCQkJIyBvcGVyYW5kIGlzIGEgREVOT1JNCl9MOV82czoKCiMKIwlSZXN1bHQgaXMgbm93IGluIEZQMAojCgltb3ZtLmwJCUVYQ19EUkVHUyglYTYpLCYweDAzMDMJIyByZXN0b3JlIGQwLWQxL2EwLWExCglmbW92bS5sCQlVU0VSX0ZQQ1IoJWE2KSwlZnBjciwlZnBzciAjIHJlc3RvcmUgY3RybCByZWdzCglmbW92bS54CQlFWENfRlAxKCVhNiksJjB4NDAJIyByZXN0b3JlIGZwMQoJdW5sawkJJWE2CglydHMKCglnbG9iYWwJCV9mdGFuZF8KX2Z0YW5kXzoKCWxpbmsJCSVhNiwmLUxPQ0FMX1NJWkUKCgltb3ZtLmwJCSYweDAzMDMsRVhDX0RSRUdTKCVhNikJIyBzYXZlIGQwLWQxL2EwLWExCglmbW92bS5sCQklZnBjciwlZnBzcixVU0VSX0ZQQ1IoJWE2KSAjIHNhdmUgY3RybCByZWdzCglmbW92bS54CQkmMHhjMCxFWENfRlAwKCVhNikJIyBzYXZlIGZwMC9mcDEKCglmbW92LmwJCSYweDAsJWZwY3IJCSMgemVybyBGUENSCgojCiMJY29weSwgY29udmVydCwgYW5kIHRhZyBpbnB1dCBhcmd1bWVudAojCglmbW92LmQJCTB4OCglYTYpLCVmcDAJCSMgbG9hZCBkYmwgaW5wdXQKCWZtb3YueAkJJWZwMCxGUF9TUkMoJWE2KQoJbGVhCQlGUF9TUkMoJWE2KSwlYTAKCWJzci5sCQl0YWcJCQkjIGZldGNoIG9wZXJhbmQgdHlwZQoJbW92LmIJCSVkMCxTVEFHKCVhNikKCW1vdi5iCQklZDAsJWQxCgoJYW5kaS5sCQkmMHgwMGZmMDBmZixVU0VSX0ZQU1IoJWE2KQoKCWNsci5sCQklZDAKCW1vdi5iCQlGUENSX01PREUoJWE2KSwlZDAJIyBwYXNzIHJuZCBtb2RlLHByZWMKCgltb3YuYgkJJWQxLFNUQUcoJWE2KQoJdHN0LmIJCSVkMQoJYm5lLmIJCV9MOV8yZAoJYnNyLmwJCXN0YW4JCQkjIG9wZXJhbmQgaXMgYSBOT1JNCglicmEuYgkJX0w5XzZkCl9MOV8yZDoKCWNtcGkuYgkJJWQxLCZaRVJPCQkjIGlzIG9wZXJhbmQgYSBaRVJPPwoJYm5lLmIJCV9MOV8zZAkJCSMgbm8KCWJzci5sCQlzcmNfemVybwkJCSMgeWVzCglicmEuYgkJX0w5XzZkCl9MOV8zZDoKCWNtcGkuYgkJJWQxLCZJTkYJCSMgaXMgb3BlcmFuZCBhbiBJTkY/CglibmUuYgkJX0w5XzRkCQkJIyBubwoJYnNyLmwJCXRfb3BlcnIJCQkjIHllcwoJYnJhLmIJCV9MOV82ZApfTDlfNGQ6CgljbXBpLmIJCSVkMSwmUU5BTgkJIyBpcyBvcGVyYW5kIGEgUU5BTj8KCWJuZS5iCQlfTDlfNWQJCQkjIG5vCglic3IubAkJc3JjX3FuYW4JCQkjIHllcwoJYnJhLmIJCV9MOV82ZApfTDlfNWQ6Cglic3IubAkJc3RhbmQJCQkjIG9wZXJhbmQgaXMgYSBERU5PUk0KX0w5XzZkOgoKIwojCVJlc3VsdCBpcyBub3cgaW4gRlAwCiMKCW1vdm0ubAkJRVhDX0RSRUdTKCVhNiksJjB4MDMwMwkjIHJlc3RvcmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCVVTRVJfRlBDUiglYTYpLCVmcGNyLCVmcHNyICMgcmVzdG9yZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCUVYQ19GUDEoJWE2KSwmMHg0MAkjIHJlc3RvcmUgZnAxCgl1bmxrCQklYTYKCXJ0cwoKCWdsb2JhbAkJX2Z0YW54XwpfZnRhbnhfOgoJbGluawkJJWE2LCYtTE9DQUxfU0laRQoKCW1vdm0ubAkJJjB4MDMwMyxFWENfRFJFR1MoJWE2KQkjIHNhdmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCSVmcGNyLCVmcHNyLFVTRVJfRlBDUiglYTYpICMgc2F2ZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCSYweGMwLEVYQ19GUDAoJWE2KQkjIHNhdmUgZnAwL2ZwMQoKCWZtb3YubAkJJjB4MCwlZnBjcgkJIyB6ZXJvIEZQQ1IKCiMKIwljb3B5LCBjb252ZXJ0LCBhbmQgdGFnIGlucHV0IGFyZ3VtZW50CiMKCWxlYQkJRlBfU1JDKCVhNiksJWEwCgltb3YubAkJMHg4KzB4MCglYTYpLDB4MCglYTApCSMgbG9hZCBleHQgaW5wdXQKCW1vdi5sCQkweDgrMHg0KCVhNiksMHg0KCVhMCkKCW1vdi5sCQkweDgrMHg4KCVhNiksMHg4KCVhMCkKCWJzci5sCQl0YWcJCQkjIGZldGNoIG9wZXJhbmQgdHlwZQoJbW92LmIJCSVkMCxTVEFHKCVhNikKCW1vdi5iCQklZDAsJWQxCgoJYW5kaS5sCQkmMHgwMGZmMDBmZixVU0VSX0ZQU1IoJWE2KQoKCWNsci5sCQklZDAKCW1vdi5iCQlGUENSX01PREUoJWE2KSwlZDAJIyBwYXNzIHJuZCBtb2RlLHByZWMKCgl0c3QuYgkJJWQxCglibmUuYgkJX0w5XzJ4Cglic3IubAkJc3RhbgkJCSMgb3BlcmFuZCBpcyBhIE5PUk0KCWJyYS5iCQlfTDlfNngKX0w5XzJ4OgoJY21waS5iCQklZDEsJlpFUk8JCSMgaXMgb3BlcmFuZCBhIFpFUk8/CglibmUuYgkJX0w5XzN4CQkJIyBubwoJYnNyLmwJCXNyY196ZXJvCQkJIyB5ZXMKCWJyYS5iCQlfTDlfNngKX0w5XzN4OgoJY21waS5iCQklZDEsJklORgkJIyBpcyBvcGVyYW5kIGFuIElORj8KCWJuZS5iCQlfTDlfNHgJCQkjIG5vCglic3IubAkJdF9vcGVycgkJCSMgeWVzCglicmEuYgkJX0w5XzZ4Cl9MOV80eDoKCWNtcGkuYgkJJWQxLCZRTkFOCQkjIGlzIG9wZXJhbmQgYSBRTkFOPwoJYm5lLmIJCV9MOV81eAkJCSMgbm8KCWJzci5sCQlzcmNfcW5hbgkJCSMgeWVzCglicmEuYgkJX0w5XzZ4Cl9MOV81eDoKCWJzci5sCQlzdGFuZAkJCSMgb3BlcmFuZCBpcyBhIERFTk9STQpfTDlfNng6CgojCiMJUmVzdWx0IGlzIG5vdyBpbiBGUDAKIwoJbW92bS5sCQlFWENfRFJFR1MoJWE2KSwmMHgwMzAzCSMgcmVzdG9yZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJVVNFUl9GUENSKCVhNiksJWZwY3IsJWZwc3IgIyByZXN0b3JlIGN0cmwgcmVncwoJZm1vdm0ueAkJRVhDX0ZQMSglYTYpLCYweDQwCSMgcmVzdG9yZSBmcDEKCXVubGsJCSVhNgoJcnRzCgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE1PTkFESUMgVEVNUExBVEUJCQkJCQkJIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCglnbG9iYWwJCV9mZXRveHNfCl9mZXRveHNfOgoJbGluawkJJWE2LCYtTE9DQUxfU0laRQoKCW1vdm0ubAkJJjB4MDMwMyxFWENfRFJFR1MoJWE2KQkjIHNhdmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCSVmcGNyLCVmcHNyLFVTRVJfRlBDUiglYTYpICMgc2F2ZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCSYweGMwLEVYQ19GUDAoJWE2KQkjIHNhdmUgZnAwL2ZwMQoKCWZtb3YubAkJJjB4MCwlZnBjcgkJIyB6ZXJvIEZQQ1IKCiMKIwljb3B5LCBjb252ZXJ0LCBhbmQgdGFnIGlucHV0IGFyZ3VtZW50CiMKCWZtb3YucwkJMHg4KCVhNiksJWZwMAkJIyBsb2FkIHNnbCBpbnB1dAoJZm1vdi54CQklZnAwLEZQX1NSQyglYTYpCglsZWEJCUZQX1NSQyglYTYpLCVhMAoJYnNyLmwJCXRhZwkJCSMgZmV0Y2ggb3BlcmFuZCB0eXBlCgltb3YuYgkJJWQwLFNUQUcoJWE2KQoJbW92LmIJCSVkMCwlZDEKCglhbmRpLmwJCSYweDAwZmYwMGZmLFVTRVJfRlBTUiglYTYpCgoJY2xyLmwJCSVkMAoJbW92LmIJCUZQQ1JfTU9ERSglYTYpLCVkMAkjIHBhc3Mgcm5kIG1vZGUscHJlYwoKCXRzdC5iCQklZDEKCWJuZS5iCQlfTDEwXzJzCglic3IubAkJc2V0b3gJCQkjIG9wZXJhbmQgaXMgYSBOT1JNCglicmEuYgkJX0wxMF82cwpfTDEwXzJzOgoJY21waS5iCQklZDEsJlpFUk8JCSMgaXMgb3BlcmFuZCBhIFpFUk8/CglibmUuYgkJX0wxMF8zcwkJCSMgbm8KCWJzci5sCQlsZF9wb25lCQkJIyB5ZXMKCWJyYS5iCQlfTDEwXzZzCl9MMTBfM3M6CgljbXBpLmIJCSVkMSwmSU5GCQkjIGlzIG9wZXJhbmQgYW4gSU5GPwoJYm5lLmIJCV9MMTBfNHMJCQkjIG5vCglic3IubAkJc3pyX2luZgkJCSMgeWVzCglicmEuYgkJX0wxMF82cwpfTDEwXzRzOgoJY21waS5iCQklZDEsJlFOQU4JCSMgaXMgb3BlcmFuZCBhIFFOQU4/CglibmUuYgkJX0wxMF81cwkJCSMgbm8KCWJzci5sCQlzcmNfcW5hbgkJCSMgeWVzCglicmEuYgkJX0wxMF82cwpfTDEwXzVzOgoJYnNyLmwJCXNldG94ZAkJCSMgb3BlcmFuZCBpcyBhIERFTk9STQpfTDEwXzZzOgoKIwojCVJlc3VsdCBpcyBub3cgaW4gRlAwCiMKCW1vdm0ubAkJRVhDX0RSRUdTKCVhNiksJjB4MDMwMwkjIHJlc3RvcmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCVVTRVJfRlBDUiglYTYpLCVmcGNyLCVmcHNyICMgcmVzdG9yZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCUVYQ19GUDEoJWE2KSwmMHg0MAkjIHJlc3RvcmUgZnAxCgl1bmxrCQklYTYKCXJ0cwoKCWdsb2JhbAkJX2ZldG94ZF8KX2ZldG94ZF86CglsaW5rCQklYTYsJi1MT0NBTF9TSVpFCgoJbW92bS5sCQkmMHgwMzAzLEVYQ19EUkVHUyglYTYpCSMgc2F2ZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJJWZwY3IsJWZwc3IsVVNFUl9GUENSKCVhNikgIyBzYXZlIGN0cmwgcmVncwoJZm1vdm0ueAkJJjB4YzAsRVhDX0ZQMCglYTYpCSMgc2F2ZSBmcDAvZnAxCgoJZm1vdi5sCQkmMHgwLCVmcGNyCQkjIHplcm8gRlBDUgoKIwojCWNvcHksIGNvbnZlcnQsIGFuZCB0YWcgaW5wdXQgYXJndW1lbnQKIwoJZm1vdi5kCQkweDgoJWE2KSwlZnAwCQkjIGxvYWQgZGJsIGlucHV0CglmbW92LngJCSVmcDAsRlBfU1JDKCVhNikKCWxlYQkJRlBfU1JDKCVhNiksJWEwCglic3IubAkJdGFnCQkJIyBmZXRjaCBvcGVyYW5kIHR5cGUKCW1vdi5iCQklZDAsU1RBRyglYTYpCgltb3YuYgkJJWQwLCVkMQoKCWFuZGkubAkJJjB4MDBmZjAwZmYsVVNFUl9GUFNSKCVhNikKCgljbHIubAkJJWQwCgltb3YuYgkJRlBDUl9NT0RFKCVhNiksJWQwCSMgcGFzcyBybmQgbW9kZSxwcmVjCgoJbW92LmIJCSVkMSxTVEFHKCVhNikKCXRzdC5iCQklZDEKCWJuZS5iCQlfTDEwXzJkCglic3IubAkJc2V0b3gJCQkjIG9wZXJhbmQgaXMgYSBOT1JNCglicmEuYgkJX0wxMF82ZApfTDEwXzJkOgoJY21waS5iCQklZDEsJlpFUk8JCSMgaXMgb3BlcmFuZCBhIFpFUk8/CglibmUuYgkJX0wxMF8zZAkJCSMgbm8KCWJzci5sCQlsZF9wb25lCQkJIyB5ZXMKCWJyYS5iCQlfTDEwXzZkCl9MMTBfM2Q6CgljbXBpLmIJCSVkMSwmSU5GCQkjIGlzIG9wZXJhbmQgYW4gSU5GPwoJYm5lLmIJCV9MMTBfNGQJCQkjIG5vCglic3IubAkJc3pyX2luZgkJCSMgeWVzCglicmEuYgkJX0wxMF82ZApfTDEwXzRkOgoJY21waS5iCQklZDEsJlFOQU4JCSMgaXMgb3BlcmFuZCBhIFFOQU4/CglibmUuYgkJX0wxMF81ZAkJCSMgbm8KCWJzci5sCQlzcmNfcW5hbgkJCSMgeWVzCglicmEuYgkJX0wxMF82ZApfTDEwXzVkOgoJYnNyLmwJCXNldG94ZAkJCSMgb3BlcmFuZCBpcyBhIERFTk9STQpfTDEwXzZkOgoKIwojCVJlc3VsdCBpcyBub3cgaW4gRlAwCiMKCW1vdm0ubAkJRVhDX0RSRUdTKCVhNiksJjB4MDMwMwkjIHJlc3RvcmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCVVTRVJfRlBDUiglYTYpLCVmcGNyLCVmcHNyICMgcmVzdG9yZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCUVYQ19GUDEoJWE2KSwmMHg0MAkjIHJlc3RvcmUgZnAxCgl1bmxrCQklYTYKCXJ0cwoKCWdsb2JhbAkJX2ZldG94eF8KX2ZldG94eF86CglsaW5rCQklYTYsJi1MT0NBTF9TSVpFCgoJbW92bS5sCQkmMHgwMzAzLEVYQ19EUkVHUyglYTYpCSMgc2F2ZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJJWZwY3IsJWZwc3IsVVNFUl9GUENSKCVhNikgIyBzYXZlIGN0cmwgcmVncwoJZm1vdm0ueAkJJjB4YzAsRVhDX0ZQMCglYTYpCSMgc2F2ZSBmcDAvZnAxCgoJZm1vdi5sCQkmMHgwLCVmcGNyCQkjIHplcm8gRlBDUgoKIwojCWNvcHksIGNvbnZlcnQsIGFuZCB0YWcgaW5wdXQgYXJndW1lbnQKIwoJbGVhCQlGUF9TUkMoJWE2KSwlYTAKCW1vdi5sCQkweDgrMHgwKCVhNiksMHgwKCVhMCkJIyBsb2FkIGV4dCBpbnB1dAoJbW92LmwJCTB4OCsweDQoJWE2KSwweDQoJWEwKQoJbW92LmwJCTB4OCsweDgoJWE2KSwweDgoJWEwKQoJYnNyLmwJCXRhZwkJCSMgZmV0Y2ggb3BlcmFuZCB0eXBlCgltb3YuYgkJJWQwLFNUQUcoJWE2KQoJbW92LmIJCSVkMCwlZDEKCglhbmRpLmwJCSYweDAwZmYwMGZmLFVTRVJfRlBTUiglYTYpCgoJY2xyLmwJCSVkMAoJbW92LmIJCUZQQ1JfTU9ERSglYTYpLCVkMAkjIHBhc3Mgcm5kIG1vZGUscHJlYwoKCXRzdC5iCQklZDEKCWJuZS5iCQlfTDEwXzJ4Cglic3IubAkJc2V0b3gJCQkjIG9wZXJhbmQgaXMgYSBOT1JNCglicmEuYgkJX0wxMF82eApfTDEwXzJ4OgoJY21waS5iCQklZDEsJlpFUk8JCSMgaXMgb3BlcmFuZCBhIFpFUk8/CglibmUuYgkJX0wxMF8zeAkJCSMgbm8KCWJzci5sCQlsZF9wb25lCQkJIyB5ZXMKCWJyYS5iCQlfTDEwXzZ4Cl9MMTBfM3g6CgljbXBpLmIJCSVkMSwmSU5GCQkjIGlzIG9wZXJhbmQgYW4gSU5GPwoJYm5lLmIJCV9MMTBfNHgJCQkjIG5vCglic3IubAkJc3pyX2luZgkJCSMgeWVzCglicmEuYgkJX0wxMF82eApfTDEwXzR4OgoJY21waS5iCQklZDEsJlFOQU4JCSMgaXMgb3BlcmFuZCBhIFFOQU4/CglibmUuYgkJX0wxMF81eAkJCSMgbm8KCWJzci5sCQlzcmNfcW5hbgkJCSMgeWVzCglicmEuYgkJX0wxMF82eApfTDEwXzV4OgoJYnNyLmwJCXNldG94ZAkJCSMgb3BlcmFuZCBpcyBhIERFTk9STQpfTDEwXzZ4OgoKIwojCVJlc3VsdCBpcyBub3cgaW4gRlAwCiMKCW1vdm0ubAkJRVhDX0RSRUdTKCVhNiksJjB4MDMwMwkjIHJlc3RvcmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCVVTRVJfRlBDUiglYTYpLCVmcGNyLCVmcHNyICMgcmVzdG9yZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCUVYQ19GUDEoJWE2KSwmMHg0MAkjIHJlc3RvcmUgZnAxCgl1bmxrCQklYTYKCXJ0cwoKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBNT05BRElDIFRFTVBMQVRFCQkJCQkJCSMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoJZ2xvYmFsCQlfZnR3b3RveHNfCl9mdHdvdG94c186CglsaW5rCQklYTYsJi1MT0NBTF9TSVpFCgoJbW92bS5sCQkmMHgwMzAzLEVYQ19EUkVHUyglYTYpCSMgc2F2ZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJJWZwY3IsJWZwc3IsVVNFUl9GUENSKCVhNikgIyBzYXZlIGN0cmwgcmVncwoJZm1vdm0ueAkJJjB4YzAsRVhDX0ZQMCglYTYpCSMgc2F2ZSBmcDAvZnAxCgoJZm1vdi5sCQkmMHgwLCVmcGNyCQkjIHplcm8gRlBDUgoKIwojCWNvcHksIGNvbnZlcnQsIGFuZCB0YWcgaW5wdXQgYXJndW1lbnQKIwoJZm1vdi5zCQkweDgoJWE2KSwlZnAwCQkjIGxvYWQgc2dsIGlucHV0CglmbW92LngJCSVmcDAsRlBfU1JDKCVhNikKCWxlYQkJRlBfU1JDKCVhNiksJWEwCglic3IubAkJdGFnCQkJIyBmZXRjaCBvcGVyYW5kIHR5cGUKCW1vdi5iCQklZDAsU1RBRyglYTYpCgltb3YuYgkJJWQwLCVkMQoKCWFuZGkubAkJJjB4MDBmZjAwZmYsVVNFUl9GUFNSKCVhNikKCgljbHIubAkJJWQwCgltb3YuYgkJRlBDUl9NT0RFKCVhNiksJWQwCSMgcGFzcyBybmQgbW9kZSxwcmVjCgoJdHN0LmIJCSVkMQoJYm5lLmIJCV9MMTFfMnMKCWJzci5sCQlzdHdvdG94CQkJIyBvcGVyYW5kIGlzIGEgTk9STQoJYnJhLmIJCV9MMTFfNnMKX0wxMV8yczoKCWNtcGkuYgkJJWQxLCZaRVJPCQkjIGlzIG9wZXJhbmQgYSBaRVJPPwoJYm5lLmIJCV9MMTFfM3MJCQkjIG5vCglic3IubAkJbGRfcG9uZQkJCSMgeWVzCglicmEuYgkJX0wxMV82cwpfTDExXzNzOgoJY21waS5iCQklZDEsJklORgkJIyBpcyBvcGVyYW5kIGFuIElORj8KCWJuZS5iCQlfTDExXzRzCQkJIyBubwoJYnNyLmwJCXN6cl9pbmYJCQkjIHllcwoJYnJhLmIJCV9MMTFfNnMKX0wxMV80czoKCWNtcGkuYgkJJWQxLCZRTkFOCQkjIGlzIG9wZXJhbmQgYSBRTkFOPwoJYm5lLmIJCV9MMTFfNXMJCQkjIG5vCglic3IubAkJc3JjX3FuYW4JCQkjIHllcwoJYnJhLmIJCV9MMTFfNnMKX0wxMV81czoKCWJzci5sCQlzdHdvdG94ZAkJCSMgb3BlcmFuZCBpcyBhIERFTk9STQpfTDExXzZzOgoKIwojCVJlc3VsdCBpcyBub3cgaW4gRlAwCiMKCW1vdm0ubAkJRVhDX0RSRUdTKCVhNiksJjB4MDMwMwkjIHJlc3RvcmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCVVTRVJfRlBDUiglYTYpLCVmcGNyLCVmcHNyICMgcmVzdG9yZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCUVYQ19GUDEoJWE2KSwmMHg0MAkjIHJlc3RvcmUgZnAxCgl1bmxrCQklYTYKCXJ0cwoKCWdsb2JhbAkJX2Z0d290b3hkXwpfZnR3b3RveGRfOgoJbGluawkJJWE2LCYtTE9DQUxfU0laRQoKCW1vdm0ubAkJJjB4MDMwMyxFWENfRFJFR1MoJWE2KQkjIHNhdmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCSVmcGNyLCVmcHNyLFVTRVJfRlBDUiglYTYpICMgc2F2ZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCSYweGMwLEVYQ19GUDAoJWE2KQkjIHNhdmUgZnAwL2ZwMQoKCWZtb3YubAkJJjB4MCwlZnBjcgkJIyB6ZXJvIEZQQ1IKCiMKIwljb3B5LCBjb252ZXJ0LCBhbmQgdGFnIGlucHV0IGFyZ3VtZW50CiMKCWZtb3YuZAkJMHg4KCVhNiksJWZwMAkJIyBsb2FkIGRibCBpbnB1dAoJZm1vdi54CQklZnAwLEZQX1NSQyglYTYpCglsZWEJCUZQX1NSQyglYTYpLCVhMAoJYnNyLmwJCXRhZwkJCSMgZmV0Y2ggb3BlcmFuZCB0eXBlCgltb3YuYgkJJWQwLFNUQUcoJWE2KQoJbW92LmIJCSVkMCwlZDEKCglhbmRpLmwJCSYweDAwZmYwMGZmLFVTRVJfRlBTUiglYTYpCgoJY2xyLmwJCSVkMAoJbW92LmIJCUZQQ1JfTU9ERSglYTYpLCVkMAkjIHBhc3Mgcm5kIG1vZGUscHJlYwoKCW1vdi5iCQklZDEsU1RBRyglYTYpCgl0c3QuYgkJJWQxCglibmUuYgkJX0wxMV8yZAoJYnNyLmwJCXN0d290b3gJCQkjIG9wZXJhbmQgaXMgYSBOT1JNCglicmEuYgkJX0wxMV82ZApfTDExXzJkOgoJY21waS5iCQklZDEsJlpFUk8JCSMgaXMgb3BlcmFuZCBhIFpFUk8/CglibmUuYgkJX0wxMV8zZAkJCSMgbm8KCWJzci5sCQlsZF9wb25lCQkJIyB5ZXMKCWJyYS5iCQlfTDExXzZkCl9MMTFfM2Q6CgljbXBpLmIJCSVkMSwmSU5GCQkjIGlzIG9wZXJhbmQgYW4gSU5GPwoJYm5lLmIJCV9MMTFfNGQJCQkjIG5vCglic3IubAkJc3pyX2luZgkJCSMgeWVzCglicmEuYgkJX0wxMV82ZApfTDExXzRkOgoJY21waS5iCQklZDEsJlFOQU4JCSMgaXMgb3BlcmFuZCBhIFFOQU4/CglibmUuYgkJX0wxMV81ZAkJCSMgbm8KCWJzci5sCQlzcmNfcW5hbgkJCSMgeWVzCglicmEuYgkJX0wxMV82ZApfTDExXzVkOgoJYnNyLmwJCXN0d290b3hkCQkJIyBvcGVyYW5kIGlzIGEgREVOT1JNCl9MMTFfNmQ6CgojCiMJUmVzdWx0IGlzIG5vdyBpbiBGUDAKIwoJbW92bS5sCQlFWENfRFJFR1MoJWE2KSwmMHgwMzAzCSMgcmVzdG9yZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJVVNFUl9GUENSKCVhNiksJWZwY3IsJWZwc3IgIyByZXN0b3JlIGN0cmwgcmVncwoJZm1vdm0ueAkJRVhDX0ZQMSglYTYpLCYweDQwCSMgcmVzdG9yZSBmcDEKCXVubGsJCSVhNgoJcnRzCgoJZ2xvYmFsCQlfZnR3b3RveHhfCl9mdHdvdG94eF86CglsaW5rCQklYTYsJi1MT0NBTF9TSVpFCgoJbW92bS5sCQkmMHgwMzAzLEVYQ19EUkVHUyglYTYpCSMgc2F2ZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJJWZwY3IsJWZwc3IsVVNFUl9GUENSKCVhNikgIyBzYXZlIGN0cmwgcmVncwoJZm1vdm0ueAkJJjB4YzAsRVhDX0ZQMCglYTYpCSMgc2F2ZSBmcDAvZnAxCgoJZm1vdi5sCQkmMHgwLCVmcGNyCQkjIHplcm8gRlBDUgoKIwojCWNvcHksIGNvbnZlcnQsIGFuZCB0YWcgaW5wdXQgYXJndW1lbnQKIwoJbGVhCQlGUF9TUkMoJWE2KSwlYTAKCW1vdi5sCQkweDgrMHgwKCVhNiksMHgwKCVhMCkJIyBsb2FkIGV4dCBpbnB1dAoJbW92LmwJCTB4OCsweDQoJWE2KSwweDQoJWEwKQoJbW92LmwJCTB4OCsweDgoJWE2KSwweDgoJWEwKQoJYnNyLmwJCXRhZwkJCSMgZmV0Y2ggb3BlcmFuZCB0eXBlCgltb3YuYgkJJWQwLFNUQUcoJWE2KQoJbW92LmIJCSVkMCwlZDEKCglhbmRpLmwJCSYweDAwZmYwMGZmLFVTRVJfRlBTUiglYTYpCgoJY2xyLmwJCSVkMAoJbW92LmIJCUZQQ1JfTU9ERSglYTYpLCVkMAkjIHBhc3Mgcm5kIG1vZGUscHJlYwoKCXRzdC5iCQklZDEKCWJuZS5iCQlfTDExXzJ4Cglic3IubAkJc3R3b3RveAkJCSMgb3BlcmFuZCBpcyBhIE5PUk0KCWJyYS5iCQlfTDExXzZ4Cl9MMTFfMng6CgljbXBpLmIJCSVkMSwmWkVSTwkJIyBpcyBvcGVyYW5kIGEgWkVSTz8KCWJuZS5iCQlfTDExXzN4CQkJIyBubwoJYnNyLmwJCWxkX3BvbmUJCQkjIHllcwoJYnJhLmIJCV9MMTFfNngKX0wxMV8zeDoKCWNtcGkuYgkJJWQxLCZJTkYJCSMgaXMgb3BlcmFuZCBhbiBJTkY/CglibmUuYgkJX0wxMV80eAkJCSMgbm8KCWJzci5sCQlzenJfaW5mCQkJIyB5ZXMKCWJyYS5iCQlfTDExXzZ4Cl9MMTFfNHg6CgljbXBpLmIJCSVkMSwmUU5BTgkJIyBpcyBvcGVyYW5kIGEgUU5BTj8KCWJuZS5iCQlfTDExXzV4CQkJIyBubwoJYnNyLmwJCXNyY19xbmFuCQkJIyB5ZXMKCWJyYS5iCQlfTDExXzZ4Cl9MMTFfNXg6Cglic3IubAkJc3R3b3RveGQJCQkjIG9wZXJhbmQgaXMgYSBERU5PUk0KX0wxMV82eDoKCiMKIwlSZXN1bHQgaXMgbm93IGluIEZQMAojCgltb3ZtLmwJCUVYQ19EUkVHUyglYTYpLCYweDAzMDMJIyByZXN0b3JlIGQwLWQxL2EwLWExCglmbW92bS5sCQlVU0VSX0ZQQ1IoJWE2KSwlZnBjciwlZnBzciAjIHJlc3RvcmUgY3RybCByZWdzCglmbW92bS54CQlFWENfRlAxKCVhNiksJjB4NDAJIyByZXN0b3JlIGZwMQoJdW5sawkJJWE2CglydHMKCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgTU9OQURJQyBURU1QTEFURQkJCQkJCQkjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCWdsb2JhbAkJX2Z0ZW50b3hzXwpfZnRlbnRveHNfOgoJbGluawkJJWE2LCYtTE9DQUxfU0laRQoKCW1vdm0ubAkJJjB4MDMwMyxFWENfRFJFR1MoJWE2KQkjIHNhdmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCSVmcGNyLCVmcHNyLFVTRVJfRlBDUiglYTYpICMgc2F2ZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCSYweGMwLEVYQ19GUDAoJWE2KQkjIHNhdmUgZnAwL2ZwMQoKCWZtb3YubAkJJjB4MCwlZnBjcgkJIyB6ZXJvIEZQQ1IKCiMKIwljb3B5LCBjb252ZXJ0LCBhbmQgdGFnIGlucHV0IGFyZ3VtZW50CiMKCWZtb3YucwkJMHg4KCVhNiksJWZwMAkJIyBsb2FkIHNnbCBpbnB1dAoJZm1vdi54CQklZnAwLEZQX1NSQyglYTYpCglsZWEJCUZQX1NSQyglYTYpLCVhMAoJYnNyLmwJCXRhZwkJCSMgZmV0Y2ggb3BlcmFuZCB0eXBlCgltb3YuYgkJJWQwLFNUQUcoJWE2KQoJbW92LmIJCSVkMCwlZDEKCglhbmRpLmwJCSYweDAwZmYwMGZmLFVTRVJfRlBTUiglYTYpCgoJY2xyLmwJCSVkMAoJbW92LmIJCUZQQ1JfTU9ERSglYTYpLCVkMAkjIHBhc3Mgcm5kIG1vZGUscHJlYwoKCXRzdC5iCQklZDEKCWJuZS5iCQlfTDEyXzJzCglic3IubAkJc3RlbnRveAkJCSMgb3BlcmFuZCBpcyBhIE5PUk0KCWJyYS5iCQlfTDEyXzZzCl9MMTJfMnM6CgljbXBpLmIJCSVkMSwmWkVSTwkJIyBpcyBvcGVyYW5kIGEgWkVSTz8KCWJuZS5iCQlfTDEyXzNzCQkJIyBubwoJYnNyLmwJCWxkX3BvbmUJCQkjIHllcwoJYnJhLmIJCV9MMTJfNnMKX0wxMl8zczoKCWNtcGkuYgkJJWQxLCZJTkYJCSMgaXMgb3BlcmFuZCBhbiBJTkY/CglibmUuYgkJX0wxMl80cwkJCSMgbm8KCWJzci5sCQlzenJfaW5mCQkJIyB5ZXMKCWJyYS5iCQlfTDEyXzZzCl9MMTJfNHM6CgljbXBpLmIJCSVkMSwmUU5BTgkJIyBpcyBvcGVyYW5kIGEgUU5BTj8KCWJuZS5iCQlfTDEyXzVzCQkJIyBubwoJYnNyLmwJCXNyY19xbmFuCQkJIyB5ZXMKCWJyYS5iCQlfTDEyXzZzCl9MMTJfNXM6Cglic3IubAkJc3RlbnRveGQJCQkjIG9wZXJhbmQgaXMgYSBERU5PUk0KX0wxMl82czoKCiMKIwlSZXN1bHQgaXMgbm93IGluIEZQMAojCgltb3ZtLmwJCUVYQ19EUkVHUyglYTYpLCYweDAzMDMJIyByZXN0b3JlIGQwLWQxL2EwLWExCglmbW92bS5sCQlVU0VSX0ZQQ1IoJWE2KSwlZnBjciwlZnBzciAjIHJlc3RvcmUgY3RybCByZWdzCglmbW92bS54CQlFWENfRlAxKCVhNiksJjB4NDAJIyByZXN0b3JlIGZwMQoJdW5sawkJJWE2CglydHMKCglnbG9iYWwJCV9mdGVudG94ZF8KX2Z0ZW50b3hkXzoKCWxpbmsJCSVhNiwmLUxPQ0FMX1NJWkUKCgltb3ZtLmwJCSYweDAzMDMsRVhDX0RSRUdTKCVhNikJIyBzYXZlIGQwLWQxL2EwLWExCglmbW92bS5sCQklZnBjciwlZnBzcixVU0VSX0ZQQ1IoJWE2KSAjIHNhdmUgY3RybCByZWdzCglmbW92bS54CQkmMHhjMCxFWENfRlAwKCVhNikJIyBzYXZlIGZwMC9mcDEKCglmbW92LmwJCSYweDAsJWZwY3IJCSMgemVybyBGUENSCgojCiMJY29weSwgY29udmVydCwgYW5kIHRhZyBpbnB1dCBhcmd1bWVudAojCglmbW92LmQJCTB4OCglYTYpLCVmcDAJCSMgbG9hZCBkYmwgaW5wdXQKCWZtb3YueAkJJWZwMCxGUF9TUkMoJWE2KQoJbGVhCQlGUF9TUkMoJWE2KSwlYTAKCWJzci5sCQl0YWcJCQkjIGZldGNoIG9wZXJhbmQgdHlwZQoJbW92LmIJCSVkMCxTVEFHKCVhNikKCW1vdi5iCQklZDAsJWQxCgoJYW5kaS5sCQkmMHgwMGZmMDBmZixVU0VSX0ZQU1IoJWE2KQoKCWNsci5sCQklZDAKCW1vdi5iCQlGUENSX01PREUoJWE2KSwlZDAJIyBwYXNzIHJuZCBtb2RlLHByZWMKCgltb3YuYgkJJWQxLFNUQUcoJWE2KQoJdHN0LmIJCSVkMQoJYm5lLmIJCV9MMTJfMmQKCWJzci5sCQlzdGVudG94CQkJIyBvcGVyYW5kIGlzIGEgTk9STQoJYnJhLmIJCV9MMTJfNmQKX0wxMl8yZDoKCWNtcGkuYgkJJWQxLCZaRVJPCQkjIGlzIG9wZXJhbmQgYSBaRVJPPwoJYm5lLmIJCV9MMTJfM2QJCQkjIG5vCglic3IubAkJbGRfcG9uZQkJCSMgeWVzCglicmEuYgkJX0wxMl82ZApfTDEyXzNkOgoJY21waS5iCQklZDEsJklORgkJIyBpcyBvcGVyYW5kIGFuIElORj8KCWJuZS5iCQlfTDEyXzRkCQkJIyBubwoJYnNyLmwJCXN6cl9pbmYJCQkjIHllcwoJYnJhLmIJCV9MMTJfNmQKX0wxMl80ZDoKCWNtcGkuYgkJJWQxLCZRTkFOCQkjIGlzIG9wZXJhbmQgYSBRTkFOPwoJYm5lLmIJCV9MMTJfNWQJCQkjIG5vCglic3IubAkJc3JjX3FuYW4JCQkjIHllcwoJYnJhLmIJCV9MMTJfNmQKX0wxMl81ZDoKCWJzci5sCQlzdGVudG94ZAkJCSMgb3BlcmFuZCBpcyBhIERFTk9STQpfTDEyXzZkOgoKIwojCVJlc3VsdCBpcyBub3cgaW4gRlAwCiMKCW1vdm0ubAkJRVhDX0RSRUdTKCVhNiksJjB4MDMwMwkjIHJlc3RvcmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCVVTRVJfRlBDUiglYTYpLCVmcGNyLCVmcHNyICMgcmVzdG9yZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCUVYQ19GUDEoJWE2KSwmMHg0MAkjIHJlc3RvcmUgZnAxCgl1bmxrCQklYTYKCXJ0cwoKCWdsb2JhbAkJX2Z0ZW50b3h4XwpfZnRlbnRveHhfOgoJbGluawkJJWE2LCYtTE9DQUxfU0laRQoKCW1vdm0ubAkJJjB4MDMwMyxFWENfRFJFR1MoJWE2KQkjIHNhdmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCSVmcGNyLCVmcHNyLFVTRVJfRlBDUiglYTYpICMgc2F2ZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCSYweGMwLEVYQ19GUDAoJWE2KQkjIHNhdmUgZnAwL2ZwMQoKCWZtb3YubAkJJjB4MCwlZnBjcgkJIyB6ZXJvIEZQQ1IKCiMKIwljb3B5LCBjb252ZXJ0LCBhbmQgdGFnIGlucHV0IGFyZ3VtZW50CiMKCWxlYQkJRlBfU1JDKCVhNiksJWEwCgltb3YubAkJMHg4KzB4MCglYTYpLDB4MCglYTApCSMgbG9hZCBleHQgaW5wdXQKCW1vdi5sCQkweDgrMHg0KCVhNiksMHg0KCVhMCkKCW1vdi5sCQkweDgrMHg4KCVhNiksMHg4KCVhMCkKCWJzci5sCQl0YWcJCQkjIGZldGNoIG9wZXJhbmQgdHlwZQoJbW92LmIJCSVkMCxTVEFHKCVhNikKCW1vdi5iCQklZDAsJWQxCgoJYW5kaS5sCQkmMHgwMGZmMDBmZixVU0VSX0ZQU1IoJWE2KQoKCWNsci5sCQklZDAKCW1vdi5iCQlGUENSX01PREUoJWE2KSwlZDAJIyBwYXNzIHJuZCBtb2RlLHByZWMKCgl0c3QuYgkJJWQxCglibmUuYgkJX0wxMl8yeAoJYnNyLmwJCXN0ZW50b3gJCQkjIG9wZXJhbmQgaXMgYSBOT1JNCglicmEuYgkJX0wxMl82eApfTDEyXzJ4OgoJY21waS5iCQklZDEsJlpFUk8JCSMgaXMgb3BlcmFuZCBhIFpFUk8/CglibmUuYgkJX0wxMl8zeAkJCSMgbm8KCWJzci5sCQlsZF9wb25lCQkJIyB5ZXMKCWJyYS5iCQlfTDEyXzZ4Cl9MMTJfM3g6CgljbXBpLmIJCSVkMSwmSU5GCQkjIGlzIG9wZXJhbmQgYW4gSU5GPwoJYm5lLmIJCV9MMTJfNHgJCQkjIG5vCglic3IubAkJc3pyX2luZgkJCSMgeWVzCglicmEuYgkJX0wxMl82eApfTDEyXzR4OgoJY21waS5iCQklZDEsJlFOQU4JCSMgaXMgb3BlcmFuZCBhIFFOQU4/CglibmUuYgkJX0wxMl81eAkJCSMgbm8KCWJzci5sCQlzcmNfcW5hbgkJCSMgeWVzCglicmEuYgkJX0wxMl82eApfTDEyXzV4OgoJYnNyLmwJCXN0ZW50b3hkCQkJIyBvcGVyYW5kIGlzIGEgREVOT1JNCl9MMTJfNng6CgojCiMJUmVzdWx0IGlzIG5vdyBpbiBGUDAKIwoJbW92bS5sCQlFWENfRFJFR1MoJWE2KSwmMHgwMzAzCSMgcmVzdG9yZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJVVNFUl9GUENSKCVhNiksJWZwY3IsJWZwc3IgIyByZXN0b3JlIGN0cmwgcmVncwoJZm1vdm0ueAkJRVhDX0ZQMSglYTYpLCYweDQwCSMgcmVzdG9yZSBmcDEKCXVubGsJCSVhNgoJcnRzCgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE1PTkFESUMgVEVNUExBVEUJCQkJCQkJIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCglnbG9iYWwJCV9mbG9nbnNfCl9mbG9nbnNfOgoJbGluawkJJWE2LCYtTE9DQUxfU0laRQoKCW1vdm0ubAkJJjB4MDMwMyxFWENfRFJFR1MoJWE2KQkjIHNhdmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCSVmcGNyLCVmcHNyLFVTRVJfRlBDUiglYTYpICMgc2F2ZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCSYweGMwLEVYQ19GUDAoJWE2KQkjIHNhdmUgZnAwL2ZwMQoKCWZtb3YubAkJJjB4MCwlZnBjcgkJIyB6ZXJvIEZQQ1IKCiMKIwljb3B5LCBjb252ZXJ0LCBhbmQgdGFnIGlucHV0IGFyZ3VtZW50CiMKCWZtb3YucwkJMHg4KCVhNiksJWZwMAkJIyBsb2FkIHNnbCBpbnB1dAoJZm1vdi54CQklZnAwLEZQX1NSQyglYTYpCglsZWEJCUZQX1NSQyglYTYpLCVhMAoJYnNyLmwJCXRhZwkJCSMgZmV0Y2ggb3BlcmFuZCB0eXBlCgltb3YuYgkJJWQwLFNUQUcoJWE2KQoJbW92LmIJCSVkMCwlZDEKCglhbmRpLmwJCSYweDAwZmYwMGZmLFVTRVJfRlBTUiglYTYpCgoJY2xyLmwJCSVkMAoJbW92LmIJCUZQQ1JfTU9ERSglYTYpLCVkMAkjIHBhc3Mgcm5kIG1vZGUscHJlYwoKCXRzdC5iCQklZDEKCWJuZS5iCQlfTDEzXzJzCglic3IubAkJc2xvZ24JCQkjIG9wZXJhbmQgaXMgYSBOT1JNCglicmEuYgkJX0wxM182cwpfTDEzXzJzOgoJY21waS5iCQklZDEsJlpFUk8JCSMgaXMgb3BlcmFuZCBhIFpFUk8/CglibmUuYgkJX0wxM18zcwkJCSMgbm8KCWJzci5sCQl0X2R6MgkJCSMgeWVzCglicmEuYgkJX0wxM182cwpfTDEzXzNzOgoJY21waS5iCQklZDEsJklORgkJIyBpcyBvcGVyYW5kIGFuIElORj8KCWJuZS5iCQlfTDEzXzRzCQkJIyBubwoJYnNyLmwJCXNvcHJfaW5mCQkJIyB5ZXMKCWJyYS5iCQlfTDEzXzZzCl9MMTNfNHM6CgljbXBpLmIJCSVkMSwmUU5BTgkJIyBpcyBvcGVyYW5kIGEgUU5BTj8KCWJuZS5iCQlfTDEzXzVzCQkJIyBubwoJYnNyLmwJCXNyY19xbmFuCQkJIyB5ZXMKCWJyYS5iCQlfTDEzXzZzCl9MMTNfNXM6Cglic3IubAkJc2xvZ25kCQkJIyBvcGVyYW5kIGlzIGEgREVOT1JNCl9MMTNfNnM6CgojCiMJUmVzdWx0IGlzIG5vdyBpbiBGUDAKIwoJbW92bS5sCQlFWENfRFJFR1MoJWE2KSwmMHgwMzAzCSMgcmVzdG9yZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJVVNFUl9GUENSKCVhNiksJWZwY3IsJWZwc3IgIyByZXN0b3JlIGN0cmwgcmVncwoJZm1vdm0ueAkJRVhDX0ZQMSglYTYpLCYweDQwCSMgcmVzdG9yZSBmcDEKCXVubGsJCSVhNgoJcnRzCgoJZ2xvYmFsCQlfZmxvZ25kXwpfZmxvZ25kXzoKCWxpbmsJCSVhNiwmLUxPQ0FMX1NJWkUKCgltb3ZtLmwJCSYweDAzMDMsRVhDX0RSRUdTKCVhNikJIyBzYXZlIGQwLWQxL2EwLWExCglmbW92bS5sCQklZnBjciwlZnBzcixVU0VSX0ZQQ1IoJWE2KSAjIHNhdmUgY3RybCByZWdzCglmbW92bS54CQkmMHhjMCxFWENfRlAwKCVhNikJIyBzYXZlIGZwMC9mcDEKCglmbW92LmwJCSYweDAsJWZwY3IJCSMgemVybyBGUENSCgojCiMJY29weSwgY29udmVydCwgYW5kIHRhZyBpbnB1dCBhcmd1bWVudAojCglmbW92LmQJCTB4OCglYTYpLCVmcDAJCSMgbG9hZCBkYmwgaW5wdXQKCWZtb3YueAkJJWZwMCxGUF9TUkMoJWE2KQoJbGVhCQlGUF9TUkMoJWE2KSwlYTAKCWJzci5sCQl0YWcJCQkjIGZldGNoIG9wZXJhbmQgdHlwZQoJbW92LmIJCSVkMCxTVEFHKCVhNikKCW1vdi5iCQklZDAsJWQxCgoJYW5kaS5sCQkmMHgwMGZmMDBmZixVU0VSX0ZQU1IoJWE2KQoKCWNsci5sCQklZDAKCW1vdi5iCQlGUENSX01PREUoJWE2KSwlZDAJIyBwYXNzIHJuZCBtb2RlLHByZWMKCgltb3YuYgkJJWQxLFNUQUcoJWE2KQoJdHN0LmIJCSVkMQoJYm5lLmIJCV9MMTNfMmQKCWJzci5sCQlzbG9nbgkJCSMgb3BlcmFuZCBpcyBhIE5PUk0KCWJyYS5iCQlfTDEzXzZkCl9MMTNfMmQ6CgljbXBpLmIJCSVkMSwmWkVSTwkJIyBpcyBvcGVyYW5kIGEgWkVSTz8KCWJuZS5iCQlfTDEzXzNkCQkJIyBubwoJYnNyLmwJCXRfZHoyCQkJIyB5ZXMKCWJyYS5iCQlfTDEzXzZkCl9MMTNfM2Q6CgljbXBpLmIJCSVkMSwmSU5GCQkjIGlzIG9wZXJhbmQgYW4gSU5GPwoJYm5lLmIJCV9MMTNfNGQJCQkjIG5vCglic3IubAkJc29wcl9pbmYJCQkjIHllcwoJYnJhLmIJCV9MMTNfNmQKX0wxM180ZDoKCWNtcGkuYgkJJWQxLCZRTkFOCQkjIGlzIG9wZXJhbmQgYSBRTkFOPwoJYm5lLmIJCV9MMTNfNWQJCQkjIG5vCglic3IubAkJc3JjX3FuYW4JCQkjIHllcwoJYnJhLmIJCV9MMTNfNmQKX0wxM181ZDoKCWJzci5sCQlzbG9nbmQJCQkjIG9wZXJhbmQgaXMgYSBERU5PUk0KX0wxM182ZDoKCiMKIwlSZXN1bHQgaXMgbm93IGluIEZQMAojCgltb3ZtLmwJCUVYQ19EUkVHUyglYTYpLCYweDAzMDMJIyByZXN0b3JlIGQwLWQxL2EwLWExCglmbW92bS5sCQlVU0VSX0ZQQ1IoJWE2KSwlZnBjciwlZnBzciAjIHJlc3RvcmUgY3RybCByZWdzCglmbW92bS54CQlFWENfRlAxKCVhNiksJjB4NDAJIyByZXN0b3JlIGZwMQoJdW5sawkJJWE2CglydHMKCglnbG9iYWwJCV9mbG9nbnhfCl9mbG9nbnhfOgoJbGluawkJJWE2LCYtTE9DQUxfU0laRQoKCW1vdm0ubAkJJjB4MDMwMyxFWENfRFJFR1MoJWE2KQkjIHNhdmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCSVmcGNyLCVmcHNyLFVTRVJfRlBDUiglYTYpICMgc2F2ZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCSYweGMwLEVYQ19GUDAoJWE2KQkjIHNhdmUgZnAwL2ZwMQoKCWZtb3YubAkJJjB4MCwlZnBjcgkJIyB6ZXJvIEZQQ1IKCiMKIwljb3B5LCBjb252ZXJ0LCBhbmQgdGFnIGlucHV0IGFyZ3VtZW50CiMKCWxlYQkJRlBfU1JDKCVhNiksJWEwCgltb3YubAkJMHg4KzB4MCglYTYpLDB4MCglYTApCSMgbG9hZCBleHQgaW5wdXQKCW1vdi5sCQkweDgrMHg0KCVhNiksMHg0KCVhMCkKCW1vdi5sCQkweDgrMHg4KCVhNiksMHg4KCVhMCkKCWJzci5sCQl0YWcJCQkjIGZldGNoIG9wZXJhbmQgdHlwZQoJbW92LmIJCSVkMCxTVEFHKCVhNikKCW1vdi5iCQklZDAsJWQxCgoJYW5kaS5sCQkmMHgwMGZmMDBmZixVU0VSX0ZQU1IoJWE2KQoKCWNsci5sCQklZDAKCW1vdi5iCQlGUENSX01PREUoJWE2KSwlZDAJIyBwYXNzIHJuZCBtb2RlLHByZWMKCgl0c3QuYgkJJWQxCglibmUuYgkJX0wxM18yeAoJYnNyLmwJCXNsb2duCQkJIyBvcGVyYW5kIGlzIGEgTk9STQoJYnJhLmIJCV9MMTNfNngKX0wxM18yeDoKCWNtcGkuYgkJJWQxLCZaRVJPCQkjIGlzIG9wZXJhbmQgYSBaRVJPPwoJYm5lLmIJCV9MMTNfM3gJCQkjIG5vCglic3IubAkJdF9kejIJCQkjIHllcwoJYnJhLmIJCV9MMTNfNngKX0wxM18zeDoKCWNtcGkuYgkJJWQxLCZJTkYJCSMgaXMgb3BlcmFuZCBhbiBJTkY/CglibmUuYgkJX0wxM180eAkJCSMgbm8KCWJzci5sCQlzb3ByX2luZgkJCSMgeWVzCglicmEuYgkJX0wxM182eApfTDEzXzR4OgoJY21waS5iCQklZDEsJlFOQU4JCSMgaXMgb3BlcmFuZCBhIFFOQU4/CglibmUuYgkJX0wxM181eAkJCSMgbm8KCWJzci5sCQlzcmNfcW5hbgkJCSMgeWVzCglicmEuYgkJX0wxM182eApfTDEzXzV4OgoJYnNyLmwJCXNsb2duZAkJCSMgb3BlcmFuZCBpcyBhIERFTk9STQpfTDEzXzZ4OgoKIwojCVJlc3VsdCBpcyBub3cgaW4gRlAwCiMKCW1vdm0ubAkJRVhDX0RSRUdTKCVhNiksJjB4MDMwMwkjIHJlc3RvcmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCVVTRVJfRlBDUiglYTYpLCVmcGNyLCVmcHNyICMgcmVzdG9yZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCUVYQ19GUDEoJWE2KSwmMHg0MAkjIHJlc3RvcmUgZnAxCgl1bmxrCQklYTYKCXJ0cwoKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBNT05BRElDIFRFTVBMQVRFCQkJCQkJCSMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoJZ2xvYmFsCQlfZmxvZzEwc18KX2Zsb2cxMHNfOgoJbGluawkJJWE2LCYtTE9DQUxfU0laRQoKCW1vdm0ubAkJJjB4MDMwMyxFWENfRFJFR1MoJWE2KQkjIHNhdmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCSVmcGNyLCVmcHNyLFVTRVJfRlBDUiglYTYpICMgc2F2ZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCSYweGMwLEVYQ19GUDAoJWE2KQkjIHNhdmUgZnAwL2ZwMQoKCWZtb3YubAkJJjB4MCwlZnBjcgkJIyB6ZXJvIEZQQ1IKCiMKIwljb3B5LCBjb252ZXJ0LCBhbmQgdGFnIGlucHV0IGFyZ3VtZW50CiMKCWZtb3YucwkJMHg4KCVhNiksJWZwMAkJIyBsb2FkIHNnbCBpbnB1dAoJZm1vdi54CQklZnAwLEZQX1NSQyglYTYpCglsZWEJCUZQX1NSQyglYTYpLCVhMAoJYnNyLmwJCXRhZwkJCSMgZmV0Y2ggb3BlcmFuZCB0eXBlCgltb3YuYgkJJWQwLFNUQUcoJWE2KQoJbW92LmIJCSVkMCwlZDEKCglhbmRpLmwJCSYweDAwZmYwMGZmLFVTRVJfRlBTUiglYTYpCgoJY2xyLmwJCSVkMAoJbW92LmIJCUZQQ1JfTU9ERSglYTYpLCVkMAkjIHBhc3Mgcm5kIG1vZGUscHJlYwoKCXRzdC5iCQklZDEKCWJuZS5iCQlfTDE0XzJzCglic3IubAkJc2xvZzEwCQkJIyBvcGVyYW5kIGlzIGEgTk9STQoJYnJhLmIJCV9MMTRfNnMKX0wxNF8yczoKCWNtcGkuYgkJJWQxLCZaRVJPCQkjIGlzIG9wZXJhbmQgYSBaRVJPPwoJYm5lLmIJCV9MMTRfM3MJCQkjIG5vCglic3IubAkJdF9kejIJCQkjIHllcwoJYnJhLmIJCV9MMTRfNnMKX0wxNF8zczoKCWNtcGkuYgkJJWQxLCZJTkYJCSMgaXMgb3BlcmFuZCBhbiBJTkY/CglibmUuYgkJX0wxNF80cwkJCSMgbm8KCWJzci5sCQlzb3ByX2luZgkJCSMgeWVzCglicmEuYgkJX0wxNF82cwpfTDE0XzRzOgoJY21waS5iCQklZDEsJlFOQU4JCSMgaXMgb3BlcmFuZCBhIFFOQU4/CglibmUuYgkJX0wxNF81cwkJCSMgbm8KCWJzci5sCQlzcmNfcW5hbgkJCSMgeWVzCglicmEuYgkJX0wxNF82cwpfTDE0XzVzOgoJYnNyLmwJCXNsb2cxMGQJCQkjIG9wZXJhbmQgaXMgYSBERU5PUk0KX0wxNF82czoKCiMKIwlSZXN1bHQgaXMgbm93IGluIEZQMAojCgltb3ZtLmwJCUVYQ19EUkVHUyglYTYpLCYweDAzMDMJIyByZXN0b3JlIGQwLWQxL2EwLWExCglmbW92bS5sCQlVU0VSX0ZQQ1IoJWE2KSwlZnBjciwlZnBzciAjIHJlc3RvcmUgY3RybCByZWdzCglmbW92bS54CQlFWENfRlAxKCVhNiksJjB4NDAJIyByZXN0b3JlIGZwMQoJdW5sawkJJWE2CglydHMKCglnbG9iYWwJCV9mbG9nMTBkXwpfZmxvZzEwZF86CglsaW5rCQklYTYsJi1MT0NBTF9TSVpFCgoJbW92bS5sCQkmMHgwMzAzLEVYQ19EUkVHUyglYTYpCSMgc2F2ZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJJWZwY3IsJWZwc3IsVVNFUl9GUENSKCVhNikgIyBzYXZlIGN0cmwgcmVncwoJZm1vdm0ueAkJJjB4YzAsRVhDX0ZQMCglYTYpCSMgc2F2ZSBmcDAvZnAxCgoJZm1vdi5sCQkmMHgwLCVmcGNyCQkjIHplcm8gRlBDUgoKIwojCWNvcHksIGNvbnZlcnQsIGFuZCB0YWcgaW5wdXQgYXJndW1lbnQKIwoJZm1vdi5kCQkweDgoJWE2KSwlZnAwCQkjIGxvYWQgZGJsIGlucHV0CglmbW92LngJCSVmcDAsRlBfU1JDKCVhNikKCWxlYQkJRlBfU1JDKCVhNiksJWEwCglic3IubAkJdGFnCQkJIyBmZXRjaCBvcGVyYW5kIHR5cGUKCW1vdi5iCQklZDAsU1RBRyglYTYpCgltb3YuYgkJJWQwLCVkMQoKCWFuZGkubAkJJjB4MDBmZjAwZmYsVVNFUl9GUFNSKCVhNikKCgljbHIubAkJJWQwCgltb3YuYgkJRlBDUl9NT0RFKCVhNiksJWQwCSMgcGFzcyBybmQgbW9kZSxwcmVjCgoJbW92LmIJCSVkMSxTVEFHKCVhNikKCXRzdC5iCQklZDEKCWJuZS5iCQlfTDE0XzJkCglic3IubAkJc2xvZzEwCQkJIyBvcGVyYW5kIGlzIGEgTk9STQoJYnJhLmIJCV9MMTRfNmQKX0wxNF8yZDoKCWNtcGkuYgkJJWQxLCZaRVJPCQkjIGlzIG9wZXJhbmQgYSBaRVJPPwoJYm5lLmIJCV9MMTRfM2QJCQkjIG5vCglic3IubAkJdF9kejIJCQkjIHllcwoJYnJhLmIJCV9MMTRfNmQKX0wxNF8zZDoKCWNtcGkuYgkJJWQxLCZJTkYJCSMgaXMgb3BlcmFuZCBhbiBJTkY/CglibmUuYgkJX0wxNF80ZAkJCSMgbm8KCWJzci5sCQlzb3ByX2luZgkJCSMgeWVzCglicmEuYgkJX0wxNF82ZApfTDE0XzRkOgoJY21waS5iCQklZDEsJlFOQU4JCSMgaXMgb3BlcmFuZCBhIFFOQU4/CglibmUuYgkJX0wxNF81ZAkJCSMgbm8KCWJzci5sCQlzcmNfcW5hbgkJCSMgeWVzCglicmEuYgkJX0wxNF82ZApfTDE0XzVkOgoJYnNyLmwJCXNsb2cxMGQJCQkjIG9wZXJhbmQgaXMgYSBERU5PUk0KX0wxNF82ZDoKCiMKIwlSZXN1bHQgaXMgbm93IGluIEZQMAojCgltb3ZtLmwJCUVYQ19EUkVHUyglYTYpLCYweDAzMDMJIyByZXN0b3JlIGQwLWQxL2EwLWExCglmbW92bS5sCQlVU0VSX0ZQQ1IoJWE2KSwlZnBjciwlZnBzciAjIHJlc3RvcmUgY3RybCByZWdzCglmbW92bS54CQlFWENfRlAxKCVhNiksJjB4NDAJIyByZXN0b3JlIGZwMQoJdW5sawkJJWE2CglydHMKCglnbG9iYWwJCV9mbG9nMTB4XwpfZmxvZzEweF86CglsaW5rCQklYTYsJi1MT0NBTF9TSVpFCgoJbW92bS5sCQkmMHgwMzAzLEVYQ19EUkVHUyglYTYpCSMgc2F2ZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJJWZwY3IsJWZwc3IsVVNFUl9GUENSKCVhNikgIyBzYXZlIGN0cmwgcmVncwoJZm1vdm0ueAkJJjB4YzAsRVhDX0ZQMCglYTYpCSMgc2F2ZSBmcDAvZnAxCgoJZm1vdi5sCQkmMHgwLCVmcGNyCQkjIHplcm8gRlBDUgoKIwojCWNvcHksIGNvbnZlcnQsIGFuZCB0YWcgaW5wdXQgYXJndW1lbnQKIwoJbGVhCQlGUF9TUkMoJWE2KSwlYTAKCW1vdi5sCQkweDgrMHgwKCVhNiksMHgwKCVhMCkJIyBsb2FkIGV4dCBpbnB1dAoJbW92LmwJCTB4OCsweDQoJWE2KSwweDQoJWEwKQoJbW92LmwJCTB4OCsweDgoJWE2KSwweDgoJWEwKQoJYnNyLmwJCXRhZwkJCSMgZmV0Y2ggb3BlcmFuZCB0eXBlCgltb3YuYgkJJWQwLFNUQUcoJWE2KQoJbW92LmIJCSVkMCwlZDEKCglhbmRpLmwJCSYweDAwZmYwMGZmLFVTRVJfRlBTUiglYTYpCgoJY2xyLmwJCSVkMAoJbW92LmIJCUZQQ1JfTU9ERSglYTYpLCVkMAkjIHBhc3Mgcm5kIG1vZGUscHJlYwoKCXRzdC5iCQklZDEKCWJuZS5iCQlfTDE0XzJ4Cglic3IubAkJc2xvZzEwCQkJIyBvcGVyYW5kIGlzIGEgTk9STQoJYnJhLmIJCV9MMTRfNngKX0wxNF8yeDoKCWNtcGkuYgkJJWQxLCZaRVJPCQkjIGlzIG9wZXJhbmQgYSBaRVJPPwoJYm5lLmIJCV9MMTRfM3gJCQkjIG5vCglic3IubAkJdF9kejIJCQkjIHllcwoJYnJhLmIJCV9MMTRfNngKX0wxNF8zeDoKCWNtcGkuYgkJJWQxLCZJTkYJCSMgaXMgb3BlcmFuZCBhbiBJTkY/CglibmUuYgkJX0wxNF80eAkJCSMgbm8KCWJzci5sCQlzb3ByX2luZgkJCSMgeWVzCglicmEuYgkJX0wxNF82eApfTDE0XzR4OgoJY21waS5iCQklZDEsJlFOQU4JCSMgaXMgb3BlcmFuZCBhIFFOQU4/CglibmUuYgkJX0wxNF81eAkJCSMgbm8KCWJzci5sCQlzcmNfcW5hbgkJCSMgeWVzCglicmEuYgkJX0wxNF82eApfTDE0XzV4OgoJYnNyLmwJCXNsb2cxMGQJCQkjIG9wZXJhbmQgaXMgYSBERU5PUk0KX0wxNF82eDoKCiMKIwlSZXN1bHQgaXMgbm93IGluIEZQMAojCgltb3ZtLmwJCUVYQ19EUkVHUyglYTYpLCYweDAzMDMJIyByZXN0b3JlIGQwLWQxL2EwLWExCglmbW92bS5sCQlVU0VSX0ZQQ1IoJWE2KSwlZnBjciwlZnBzciAjIHJlc3RvcmUgY3RybCByZWdzCglmbW92bS54CQlFWENfRlAxKCVhNiksJjB4NDAJIyByZXN0b3JlIGZwMQoJdW5sawkJJWE2CglydHMKCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgTU9OQURJQyBURU1QTEFURQkJCQkJCQkjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCWdsb2JhbAkJX2Zsb2cyc18KX2Zsb2cyc186CglsaW5rCQklYTYsJi1MT0NBTF9TSVpFCgoJbW92bS5sCQkmMHgwMzAzLEVYQ19EUkVHUyglYTYpCSMgc2F2ZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJJWZwY3IsJWZwc3IsVVNFUl9GUENSKCVhNikgIyBzYXZlIGN0cmwgcmVncwoJZm1vdm0ueAkJJjB4YzAsRVhDX0ZQMCglYTYpCSMgc2F2ZSBmcDAvZnAxCgoJZm1vdi5sCQkmMHgwLCVmcGNyCQkjIHplcm8gRlBDUgoKIwojCWNvcHksIGNvbnZlcnQsIGFuZCB0YWcgaW5wdXQgYXJndW1lbnQKIwoJZm1vdi5zCQkweDgoJWE2KSwlZnAwCQkjIGxvYWQgc2dsIGlucHV0CglmbW92LngJCSVmcDAsRlBfU1JDKCVhNikKCWxlYQkJRlBfU1JDKCVhNiksJWEwCglic3IubAkJdGFnCQkJIyBmZXRjaCBvcGVyYW5kIHR5cGUKCW1vdi5iCQklZDAsU1RBRyglYTYpCgltb3YuYgkJJWQwLCVkMQoKCWFuZGkubAkJJjB4MDBmZjAwZmYsVVNFUl9GUFNSKCVhNikKCgljbHIubAkJJWQwCgltb3YuYgkJRlBDUl9NT0RFKCVhNiksJWQwCSMgcGFzcyBybmQgbW9kZSxwcmVjCgoJdHN0LmIJCSVkMQoJYm5lLmIJCV9MMTVfMnMKCWJzci5sCQlzbG9nMgkJCSMgb3BlcmFuZCBpcyBhIE5PUk0KCWJyYS5iCQlfTDE1XzZzCl9MMTVfMnM6CgljbXBpLmIJCSVkMSwmWkVSTwkJIyBpcyBvcGVyYW5kIGEgWkVSTz8KCWJuZS5iCQlfTDE1XzNzCQkJIyBubwoJYnNyLmwJCXRfZHoyCQkJIyB5ZXMKCWJyYS5iCQlfTDE1XzZzCl9MMTVfM3M6CgljbXBpLmIJCSVkMSwmSU5GCQkjIGlzIG9wZXJhbmQgYW4gSU5GPwoJYm5lLmIJCV9MMTVfNHMJCQkjIG5vCglic3IubAkJc29wcl9pbmYJCQkjIHllcwoJYnJhLmIJCV9MMTVfNnMKX0wxNV80czoKCWNtcGkuYgkJJWQxLCZRTkFOCQkjIGlzIG9wZXJhbmQgYSBRTkFOPwoJYm5lLmIJCV9MMTVfNXMJCQkjIG5vCglic3IubAkJc3JjX3FuYW4JCQkjIHllcwoJYnJhLmIJCV9MMTVfNnMKX0wxNV81czoKCWJzci5sCQlzbG9nMmQJCQkjIG9wZXJhbmQgaXMgYSBERU5PUk0KX0wxNV82czoKCiMKIwlSZXN1bHQgaXMgbm93IGluIEZQMAojCgltb3ZtLmwJCUVYQ19EUkVHUyglYTYpLCYweDAzMDMJIyByZXN0b3JlIGQwLWQxL2EwLWExCglmbW92bS5sCQlVU0VSX0ZQQ1IoJWE2KSwlZnBjciwlZnBzciAjIHJlc3RvcmUgY3RybCByZWdzCglmbW92bS54CQlFWENfRlAxKCVhNiksJjB4NDAJIyByZXN0b3JlIGZwMQoJdW5sawkJJWE2CglydHMKCglnbG9iYWwJCV9mbG9nMmRfCl9mbG9nMmRfOgoJbGluawkJJWE2LCYtTE9DQUxfU0laRQoKCW1vdm0ubAkJJjB4MDMwMyxFWENfRFJFR1MoJWE2KQkjIHNhdmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCSVmcGNyLCVmcHNyLFVTRVJfRlBDUiglYTYpICMgc2F2ZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCSYweGMwLEVYQ19GUDAoJWE2KQkjIHNhdmUgZnAwL2ZwMQoKCWZtb3YubAkJJjB4MCwlZnBjcgkJIyB6ZXJvIEZQQ1IKCiMKIwljb3B5LCBjb252ZXJ0LCBhbmQgdGFnIGlucHV0IGFyZ3VtZW50CiMKCWZtb3YuZAkJMHg4KCVhNiksJWZwMAkJIyBsb2FkIGRibCBpbnB1dAoJZm1vdi54CQklZnAwLEZQX1NSQyglYTYpCglsZWEJCUZQX1NSQyglYTYpLCVhMAoJYnNyLmwJCXRhZwkJCSMgZmV0Y2ggb3BlcmFuZCB0eXBlCgltb3YuYgkJJWQwLFNUQUcoJWE2KQoJbW92LmIJCSVkMCwlZDEKCglhbmRpLmwJCSYweDAwZmYwMGZmLFVTRVJfRlBTUiglYTYpCgoJY2xyLmwJCSVkMAoJbW92LmIJCUZQQ1JfTU9ERSglYTYpLCVkMAkjIHBhc3Mgcm5kIG1vZGUscHJlYwoKCW1vdi5iCQklZDEsU1RBRyglYTYpCgl0c3QuYgkJJWQxCglibmUuYgkJX0wxNV8yZAoJYnNyLmwJCXNsb2cyCQkJIyBvcGVyYW5kIGlzIGEgTk9STQoJYnJhLmIJCV9MMTVfNmQKX0wxNV8yZDoKCWNtcGkuYgkJJWQxLCZaRVJPCQkjIGlzIG9wZXJhbmQgYSBaRVJPPwoJYm5lLmIJCV9MMTVfM2QJCQkjIG5vCglic3IubAkJdF9kejIJCQkjIHllcwoJYnJhLmIJCV9MMTVfNmQKX0wxNV8zZDoKCWNtcGkuYgkJJWQxLCZJTkYJCSMgaXMgb3BlcmFuZCBhbiBJTkY/CglibmUuYgkJX0wxNV80ZAkJCSMgbm8KCWJzci5sCQlzb3ByX2luZgkJCSMgeWVzCglicmEuYgkJX0wxNV82ZApfTDE1XzRkOgoJY21waS5iCQklZDEsJlFOQU4JCSMgaXMgb3BlcmFuZCBhIFFOQU4/CglibmUuYgkJX0wxNV81ZAkJCSMgbm8KCWJzci5sCQlzcmNfcW5hbgkJCSMgeWVzCglicmEuYgkJX0wxNV82ZApfTDE1XzVkOgoJYnNyLmwJCXNsb2cyZAkJCSMgb3BlcmFuZCBpcyBhIERFTk9STQpfTDE1XzZkOgoKIwojCVJlc3VsdCBpcyBub3cgaW4gRlAwCiMKCW1vdm0ubAkJRVhDX0RSRUdTKCVhNiksJjB4MDMwMwkjIHJlc3RvcmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCVVTRVJfRlBDUiglYTYpLCVmcGNyLCVmcHNyICMgcmVzdG9yZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCUVYQ19GUDEoJWE2KSwmMHg0MAkjIHJlc3RvcmUgZnAxCgl1bmxrCQklYTYKCXJ0cwoKCWdsb2JhbAkJX2Zsb2cyeF8KX2Zsb2cyeF86CglsaW5rCQklYTYsJi1MT0NBTF9TSVpFCgoJbW92bS5sCQkmMHgwMzAzLEVYQ19EUkVHUyglYTYpCSMgc2F2ZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJJWZwY3IsJWZwc3IsVVNFUl9GUENSKCVhNikgIyBzYXZlIGN0cmwgcmVncwoJZm1vdm0ueAkJJjB4YzAsRVhDX0ZQMCglYTYpCSMgc2F2ZSBmcDAvZnAxCgoJZm1vdi5sCQkmMHgwLCVmcGNyCQkjIHplcm8gRlBDUgoKIwojCWNvcHksIGNvbnZlcnQsIGFuZCB0YWcgaW5wdXQgYXJndW1lbnQKIwoJbGVhCQlGUF9TUkMoJWE2KSwlYTAKCW1vdi5sCQkweDgrMHgwKCVhNiksMHgwKCVhMCkJIyBsb2FkIGV4dCBpbnB1dAoJbW92LmwJCTB4OCsweDQoJWE2KSwweDQoJWEwKQoJbW92LmwJCTB4OCsweDgoJWE2KSwweDgoJWEwKQoJYnNyLmwJCXRhZwkJCSMgZmV0Y2ggb3BlcmFuZCB0eXBlCgltb3YuYgkJJWQwLFNUQUcoJWE2KQoJbW92LmIJCSVkMCwlZDEKCglhbmRpLmwJCSYweDAwZmYwMGZmLFVTRVJfRlBTUiglYTYpCgoJY2xyLmwJCSVkMAoJbW92LmIJCUZQQ1JfTU9ERSglYTYpLCVkMAkjIHBhc3Mgcm5kIG1vZGUscHJlYwoKCXRzdC5iCQklZDEKCWJuZS5iCQlfTDE1XzJ4Cglic3IubAkJc2xvZzIJCQkjIG9wZXJhbmQgaXMgYSBOT1JNCglicmEuYgkJX0wxNV82eApfTDE1XzJ4OgoJY21waS5iCQklZDEsJlpFUk8JCSMgaXMgb3BlcmFuZCBhIFpFUk8/CglibmUuYgkJX0wxNV8zeAkJCSMgbm8KCWJzci5sCQl0X2R6MgkJCSMgeWVzCglicmEuYgkJX0wxNV82eApfTDE1XzN4OgoJY21waS5iCQklZDEsJklORgkJIyBpcyBvcGVyYW5kIGFuIElORj8KCWJuZS5iCQlfTDE1XzR4CQkJIyBubwoJYnNyLmwJCXNvcHJfaW5mCQkJIyB5ZXMKCWJyYS5iCQlfTDE1XzZ4Cl9MMTVfNHg6CgljbXBpLmIJCSVkMSwmUU5BTgkJIyBpcyBvcGVyYW5kIGEgUU5BTj8KCWJuZS5iCQlfTDE1XzV4CQkJIyBubwoJYnNyLmwJCXNyY19xbmFuCQkJIyB5ZXMKCWJyYS5iCQlfTDE1XzZ4Cl9MMTVfNXg6Cglic3IubAkJc2xvZzJkCQkJIyBvcGVyYW5kIGlzIGEgREVOT1JNCl9MMTVfNng6CgojCiMJUmVzdWx0IGlzIG5vdyBpbiBGUDAKIwoJbW92bS5sCQlFWENfRFJFR1MoJWE2KSwmMHgwMzAzCSMgcmVzdG9yZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJVVNFUl9GUENSKCVhNiksJWZwY3IsJWZwc3IgIyByZXN0b3JlIGN0cmwgcmVncwoJZm1vdm0ueAkJRVhDX0ZQMSglYTYpLCYweDQwCSMgcmVzdG9yZSBmcDEKCXVubGsJCSVhNgoJcnRzCgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE1PTkFESUMgVEVNUExBVEUJCQkJCQkJIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCglnbG9iYWwJCV9mY29zaHNfCl9mY29zaHNfOgoJbGluawkJJWE2LCYtTE9DQUxfU0laRQoKCW1vdm0ubAkJJjB4MDMwMyxFWENfRFJFR1MoJWE2KQkjIHNhdmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCSVmcGNyLCVmcHNyLFVTRVJfRlBDUiglYTYpICMgc2F2ZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCSYweGMwLEVYQ19GUDAoJWE2KQkjIHNhdmUgZnAwL2ZwMQoKCWZtb3YubAkJJjB4MCwlZnBjcgkJIyB6ZXJvIEZQQ1IKCiMKIwljb3B5LCBjb252ZXJ0LCBhbmQgdGFnIGlucHV0IGFyZ3VtZW50CiMKCWZtb3YucwkJMHg4KCVhNiksJWZwMAkJIyBsb2FkIHNnbCBpbnB1dAoJZm1vdi54CQklZnAwLEZQX1NSQyglYTYpCglsZWEJCUZQX1NSQyglYTYpLCVhMAoJYnNyLmwJCXRhZwkJCSMgZmV0Y2ggb3BlcmFuZCB0eXBlCgltb3YuYgkJJWQwLFNUQUcoJWE2KQoJbW92LmIJCSVkMCwlZDEKCglhbmRpLmwJCSYweDAwZmYwMGZmLFVTRVJfRlBTUiglYTYpCgoJY2xyLmwJCSVkMAoJbW92LmIJCUZQQ1JfTU9ERSglYTYpLCVkMAkjIHBhc3Mgcm5kIG1vZGUscHJlYwoKCXRzdC5iCQklZDEKCWJuZS5iCQlfTDE2XzJzCglic3IubAkJc2Nvc2gJCQkjIG9wZXJhbmQgaXMgYSBOT1JNCglicmEuYgkJX0wxNl82cwpfTDE2XzJzOgoJY21waS5iCQklZDEsJlpFUk8JCSMgaXMgb3BlcmFuZCBhIFpFUk8/CglibmUuYgkJX0wxNl8zcwkJCSMgbm8KCWJzci5sCQlsZF9wb25lCQkJIyB5ZXMKCWJyYS5iCQlfTDE2XzZzCl9MMTZfM3M6CgljbXBpLmIJCSVkMSwmSU5GCQkjIGlzIG9wZXJhbmQgYW4gSU5GPwoJYm5lLmIJCV9MMTZfNHMJCQkjIG5vCglic3IubAkJbGRfcGluZgkJCSMgeWVzCglicmEuYgkJX0wxNl82cwpfTDE2XzRzOgoJY21waS5iCQklZDEsJlFOQU4JCSMgaXMgb3BlcmFuZCBhIFFOQU4/CglibmUuYgkJX0wxNl81cwkJCSMgbm8KCWJzci5sCQlzcmNfcW5hbgkJCSMgeWVzCglicmEuYgkJX0wxNl82cwpfTDE2XzVzOgoJYnNyLmwJCXNjb3NoZAkJCSMgb3BlcmFuZCBpcyBhIERFTk9STQpfTDE2XzZzOgoKIwojCVJlc3VsdCBpcyBub3cgaW4gRlAwCiMKCW1vdm0ubAkJRVhDX0RSRUdTKCVhNiksJjB4MDMwMwkjIHJlc3RvcmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCVVTRVJfRlBDUiglYTYpLCVmcGNyLCVmcHNyICMgcmVzdG9yZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCUVYQ19GUDEoJWE2KSwmMHg0MAkjIHJlc3RvcmUgZnAxCgl1bmxrCQklYTYKCXJ0cwoKCWdsb2JhbAkJX2Zjb3NoZF8KX2Zjb3NoZF86CglsaW5rCQklYTYsJi1MT0NBTF9TSVpFCgoJbW92bS5sCQkmMHgwMzAzLEVYQ19EUkVHUyglYTYpCSMgc2F2ZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJJWZwY3IsJWZwc3IsVVNFUl9GUENSKCVhNikgIyBzYXZlIGN0cmwgcmVncwoJZm1vdm0ueAkJJjB4YzAsRVhDX0ZQMCglYTYpCSMgc2F2ZSBmcDAvZnAxCgoJZm1vdi5sCQkmMHgwLCVmcGNyCQkjIHplcm8gRlBDUgoKIwojCWNvcHksIGNvbnZlcnQsIGFuZCB0YWcgaW5wdXQgYXJndW1lbnQKIwoJZm1vdi5kCQkweDgoJWE2KSwlZnAwCQkjIGxvYWQgZGJsIGlucHV0CglmbW92LngJCSVmcDAsRlBfU1JDKCVhNikKCWxlYQkJRlBfU1JDKCVhNiksJWEwCglic3IubAkJdGFnCQkJIyBmZXRjaCBvcGVyYW5kIHR5cGUKCW1vdi5iCQklZDAsU1RBRyglYTYpCgltb3YuYgkJJWQwLCVkMQoKCWFuZGkubAkJJjB4MDBmZjAwZmYsVVNFUl9GUFNSKCVhNikKCgljbHIubAkJJWQwCgltb3YuYgkJRlBDUl9NT0RFKCVhNiksJWQwCSMgcGFzcyBybmQgbW9kZSxwcmVjCgoJbW92LmIJCSVkMSxTVEFHKCVhNikKCXRzdC5iCQklZDEKCWJuZS5iCQlfTDE2XzJkCglic3IubAkJc2Nvc2gJCQkjIG9wZXJhbmQgaXMgYSBOT1JNCglicmEuYgkJX0wxNl82ZApfTDE2XzJkOgoJY21waS5iCQklZDEsJlpFUk8JCSMgaXMgb3BlcmFuZCBhIFpFUk8/CglibmUuYgkJX0wxNl8zZAkJCSMgbm8KCWJzci5sCQlsZF9wb25lCQkJIyB5ZXMKCWJyYS5iCQlfTDE2XzZkCl9MMTZfM2Q6CgljbXBpLmIJCSVkMSwmSU5GCQkjIGlzIG9wZXJhbmQgYW4gSU5GPwoJYm5lLmIJCV9MMTZfNGQJCQkjIG5vCglic3IubAkJbGRfcGluZgkJCSMgeWVzCglicmEuYgkJX0wxNl82ZApfTDE2XzRkOgoJY21waS5iCQklZDEsJlFOQU4JCSMgaXMgb3BlcmFuZCBhIFFOQU4/CglibmUuYgkJX0wxNl81ZAkJCSMgbm8KCWJzci5sCQlzcmNfcW5hbgkJCSMgeWVzCglicmEuYgkJX0wxNl82ZApfTDE2XzVkOgoJYnNyLmwJCXNjb3NoZAkJCSMgb3BlcmFuZCBpcyBhIERFTk9STQpfTDE2XzZkOgoKIwojCVJlc3VsdCBpcyBub3cgaW4gRlAwCiMKCW1vdm0ubAkJRVhDX0RSRUdTKCVhNiksJjB4MDMwMwkjIHJlc3RvcmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCVVTRVJfRlBDUiglYTYpLCVmcGNyLCVmcHNyICMgcmVzdG9yZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCUVYQ19GUDEoJWE2KSwmMHg0MAkjIHJlc3RvcmUgZnAxCgl1bmxrCQklYTYKCXJ0cwoKCWdsb2JhbAkJX2Zjb3NoeF8KX2Zjb3NoeF86CglsaW5rCQklYTYsJi1MT0NBTF9TSVpFCgoJbW92bS5sCQkmMHgwMzAzLEVYQ19EUkVHUyglYTYpCSMgc2F2ZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJJWZwY3IsJWZwc3IsVVNFUl9GUENSKCVhNikgIyBzYXZlIGN0cmwgcmVncwoJZm1vdm0ueAkJJjB4YzAsRVhDX0ZQMCglYTYpCSMgc2F2ZSBmcDAvZnAxCgoJZm1vdi5sCQkmMHgwLCVmcGNyCQkjIHplcm8gRlBDUgoKIwojCWNvcHksIGNvbnZlcnQsIGFuZCB0YWcgaW5wdXQgYXJndW1lbnQKIwoJbGVhCQlGUF9TUkMoJWE2KSwlYTAKCW1vdi5sCQkweDgrMHgwKCVhNiksMHgwKCVhMCkJIyBsb2FkIGV4dCBpbnB1dAoJbW92LmwJCTB4OCsweDQoJWE2KSwweDQoJWEwKQoJbW92LmwJCTB4OCsweDgoJWE2KSwweDgoJWEwKQoJYnNyLmwJCXRhZwkJCSMgZmV0Y2ggb3BlcmFuZCB0eXBlCgltb3YuYgkJJWQwLFNUQUcoJWE2KQoJbW92LmIJCSVkMCwlZDEKCglhbmRpLmwJCSYweDAwZmYwMGZmLFVTRVJfRlBTUiglYTYpCgoJY2xyLmwJCSVkMAoJbW92LmIJCUZQQ1JfTU9ERSglYTYpLCVkMAkjIHBhc3Mgcm5kIG1vZGUscHJlYwoKCXRzdC5iCQklZDEKCWJuZS5iCQlfTDE2XzJ4Cglic3IubAkJc2Nvc2gJCQkjIG9wZXJhbmQgaXMgYSBOT1JNCglicmEuYgkJX0wxNl82eApfTDE2XzJ4OgoJY21waS5iCQklZDEsJlpFUk8JCSMgaXMgb3BlcmFuZCBhIFpFUk8/CglibmUuYgkJX0wxNl8zeAkJCSMgbm8KCWJzci5sCQlsZF9wb25lCQkJIyB5ZXMKCWJyYS5iCQlfTDE2XzZ4Cl9MMTZfM3g6CgljbXBpLmIJCSVkMSwmSU5GCQkjIGlzIG9wZXJhbmQgYW4gSU5GPwoJYm5lLmIJCV9MMTZfNHgJCQkjIG5vCglic3IubAkJbGRfcGluZgkJCSMgeWVzCglicmEuYgkJX0wxNl82eApfTDE2XzR4OgoJY21waS5iCQklZDEsJlFOQU4JCSMgaXMgb3BlcmFuZCBhIFFOQU4/CglibmUuYgkJX0wxNl81eAkJCSMgbm8KCWJzci5sCQlzcmNfcW5hbgkJCSMgeWVzCglicmEuYgkJX0wxNl82eApfTDE2XzV4OgoJYnNyLmwJCXNjb3NoZAkJCSMgb3BlcmFuZCBpcyBhIERFTk9STQpfTDE2XzZ4OgoKIwojCVJlc3VsdCBpcyBub3cgaW4gRlAwCiMKCW1vdm0ubAkJRVhDX0RSRUdTKCVhNiksJjB4MDMwMwkjIHJlc3RvcmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCVVTRVJfRlBDUiglYTYpLCVmcGNyLCVmcHNyICMgcmVzdG9yZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCUVYQ19GUDEoJWE2KSwmMHg0MAkjIHJlc3RvcmUgZnAxCgl1bmxrCQklYTYKCXJ0cwoKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBNT05BRElDIFRFTVBMQVRFCQkJCQkJCSMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoJZ2xvYmFsCQlfZmFjb3NzXwpfZmFjb3NzXzoKCWxpbmsJCSVhNiwmLUxPQ0FMX1NJWkUKCgltb3ZtLmwJCSYweDAzMDMsRVhDX0RSRUdTKCVhNikJIyBzYXZlIGQwLWQxL2EwLWExCglmbW92bS5sCQklZnBjciwlZnBzcixVU0VSX0ZQQ1IoJWE2KSAjIHNhdmUgY3RybCByZWdzCglmbW92bS54CQkmMHhjMCxFWENfRlAwKCVhNikJIyBzYXZlIGZwMC9mcDEKCglmbW92LmwJCSYweDAsJWZwY3IJCSMgemVybyBGUENSCgojCiMJY29weSwgY29udmVydCwgYW5kIHRhZyBpbnB1dCBhcmd1bWVudAojCglmbW92LnMJCTB4OCglYTYpLCVmcDAJCSMgbG9hZCBzZ2wgaW5wdXQKCWZtb3YueAkJJWZwMCxGUF9TUkMoJWE2KQoJbGVhCQlGUF9TUkMoJWE2KSwlYTAKCWJzci5sCQl0YWcJCQkjIGZldGNoIG9wZXJhbmQgdHlwZQoJbW92LmIJCSVkMCxTVEFHKCVhNikKCW1vdi5iCQklZDAsJWQxCgoJYW5kaS5sCQkmMHgwMGZmMDBmZixVU0VSX0ZQU1IoJWE2KQoKCWNsci5sCQklZDAKCW1vdi5iCQlGUENSX01PREUoJWE2KSwlZDAJIyBwYXNzIHJuZCBtb2RlLHByZWMKCgl0c3QuYgkJJWQxCglibmUuYgkJX0wxN18ycwoJYnNyLmwJCXNhY29zCQkJIyBvcGVyYW5kIGlzIGEgTk9STQoJYnJhLmIJCV9MMTdfNnMKX0wxN18yczoKCWNtcGkuYgkJJWQxLCZaRVJPCQkjIGlzIG9wZXJhbmQgYSBaRVJPPwoJYm5lLmIJCV9MMTdfM3MJCQkjIG5vCglic3IubAkJbGRfcHBpMgkJCSMgeWVzCglicmEuYgkJX0wxN182cwpfTDE3XzNzOgoJY21waS5iCQklZDEsJklORgkJIyBpcyBvcGVyYW5kIGFuIElORj8KCWJuZS5iCQlfTDE3XzRzCQkJIyBubwoJYnNyLmwJCXRfb3BlcnIJCQkjIHllcwoJYnJhLmIJCV9MMTdfNnMKX0wxN180czoKCWNtcGkuYgkJJWQxLCZRTkFOCQkjIGlzIG9wZXJhbmQgYSBRTkFOPwoJYm5lLmIJCV9MMTdfNXMJCQkjIG5vCglic3IubAkJc3JjX3FuYW4JCQkjIHllcwoJYnJhLmIJCV9MMTdfNnMKX0wxN181czoKCWJzci5sCQlzYWNvc2QJCQkjIG9wZXJhbmQgaXMgYSBERU5PUk0KX0wxN182czoKCiMKIwlSZXN1bHQgaXMgbm93IGluIEZQMAojCgltb3ZtLmwJCUVYQ19EUkVHUyglYTYpLCYweDAzMDMJIyByZXN0b3JlIGQwLWQxL2EwLWExCglmbW92bS5sCQlVU0VSX0ZQQ1IoJWE2KSwlZnBjciwlZnBzciAjIHJlc3RvcmUgY3RybCByZWdzCglmbW92bS54CQlFWENfRlAxKCVhNiksJjB4NDAJIyByZXN0b3JlIGZwMQoJdW5sawkJJWE2CglydHMKCglnbG9iYWwJCV9mYWNvc2RfCl9mYWNvc2RfOgoJbGluawkJJWE2LCYtTE9DQUxfU0laRQoKCW1vdm0ubAkJJjB4MDMwMyxFWENfRFJFR1MoJWE2KQkjIHNhdmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCSVmcGNyLCVmcHNyLFVTRVJfRlBDUiglYTYpICMgc2F2ZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCSYweGMwLEVYQ19GUDAoJWE2KQkjIHNhdmUgZnAwL2ZwMQoKCWZtb3YubAkJJjB4MCwlZnBjcgkJIyB6ZXJvIEZQQ1IKCiMKIwljb3B5LCBjb252ZXJ0LCBhbmQgdGFnIGlucHV0IGFyZ3VtZW50CiMKCWZtb3YuZAkJMHg4KCVhNiksJWZwMAkJIyBsb2FkIGRibCBpbnB1dAoJZm1vdi54CQklZnAwLEZQX1NSQyglYTYpCglsZWEJCUZQX1NSQyglYTYpLCVhMAoJYnNyLmwJCXRhZwkJCSMgZmV0Y2ggb3BlcmFuZCB0eXBlCgltb3YuYgkJJWQwLFNUQUcoJWE2KQoJbW92LmIJCSVkMCwlZDEKCglhbmRpLmwJCSYweDAwZmYwMGZmLFVTRVJfRlBTUiglYTYpCgoJY2xyLmwJCSVkMAoJbW92LmIJCUZQQ1JfTU9ERSglYTYpLCVkMAkjIHBhc3Mgcm5kIG1vZGUscHJlYwoKCW1vdi5iCQklZDEsU1RBRyglYTYpCgl0c3QuYgkJJWQxCglibmUuYgkJX0wxN18yZAoJYnNyLmwJCXNhY29zCQkJIyBvcGVyYW5kIGlzIGEgTk9STQoJYnJhLmIJCV9MMTdfNmQKX0wxN18yZDoKCWNtcGkuYgkJJWQxLCZaRVJPCQkjIGlzIG9wZXJhbmQgYSBaRVJPPwoJYm5lLmIJCV9MMTdfM2QJCQkjIG5vCglic3IubAkJbGRfcHBpMgkJCSMgeWVzCglicmEuYgkJX0wxN182ZApfTDE3XzNkOgoJY21waS5iCQklZDEsJklORgkJIyBpcyBvcGVyYW5kIGFuIElORj8KCWJuZS5iCQlfTDE3XzRkCQkJIyBubwoJYnNyLmwJCXRfb3BlcnIJCQkjIHllcwoJYnJhLmIJCV9MMTdfNmQKX0wxN180ZDoKCWNtcGkuYgkJJWQxLCZRTkFOCQkjIGlzIG9wZXJhbmQgYSBRTkFOPwoJYm5lLmIJCV9MMTdfNWQJCQkjIG5vCglic3IubAkJc3JjX3FuYW4JCQkjIHllcwoJYnJhLmIJCV9MMTdfNmQKX0wxN181ZDoKCWJzci5sCQlzYWNvc2QJCQkjIG9wZXJhbmQgaXMgYSBERU5PUk0KX0wxN182ZDoKCiMKIwlSZXN1bHQgaXMgbm93IGluIEZQMAojCgltb3ZtLmwJCUVYQ19EUkVHUyglYTYpLCYweDAzMDMJIyByZXN0b3JlIGQwLWQxL2EwLWExCglmbW92bS5sCQlVU0VSX0ZQQ1IoJWE2KSwlZnBjciwlZnBzciAjIHJlc3RvcmUgY3RybCByZWdzCglmbW92bS54CQlFWENfRlAxKCVhNiksJjB4NDAJIyByZXN0b3JlIGZwMQoJdW5sawkJJWE2CglydHMKCglnbG9iYWwJCV9mYWNvc3hfCl9mYWNvc3hfOgoJbGluawkJJWE2LCYtTE9DQUxfU0laRQoKCW1vdm0ubAkJJjB4MDMwMyxFWENfRFJFR1MoJWE2KQkjIHNhdmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCSVmcGNyLCVmcHNyLFVTRVJfRlBDUiglYTYpICMgc2F2ZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCSYweGMwLEVYQ19GUDAoJWE2KQkjIHNhdmUgZnAwL2ZwMQoKCWZtb3YubAkJJjB4MCwlZnBjcgkJIyB6ZXJvIEZQQ1IKCiMKIwljb3B5LCBjb252ZXJ0LCBhbmQgdGFnIGlucHV0IGFyZ3VtZW50CiMKCWxlYQkJRlBfU1JDKCVhNiksJWEwCgltb3YubAkJMHg4KzB4MCglYTYpLDB4MCglYTApCSMgbG9hZCBleHQgaW5wdXQKCW1vdi5sCQkweDgrMHg0KCVhNiksMHg0KCVhMCkKCW1vdi5sCQkweDgrMHg4KCVhNiksMHg4KCVhMCkKCWJzci5sCQl0YWcJCQkjIGZldGNoIG9wZXJhbmQgdHlwZQoJbW92LmIJCSVkMCxTVEFHKCVhNikKCW1vdi5iCQklZDAsJWQxCgoJYW5kaS5sCQkmMHgwMGZmMDBmZixVU0VSX0ZQU1IoJWE2KQoKCWNsci5sCQklZDAKCW1vdi5iCQlGUENSX01PREUoJWE2KSwlZDAJIyBwYXNzIHJuZCBtb2RlLHByZWMKCgl0c3QuYgkJJWQxCglibmUuYgkJX0wxN18yeAoJYnNyLmwJCXNhY29zCQkJIyBvcGVyYW5kIGlzIGEgTk9STQoJYnJhLmIJCV9MMTdfNngKX0wxN18yeDoKCWNtcGkuYgkJJWQxLCZaRVJPCQkjIGlzIG9wZXJhbmQgYSBaRVJPPwoJYm5lLmIJCV9MMTdfM3gJCQkjIG5vCglic3IubAkJbGRfcHBpMgkJCSMgeWVzCglicmEuYgkJX0wxN182eApfTDE3XzN4OgoJY21waS5iCQklZDEsJklORgkJIyBpcyBvcGVyYW5kIGFuIElORj8KCWJuZS5iCQlfTDE3XzR4CQkJIyBubwoJYnNyLmwJCXRfb3BlcnIJCQkjIHllcwoJYnJhLmIJCV9MMTdfNngKX0wxN180eDoKCWNtcGkuYgkJJWQxLCZRTkFOCQkjIGlzIG9wZXJhbmQgYSBRTkFOPwoJYm5lLmIJCV9MMTdfNXgJCQkjIG5vCglic3IubAkJc3JjX3FuYW4JCQkjIHllcwoJYnJhLmIJCV9MMTdfNngKX0wxN181eDoKCWJzci5sCQlzYWNvc2QJCQkjIG9wZXJhbmQgaXMgYSBERU5PUk0KX0wxN182eDoKCiMKIwlSZXN1bHQgaXMgbm93IGluIEZQMAojCgltb3ZtLmwJCUVYQ19EUkVHUyglYTYpLCYweDAzMDMJIyByZXN0b3JlIGQwLWQxL2EwLWExCglmbW92bS5sCQlVU0VSX0ZQQ1IoJWE2KSwlZnBjciwlZnBzciAjIHJlc3RvcmUgY3RybCByZWdzCglmbW92bS54CQlFWENfRlAxKCVhNiksJjB4NDAJIyByZXN0b3JlIGZwMQoJdW5sawkJJWE2CglydHMKCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgTU9OQURJQyBURU1QTEFURQkJCQkJCQkjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCWdsb2JhbAkJX2ZnZXRleHBzXwpfZmdldGV4cHNfOgoJbGluawkJJWE2LCYtTE9DQUxfU0laRQoKCW1vdm0ubAkJJjB4MDMwMyxFWENfRFJFR1MoJWE2KQkjIHNhdmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCSVmcGNyLCVmcHNyLFVTRVJfRlBDUiglYTYpICMgc2F2ZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCSYweGMwLEVYQ19GUDAoJWE2KQkjIHNhdmUgZnAwL2ZwMQoKCWZtb3YubAkJJjB4MCwlZnBjcgkJIyB6ZXJvIEZQQ1IKCiMKIwljb3B5LCBjb252ZXJ0LCBhbmQgdGFnIGlucHV0IGFyZ3VtZW50CiMKCWZtb3YucwkJMHg4KCVhNiksJWZwMAkJIyBsb2FkIHNnbCBpbnB1dAoJZm1vdi54CQklZnAwLEZQX1NSQyglYTYpCglsZWEJCUZQX1NSQyglYTYpLCVhMAoJYnNyLmwJCXRhZwkJCSMgZmV0Y2ggb3BlcmFuZCB0eXBlCgltb3YuYgkJJWQwLFNUQUcoJWE2KQoJbW92LmIJCSVkMCwlZDEKCglhbmRpLmwJCSYweDAwZmYwMGZmLFVTRVJfRlBTUiglYTYpCgoJY2xyLmwJCSVkMAoJbW92LmIJCUZQQ1JfTU9ERSglYTYpLCVkMAkjIHBhc3Mgcm5kIG1vZGUscHJlYwoKCXRzdC5iCQklZDEKCWJuZS5iCQlfTDE4XzJzCglic3IubAkJc2dldGV4cAkJCSMgb3BlcmFuZCBpcyBhIE5PUk0KCWJyYS5iCQlfTDE4XzZzCl9MMThfMnM6CgljbXBpLmIJCSVkMSwmWkVSTwkJIyBpcyBvcGVyYW5kIGEgWkVSTz8KCWJuZS5iCQlfTDE4XzNzCQkJIyBubwoJYnNyLmwJCXNyY196ZXJvCQkJIyB5ZXMKCWJyYS5iCQlfTDE4XzZzCl9MMThfM3M6CgljbXBpLmIJCSVkMSwmSU5GCQkjIGlzIG9wZXJhbmQgYW4gSU5GPwoJYm5lLmIJCV9MMThfNHMJCQkjIG5vCglic3IubAkJdF9vcGVycgkJCSMgeWVzCglicmEuYgkJX0wxOF82cwpfTDE4XzRzOgoJY21waS5iCQklZDEsJlFOQU4JCSMgaXMgb3BlcmFuZCBhIFFOQU4/CglibmUuYgkJX0wxOF81cwkJCSMgbm8KCWJzci5sCQlzcmNfcW5hbgkJCSMgeWVzCglicmEuYgkJX0wxOF82cwpfTDE4XzVzOgoJYnNyLmwJCXNnZXRleHBkCQkJIyBvcGVyYW5kIGlzIGEgREVOT1JNCl9MMThfNnM6CgojCiMJUmVzdWx0IGlzIG5vdyBpbiBGUDAKIwoJbW92bS5sCQlFWENfRFJFR1MoJWE2KSwmMHgwMzAzCSMgcmVzdG9yZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJVVNFUl9GUENSKCVhNiksJWZwY3IsJWZwc3IgIyByZXN0b3JlIGN0cmwgcmVncwoJZm1vdm0ueAkJRVhDX0ZQMSglYTYpLCYweDQwCSMgcmVzdG9yZSBmcDEKCXVubGsJCSVhNgoJcnRzCgoJZ2xvYmFsCQlfZmdldGV4cGRfCl9mZ2V0ZXhwZF86CglsaW5rCQklYTYsJi1MT0NBTF9TSVpFCgoJbW92bS5sCQkmMHgwMzAzLEVYQ19EUkVHUyglYTYpCSMgc2F2ZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJJWZwY3IsJWZwc3IsVVNFUl9GUENSKCVhNikgIyBzYXZlIGN0cmwgcmVncwoJZm1vdm0ueAkJJjB4YzAsRVhDX0ZQMCglYTYpCSMgc2F2ZSBmcDAvZnAxCgoJZm1vdi5sCQkmMHgwLCVmcGNyCQkjIHplcm8gRlBDUgoKIwojCWNvcHksIGNvbnZlcnQsIGFuZCB0YWcgaW5wdXQgYXJndW1lbnQKIwoJZm1vdi5kCQkweDgoJWE2KSwlZnAwCQkjIGxvYWQgZGJsIGlucHV0CglmbW92LngJCSVmcDAsRlBfU1JDKCVhNikKCWxlYQkJRlBfU1JDKCVhNiksJWEwCglic3IubAkJdGFnCQkJIyBmZXRjaCBvcGVyYW5kIHR5cGUKCW1vdi5iCQklZDAsU1RBRyglYTYpCgltb3YuYgkJJWQwLCVkMQoKCWFuZGkubAkJJjB4MDBmZjAwZmYsVVNFUl9GUFNSKCVhNikKCgljbHIubAkJJWQwCgltb3YuYgkJRlBDUl9NT0RFKCVhNiksJWQwCSMgcGFzcyBybmQgbW9kZSxwcmVjCgoJbW92LmIJCSVkMSxTVEFHKCVhNikKCXRzdC5iCQklZDEKCWJuZS5iCQlfTDE4XzJkCglic3IubAkJc2dldGV4cAkJCSMgb3BlcmFuZCBpcyBhIE5PUk0KCWJyYS5iCQlfTDE4XzZkCl9MMThfMmQ6CgljbXBpLmIJCSVkMSwmWkVSTwkJIyBpcyBvcGVyYW5kIGEgWkVSTz8KCWJuZS5iCQlfTDE4XzNkCQkJIyBubwoJYnNyLmwJCXNyY196ZXJvCQkJIyB5ZXMKCWJyYS5iCQlfTDE4XzZkCl9MMThfM2Q6CgljbXBpLmIJCSVkMSwmSU5GCQkjIGlzIG9wZXJhbmQgYW4gSU5GPwoJYm5lLmIJCV9MMThfNGQJCQkjIG5vCglic3IubAkJdF9vcGVycgkJCSMgeWVzCglicmEuYgkJX0wxOF82ZApfTDE4XzRkOgoJY21waS5iCQklZDEsJlFOQU4JCSMgaXMgb3BlcmFuZCBhIFFOQU4/CglibmUuYgkJX0wxOF81ZAkJCSMgbm8KCWJzci5sCQlzcmNfcW5hbgkJCSMgeWVzCglicmEuYgkJX0wxOF82ZApfTDE4XzVkOgoJYnNyLmwJCXNnZXRleHBkCQkJIyBvcGVyYW5kIGlzIGEgREVOT1JNCl9MMThfNmQ6CgojCiMJUmVzdWx0IGlzIG5vdyBpbiBGUDAKIwoJbW92bS5sCQlFWENfRFJFR1MoJWE2KSwmMHgwMzAzCSMgcmVzdG9yZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJVVNFUl9GUENSKCVhNiksJWZwY3IsJWZwc3IgIyByZXN0b3JlIGN0cmwgcmVncwoJZm1vdm0ueAkJRVhDX0ZQMSglYTYpLCYweDQwCSMgcmVzdG9yZSBmcDEKCXVubGsJCSVhNgoJcnRzCgoJZ2xvYmFsCQlfZmdldGV4cHhfCl9mZ2V0ZXhweF86CglsaW5rCQklYTYsJi1MT0NBTF9TSVpFCgoJbW92bS5sCQkmMHgwMzAzLEVYQ19EUkVHUyglYTYpCSMgc2F2ZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJJWZwY3IsJWZwc3IsVVNFUl9GUENSKCVhNikgIyBzYXZlIGN0cmwgcmVncwoJZm1vdm0ueAkJJjB4YzAsRVhDX0ZQMCglYTYpCSMgc2F2ZSBmcDAvZnAxCgoJZm1vdi5sCQkmMHgwLCVmcGNyCQkjIHplcm8gRlBDUgoKIwojCWNvcHksIGNvbnZlcnQsIGFuZCB0YWcgaW5wdXQgYXJndW1lbnQKIwoJbGVhCQlGUF9TUkMoJWE2KSwlYTAKCW1vdi5sCQkweDgrMHgwKCVhNiksMHgwKCVhMCkJIyBsb2FkIGV4dCBpbnB1dAoJbW92LmwJCTB4OCsweDQoJWE2KSwweDQoJWEwKQoJbW92LmwJCTB4OCsweDgoJWE2KSwweDgoJWEwKQoJYnNyLmwJCXRhZwkJCSMgZmV0Y2ggb3BlcmFuZCB0eXBlCgltb3YuYgkJJWQwLFNUQUcoJWE2KQoJbW92LmIJCSVkMCwlZDEKCglhbmRpLmwJCSYweDAwZmYwMGZmLFVTRVJfRlBTUiglYTYpCgoJY2xyLmwJCSVkMAoJbW92LmIJCUZQQ1JfTU9ERSglYTYpLCVkMAkjIHBhc3Mgcm5kIG1vZGUscHJlYwoKCXRzdC5iCQklZDEKCWJuZS5iCQlfTDE4XzJ4Cglic3IubAkJc2dldGV4cAkJCSMgb3BlcmFuZCBpcyBhIE5PUk0KCWJyYS5iCQlfTDE4XzZ4Cl9MMThfMng6CgljbXBpLmIJCSVkMSwmWkVSTwkJIyBpcyBvcGVyYW5kIGEgWkVSTz8KCWJuZS5iCQlfTDE4XzN4CQkJIyBubwoJYnNyLmwJCXNyY196ZXJvCQkJIyB5ZXMKCWJyYS5iCQlfTDE4XzZ4Cl9MMThfM3g6CgljbXBpLmIJCSVkMSwmSU5GCQkjIGlzIG9wZXJhbmQgYW4gSU5GPwoJYm5lLmIJCV9MMThfNHgJCQkjIG5vCglic3IubAkJdF9vcGVycgkJCSMgeWVzCglicmEuYgkJX0wxOF82eApfTDE4XzR4OgoJY21waS5iCQklZDEsJlFOQU4JCSMgaXMgb3BlcmFuZCBhIFFOQU4/CglibmUuYgkJX0wxOF81eAkJCSMgbm8KCWJzci5sCQlzcmNfcW5hbgkJCSMgeWVzCglicmEuYgkJX0wxOF82eApfTDE4XzV4OgoJYnNyLmwJCXNnZXRleHBkCQkJIyBvcGVyYW5kIGlzIGEgREVOT1JNCl9MMThfNng6CgojCiMJUmVzdWx0IGlzIG5vdyBpbiBGUDAKIwoJbW92bS5sCQlFWENfRFJFR1MoJWE2KSwmMHgwMzAzCSMgcmVzdG9yZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJVVNFUl9GUENSKCVhNiksJWZwY3IsJWZwc3IgIyByZXN0b3JlIGN0cmwgcmVncwoJZm1vdm0ueAkJRVhDX0ZQMSglYTYpLCYweDQwCSMgcmVzdG9yZSBmcDEKCXVubGsJCSVhNgoJcnRzCgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE1PTkFESUMgVEVNUExBVEUJCQkJCQkJIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCglnbG9iYWwJCV9mZ2V0bWFuc18KX2ZnZXRtYW5zXzoKCWxpbmsJCSVhNiwmLUxPQ0FMX1NJWkUKCgltb3ZtLmwJCSYweDAzMDMsRVhDX0RSRUdTKCVhNikJIyBzYXZlIGQwLWQxL2EwLWExCglmbW92bS5sCQklZnBjciwlZnBzcixVU0VSX0ZQQ1IoJWE2KSAjIHNhdmUgY3RybCByZWdzCglmbW92bS54CQkmMHhjMCxFWENfRlAwKCVhNikJIyBzYXZlIGZwMC9mcDEKCglmbW92LmwJCSYweDAsJWZwY3IJCSMgemVybyBGUENSCgojCiMJY29weSwgY29udmVydCwgYW5kIHRhZyBpbnB1dCBhcmd1bWVudAojCglmbW92LnMJCTB4OCglYTYpLCVmcDAJCSMgbG9hZCBzZ2wgaW5wdXQKCWZtb3YueAkJJWZwMCxGUF9TUkMoJWE2KQoJbGVhCQlGUF9TUkMoJWE2KSwlYTAKCWJzci5sCQl0YWcJCQkjIGZldGNoIG9wZXJhbmQgdHlwZQoJbW92LmIJCSVkMCxTVEFHKCVhNikKCW1vdi5iCQklZDAsJWQxCgoJYW5kaS5sCQkmMHgwMGZmMDBmZixVU0VSX0ZQU1IoJWE2KQoKCWNsci5sCQklZDAKCW1vdi5iCQlGUENSX01PREUoJWE2KSwlZDAJIyBwYXNzIHJuZCBtb2RlLHByZWMKCgl0c3QuYgkJJWQxCglibmUuYgkJX0wxOV8ycwoJYnNyLmwJCXNnZXRtYW4JCQkjIG9wZXJhbmQgaXMgYSBOT1JNCglicmEuYgkJX0wxOV82cwpfTDE5XzJzOgoJY21waS5iCQklZDEsJlpFUk8JCSMgaXMgb3BlcmFuZCBhIFpFUk8/CglibmUuYgkJX0wxOV8zcwkJCSMgbm8KCWJzci5sCQlzcmNfemVybwkJCSMgeWVzCglicmEuYgkJX0wxOV82cwpfTDE5XzNzOgoJY21waS5iCQklZDEsJklORgkJIyBpcyBvcGVyYW5kIGFuIElORj8KCWJuZS5iCQlfTDE5XzRzCQkJIyBubwoJYnNyLmwJCXRfb3BlcnIJCQkjIHllcwoJYnJhLmIJCV9MMTlfNnMKX0wxOV80czoKCWNtcGkuYgkJJWQxLCZRTkFOCQkjIGlzIG9wZXJhbmQgYSBRTkFOPwoJYm5lLmIJCV9MMTlfNXMJCQkjIG5vCglic3IubAkJc3JjX3FuYW4JCQkjIHllcwoJYnJhLmIJCV9MMTlfNnMKX0wxOV81czoKCWJzci5sCQlzZ2V0bWFuZAkJCSMgb3BlcmFuZCBpcyBhIERFTk9STQpfTDE5XzZzOgoKIwojCVJlc3VsdCBpcyBub3cgaW4gRlAwCiMKCW1vdm0ubAkJRVhDX0RSRUdTKCVhNiksJjB4MDMwMwkjIHJlc3RvcmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCVVTRVJfRlBDUiglYTYpLCVmcGNyLCVmcHNyICMgcmVzdG9yZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCUVYQ19GUDEoJWE2KSwmMHg0MAkjIHJlc3RvcmUgZnAxCgl1bmxrCQklYTYKCXJ0cwoKCWdsb2JhbAkJX2ZnZXRtYW5kXwpfZmdldG1hbmRfOgoJbGluawkJJWE2LCYtTE9DQUxfU0laRQoKCW1vdm0ubAkJJjB4MDMwMyxFWENfRFJFR1MoJWE2KQkjIHNhdmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCSVmcGNyLCVmcHNyLFVTRVJfRlBDUiglYTYpICMgc2F2ZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCSYweGMwLEVYQ19GUDAoJWE2KQkjIHNhdmUgZnAwL2ZwMQoKCWZtb3YubAkJJjB4MCwlZnBjcgkJIyB6ZXJvIEZQQ1IKCiMKIwljb3B5LCBjb252ZXJ0LCBhbmQgdGFnIGlucHV0IGFyZ3VtZW50CiMKCWZtb3YuZAkJMHg4KCVhNiksJWZwMAkJIyBsb2FkIGRibCBpbnB1dAoJZm1vdi54CQklZnAwLEZQX1NSQyglYTYpCglsZWEJCUZQX1NSQyglYTYpLCVhMAoJYnNyLmwJCXRhZwkJCSMgZmV0Y2ggb3BlcmFuZCB0eXBlCgltb3YuYgkJJWQwLFNUQUcoJWE2KQoJbW92LmIJCSVkMCwlZDEKCglhbmRpLmwJCSYweDAwZmYwMGZmLFVTRVJfRlBTUiglYTYpCgoJY2xyLmwJCSVkMAoJbW92LmIJCUZQQ1JfTU9ERSglYTYpLCVkMAkjIHBhc3Mgcm5kIG1vZGUscHJlYwoKCW1vdi5iCQklZDEsU1RBRyglYTYpCgl0c3QuYgkJJWQxCglibmUuYgkJX0wxOV8yZAoJYnNyLmwJCXNnZXRtYW4JCQkjIG9wZXJhbmQgaXMgYSBOT1JNCglicmEuYgkJX0wxOV82ZApfTDE5XzJkOgoJY21waS5iCQklZDEsJlpFUk8JCSMgaXMgb3BlcmFuZCBhIFpFUk8/CglibmUuYgkJX0wxOV8zZAkJCSMgbm8KCWJzci5sCQlzcmNfemVybwkJCSMgeWVzCglicmEuYgkJX0wxOV82ZApfTDE5XzNkOgoJY21waS5iCQklZDEsJklORgkJIyBpcyBvcGVyYW5kIGFuIElORj8KCWJuZS5iCQlfTDE5XzRkCQkJIyBubwoJYnNyLmwJCXRfb3BlcnIJCQkjIHllcwoJYnJhLmIJCV9MMTlfNmQKX0wxOV80ZDoKCWNtcGkuYgkJJWQxLCZRTkFOCQkjIGlzIG9wZXJhbmQgYSBRTkFOPwoJYm5lLmIJCV9MMTlfNWQJCQkjIG5vCglic3IubAkJc3JjX3FuYW4JCQkjIHllcwoJYnJhLmIJCV9MMTlfNmQKX0wxOV81ZDoKCWJzci5sCQlzZ2V0bWFuZAkJCSMgb3BlcmFuZCBpcyBhIERFTk9STQpfTDE5XzZkOgoKIwojCVJlc3VsdCBpcyBub3cgaW4gRlAwCiMKCW1vdm0ubAkJRVhDX0RSRUdTKCVhNiksJjB4MDMwMwkjIHJlc3RvcmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCVVTRVJfRlBDUiglYTYpLCVmcGNyLCVmcHNyICMgcmVzdG9yZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCUVYQ19GUDEoJWE2KSwmMHg0MAkjIHJlc3RvcmUgZnAxCgl1bmxrCQklYTYKCXJ0cwoKCWdsb2JhbAkJX2ZnZXRtYW54XwpfZmdldG1hbnhfOgoJbGluawkJJWE2LCYtTE9DQUxfU0laRQoKCW1vdm0ubAkJJjB4MDMwMyxFWENfRFJFR1MoJWE2KQkjIHNhdmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCSVmcGNyLCVmcHNyLFVTRVJfRlBDUiglYTYpICMgc2F2ZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCSYweGMwLEVYQ19GUDAoJWE2KQkjIHNhdmUgZnAwL2ZwMQoKCWZtb3YubAkJJjB4MCwlZnBjcgkJIyB6ZXJvIEZQQ1IKCiMKIwljb3B5LCBjb252ZXJ0LCBhbmQgdGFnIGlucHV0IGFyZ3VtZW50CiMKCWxlYQkJRlBfU1JDKCVhNiksJWEwCgltb3YubAkJMHg4KzB4MCglYTYpLDB4MCglYTApCSMgbG9hZCBleHQgaW5wdXQKCW1vdi5sCQkweDgrMHg0KCVhNiksMHg0KCVhMCkKCW1vdi5sCQkweDgrMHg4KCVhNiksMHg4KCVhMCkKCWJzci5sCQl0YWcJCQkjIGZldGNoIG9wZXJhbmQgdHlwZQoJbW92LmIJCSVkMCxTVEFHKCVhNikKCW1vdi5iCQklZDAsJWQxCgoJYW5kaS5sCQkmMHgwMGZmMDBmZixVU0VSX0ZQU1IoJWE2KQoKCWNsci5sCQklZDAKCW1vdi5iCQlGUENSX01PREUoJWE2KSwlZDAJIyBwYXNzIHJuZCBtb2RlLHByZWMKCgl0c3QuYgkJJWQxCglibmUuYgkJX0wxOV8yeAoJYnNyLmwJCXNnZXRtYW4JCQkjIG9wZXJhbmQgaXMgYSBOT1JNCglicmEuYgkJX0wxOV82eApfTDE5XzJ4OgoJY21waS5iCQklZDEsJlpFUk8JCSMgaXMgb3BlcmFuZCBhIFpFUk8/CglibmUuYgkJX0wxOV8zeAkJCSMgbm8KCWJzci5sCQlzcmNfemVybwkJCSMgeWVzCglicmEuYgkJX0wxOV82eApfTDE5XzN4OgoJY21waS5iCQklZDEsJklORgkJIyBpcyBvcGVyYW5kIGFuIElORj8KCWJuZS5iCQlfTDE5XzR4CQkJIyBubwoJYnNyLmwJCXRfb3BlcnIJCQkjIHllcwoJYnJhLmIJCV9MMTlfNngKX0wxOV80eDoKCWNtcGkuYgkJJWQxLCZRTkFOCQkjIGlzIG9wZXJhbmQgYSBRTkFOPwoJYm5lLmIJCV9MMTlfNXgJCQkjIG5vCglic3IubAkJc3JjX3FuYW4JCQkjIHllcwoJYnJhLmIJCV9MMTlfNngKX0wxOV81eDoKCWJzci5sCQlzZ2V0bWFuZAkJCSMgb3BlcmFuZCBpcyBhIERFTk9STQpfTDE5XzZ4OgoKIwojCVJlc3VsdCBpcyBub3cgaW4gRlAwCiMKCW1vdm0ubAkJRVhDX0RSRUdTKCVhNiksJjB4MDMwMwkjIHJlc3RvcmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCVVTRVJfRlBDUiglYTYpLCVmcGNyLCVmcHNyICMgcmVzdG9yZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCUVYQ19GUDEoJWE2KSwmMHg0MAkjIHJlc3RvcmUgZnAxCgl1bmxrCQklYTYKCXJ0cwoKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBNT05BRElDIFRFTVBMQVRFCQkJCQkJCSMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoJZ2xvYmFsCQlfZnNpbmNvc3NfCl9mc2luY29zc186CglsaW5rCQklYTYsJi1MT0NBTF9TSVpFCgoJbW92bS5sCQkmMHgwMzAzLEVYQ19EUkVHUyglYTYpCSMgc2F2ZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJJWZwY3IsJWZwc3IsVVNFUl9GUENSKCVhNikgIyBzYXZlIGN0cmwgcmVncwoJZm1vdm0ueAkJJjB4YzAsRVhDX0ZQMCglYTYpCSMgc2F2ZSBmcDAvZnAxCgoJZm1vdi5sCQkmMHgwLCVmcGNyCQkjIHplcm8gRlBDUgoKIwojCWNvcHksIGNvbnZlcnQsIGFuZCB0YWcgaW5wdXQgYXJndW1lbnQKIwoJZm1vdi5zCQkweDgoJWE2KSwlZnAwCQkjIGxvYWQgc2dsIGlucHV0CglmbW92LngJCSVmcDAsRlBfU1JDKCVhNikKCWxlYQkJRlBfU1JDKCVhNiksJWEwCglic3IubAkJdGFnCQkJIyBmZXRjaCBvcGVyYW5kIHR5cGUKCW1vdi5iCQklZDAsU1RBRyglYTYpCgltb3YuYgkJJWQwLCVkMQoKCWFuZGkubAkJJjB4MDBmZjAwZmYsVVNFUl9GUFNSKCVhNikKCgljbHIubAkJJWQwCgltb3YuYgkJRlBDUl9NT0RFKCVhNiksJWQwCSMgcGFzcyBybmQgbW9kZSxwcmVjCgoJdHN0LmIJCSVkMQoJYm5lLmIJCV9MMjBfMnMKCWJzci5sCQlzc2luY29zCQkJIyBvcGVyYW5kIGlzIGEgTk9STQoJYnJhLmIJCV9MMjBfNnMKX0wyMF8yczoKCWNtcGkuYgkJJWQxLCZaRVJPCQkjIGlzIG9wZXJhbmQgYSBaRVJPPwoJYm5lLmIJCV9MMjBfM3MJCQkjIG5vCglic3IubAkJc3NpbmNvc3oJCQkjIHllcwoJYnJhLmIJCV9MMjBfNnMKX0wyMF8zczoKCWNtcGkuYgkJJWQxLCZJTkYJCSMgaXMgb3BlcmFuZCBhbiBJTkY/CglibmUuYgkJX0wyMF80cwkJCSMgbm8KCWJzci5sCQlzc2luY29zaQkJCSMgeWVzCglicmEuYgkJX0wyMF82cwpfTDIwXzRzOgoJY21waS5iCQklZDEsJlFOQU4JCSMgaXMgb3BlcmFuZCBhIFFOQU4/CglibmUuYgkJX0wyMF81cwkJCSMgbm8KCWJzci5sCQlzc2luY29zcW5hbgkJCSMgeWVzCglicmEuYgkJX0wyMF82cwpfTDIwXzVzOgoJYnNyLmwJCXNzaW5jb3NkCQkJIyBvcGVyYW5kIGlzIGEgREVOT1JNCl9MMjBfNnM6CgojCiMJUmVzdWx0IGlzIG5vdyBpbiBGUDAKIwoJbW92bS5sCQlFWENfRFJFR1MoJWE2KSwmMHgwMzAzCSMgcmVzdG9yZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJVVNFUl9GUENSKCVhNiksJWZwY3IsJWZwc3IgIyByZXN0b3JlIGN0cmwgcmVncwoJZm1vdm0ueAkJJjB4MDMsLSglc3ApCQkjIHN0b3JlIG9mZiBmcDAvZnAxCglmbW92bS54CQkoJXNwKSssJjB4NDAJCSMgZnAwIG5vdyBpbiBmcDEKCWZtb3ZtLngJCSglc3ApKywmMHg4MAkJIyBmcDEgbm93IGluIGZwMAoJdW5sawkJJWE2CglydHMKCglnbG9iYWwJCV9mc2luY29zZF8KX2ZzaW5jb3NkXzoKCWxpbmsJCSVhNiwmLUxPQ0FMX1NJWkUKCgltb3ZtLmwJCSYweDAzMDMsRVhDX0RSRUdTKCVhNikJIyBzYXZlIGQwLWQxL2EwLWExCglmbW92bS5sCQklZnBjciwlZnBzcixVU0VSX0ZQQ1IoJWE2KSAjIHNhdmUgY3RybCByZWdzCglmbW92bS54CQkmMHhjMCxFWENfRlAwKCVhNikJIyBzYXZlIGZwMC9mcDEKCglmbW92LmwJCSYweDAsJWZwY3IJCSMgemVybyBGUENSCgojCiMJY29weSwgY29udmVydCwgYW5kIHRhZyBpbnB1dCBhcmd1bWVudAojCglmbW92LmQJCTB4OCglYTYpLCVmcDAJCSMgbG9hZCBkYmwgaW5wdXQKCWZtb3YueAkJJWZwMCxGUF9TUkMoJWE2KQoJbGVhCQlGUF9TUkMoJWE2KSwlYTAKCWJzci5sCQl0YWcJCQkjIGZldGNoIG9wZXJhbmQgdHlwZQoJbW92LmIJCSVkMCxTVEFHKCVhNikKCW1vdi5iCQklZDAsJWQxCgoJYW5kaS5sCQkmMHgwMGZmMDBmZixVU0VSX0ZQU1IoJWE2KQoKCWNsci5sCQklZDAKCW1vdi5iCQlGUENSX01PREUoJWE2KSwlZDAJIyBwYXNzIHJuZCBtb2RlLHByZWMKCgltb3YuYgkJJWQxLFNUQUcoJWE2KQoJdHN0LmIJCSVkMQoJYm5lLmIJCV9MMjBfMmQKCWJzci5sCQlzc2luY29zCQkJIyBvcGVyYW5kIGlzIGEgTk9STQoJYnJhLmIJCV9MMjBfNmQKX0wyMF8yZDoKCWNtcGkuYgkJJWQxLCZaRVJPCQkjIGlzIG9wZXJhbmQgYSBaRVJPPwoJYm5lLmIJCV9MMjBfM2QJCQkjIG5vCglic3IubAkJc3NpbmNvc3oJCQkjIHllcwoJYnJhLmIJCV9MMjBfNmQKX0wyMF8zZDoKCWNtcGkuYgkJJWQxLCZJTkYJCSMgaXMgb3BlcmFuZCBhbiBJTkY/CglibmUuYgkJX0wyMF80ZAkJCSMgbm8KCWJzci5sCQlzc2luY29zaQkJCSMgeWVzCglicmEuYgkJX0wyMF82ZApfTDIwXzRkOgoJY21waS5iCQklZDEsJlFOQU4JCSMgaXMgb3BlcmFuZCBhIFFOQU4/CglibmUuYgkJX0wyMF81ZAkJCSMgbm8KCWJzci5sCQlzc2luY29zcW5hbgkJCSMgeWVzCglicmEuYgkJX0wyMF82ZApfTDIwXzVkOgoJYnNyLmwJCXNzaW5jb3NkCQkJIyBvcGVyYW5kIGlzIGEgREVOT1JNCl9MMjBfNmQ6CgojCiMJUmVzdWx0IGlzIG5vdyBpbiBGUDAKIwoJbW92bS5sCQlFWENfRFJFR1MoJWE2KSwmMHgwMzAzCSMgcmVzdG9yZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJVVNFUl9GUENSKCVhNiksJWZwY3IsJWZwc3IgIyByZXN0b3JlIGN0cmwgcmVncwoJZm1vdm0ueAkJJjB4MDMsLSglc3ApCQkjIHN0b3JlIG9mZiBmcDAvZnAxCglmbW92bS54CQkoJXNwKSssJjB4NDAJCSMgZnAwIG5vdyBpbiBmcDEKCWZtb3ZtLngJCSglc3ApKywmMHg4MAkJIyBmcDEgbm93IGluIGZwMAoJdW5sawkJJWE2CglydHMKCglnbG9iYWwJCV9mc2luY29zeF8KX2ZzaW5jb3N4XzoKCWxpbmsJCSVhNiwmLUxPQ0FMX1NJWkUKCgltb3ZtLmwJCSYweDAzMDMsRVhDX0RSRUdTKCVhNikJIyBzYXZlIGQwLWQxL2EwLWExCglmbW92bS5sCQklZnBjciwlZnBzcixVU0VSX0ZQQ1IoJWE2KSAjIHNhdmUgY3RybCByZWdzCglmbW92bS54CQkmMHhjMCxFWENfRlAwKCVhNikJIyBzYXZlIGZwMC9mcDEKCglmbW92LmwJCSYweDAsJWZwY3IJCSMgemVybyBGUENSCgojCiMJY29weSwgY29udmVydCwgYW5kIHRhZyBpbnB1dCBhcmd1bWVudAojCglsZWEJCUZQX1NSQyglYTYpLCVhMAoJbW92LmwJCTB4OCsweDAoJWE2KSwweDAoJWEwKQkjIGxvYWQgZXh0IGlucHV0Cgltb3YubAkJMHg4KzB4NCglYTYpLDB4NCglYTApCgltb3YubAkJMHg4KzB4OCglYTYpLDB4OCglYTApCglic3IubAkJdGFnCQkJIyBmZXRjaCBvcGVyYW5kIHR5cGUKCW1vdi5iCQklZDAsU1RBRyglYTYpCgltb3YuYgkJJWQwLCVkMQoKCWFuZGkubAkJJjB4MDBmZjAwZmYsVVNFUl9GUFNSKCVhNikKCgljbHIubAkJJWQwCgltb3YuYgkJRlBDUl9NT0RFKCVhNiksJWQwCSMgcGFzcyBybmQgbW9kZSxwcmVjCgoJdHN0LmIJCSVkMQoJYm5lLmIJCV9MMjBfMngKCWJzci5sCQlzc2luY29zCQkJIyBvcGVyYW5kIGlzIGEgTk9STQoJYnJhLmIJCV9MMjBfNngKX0wyMF8yeDoKCWNtcGkuYgkJJWQxLCZaRVJPCQkjIGlzIG9wZXJhbmQgYSBaRVJPPwoJYm5lLmIJCV9MMjBfM3gJCQkjIG5vCglic3IubAkJc3NpbmNvc3oJCQkjIHllcwoJYnJhLmIJCV9MMjBfNngKX0wyMF8zeDoKCWNtcGkuYgkJJWQxLCZJTkYJCSMgaXMgb3BlcmFuZCBhbiBJTkY/CglibmUuYgkJX0wyMF80eAkJCSMgbm8KCWJzci5sCQlzc2luY29zaQkJCSMgeWVzCglicmEuYgkJX0wyMF82eApfTDIwXzR4OgoJY21waS5iCQklZDEsJlFOQU4JCSMgaXMgb3BlcmFuZCBhIFFOQU4/CglibmUuYgkJX0wyMF81eAkJCSMgbm8KCWJzci5sCQlzc2luY29zcW5hbgkJCSMgeWVzCglicmEuYgkJX0wyMF82eApfTDIwXzV4OgoJYnNyLmwJCXNzaW5jb3NkCQkJIyBvcGVyYW5kIGlzIGEgREVOT1JNCl9MMjBfNng6CgojCiMJUmVzdWx0IGlzIG5vdyBpbiBGUDAKIwoJbW92bS5sCQlFWENfRFJFR1MoJWE2KSwmMHgwMzAzCSMgcmVzdG9yZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJVVNFUl9GUENSKCVhNiksJWZwY3IsJWZwc3IgIyByZXN0b3JlIGN0cmwgcmVncwoJZm1vdm0ueAkJJjB4MDMsLSglc3ApCQkjIHN0b3JlIG9mZiBmcDAvZnAxCglmbW92bS54CQkoJXNwKSssJjB4NDAJCSMgZnAwIG5vdyBpbiBmcDEKCWZtb3ZtLngJCSglc3ApKywmMHg4MAkJIyBmcDEgbm93IGluIGZwMAoJdW5sawkJJWE2CglydHMKCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgRFlBRElDIFRFTVBMQVRFCQkJCQkJCSMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoJZ2xvYmFsCQlfZnJlbXNfCl9mcmVtc186CglsaW5rCQklYTYsJi1MT0NBTF9TSVpFCgoJbW92bS5sCQkmMHgwMzAzLEVYQ19EUkVHUyglYTYpCSMgc2F2ZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJJWZwY3IsJWZwc3IsVVNFUl9GUENSKCVhNikgIyBzYXZlIGN0cmwgcmVncwoJZm1vdm0ueAkJJjB4YzAsRVhDX0ZQMCglYTYpCSMgc2F2ZSBmcDAvZnAxCgoJZm1vdi5sCQkmMHgwLCVmcGNyCQkjIHplcm8gRlBDUgoKIwojCWNvcHksIGNvbnZlcnQsIGFuZCB0YWcgaW5wdXQgYXJndW1lbnQKIwoJZm1vdi5zCQkweDgoJWE2KSwlZnAwCQkjIGxvYWQgc2dsIGRzdAoJZm1vdi54CQklZnAwLEZQX0RTVCglYTYpCglsZWEJCUZQX0RTVCglYTYpLCVhMAoJYnNyLmwJCXRhZwkJCSMgZmV0Y2ggb3BlcmFuZCB0eXBlCgltb3YuYgkJJWQwLERUQUcoJWE2KQoKCWZtb3YucwkJMHhjKCVhNiksJWZwMAkJIyBsb2FkIHNnbCBzcmMKCWZtb3YueAkJJWZwMCxGUF9TUkMoJWE2KQoJbGVhCQlGUF9TUkMoJWE2KSwlYTAKCWJzci5sCQl0YWcJCQkjIGZldGNoIG9wZXJhbmQgdHlwZQoJbW92LmIJCSVkMCxTVEFHKCVhNikKCW1vdi5sCQklZDAsJWQxCgoJYW5kaS5sCQkmMHgwMGZmMDBmZixVU0VSX0ZQU1IoJWE2KQoKCWNsci5sCQklZDAKCW1vdi5iCQlGUENSX01PREUoJWE2KSwlZDAJIyBwYXNzIHJuZCBtb2RlLHByZWMKCglsZWEJCUZQX1NSQyglYTYpLCVhMAkJIyBwYXNzIHB0ciB0byBzcmMKCWxlYQkJRlBfRFNUKCVhNiksJWExCQkjIHBhc3MgcHRyIHRvIGRzdAoKCXRzdC5iCQklZDEKCWJuZS5iCQlfTDIxXzJzCglic3IubAkJc3JlbV9zbm9ybQkJCSMgb3BlcmFuZCBpcyBhIE5PUk0KCWJyYS5iCQlfTDIxXzZzCl9MMjFfMnM6CgljbXBpLmIJCSVkMSwmWkVSTwkJIyBpcyBvcGVyYW5kIGEgWkVSTz8KCWJuZS5iCQlfTDIxXzNzCQkJIyBubwoJYnNyLmwJCXNyZW1fc3plcm8JCQkjIHllcwoJYnJhLmIJCV9MMjFfNnMKX0wyMV8zczoKCWNtcGkuYgkJJWQxLCZJTkYJCSMgaXMgb3BlcmFuZCBhbiBJTkY/CglibmUuYgkJX0wyMV80cwkJCSMgbm8KCWJzci5sCQlzcmVtX3NpbmYJCQkjIHllcwoJYnJhLmIJCV9MMjFfNnMKX0wyMV80czoKCWNtcGkuYgkJJWQxLCZRTkFOCQkjIGlzIG9wZXJhbmQgYSBRTkFOPwoJYm5lLmIJCV9MMjFfNXMJCQkjIG5vCglic3IubAkJc29wX3NxbmFuCQkJIyB5ZXMKCWJyYS5iCQlfTDIxXzZzCl9MMjFfNXM6Cglic3IubAkJc3JlbV9zZG5ybQkJCSMgb3BlcmFuZCBpcyBhIERFTk9STQpfTDIxXzZzOgoKIwojCVJlc3VsdCBpcyBub3cgaW4gRlAwCiMKCW1vdm0ubAkJRVhDX0RSRUdTKCVhNiksJjB4MDMwMwkjIHJlc3RvcmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCVVTRVJfRlBDUiglYTYpLCVmcGNyLCVmcHNyICMgcmVzdG9yZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCUVYQ19GUDEoJWE2KSwmMHg0MAkjIHJlc3RvcmUgZnAxCgl1bmxrCQklYTYKCXJ0cwoKCWdsb2JhbAkJX2ZyZW1kXwpfZnJlbWRfOgoJbGluawkJJWE2LCYtTE9DQUxfU0laRQoKCW1vdm0ubAkJJjB4MDMwMyxFWENfRFJFR1MoJWE2KQkjIHNhdmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCSVmcGNyLCVmcHNyLFVTRVJfRlBDUiglYTYpICMgc2F2ZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCSYweGMwLEVYQ19GUDAoJWE2KQkjIHNhdmUgZnAwL2ZwMQoKCWZtb3YubAkJJjB4MCwlZnBjcgkJIyB6ZXJvIEZQQ1IKCiMKIwljb3B5LCBjb252ZXJ0LCBhbmQgdGFnIGlucHV0IGFyZ3VtZW50CiMKCWZtb3YuZAkJMHg4KCVhNiksJWZwMAkJIyBsb2FkIGRibCBkc3QKCWZtb3YueAkJJWZwMCxGUF9EU1QoJWE2KQoJbGVhCQlGUF9EU1QoJWE2KSwlYTAKCWJzci5sCQl0YWcJCQkjIGZldGNoIG9wZXJhbmQgdHlwZQoJbW92LmIJCSVkMCxEVEFHKCVhNikKCglmbW92LmQJCTB4MTAoJWE2KSwlZnAwCQkjIGxvYWQgZGJsIHNyYwoJZm1vdi54CQklZnAwLEZQX1NSQyglYTYpCglsZWEJCUZQX1NSQyglYTYpLCVhMAoJYnNyLmwJCXRhZwkJCSMgZmV0Y2ggb3BlcmFuZCB0eXBlCgltb3YuYgkJJWQwLFNUQUcoJWE2KQoJbW92LmwJCSVkMCwlZDEKCglhbmRpLmwJCSYweDAwZmYwMGZmLFVTRVJfRlBTUiglYTYpCgoJY2xyLmwJCSVkMAoJbW92LmIJCUZQQ1JfTU9ERSglYTYpLCVkMAkjIHBhc3Mgcm5kIG1vZGUscHJlYwoKCWxlYQkJRlBfU1JDKCVhNiksJWEwCQkjIHBhc3MgcHRyIHRvIHNyYwoJbGVhCQlGUF9EU1QoJWE2KSwlYTEJCSMgcGFzcyBwdHIgdG8gZHN0CgoJdHN0LmIJCSVkMQoJYm5lLmIJCV9MMjFfMmQKCWJzci5sCQlzcmVtX3Nub3JtCQkJIyBvcGVyYW5kIGlzIGEgTk9STQoJYnJhLmIJCV9MMjFfNmQKX0wyMV8yZDoKCWNtcGkuYgkJJWQxLCZaRVJPCQkjIGlzIG9wZXJhbmQgYSBaRVJPPwoJYm5lLmIJCV9MMjFfM2QJCQkjIG5vCglic3IubAkJc3JlbV9zemVybwkJCSMgeWVzCglicmEuYgkJX0wyMV82ZApfTDIxXzNkOgoJY21waS5iCQklZDEsJklORgkJIyBpcyBvcGVyYW5kIGFuIElORj8KCWJuZS5iCQlfTDIxXzRkCQkJIyBubwoJYnNyLmwJCXNyZW1fc2luZgkJCSMgeWVzCglicmEuYgkJX0wyMV82ZApfTDIxXzRkOgoJY21waS5iCQklZDEsJlFOQU4JCSMgaXMgb3BlcmFuZCBhIFFOQU4/CglibmUuYgkJX0wyMV81ZAkJCSMgbm8KCWJzci5sCQlzb3Bfc3FuYW4JCQkjIHllcwoJYnJhLmIJCV9MMjFfNmQKX0wyMV81ZDoKCWJzci5sCQlzcmVtX3NkbnJtCQkJIyBvcGVyYW5kIGlzIGEgREVOT1JNCl9MMjFfNmQ6CgojCiMJUmVzdWx0IGlzIG5vdyBpbiBGUDAKIwoJbW92bS5sCQlFWENfRFJFR1MoJWE2KSwmMHgwMzAzCSMgcmVzdG9yZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJVVNFUl9GUENSKCVhNiksJWZwY3IsJWZwc3IgIyByZXN0b3JlIGN0cmwgcmVncwoJZm1vdm0ueAkJRVhDX0ZQMSglYTYpLCYweDQwCSMgcmVzdG9yZSBmcDEKCXVubGsJCSVhNgoJcnRzCgoJZ2xvYmFsCQlfZnJlbXhfCl9mcmVteF86CglsaW5rCQklYTYsJi1MT0NBTF9TSVpFCgoJbW92bS5sCQkmMHgwMzAzLEVYQ19EUkVHUyglYTYpCSMgc2F2ZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJJWZwY3IsJWZwc3IsVVNFUl9GUENSKCVhNikgIyBzYXZlIGN0cmwgcmVncwoJZm1vdm0ueAkJJjB4YzAsRVhDX0ZQMCglYTYpCSMgc2F2ZSBmcDAvZnAxCgoJZm1vdi5sCQkmMHgwLCVmcGNyCQkjIHplcm8gRlBDUgoKIwojCWNvcHksIGNvbnZlcnQsIGFuZCB0YWcgaW5wdXQgYXJndW1lbnQKIwoJbGVhCQlGUF9EU1QoJWE2KSwlYTAKCW1vdi5sCQkweDgrMHgwKCVhNiksMHgwKCVhMCkJIyBsb2FkIGV4dCBkc3QKCW1vdi5sCQkweDgrMHg0KCVhNiksMHg0KCVhMCkKCW1vdi5sCQkweDgrMHg4KCVhNiksMHg4KCVhMCkKCWJzci5sCQl0YWcJCQkjIGZldGNoIG9wZXJhbmQgdHlwZQoJbW92LmIJCSVkMCxEVEFHKCVhNikKCglsZWEJCUZQX1NSQyglYTYpLCVhMAoJbW92LmwJCTB4MTQrMHgwKCVhNiksMHgwKCVhMCkJIyBsb2FkIGV4dCBzcmMKCW1vdi5sCQkweDE0KzB4NCglYTYpLDB4NCglYTApCgltb3YubAkJMHgxNCsweDgoJWE2KSwweDgoJWEwKQoJYnNyLmwJCXRhZwkJCSMgZmV0Y2ggb3BlcmFuZCB0eXBlCgltb3YuYgkJJWQwLFNUQUcoJWE2KQoJbW92LmwJCSVkMCwlZDEKCglhbmRpLmwJCSYweDAwZmYwMGZmLFVTRVJfRlBTUiglYTYpCgoJY2xyLmwJCSVkMAoJbW92LmIJCUZQQ1JfTU9ERSglYTYpLCVkMAkjIHBhc3Mgcm5kIG1vZGUscHJlYwoKCWxlYQkJRlBfU1JDKCVhNiksJWEwCQkjIHBhc3MgcHRyIHRvIHNyYwoJbGVhCQlGUF9EU1QoJWE2KSwlYTEJCSMgcGFzcyBwdHIgdG8gZHN0CgoJdHN0LmIJCSVkMQoJYm5lLmIJCV9MMjFfMngKCWJzci5sCQlzcmVtX3Nub3JtCQkJIyBvcGVyYW5kIGlzIGEgTk9STQoJYnJhLmIJCV9MMjFfNngKX0wyMV8yeDoKCWNtcGkuYgkJJWQxLCZaRVJPCQkjIGlzIG9wZXJhbmQgYSBaRVJPPwoJYm5lLmIJCV9MMjFfM3gJCQkjIG5vCglic3IubAkJc3JlbV9zemVybwkJCSMgeWVzCglicmEuYgkJX0wyMV82eApfTDIxXzN4OgoJY21waS5iCQklZDEsJklORgkJIyBpcyBvcGVyYW5kIGFuIElORj8KCWJuZS5iCQlfTDIxXzR4CQkJIyBubwoJYnNyLmwJCXNyZW1fc2luZgkJCSMgeWVzCglicmEuYgkJX0wyMV82eApfTDIxXzR4OgoJY21waS5iCQklZDEsJlFOQU4JCSMgaXMgb3BlcmFuZCBhIFFOQU4/CglibmUuYgkJX0wyMV81eAkJCSMgbm8KCWJzci5sCQlzb3Bfc3FuYW4JCQkjIHllcwoJYnJhLmIJCV9MMjFfNngKX0wyMV81eDoKCWJzci5sCQlzcmVtX3NkbnJtCQkJIyBvcGVyYW5kIGlzIGEgREVOT1JNCl9MMjFfNng6CgojCiMJUmVzdWx0IGlzIG5vdyBpbiBGUDAKIwoJbW92bS5sCQlFWENfRFJFR1MoJWE2KSwmMHgwMzAzCSMgcmVzdG9yZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJVVNFUl9GUENSKCVhNiksJWZwY3IsJWZwc3IgIyByZXN0b3JlIGN0cmwgcmVncwoJZm1vdm0ueAkJRVhDX0ZQMSglYTYpLCYweDQwCSMgcmVzdG9yZSBmcDEKCXVubGsJCSVhNgoJcnRzCgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIERZQURJQyBURU1QTEFURQkJCQkJCQkjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCWdsb2JhbAkJX2Ztb2RzXwpfZm1vZHNfOgoJbGluawkJJWE2LCYtTE9DQUxfU0laRQoKCW1vdm0ubAkJJjB4MDMwMyxFWENfRFJFR1MoJWE2KQkjIHNhdmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCSVmcGNyLCVmcHNyLFVTRVJfRlBDUiglYTYpICMgc2F2ZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCSYweGMwLEVYQ19GUDAoJWE2KQkjIHNhdmUgZnAwL2ZwMQoKCWZtb3YubAkJJjB4MCwlZnBjcgkJIyB6ZXJvIEZQQ1IKCiMKIwljb3B5LCBjb252ZXJ0LCBhbmQgdGFnIGlucHV0IGFyZ3VtZW50CiMKCWZtb3YucwkJMHg4KCVhNiksJWZwMAkJIyBsb2FkIHNnbCBkc3QKCWZtb3YueAkJJWZwMCxGUF9EU1QoJWE2KQoJbGVhCQlGUF9EU1QoJWE2KSwlYTAKCWJzci5sCQl0YWcJCQkjIGZldGNoIG9wZXJhbmQgdHlwZQoJbW92LmIJCSVkMCxEVEFHKCVhNikKCglmbW92LnMJCTB4YyglYTYpLCVmcDAJCSMgbG9hZCBzZ2wgc3JjCglmbW92LngJCSVmcDAsRlBfU1JDKCVhNikKCWxlYQkJRlBfU1JDKCVhNiksJWEwCglic3IubAkJdGFnCQkJIyBmZXRjaCBvcGVyYW5kIHR5cGUKCW1vdi5iCQklZDAsU1RBRyglYTYpCgltb3YubAkJJWQwLCVkMQoKCWFuZGkubAkJJjB4MDBmZjAwZmYsVVNFUl9GUFNSKCVhNikKCgljbHIubAkJJWQwCgltb3YuYgkJRlBDUl9NT0RFKCVhNiksJWQwCSMgcGFzcyBybmQgbW9kZSxwcmVjCgoJbGVhCQlGUF9TUkMoJWE2KSwlYTAJCSMgcGFzcyBwdHIgdG8gc3JjCglsZWEJCUZQX0RTVCglYTYpLCVhMQkJIyBwYXNzIHB0ciB0byBkc3QKCgl0c3QuYgkJJWQxCglibmUuYgkJX0wyMl8ycwoJYnNyLmwJCXNtb2Rfc25vcm0JCQkjIG9wZXJhbmQgaXMgYSBOT1JNCglicmEuYgkJX0wyMl82cwpfTDIyXzJzOgoJY21waS5iCQklZDEsJlpFUk8JCSMgaXMgb3BlcmFuZCBhIFpFUk8/CglibmUuYgkJX0wyMl8zcwkJCSMgbm8KCWJzci5sCQlzbW9kX3N6ZXJvCQkJIyB5ZXMKCWJyYS5iCQlfTDIyXzZzCl9MMjJfM3M6CgljbXBpLmIJCSVkMSwmSU5GCQkjIGlzIG9wZXJhbmQgYW4gSU5GPwoJYm5lLmIJCV9MMjJfNHMJCQkjIG5vCglic3IubAkJc21vZF9zaW5mCQkJIyB5ZXMKCWJyYS5iCQlfTDIyXzZzCl9MMjJfNHM6CgljbXBpLmIJCSVkMSwmUU5BTgkJIyBpcyBvcGVyYW5kIGEgUU5BTj8KCWJuZS5iCQlfTDIyXzVzCQkJIyBubwoJYnNyLmwJCXNvcF9zcW5hbgkJCSMgeWVzCglicmEuYgkJX0wyMl82cwpfTDIyXzVzOgoJYnNyLmwJCXNtb2Rfc2Rucm0JCQkjIG9wZXJhbmQgaXMgYSBERU5PUk0KX0wyMl82czoKCiMKIwlSZXN1bHQgaXMgbm93IGluIEZQMAojCgltb3ZtLmwJCUVYQ19EUkVHUyglYTYpLCYweDAzMDMJIyByZXN0b3JlIGQwLWQxL2EwLWExCglmbW92bS5sCQlVU0VSX0ZQQ1IoJWE2KSwlZnBjciwlZnBzciAjIHJlc3RvcmUgY3RybCByZWdzCglmbW92bS54CQlFWENfRlAxKCVhNiksJjB4NDAJIyByZXN0b3JlIGZwMQoJdW5sawkJJWE2CglydHMKCglnbG9iYWwJCV9mbW9kZF8KX2Ztb2RkXzoKCWxpbmsJCSVhNiwmLUxPQ0FMX1NJWkUKCgltb3ZtLmwJCSYweDAzMDMsRVhDX0RSRUdTKCVhNikJIyBzYXZlIGQwLWQxL2EwLWExCglmbW92bS5sCQklZnBjciwlZnBzcixVU0VSX0ZQQ1IoJWE2KSAjIHNhdmUgY3RybCByZWdzCglmbW92bS54CQkmMHhjMCxFWENfRlAwKCVhNikJIyBzYXZlIGZwMC9mcDEKCglmbW92LmwJCSYweDAsJWZwY3IJCSMgemVybyBGUENSCgojCiMJY29weSwgY29udmVydCwgYW5kIHRhZyBpbnB1dCBhcmd1bWVudAojCglmbW92LmQJCTB4OCglYTYpLCVmcDAJCSMgbG9hZCBkYmwgZHN0CglmbW92LngJCSVmcDAsRlBfRFNUKCVhNikKCWxlYQkJRlBfRFNUKCVhNiksJWEwCglic3IubAkJdGFnCQkJIyBmZXRjaCBvcGVyYW5kIHR5cGUKCW1vdi5iCQklZDAsRFRBRyglYTYpCgoJZm1vdi5kCQkweDEwKCVhNiksJWZwMAkJIyBsb2FkIGRibCBzcmMKCWZtb3YueAkJJWZwMCxGUF9TUkMoJWE2KQoJbGVhCQlGUF9TUkMoJWE2KSwlYTAKCWJzci5sCQl0YWcJCQkjIGZldGNoIG9wZXJhbmQgdHlwZQoJbW92LmIJCSVkMCxTVEFHKCVhNikKCW1vdi5sCQklZDAsJWQxCgoJYW5kaS5sCQkmMHgwMGZmMDBmZixVU0VSX0ZQU1IoJWE2KQoKCWNsci5sCQklZDAKCW1vdi5iCQlGUENSX01PREUoJWE2KSwlZDAJIyBwYXNzIHJuZCBtb2RlLHByZWMKCglsZWEJCUZQX1NSQyglYTYpLCVhMAkJIyBwYXNzIHB0ciB0byBzcmMKCWxlYQkJRlBfRFNUKCVhNiksJWExCQkjIHBhc3MgcHRyIHRvIGRzdAoKCXRzdC5iCQklZDEKCWJuZS5iCQlfTDIyXzJkCglic3IubAkJc21vZF9zbm9ybQkJCSMgb3BlcmFuZCBpcyBhIE5PUk0KCWJyYS5iCQlfTDIyXzZkCl9MMjJfMmQ6CgljbXBpLmIJCSVkMSwmWkVSTwkJIyBpcyBvcGVyYW5kIGEgWkVSTz8KCWJuZS5iCQlfTDIyXzNkCQkJIyBubwoJYnNyLmwJCXNtb2Rfc3plcm8JCQkjIHllcwoJYnJhLmIJCV9MMjJfNmQKX0wyMl8zZDoKCWNtcGkuYgkJJWQxLCZJTkYJCSMgaXMgb3BlcmFuZCBhbiBJTkY/CglibmUuYgkJX0wyMl80ZAkJCSMgbm8KCWJzci5sCQlzbW9kX3NpbmYJCQkjIHllcwoJYnJhLmIJCV9MMjJfNmQKX0wyMl80ZDoKCWNtcGkuYgkJJWQxLCZRTkFOCQkjIGlzIG9wZXJhbmQgYSBRTkFOPwoJYm5lLmIJCV9MMjJfNWQJCQkjIG5vCglic3IubAkJc29wX3NxbmFuCQkJIyB5ZXMKCWJyYS5iCQlfTDIyXzZkCl9MMjJfNWQ6Cglic3IubAkJc21vZF9zZG5ybQkJCSMgb3BlcmFuZCBpcyBhIERFTk9STQpfTDIyXzZkOgoKIwojCVJlc3VsdCBpcyBub3cgaW4gRlAwCiMKCW1vdm0ubAkJRVhDX0RSRUdTKCVhNiksJjB4MDMwMwkjIHJlc3RvcmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCVVTRVJfRlBDUiglYTYpLCVmcGNyLCVmcHNyICMgcmVzdG9yZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCUVYQ19GUDEoJWE2KSwmMHg0MAkjIHJlc3RvcmUgZnAxCgl1bmxrCQklYTYKCXJ0cwoKCWdsb2JhbAkJX2Ztb2R4XwpfZm1vZHhfOgoJbGluawkJJWE2LCYtTE9DQUxfU0laRQoKCW1vdm0ubAkJJjB4MDMwMyxFWENfRFJFR1MoJWE2KQkjIHNhdmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCSVmcGNyLCVmcHNyLFVTRVJfRlBDUiglYTYpICMgc2F2ZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCSYweGMwLEVYQ19GUDAoJWE2KQkjIHNhdmUgZnAwL2ZwMQoKCWZtb3YubAkJJjB4MCwlZnBjcgkJIyB6ZXJvIEZQQ1IKCiMKIwljb3B5LCBjb252ZXJ0LCBhbmQgdGFnIGlucHV0IGFyZ3VtZW50CiMKCWxlYQkJRlBfRFNUKCVhNiksJWEwCgltb3YubAkJMHg4KzB4MCglYTYpLDB4MCglYTApCSMgbG9hZCBleHQgZHN0Cgltb3YubAkJMHg4KzB4NCglYTYpLDB4NCglYTApCgltb3YubAkJMHg4KzB4OCglYTYpLDB4OCglYTApCglic3IubAkJdGFnCQkJIyBmZXRjaCBvcGVyYW5kIHR5cGUKCW1vdi5iCQklZDAsRFRBRyglYTYpCgoJbGVhCQlGUF9TUkMoJWE2KSwlYTAKCW1vdi5sCQkweDE0KzB4MCglYTYpLDB4MCglYTApCSMgbG9hZCBleHQgc3JjCgltb3YubAkJMHgxNCsweDQoJWE2KSwweDQoJWEwKQoJbW92LmwJCTB4MTQrMHg4KCVhNiksMHg4KCVhMCkKCWJzci5sCQl0YWcJCQkjIGZldGNoIG9wZXJhbmQgdHlwZQoJbW92LmIJCSVkMCxTVEFHKCVhNikKCW1vdi5sCQklZDAsJWQxCgoJYW5kaS5sCQkmMHgwMGZmMDBmZixVU0VSX0ZQU1IoJWE2KQoKCWNsci5sCQklZDAKCW1vdi5iCQlGUENSX01PREUoJWE2KSwlZDAJIyBwYXNzIHJuZCBtb2RlLHByZWMKCglsZWEJCUZQX1NSQyglYTYpLCVhMAkJIyBwYXNzIHB0ciB0byBzcmMKCWxlYQkJRlBfRFNUKCVhNiksJWExCQkjIHBhc3MgcHRyIHRvIGRzdAoKCXRzdC5iCQklZDEKCWJuZS5iCQlfTDIyXzJ4Cglic3IubAkJc21vZF9zbm9ybQkJCSMgb3BlcmFuZCBpcyBhIE5PUk0KCWJyYS5iCQlfTDIyXzZ4Cl9MMjJfMng6CgljbXBpLmIJCSVkMSwmWkVSTwkJIyBpcyBvcGVyYW5kIGEgWkVSTz8KCWJuZS5iCQlfTDIyXzN4CQkJIyBubwoJYnNyLmwJCXNtb2Rfc3plcm8JCQkjIHllcwoJYnJhLmIJCV9MMjJfNngKX0wyMl8zeDoKCWNtcGkuYgkJJWQxLCZJTkYJCSMgaXMgb3BlcmFuZCBhbiBJTkY/CglibmUuYgkJX0wyMl80eAkJCSMgbm8KCWJzci5sCQlzbW9kX3NpbmYJCQkjIHllcwoJYnJhLmIJCV9MMjJfNngKX0wyMl80eDoKCWNtcGkuYgkJJWQxLCZRTkFOCQkjIGlzIG9wZXJhbmQgYSBRTkFOPwoJYm5lLmIJCV9MMjJfNXgJCQkjIG5vCglic3IubAkJc29wX3NxbmFuCQkJIyB5ZXMKCWJyYS5iCQlfTDIyXzZ4Cl9MMjJfNXg6Cglic3IubAkJc21vZF9zZG5ybQkJCSMgb3BlcmFuZCBpcyBhIERFTk9STQpfTDIyXzZ4OgoKIwojCVJlc3VsdCBpcyBub3cgaW4gRlAwCiMKCW1vdm0ubAkJRVhDX0RSRUdTKCVhNiksJjB4MDMwMwkjIHJlc3RvcmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCVVTRVJfRlBDUiglYTYpLCVmcGNyLCVmcHNyICMgcmVzdG9yZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCUVYQ19GUDEoJWE2KSwmMHg0MAkjIHJlc3RvcmUgZnAxCgl1bmxrCQklYTYKCXJ0cwoKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEWUFESUMgVEVNUExBVEUJCQkJCQkJIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCglnbG9iYWwJCV9mc2NhbGVzXwpfZnNjYWxlc186CglsaW5rCQklYTYsJi1MT0NBTF9TSVpFCgoJbW92bS5sCQkmMHgwMzAzLEVYQ19EUkVHUyglYTYpCSMgc2F2ZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJJWZwY3IsJWZwc3IsVVNFUl9GUENSKCVhNikgIyBzYXZlIGN0cmwgcmVncwoJZm1vdm0ueAkJJjB4YzAsRVhDX0ZQMCglYTYpCSMgc2F2ZSBmcDAvZnAxCgoJZm1vdi5sCQkmMHgwLCVmcGNyCQkjIHplcm8gRlBDUgoKIwojCWNvcHksIGNvbnZlcnQsIGFuZCB0YWcgaW5wdXQgYXJndW1lbnQKIwoJZm1vdi5zCQkweDgoJWE2KSwlZnAwCQkjIGxvYWQgc2dsIGRzdAoJZm1vdi54CQklZnAwLEZQX0RTVCglYTYpCglsZWEJCUZQX0RTVCglYTYpLCVhMAoJYnNyLmwJCXRhZwkJCSMgZmV0Y2ggb3BlcmFuZCB0eXBlCgltb3YuYgkJJWQwLERUQUcoJWE2KQoKCWZtb3YucwkJMHhjKCVhNiksJWZwMAkJIyBsb2FkIHNnbCBzcmMKCWZtb3YueAkJJWZwMCxGUF9TUkMoJWE2KQoJbGVhCQlGUF9TUkMoJWE2KSwlYTAKCWJzci5sCQl0YWcJCQkjIGZldGNoIG9wZXJhbmQgdHlwZQoJbW92LmIJCSVkMCxTVEFHKCVhNikKCW1vdi5sCQklZDAsJWQxCgoJYW5kaS5sCQkmMHgwMGZmMDBmZixVU0VSX0ZQU1IoJWE2KQoKCWNsci5sCQklZDAKCW1vdi5iCQlGUENSX01PREUoJWE2KSwlZDAJIyBwYXNzIHJuZCBtb2RlLHByZWMKCglsZWEJCUZQX1NSQyglYTYpLCVhMAkJIyBwYXNzIHB0ciB0byBzcmMKCWxlYQkJRlBfRFNUKCVhNiksJWExCQkjIHBhc3MgcHRyIHRvIGRzdAoKCXRzdC5iCQklZDEKCWJuZS5iCQlfTDIzXzJzCglic3IubAkJc3NjYWxlX3Nub3JtCQkJIyBvcGVyYW5kIGlzIGEgTk9STQoJYnJhLmIJCV9MMjNfNnMKX0wyM18yczoKCWNtcGkuYgkJJWQxLCZaRVJPCQkjIGlzIG9wZXJhbmQgYSBaRVJPPwoJYm5lLmIJCV9MMjNfM3MJCQkjIG5vCglic3IubAkJc3NjYWxlX3N6ZXJvCQkJIyB5ZXMKCWJyYS5iCQlfTDIzXzZzCl9MMjNfM3M6CgljbXBpLmIJCSVkMSwmSU5GCQkjIGlzIG9wZXJhbmQgYW4gSU5GPwoJYm5lLmIJCV9MMjNfNHMJCQkjIG5vCglic3IubAkJc3NjYWxlX3NpbmYJCQkjIHllcwoJYnJhLmIJCV9MMjNfNnMKX0wyM180czoKCWNtcGkuYgkJJWQxLCZRTkFOCQkjIGlzIG9wZXJhbmQgYSBRTkFOPwoJYm5lLmIJCV9MMjNfNXMJCQkjIG5vCglic3IubAkJc29wX3NxbmFuCQkJIyB5ZXMKCWJyYS5iCQlfTDIzXzZzCl9MMjNfNXM6Cglic3IubAkJc3NjYWxlX3NkbnJtCQkJIyBvcGVyYW5kIGlzIGEgREVOT1JNCl9MMjNfNnM6CgojCiMJUmVzdWx0IGlzIG5vdyBpbiBGUDAKIwoJbW92bS5sCQlFWENfRFJFR1MoJWE2KSwmMHgwMzAzCSMgcmVzdG9yZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJVVNFUl9GUENSKCVhNiksJWZwY3IsJWZwc3IgIyByZXN0b3JlIGN0cmwgcmVncwoJZm1vdm0ueAkJRVhDX0ZQMSglYTYpLCYweDQwCSMgcmVzdG9yZSBmcDEKCXVubGsJCSVhNgoJcnRzCgoJZ2xvYmFsCQlfZnNjYWxlZF8KX2ZzY2FsZWRfOgoJbGluawkJJWE2LCYtTE9DQUxfU0laRQoKCW1vdm0ubAkJJjB4MDMwMyxFWENfRFJFR1MoJWE2KQkjIHNhdmUgZDAtZDEvYTAtYTEKCWZtb3ZtLmwJCSVmcGNyLCVmcHNyLFVTRVJfRlBDUiglYTYpICMgc2F2ZSBjdHJsIHJlZ3MKCWZtb3ZtLngJCSYweGMwLEVYQ19GUDAoJWE2KQkjIHNhdmUgZnAwL2ZwMQoKCWZtb3YubAkJJjB4MCwlZnBjcgkJIyB6ZXJvIEZQQ1IKCiMKIwljb3B5LCBjb252ZXJ0LCBhbmQgdGFnIGlucHV0IGFyZ3VtZW50CiMKCWZtb3YuZAkJMHg4KCVhNiksJWZwMAkJIyBsb2FkIGRibCBkc3QKCWZtb3YueAkJJWZwMCxGUF9EU1QoJWE2KQoJbGVhCQlGUF9EU1QoJWE2KSwlYTAKCWJzci5sCQl0YWcJCQkjIGZldGNoIG9wZXJhbmQgdHlwZQoJbW92LmIJCSVkMCxEVEFHKCVhNikKCglmbW92LmQJCTB4MTAoJWE2KSwlZnAwCQkjIGxvYWQgZGJsIHNyYwoJZm1vdi54CQklZnAwLEZQX1NSQyglYTYpCglsZWEJCUZQX1NSQyglYTYpLCVhMAoJYnNyLmwJCXRhZwkJCSMgZmV0Y2ggb3BlcmFuZCB0eXBlCgltb3YuYgkJJWQwLFNUQUcoJWE2KQoJbW92LmwJCSVkMCwlZDEKCglhbmRpLmwJCSYweDAwZmYwMGZmLFVTRVJfRlBTUiglYTYpCgoJY2xyLmwJCSVkMAoJbW92LmIJCUZQQ1JfTU9ERSglYTYpLCVkMAkjIHBhc3Mgcm5kIG1vZGUscHJlYwoKCWxlYQkJRlBfU1JDKCVhNiksJWEwCQkjIHBhc3MgcHRyIHRvIHNyYwoJbGVhCQlGUF9EU1QoJWE2KSwlYTEJCSMgcGFzcyBwdHIgdG8gZHN0CgoJdHN0LmIJCSVkMQoJYm5lLmIJCV9MMjNfMmQKCWJzci5sCQlzc2NhbGVfc25vcm0JCQkjIG9wZXJhbmQgaXMgYSBOT1JNCglicmEuYgkJX0wyM182ZApfTDIzXzJkOgoJY21waS5iCQklZDEsJlpFUk8JCSMgaXMgb3BlcmFuZCBhIFpFUk8/CglibmUuYgkJX0wyM18zZAkJCSMgbm8KCWJzci5sCQlzc2NhbGVfc3plcm8JCQkjIHllcwoJYnJhLmIJCV9MMjNfNmQKX0wyM18zZDoKCWNtcGkuYgkJJWQxLCZJTkYJCSMgaXMgb3BlcmFuZCBhbiBJTkY/CglibmUuYgkJX0wyM180ZAkJCSMgbm8KCWJzci5sCQlzc2NhbGVfc2luZgkJCSMgeWVzCglicmEuYgkJX0wyM182ZApfTDIzXzRkOgoJY21waS5iCQklZDEsJlFOQU4JCSMgaXMgb3BlcmFuZCBhIFFOQU4/CglibmUuYgkJX0wyM181ZAkJCSMgbm8KCWJzci5sCQlzb3Bfc3FuYW4JCQkjIHllcwoJYnJhLmIJCV9MMjNfNmQKX0wyM181ZDoKCWJzci5sCQlzc2NhbGVfc2Rucm0JCQkjIG9wZXJhbmQgaXMgYSBERU5PUk0KX0wyM182ZDoKCiMKIwlSZXN1bHQgaXMgbm93IGluIEZQMAojCgltb3ZtLmwJCUVYQ19EUkVHUyglYTYpLCYweDAzMDMJIyByZXN0b3JlIGQwLWQxL2EwLWExCglmbW92bS5sCQlVU0VSX0ZQQ1IoJWE2KSwlZnBjciwlZnBzciAjIHJlc3RvcmUgY3RybCByZWdzCglmbW92bS54CQlFWENfRlAxKCVhNiksJjB4NDAJIyByZXN0b3JlIGZwMQoJdW5sawkJJWE2CglydHMKCglnbG9iYWwJCV9mc2NhbGV4XwpfZnNjYWxleF86CglsaW5rCQklYTYsJi1MT0NBTF9TSVpFCgoJbW92bS5sCQkmMHgwMzAzLEVYQ19EUkVHUyglYTYpCSMgc2F2ZSBkMC1kMS9hMC1hMQoJZm1vdm0ubAkJJWZwY3IsJWZwc3IsVVNFUl9GUENSKCVhNikgIyBzYXZlIGN0cmwgcmVncwoJZm1vdm0ueAkJJjB4YzAsRVhDX0ZQMCglYTYpCSMgc2F2ZSBmcDAvZnAxCgoJZm1vdi5sCQkmMHgwLCVmcGNyCQkjIHplcm8gRlBDUgoKIwojCWNvcHksIGNvbnZlcnQsIGFuZCB0YWcgaW5wdXQgYXJndW1lbnQKIwoJbGVhCQlGUF9EU1QoJWE2KSwlYTAKCW1vdi5sCQkweDgrMHgwKCVhNiksMHgwKCVhMCkJIyBsb2FkIGV4dCBkc3QKCW1vdi5sCQkweDgrMHg0KCVhNiksMHg0KCVhMCkKCW1vdi5sCQkweDgrMHg4KCVhNiksMHg4KCVhMCkKCWJzci5sCQl0YWcJCQkjIGZldGNoIG9wZXJhbmQgdHlwZQoJbW92LmIJCSVkMCxEVEFHKCVhNikKCglsZWEJCUZQX1NSQyglYTYpLCVhMAoJbW92LmwJCTB4MTQrMHgwKCVhNiksMHgwKCVhMCkJIyBsb2FkIGV4dCBzcmMKCW1vdi5sCQkweDE0KzB4NCglYTYpLDB4NCglYTApCgltb3YubAkJMHgxNCsweDgoJWE2KSwweDgoJWEwKQoJYnNyLmwJCXRhZwkJCSMgZmV0Y2ggb3BlcmFuZCB0eXBlCgltb3YuYgkJJWQwLFNUQUcoJWE2KQoJbW92LmwJCSVkMCwlZDEKCglhbmRpLmwJCSYweDAwZmYwMGZmLFVTRVJfRlBTUiglYTYpCgoJY2xyLmwJCSVkMAoJbW92LmIJCUZQQ1JfTU9ERSglYTYpLCVkMAkjIHBhc3Mgcm5kIG1vZGUscHJlYwoKCWxlYQkJRlBfU1JDKCVhNiksJWEwCQkjIHBhc3MgcHRyIHRvIHNyYwoJbGVhCQlGUF9EU1QoJWE2KSwlYTEJCSMgcGFzcyBwdHIgdG8gZHN0CgoJdHN0LmIJCSVkMQoJYm5lLmIJCV9MMjNfMngKCWJzci5sCQlzc2NhbGVfc25vcm0JCQkjIG9wZXJhbmQgaXMgYSBOT1JNCglicmEuYgkJX0wyM182eApfTDIzXzJ4OgoJY21waS5iCQklZDEsJlpFUk8JCSMgaXMgb3BlcmFuZCBhIFpFUk8/CglibmUuYgkJX0wyM18zeAkJCSMgbm8KCWJzci5sCQlzc2NhbGVfc3plcm8JCQkjIHllcwoJYnJhLmIJCV9MMjNfNngKX0wyM18zeDoKCWNtcGkuYgkJJWQxLCZJTkYJCSMgaXMgb3BlcmFuZCBhbiBJTkY/CglibmUuYgkJX0wyM180eAkJCSMgbm8KCWJzci5sCQlzc2NhbGVfc2luZgkJCSMgeWVzCglicmEuYgkJX0wyM182eApfTDIzXzR4OgoJY21waS5iCQklZDEsJlFOQU4JCSMgaXMgb3BlcmFuZCBhIFFOQU4/CglibmUuYgkJX0wyM181eAkJCSMgbm8KCWJzci5sCQlzb3Bfc3FuYW4JCQkjIHllcwoJYnJhLmIJCV9MMjNfNngKX0wyM181eDoKCWJzci5sCQlzc2NhbGVfc2Rucm0JCQkjIG9wZXJhbmQgaXMgYSBERU5PUk0KX0wyM182eDoKCiMKIwlSZXN1bHQgaXMgbm93IGluIEZQMAojCgltb3ZtLmwJCUVYQ19EUkVHUyglYTYpLCYweDAzMDMJIyByZXN0b3JlIGQwLWQxL2EwLWExCglmbW92bS5sCQlVU0VSX0ZQQ1IoJWE2KSwlZnBjciwlZnBzciAjIHJlc3RvcmUgY3RybCByZWdzCglmbW92bS54CQlFWENfRlAxKCVhNiksJjB4NDAJIyByZXN0b3JlIGZwMQoJdW5sawkJJWE2CglydHMKCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgc3NpbigpOiAgICAgY29tcHV0ZXMgdGhlIHNpbmUgb2YgYSBub3JtYWxpemVkIGlucHV0CQkJIwojIHNzaW5kKCk6ICAgIGNvbXB1dGVzIHRoZSBzaW5lIG9mIGEgZGVub3JtYWxpemVkIGlucHV0CQkJIwojIHNjb3MoKTogICAgIGNvbXB1dGVzIHRoZSBjb3NpbmUgb2YgYSBub3JtYWxpemVkIGlucHV0CQkJIwojIHNjb3NkKCk6ICAgIGNvbXB1dGVzIHRoZSBjb3NpbmUgb2YgYSBkZW5vcm1hbGl6ZWQgaW5wdXQJCSMKIyBzc2luY29zKCk6ICBjb21wdXRlcyB0aGUgc2luZSBhbmQgY29zaW5lIG9mIGEgbm9ybWFsaXplZCBpbnB1dAkjCiMgc3NpbmNvc2QoKTogY29tcHV0ZXMgdGhlIHNpbmUgYW5kIGNvc2luZSBvZiBhIGRlbm9ybWFsaXplZCBpbnB1dAkjCiMJCQkJCQkJCQkjCiMgSU5QVVQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICMKIwlhMCA9IHBvaW50ZXIgdG8gZXh0ZW5kZWQgcHJlY2lzaW9uIGlucHV0CQkJIwojCWQwID0gcm91bmQgcHJlY2lzaW9uLG1vZGUJCQkJCSMKIwkJCQkJCQkJCSMKIyBPVVRQVVQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogIwojCWZwMCA9IHNpbihYKSBvciBjb3MoWCkJCQkJCQkjCiMJCQkJCQkJCQkjCiMgICAgRm9yIHNzaW5jb3MoWCk6CQkJCQkJCSMKIwlmcDAgPSBzaW4oWCkJCQkJCQkJIwojCWZwMSA9IGNvcyhYKQkJCQkJCQkjCiMJCQkJCQkJCQkjCiMgQUNDVVJBQ1kgYW5kIE1PTk9UT05JQ0lUWSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICMKIwlUaGUgcmV0dXJuZWQgcmVzdWx0IGlzIHdpdGhpbiAxIHVscCBpbiA2NCBzaWduaWZpY2FudCBiaXQsIGkuZS4JIwojCXdpdGhpbiAwLjUwMDEgdWxwIHRvIDUzIGJpdHMgaWYgdGhlIHJlc3VsdCBpcyBzdWJzZXF1ZW50bHkJIwojCXJvdW5kZWQgdG8gZG91YmxlIHByZWNpc2lvbi4gVGhlIHJlc3VsdCBpcyBwcm92YWJseSBtb25vdG9uaWMJIwojCWluIGRvdWJsZSBwcmVjaXNpb24uCQkJCQkJIwojCQkJCQkJCQkJIwojIEFMR09SSVRITSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgkjCiMJCQkJCQkJCQkjCiMJU0lOIGFuZCBDT1M6CQkJCQkJCSMKIwkxLiBJZiBTSU4gaXMgaW52b2tlZCwgc2V0IEFkak4gOj0gMDsgb3RoZXJ3aXNlLCBzZXQgQWRqTiA6PSAxLgkjCiMJCQkJCQkJCQkjCiMJMi4gSWYgfFh8ID49IDE1UGkgb3IgfFh8IDwgMioqKC00MCksIGdvIHRvIDcuCQkJIwojCQkJCQkJCQkJIwojCTMuIERlY29tcG9zZSBYIGFzIFggPSBOKFBpLzIpICsgciB3aGVyZSB8cnwgPD0gUGkvNC4gTGV0CSMKIwkJayA9IE4gbW9kIDQsIHNvIGluIHBhcnRpY3VsYXIsIGsgPSAwLDEsMixvciAzLgkJIwojCQlPdmVyd3JpdGUgayBieSBrIDo9IGsgKyBBZGpOLgkJCQkjCiMJCQkJCQkJCQkjCiMJNC4gSWYgayBpcyBldmVuLCBnbyB0byA2LgkJCQkJIwojCQkJCQkJCQkJIwojCTUuIChrIGlzIG9kZCkgU2V0IGogOj0gKGstMSkvMiwgc2duIDo9ICgtMSkqKmouCQkJIwojCQlSZXR1cm4gc2duKmNvcyhyKSB3aGVyZSBjb3MocikgaXMgYXBwcm94aW1hdGVkIGJ5IGFuCSMKIwkJZXZlbiBwb2x5bm9taWFsIGluIHIsIDEgKyByKnIqKEIxK3MqKEIyKyAuLi4gKyBzKkI4KSksCSMKIwkJcyA9IHIqci4JCQkJCQkjCiMJCUV4aXQuCQkJCQkJCSMKIwkJCQkJCQkJCSMKIwk2LiAoayBpcyBldmVuKSBTZXQgaiA6PSBrLzIsIHNnbiA6PSAoLTEpKipqLiBSZXR1cm4gc2duKnNpbihyKQkjCiMJCXdoZXJlIHNpbihyKSBpcyBhcHByb3hpbWF0ZWQgYnkgYW4gb2RkIHBvbHlub21pYWwgaW4gcgkjCiMJCXIgKyByKnMqKEExK3MqKEEyKyAuLi4gKyBzKkE3KSksCXMgPSByKnIuCSMKIwkJRXhpdC4JCQkJCQkJIwojCQkJCQkJCQkJIwojCTcuIElmIHxYfCA+IDEsIGdvIHRvIDkuCQkJCQkJIwojCQkJCQkJCQkJIwojCTguICh8WHw8MioqKC00MCkpIElmIFNJTiBpcyBpbnZva2VkLCByZXR1cm4gWDsJCQkjCiMJCW90aGVyd2lzZSByZXR1cm4gMS4JCQkJCSMKIwkJCQkJCQkJCSMKIwk5LiBPdmVyd3JpdGUgWCBieSBYIDo9IFggcmVtIDJQaS4gTm93IHRoYXQgfFh8IDw9IFBpLAkJIwojCQlnbyBiYWNrIHRvIDMuCQkJCQkJIwojCQkJCQkJCQkJIwojCVNJTkNPUzoJCQkJCQkJCSMKIwkxLiBJZiB8WHwgPj0gMTVQaSBvciB8WHwgPCAyKiooLTQwKSwgZ28gdG8gNi4JCQkjCiMJCQkJCQkJCQkjCiMJMi4gRGVjb21wb3NlIFggYXMgWCA9IE4oUGkvMikgKyByIHdoZXJlIHxyfCA8PSBQaS80LiBMZXQJIwojCQlrID0gTiBtb2QgNCwgc28gaW4gcGFydGljdWxhciwgayA9IDAsMSwyLG9yIDMuCQkjCiMJCQkJCQkJCQkjCiMJMy4gSWYgayBpcyBldmVuLCBnbyB0byA1LgkJCQkJIwojCQkJCQkJCQkJIwojCTQuIChrIGlzIG9kZCkgU2V0IGoxIDo9IChrLTEpLzIsIGoyIDo9IGoxIChFT1IpIChrIG1vZCAyKSwgaWUuCSMKIwkJajEgZXhjbHVzaXZlIG9yIHdpdGggdGhlIGwucy5iLiBvZiBrLgkJCSMKIwkJc2duMSA6PSAoLTEpKipqMSwgc2duMiA6PSAoLTEpKipqMi4JCQkjCiMJCVNJTihYKSA9IHNnbjEgKiBjb3MocikgYW5kIENPUyhYKSA9IHNnbjIqc2luKHIpIHdoZXJlCSMKIwkJc2luKHIpIGFuZCBjb3MocikgYXJlIGNvbXB1dGVkIGFzIG9kZCBhbmQgZXZlbgkJIwojCQlwb2x5bm9taWFscyBpbiByLCByZXNwZWN0aXZlbHkuIEV4aXQJCQkjCiMJCQkJCQkJCQkjCiMJNS4gKGsgaXMgZXZlbikgU2V0IGoxIDo9IGsvMiwgc2duMSA6PSAoLTEpKipqMS4JCQkjCiMJCVNJTihYKSA9IHNnbjEgKiBzaW4ocikgYW5kIENPUyhYKSA9IHNnbjEqY29zKHIpIHdoZXJlCSMKIwkJc2luKHIpIGFuZCBjb3MocikgYXJlIGNvbXB1dGVkIGFzIG9kZCBhbmQgZXZlbgkJIwojCQlwb2x5bm9taWFscyBpbiByLCByZXNwZWN0aXZlbHkuIEV4aXQJCQkjCiMJCQkJCQkJCQkjCiMJNi4gSWYgfFh8ID4gMSwgZ28gdG8gOC4JCQkJCQkjCiMJCQkJCQkJCQkjCiMJNy4gKHxYfDwyKiooLTQwKSkgU0lOKFgpID0gWCBhbmQgQ09TKFgpID0gMS4gRXhpdC4JCSMKIwkJCQkJCQkJCSMKIwk4LiBPdmVyd3JpdGUgWCBieSBYIDo9IFggcmVtIDJQaS4gTm93IHRoYXQgfFh8IDw9IFBpLAkJIwojCQlnbyBiYWNrIHRvIDIuCQkJCQkJIwojCQkJCQkJCQkJIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpTSU5BNzoJbG9uZwkJMHhCRDZBQUE3NywweENDQzk5NEY1ClNJTkE2Oglsb25nCQkweDNERTYxMjA5LDB4N0FBRThEQTEKU0lOQTU6CWxvbmcJCTB4QkU1QUU2NDUsMHgyQTExOEFFNApTSU5BNDoJbG9uZwkJMHgzRUM3MURFMywweEE1MzQxNTMxClNJTkEzOglsb25nCQkweEJGMkEwMUEwLDB4MUEwMThCNTksMHgwMDAwMDAwMCwweDAwMDAwMDAwClNJTkEyOglsb25nCQkweDNGRjgwMDAwLDB4ODg4ODg4ODgsMHg4ODg4NTlBRiwweDAwMDAwMDAwClNJTkExOglsb25nCQkweEJGRkMwMDAwLDB4QUFBQUFBQUEsMHhBQUFBQUE5OSwweDAwMDAwMDAwCgpDT1NCODoJbG9uZwkJMHgzRDJBQzREMCwweEQ2MDExRUUzCkNPU0I3Oglsb25nCQkweEJEQTkzOTZGLDB4OUY0NUFDMTkKQ09TQjY6CWxvbmcJCTB4M0UyMUVFRDksMHgwNjEyQzk3MgpDT1NCNToJbG9uZwkJMHhCRTkyN0U0RiwweEI3OUQ5RkNGCkNPU0I0Oglsb25nCQkweDNFRkEwMUEwLDB4MUEwMUQ0MjMsMHgwMDAwMDAwMCwweDAwMDAwMDAwCkNPU0IzOglsb25nCQkweEJGRjUwMDAwLDB4QjYwQjYwQjYsMHgwQjYxRDQzOCwweDAwMDAwMDAwCkNPU0IyOglsb25nCQkweDNGRkEwMDAwLDB4QUFBQUFBQUEsMHhBQUFBQUI1RQpDT1NCMToJbG9uZwkJMHhCRjAwMDAwMAoKCXNldAkJSU5BUkcsRlBfU0NSMAoKCXNldAkJWCxGUF9TQ1IwCiMJc2V0CQlYRENBUkUsWCsyCglzZXQJCVhGUkFDLFgrNAoKCXNldAkJUlBSSU1FLEZQX1NDUjAKCXNldAkJU1BSSU1FLEZQX1NDUjEKCglzZXQJCVBPU05FRzEsTF9TQ1IxCglzZXQJCVRXT1RPNjMsTF9TQ1IxCgoJc2V0CQlFTkRGTEFHLExfU0NSMgoJc2V0CQlJTlQsTF9TQ1IyCgoJc2V0CQlBREpOLExfU0NSMwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCWdsb2JhbAkJc3Npbgpzc2luOgoJbW92LmwJCSYwLEFESk4oJWE2KQkJIyB5ZXM7IFNFVCBBREpOIFRPIDAKCWJyYS5iCQlTSU5CR04KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCglnbG9iYWwJCXNjb3MKc2NvczoKCW1vdi5sCQkmMSxBREpOKCVhNikJCSMgeWVzOyBTRVQgQURKTiBUTyAxCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpTSU5CR046CiMtLVNBVkUgRlBDUiwgRlAxLiBDSEVDSyBJRiB8WHwgSVMgVE9PIFNNQUxMIE9SIExBUkdFCgoJZm1vdi54CQkoJWEwKSwlZnAwCQkjIExPQUQgSU5QVVQKCWZtb3YueAkJJWZwMCxYKCVhNikJCSMgc2F2ZSBpbnB1dCBhdCBYCgojICJDT01QQUNUSUZZIiBYCgltb3YubAkJKCVhMCksJWQxCQkjIHB1dCBleHAgaW4gaGkgd29yZAoJbW92LncJCTQoJWEwKSwlZDEJCSMgZmV0Y2ggaGkobWFuKQoJYW5kLmwJCSYweDdGRkZGRkZGLCVkMQkJIyBzdHJpcCBzaWduCgoJY21waS5sCQklZDEsJjB4M0ZENzgwMDAJCSMgaXMgfFh8ID49IDIqKigtNDApPwoJYmdlLmIJCVNPSzEJCQkjIG5vCglicmEudwkJU0lOU00JCQkjIHllczsgaW5wdXQgaXMgdmVyeSBzbWFsbAoKU09LMToKCWNtcC5sCQklZDEsJjB4NDAwNEJDN0UJCSMgaXMgfFh8IDwgMTUgUEk/CglibHQuYgkJU0lOTUFJTgkJCSMgbm8KCWJyYS53CQlTUkVEVUNFWAkJIyB5ZXM7IGlucHV0IGlzIHZlcnkgbGFyZ2UKCiMtLVRISVMgSVMgVEhFIFVTVUFMIENBU0UsIHxYfCA8PSAxNSBQSS4KIy0tVEhFIEFSR1VNRU5UIFJFRFVDVElPTiBJUyBET05FIEJZIFRBQkxFIExPT0sgVVAuClNJTk1BSU46CglmbW92LngJCSVmcDAsJWZwMQoJZm11bC5kCQlUV09CWVBJKCVwYyksJWZwMQkjIFgqMi9QSQoKCWxlYQkJUElUQkwrMHgyMDAoJXBjKSwlYTEJIyBUQUJMRSBPRiBOKlBJLzIsIE4gPSAtMzIsLi4uLDMyCgoJZm1vdi5sCQklZnAxLElOVCglYTYpCQkjIENPTlZFUlQgVE8gSU5URUdFUgoKCW1vdi5sCQlJTlQoJWE2KSwlZDEJCSMgbWFrZSBhIGNvcHkgb2YgTgoJYXNsLmwJCSY0LCVkMQkJCSMgTiAqPSAxNgoJYWRkLmwJCSVkMSwlYTEJCQkjIHRibF9hZGRyID0gYTEgKyAoTioxNikKCiMgQTEgSVMgVEhFIEFERFJFU1MgT0YgTipQSUJZMgojIC4uLldISUNIIElTIElOIFRXTyBQSUVDRVMgWTEgJiBZMgoJZnN1Yi54CQkoJWExKSssJWZwMAkJIyBYLVkxCglmc3ViLnMJCSglYTEpLCVmcDAJCSMgZnAwID0gUiA9IChYLVkxKS1ZMgoKU0lOQ09OVDoKIy0tY29udGludWF0aW9uIGZyb20gUkVEVUNFWAoKIy0tR0VUIE4rQURKTiBBTkQgU0VFIElGIFNJTihSKSBPUiBDT1MoUikgSVMgTkVFREVECgltb3YubAkJSU5UKCVhNiksJWQxCglhZGQubAkJQURKTiglYTYpLCVkMQkJIyBTRUUgSUYgRDAgSVMgT0REIE9SIEVWRU4KCXJvci5sCQkmMSwlZDEJCQkjIEQwIFdBUyBPREQgSUZGIEQwIElTIE5FR0FUSVZFCgljbXAubAkJJWQxLCYwCglibHQudwkJQ09TUE9MWQoKIy0tTEVUIEogQkUgVEhFIExFQVNUIFNJRy4gQklUIE9GIEQwLCBMRVQgU0dOIDo9ICgtMSkqKkouCiMtLVRIRU4gV0UgUkVUVVJOCVNHTipTSU4oUikuIFNHTipTSU4oUikgSVMgQ09NUFVURUQgQlkKIy0tUicgKyBSJypTKihBMSArIFMoQTIgKyBTKEEzICsgUyhBNCArIC4uLiArIFNBNykpKSksIFdIRVJFCiMtLVInID0gU0dOKlIsIFM9UipSLiBUSElTIENBTiBCRSBSRVdSSVRURU4gQVMKIy0tUicgKyBSJypTKiggW0ExK1QoQTMrVChBNStUQTcpKV0gKyBbUyhBMitUKEE0K1RBNikpXSkKIy0tV0hFUkUgVD1TKlMuCiMtLU5PVEUgVEhBVCBBMyBUSFJPVUdIIEE3IEFSRSBTVE9SRUQgSU4gRE9VQkxFIFBSRUNJU0lPTgojLS1XSElMRSBBMSBBTkQgQTIgQVJFIElOIERPVUJMRS1FWFRFTkRFRCBGT1JNQVQuClNJTlBPTFk6CglmbW92bS54CQkmMHgwYywtKCVzcCkJCSMgc2F2ZSBmcDIvZnAzCgoJZm1vdi54CQklZnAwLFgoJWE2KQkJIyBYIElTIFIKCWZtdWwueAkJJWZwMCwlZnAwCQkjIEZQMCBJUyBTCgoJZm1vdi5kCQlTSU5BNyglcGMpLCVmcDMKCWZtb3YuZAkJU0lOQTYoJXBjKSwlZnAyCgoJZm1vdi54CQklZnAwLCVmcDEKCWZtdWwueAkJJWZwMSwlZnAxCQkjIEZQMSBJUyBUCgoJcm9yLmwJCSYxLCVkMQoJYW5kLmwJCSYweDgwMDAwMDAwLCVkMQojIC4uLkxFQVNUIFNJRy4gQklUIE9GIEQwIElOIFNJR04gUE9TSVRJT04KCWVvci5sCQklZDEsWCglYTYpCQkjIFggSVMgTk9XIFInPSBTR04qUgoKCWZtdWwueAkJJWZwMSwlZnAzCQkjIFRBNwoJZm11bC54CQklZnAxLCVmcDIJCSMgVEE2CgoJZmFkZC5kCQlTSU5BNSglcGMpLCVmcDMJCSMgQTUrVEE3CglmYWRkLmQJCVNJTkE0KCVwYyksJWZwMgkJIyBBNCtUQTYKCglmbXVsLngJCSVmcDEsJWZwMwkJIyBUKEE1K1RBNykKCWZtdWwueAkJJWZwMSwlZnAyCQkjIFQoQTQrVEE2KQoKCWZhZGQuZAkJU0lOQTMoJXBjKSwlZnAzCQkjIEEzK1QoQTUrVEE3KQoJZmFkZC54CQlTSU5BMiglcGMpLCVmcDIJCSMgQTIrVChBNCtUQTYpCgoJZm11bC54CQklZnAzLCVmcDEJCSMgVChBMytUKEE1K1RBNykpCgoJZm11bC54CQklZnAwLCVmcDIJCSMgUyhBMitUKEE0K1RBNikpCglmYWRkLngJCVNJTkExKCVwYyksJWZwMQkJIyBBMStUKEEzK1QoQTUrVEE3KSkKCWZtdWwueAkJWCglYTYpLCVmcDAJCSMgUicqUwoKCWZhZGQueAkJJWZwMiwlZnAxCQkjIFtBMStUKEEzK1QoQTUrVEE3KSldK1tTKEEyK1QoQTQrVEE2KSldCgoJZm11bC54CQklZnAxLCVmcDAJCSMgU0lOKFInKS1SJwoKCWZtb3ZtLngJCSglc3ApKywmMHgzMAkJIyByZXN0b3JlIGZwMi9mcDMKCglmbW92LmwJCSVkMCwlZnBjcgkJIyByZXN0b3JlIHVzZXJzIHJvdW5kIG1vZGUscHJlYwoJZmFkZC54CQlYKCVhNiksJWZwMAkJIyBsYXN0IGluc3QgLSBwb3NzaWJsZSBleGNlcHRpb24gc2V0CglicmEJCXRfaW54MgoKIy0tTEVUIEogQkUgVEhFIExFQVNUIFNJRy4gQklUIE9GIEQwLCBMRVQgU0dOIDo9ICgtMSkqKkouCiMtLVRIRU4gV0UgUkVUVVJOCVNHTipDT1MoUikuIFNHTipDT1MoUikgSVMgQ09NUFVURUQgQlkKIy0tU0dOICsgUycqKEIxICsgUyhCMiArIFMoQjMgKyBTKEI0ICsgLi4uICsgU0I4KSkpKSwgV0hFUkUKIy0tUz1SKlIgQU5EIFMnPVNHTipTLiBUSElTIENBTiBCRSBSRVdSSVRURU4gQVMKIy0tU0dOICsgUycqKFtCMStUKEIzK1QoQjUrVEI3KSldICsgW1MoQjIrVChCNCtUKEI2K1RCOCkpKV0pCiMtLVdIRVJFIFQ9UypTLgojLS1OT1RFIFRIQVQgQjQgVEhST1VHSCBCOCBBUkUgU1RPUkVEIElOIERPVUJMRSBQUkVDSVNJT04KIy0tV0hJTEUgQjIgQU5EIEIzIEFSRSBJTiBET1VCTEUtRVhURU5ERUQgRk9STUFULCBCMSBJUyAtMS8yCiMtLUFORCBJUyBUSEVSRUZPUkUgU1RPUkVEIEFTIFNJTkdMRSBQUkVDSVNJT04uCkNPU1BPTFk6CglmbW92bS54CQkmMHgwYywtKCVzcCkJCSMgc2F2ZSBmcDIvZnAzCgoJZm11bC54CQklZnAwLCVmcDAJCSMgRlAwIElTIFMKCglmbW92LmQJCUNPU0I4KCVwYyksJWZwMgoJZm1vdi5kCQlDT1NCNyglcGMpLCVmcDMKCglmbW92LngJCSVmcDAsJWZwMQoJZm11bC54CQklZnAxLCVmcDEJCSMgRlAxIElTIFQKCglmbW92LngJCSVmcDAsWCglYTYpCQkjIFggSVMgUwoJcm9yLmwJCSYxLCVkMQoJYW5kLmwJCSYweDgwMDAwMDAwLCVkMQojIC4uLkxFQVNUIFNJRy4gQklUIE9GIEQwIElOIFNJR04gUE9TSVRJT04KCglmbXVsLngJCSVmcDEsJWZwMgkJIyBUQjgKCgllb3IubAkJJWQxLFgoJWE2KQkJIyBYIElTIE5PVyBTJz0gU0dOKlMKCWFuZC5sCQkmMHg4MDAwMDAwMCwlZDEKCglmbXVsLngJCSVmcDEsJWZwMwkJIyBUQjcKCglvci5sCQkmMHgzRjgwMDAwMCwlZDEJCSMgRDAgSVMgU0dOIElOIFNJTkdMRQoJbW92LmwJCSVkMSxQT1NORUcxKCVhNikKCglmYWRkLmQJCUNPU0I2KCVwYyksJWZwMgkJIyBCNitUQjgKCWZhZGQuZAkJQ09TQjUoJXBjKSwlZnAzCQkjIEI1K1RCNwoKCWZtdWwueAkJJWZwMSwlZnAyCQkjIFQoQjYrVEI4KQoJZm11bC54CQklZnAxLCVmcDMJCSMgVChCNStUQjcpCgoJZmFkZC5kCQlDT1NCNCglcGMpLCVmcDIJCSMgQjQrVChCNitUQjgpCglmYWRkLngJCUNPU0IzKCVwYyksJWZwMwkJIyBCMytUKEI1K1RCNykKCglmbXVsLngJCSVmcDEsJWZwMgkJIyBUKEI0K1QoQjYrVEI4KSkKCWZtdWwueAkJJWZwMywlZnAxCQkjIFQoQjMrVChCNStUQjcpKQoKCWZhZGQueAkJQ09TQjIoJXBjKSwlZnAyCQkjIEIyK1QoQjQrVChCNitUQjgpKQoJZmFkZC5zCQlDT1NCMSglcGMpLCVmcDEJCSMgQjErVChCMytUKEI1K1RCNykpCgoJZm11bC54CQklZnAyLCVmcDAJCSMgUyhCMitUKEI0K1QoQjYrVEI4KSkpCgoJZmFkZC54CQklZnAxLCVmcDAKCglmbXVsLngJCVgoJWE2KSwlZnAwCgoJZm1vdm0ueAkJKCVzcCkrLCYweDMwCQkjIHJlc3RvcmUgZnAyL2ZwMwoKCWZtb3YubAkJJWQwLCVmcGNyCQkjIHJlc3RvcmUgdXNlcnMgcm91bmQgbW9kZSxwcmVjCglmYWRkLnMJCVBPU05FRzEoJWE2KSwlZnAwCSMgbGFzdCBpbnN0IC0gcG9zc2libGUgZXhjZXB0aW9uIHNldAoJYnJhCQl0X2lueDIKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgU0lOZTogQmlnIE9SIFNtYWxsPwojLS1JRiB8WHwgPiAxNVBJLCBXRSBVU0UgVEhFIEdFTkVSQUwgQVJHVU1FTlQgUkVEVUNUSU9OLgojLS1JRiB8WHwgPCAyKiooLTQwKSwgUkVUVVJOIFggT1IgMS4KU0lOQk9SUzoKCWNtcC5sCQklZDEsJjB4M0ZGRjgwMDAKCWJndC5sCQlTUkVEVUNFWAoKU0lOU006Cgltb3YubAkJQURKTiglYTYpLCVkMQoJY21wLmwJCSVkMSwmMAoJYmd0LmIJCUNPU1RJTlkKCiMgaGVyZSwgdGhlIG9wZXJhdGlvbiBtYXkgdW5kZXJmbG93IGlmZiB0aGUgcHJlY2lzaW9uIGlzIHNnbCBvciBkYmwuCiMgZXh0ZW5kZWQgZGVub3JtcyBhcmUgaGFuZGxlZCB0aHJvdWdoIGFub3RoZXIgZW50cnkgcG9pbnQuClNJTlRJTlk6CiMJbW92LncJCSYweDAwMDAsWERDQVJFKCVhNikJIyBKVVNUIElOIENBU0UKCglmbW92LmwJCSVkMCwlZnBjcgkJIyByZXN0b3JlIHVzZXJzIHJvdW5kIG1vZGUscHJlYwoJbW92LmIJCSZGTU9WX09QLCVkMQkJIyBsYXN0IGluc3QgaXMgTU9WRQoJZm1vdi54CQlYKCVhNiksJWZwMAkJIyBsYXN0IGluc3QgLSBwb3NzaWJsZSBleGNlcHRpb24gc2V0CglicmEJCXRfY2F0Y2gKCkNPU1RJTlk6CglmbW92LnMJCSYweDNGODAwMDAwLCVmcDAJIyBmcDAgPSAxLjAKCWZtb3YubAkJJWQwLCVmcGNyCQkjIHJlc3RvcmUgdXNlcnMgcm91bmQgbW9kZSxwcmVjCglmYWRkLnMJCSYweDgwODAwMDAwLCVmcDAJIyBsYXN0IGluc3QgLSBwb3NzaWJsZSBleGNlcHRpb24gc2V0CglicmEJCXRfcGlueDIKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoJZ2xvYmFsCQlzc2luZAojLS1TSU4oWCkgPSBYIEZPUiBERU5PUk1BTElaRUQgWApzc2luZDoKCWJyYQkJdF9leHRkbnJtCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoJZ2xvYmFsCQlzY29zZAojLS1DT1MoWCkgPSAxIEZPUiBERU5PUk1BTElaRUQgWApzY29zZDoKCWZtb3YucwkJJjB4M0Y4MDAwMDAsJWZwMAkjIGZwMCA9IDEuMAoJYnJhCQl0X3BpbngyCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKCWdsb2JhbAkJc3NpbmNvcwpzc2luY29zOgojLS1TRVQgQURKTiBUTyA0Cgltb3YubAkJJjQsQURKTiglYTYpCgoJZm1vdi54CQkoJWEwKSwlZnAwCQkjIExPQUQgSU5QVVQKCWZtb3YueAkJJWZwMCxYKCVhNikKCgltb3YubAkJKCVhMCksJWQxCgltb3YudwkJNCglYTApLCVkMQoJYW5kLmwJCSYweDdGRkZGRkZGLCVkMQkJIyBDT01QQUNUSUZZIFgKCgljbXAubAkJJWQxLCYweDNGRDc4MDAwCQkjIHxYfCA+PSAyKiooLTQwKT8KCWJnZS5iCQlTQ09LMQoJYnJhLncJCVNDU00KClNDT0sxOgoJY21wLmwJCSVkMSwmMHg0MDA0QkM3RQkJIyB8WHwgPCAxNSBQST8KCWJsdC5iCQlTQ01BSU4KCWJyYS53CQlTUkVEVUNFWAoKCiMtLVRISVMgSVMgVEhFIFVTVUFMIENBU0UsIHxYfCA8PSAxNSBQSS4KIy0tVEhFIEFSR1VNRU5UIFJFRFVDVElPTiBJUyBET05FIEJZIFRBQkxFIExPT0sgVVAuClNDTUFJTjoKCWZtb3YueAkJJWZwMCwlZnAxCgoJZm11bC5kCQlUV09CWVBJKCVwYyksJWZwMQkjIFgqMi9QSQoKCWxlYQkJUElUQkwrMHgyMDAoJXBjKSwlYTEJIyBUQUJMRSBPRiBOKlBJLzIsIE4gPSAtMzIsLi4uLDMyCgoJZm1vdi5sCQklZnAxLElOVCglYTYpCQkjIENPTlZFUlQgVE8gSU5URUdFUgoKCW1vdi5sCQlJTlQoJWE2KSwlZDEKCWFzbC5sCQkmNCwlZDEKCWFkZC5sCQklZDEsJWExCQkJIyBBRERSRVNTIE9GIE4qUElCWTIsIElOIFkxLCBZMgoKCWZzdWIueAkJKCVhMSkrLCVmcDAJCSMgWC1ZMQoJZnN1Yi5zCQkoJWExKSwlZnAwCQkjIEZQMCBJUyBSID0gKFgtWTEpLVkyCgpTQ0NPTlQ6CiMtLWNvbnRpbnVhdGlvbiBwb2ludCBmcm9tIFJFRFVDRVgKCgltb3YubAkJSU5UKCVhNiksJWQxCglyb3IubAkJJjEsJWQxCgljbXAubAkJJWQxLCYwCQkJIyBEMCA8IDAgSUZGIE4gSVMgT0RECgliZ2UudwkJTkVWRU4KClNOT0REOgojLS1SRUdJU1RFUlMgU0FWRUQgU08gRkFSOiBEMCwgQTAsIEZQMi4KCWZtb3ZtLngJCSYweDA0LC0oJXNwKQkJIyBzYXZlIGZwMgoKCWZtb3YueAkJJWZwMCxSUFJJTUUoJWE2KQoJZm11bC54CQklZnAwLCVmcDAJCSMgRlAwIElTIFMgPSBSKlIKCWZtb3YuZAkJU0lOQTcoJXBjKSwlZnAxCQkjIEE3CglmbW92LmQJCUNPU0I4KCVwYyksJWZwMgkJIyBCOAoJZm11bC54CQklZnAwLCVmcDEJCSMgU0E3CglmbXVsLngJCSVmcDAsJWZwMgkJIyBTQjgKCgltb3YubAkJJWQyLC0oJXNwKQoJbW92LmwJCSVkMSwlZDIKCXJvci5sCQkmMSwlZDIKCWFuZC5sCQkmMHg4MDAwMDAwMCwlZDIKCWVvci5sCQklZDEsJWQyCglhbmQubAkJJjB4ODAwMDAwMDAsJWQyCgoJZmFkZC5kCQlTSU5BNiglcGMpLCVmcDEJCSMgQTYrU0E3CglmYWRkLmQJCUNPU0I3KCVwYyksJWZwMgkJIyBCNytTQjgKCglmbXVsLngJCSVmcDAsJWZwMQkJIyBTKEE2K1NBNykKCWVvci5sCQklZDIsUlBSSU1FKCVhNikKCW1vdi5sCQkoJXNwKSssJWQyCglmbXVsLngJCSVmcDAsJWZwMgkJIyBTKEI3K1NCOCkKCXJvci5sCQkmMSwlZDEKCWFuZC5sCQkmMHg4MDAwMDAwMCwlZDEKCW1vdi5sCQkmMHgzRjgwMDAwMCxQT1NORUcxKCVhNikKCWVvci5sCQklZDEsUE9TTkVHMSglYTYpCgoJZmFkZC5kCQlTSU5BNSglcGMpLCVmcDEJCSMgQTUrUyhBNitTQTcpCglmYWRkLmQJCUNPU0I2KCVwYyksJWZwMgkJIyBCNitTKEI3K1NCOCkKCglmbXVsLngJCSVmcDAsJWZwMQkJIyBTKEE1K1MoQTYrU0E3KSkKCWZtdWwueAkJJWZwMCwlZnAyCQkjIFMoQjYrUyhCNytTQjgpKQoJZm1vdi54CQklZnAwLFNQUklNRSglYTYpCgoJZmFkZC5kCQlTSU5BNCglcGMpLCVmcDEJCSMgQTQrUyhBNStTKEE2K1NBNykpCgllb3IubAkJJWQxLFNQUklNRSglYTYpCglmYWRkLmQJCUNPU0I1KCVwYyksJWZwMgkJIyBCNStTKEI2K1MoQjcrU0I4KSkKCglmbXVsLngJCSVmcDAsJWZwMQkJIyBTKEE0Ky4uLikKCWZtdWwueAkJJWZwMCwlZnAyCQkjIFMoQjUrLi4uKQoKCWZhZGQuZAkJU0lOQTMoJXBjKSwlZnAxCQkjIEEzK1MoQTQrLi4uKQoJZmFkZC5kCQlDT1NCNCglcGMpLCVmcDIJCSMgQjQrUyhCNSsuLi4pCgoJZm11bC54CQklZnAwLCVmcDEJCSMgUyhBMysuLi4pCglmbXVsLngJCSVmcDAsJWZwMgkJIyBTKEI0Ky4uLikKCglmYWRkLngJCVNJTkEyKCVwYyksJWZwMQkJIyBBMitTKEEzKy4uLikKCWZhZGQueAkJQ09TQjMoJXBjKSwlZnAyCQkjIEIzK1MoQjQrLi4uKQoKCWZtdWwueAkJJWZwMCwlZnAxCQkjIFMoQTIrLi4uKQoJZm11bC54CQklZnAwLCVmcDIJCSMgUyhCMysuLi4pCgoJZmFkZC54CQlTSU5BMSglcGMpLCVmcDEJCSMgQTErUyhBMisuLi4pCglmYWRkLngJCUNPU0IyKCVwYyksJWZwMgkJIyBCMitTKEIzKy4uLikKCglmbXVsLngJCSVmcDAsJWZwMQkJIyBTKEExKy4uLikKCWZtdWwueAkJJWZwMiwlZnAwCQkjIFMoQjIrLi4uKQoKCWZtdWwueAkJUlBSSU1FKCVhNiksJWZwMQkjIFInUyhBMSsuLi4pCglmYWRkLnMJCUNPU0IxKCVwYyksJWZwMAkJIyBCMStTKEIyLi4uKQoJZm11bC54CQlTUFJJTUUoJWE2KSwlZnAwCSMgUycoQjErUyhCMisuLi4pKQoKCWZtb3ZtLngJCSglc3ApKywmMHgyMAkJIyByZXN0b3JlIGZwMgoKCWZtb3YubAkJJWQwLCVmcGNyCglmYWRkLngJCVJQUklNRSglYTYpLCVmcDEJIyBDT1MoWCkKCWJzcgkJc3RvX2NvcwkJCSMgc3RvcmUgY29zaW5lIHJlc3VsdAoJZmFkZC5zCQlQT1NORUcxKCVhNiksJWZwMAkjIFNJTihYKQoJYnJhCQl0X2lueDIKCk5FVkVOOgojLS1SRUdJU1RFUlMgU0FWRUQgU08gRkFSOiBGUDIuCglmbW92bS54CQkmMHgwNCwtKCVzcCkJCSMgc2F2ZSBmcDIKCglmbW92LngJCSVmcDAsUlBSSU1FKCVhNikKCWZtdWwueAkJJWZwMCwlZnAwCQkjIEZQMCBJUyBTID0gUipSCgoJZm1vdi5kCQlDT1NCOCglcGMpLCVmcDEJCSMgQjgKCWZtb3YuZAkJU0lOQTcoJXBjKSwlZnAyCQkjIEE3CgoJZm11bC54CQklZnAwLCVmcDEJCSMgU0I4CglmbW92LngJCSVmcDAsU1BSSU1FKCVhNikKCWZtdWwueAkJJWZwMCwlZnAyCQkjIFNBNwoKCXJvci5sCQkmMSwlZDEKCWFuZC5sCQkmMHg4MDAwMDAwMCwlZDEKCglmYWRkLmQJCUNPU0I3KCVwYyksJWZwMQkJIyBCNytTQjgKCWZhZGQuZAkJU0lOQTYoJXBjKSwlZnAyCQkjIEE2K1NBNwoKCWVvci5sCQklZDEsUlBSSU1FKCVhNikKCWVvci5sCQklZDEsU1BSSU1FKCVhNikKCglmbXVsLngJCSVmcDAsJWZwMQkJIyBTKEI3K1NCOCkKCglvci5sCQkmMHgzRjgwMDAwMCwlZDEKCW1vdi5sCQklZDEsUE9TTkVHMSglYTYpCgoJZm11bC54CQklZnAwLCVmcDIJCSMgUyhBNitTQTcpCgoJZmFkZC5kCQlDT1NCNiglcGMpLCVmcDEJCSMgQjYrUyhCNytTQjgpCglmYWRkLmQJCVNJTkE1KCVwYyksJWZwMgkJIyBBNStTKEE2K1NBNykKCglmbXVsLngJCSVmcDAsJWZwMQkJIyBTKEI2K1MoQjcrU0I4KSkKCWZtdWwueAkJJWZwMCwlZnAyCQkjIFMoQTUrUyhBNitTQTcpKQoKCWZhZGQuZAkJQ09TQjUoJXBjKSwlZnAxCQkjIEI1K1MoQjYrUyhCNytTQjgpKQoJZmFkZC5kCQlTSU5BNCglcGMpLCVmcDIJCSMgQTQrUyhBNStTKEE2K1NBNykpCgoJZm11bC54CQklZnAwLCVmcDEJCSMgUyhCNSsuLi4pCglmbXVsLngJCSVmcDAsJWZwMgkJIyBTKEE0Ky4uLikKCglmYWRkLmQJCUNPU0I0KCVwYyksJWZwMQkJIyBCNCtTKEI1Ky4uLikKCWZhZGQuZAkJU0lOQTMoJXBjKSwlZnAyCQkjIEEzK1MoQTQrLi4uKQoKCWZtdWwueAkJJWZwMCwlZnAxCQkjIFMoQjQrLi4uKQoJZm11bC54CQklZnAwLCVmcDIJCSMgUyhBMysuLi4pCgoJZmFkZC54CQlDT1NCMyglcGMpLCVmcDEJCSMgQjMrUyhCNCsuLi4pCglmYWRkLngJCVNJTkEyKCVwYyksJWZwMgkJIyBBMitTKEEzKy4uLikKCglmbXVsLngJCSVmcDAsJWZwMQkJIyBTKEIzKy4uLikKCWZtdWwueAkJJWZwMCwlZnAyCQkjIFMoQTIrLi4uKQoKCWZhZGQueAkJQ09TQjIoJXBjKSwlZnAxCQkjIEIyK1MoQjMrLi4uKQoJZmFkZC54CQlTSU5BMSglcGMpLCVmcDIJCSMgQTErUyhBMisuLi4pCgoJZm11bC54CQklZnAwLCVmcDEJCSMgUyhCMisuLi4pCglmbXVsLngJCSVmcDIsJWZwMAkJIyBzKGExKy4uLikKCgoJZmFkZC5zCQlDT1NCMSglcGMpLCVmcDEJCSMgQjErUyhCMi4uLikKCWZtdWwueAkJUlBSSU1FKCVhNiksJWZwMAkjIFInUyhBMSsuLi4pCglmbXVsLngJCVNQUklNRSglYTYpLCVmcDEJIyBTJyhCMStTKEIyKy4uLikpCgoJZm1vdm0ueAkJKCVzcCkrLCYweDIwCQkjIHJlc3RvcmUgZnAyCgoJZm1vdi5sCQklZDAsJWZwY3IKCWZhZGQucwkJUE9TTkVHMSglYTYpLCVmcDEJIyBDT1MoWCkKCWJzcgkJc3RvX2NvcwkJCSMgc3RvcmUgY29zaW5lIHJlc3VsdAoJZmFkZC54CQlSUFJJTUUoJWE2KSwlZnAwCSMgU0lOKFgpCglicmEJCXRfaW54MgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpTQ0JPUlM6CgljbXAubAkJJWQxLCYweDNGRkY4MDAwCgliZ3QudwkJU1JFRFVDRVgKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKU0NTTToKIwltb3YudwkJJjB4MDAwMCxYRENBUkUoJWE2KQoJZm1vdi5zCQkmMHgzRjgwMDAwMCwlZnAxCgoJZm1vdi5sCQklZDAsJWZwY3IKCWZzdWIucwkJJjB4MDA4MDAwMDAsJWZwMQoJYnNyCQlzdG9fY29zCQkJIyBzdG9yZSBjb3NpbmUgcmVzdWx0CglmbW92LmwJCSVmcGNyLCVkMAkJIyBkMCBtdXN0IGhhdmUgZnBjcix0b28KCW1vdi5iCQkmRk1PVl9PUCwlZDEJCSMgbGFzdCBpbnN0IGlzIE1PVkUKCWZtb3YueAkJWCglYTYpLCVmcDAKCWJyYQkJdF9jYXRjaAoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKCWdsb2JhbAkJc3NpbmNvc2QKIy0tU0lOIEFORCBDT1MgT0YgWCBGT1IgREVOT1JNQUxJWkVEIFgKc3NpbmNvc2Q6Cgltb3YubAkJJWQwLC0oJXNwKQkJIyBzYXZlIGQwCglmbW92LnMJCSYweDNGODAwMDAwLCVmcDEKCWJzcgkJc3RvX2NvcwkJCSMgc3RvcmUgY29zaW5lIHJlc3VsdAoJbW92LmwJCSglc3ApKywlZDAJCSMgcmVzdG9yZSBkMAoJYnJhCQl0X2V4dGRucm0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojLS1XSEVOIFJFRFVDRVggSVMgVVNFRCwgVEhFIENPREUgV0lMTCBJTkVWSVRBQkxZIEJFIFNMT1cuCiMtLVRISVMgUkVEVUNUSU9OIE1FVEhPRCwgSE9XRVZFUiwgSVMgTVVDSCBGQVNURVIgVEhBTiBVU0lORwojLS1USEUgUkVNQUlOREVSIElOU1RSVUNUSU9OIFdISUNIIElTIE5PVyBJTiBTT0ZUV0FSRS4KU1JFRFVDRVg6CglmbW92bS54CQkmMHgzYywtKCVzcCkJCSMgc2F2ZSB7ZnAyLWZwNX0KCW1vdi5sCQklZDIsLSglc3ApCQkjIHNhdmUgZDIKCWZtb3YucwkJJjB4MDAwMDAwMDAsJWZwMQkjIGZwMSA9IDAKCiMtLUlmIGNvbXBhY3QgZm9ybSBvZiBhYnMoYXJnKSBpbiBkMD0kN2ZmZWZmZmYsIGFyZ3VtZW50IGlzIHNvIGxhcmdlIHRoYXQKIy0tdGhlcmUgaXMgYSBkYW5nZXIgb2YgdW53YW50ZWQgb3ZlcmZsb3cgaW4gZmlyc3QgTE9PUCBpdGVyYXRpb24uICBJbiB0aGlzCiMtLWNhc2UsIHJlZHVjZSBhcmd1bWVudCBieSBvbmUgcmVtYWluZGVyIHN0ZXAgdG8gbWFrZSBzdWJzZXF1ZW50IHJlZHVjdGlvbgojLS1zYWZlLgoJY21wLmwJCSVkMSwmMHg3ZmZlZmZmZgkJIyBpcyBhcmcgZGFuZ2Vyb3VzbHkgbGFyZ2U/CglibmUuYgkJU0xPT1AJCQkjIG5vCgojIHllczsgY3JlYXRlIDIqKjE2MzgzKlBJLzIKCW1vdi53CQkmMHg3ZmZlLEZQX1NDUjBfRVgoJWE2KQoJbW92LmwJCSYweGM5MGZkYWEyLEZQX1NDUjBfSEkoJWE2KQoJY2xyLmwJCUZQX1NDUjBfTE8oJWE2KQoKIyBjcmVhdGUgbG93IGhhbGYgb2YgMioqMTYzODMqUEkvMiBhdCBGUF9TQ1IxCgltb3YudwkJJjB4N2ZkYyxGUF9TQ1IxX0VYKCVhNikKCW1vdi5sCQkmMHg4NWEzMDhkMyxGUF9TQ1IxX0hJKCVhNikKCWNsci5sCQlGUF9TQ1IxX0xPKCVhNikKCglmdGVzdC54CQklZnAwCQkJIyB0ZXN0IHNpZ24gb2YgYXJndW1lbnQKCWZibHQudwkJc3JlZF9uZWcKCglvci5iCQkmMHg4MCxGUF9TQ1IwX0VYKCVhNikJIyBwb3NpdGl2ZSBhcmcKCW9yLmIJCSYweDgwLEZQX1NDUjFfRVgoJWE2KQpzcmVkX25lZzoKCWZhZGQueAkJRlBfU0NSMCglYTYpLCVmcDAJIyBoaWdoIHBhcnQgb2YgcmVkdWN0aW9uIGlzIGV4YWN0CglmbW92LngJCSVmcDAsJWZwMQkJIyBzYXZlIGhpZ2ggcmVzdWx0IGluIGZwMQoJZmFkZC54CQlGUF9TQ1IxKCVhNiksJWZwMAkjIGxvdyBwYXJ0IG9mIHJlZHVjdGlvbgoJZnN1Yi54CQklZnAwLCVmcDEJCSMgZGV0ZXJtaW5lIGxvdyBjb21wb25lbnQgb2YgcmVzdWx0CglmYWRkLngJCUZQX1NDUjEoJWE2KSwlZnAxCSMgZnAwL2ZwMSBhcmUgcmVkdWNlZCBhcmd1bWVudC4KCiMtLU9OIEVOVFJZLCBGUDAgSVMgWCwgT04gUkVUVVJOLCBGUDAgSVMgWCBSRU0gUEkvMiwgfFh8IDw9IFBJLzQuCiMtLWludGVnZXIgcXVvdGllbnQgd2lsbCBiZSBzdG9yZWQgaW4gTgojLS1JbnRlcm1lZGl0YXRlIHJlbWFpbmRlciBpcyA2Ni1iaXQgbG9uZzsgKFIscikgaW4gKEZQMCxGUDEpClNMT09QOgoJZm1vdi54CQklZnAwLElOQVJHKCVhNikJCSMgKy0yKipLICogRiwgMSA8PSBGIDwgMgoJbW92LncJCUlOQVJHKCVhNiksJWQxCgltb3YubAkJJWQxLCVhMQkJCSMgc2F2ZSBhIGNvcHkgb2YgRDAKCWFuZC5sCQkmMHgwMDAwN0ZGRiwlZDEKCXN1Yi5sCQkmMHgwMDAwM0ZGRiwlZDEJCSMgZDAgPSBLCgljbXAubAkJJWQxLCYyOAoJYmxlLmIJCVNMQVNUTE9PUApTQ09OVExPT1A6CglzdWIubAkJJjI3LCVkMQkJCSMgZDAgPSBMIDo9IEstMjcKCW1vdi5iCQkmMCxFTkRGTEFHKCVhNikKCWJyYS5iCQlTV09SSwpTTEFTVExPT1A6CgljbHIubAkJJWQxCQkJIyBkMCA9IEwgOj0gMAoJbW92LmIJCSYxLEVOREZMQUcoJWE2KQoKU1dPUks6CiMtLUZJTkQgVEhFIFJFTUFJTkRFUiBPRiAoUixyKSBXLlIuVC4JMioqTCAqIChQSS8yKS4gTCBJUyBTTyBDSE9TRU4KIy0tVEhBVAlJTlQoIFggKiAoMi9QSSkgLyAyKiooTCkgKSA8IDIqKjI5LgoKIy0tQ1JFQVRFIDIqKigtTCkgKiAoMi9QSSksIFNJR04oSU5BUkcpKjIqKig2MyksCiMtLTIqKkwgKiAoUElieTJfMSksIDIqKkwgKiAoUElieTJfMikKCgltb3YubAkJJjB4MDAwMDNGRkUsJWQyCQkjIEJJQVNFRCBFWFAgT0YgMi9QSQoJc3ViLmwJCSVkMSwlZDIJCQkjIEJJQVNFRCBFWFAgT0YgMioqKC1MKSooMi9QSSkKCgltb3YubAkJJjB4QTJGOTgzNkUsRlBfU0NSMF9ISSglYTYpCgltb3YubAkJJjB4NEU0NDE1MkEsRlBfU0NSMF9MTyglYTYpCgltb3YudwkJJWQyLEZQX1NDUjBfRVgoJWE2KQkjIEZQX1NDUjAgPSAyKiooLUwpKigyL1BJKQoKCWZtb3YueAkJJWZwMCwlZnAyCglmbXVsLngJCUZQX1NDUjAoJWE2KSwlZnAyCSMgZnAyID0gWCAqIDIqKigtTCkqKDIvUEkpCgojLS1XRSBNVVNUIE5PVyBGSU5EIElOVChGUDIpLiBTSU5DRSBXRSBORUVEIFRISVMgVkFMVUUgSU4KIy0tRkxPQVRJTkcgUE9JTlQgRk9STUFULCBUSEUgVFdPIEZNT1ZFJ1MJRk1PVkUuTCBGUCA8LS0+IE4KIy0tV0lMTCBCRSBUT08gSU5FRkZJQ0lFTlQuIFRIRSBXQVkgQVJPVU5EIElUIElTIFRIQVQKIy0tKFNJR04oSU5BUkcpKjIqKjYzCSsJRlAyKSAtIFNJR04oSU5BUkcpKjIqKjYzIFdJTEwgR0lWRQojLS1VUyBUSEUgREVTSVJFRCBWQUxVRSBJTiBGTE9BVElORyBQT0lOVC4KCW1vdi5sCQklYTEsJWQyCglzd2FwCQklZDIKCWFuZC5sCQkmMHg4MDAwMDAwMCwlZDIKCW9yLmwJCSYweDVGMDAwMDAwLCVkMgkJIyBkMiA9IFNJR04oSU5BUkcpKjIqKjYzIElOIFNHTAoJbW92LmwJCSVkMixUV09UTzYzKCVhNikKCWZhZGQucwkJVFdPVE82MyglYTYpLCVmcDIJIyBUSEUgRlJBQ1RJT05BTCBQQVJUIE9GIEZQMSBJUyBST1VOREVECglmc3ViLnMJCVRXT1RPNjMoJWE2KSwlZnAyCSMgZnAyID0gTgojCWZpbnQueAkJJWZwMgoKIy0tQ1JFQVRJTkcgMioqKEwpKlBpYnkyXzEgYW5kIDIqKihMKSpQaWJ5Ml8yCgltb3YubAkJJWQxLCVkMgkJCSMgZDIgPSBMCgoJYWRkLmwJCSYweDAwMDAzRkZGLCVkMgkJIyBCSUFTRUQgRVhQIE9GIDIqKkwgKiAoUEkvMikKCW1vdi53CQklZDIsRlBfU0NSMF9FWCglYTYpCgltb3YubAkJJjB4QzkwRkRBQTIsRlBfU0NSMF9ISSglYTYpCgljbHIubAkJRlBfU0NSMF9MTyglYTYpCQkjIEZQX1NDUjAgPSAyKiooTCkgKiBQaWJ5Ml8xCgoJYWRkLmwJCSYweDAwMDAzRkRELCVkMQoJbW92LncJCSVkMSxGUF9TQ1IxX0VYKCVhNikKCW1vdi5sCQkmMHg4NUEzMDhEMyxGUF9TQ1IxX0hJKCVhNikKCWNsci5sCQlGUF9TQ1IxX0xPKCVhNikJCSMgRlBfU0NSMSA9IDIqKihMKSAqIFBpYnkyXzIKCgltb3YuYgkJRU5ERkxBRyglYTYpLCVkMQoKIy0tV2UgYXJlIG5vdyByZWFkeSB0byBwZXJmb3JtIChSK3IpIC0gTipQMSAtIE4qUDIsIFAxID0gMioqKEwpICogUGlieTJfMSBhbmQKIy0tUDIgPSAyKiooTCkgKiBQaWJ5Ml8yCglmbW92LngJCSVmcDIsJWZwNAkJIyBmcDQgPSBOCglmbXVsLngJCUZQX1NDUjAoJWE2KSwlZnA0CSMgZnA0ID0gVyA9IE4qUDEKCWZtb3YueAkJJWZwMiwlZnA1CQkjIGZwNSA9IE4KCWZtdWwueAkJRlBfU0NSMSglYTYpLCVmcDUJIyBmcDUgPSB3ID0gTipQMgoJZm1vdi54CQklZnA0LCVmcDMJCSMgZnAzID0gVyA9IE4qUDEKCiMtLXdlIHdhbnQgUCtwID0gVyt3ICBidXQgIHxwfCA8PSBoYWxmIHVscCBvZiBQCiMtLVRoZW4sIHdlIG5lZWQgdG8gY29tcHV0ZSAgQSA6PSBSLVAgICBhbmQgIGEgOj0gci1wCglmYWRkLngJCSVmcDUsJWZwMwkJIyBmcDMgPSBQCglmc3ViLngJCSVmcDMsJWZwNAkJIyBmcDQgPSBXLVAKCglmc3ViLngJCSVmcDMsJWZwMAkJIyBmcDAgPSBBIDo9IFIgLSBQCglmYWRkLngJCSVmcDUsJWZwNAkJIyBmcDQgPSBwID0gKFctUCkrdwoKCWZtb3YueAkJJWZwMCwlZnAzCQkjIGZwMyA9IEEKCWZzdWIueAkJJWZwNCwlZnAxCQkjIGZwMSA9IGEgOj0gciAtIHAKCiMtLU5vdyB3ZSBuZWVkIHRvIG5vcm1hbGl6ZSAoQSxhKSB0byAgIm5ldyAoUixyKSIgd2hlcmUgUityID0gQSthIGJ1dAojLS18cnwgPD0gaGFsZiB1bHAgb2YgUi4KCWZhZGQueAkJJWZwMSwlZnAwCQkjIGZwMCA9IFIgOj0gQSthCiMtLU5vIG5lZWQgdG8gY2FsY3VsYXRlIHIgaWYgdGhpcyBpcyB0aGUgbGFzdCBsb29wCgljbXAuYgkJJWQxLCYwCgliZ3QudwkJU1JFU1RPUkUKCiMtLU5lZWQgdG8gY2FsY3VsYXRlIHIKCWZzdWIueAkJJWZwMCwlZnAzCQkjIGZwMyA9IEEtUgoJZmFkZC54CQklZnAzLCVmcDEJCSMgZnAxID0gciA6PSAoQS1SKSthCglicmEudwkJU0xPT1AKClNSRVNUT1JFOgoJZm1vdi5sCQklZnAyLElOVCglYTYpCgltb3YubAkJKCVzcCkrLCVkMgkJIyByZXN0b3JlIGQyCglmbW92bS54CQkoJXNwKSssJjB4M2MJCSMgcmVzdG9yZSB7ZnAyLWZwNX0KCgltb3YubAkJQURKTiglYTYpLCVkMQoJY21wLmwJCSVkMSwmNAoKCWJsdC53CQlTSU5DT05UCglicmEudwkJU0NDT05UCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgc3RhbigpOiAgY29tcHV0ZXMgdGhlIHRhbmdlbnQgb2YgYSBub3JtYWxpemVkIGlucHV0CQkJIwojIHN0YW5kKCk6IGNvbXB1dGVzIHRoZSB0YW5nZW50IG9mIGEgZGVub3JtYWxpemVkIGlucHV0CQkJIwojCQkJCQkJCQkJIwojIElOUFVUICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAjCiMJYTAgPSBwb2ludGVyIHRvIGV4dGVuZGVkIHByZWNpc2lvbiBpbnB1dAkJCSMKIwlkMCA9IHJvdW5kIHByZWNpc2lvbixtb2RlCQkJCQkjCiMJCQkJCQkJCQkjCiMgT1VUUFVUICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICMKIwlmcDAgPSB0YW4oWCkJCQkJCQkJIwojCQkJCQkJCQkJIwojIEFDQ1VSQUNZIGFuZCBNT05PVE9OSUNJVFkgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAjCiMJVGhlIHJldHVybmVkIHJlc3VsdCBpcyB3aXRoaW4gMyB1bHAgaW4gNjQgc2lnbmlmaWNhbnQgYml0LCBpLmUuICMKIwl3aXRoaW4gMC41MDAxIHVscCB0byA1MyBiaXRzIGlmIHRoZSByZXN1bHQgaXMgc3Vic2VxdWVudGx5CSMKIwlyb3VuZGVkIHRvIGRvdWJsZSBwcmVjaXNpb24uIFRoZSByZXN1bHQgaXMgcHJvdmFibHkgbW9ub3RvbmljCSMKIwlpbiBkb3VibGUgcHJlY2lzaW9uLgkJCQkJCSMKIwkJCQkJCQkJCSMKIyBBTEdPUklUSE0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogIwojCQkJCQkJCQkJIwojCTEuIElmIHxYfCA+PSAxNVBpIG9yIHxYfCA8IDIqKigtNDApLCBnbyB0byA2LgkJCSMKIwkJCQkJCQkJCSMKIwkyLiBEZWNvbXBvc2UgWCBhcyBYID0gTihQaS8yKSArIHIgd2hlcmUgfHJ8IDw9IFBpLzQuIExldAkjCiMJCWsgPSBOIG1vZCAyLCBzbyBpbiBwYXJ0aWN1bGFyLCBrID0gMCBvciAxLgkJIwojCQkJCQkJCQkJIwojCTMuIElmIGsgaXMgb2RkLCBnbyB0byA1LgkJCQkJIwojCQkJCQkJCQkJIwojCTQuIChrIGlzIGV2ZW4pIFRhbihYKSA9IHRhbihyKSBhbmQgdGFuKHIpIGlzIGFwcHJveGltYXRlZCBieSBhCSMKIwkJcmF0aW9uYWwgZnVuY3Rpb24gVS9WIHdoZXJlCQkJCSMKIwkJVSA9IHIgKyByKnMqKFAxICsgcyooUDIgKyBzKlAzKSksIGFuZAkJCSMKIwkJViA9IDEgKyBzKihRMSArIHMqKFEyICsgcyooUTMgKyBzKlE0KSkpLCAgcyA9IHIqci4JIwojCQlFeGl0LgkJCQkJCQkjCiMJCQkJCQkJCQkjCiMJNC4gKGsgaXMgb2RkKSBUYW4oWCkgPSAtY290KHIpLiBTaW5jZSB0YW4ocikgaXMgYXBwcm94aW1hdGVkIGJ5ICMKIwkJYSByYXRpb25hbCBmdW5jdGlvbiBVL1Ygd2hlcmUJCQkJIwojCQlVID0gciArIHIqcyooUDEgKyBzKihQMiArIHMqUDMpKSwgYW5kCQkJIwojCQlWID0gMSArIHMqKFExICsgcyooUTIgKyBzKihRMyArIHMqUTQpKSksIHMgPSByKnIsCSMKIwkJLUNvdChyKSA9IC1WL1UuIEV4aXQuCQkJCQkjCiMJCQkJCQkJCQkjCiMJNi4gSWYgfFh8ID4gMSwgZ28gdG8gOC4JCQkJCQkjCiMJCQkJCQkJCQkjCiMJNy4gKHxYfDwyKiooLTQwKSkgVGFuKFgpID0gWC4gRXhpdC4JCQkJIwojCQkJCQkJCQkJIwojCTguIE92ZXJ3cml0ZSBYIGJ5IFggOj0gWCByZW0gMlBpLiBOb3cgdGhhdCB8WHwgPD0gUGksIGdvIGJhY2sJIwojCQl0byAyLgkJCQkJCQkjCiMJCQkJCQkJCQkjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKClRBTlE0OgoJbG9uZwkJMHgzRUEwQjc1OSwweEY1MEY4Njg4ClRBTlAzOgoJbG9uZwkJMHhCRUYyQkFBNSwweEE4OTI0RjA0CgpUQU5RMzoKCWxvbmcJCTB4QkYzNDZGNTksMHhCMzlCQTY1RiwweDAwMDAwMDAwLDB4MDAwMDAwMDAKClRBTlAyOgoJbG9uZwkJMHgzRkY2MDAwMCwweEUwNzNEM0ZDLDB4MTk5QzRBMDAsMHgwMDAwMDAwMAoKVEFOUTI6Cglsb25nCQkweDNGRjkwMDAwLDB4RDIzQ0Q2ODQsMHgxNUQ5NUZBMSwweDAwMDAwMDAwCgpUQU5QMToKCWxvbmcJCTB4QkZGQzAwMDAsMHg4ODk1QTZDNSwweEZCNDIzQkNBLDB4MDAwMDAwMDAKClRBTlExOgoJbG9uZwkJMHhCRkZEMDAwMCwweEVFRjU3RTBELDB4QTg0QkM4Q0UsMHgwMDAwMDAwMAoKSU5WVFdPUEk6Cglsb25nCQkweDNGRkMwMDAwLDB4QTJGOTgzNkUsMHg0RTQ0MTUyQSwweDAwMDAwMDAwCgpUV09QSTE6Cglsb25nCQkweDQwMDEwMDAwLDB4QzkwRkRBQTIsMHgwMDAwMDAwMCwweDAwMDAwMDAwClRXT1BJMjoKCWxvbmcJCTB4M0ZERjAwMDAsMHg4NUEzMDhENCwweDAwMDAwMDAwLDB4MDAwMDAwMDAKCiMtLU4qUEkvMiwgLTMyIDw9IE4gPD0gMzIsIElOIEEgTEVBRElORyBURVJNIElOIEVYVC4gQU5EIFRSQUlMSU5HCiMtLVRFUk0gSU4gU0dMLiBOT1RFIFRIQVQgUEkgSVMgNjQtQklUIExPTkcsIFRIVVMgTipQSS8yIElTIEFUCiMtLU1PU1QgNjkgQklUUyBMT05HLgojCWdsb2JhbAkJUElUQkwKUElUQkw6Cglsb25nCQkweEMwMDQwMDAwLDB4QzkwRkRBQTIsMHgyMTY4QzIzNSwweDIxODAwMDAwCglsb25nCQkweEMwMDQwMDAwLDB4QzJDNzVCQ0QsMHgxMDVEN0MyMywweEEwRDAwMDAwCglsb25nCQkweEMwMDQwMDAwLDB4QkM3RURDRjcsMHhGRjUyMzYxMSwweEExRTgwMDAwCglsb25nCQkweEMwMDQwMDAwLDB4QjYzNjVFMjIsMHhFRTQ2RjAwMCwweDIxNDgwMDAwCglsb25nCQkweEMwMDQwMDAwLDB4QUZFRERGNEQsMHhERDNCQTlFRSwweEExMjAwMDAwCglsb25nCQkweEMwMDQwMDAwLDB4QTlBNTYwNzgsMHhDQzMwNjNERCwweDIxRkMwMDAwCglsb25nCQkweEMwMDQwMDAwLDB4QTM1Q0UxQTMsMHhCQjI1MURDQiwweDIxMTAwMDAwCglsb25nCQkweEMwMDQwMDAwLDB4OUQxNDYyQ0UsMHhBQTE5RDdCOSwweEExNTgwMDAwCglsb25nCQkweEMwMDQwMDAwLDB4OTZDQkUzRjksMHg5OTBFOTFBOCwweDIxRTAwMDAwCglsb25nCQkweEMwMDQwMDAwLDB4OTA4MzY1MjQsMHg4ODAzNEI5NiwweDIwQjAwMDAwCglsb25nCQkweEMwMDQwMDAwLDB4OEEzQUU2NEYsMHg3NkY4MDU4NCwweEExODgwMDAwCglsb25nCQkweEMwMDQwMDAwLDB4ODNGMjY3N0EsMHg2NUVDQkY3MywweDIxQzQwMDAwCglsb25nCQkweEMwMDMwMDAwLDB4RkI1M0QxNEEsMHhBOUMyRjJDMiwweDIwMDAwMDAwCglsb25nCQkweEMwMDMwMDAwLDB4RUVDMkQzQTAsMHg4N0FDNjY5RiwweDIxMzgwMDAwCglsb25nCQkweEMwMDMwMDAwLDB4RTIzMUQ1RjYsMHg2NTk1REE3QiwweEExMzAwMDAwCglsb25nCQkweEMwMDMwMDAwLDB4RDVBMEQ4NEMsMHg0MzdGNEU1OCwweDlGQzAwMDAwCglsb25nCQkweEMwMDMwMDAwLDB4QzkwRkRBQTIsMHgyMTY4QzIzNSwweDIxMDAwMDAwCglsb25nCQkweEMwMDMwMDAwLDB4QkM3RURDRjcsMHhGRjUyMzYxMSwweEExNjgwMDAwCglsb25nCQkweEMwMDMwMDAwLDB4QUZFRERGNEQsMHhERDNCQTlFRSwweEEwQTAwMDAwCglsb25nCQkweEMwMDMwMDAwLDB4QTM1Q0UxQTMsMHhCQjI1MURDQiwweDIwOTAwMDAwCglsb25nCQkweEMwMDMwMDAwLDB4OTZDQkUzRjksMHg5OTBFOTFBOCwweDIxNjAwMDAwCglsb25nCQkweEMwMDMwMDAwLDB4OEEzQUU2NEYsMHg3NkY4MDU4NCwweEExMDgwMDAwCglsb25nCQkweEMwMDIwMDAwLDB4RkI1M0QxNEEsMHhBOUMyRjJDMiwweDFGODAwMDAwCglsb25nCQkweEMwMDIwMDAwLDB4RTIzMUQ1RjYsMHg2NTk1REE3QiwweEEwQjAwMDAwCglsb25nCQkweEMwMDIwMDAwLDB4QzkwRkRBQTIsMHgyMTY4QzIzNSwweDIwODAwMDAwCglsb25nCQkweEMwMDIwMDAwLDB4QUZFRERGNEQsMHhERDNCQTlFRSwweEEwMjAwMDAwCglsb25nCQkweEMwMDIwMDAwLDB4OTZDQkUzRjksMHg5OTBFOTFBOCwweDIwRTAwMDAwCglsb25nCQkweEMwMDEwMDAwLDB4RkI1M0QxNEEsMHhBOUMyRjJDMiwweDFGMDAwMDAwCglsb25nCQkweEMwMDEwMDAwLDB4QzkwRkRBQTIsMHgyMTY4QzIzNSwweDIwMDAwMDAwCglsb25nCQkweEMwMDEwMDAwLDB4OTZDQkUzRjksMHg5OTBFOTFBOCwweDIwNjAwMDAwCglsb25nCQkweEMwMDAwMDAwLDB4QzkwRkRBQTIsMHgyMTY4QzIzNSwweDFGODAwMDAwCglsb25nCQkweEJGRkYwMDAwLDB4QzkwRkRBQTIsMHgyMTY4QzIzNSwweDFGMDAwMDAwCglsb25nCQkweDAwMDAwMDAwLDB4MDAwMDAwMDAsMHgwMDAwMDAwMCwweDAwMDAwMDAwCglsb25nCQkweDNGRkYwMDAwLDB4QzkwRkRBQTIsMHgyMTY4QzIzNSwweDlGMDAwMDAwCglsb25nCQkweDQwMDAwMDAwLDB4QzkwRkRBQTIsMHgyMTY4QzIzNSwweDlGODAwMDAwCglsb25nCQkweDQwMDEwMDAwLDB4OTZDQkUzRjksMHg5OTBFOTFBOCwweEEwNjAwMDAwCglsb25nCQkweDQwMDEwMDAwLDB4QzkwRkRBQTIsMHgyMTY4QzIzNSwweEEwMDAwMDAwCglsb25nCQkweDQwMDEwMDAwLDB4RkI1M0QxNEEsMHhBOUMyRjJDMiwweDlGMDAwMDAwCglsb25nCQkweDQwMDIwMDAwLDB4OTZDQkUzRjksMHg5OTBFOTFBOCwweEEwRTAwMDAwCglsb25nCQkweDQwMDIwMDAwLDB4QUZFRERGNEQsMHhERDNCQTlFRSwweDIwMjAwMDAwCglsb25nCQkweDQwMDIwMDAwLDB4QzkwRkRBQTIsMHgyMTY4QzIzNSwweEEwODAwMDAwCglsb25nCQkweDQwMDIwMDAwLDB4RTIzMUQ1RjYsMHg2NTk1REE3QiwweDIwQjAwMDAwCglsb25nCQkweDQwMDIwMDAwLDB4RkI1M0QxNEEsMHhBOUMyRjJDMiwweDlGODAwMDAwCglsb25nCQkweDQwMDMwMDAwLDB4OEEzQUU2NEYsMHg3NkY4MDU4NCwweDIxMDgwMDAwCglsb25nCQkweDQwMDMwMDAwLDB4OTZDQkUzRjksMHg5OTBFOTFBOCwweEExNjAwMDAwCglsb25nCQkweDQwMDMwMDAwLDB4QTM1Q0UxQTMsMHhCQjI1MURDQiwweEEwOTAwMDAwCglsb25nCQkweDQwMDMwMDAwLDB4QUZFRERGNEQsMHhERDNCQTlFRSwweDIwQTAwMDAwCglsb25nCQkweDQwMDMwMDAwLDB4QkM3RURDRjcsMHhGRjUyMzYxMSwweDIxNjgwMDAwCglsb25nCQkweDQwMDMwMDAwLDB4QzkwRkRBQTIsMHgyMTY4QzIzNSwweEExMDAwMDAwCglsb25nCQkweDQwMDMwMDAwLDB4RDVBMEQ4NEMsMHg0MzdGNEU1OCwweDFGQzAwMDAwCglsb25nCQkweDQwMDMwMDAwLDB4RTIzMUQ1RjYsMHg2NTk1REE3QiwweDIxMzAwMDAwCglsb25nCQkweDQwMDMwMDAwLDB4RUVDMkQzQTAsMHg4N0FDNjY5RiwweEExMzgwMDAwCglsb25nCQkweDQwMDMwMDAwLDB4RkI1M0QxNEEsMHhBOUMyRjJDMiwweEEwMDAwMDAwCglsb25nCQkweDQwMDQwMDAwLDB4ODNGMjY3N0EsMHg2NUVDQkY3MywweEExQzQwMDAwCglsb25nCQkweDQwMDQwMDAwLDB4OEEzQUU2NEYsMHg3NkY4MDU4NCwweDIxODgwMDAwCglsb25nCQkweDQwMDQwMDAwLDB4OTA4MzY1MjQsMHg4ODAzNEI5NiwweEEwQjAwMDAwCglsb25nCQkweDQwMDQwMDAwLDB4OTZDQkUzRjksMHg5OTBFOTFBOCwweEExRTAwMDAwCglsb25nCQkweDQwMDQwMDAwLDB4OUQxNDYyQ0UsMHhBQTE5RDdCOSwweDIxNTgwMDAwCglsb25nCQkweDQwMDQwMDAwLDB4QTM1Q0UxQTMsMHhCQjI1MURDQiwweEExMTAwMDAwCglsb25nCQkweDQwMDQwMDAwLDB4QTlBNTYwNzgsMHhDQzMwNjNERCwweEExRkMwMDAwCglsb25nCQkweDQwMDQwMDAwLDB4QUZFRERGNEQsMHhERDNCQTlFRSwweDIxMjAwMDAwCglsb25nCQkweDQwMDQwMDAwLDB4QjYzNjVFMjIsMHhFRTQ2RjAwMCwweEExNDgwMDAwCglsb25nCQkweDQwMDQwMDAwLDB4QkM3RURDRjcsMHhGRjUyMzYxMSwweDIxRTgwMDAwCglsb25nCQkweDQwMDQwMDAwLDB4QzJDNzVCQ0QsMHgxMDVEN0MyMywweDIwRDAwMDAwCglsb25nCQkweDQwMDQwMDAwLDB4QzkwRkRBQTIsMHgyMTY4QzIzNSwweEExODAwMDAwCgoJc2V0CQlJTkFSRyxGUF9TQ1IwCgoJc2V0CQlUV09UTzYzLExfU0NSMQoJc2V0CQlJTlQsTF9TQ1IxCglzZXQJCUVOREZMQUcsTF9TQ1IyCgoJZ2xvYmFsCQlzdGFuCnN0YW46CglmbW92LngJCSglYTApLCVmcDAJCSMgTE9BRCBJTlBVVAoKCW1vdi5sCQkoJWEwKSwlZDEKCW1vdi53CQk0KCVhMCksJWQxCglhbmQubAkJJjB4N0ZGRkZGRkYsJWQxCgoJY21wLmwJCSVkMSwmMHgzRkQ3ODAwMAkJIyB8WHwgPj0gMioqKC00MCk/CgliZ2UuYgkJVEFOT0sxCglicmEudwkJVEFOU00KVEFOT0sxOgoJY21wLmwJCSVkMSwmMHg0MDA0QkM3RQkJIyB8WHwgPCAxNSBQST8KCWJsdC5iCQlUQU5NQUlOCglicmEudwkJUkVEVUNFWAoKVEFOTUFJTjoKIy0tVEhJUyBJUyBUSEUgVVNVQUwgQ0FTRSwgfFh8IDw9IDE1IFBJLgojLS1USEUgQVJHVU1FTlQgUkVEVUNUSU9OIElTIERPTkUgQlkgVEFCTEUgTE9PSyBVUC4KCWZtb3YueAkJJWZwMCwlZnAxCglmbXVsLmQJCVRXT0JZUEkoJXBjKSwlZnAxCSMgWCoyL1BJCgoJbGVhLmwJCVBJVEJMKzB4MjAwKCVwYyksJWExCSMgVEFCTEUgT0YgTipQSS8yLCBOID0gLTMyLC4uLiwzMgoKCWZtb3YubAkJJWZwMSwlZDEJCSMgQ09OVkVSVCBUTyBJTlRFR0VSCgoJYXNsLmwJCSY0LCVkMQoJYWRkLmwJCSVkMSwlYTEJCQkjIEFERFJFU1MgTipQSUJZMiBJTiBZMSwgWTIKCglmc3ViLngJCSglYTEpKywlZnAwCQkjIFgtWTEKCglmc3ViLnMJCSglYTEpLCVmcDAJCSMgRlAwIElTIFIgPSAoWC1ZMSktWTIKCglyb3IubAkJJjUsJWQxCglhbmQubAkJJjB4ODAwMDAwMDAsJWQxCQkjIEQwIFdBUyBPREQgSUZGIEQwIDwgMAoKVEFOQ09OVDoKCWZtb3ZtLngJCSYweDBjLC0oJXNwKQkJIyBzYXZlIGZwMixmcDMKCgljbXAubAkJJWQxLCYwCglibHQudwkJTk9ERAoKCWZtb3YueAkJJWZwMCwlZnAxCglmbXVsLngJCSVmcDEsJWZwMQkJIyBTID0gUipSCgoJZm1vdi5kCQlUQU5RNCglcGMpLCVmcDMKCWZtb3YuZAkJVEFOUDMoJXBjKSwlZnAyCgoJZm11bC54CQklZnAxLCVmcDMJCSMgU1E0CglmbXVsLngJCSVmcDEsJWZwMgkJIyBTUDMKCglmYWRkLmQJCVRBTlEzKCVwYyksJWZwMwkJIyBRMytTUTQKCWZhZGQueAkJVEFOUDIoJXBjKSwlZnAyCQkjIFAyK1NQMwoKCWZtdWwueAkJJWZwMSwlZnAzCQkjIFMoUTMrU1E0KQoJZm11bC54CQklZnAxLCVmcDIJCSMgUyhQMitTUDMpCgoJZmFkZC54CQlUQU5RMiglcGMpLCVmcDMJCSMgUTIrUyhRMytTUTQpCglmYWRkLngJCVRBTlAxKCVwYyksJWZwMgkJIyBQMStTKFAyK1NQMykKCglmbXVsLngJCSVmcDEsJWZwMwkJIyBTKFEyK1MoUTMrU1E0KSkKCWZtdWwueAkJJWZwMSwlZnAyCQkjIFMoUDErUyhQMitTUDMpKQoKCWZhZGQueAkJVEFOUTEoJXBjKSwlZnAzCQkjIFExK1MoUTIrUyhRMytTUTQpKQoJZm11bC54CQklZnAwLCVmcDIJCSMgUlMoUDErUyhQMitTUDMpKQoKCWZtdWwueAkJJWZwMywlZnAxCQkjIFMoUTErUyhRMitTKFEzK1NRNCkpKQoKCWZhZGQueAkJJWZwMiwlZnAwCQkjIFIrUlMoUDErUyhQMitTUDMpKQoKCWZhZGQucwkJJjB4M0Y4MDAwMDAsJWZwMQkjIDErUyhRMSsuLi4pCgoJZm1vdm0ueAkJKCVzcCkrLCYweDMwCQkjIHJlc3RvcmUgZnAyLGZwMwoKCWZtb3YubAkJJWQwLCVmcGNyCQkjIHJlc3RvcmUgdXNlcnMgcm91bmQgbW9kZSxwcmVjCglmZGl2LngJCSVmcDEsJWZwMAkJIyBsYXN0IGluc3QgLSBwb3NzaWJsZSBleGNlcHRpb24gc2V0CglicmEJCXRfaW54MgoKTk9ERDoKCWZtb3YueAkJJWZwMCwlZnAxCglmbXVsLngJCSVmcDAsJWZwMAkJIyBTID0gUipSCgoJZm1vdi5kCQlUQU5RNCglcGMpLCVmcDMKCWZtb3YuZAkJVEFOUDMoJXBjKSwlZnAyCgoJZm11bC54CQklZnAwLCVmcDMJCSMgU1E0CglmbXVsLngJCSVmcDAsJWZwMgkJIyBTUDMKCglmYWRkLmQJCVRBTlEzKCVwYyksJWZwMwkJIyBRMytTUTQKCWZhZGQueAkJVEFOUDIoJXBjKSwlZnAyCQkjIFAyK1NQMwoKCWZtdWwueAkJJWZwMCwlZnAzCQkjIFMoUTMrU1E0KQoJZm11bC54CQklZnAwLCVmcDIJCSMgUyhQMitTUDMpCgoJZmFkZC54CQlUQU5RMiglcGMpLCVmcDMJCSMgUTIrUyhRMytTUTQpCglmYWRkLngJCVRBTlAxKCVwYyksJWZwMgkJIyBQMStTKFAyK1NQMykKCglmbXVsLngJCSVmcDAsJWZwMwkJIyBTKFEyK1MoUTMrU1E0KSkKCWZtdWwueAkJJWZwMCwlZnAyCQkjIFMoUDErUyhQMitTUDMpKQoKCWZhZGQueAkJVEFOUTEoJXBjKSwlZnAzCQkjIFExK1MoUTIrUyhRMytTUTQpKQoJZm11bC54CQklZnAxLCVmcDIJCSMgUlMoUDErUyhQMitTUDMpKQoKCWZtdWwueAkJJWZwMywlZnAwCQkjIFMoUTErUyhRMitTKFEzK1NRNCkpKQoKCWZhZGQueAkJJWZwMiwlZnAxCQkjIFIrUlMoUDErUyhQMitTUDMpKQoJZmFkZC5zCQkmMHgzRjgwMDAwMCwlZnAwCSMgMStTKFExKy4uLikKCglmbW92bS54CQkoJXNwKSssJjB4MzAJCSMgcmVzdG9yZSBmcDIsZnAzCgoJZm1vdi54CQklZnAxLC0oJXNwKQoJZW9yLmwJCSYweDgwMDAwMDAwLCglc3ApCgoJZm1vdi5sCQklZDAsJWZwY3IJCSMgcmVzdG9yZSB1c2VycyByb3VuZCBtb2RlLHByZWMKCWZkaXYueAkJKCVzcCkrLCVmcDAJCSMgbGFzdCBpbnN0IC0gcG9zc2libGUgZXhjZXB0aW9uIHNldAoJYnJhCQl0X2lueDIKClRBTkJPUlM6CiMtLUlGIHxYfCA+IDE1UEksIFdFIFVTRSBUSEUgR0VORVJBTCBBUkdVTUVOVCBSRURVQ1RJT04uCiMtLUlGIHxYfCA8IDIqKigtNDApLCBSRVRVUk4gWCBPUiAxLgoJY21wLmwJCSVkMSwmMHgzRkZGODAwMAoJYmd0LmIJCVJFRFVDRVgKClRBTlNNOgoJZm1vdi54CQklZnAwLC0oJXNwKQoJZm1vdi5sCQklZDAsJWZwY3IJCSMgcmVzdG9yZSB1c2VycyByb3VuZCBtb2RlLHByZWMKCW1vdi5iCQkmRk1PVl9PUCwlZDEJCSMgbGFzdCBpbnN0IGlzIE1PVkUKCWZtb3YueAkJKCVzcCkrLCVmcDAJCSMgbGFzdCBpbnN0IC0gcG9zaWJibGUgZXhjZXB0aW9uIHNldAoJYnJhCQl0X2NhdGNoCgoJZ2xvYmFsCQlzdGFuZAojLS1UQU4oWCkgPSBYIEZPUiBERU5PUk1BTElaRUQgWApzdGFuZDoKCWJyYQkJdF9leHRkbnJtCgojLS1XSEVOIFJFRFVDRVggSVMgVVNFRCwgVEhFIENPREUgV0lMTCBJTkVWSVRBQkxZIEJFIFNMT1cuCiMtLVRISVMgUkVEVUNUSU9OIE1FVEhPRCwgSE9XRVZFUiwgSVMgTVVDSCBGQVNURVIgVEhBTiBVU0lORwojLS1USEUgUkVNQUlOREVSIElOU1RSVUNUSU9OIFdISUNIIElTIE5PVyBJTiBTT0ZUV0FSRS4KUkVEVUNFWDoKCWZtb3ZtLngJCSYweDNjLC0oJXNwKQkJIyBzYXZlIHtmcDItZnA1fQoJbW92LmwJCSVkMiwtKCVzcCkJCSMgc2F2ZSBkMgoJZm1vdi5zCQkmMHgwMDAwMDAwMCwlZnAxCSMgZnAxID0gMAoKIy0tSWYgY29tcGFjdCBmb3JtIG9mIGFicyhhcmcpIGluIGQwPSQ3ZmZlZmZmZiwgYXJndW1lbnQgaXMgc28gbGFyZ2UgdGhhdAojLS10aGVyZSBpcyBhIGRhbmdlciBvZiB1bndhbnRlZCBvdmVyZmxvdyBpbiBmaXJzdCBMT09QIGl0ZXJhdGlvbi4gIEluIHRoaXMKIy0tY2FzZSwgcmVkdWNlIGFyZ3VtZW50IGJ5IG9uZSByZW1haW5kZXIgc3RlcCB0byBtYWtlIHN1YnNlcXVlbnQgcmVkdWN0aW9uCiMtLXNhZmUuCgljbXAubAkJJWQxLCYweDdmZmVmZmZmCQkjIGlzIGFyZyBkYW5nZXJvdXNseSBsYXJnZT8KCWJuZS5iCQlMT09QCQkJIyBubwoKIyB5ZXM7IGNyZWF0ZSAyKioxNjM4MypQSS8yCgltb3YudwkJJjB4N2ZmZSxGUF9TQ1IwX0VYKCVhNikKCW1vdi5sCQkmMHhjOTBmZGFhMixGUF9TQ1IwX0hJKCVhNikKCWNsci5sCQlGUF9TQ1IwX0xPKCVhNikKCiMgY3JlYXRlIGxvdyBoYWxmIG9mIDIqKjE2MzgzKlBJLzIgYXQgRlBfU0NSMQoJbW92LncJCSYweDdmZGMsRlBfU0NSMV9FWCglYTYpCgltb3YubAkJJjB4ODVhMzA4ZDMsRlBfU0NSMV9ISSglYTYpCgljbHIubAkJRlBfU0NSMV9MTyglYTYpCgoJZnRlc3QueAkJJWZwMAkJCSMgdGVzdCBzaWduIG9mIGFyZ3VtZW50CglmYmx0LncJCXJlZF9uZWcKCglvci5iCQkmMHg4MCxGUF9TQ1IwX0VYKCVhNikJIyBwb3NpdGl2ZSBhcmcKCW9yLmIJCSYweDgwLEZQX1NDUjFfRVgoJWE2KQpyZWRfbmVnOgoJZmFkZC54CQlGUF9TQ1IwKCVhNiksJWZwMAkjIGhpZ2ggcGFydCBvZiByZWR1Y3Rpb24gaXMgZXhhY3QKCWZtb3YueAkJJWZwMCwlZnAxCQkjIHNhdmUgaGlnaCByZXN1bHQgaW4gZnAxCglmYWRkLngJCUZQX1NDUjEoJWE2KSwlZnAwCSMgbG93IHBhcnQgb2YgcmVkdWN0aW9uCglmc3ViLngJCSVmcDAsJWZwMQkJIyBkZXRlcm1pbmUgbG93IGNvbXBvbmVudCBvZiByZXN1bHQKCWZhZGQueAkJRlBfU0NSMSglYTYpLCVmcDEJIyBmcDAvZnAxIGFyZSByZWR1Y2VkIGFyZ3VtZW50LgoKIy0tT04gRU5UUlksIEZQMCBJUyBYLCBPTiBSRVRVUk4sIEZQMCBJUyBYIFJFTSBQSS8yLCB8WHwgPD0gUEkvNC4KIy0taW50ZWdlciBxdW90aWVudCB3aWxsIGJlIHN0b3JlZCBpbiBOCiMtLUludGVybWVkaXRhdGUgcmVtYWluZGVyIGlzIDY2LWJpdCBsb25nOyAoUixyKSBpbiAoRlAwLEZQMSkKTE9PUDoKCWZtb3YueAkJJWZwMCxJTkFSRyglYTYpCQkjICstMioqSyAqIEYsIDEgPD0gRiA8IDIKCW1vdi53CQlJTkFSRyglYTYpLCVkMQoJbW92LmwJCSVkMSwlYTEJCQkjIHNhdmUgYSBjb3B5IG9mIEQwCglhbmQubAkJJjB4MDAwMDdGRkYsJWQxCglzdWIubAkJJjB4MDAwMDNGRkYsJWQxCQkjIGQwID0gSwoJY21wLmwJCSVkMSwmMjgKCWJsZS5iCQlMQVNUTE9PUApDT05UTE9PUDoKCXN1Yi5sCQkmMjcsJWQxCQkJIyBkMCA9IEwgOj0gSy0yNwoJbW92LmIJCSYwLEVOREZMQUcoJWE2KQoJYnJhLmIJCVdPUksKTEFTVExPT1A6CgljbHIubAkJJWQxCQkJIyBkMCA9IEwgOj0gMAoJbW92LmIJCSYxLEVOREZMQUcoJWE2KQoKV09SSzoKIy0tRklORCBUSEUgUkVNQUlOREVSIE9GIChSLHIpIFcuUi5ULgkyKipMICogKFBJLzIpLiBMIElTIFNPIENIT1NFTgojLS1USEFUCUlOVCggWCAqICgyL1BJKSAvIDIqKihMKSApIDwgMioqMjkuCgojLS1DUkVBVEUgMioqKC1MKSAqICgyL1BJKSwgU0lHTihJTkFSRykqMioqKDYzKSwKIy0tMioqTCAqIChQSWJ5Ml8xKSwgMioqTCAqIChQSWJ5Ml8yKQoKCW1vdi5sCQkmMHgwMDAwM0ZGRSwlZDIJCSMgQklBU0VEIEVYUCBPRiAyL1BJCglzdWIubAkJJWQxLCVkMgkJCSMgQklBU0VEIEVYUCBPRiAyKiooLUwpKigyL1BJKQoKCW1vdi5sCQkmMHhBMkY5ODM2RSxGUF9TQ1IwX0hJKCVhNikKCW1vdi5sCQkmMHg0RTQ0MTUyQSxGUF9TQ1IwX0xPKCVhNikKCW1vdi53CQklZDIsRlBfU0NSMF9FWCglYTYpCSMgRlBfU0NSMCA9IDIqKigtTCkqKDIvUEkpCgoJZm1vdi54CQklZnAwLCVmcDIKCWZtdWwueAkJRlBfU0NSMCglYTYpLCVmcDIJIyBmcDIgPSBYICogMioqKC1MKSooMi9QSSkKCiMtLVdFIE1VU1QgTk9XIEZJTkQgSU5UKEZQMikuIFNJTkNFIFdFIE5FRUQgVEhJUyBWQUxVRSBJTgojLS1GTE9BVElORyBQT0lOVCBGT1JNQVQsIFRIRSBUV08gRk1PVkUnUwlGTU9WRS5MIEZQIDwtLT4gTgojLS1XSUxMIEJFIFRPTyBJTkVGRklDSUVOVC4gVEhFIFdBWSBBUk9VTkQgSVQgSVMgVEhBVAojLS0oU0lHTihJTkFSRykqMioqNjMJKwlGUDIpIC0gU0lHTihJTkFSRykqMioqNjMgV0lMTCBHSVZFCiMtLVVTIFRIRSBERVNJUkVEIFZBTFVFIElOIEZMT0FUSU5HIFBPSU5ULgoJbW92LmwJCSVhMSwlZDIKCXN3YXAJCSVkMgoJYW5kLmwJCSYweDgwMDAwMDAwLCVkMgoJb3IubAkJJjB4NUYwMDAwMDAsJWQyCQkjIGQyID0gU0lHTihJTkFSRykqMioqNjMgSU4gU0dMCgltb3YubAkJJWQyLFRXT1RPNjMoJWE2KQoJZmFkZC5zCQlUV09UTzYzKCVhNiksJWZwMgkjIFRIRSBGUkFDVElPTkFMIFBBUlQgT0YgRlAxIElTIFJPVU5ERUQKCWZzdWIucwkJVFdPVE82MyglYTYpLCVmcDIJIyBmcDIgPSBOCiMJZmludHJ6LngJJWZwMiwlZnAyCgojLS1DUkVBVElORyAyKiooTCkqUGlieTJfMSBhbmQgMioqKEwpKlBpYnkyXzIKCW1vdi5sCQklZDEsJWQyCQkJIyBkMiA9IEwKCglhZGQubAkJJjB4MDAwMDNGRkYsJWQyCQkjIEJJQVNFRCBFWFAgT0YgMioqTCAqIChQSS8yKQoJbW92LncJCSVkMixGUF9TQ1IwX0VYKCVhNikKCW1vdi5sCQkmMHhDOTBGREFBMixGUF9TQ1IwX0hJKCVhNikKCWNsci5sCQlGUF9TQ1IwX0xPKCVhNikJCSMgRlBfU0NSMCA9IDIqKihMKSAqIFBpYnkyXzEKCglhZGQubAkJJjB4MDAwMDNGREQsJWQxCgltb3YudwkJJWQxLEZQX1NDUjFfRVgoJWE2KQoJbW92LmwJCSYweDg1QTMwOEQzLEZQX1NDUjFfSEkoJWE2KQoJY2xyLmwJCUZQX1NDUjFfTE8oJWE2KQkJIyBGUF9TQ1IxID0gMioqKEwpICogUGlieTJfMgoKCW1vdi5iCQlFTkRGTEFHKCVhNiksJWQxCgojLS1XZSBhcmUgbm93IHJlYWR5IHRvIHBlcmZvcm0gKFIrcikgLSBOKlAxIC0gTipQMiwgUDEgPSAyKiooTCkgKiBQaWJ5Ml8xIGFuZAojLS1QMiA9IDIqKihMKSAqIFBpYnkyXzIKCWZtb3YueAkJJWZwMiwlZnA0CQkjIGZwNCA9IE4KCWZtdWwueAkJRlBfU0NSMCglYTYpLCVmcDQJIyBmcDQgPSBXID0gTipQMQoJZm1vdi54CQklZnAyLCVmcDUJCSMgZnA1ID0gTgoJZm11bC54CQlGUF9TQ1IxKCVhNiksJWZwNQkjIGZwNSA9IHcgPSBOKlAyCglmbW92LngJCSVmcDQsJWZwMwkJIyBmcDMgPSBXID0gTipQMQoKIy0td2Ugd2FudCBQK3AgPSBXK3cgIGJ1dCAgfHB8IDw9IGhhbGYgdWxwIG9mIFAKIy0tVGhlbiwgd2UgbmVlZCB0byBjb21wdXRlICBBIDo9IFItUCAgIGFuZCAgYSA6PSByLXAKCWZhZGQueAkJJWZwNSwlZnAzCQkjIGZwMyA9IFAKCWZzdWIueAkJJWZwMywlZnA0CQkjIGZwNCA9IFctUAoKCWZzdWIueAkJJWZwMywlZnAwCQkjIGZwMCA9IEEgOj0gUiAtIFAKCWZhZGQueAkJJWZwNSwlZnA0CQkjIGZwNCA9IHAgPSAoVy1QKSt3CgoJZm1vdi54CQklZnAwLCVmcDMJCSMgZnAzID0gQQoJZnN1Yi54CQklZnA0LCVmcDEJCSMgZnAxID0gYSA6PSByIC0gcAoKIy0tTm93IHdlIG5lZWQgdG8gbm9ybWFsaXplIChBLGEpIHRvICAibmV3IChSLHIpIiB3aGVyZSBSK3IgPSBBK2EgYnV0CiMtLXxyfCA8PSBoYWxmIHVscCBvZiBSLgoJZmFkZC54CQklZnAxLCVmcDAJCSMgZnAwID0gUiA6PSBBK2EKIy0tTm8gbmVlZCB0byBjYWxjdWxhdGUgciBpZiB0aGlzIGlzIHRoZSBsYXN0IGxvb3AKCWNtcC5iCQklZDEsJjAKCWJndC53CQlSRVNUT1JFCgojLS1OZWVkIHRvIGNhbGN1bGF0ZSByCglmc3ViLngJCSVmcDAsJWZwMwkJIyBmcDMgPSBBLVIKCWZhZGQueAkJJWZwMywlZnAxCQkjIGZwMSA9IHIgOj0gKEEtUikrYQoJYnJhLncJCUxPT1AKClJFU1RPUkU6CglmbW92LmwJCSVmcDIsSU5UKCVhNikKCW1vdi5sCQkoJXNwKSssJWQyCQkjIHJlc3RvcmUgZDIKCWZtb3ZtLngJCSglc3ApKywmMHgzYwkJIyByZXN0b3JlIHtmcDItZnA1fQoKCW1vdi5sCQlJTlQoJWE2KSwlZDEKCXJvci5sCQkmMSwlZDEKCglicmEudwkJVEFOQ09OVAoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHNhdGFuKCk6ICBjb21wdXRlcyB0aGUgYXJjdGFuZ2VudCBvZiBhIG5vcm1hbGl6ZWQgbnVtYmVyCQkjCiMgc2F0YW5kKCk6IGNvbXB1dGVzIHRoZSBhcmN0YW5nZW50IG9mIGEgZGVub3JtYWxpemVkIG51bWJlcgkJIwojCQkJCQkJCQkJIwojIElOUFVUCSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAjCiMJYTAgPSBwb2ludGVyIHRvIGV4dGVuZGVkIHByZWNpc2lvbiBpbnB1dAkJCSMKIwlkMCA9IHJvdW5kIHByZWNpc2lvbixtb2RlCQkJCQkjCiMJCQkJCQkJCQkjCiMgT1VUUFVUICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICMKIwlmcDAgPSBhcmN0YW4oWCkJCQkJCQkJIwojCQkJCQkJCQkJIwojIEFDQ1VSQUNZIGFuZCBNT05PVE9OSUNJVFkgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAjCiMJVGhlIHJldHVybmVkIHJlc3VsdCBpcyB3aXRoaW4gMiB1bHBzIGluCTY0IHNpZ25pZmljYW50IGJpdCwJIwojCWkuZS4gd2l0aGluIDAuNTAwMSB1bHAgdG8gNTMgYml0cyBpZiB0aGUgcmVzdWx0IGlzIHN1YnNlcXVlbnRseQkjCiMJcm91bmRlZCB0byBkb3VibGUgcHJlY2lzaW9uLiBUaGUgcmVzdWx0IGlzIHByb3ZhYmx5IG1vbm90b25pYwkjCiMJaW4gZG91YmxlIHByZWNpc2lvbi4JCQkJCQkjCiMJCQkJCQkJCQkjCiMgQUxHT1JJVEhNICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICMKIwlTdGVwIDEuIElmIHxYfCA+PSAxNiBvciB8WHwgPCAxLzE2LCBnbyB0byBTdGVwIDUuCQkjCiMJCQkJCQkJCQkjCiMJU3RlcCAyLiBMZXQgWCA9IHNnbiAqIDIqKmsgKiAxLnh4eHh4eHh4Li4ueC4JCQkjCiMJCU5vdGUgdGhhdCBrID0gLTQsIC0zLC4uLiwgb3IgMy4JCQkJIwojCQlEZWZpbmUgRiA9IHNnbiAqIDIqKmsgKiAxLnh4eHgxLCBpLmUuIHRoZSBmaXJzdCA1CSMKIwkJc2lnbmlmaWNhbnQgYml0cyBvZiBYIHdpdGggYSBiaXQtMSBhdHRhY2hlZCBhdCB0aGUgNi10aAkjCiMJCWJpdCBwb3NpdGlvbi4gRGVmaW5lIHUgdG8gYmUgdSA9IChYLUYpIC8gKDEgKyBYKkYpLgkjCiMJCQkJCQkJCQkjCiMJU3RlcCAzLiBBcHByb3hpbWF0ZSBhcmN0YW4odSkgYnkgYSBwb2x5bm9taWFsIHBvbHkuCQkjCiMJCQkJCQkJCQkjCiMJU3RlcCA0LiBSZXR1cm4gYXJjdGFuKEYpICsgcG9seSwgYXJjdGFuKEYpIGlzIGZldGNoZWQgZnJvbSBhCSMKIwkJdGFibGUgb2YgdmFsdWVzIGNhbGN1bGF0ZWQgYmVmb3JlaGFuZC4gRXhpdC4JCSMKIwkJCQkJCQkJCSMKIwlTdGVwIDUuIElmIHxYfCA+PSAxNiwgZ28gdG8gU3RlcCA3LgkJCQkjCiMJCQkJCQkJCQkjCiMJU3RlcCA2LiBBcHByb3hpbWF0ZSBhcmN0YW4oWCkgYnkgYW4gb2RkIHBvbHlub21pYWwgaW4gWC4gRXhpdC4JIwojCQkJCQkJCQkJIwojCVN0ZXAgNy4gRGVmaW5lIFgnID0gLTEvWC4gQXBwcm94aW1hdGUgYXJjdGFuKFgnKSBieSBhbiBvZGQJIwojCQlwb2x5bm9taWFsIGluIFgnLgkJCQkJIwojCQlBcmN0YW4oWCkgPSBzaWduKFgpKlBpLzIgKyBhcmN0YW4oWCcpLiBFeGl0LgkJIwojCQkJCQkJCQkJIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpBVEFOQTM6CWxvbmcJCTB4QkZGNjY4N0UsMHgzMTQ5ODdEOApBVEFOQTI6CWxvbmcJCTB4NDAwMkFDNjksMHgzNEEyNkRCMwpBVEFOQTE6CWxvbmcJCTB4QkZDMjQ3NkYsMHg0RTFEQTI4RQoKQVRBTkI2Oglsb25nCQkweDNGQjM0NDQ0LDB4N0Y4NzY5ODkKQVRBTkI1Oglsb25nCQkweEJGQjc0NEVFLDB4N0ZBRjQ1REIKQVRBTkI0Oglsb25nCQkweDNGQkM3MUM2LDB4NDY5NDAyMjAKQVRBTkIzOglsb25nCQkweEJGQzI0OTI0LDB4OTIxODcyRjkKQVRBTkIyOglsb25nCQkweDNGQzk5OTk5LDB4OTk5OThGQTkKQVRBTkIxOglsb25nCQkweEJGRDU1NTU1LDB4NTU1NTU1NTUKCkFUQU5DNToJbG9uZwkJMHhCRkI3MEJGMywweDk4NTM5RTZBCkFUQU5DNDoJbG9uZwkJMHgzRkJDNzE4NywweDk2MkQxRDdECkFUQU5DMzoJbG9uZwkJMHhCRkMyNDkyNCwweDgyNzEwN0I4CkFUQU5DMjoJbG9uZwkJMHgzRkM5OTk5OSwweDk5OTYyNjNFCkFUQU5DMToJbG9uZwkJMHhCRkQ1NTU1NSwweDU1NTU1NTM2CgpQUElCWTI6CWxvbmcJCTB4M0ZGRjAwMDAsMHhDOTBGREFBMiwweDIxNjhDMjM1LDB4MDAwMDAwMDAKTlBJQlkyOglsb25nCQkweEJGRkYwMDAwLDB4QzkwRkRBQTIsMHgyMTY4QzIzNSwweDAwMDAwMDAwCgpQVElOWToJbG9uZwkJMHgwMDAxMDAwMCwweDgwMDAwMDAwLDB4MDAwMDAwMDAsMHgwMDAwMDAwMApOVElOWToJbG9uZwkJMHg4MDAxMDAwMCwweDgwMDAwMDAwLDB4MDAwMDAwMDAsMHgwMDAwMDAwMAoKQVRBTlRCTDoKCWxvbmcJCTB4M0ZGQjAwMDAsMHg4M0QxNTJDNSwweDA2MEI3QTUxLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGQjAwMDAsMHg4QkM4NTQ0NSwweDY1NDk4QjhCLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGQjAwMDAsMHg5M0JFNDA2MCwweDE3NjI2QjBELDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGQjAwMDAsMHg5QkIzMDc4RCwweDM1QUVDMjAyLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGQjAwMDAsMHhBM0E2OUE1MiwweDVERENFN0RFLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGQjAwMDAsMHhBQjk4RTk0MywweDYyNzY1NjE5LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGQjAwMDAsMHhCMzg5RTUwMiwweEY5QzU5ODYyLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGQjAwMDAsMHhCQjc5N0U0MywweDZCMDlFNkZCLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGQjAwMDAsMHhDMzY3QTVDNywweDM5RTVGNDQ2LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGQjAwMDAsMHhDQjU0NEM2MSwweENGRjdENUM2LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGQjAwMDAsMHhEMzNGNjJGOCwweDI0ODg1MzNFLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGQjAwMDAsMHhEQjI4REE4MSwweDYyNDA0Qzc3LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGQjAwMDAsMHhFMzEwQTQwNywweDhBRDM0RjE4LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGQjAwMDAsMHhFQUY2QjBBOCwweDE4OEVFMUVCLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGQjAwMDAsMHhGMkRBRjE5NCwweDlEQkU3OUQ1LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGQjAwMDAsMHhGQUJENTgxMywweDYxRDQ3RTNFLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGQzAwMDAsMHg4MzQ2QUMyMSwweDA5NTlFQ0M0LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGQzAwMDAsMHg4QjIzMkEwOCwweDMwNDI4MkQ4LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGQzAwMDAsMHg5MkZCNzBCOCwweEQyOUFFMkY5LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGQzAwMDAsMHg5QUNGNDc2RiwweDVDQ0QxQ0I0LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGQzAwMDAsMHhBMjlFNzYzMCwweDQ5NTRGMjNGLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGQzAwMDAsMHhBQTY4QzVEMCwweDhBQjg1MjMwLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGQzAwMDAsMHhCMjJERkZGRCwweDlENTM5RjgzLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGQzAwMDAsMHhCOUVERUY0NSwweDNFOTAwRUE1LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGQzAwMDAsMHhDMUE4NUYxQywweEM3NUUzRUE1LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGQzAwMDAsMHhDOTVEMUJFOCwweDI4MTM4REU2LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGQzAwMDAsMHhEMTBCRjMwMCwweDg0MEQyREU0LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGQzAwMDAsMHhEOEI0QjJCQSwweDZCQzA1RTdBLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGQzAwMDAsMHhFMDU3MkE2QiwweEI0MjMzNUY2LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGQzAwMDAsMHhFN0YzMkE3MCwweEVBOUNBQThGLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGQzAwMDAsMHhFRjg4ODQzMiwweDY0RUNFRkFBLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGQzAwMDAsMHhGNzE3MEEyOCwweEVDQzA2NjY2LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRDAwMDAsMHg4MTJGRDI4OCwweDMzMkRBRDMyLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRDAwMDAsMHg4OEE4RDFCMSwweDIxOEU0RDY0LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRDAwMDAsMHg5MDEyQUIzRiwweDIzRTRBRUU4LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRDAwMDAsMHg5NzZDQzNENCwweDExRTdGMUI5LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRDAwMDAsMHg5RUI2ODk0OSwweDM4ODlBMjI3LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRDAwMDAsMHhBNUVGNzJDMywweDQ0ODczNjFCLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRDAwMDAsMHhBRDE3MDBCQSwweEYwN0E3MjI3LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRDAwMDAsMHhCNDJDQkNGQSwweEZEMzdFRkI3LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRDAwMDAsMHhCQjMwM0E5NCwweDBCQTgwRjg5LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRDAwMDAsMHhDMjIxMTVDNiwweEZDQUVCQkFGLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRDAwMDAsMHhDOEZFRjNFNiwweDg2MzMxMjIxLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRDAwMDAsMHhDRkM5ODMzMCwweEI0MDAwQzcwLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRDAwMDAsMHhENjgwN0FBMSwweDEwMkM1QkY5LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRDAwMDAsMHhERDIzOTlCQywweDMxMjUyQUEzLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRDAwMDAsMHhFM0IyQTg1NSwweDZCOEZDNTE3LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRDAwMDAsMHhFQTJENzY0RiwweDY0MzE1OTg5LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRDAwMDAsMHhGM0JGNUJGOCwweEJBRDFBMjFELDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRTAwMDAsMHg4MDFDRTM5RSwweDBEMjA1QzlBLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRTAwMDAsMHg4NjMwQTJEQSwweERBMUVEMDY2LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRTAwMDAsMHg4QzFBRDQ0NSwweEYzRTA5QjhDLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRTAwMDAsMHg5MURCOEYxNiwweDY0RjM1MEUyLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRTAwMDAsMHg5NzczMTQyMCwweDM2NUU1MzhDLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRTAwMDAsMHg5Q0UxQzhFNiwweEEwQjhDREJBLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRTAwMDAsMHhBMjI4MzJEQiwweENBREFBRTA5LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRTAwMDAsMHhBNzQ2RjJERCwweEI3NjAyMjk0LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRTAwMDAsMHhBQzNFQzBGQiwweDk5N0RENkEyLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRTAwMDAsMHhCMTEwNjg4QSwweEVCREM2RjZBLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRTAwMDAsMHhCNUJDQzQ5MCwweDU5RUNDNEIwLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRTAwMDAsMHhCQTQ0QkM3RCwweEQ0NzA3ODJGLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRTAwMDAsMHhCRUE5NDE0NCwweEZEMDQ5QUFDLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRTAwMDAsMHhDMkVCNEFCQiwweDY2MTYyOEI2LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRTAwMDAsMHhDNzBCRDU0QywweEU2MDJFRTE0LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRTAwMDAsMHhDRDAwMDU0OSwweEFERUM3MTU5LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRTAwMDAsMHhENDg0NTdEMiwweEQ4RUE0RUEzLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRTAwMDAsMHhEQjk0OERBNywweDEyREVDRTNCLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRTAwMDAsMHhFMjM4NTVGOSwweDY5RTgwOTZBLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRTAwMDAsMHhFODc3MTEyOSwweEM0MzUzMjU5LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRTAwMDAsMHhFRTU3QzE2RSwweDBEMzc5QzBELDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRTAwMDAsMHhGM0UxMDIxMSwweEE4N0MzNzc5LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRTAwMDAsMHhGOTE5MDM5RCwweDc1OEI4RDQxLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRTAwMDAsMHhGRTA1OEI4RiwweDY0OTM1RkIzLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHg4MTU1RkI0OSwweDdCNjg1RDA0LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHg4Mzg4OUUzNSwweDQ5RDEwOEUxLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHg4NTlDRkE3NiwweDUxMUQ3MjRCLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHg4Nzk1MkVDRiwweEZGODEzMUU3LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHg4OTczMkZEMSwweDk1NTc2NDFCLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHg4QjM4Q0FEMSwweDAxOTMyQTM1LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHg4Q0U3QThEOCwweDMwMUVFNkI1LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHg4RjQ2QTM5RSwweDJFQUU1MjgxLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHg5MjJEQTdENywweDkxODg4NDg3LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHg5NEQxOUZDQiwweERFREY1MjQxLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHg5NzNBQjk0NCwweDE5RDJBMDhCLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHg5OTZGRjAwRSwweDA4RTEwQjk2LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHg5Qjc3M0Y5NSwweDEyMzIxREE3LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHg5RDU1Q0MzMiwweDBGOTM1NjI0LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHg5RjEwMDU3NSwweDAwNkNDNTcxLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhBMEE5QzI5MCwweEQ5N0NDMDZDLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhBMjI2NTlFQiwweEVCQzA2MzBBLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhBMzg4QjRBRiwweEY2RUYwRUM5LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhBNEQzNUYxMCwweDYxRDI5MkM0LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhBNjA4OTVEQywweEZCRTMxODdFLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhBNzJBNTFEQywweDczNjdCRUFDLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhBODNBNTE1MywweDA5NTYxNjhGLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhBOTNBMjAwNywweDc1Mzk1NDZFLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhBQTlFNzI0NSwweDAyM0IyNjA1LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhBQzRDODRCQSwweDZGRTRENThGLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhBRENFNEE0QSwweDYwNkI5NzEyLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhBRjJBMkRDRCwweDhEMjYzQzlDLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhCMDY1NkY4MSwweEYyMjI2NUM3LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhCMTg0NjUxNSwweDBGNzE0OTZBLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhCMjhBQUExNSwweDZGOUFEQTM1LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhCMzdCNDRGRiwweDM3NjZCODk1LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhCNDU4QzNEQywweEU5NjMwNDMzLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhCNTI1NTI5RCwweDU2MjI0NkJELDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhCNUUyQ0NBOSwweDVGOUQ4OENDLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhCNjkyQ0FEQSwweDdBQ0ExQURBLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhCNzM2QUVBNywweEE2OTI1ODM4LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhCN0NGQUIyOCwweDdFOUY3QjM2LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhCODVFQ0M2NiwweENCMjE5ODM1LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhCOEU0RkQ1QSwweDIwQTU5M0RBLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhCOTlGNDFGNiwweDRBRkY5QkI1LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhCQTdGMUUxNywweDg0MkJCRTdCLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhCQjQ3MTI4NSwweDc2MzdFMTdELDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhCQkZBQkU4QSwweDQ3ODhERjZGLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhCQzlEMEZBRCwweDJCNjg5RDc5LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhCRDMwNkEzOSwweDQ3MUVDRDg2LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhCREI2QzczMSwweDg1NkFGMThBLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhCRTMxQ0FDNSwweDAyRTgwRDcwLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhCRUEyRDU1QywweEUzMzE5NEUyLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhCRjBCMTBCNywweEMwMzEyOEYwLDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhCRjZCN0ExOCwweERBQ0I3NzhELDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhCRkM0RUE0NiwweDYzRkExOEY2LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhDMDE4MUJERSwweDhCODlBNDU0LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhDMDY1QjA2NiwweENGQkY2NDM5LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhDMEFFMzQ1RiwweDU2MzQwQUU2LDB4MDAwMDAwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhDMEYyMjI5MSwweDlDQjlFNkE3LDB4MDAwMDAwMDAKCglzZXQJCVgsRlBfU0NSMAoJc2V0CQlYRENBUkUsWCsyCglzZXQJCVhGUkFDLFgrNAoJc2V0CQlYRlJBQ0xPLFgrOAoKCXNldAkJQVRBTkYsRlBfU0NSMQoJc2V0CQlBVEFORkhJLEFUQU5GKzQKCXNldAkJQVRBTkZMTyxBVEFORis4CgoJZ2xvYmFsCQlzYXRhbgojLS1FTlRSWSBQT0lOVCBGT1IgQVRBTihYKSwgSEVSRSBYIElTIEZJTklURSwgTk9OLVpFUk8sIEFORCBOT1QgTkFOJ1MKc2F0YW46CglmbW92LngJCSglYTApLCVmcDAJCSMgTE9BRCBJTlBVVAoKCW1vdi5sCQkoJWEwKSwlZDEKCW1vdi53CQk0KCVhMCksJWQxCglmbW92LngJCSVmcDAsWCglYTYpCglhbmQubAkJJjB4N0ZGRkZGRkYsJWQxCgoJY21wLmwJCSVkMSwmMHgzRkZCODAwMAkJIyB8WHwgPj0gMS8xNj8KCWJnZS5iCQlBVEFOT0sxCglicmEudwkJQVRBTlNNCgpBVEFOT0sxOgoJY21wLmwJCSVkMSwmMHg0MDAyRkZGRgkJIyB8WHwgPCAxNiA/CglibGUuYgkJQVRBTk1BSU4KCWJyYS53CQlBVEFOQklHCgojLS1USEUgTU9TVCBMSUtFTFkgQ0FTRSwgfFh8IElOIFsxLzE2LCAxNikuIFdFIFVTRSBUQUJMRSBURUNITklRVUUKIy0tVEhFIElERUEgSVMgQVRBTihYKSA9IEFUQU4oRikgKyBBVEFOKCBbWC1GXSAvIFsxK1hGXSApLgojLS1TTyBJRiBGIElTIENIT1NFTiBUTyBCRSBDTE9TRSBUTyBYIEFORCBBVEFOKEYpIElTIFNUT1JFRCBJTgojLS1BIFRBQkxFLCBBTEwgV0UgTkVFRCBJUyBUTyBBUFBST1hJTUFURSBBVEFOKFUpIFdIRVJFCiMtLVUgPSAoWC1GKS8oMStYRikgSVMgU01BTEwgKFJFTUVNQkVSIEYgSVMgQ0xPU0UgVE8gWCkuIElUIElTCiMtLVRSVUUgVEhBVCBBIERJVklERSBJUyBOT1cgTkVFREVELCBCVVQgVEhFIEFQUFJPWElNQVRJT04gRk9SCiMtLUFUQU4oVSkgSVMgQSBWRVJZIFNIT1JUIFBPTFlOT01JQUwgQU5EIFRIRSBJTkRFWElORyBUTwojLS1GRVRDSCBGIEFORCBTQVZJTkcgT0YgUkVHSVNURVJTIENBTiBCRSBBTEwgSElERUQgVU5ERVIgVEhFCiMtLURJVklERS4gSU4gVEhFIEVORCBUSElTIE1FVEhPRCBJUyBNVUNIIEZBU1RFUiBUSEFOIEEgVFJBRElUSU9OQUwKIy0tT05FLiBOT1RFIEFMU08gVEhBVCBUSEUgVFJBRElUSU9OQUwgU0NIRU1FIFRIQVQgQVBQUk9YSU1BVEUKIy0tQVRBTihYKSBESVJFQ1RMWSBXSUxMIE5FRUQgVE8gVVNFIEEgUkFUSU9OQUwgQVBQUk9YSU1BVElPTgojLS0oRElWSVNJT04gTkVFREVEKSBBTllXQVkgQkVDQVVTRSBBIFBPTFlOT01JQUwgQVBQUk9YSU1BVElPTgojLS1XSUxMIElOVk9MVkUgQSBWRVJZIExPTkcgUE9MWU5PTUlBTC4KCiMtLU5PVyBXRSBTRUUgWCBBUyArLTJeSyAqIDEuQkJCQkJCQi4uLi5CIDwtIDEuICsgNjMgQklUUwojLS1XRSBDSE9TRSBGIFRPIEJFICstMl5LICogMS5CQkJCMQojLS1USEFUIElTIElUIE1BVENIRVMgVEhFIEVYUE9ORU5UIEFORCBGSVJTVCA1IEJJVFMgT0YgWCwgVEhFCiMtLVNJWFRIIEJJVFMgSVMgU0VUIFRPIEJFIDEuIFNJTkNFIEsgPSAtNCwgLTMsIC4uLiwgMywgVEhFUkUKIy0tQVJFIE9OTFkgOCBUSU1FUyAxNiA9IDJeNyA9IDEyOCB8RnwnUy4gU0lOQ0UgQVRBTigtfEZ8KSBJUwojLS0gLUFUQU4ofEZ8KSwgV0UgTkVFRCBUTyBTVE9SRSBPTkxZIEFUQU4ofEZ8KS4KCkFUQU5NQUlOOgoKCWFuZC5sCQkmMHhGODAwMDAwMCxYRlJBQyglYTYpCSMgRklSU1QgNSBCSVRTCglvci5sCQkmMHgwNDAwMDAwMCxYRlJBQyglYTYpCSMgU0VUIDYtVEggQklUIFRPIDEKCW1vdi5sCQkmMHgwMDAwMDAwMCxYRlJBQ0xPKCVhNikgIyBMT0NBVElPTiBPRiBYIElTIE5PVyBGCgoJZm1vdi54CQklZnAwLCVmcDEJCSMgRlAxIElTIFgKCWZtdWwueAkJWCglYTYpLCVmcDEJCSMgRlAxIElTIFgqRiwgTk9URSBUSEFUIFgqRiA+IDAKCWZzdWIueAkJWCglYTYpLCVmcDAJCSMgRlAwIElTIFgtRgoJZmFkZC5zCQkmMHgzRjgwMDAwMCwlZnAxCSMgRlAxIElTIDEgKyBYKkYKCWZkaXYueAkJJWZwMSwlZnAwCQkjIEZQMCBJUyBVID0gKFgtRikvKDErWCpGKQoKIy0tV0hJTEUgVEhFIERJVklTSU9OIElTIFRBS0lORyBJVFMgVElNRSwgV0UgRkVUQ0ggQVRBTih8RnwpCiMtLUNSRUFURSBBVEFOKEYpIEFORCBTVE9SRSBJVCBJTiBBVEFORiwgQU5ECiMtLVNBVkUgUkVHSVNURVJTIEZQMi4KCgltb3YubAkJJWQyLC0oJXNwKQkJIyBTQVZFIGQyIFRFTVBPUkFSSUxZCgltb3YubAkJJWQxLCVkMgkJCSMgVEhFIEVYUCBBTkQgMTYgQklUUyBPRiBYCglhbmQubAkJJjB4MDAwMDc4MDAsJWQxCQkjIDQgVkFSWUlORyBCSVRTIE9GIEYnUyBGUkFDVElPTgoJYW5kLmwJCSYweDdGRkYwMDAwLCVkMgkJIyBFWFBPTkVOVCBPRiBGCglzdWIubAkJJjB4M0ZGQjAwMDAsJWQyCQkjIEsrNAoJYXNyLmwJCSYxLCVkMgoJYWRkLmwJCSVkMiwlZDEJCQkjIFRIRSA3IEJJVFMgSURFTlRJRllJTkcgRgoJYXNyLmwJCSY3LCVkMQkJCSMgSU5ERVggSU5UTyBUQkwgT0YgQVRBTih8RnwpCglsZWEJCUFUQU5UQkwoJXBjKSwlYTEKCWFkZC5sCQklZDEsJWExCQkJIyBBRERSRVNTIE9GIEFUQU4ofEZ8KQoJbW92LmwJCSglYTEpKyxBVEFORiglYTYpCgltb3YubAkJKCVhMSkrLEFUQU5GSEkoJWE2KQoJbW92LmwJCSglYTEpKyxBVEFORkxPKCVhNikJIyBBVEFORiBJUyBOT1cgQVRBTih8RnwpCgltb3YubAkJWCglYTYpLCVkMQkJIyBMT0FEIFNJR04gQU5EIEVYUE8uIEFHQUlOCglhbmQubAkJJjB4ODAwMDAwMDAsJWQxCQkjIFNJR04oRikKCW9yLmwJCSVkMSxBVEFORiglYTYpCQkjIEFUQU5GIElTIE5PVyBTSUdOKEYpKkFUQU4ofEZ8KQoJbW92LmwJCSglc3ApKywlZDIJCSMgUkVTVE9SRSBkMgoKIy0tVEhBVCdTIEFMTCBJIEhBVkUgVE8gRE8gRk9SIE5PVywKIy0tQlVUIEFMQVMsIFRIRSBESVZJREUgSVMgU1RJTEwgQ1JBTktJTkchCgojLS1VIElOIEZQMCwgV0UgQVJFIE5PVyBSRUFEWSBUTyBDT01QVVRFIEFUQU4oVSkgQVMKIy0tVSArIEExKlUqViooQTIgKyBWKihBMyArIFYpKSwgViA9IFUqVQojLS1USEUgUE9MWU5PTUlBTCBNQVkgTE9PSyBTVFJBTkdFLCBCVVQgSVMgTkVWRVJUSEVMRVNTIENPUlJFQ1QuCiMtLVRIRSBOQVRVUkFMIEZPUk0gSVMgVSArIFUqViooQTEgKyBWKihBMiArIFYqQTMpKQojLS1XSEFUIFdFIEhBVkUgSEVSRSBJUyBNRVJFTFkJQTEgPSBBMywgQTIgPSBBMS9BMywgQTMgPSBBMi9BMy4KIy0tVEhFIFJFQVNPTiBGT1IgVEhJUyBSRUFSUkFOR0VNRU5UIElTIFRPIE1BS0UgVEhFIElOREVQRU5ERU5UCiMtLVBBUlRTIEExKlUqViBBTkQgKEEyICsgLi4uIFNUVUZGKSBNT1JFIExPQUQtQkFMQU5DRUQKCglmbW92bS54CQkmMHgwNCwtKCVzcCkJCSMgc2F2ZSBmcDIKCglmbW92LngJCSVmcDAsJWZwMQoJZm11bC54CQklZnAxLCVmcDEKCWZtb3YuZAkJQVRBTkEzKCVwYyksJWZwMgoJZmFkZC54CQklZnAxLCVmcDIJCSMgQTMrVgoJZm11bC54CQklZnAxLCVmcDIJCSMgViooQTMrVikKCWZtdWwueAkJJWZwMCwlZnAxCQkjIFUqVgoJZmFkZC5kCQlBVEFOQTIoJXBjKSwlZnAyCSMgQTIrViooQTMrVikKCWZtdWwuZAkJQVRBTkExKCVwYyksJWZwMQkjIEExKlUqVgoJZm11bC54CQklZnAyLCVmcDEJCSMgQTEqVSpWKihBMitWKihBMytWKSkKCWZhZGQueAkJJWZwMSwlZnAwCQkjIEFUQU4oVSksIEZQMSBSRUxFQVNFRAoKCWZtb3ZtLngJCSglc3ApKywmMHgyMAkJIyByZXN0b3JlIGZwMgoKCWZtb3YubAkJJWQwLCVmcGNyCQkjIHJlc3RvcmUgdXNlcnMgcm5kIG1vZGUscHJlYwoJZmFkZC54CQlBVEFORiglYTYpLCVmcDAJCSMgQVRBTihYKQoJYnJhCQl0X2lueDIKCkFUQU5CT1JTOgojLS18WHwgSVMgSU4gZDAgSU4gQ09NUEFDVCBGT1JNLiBGUDEsIGQwIFNBVkVELgojLS1GUDAgSVMgWCBBTkQgfFh8IDw9IDEvMTYgT1IgfFh8ID49IDE2LgoJY21wLmwJCSVkMSwmMHgzRkZGODAwMAoJYmd0LncJCUFUQU5CSUcJCQkjIEkuRS4gfFh8ID49IDE2CgpBVEFOU006CiMtLXxYfCA8PSAxLzE2CiMtLUlGIHxYfCA8IDJeKC00MCksIFJFVFVSTiBYIEFTIEFOU1dFUi4gT1RIRVJXSVNFLCBBUFBST1hJTUFURQojLS1BVEFOKFgpIEJZIFggKyBYKlkqKEIxK1kqKEIyK1kqKEIzK1kqKEI0K1kqKEI1K1kqQjYpKSkpKQojLS1XSElDSCBJUyBYICsgWCpZKiggW0IxK1oqKEIzK1oqQjUpXSArIFtZKihCMitaKihCNCtaKkI2KV0gKQojLS1XSEVSRSBZID0gWCpYLCBBTkQgWiA9IFkqWS4KCgljbXAubAkJJWQxLCYweDNGRDc4MDAwCglibHQudwkJQVRBTlRJTlkKCiMtLUNPTVBVVEUgUE9MWU5PTUlBTAoJZm1vdm0ueAkJJjB4MGMsLSglc3ApCQkjIHNhdmUgZnAyL2ZwMwoKCWZtdWwueAkJJWZwMCwlZnAwCQkjIEZQTyBJUyBZID0gWCpYCgoJZm1vdi54CQklZnAwLCVmcDEKCWZtdWwueAkJJWZwMSwlZnAxCQkjIEZQMSBJUyBaID0gWSpZCgoJZm1vdi5kCQlBVEFOQjYoJXBjKSwlZnAyCglmbW92LmQJCUFUQU5CNSglcGMpLCVmcDMKCglmbXVsLngJCSVmcDEsJWZwMgkJIyBaKkI2CglmbXVsLngJCSVmcDEsJWZwMwkJIyBaKkI1CgoJZmFkZC5kCQlBVEFOQjQoJXBjKSwlZnAyCSMgQjQrWipCNgoJZmFkZC5kCQlBVEFOQjMoJXBjKSwlZnAzCSMgQjMrWipCNQoKCWZtdWwueAkJJWZwMSwlZnAyCQkjIFoqKEI0K1oqQjYpCglmbXVsLngJCSVmcDMsJWZwMQkJIyBaKihCMytaKkI1KQoKCWZhZGQuZAkJQVRBTkIyKCVwYyksJWZwMgkjIEIyK1oqKEI0K1oqQjYpCglmYWRkLmQJCUFUQU5CMSglcGMpLCVmcDEJIyBCMStaKihCMytaKkI1KQoKCWZtdWwueAkJJWZwMCwlZnAyCQkjIFkqKEIyK1oqKEI0K1oqQjYpKQoJZm11bC54CQlYKCVhNiksJWZwMAkJIyBYKlkKCglmYWRkLngJCSVmcDIsJWZwMQkJIyBbQjErWiooQjMrWipCNSldK1tZKihCMitaKihCNCtaKkI2KSldCgoJZm11bC54CQklZnAxLCVmcDAJCSMgWCpZKihbQjErWiooQjMrWipCNSldK1tZKihCMitaKihCNCtaKkI2KSldKQoKCWZtb3ZtLngJCSglc3ApKywmMHgzMAkJIyByZXN0b3JlIGZwMi9mcDMKCglmbW92LmwJCSVkMCwlZnBjcgkJIyByZXN0b3JlIHVzZXJzIHJuZCBtb2RlLHByZWMKCWZhZGQueAkJWCglYTYpLCVmcDAKCWJyYQkJdF9pbngyCgpBVEFOVElOWToKIy0tfFh8IDwgMl4oLTQwKSwgQVRBTihYKSA9IFgKCglmbW92LmwJCSVkMCwlZnBjcgkJIyByZXN0b3JlIHVzZXJzIHJuZCBtb2RlLHByZWMKCW1vdi5iCQkmRk1PVl9PUCwlZDEJCSMgbGFzdCBpbnN0IGlzIE1PVkUKCWZtb3YueAkJWCglYTYpLCVmcDAJCSMgbGFzdCBpbnN0IC0gcG9zc2libGUgZXhjZXB0aW9uIHNldAoKCWJyYQkJdF9jYXRjaAoKQVRBTkJJRzoKIy0tSUYgfFh8ID4gMl4oMTAwKSwgUkVUVVJOCVNJR04oWCkqKFBJLzIgLSBUSU5ZKS4gT1RIRVJXSVNFLAojLS1SRVRVUk4gU0lHTihYKSpQSS8yICsgQVRBTigtMS9YKS4KCWNtcC5sCQklZDEsJjB4NDA2MzgwMDAKCWJndC53CQlBVEFOSFVHRQoKIy0tQVBQUk9YSU1BVEUgQVRBTigtMS9YKSBCWQojLS1YJytYJypZKihDMStZKihDMitZKihDMytZKihDNCtZKkM1KSkpKSwgWCcgPSAtMS9YLCBZID0gWCcqWCcKIy0tVEhJUyBDQU4gQkUgUkUtV1JJVFRFTiBBUwojLS1YJytYJypZKiggW0MxK1oqKEMzK1oqQzUpXSArIFtZKihDMitaKkM0KV0gKSwgWiA9IFkqWS4KCglmbW92bS54CQkmMHgwYywtKCVzcCkJCSMgc2F2ZSBmcDIvZnAzCgoJZm1vdi5zCQkmMHhCRjgwMDAwMCwlZnAxCSMgTE9BRCAtMQoJZmRpdi54CQklZnAwLCVmcDEJCSMgRlAxIElTIC0xL1gKCiMtLURJVklERSBJUyBTVElMTCBDUkFOS0lORwoKCWZtb3YueAkJJWZwMSwlZnAwCQkjIEZQMCBJUyBYJwoJZm11bC54CQklZnAwLCVmcDAJCSMgRlAwIElTIFkgPSBYJypYJwoJZm1vdi54CQklZnAxLFgoJWE2KQkJIyBYIElTIFJFQUxMWSBYJwoKCWZtb3YueAkJJWZwMCwlZnAxCglmbXVsLngJCSVmcDEsJWZwMQkJIyBGUDEgSVMgWiA9IFkqWQoKCWZtb3YuZAkJQVRBTkM1KCVwYyksJWZwMwoJZm1vdi5kCQlBVEFOQzQoJXBjKSwlZnAyCgoJZm11bC54CQklZnAxLCVmcDMJCSMgWipDNQoJZm11bC54CQklZnAxLCVmcDIJCSMgWipCNAoKCWZhZGQuZAkJQVRBTkMzKCVwYyksJWZwMwkjIEMzK1oqQzUKCWZhZGQuZAkJQVRBTkMyKCVwYyksJWZwMgkjIEMyK1oqQzQKCglmbXVsLngJCSVmcDMsJWZwMQkJIyBaKihDMytaKkM1KSwgRlAzIFJFTEVBU0VECglmbXVsLngJCSVmcDAsJWZwMgkJIyBZKihDMitaKkM0KQoKCWZhZGQuZAkJQVRBTkMxKCVwYyksJWZwMQkjIEMxK1oqKEMzK1oqQzUpCglmbXVsLngJCVgoJWE2KSwlZnAwCQkjIFgnKlkKCglmYWRkLngJCSVmcDIsJWZwMQkJIyBbWSooQzIrWipDNCldK1tDMStaKihDMytaKkM1KV0KCglmbXVsLngJCSVmcDEsJWZwMAkJIyBYJypZKihbQjErWiooQjMrWipCNSldCiMJCQkJCS4uLgkrW1kqKEIyK1oqKEI0K1oqQjYpKV0pCglmYWRkLngJCVgoJWE2KSwlZnAwCgoJZm1vdm0ueAkJKCVzcCkrLCYweDMwCQkjIHJlc3RvcmUgZnAyL2ZwMwoKCWZtb3YubAkJJWQwLCVmcGNyCQkjIHJlc3RvcmUgdXNlcnMgcm5kIG1vZGUscHJlYwoJdHN0LmIJCSglYTApCglicGwuYgkJcG9zX2JpZwoKbmVnX2JpZzoKCWZhZGQueAkJTlBJQlkyKCVwYyksJWZwMAoJYnJhCQl0X21pbngyCgpwb3NfYmlnOgoJZmFkZC54CQlQUElCWTIoJXBjKSwlZnAwCglicmEJCXRfcGlueDIKCkFUQU5IVUdFOgojLS1SRVRVUk4gU0lHTihYKSooUElCWTIgLSBUSU5ZKSA9IFNJR04oWCkqUElCWTIgLSBTSUdOKFgpKlRJTlkKCXRzdC5iCQkoJWEwKQoJYnBsLmIJCXBvc19odWdlCgpuZWdfaHVnZToKCWZtb3YueAkJTlBJQlkyKCVwYyksJWZwMAoJZm1vdi5sCQklZDAsJWZwY3IKCWZhZGQueAkJUFRJTlkoJXBjKSwlZnAwCglicmEJCXRfbWlueDIKCnBvc19odWdlOgoJZm1vdi54CQlQUElCWTIoJXBjKSwlZnAwCglmbW92LmwJCSVkMCwlZnBjcgoJZmFkZC54CQlOVElOWSglcGMpLCVmcDAKCWJyYQkJdF9waW54MgoKCWdsb2JhbAkJc2F0YW5kCiMtLUVOVFJZIFBPSU5UIEZPUiBBVEFOKFgpIEZPUiBERU5PUk1BTElaRUQgQVJHVU1FTlQKc2F0YW5kOgoJYnJhCQl0X2V4dGRucm0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBzYXNpbigpOiAgY29tcHV0ZXMgdGhlIGludmVyc2Ugc2luZSBvZiBhIG5vcm1hbGl6ZWQgaW5wdXQJCSMKIyBzYXNpbmQoKTogY29tcHV0ZXMgdGhlIGludmVyc2Ugc2luZSBvZiBhIGRlbm9ybWFsaXplZCBpbnB1dAkJIwojCQkJCQkJCQkJIwojIElOUFVUICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgkjCiMJYTAgPSBwb2ludGVyIHRvIGV4dGVuZGVkIHByZWNpc2lvbiBpbnB1dAkJCSMKIwlkMCA9IHJvdW5kIHByZWNpc2lvbixtb2RlCQkJCQkjCiMJCQkJCQkJCQkjCiMgT1VUUFVUICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCSMKIwlmcDAgPSBhcmNzaW4oWCkJCQkJCQkJIwojCQkJCQkJCQkJIwojIEFDQ1VSQUNZIGFuZCBNT05PVE9OSUNJVFkgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgkjCiMJVGhlIHJldHVybmVkIHJlc3VsdCBpcyB3aXRoaW4gMyB1bHBzIGluCTY0IHNpZ25pZmljYW50IGJpdCwJIwojCWkuZS4gd2l0aGluIDAuNTAwMSB1bHAgdG8gNTMgYml0cyBpZiB0aGUgcmVzdWx0IGlzIHN1YnNlcXVlbnRseQkjCiMJcm91bmRlZCB0byBkb3VibGUgcHJlY2lzaW9uLiBUaGUgcmVzdWx0IGlzIHByb3ZhYmx5IG1vbm90b25pYwkjCiMJaW4gZG91YmxlIHByZWNpc2lvbi4JCQkJCQkjCiMJCQkJCQkJCQkjCiMgQUxHT1JJVEhNICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCSMKIwkJCQkJCQkJCSMKIwlBU0lOCQkJCQkJCQkjCiMJMS4gSWYgfFh8ID49IDEsIGdvIHRvIDMuCQkJCQkjCiMJCQkJCQkJCQkjCiMJMi4gKHxYfCA8IDEpIENhbGN1bGF0ZSBhc2luKFgpIGJ5CQkJCSMKIwkJeiA6PSBzcXJ0KCBbMS1YXVsxK1hdICkJCQkJCSMKIwkJYXNpbihYKSA9IGF0YW4oIHggLyB6ICkuCQkJCSMKIwkJRXhpdC4JCQkJCQkJIwojCQkJCQkJCQkJIwojCTMuIElmIHxYfCA+IDEsIGdvIHRvIDUuCQkJCQkJIwojCQkJCQkJCQkJIwojCTQuICh8WHwgPSAxKSBzZ24gOj0gc2lnbihYKSwgcmV0dXJuIGFzaW4oWCkgOj0gc2duICogUGkvMi4gRXhpdC4jCiMJCQkJCQkJCQkjCiMJNS4gKHxYfCA+IDEpIEdlbmVyYXRlIGFuIGludmFsaWQgb3BlcmF0aW9uIGJ5IDAgKiBpbmZpbml0eS4JIwojCQlFeGl0LgkJCQkJCQkjCiMJCQkJCQkJCQkjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCglnbG9iYWwJCXNhc2luCnNhc2luOgoJZm1vdi54CQkoJWEwKSwlZnAwCQkjIExPQUQgSU5QVVQKCgltb3YubAkJKCVhMCksJWQxCgltb3YudwkJNCglYTApLCVkMQoJYW5kLmwJCSYweDdGRkZGRkZGLCVkMQoJY21wLmwJCSVkMSwmMHgzRkZGODAwMAoJYmdlLmIJCUFTSU5CSUcKCiMgVGhpcyBjYXRjaCBpcyBhZGRlZCBoZXJlIGZvciB0aGUgJzA2MCBRU1AuIE9yaWdpbmFsbHksIHRoZSBjYWxsIHRvCiMgc2F0YW4oKSB3b3VsZCBoYW5kbGUgdGhpcyBjYXNlIGJ5IGNhdXNpbmcgdGhlIGV4Y2VwdGlvbiB3aGljaCB3b3VsZAojIG5vdCBiZSBjYXVnaHQgdW50aWwgZ2VuX2V4Y2VwdCgpLiBOb3csIHdpdGggdGhlIGV4Y2VwdGlvbnMgYmVpbmcKIyBkZXRlY3RlZCBpbnNpZGUgb2Ygc2F0YW4oKSwgdGhlIGV4Y2VwdGlvbiB3b3VsZCBoYXZlIGJlZW4gaGFuZGxlZCB0aGVyZQojIGluc3RlYWQgb2YgaW5zaWRlIHNhc2luKCkgYXMgZXhwZWN0ZWQuCgljbXAubAkJJWQxLCYweDNGRDc4MDAwCglibHQudwkJQVNJTlRJTlkKCiMtLVRISVMgSVMgVEhFIFVTVUFMIENBU0UsIHxYfCA8IDEKIy0tQVNJTihYKSA9IEFUQU4oIFggLyBTUVJUKCAoMS1YKSgxK1gpICkgKQoKQVNJTk1BSU46CglmbW92LnMJCSYweDNGODAwMDAwLCVmcDEKCWZzdWIueAkJJWZwMCwlZnAxCQkjIDEtWAoJZm1vdm0ueAkJJjB4NCwtKCVzcCkJCSMgIHtmcDJ9CglmbW92LnMJCSYweDNGODAwMDAwLCVmcDIKCWZhZGQueAkJJWZwMCwlZnAyCQkjIDErWAoJZm11bC54CQklZnAyLCVmcDEJCSMgKDErWCkoMS1YKQoJZm1vdm0ueAkJKCVzcCkrLCYweDIwCQkjICB7ZnAyfQoJZnNxcnQueAkJJWZwMQkJCSMgU1FSVChbMS1YXVsxK1hdKQoJZmRpdi54CQklZnAxLCVmcDAJCSMgWC9TUVJUKFsxLVhdWzErWF0pCglmbW92bS54CQkmMHgwMSwtKCVzcCkJCSMgc2F2ZSBYL1NRUlQoLi4uKQoJbGVhCQkoJXNwKSwlYTAJCSMgcGFzcyBwdHIgdG8gWC9TUVJUKC4uLikKCWJzcgkJc2F0YW4KCWFkZC5sCQkmMHhjLCVzcAkJIyBjbGVhciBYL1NRUlQoLi4uKSBmcm9tIHN0YWNrCglicmEJCXRfaW54MgoKQVNJTkJJRzoKCWZhYnMueAkJJWZwMAkJCSMgfFh8CglmY21wLnMJCSVmcDAsJjB4M0Y4MDAwMDAKCWZiZ3QJCXRfb3BlcnIJCQkjIGNhdXNlIGFuIG9wZXJyIGV4Y2VwdGlvbgoKIy0tfFh8ID0gMSwgQVNJTihYKSA9ICstIFBJLzIuCkFTSU5PTkU6CglmbW92LngJCVBJQlkyKCVwYyksJWZwMAoJbW92LmwJCSglYTApLCVkMQoJYW5kLmwJCSYweDgwMDAwMDAwLCVkMQkJIyBTSUdOIEJJVCBPRiBYCglvci5sCQkmMHgzRjgwMDAwMCwlZDEJCSMgKy0xIElOIFNHTCBGT1JNQVQKCW1vdi5sCQklZDEsLSglc3ApCQkjIHB1c2ggU0lHTihYKSBJTiBTR0wtRk1UCglmbW92LmwJCSVkMCwlZnBjcgoJZm11bC5zCQkoJXNwKSssJWZwMAoJYnJhCQl0X2lueDIKCiMtLXxYfCA8IDJeKC00MCksIEFUQU4oWCkgPSBYCkFTSU5USU5ZOgoJZm1vdi5sCQklZDAsJWZwY3IJCSMgcmVzdG9yZSB1c2VycyBybmQgbW9kZSxwcmVjCgltb3YuYgkJJkZNT1ZfT1AsJWQxCQkjIGxhc3QgaW5zdCBpcyBNT1ZFCglmbW92LngJCSglYTApLCVmcDAJCSMgbGFzdCBpbnN0IC0gcG9zc2libGUgZXhjZXB0aW9uCglicmEJCXRfY2F0Y2gKCglnbG9iYWwJCXNhc2luZAojLS1BU0lOKFgpID0gWCBGT1IgREVOT1JNQUxJWkVEIFgKc2FzaW5kOgoJYnJhCQl0X2V4dGRucm0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBzYWNvcygpOiAgY29tcHV0ZXMgdGhlIGludmVyc2UgY29zaW5lIG9mIGEgbm9ybWFsaXplZCBpbnB1dAkJIwojIHNhY29zZCgpOiBjb21wdXRlcyB0aGUgaW52ZXJzZSBjb3NpbmUgb2YgYSBkZW5vcm1hbGl6ZWQgaW5wdXQJCSMKIwkJCQkJCQkJCSMKIyBJTlBVVCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioJIwojCWEwID0gcG9pbnRlciB0byBleHRlbmRlZCBwcmVjaXNpb24gaW5wdXQJCQkjCiMJZDAgPSByb3VuZCBwcmVjaXNpb24sbW9kZQkJCQkJIwojCQkJCQkJCQkJIwojIE9VVFBVVCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAjCiMJZnAwID0gYXJjY29zKFgpCQkJCQkJCSMKIwkJCQkJCQkJCSMKIyBBQ0NVUkFDWSBhbmQgTU9OT1RPTklDSVRZICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioJIwojCVRoZSByZXR1cm5lZCByZXN1bHQgaXMgd2l0aGluIDMgdWxwcyBpbgk2NCBzaWduaWZpY2FudCBiaXQsCSMKIwlpLmUuIHdpdGhpbiAwLjUwMDEgdWxwIHRvIDUzIGJpdHMgaWYgdGhlIHJlc3VsdCBpcyBzdWJzZXF1ZW50bHkJIwojCXJvdW5kZWQgdG8gZG91YmxlIHByZWNpc2lvbi4gVGhlIHJlc3VsdCBpcyBwcm92YWJseSBtb25vdG9uaWMJIwojCWluIGRvdWJsZSBwcmVjaXNpb24uCQkJCQkJIwojCQkJCQkJCQkJIwojIEFMR09SSVRITSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAjCiMJCQkJCQkJCQkjCiMJQUNPUwkJCQkJCQkJIwojCTEuIElmIHxYfCA+PSAxLCBnbyB0byAzLgkJCQkJIwojCQkJCQkJCQkJIwojCTIuICh8WHwgPCAxKSBDYWxjdWxhdGUgYWNvcyhYKSBieQkJCQkjCiMJCXogOj0gKDEtWCkgLyAoMStYKQkJCQkJIwojCQlhY29zKFgpID0gMiAqIGF0YW4oIHNxcnQoeikgKS4JCQkJIwojCQlFeGl0LgkJCQkJCQkjCiMJCQkJCQkJCQkjCiMJMy4gSWYgfFh8ID4gMSwgZ28gdG8gNS4JCQkJCQkjCiMJCQkJCQkJCQkjCiMJNC4gKHxYfCA9IDEpIElmIFggPiAwLCByZXR1cm4gMC4gT3RoZXJ3aXNlLCByZXR1cm4gUGkuIEV4aXQuCSMKIwkJCQkJCQkJCSMKIwk1LiAofFh8ID4gMSkgR2VuZXJhdGUgYW4gaW52YWxpZCBvcGVyYXRpb24gYnkgMCAqIGluZmluaXR5LgkjCiMJCUV4aXQuCQkJCQkJCSMKIwkJCQkJCQkJCSMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKCWdsb2JhbAkJc2Fjb3MKc2Fjb3M6CglmbW92LngJCSglYTApLCVmcDAJCSMgTE9BRCBJTlBVVAoKCW1vdi5sCQkoJWEwKSwlZDEJCSMgcGFjayBleHAgdy8gdXBwZXIgMTYgZnJhY3Rpb24KCW1vdi53CQk0KCVhMCksJWQxCglhbmQubAkJJjB4N0ZGRkZGRkYsJWQxCgljbXAubAkJJWQxLCYweDNGRkY4MDAwCgliZ2UuYgkJQUNPU0JJRwoKIy0tVEhJUyBJUyBUSEUgVVNVQUwgQ0FTRSwgfFh8IDwgMQojLS1BQ09TKFgpID0gMiAqIEFUQU4oCVNRUlQoICgxLVgpLygxK1gpICkgKQoKQUNPU01BSU46CglmbW92LnMJCSYweDNGODAwMDAwLCVmcDEKCWZhZGQueAkJJWZwMCwlZnAxCQkjIDErWAoJZm5lZy54CQklZnAwCQkJIyAtWAoJZmFkZC5zCQkmMHgzRjgwMDAwMCwlZnAwCSMgMS1YCglmZGl2LngJCSVmcDEsJWZwMAkJIyAoMS1YKS8oMStYKQoJZnNxcnQueAkJJWZwMAkJCSMgU1FSVCgoMS1YKS8oMStYKSkKCW1vdi5sCQklZDAsLSglc3ApCQkjIHNhdmUgb3JpZ2luYWwgdXNlcnMgZnBjcgoJY2xyLmwJCSVkMAoJZm1vdm0ueAkJJjB4MDEsLSglc3ApCQkjIHNhdmUgU1FSVCguLi4pIHRvIHN0YWNrCglsZWEJCSglc3ApLCVhMAkJIyBwYXNzIHB0ciB0byBzcXJ0Cglic3IJCXNhdGFuCQkJIyBBVEFOKFNRUlQoWzEtWF0vWzErWF0pKQoJYWRkLmwJCSYweGMsJXNwCQkjIGNsZWFyIFNRUlQoLi4uKSBmcm9tIHN0YWNrCgoJZm1vdi5sCQkoJXNwKSssJWZwY3IJCSMgcmVzdG9yZSB1c2VycyByb3VuZCBwcmVjLG1vZGUKCWZhZGQueAkJJWZwMCwlZnAwCQkjIDIgKiBBVEFOKCBTVFVGRiApCglicmEJCXRfcGlueDIKCkFDT1NCSUc6CglmYWJzLngJCSVmcDAKCWZjbXAucwkJJWZwMCwmMHgzRjgwMDAwMAoJZmJndAkJdF9vcGVycgkJCSMgY2F1c2UgYW4gb3BlcnIgZXhjZXB0aW9uCgojLS18WHwgPSAxLCBBQ09TKFgpID0gMCBPUiBQSQoJdHN0LmIJCSglYTApCQkJIyBpcyBYIHBvc2l0aXZlIG9yIG5lZ2F0aXZlPwoJYnBsLmIJCUFDT1NQMQoKIy0tWCA9IC0xCiNSZXR1cm5zIFBJIGFuZCBpbmV4YWN0IGV4Y2VwdGlvbgpBQ09TTTE6CglmbW92LngJCVBJKCVwYyksJWZwMAkJIyBsb2FkIFBJCglmbW92LmwJCSVkMCwlZnBjcgkJIyBsb2FkIHJvdW5kIG1vZGUscHJlYwoJZmFkZC5zCQkmMHgwMDgwMDAwMCwlZnAwCSMgYWRkIGEgc21hbGwgdmFsdWUKCWJyYQkJdF9waW54MgoKQUNPU1AxOgoJYnJhCQlsZF9wemVybwkJIyBhbnN3ZXIgaXMgcG9zaXRpdmUgemVybwoKCWdsb2JhbAkJc2Fjb3NkCiMtLUFDT1MoWCkgPSBQSS8yIEZPUiBERU5PUk1BTElaRUQgWApzYWNvc2Q6CglmbW92LmwJCSVkMCwlZnBjcgkJIyBsb2FkIHVzZXIncyBybmQgbW9kZS9wcmVjCglmbW92LngJCVBJQlkyKCVwYyksJWZwMAoJYnJhCQl0X3BpbngyCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgc2V0b3goKTogICAgY29tcHV0ZXMgdGhlIGV4cG9uZW50aWFsIGZvciBhIG5vcm1hbGl6ZWQgaW5wdXQJCSMKIyBzZXRveGQoKTogICBjb21wdXRlcyB0aGUgZXhwb25lbnRpYWwgZm9yIGEgZGVub3JtYWxpemVkIGlucHV0CQkjCiMgc2V0b3htMSgpOiAgY29tcHV0ZXMgdGhlIGV4cG9uZW50aWFsIG1pbnVzIDEgZm9yIGEgbm9ybWFsaXplZCBpbnB1dAkjCiMgc2V0b3htMWQoKTogY29tcHV0ZXMgdGhlIGV4cG9uZW50aWFsIG1pbnVzIDEgZm9yIGEgZGVub3JtYWxpemVkIGlucHV0CSMKIwkJCQkJCQkJCSMKIyBJTlBVVAkqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogIwojCWEwID0gcG9pbnRlciB0byBleHRlbmRlZCBwcmVjaXNpb24gaW5wdXQJCQkjCiMJZDAgPSByb3VuZCBwcmVjaXNpb24sbW9kZQkJCQkJIwojCQkJCQkJCQkJIwojIE9VVFBVVCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAjCiMJZnAwID0gZXhwKFgpIG9yIGV4cChYKS0xCQkJCQkjCiMJCQkJCQkJCQkjCiMgQUNDVVJBQ1kgYW5kIE1PTk9UT05JQ0lUWSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICMKIwlUaGUgcmV0dXJuZWQgcmVzdWx0IGlzIHdpdGhpbiAwLjg1IHVscHMgaW4gNjQgc2lnbmlmaWNhbnQgYml0LAkjCiMJaS5lLiB3aXRoaW4gMC41MDAxIHVscCB0byA1MyBiaXRzIGlmIHRoZSByZXN1bHQgaXMgc3Vic2VxdWVudGx5ICMKIwlyb3VuZGVkIHRvIGRvdWJsZSBwcmVjaXNpb24uIFRoZSByZXN1bHQgaXMgcHJvdmFibHkgbW9ub3RvbmljCSMKIwlpbiBkb3VibGUgcHJlY2lzaW9uLgkJCQkJCSMKIwkJCQkJCQkJCSMKIyBBTEdPUklUSE0gYW5kIElNUExFTUVOVEFUSU9OICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogIwojCQkJCQkJCQkJIwojCXNldG94ZAkJCQkJCQkJIwojCS0tLS0tLQkJCQkJCQkJIwojCVN0ZXAgMS4JU2V0IGFucyA6PSAxLjAJCQkJCQkjCiMJCQkJCQkJCQkjCiMJU3RlcCAyLglSZXR1cm4JYW5zIDo9IGFucyArIHNpZ24oWCkqMl4oLTEyNikuIEV4aXQuCQkjCiMJTm90ZXM6CVRoaXMgd2lsbCBhbHdheXMgZ2VuZXJhdGUgb25lIGV4Y2VwdGlvbiAtLSBpbmV4YWN0LgkjCiMJCQkJCQkJCQkjCiMJCQkJCQkJCQkjCiMJc2V0b3gJCQkJCQkJCSMKIwktLS0tLQkJCQkJCQkJIwojCQkJCQkJCQkJIwojCVN0ZXAgMS4JRmlsdGVyIG91dCBleHRyZW1lIGNhc2VzIG9mIGlucHV0IGFyZ3VtZW50LgkJIwojCQkxLjEJSWYgfFh8ID49IDJeKC02NSksIGdvIHRvIFN0ZXAgMS4zLgkJIwojCQkxLjIJR28gdG8gU3RlcCA3LgkJCQkJIwojCQkxLjMJSWYgfFh8IDwgMTYzODAgbG9nKDIpLCBnbyB0byBTdGVwIDIuCQkjCiMJCTEuNAlHbyB0byBTdGVwIDguCQkJCQkjCiMJTm90ZXM6CVRoZSB1c3VhbCBjYXNlIHNob3VsZCB0YWtlIHRoZSBicmFuY2hlcyAxLjEgLT4gMS4zIC0+IDIuIwojCQlUbyBhdm9pZCB0aGUgdXNlIG9mIGZsb2F0aW5nLXBvaW50IGNvbXBhcmlzb25zLCBhCSMKIwkJY29tcGFjdCByZXByZXNlbnRhdGlvbiBvZiB8WHwgaXMgdXNlZC4gVGhpcyBmb3JtYXQgaXMgYQkjCiMJCTMyLWJpdCBpbnRlZ2VyLCB0aGUgdXBwZXIgKG1vcmUgc2lnbmlmaWNhbnQpIDE2IGJpdHMJIwojCQlhcmUgdGhlIHNpZ24gYW5kIGJpYXNlZCBleHBvbmVudCBmaWVsZCBvZiB8WHw7IHRoZQkjCiMJCWxvd2VyIDE2IGJpdHMgYXJlIHRoZSAxNiBtb3N0IHNpZ25pZmljYW50IGZyYWN0aW9uCSMKIwkJKGluY2x1ZGluZyB0aGUgZXhwbGljaXQgYml0KSBiaXRzIG9mIHxYfC4gQ29uc2VxdWVudGx5LAkjCiMJCXRoZSBjb21wYXJpc29ucyBpbiBTdGVwcyAxLjEgYW5kIDEuMyBjYW4gYmUgcGVyZm9ybWVkCSMKIwkJYnkgaW50ZWdlciBjb21wYXJpc29uLiBOb3RlIGFsc28gdGhhdCB0aGUgY29uc3RhbnQJIwojCQkxNjM4MCBsb2coMikgdXNlZCBpbiBTdGVwIDEuMyBpcyBhbHNvIGluIHRoZSBjb21wYWN0CSMKIwkJZm9ybS4gVGh1cyB0YWtpbmcgdGhlIGJyYW5jaCB0byBTdGVwIDIgZ3VhcmFudGVlcwkjCiMJCXxYfCA8IDE2MzgwIGxvZygyKS4gVGhlcmUgaXMgbm8gaGFybSB0byBoYXZlIGEgc21hbGwJIwojCQludW1iZXIgb2YgY2FzZXMgd2hlcmUgfFh8IGlzIGxlc3MgdGhhbiwJYnV0IGNsb3NlIHRvLAkjCiMJCTE2MzgwIGxvZygyKSBhbmQgdGhlIGJyYW5jaCB0byBTdGVwIDkgaXMgdGFrZW4uCQkjCiMJCQkJCQkJCQkjCiMJU3RlcCAyLglDYWxjdWxhdGUgTiA9IHJvdW5kLXRvLW5lYXJlc3QtaW50KCBYICogNjQvbG9nMiApLgkjCiMJCTIuMQlTZXQgQWRqRmxhZyA6PSAwIChpbmRpY2F0ZXMgdGhlIGJyYW5jaCAxLjMgLT4gMiAjCiMJCQl3YXMgdGFrZW4pCQkJCQkjCiMJCTIuMglOIDo9IHJvdW5kLXRvLW5lYXJlc3QtaW50ZWdlciggWCAqIDY0L2xvZzIgKS4JIwojCQkyLjMJQ2FsY3VsYXRlCUogPSBOIG1vZCA2NDsgc28gSiA9IDAsMSwyLC4uLiwgIwojCQkJb3IgNjMuCQkJCQkJIwojCQkyLjQJQ2FsY3VsYXRlCU0gPSAoTiAtIEopLzY0OyBzbyBOID0gNjRNICsgSi4JIwojCQkyLjUJQ2FsY3VsYXRlIHRoZSBhZGRyZXNzIG9mIHRoZSBzdG9yZWQgdmFsdWUgb2YJIwojCQkJMl4oSi82NCkuCQkJCQkjCiMJCTIuNglDcmVhdGUgdGhlIHZhbHVlIFNjYWxlID0gMl5NLgkJCSMKIwlOb3RlczoJVGhlIGNhbGN1bGF0aW9uIGluIDIuMiBpcyByZWFsbHkgcGVyZm9ybWVkIGJ5CQkjCiMJCQlaIDo9IFggKiBjb25zdGFudAkJCQkjCiMJCQlOIDo9IHJvdW5kLXRvLW5lYXJlc3QtaW50ZWdlcihaKQkJIwojCQl3aGVyZQkJCQkJCQkjCiMJCQljb25zdGFudCA6PSBzaW5nbGUtcHJlY2lzaW9uKCA2NC9sb2cgMiApLgkjCiMJCQkJCQkJCQkjCiMJCVVzaW5nIGEgc2luZ2xlLXByZWNpc2lvbiBjb25zdGFudCBhdm9pZHMgbWVtb3J5CQkjCiMJCWFjY2Vzcy4gQW5vdGhlciBlZmZlY3Qgb2YgdXNpbmcgYSBzaW5nbGUtcHJlY2lzaW9uCSMKIwkJImNvbnN0YW50IiBpcyB0aGF0IHRoZSBjYWxjdWxhdGVkIHZhbHVlIFogaXMJCSMKIwkJCQkJCQkJCSMKIwkJCVogPSBYKig2NC9sb2cyKSooMStlcHMpLCB8ZXBzfCA8PSAyXigtMjQpLgkjCiMJCQkJCQkJCQkjCiMJCVRoaXMgZXJyb3IgaGFzIHRvIGJlIGNvbnNpZGVyZWQgbGF0ZXIgaW4gU3RlcHMgMyBhbmQgNC4JIwojCQkJCQkJCQkJIwojCVN0ZXAgMy4JQ2FsY3VsYXRlIFggLSBOKmxvZzIvNjQuCQkJCSMKIwkJMy4xCVIgOj0gWCArIE4qTDEsCQkJCQkjCiMJCQkJd2hlcmUgTDEgOj0gc2luZ2xlLXByZWNpc2lvbigtbG9nMi82NCkuCSMKIwkJMy4yCVIgOj0gUiArIE4qTDIsCQkJCQkjCiMJCQkJTDIgOj0gZXh0ZW5kZWQtcHJlY2lzaW9uKC1sb2cyLzY0IC0gTDEpLiMKIwlOb3RlczoJYSkgVGhlIHdheSBMMSBhbmQgTDIgYXJlIGNob3NlbiBlbnN1cmVzIEwxK0wyCQkjCiMJCWFwcHJveGltYXRlIHRoZSB2YWx1ZSAtbG9nMi82NCB0byA4OCBiaXRzIG9mIGFjY3VyYWN5LgkjCiMJCWIpIE4qTDEgaXMgZXhhY3QgYmVjYXVzZSBOIGlzIG5vIGxvbmdlciB0aGFuIDIyIGJpdHMJIwojCQlhbmQgTDEgaXMgbm8gbG9uZ2VyIHRoYW4gMjQgYml0cy4JCQkjCiMJCWMpIFRoZSBjYWxjdWxhdGlvbiBYK04qTDEgaXMgYWxzbyBleGFjdCBkdWUgdG8JCSMKIwkJY2FuY2VsbGF0aW9uLiBUaHVzLCBSIGlzIHByYWN0aWNhbGx5IFgrTihMMStMMikgdG8gZnVsbAkjCiMJCTY0IGJpdHMuCQkJCQkJIwojCQlkKSBJdCBpcyBpbXBvcnRhbnQgdG8gZXN0aW1hdGUgaG93IGxhcmdlIGNhbiB8UnwgYmUJIwojCQlhZnRlciBTdGVwIDMuMi4JCQkJCQkjCiMJCQkJCQkJCQkjCiMJCU4gPSBybmQtdG8taW50KCBYKjY0L2xvZzIgKDErZXBzKSApLCB8ZXBzfDw9Ml4oLTI0KQkjCiMJCVgqNjQvbG9nMiAoMStlcHMpCT0JTiArIGYsCXxmfCA8PSAwLjUJIwojCQlYKjY0L2xvZzIgLSBOCT0JZiAtIGVwcypYIDY0L2xvZzIJCSMKIwkJWCAtIE4qbG9nMi82NAk9CWYqbG9nMi82NCAtIGVwcypYCQkjCiMJCQkJCQkJCQkjCiMJCQkJCQkJCQkjCiMJCU5vdyB8WHwgPD0gMTY0NDYgbG9nMiwgdGh1cwkJCQkjCiMJCQkJCQkJCQkjCiMJCQl8WCAtIE4qbG9nMi82NHwgPD0gKDAuNSArIDE2NDQ2LzJeKDE4KSkqbG9nMi82NAkjCiMJCQkJCTw9IDAuNTcgbG9nMi82NC4JCSMKIwkJIFRoaXMgYm91bmQgd2lsbCBiZSB1c2VkIGluIFN0ZXAgNC4JCQkjCiMJCQkJCQkJCQkjCiMJU3RlcCA0LglBcHByb3hpbWF0ZSBleHAoUiktMSBieSBhIHBvbHlub21pYWwJCQkjCiMJCXAgPSBSICsgUipSKihBMSArIFIqKEEyICsgUiooQTMgKyBSKihBNCArIFIqQTUpKSkpCSMKIwlOb3RlczoJYSkgSW4gb3JkZXIgdG8gcmVkdWNlIG1lbW9yeSBhY2Nlc3MsIHRoZSBjb2VmZmljaWVudHMJIwojCQlhcmUgbWFkZSBhcyAic2hvcnQiIGFzIHBvc3NpYmxlOiBBMSAod2hpY2ggaXMgMS8yKSwgQTQJIwojCQlhbmQgQTUgYXJlIHNpbmdsZSBwcmVjaXNpb247IEEyIGFuZCBBMyBhcmUgZG91YmxlCSMKIwkJcHJlY2lzaW9uLgkJCQkJCSMKIwkJYikgRXZlbiB3aXRoIHRoZSByZXN0cmljdGlvbnMgYWJvdmUsCQkJIwojCQkgICB8cCAtIChleHAoUiktMSl8IDwgMl4oLTY4LjgpIGZvciBhbGwgfFJ8IDw9IDAuMDA2Mi4JIwojCQlOb3RlIHRoYXQgMC4wMDYyIGlzIHNsaWdodGx5IGJpZ2dlciB0aGFuIDAuNTcgbG9nMi82NC4JIwojCQljKSBUbyBmdWxseSB1dGlsaXplIHRoZSBwaXBlbGluZSwgcCBpcyBzZXBhcmF0ZWQgaW50bwkjCiMJCXR3byBpbmRlcGVuZGVudCBwaWVjZXMgb2Ygcm91Z2hseSBlcXVhbCBjb21wbGV4aXRpZXMJIwojCQkJcCA9IFsgUiArIFIqUyooQTIgKyBTKkE0KSBdCSsJCSMKIwkJCQlbIFMqKEExICsgUyooQTMgKyBTKkE1KSkgXQkJIwojCQl3aGVyZSBTID0gUipSLgkJCQkJCSMKIwkJCQkJCQkJCSMKIwlTdGVwIDUuCUNvbXB1dGUgMl4oSi82NCkqZXhwKFIpID0gMl4oSi82NCkqKDErcCkgYnkJCSMKIwkJCQlhbnMgOj0gVCArICggVCpwICsgdCkJCQkjCiMJCXdoZXJlIFQgYW5kIHQgYXJlIHRoZSBzdG9yZWQgdmFsdWVzIGZvciAyXihKLzY0KS4JIwojCU5vdGVzOgkyXihKLzY0KSBpcyBzdG9yZWQgYXMgVCBhbmQgdCB3aGVyZSBUK3QgYXBwcm94aW1hdGVzCSMKIwkJMl4oSi82NCkgdG8gcm91Z2hseSA4NSBiaXRzOyBUIGlzIGluIGV4dGVuZGVkIHByZWNpc2lvbgkjCiMJCWFuZCB0IGlzIGluIHNpbmdsZSBwcmVjaXNpb24uIE5vdGUgYWxzbyB0aGF0IFQgaXMJIwojCQlyb3VuZGVkIHRvIDYyIGJpdHMgc28gdGhhdCB0aGUgbGFzdCB0d28gYml0cyBvZiBUIGFyZQkjCiMJCXplcm8uIFRoZSByZWFzb24gZm9yIHN1Y2ggYSBzcGVjaWFsIGZvcm0gaXMgdGhhdCBULTEsCSMKIwkJVC0yLCBhbmQgVC04IHdpbGwgYWxsIGJlIGV4YWN0IC0tLSBhIHByb3BlcnR5IHRoYXQgd2lsbAkjCiMJCWdpdmUgbXVjaCBtb3JlIGFjY3VyYXRlIGNvbXB1dGF0aW9uIG9mIHRoZSBmdW5jdGlvbgkjCiMJCUVYUE0xLgkJCQkJCQkjCiMJCQkJCQkJCQkjCiMJU3RlcCA2LglSZWNvbnN0cnVjdGlvbiBvZiBleHAoWCkJCQkJIwojCQkJZXhwKFgpID0gMl5NICogMl4oSi82NCkgKiBleHAoUikuCQkjCiMJCTYuMQlJZiBBZGpGbGFnID0gMCwgZ28gdG8gNi4zCQkJIwojCQk2LjIJYW5zIDo9IGFucyAqIEFkalNjYWxlCQkJCSMKIwkJNi4zCVJlc3RvcmUgdGhlIHVzZXIgRlBDUgkJCQkjCiMJCTYuNAlSZXR1cm4gYW5zIDo9IGFucyAqIFNjYWxlLiBFeGl0LgkJIwojCU5vdGVzOglJZiBBZGpGbGFnID0gMCwgd2UgaGF2ZSBYID0gTWxvZzIgKyBKbG9nMi82NCArIFIsCSMKIwkJfE18IDw9IDE2MzgwLCBhbmQgU2NhbGUgPSAyXk0uIE1vcmVvdmVyLCBleHAoWCkgd2lsbAkjCiMJCW5laXRoZXIgb3ZlcmZsb3cgbm9yIHVuZGVyZmxvdy4gSWYgQWRqRmxhZyA9IDEsIHRoYXQJIwojCQltZWFucyB0aGF0CQkJCQkJIwojCQkJWCA9IChNMStNKWxvZzIgKyBKbG9nMi82NCArIFIsIHxNMStNfCA+PSAxNjM4MC4JIwojCQlIZW5jZSwgZXhwKFgpIG1heSBvdmVyZmxvdyBvciB1bmRlcmZsb3cgb3IgbmVpdGhlci4JIwojCQlXaGVuIHRoYXQgaXMgdGhlIGNhc2UsIEFkalNjYWxlID0gMl4oTTEpIHdoZXJlIE0xIGlzCSMKIwkJYXBwcm94aW1hdGVseSBNLiBUaHVzIDYuMiB3aWxsIG5ldmVyIGNhdXNlCQkjCiMJCW92ZXIvdW5kZXJmbG93LiBQb3NzaWJsZSBleGNlcHRpb24gaW4gNi40IGlzIG92ZXJmbG93CSMKIwkJb3IgdW5kZXJmbG93LiBUaGUgaW5leGFjdCBleGNlcHRpb24gaXMgbm90IGdlbmVyYXRlZCBpbgkjCiMJCTYuNC4gQWx0aG91Z2ggb25lIGNhbiBhcmd1ZSB0aGF0IHRoZSBpbmV4YWN0IGZsYWcJIwojCQlzaG91bGQgYWx3YXlzIGJlIHJhaXNlZCwgdG8gc2ltdWxhdGUgdGhhdCBleGNlcHRpb24JIwojCQljb3N0IHRvIG11Y2ggdGhhbiB0aGUgZmxhZyBpcyB3b3J0aCBpbiBwcmFjdGljYWwgdXNlcy4JIwojCQkJCQkJCQkJIwojCVN0ZXAgNy4JUmV0dXJuIDEgKyBYLgkJCQkJCSMKIwkJNy4xCWFucyA6PSBYCQkJCQkjCiMJCTcuMglSZXN0b3JlIHVzZXIgRlBDUi4JCQkJIwojCQk3LjMJUmV0dXJuIGFucyA6PSAxICsgYW5zLiBFeGl0CQkJIwojCU5vdGVzOglGb3Igbm9uLXplcm8gWCwgdGhlIGluZXhhY3QgZXhjZXB0aW9uIHdpbGwgYWx3YXlzIGJlCSMKIwkJcmFpc2VkIGJ5IDcuMy4gVGhhdCBpcyB0aGUgb25seSBleGNlcHRpb24gcmFpc2VkIGJ5IDcuMy4jCiMJCU5vdGUgYWxzbyB0aGF0IHdlIHVzZSB0aGUgRk1PVkVNIGluc3RydWN0aW9uIHRvIG1vdmUgWAkjCiMJCWluIFN0ZXAgNy4xIHRvIGF2b2lkIHVubmVjZXNzYXJ5IHRyYXBwaW5nLiAoQWx0aG91Z2gJIwojCQl0aGUgRk1PVkVNIG1heSBub3Qgc2VlbSByZWxldmFudCBzaW5jZSBYIGlzIG5vcm1hbGl6ZWQsCSMKIwkJdGhlIHByZWNhdXRpb24gd2lsbCBiZSB1c2VmdWwgaW4gdGhlIGxpYnJhcnkgdmVyc2lvbiBvZgkjCiMJCXRoaXMgY29kZSB3aGVyZSB0aGUgc2VwYXJhdGUgZW50cnkgZm9yIGRlbm9ybWFsaXplZAkjCiMJCWlucHV0cyB3aWxsIGJlIGRvbmUgYXdheSB3aXRoLikJCQkJIwojCQkJCQkJCQkJIwojCVN0ZXAgOC4JSGFuZGxlIGV4cChYKSB3aGVyZSB8WHwgPj0gMTYzODBsb2cyLgkJCSMKIwkJOC4xCUlmIHxYfCA+IDE2NDgwIGxvZzIsIGdvIHRvIFN0ZXAgOS4JCSMKIwkJKG1pbWljIDIuMiAtIDIuNikJCQkJCSMKIwkJOC4yCU4gOj0gcm91bmQtdG8taW50ZWdlciggWCAqIDY0L2xvZzIgKQkJIwojCQk4LjMJQ2FsY3VsYXRlIEogPSBOIG1vZCA2NCwgSiA9IDAsMSwuLi4sNjMJCSMKIwkJOC40CUsgOj0gKE4tSikvNjQsIE0xIDo9IHRydW5jYXRlKEsvMiksIE0gPSBLLU0xLAkjCiMJCQlBZGpGbGFnIDo9IDEuCQkJCQkjCiMJCTguNQlDYWxjdWxhdGUgdGhlIGFkZHJlc3Mgb2YgdGhlIHN0b3JlZCB2YWx1ZQkjCiMJCQkyXihKLzY0KS4JCQkJCSMKIwkJOC42CUNyZWF0ZSB0aGUgdmFsdWVzIFNjYWxlID0gMl5NLCBBZGpTY2FsZSA9IDJeTTEuCSMKIwkJOC43CUdvIHRvIFN0ZXAgMy4JCQkJCSMKIwlOb3RlczoJUmVmZXIgdG8gbm90ZXMgZm9yIDIuMiAtIDIuNi4JCQkJIwojCQkJCQkJCQkJIwojCVN0ZXAgOS4JSGFuZGxlIGV4cChYKSwgfFh8ID4gMTY0ODAgbG9nMi4JCQkjCiMJCTkuMQlJZiBYIDwgMCwgZ28gdG8gOS4zCQkJCSMKIwkJOS4yCWFucyA6PSBIdWdlLCBnbyB0byA5LjQJCQkJIwojCQk5LjMJYW5zIDo9IFRpbnkuCQkJCQkjCiMJCTkuNAlSZXN0b3JlIHVzZXIgRlBDUi4JCQkJIwojCQk5LjUJUmV0dXJuIGFucyA6PSBhbnMgKiBhbnMuIEV4aXQuCQkJIwojCU5vdGVzOglFeHAoWCkgd2lsbCBzdXJlbHkgb3ZlcmZsb3cgb3IgdW5kZXJmbG93LCBkZXBlbmRpbmcgb24JIwojCQlYJ3Mgc2lnbi4gIkh1Z2UiIGFuZCAiVGlueSIgYXJlIHJlc3BlY3RpdmVseSBsYXJnZS90aW55CSMKIwkJZXh0ZW5kZWQtcHJlY2lzaW9uIG51bWJlcnMgd2hvc2Ugc3F1YXJlIG92ZXIvdW5kZXJmbG93CSMKIwkJd2l0aCBhbiBpbmV4YWN0IHJlc3VsdC4gVGh1cywgOS41IGFsd2F5cyByYWlzZXMgdGhlCSMKIwkJaW5leGFjdCB0b2dldGhlciB3aXRoIGVpdGhlciBvdmVyZmxvdyBvciB1bmRlcmZsb3cuCSMKIwkJCQkJCQkJCSMKIwlzZXRveG0xZAkJCQkJCQkjCiMJLS0tLS0tLS0JCQkJCQkJIwojCQkJCQkJCQkJIwojCVN0ZXAgMS4JU2V0IGFucyA6PSAwCQkJCQkJIwojCQkJCQkJCQkJIwojCVN0ZXAgMi4JUmV0dXJuCWFucyA6PSBYICsgYW5zLiBFeGl0LgkJCQkjCiMJTm90ZXM6CVRoaXMgd2lsbCByZXR1cm4gWCB3aXRoIHRoZSBhcHByb3ByaWF0ZSByb3VuZGluZwkjCiMJCSBwcmVjaXNpb24gcHJlc2NyaWJlZCBieSB0aGUgdXNlciBGUENSLgkJCSMKIwkJCQkJCQkJCSMKIwlzZXRveG0xCQkJCQkJCQkjCiMJLS0tLS0tLQkJCQkJCQkJIwojCQkJCQkJCQkJIwojCVN0ZXAgMS4JQ2hlY2sgfFh8CQkJCQkJIwojCQkxLjEJSWYgfFh8ID49IDEvNCwgZ28gdG8gU3RlcCAxLjMuCQkJIwojCQkxLjIJR28gdG8gU3RlcCA3LgkJCQkJIwojCQkxLjMJSWYgfFh8IDwgNzAgbG9nKDIpLCBnbyB0byBTdGVwIDIuCQkjCiMJCTEuNAlHbyB0byBTdGVwIDEwLgkJCQkJIwojCU5vdGVzOglUaGUgdXN1YWwgY2FzZSBzaG91bGQgdGFrZSB0aGUgYnJhbmNoZXMgMS4xIC0+IDEuMyAtPiAyLiMKIwkJSG93ZXZlciwgaXQgaXMgY29uY2VpdmFibGUgfFh8IGNhbiBiZSBzbWFsbCB2ZXJ5IG9mdGVuCSMKIwkJYmVjYXVzZSBFWFBNMSBpcyBpbnRlbmRlZCB0byBldmFsdWF0ZSBleHAoWCktMQkJIwojCQlhY2N1cmF0ZWx5IHdoZW4gfFh8IGlzIHNtYWxsLiBGb3IgZnVydGhlciBkZXRhaWxzIG9uCSMKIwkJdGhlIGNvbXBhcmlzb25zLCBzZWUgdGhlIG5vdGVzIG9uIFN0ZXAgMSBvZiBzZXRveC4JIwojCQkJCQkJCQkJIwojCVN0ZXAgMi4JQ2FsY3VsYXRlIE4gPSByb3VuZC10by1uZWFyZXN0LWludCggWCAqIDY0L2xvZzIgKS4JIwojCQkyLjEJTiA6PSByb3VuZC10by1uZWFyZXN0LWludGVnZXIoIFggKiA2NC9sb2cyICkuCSMKIwkJMi4yCUNhbGN1bGF0ZQlKID0gTiBtb2QgNjQ7IHNvIEogPSAwLDEsMiwuLi4sICMKIwkJCW9yIDYzLgkJCQkJCSMKIwkJMi4zCUNhbGN1bGF0ZQlNID0gKE4gLSBKKS82NDsgc28gTiA9IDY0TSArIEouCSMKIwkJMi40CUNhbGN1bGF0ZSB0aGUgYWRkcmVzcyBvZiB0aGUgc3RvcmVkIHZhbHVlIG9mCSMKIwkJCTJeKEovNjQpLgkJCQkJIwojCQkyLjUJQ3JlYXRlIHRoZSB2YWx1ZXMgU2MgPSAyXk0gYW5kCQkJIwojCQkJT25lYnlTYyA6PSAtMl4oLU0pLgkJCQkjCiMJTm90ZXM6CVNlZSB0aGUgbm90ZXMgb24gU3RlcCAyIG9mIHNldG94LgkJCSMKIwkJCQkJCQkJCSMKIwlTdGVwIDMuCUNhbGN1bGF0ZSBYIC0gTipsb2cyLzY0LgkJCQkjCiMJCTMuMQlSIDo9IFggKyBOKkwxLAkJCQkJIwojCQkJCXdoZXJlIEwxIDo9IHNpbmdsZS1wcmVjaXNpb24oLWxvZzIvNjQpLgkjCiMJCTMuMglSIDo9IFIgKyBOKkwyLAkJCQkJIwojCQkJCUwyIDo9IGV4dGVuZGVkLXByZWNpc2lvbigtbG9nMi82NCAtIEwxKS4jCiMJTm90ZXM6CUFwcGx5aW5nIHRoZSBhbmFseXNpcyBvZiBTdGVwIDMgb2Ygc2V0b3ggaW4gdGhpcyBjYXNlCSMKIwkJc2hvd3MgdGhhdCB8UnwgPD0gMC4wMDU1IChub3RlIHRoYXQgfFh8IDw9IDcwIGxvZzIgaW4JIwojCQl0aGlzIGNhc2UpLgkJCQkJCSMKIwkJCQkJCQkJCSMKIwlTdGVwIDQuCUFwcHJveGltYXRlIGV4cChSKS0xIGJ5IGEgcG9seW5vbWlhbAkJCSMKIwkJCXAgPSBSK1IqUiooQTErUiooQTIrUiooQTMrUiooQTQrUiooQTUrUipBNikpKSkpCSMKIwlOb3RlczoJYSkgSW4gb3JkZXIgdG8gcmVkdWNlIG1lbW9yeSBhY2Nlc3MsIHRoZSBjb2VmZmljaWVudHMJIwojCQlhcmUgbWFkZSBhcyAic2hvcnQiIGFzIHBvc3NpYmxlOiBBMSAod2hpY2ggaXMgMS8yKSwgQTUJIwojCQlhbmQgQTYgYXJlIHNpbmdsZSBwcmVjaXNpb247IEEyLCBBMyBhbmQgQTQgYXJlIGRvdWJsZQkjCiMJCXByZWNpc2lvbi4JCQkJCQkjCiMJCWIpIEV2ZW4gd2l0aCB0aGUgcmVzdHJpY3Rpb24gYWJvdmUsCQkJIwojCQkJfHAgLSAoZXhwKFIpLTEpfCA8CXxSfCAqIDJeKC03Mi43KQkJIwojCQlmb3IgYWxsIHxSfCA8PSAwLjAwNTUuCQkJCQkjCiMJCWMpIFRvIGZ1bGx5IHV0aWxpemUgdGhlIHBpcGVsaW5lLCBwIGlzIHNlcGFyYXRlZCBpbnRvCSMKIwkJdHdvIGluZGVwZW5kZW50IHBpZWNlcyBvZiByb3VnaGx5IGVxdWFsIGNvbXBsZXhpdHkJIwojCQkJcCA9IFsgUipTKihBMiArIFMqKEE0ICsgUypBNikpIF0JKwkjCiMJCQkJWyBSICsgUyooQTEgKyBTKihBMyArIFMqQTUpKSBdCQkjCiMJCXdoZXJlIFMgPSBSKlIuCQkJCQkJIwojCQkJCQkJCQkJIwojCVN0ZXAgNS4JQ29tcHV0ZSAyXihKLzY0KSpwIGJ5CQkJCQkjCiMJCQkJcCA6PSBUKnAJCQkJIwojCQl3aGVyZSBUIGFuZCB0IGFyZSB0aGUgc3RvcmVkIHZhbHVlcyBmb3IgMl4oSi82NCkuCSMKIwlOb3RlczoJMl4oSi82NCkgaXMgc3RvcmVkIGFzIFQgYW5kIHQgd2hlcmUgVCt0IGFwcHJveGltYXRlcwkjCiMJCTJeKEovNjQpIHRvIHJvdWdobHkgODUgYml0czsgVCBpcyBpbiBleHRlbmRlZCBwcmVjaXNpb24JIwojCQlhbmQgdCBpcyBpbiBzaW5nbGUgcHJlY2lzaW9uLiBOb3RlIGFsc28gdGhhdCBUIGlzCSMKIwkJcm91bmRlZCB0byA2MiBiaXRzIHNvIHRoYXQgdGhlIGxhc3QgdHdvIGJpdHMgb2YgVCBhcmUJIwojCQl6ZXJvLiBUaGUgcmVhc29uIGZvciBzdWNoIGEgc3BlY2lhbCBmb3JtIGlzIHRoYXQgVC0xLAkjCiMJCVQtMiwgYW5kIFQtOCB3aWxsIGFsbCBiZSBleGFjdCAtLS0gYSBwcm9wZXJ0eSB0aGF0IHdpbGwJIwojCQliZSBleHBsb2l0ZWQgaW4gU3RlcCA2IGJlbG93LiBUaGUgdG90YWwgcmVsYXRpdmUgZXJyb3IJIwojCQlpbiBwIGlzIG5vIGJpZ2dlciB0aGFuIDJeKC02Ny43KSBjb21wYXJlZCB0byB0aGUgZmluYWwJIwojCQlyZXN1bHQuCQkJCQkJCSMKIwkJCQkJCQkJCSMKIwlTdGVwIDYuCVJlY29uc3RydWN0aW9uIG9mIGV4cChYKS0xCQkJCSMKIwkJCWV4cChYKS0xID0gMl5NICogKCAyXihKLzY0KSArIHAgLSAyXigtTSkgKS4JIwojCQk2LjEJSWYgTSA8PSA2MywgZ28gdG8gU3RlcCA2LjMuCQkJIwojCQk2LjIJYW5zIDo9IFQgKyAocCArICh0ICsgT25lYnlTYykpLiBHbyB0byA2LjYJIwojCQk2LjMJSWYgTSA+PSAtMywgZ28gdG8gNi41LgkJCQkjCiMJCTYuNAlhbnMgOj0gKFQgKyAocCArIHQpKSArIE9uZWJ5U2MuIEdvIHRvIDYuNgkjCiMJCTYuNQlhbnMgOj0gKFQgKyBPbmVieVNjKSArIChwICsgdCkuCQkJIwojCQk2LjYJUmVzdG9yZSB1c2VyIEZQQ1IuCQkJCSMKIwkJNi43CVJldHVybiBhbnMgOj0gU2MgKiBhbnMuIEV4aXQuCQkJIwojCU5vdGVzOglUaGUgdmFyaW91cyBhcnJhbmdlbWVudHMgb2YgdGhlIGV4cHJlc3Npb25zIGdpdmUJIwojCQlhY2N1cmF0ZSBldmFsdWF0aW9ucy4JCQkJCSMKIwkJCQkJCQkJCSMKIwlTdGVwIDcuCWV4cChYKS0xIGZvciB8WHwgPCAxLzQuCQkJCQkjCiMJCTcuMQlJZiB8WHwgPj0gMl4oLTY1KSwgZ28gdG8gU3RlcCA5LgkJIwojCQk3LjIJR28gdG8gU3RlcCA4LgkJCQkJIwojCQkJCQkJCQkJIwojCVN0ZXAgOC4JQ2FsY3VsYXRlIGV4cChYKS0xLCB8WHwgPCAyXigtNjUpLgkJCSMKIwkJOC4xCUlmIHxYfCA8IDJeKC0xNjMxMiksIGdvdG8gOC4zCQkJIwojCQk4LjIJUmVzdG9yZSBGUENSOyByZXR1cm4gYW5zIDo9IFggLSAyXigtMTYzODIpLgkjCiMJCQlFeGl0LgkJCQkJCSMKIwkJOC4zCVggOj0gWCAqIDJeKDE0MCkuCQkJCSMKIwkJOC40CVJlc3RvcmUgRlBDUjsgYW5zIDo9IGFucyAtIDJeKC0xNjM4MikuCQkjCiMJCSBSZXR1cm4gYW5zIDo9IGFucyoyXigxNDApLiBFeGl0CQkJIwojCU5vdGVzOglUaGUgaWRlYSBpcyB0byByZXR1cm4gIlggLSB0aW55IiB1bmRlciB0aGUgdXNlcgkJIwojCQlwcmVjaXNpb24gYW5kIHJvdW5kaW5nIG1vZGVzLiBUbyBhdm9pZCB1bm5lY2Vzc2FyeQkjCiMJCWluZWZmaWNpZW5jeSwgd2Ugc3RheSBhd2F5IGZyb20gZGVub3JtYWxpemVkIG51bWJlcnMJIwojCQl0aGUgYmVzdCB3ZSBjYW4uIEZvciB8WHwgPj0gMl4oLTE2MzEyKSwgdGhlCQkjCiMJCXN0cmFpZ2h0Zm9yd2FyZCA4LjIgZ2VuZXJhdGVzIHRoZSBpbmV4YWN0IGV4Y2VwdGlvbiBhcwkjCiMJCXRoZSBjYXNlIHdhcnJhbnRzLgkJCQkJIwojCQkJCQkJCQkJIwojCVN0ZXAgOS4JQ2FsY3VsYXRlIGV4cChYKS0xLCB8WHwgPCAxLzQsIGJ5IGEgcG9seW5vbWlhbAkJIwojCQkJcCA9IFggKyBYKlgqKEIxICsgWCooQjIgKyAuLi4gKyBYKkIxMikpCQkjCiMJTm90ZXM6CWEpIEluIG9yZGVyIHRvIHJlZHVjZSBtZW1vcnkgYWNjZXNzLCB0aGUgY29lZmZpY2llbnRzCSMKIwkJYXJlIG1hZGUgYXMgInNob3J0IiBhcyBwb3NzaWJsZTogQjEgKHdoaWNoIGlzIDEvMiksIEI5CSMKIwkJdG8gQjEyIGFyZSBzaW5nbGUgcHJlY2lzaW9uOyBCMyB0byBCOCBhcmUgZG91YmxlCSMKIwkJcHJlY2lzaW9uOyBhbmQgQjIgaXMgZG91YmxlIGV4dGVuZGVkLgkJCSMKIwkJYikgRXZlbiB3aXRoIHRoZSByZXN0cmljdGlvbiBhYm92ZSwJCQkjCiMJCQl8cCAtIChleHAoWCktMSl8IDwgfFh8IDJeKC03MC42KQkJIwojCQlmb3IgYWxsIHxYfCA8PSAwLjI1MS4JCQkJCSMKIwkJTm90ZSB0aGF0IDAuMjUxIGlzIHNsaWdodGx5IGJpZ2dlciB0aGFuIDEvNC4JCSMKIwkJYykgVG8gZnVsbHkgcHJlc2VydmUgYWNjdXJhY3ksIHRoZSBwb2x5bm9taWFsIGlzCSMKIwkJY29tcHV0ZWQgYXMJCQkJCQkjCiMJCQlYICsgKCBTKkIxICsJUSApIHdoZXJlIFMgPSBYKlggYW5kCQkjCiMJCQlRCT0JWCpTKihCMiArIFgqKEIzICsgLi4uICsgWCpCMTIpKQkjCiMJCWQpIFRvIGZ1bGx5IHV0aWxpemUgdGhlIHBpcGVsaW5lLCBRIGlzIHNlcGFyYXRlZCBpbnRvCSMKIwkJdHdvIGluZGVwZW5kZW50IHBpZWNlcyBvZiByb3VnaGx5IGVxdWFsIGNvbXBsZXhpdHkJIwojCQkJUSA9IFsgWCpTKihCMiArIFMqKEI0ICsgLi4uICsgUypCMTIpKSBdICsJIwojCQkJCVsgUypTKihCMyArIFMqKEI1ICsgLi4uICsgUypCMTEpKSBdCSMKIwkJCQkJCQkJCSMKIwlTdGVwIDEwLiBDYWxjdWxhdGUgZXhwKFgpLTEgZm9yIHxYfCA+PSA3MCBsb2cgMi4JCSMKIwkJMTAuMSBJZiBYID49IDcwbG9nMiAsIGV4cChYKSAtIDEgPSBleHAoWCkgZm9yIGFsbAkjCiMJCXByYWN0aWNhbCBwdXJwb3Nlcy4gVGhlcmVmb3JlLCBnbyB0byBTdGVwIDEgb2Ygc2V0b3guCSMKIwkJMTAuMiBJZiBYIDw9IC03MGxvZzIsIGV4cChYKSAtIDEgPSAtMSBmb3IgYWxsIHByYWN0aWNhbAkjCiMJCXB1cnBvc2VzLgkJCQkJCSMKIwkJYW5zIDo9IC0xCQkJCQkJIwojCQlSZXN0b3JlIHVzZXIgRlBDUgkJCQkJIwojCQlSZXR1cm4gYW5zIDo9IGFucyArIDJeKC0xMjYpLiBFeGl0LgkJCSMKIwlOb3RlczoJMTAuMiB3aWxsIGFsd2F5cyBjcmVhdGUgYW4gaW5leGFjdCBhbmQgcmV0dXJuIC0xICsgdGlueQkjCiMJCWluIHRoZSB1c2VyIHJvdW5kaW5nIHByZWNpc2lvbiBhbmQgbW9kZS4JCSMKIwkJCQkJCQkJCSMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKTDI6CWxvbmcJCTB4M0ZEQzAwMDAsMHg4MkUzMDg2NSwweDQzNjFDNEM2LDB4MDAwMDAwMDAKCkVFWFBBMzoJbG9uZwkJMHgzRkE1NTU1NSwweDU1NTU0Q0MxCkVFWFBBMjoJbG9uZwkJMHgzRkM1NTU1NSwweDU1NTU0QTU0CgpFTTFBNDoJbG9uZwkJMHgzRjgxMTExMSwweDExMTc0Mzg1CkVNMUEzOglsb25nCQkweDNGQTU1NTU1LDB4NTU1NTRGNUEKCkVNMUEyOglsb25nCQkweDNGQzU1NTU1LDB4NTU1NTU1NTUsMHgwMDAwMDAwMCwweDAwMDAwMDAwCgpFTTFCODoJbG9uZwkJMHgzRUM3MURFMywweEE1Nzc0NjgyCkVNMUI3Oglsb25nCQkweDNFRkEwMUEwLDB4MTlEN0NCNjgKCkVNMUI2Oglsb25nCQkweDNGMkEwMUEwLDB4MUEwMTlERjMKRU0xQjU6CWxvbmcJCTB4M0Y1NkMxNkMsMHgxNkMxNzBFMgoKRU0xQjQ6CWxvbmcJCTB4M0Y4MTExMTEsMHgxMTExMTExMQpFTTFCMzoJbG9uZwkJMHgzRkE1NTU1NSwweDU1NTU1NTU1CgpFTTFCMjoJbG9uZwkJMHgzRkZDMDAwMCwweEFBQUFBQUFBLDB4QUFBQUFBQUIKCWxvbmcJCTB4MDAwMDAwMDAKClRXTzE0MDoJbG9uZwkJMHg0OEIwMDAwMCwweDAwMDAwMDAwClRXT04xNDA6Cglsb25nCQkweDM3MzAwMDAwLDB4MDAwMDAwMDAKCkVFWFBUQkw6Cglsb25nCQkweDNGRkYwMDAwLDB4ODAwMDAwMDAsMHgwMDAwMDAwMCwweDAwMDAwMDAwCglsb25nCQkweDNGRkYwMDAwLDB4ODE2NEQxRjMsMHhCQzAzMDc3NCwweDlGODQxQTlCCglsb25nCQkweDNGRkYwMDAwLDB4ODJDRDg2OTgsMHhBQzJCQTFEOCwweDlGQzFENUI5Cglsb25nCQkweDNGRkYwMDAwLDB4ODQzQTI4QzMsMHhBQ0RFNDA0OCwweEEwNzI4MzY5Cglsb25nCQkweDNGRkYwMDAwLDB4ODVBQUMzNjcsMHhDQzQ4N0IxNCwweDFGQzVDOTVDCglsb25nCQkweDNGRkYwMDAwLDB4ODcxRjYxOTYsMHg5RThEMTAxMCwweDFFRTg1QzlGCglsb25nCQkweDNGRkYwMDAwLDB4ODg5ODBFODAsMHg5MkRBODUyOCwweDlGQTIwNzI5Cglsb25nCQkweDNGRkYwMDAwLDB4OEExNEQ1NzUsMHg0OTZFRkQ5QywweEEwN0JGOUFGCglsb25nCQkweDNGRkYwMDAwLDB4OEI5NUMxRTMsMHhFQThCRDZFOCwweEEwMDIwRENGCglsb25nCQkweDNGRkYwMDAwLDB4OEQxQURGNUIsMHg3RTVCQTlFNCwweDIwNUE2M0RBCglsb25nCQkweDNGRkYwMDAwLDB4OEVBNDM5OEIsMHg0NUNENTNDMCwweDFFQjcwMDUxCglsb25nCQkweDNGRkYwMDAwLDB4OTAzMURDNDMsMHgxNDY2QjFEQywweDFGNkVCMDI5Cglsb25nCQkweDNGRkYwMDAwLDB4OTFDM0QzNzMsMHhBQjExQzMzOCwweEEwNzgxNDk0Cglsb25nCQkweDNGRkYwMDAwLDB4OTM1QTJCMkYsMHgxM0U2RTkyQywweDlFQjMxOUIwCglsb25nCQkweDNGRkYwMDAwLDB4OTRGNEVGQTgsMHhGRUY3MDk2MCwweDIwMTc0NTdECglsb25nCQkweDNGRkYwMDAwLDB4OTY5NDJEMzcsMHgyMDE4NUEwMCwweDFGMTFENTM3Cglsb25nCQkweDNGRkYwMDAwLDB4OTgzN0YwNTEsMHg4REI4QTk3MCwweDlGQjk1MkRECglsb25nCQkweDNGRkYwMDAwLDB4OTlFMDQ1OTMsMHgyMEI3RkE2NCwweDFGRTQzMDg3Cglsb25nCQkweDNGRkYwMDAwLDB4OUI4RDM5QjksMHhENTRFNTUzOCwweDFGQTJBODE4Cglsb25nCQkweDNGRkYwMDAwLDB4OUQzRUQ5QTcsMHgyQ0ZGQjc1MCwweDFGREU0OTRECglsb25nCQkweDNGRkYwMDAwLDB4OUVGNTMyNjAsMHg5MUExMTFBQywweDIwNTA0ODkwCglsb25nCQkweDNGRkYwMDAwLDB4QTBCMDUxMEYsMHhCOTcxNEZDNCwweEEwNzM2OTFDCglsb25nCQkweDNGRkYwMDAwLDB4QTI3MDQzMDMsMHgwQzQ5NjgxOCwweDFGOUI3QTA1Cglsb25nCQkweDNGRkYwMDAwLDB4QTQzNTE1QUUsMHgwOUU2ODBBMCwweEEwNzk3MTI2Cglsb25nCQkweDNGRkYwMDAwLDB4QTVGRUQ2QTksMHhCMTUxMzhFQywweEEwNzFBMTQwCglsb25nCQkweDNGRkYwMDAwLDB4QTdDRDkzQjQsMHhFOTY1MzU2OCwweDIwNEY2MkRBCglsb25nCQkweDNGRkYwMDAwLDB4QTlBMTVBQjQsMHhFQTdDMEVGOCwweDFGMjgzQzRBCglsb25nCQkweDNGRkYwMDAwLDB4QUI3QTM5QjUsMHhBOTNFRDMzOCwweDlGOUE3RkRDCglsb25nCQkweDNGRkYwMDAwLDB4QUQ1ODNFRUEsMHg0MkExNEFDOCwweEEwNUIzRkFDCglsb25nCQkweDNGRkYwMDAwLDB4QUYzQjc4QUQsMHg2OTBBNDM3NCwweDFGREYyNjEwCglsb25nCQkweDNGRkYwMDAwLDB4QjEyM0Y1ODEsMHhEMkFDMjU5MCwweDlGNzA1RjkwCglsb25nCQkweDNGRkYwMDAwLDB4QjMxMUM0MTIsMHhBOTExMjQ4OCwweDIwMUY2NzhBCglsb25nCQkweDNGRkYwMDAwLDB4QjUwNEYzMzMsMHhGOURFNjQ4NCwweDFGMzJGQjEzCglsb25nCQkweDNGRkYwMDAwLDB4QjZGRDkxRTMsMHgyOEQxNzc5MCwweDIwMDM4QjMwCglsb25nCQkweDNGRkYwMDAwLDB4QjhGQkFGNDcsMHg2MkZCOUVFOCwweDIwMERDM0NDCglsb25nCQkweDNGRkYwMDAwLDB4QkFGRjVBQjIsMHgxMzNFNDVGQywweDlGOEIyQUU2Cglsb25nCQkweDNGRkYwMDAwLDB4QkQwOEEzOUYsMHg1ODBDMzZDMCwweEEwMkJCRjcwCglsb25nCQkweDNGRkYwMDAwLDB4QkYxNzk5QjYsMHg3QTczMTA4NCwweEEwMEJGNTE4Cglsb25nCQkweDNGRkYwMDAwLDB4QzEyQzRDQ0EsMHg2NjcwOTQ1OCwweEEwNDFERDQxCglsb25nCQkweDNGRkYwMDAwLDB4QzM0NkNDREEsMHgyNDk3NjQwOCwweDlGREYxMzdCCglsb25nCQkweDNGRkYwMDAwLDB4QzU2NzJBMTEsMHg1NTA2REFEQywweDIwMUYxNTY4Cglsb25nCQkweDNGRkYwMDAwLDB4Qzc4RDc0QzgsMHhBQkI5QjE1QywweDFGQzEzQTJFCglsb25nCQkweDNGRkYwMDAwLDB4QzlCOUJEODYsMHg2RTJGMjdBNCwweEEwM0Y4RjAzCglsb25nCQkweDNGRkYwMDAwLDB4Q0JFQzE0RkUsMHhGMjcyN0M1QywweDFGRjQ5MDdECglsb25nCQkweDNGRkYwMDAwLDB4Q0UyNDhDMTUsMHgxRjg0ODBFNCwweDlFNkU1M0U0Cglsb25nCQkweDNGRkYwMDAwLDB4RDA2MzMzREEsMHhFRjJCMjU5NCwweDFGRDZENDVDCglsb25nCQkweDNGRkYwMDAwLDB4RDJBODFEOTEsMHhGMTJBRTQ1QywweEEwNzZFREI5Cglsb25nCQkweDNGRkYwMDAwLDB4RDRGMzVBQUIsMHhDRkVERkEyMCwweDlGQTZERTIxCglsb25nCQkweDNGRkYwMDAwLDB4RDc0NEZDQ0EsMHhENjlENkFGNCwweDFFRTY5QTJGCglsb25nCQkweDNGRkYwMDAwLDB4RDk5RDE1QzIsMHg3OEFGRDdCNCwweDIwN0Y0MzlGCglsb25nCQkweDNGRkYwMDAwLDB4REJGQkI3OTcsMHhEQUYyMzc1NCwweDIwMUVDMjA3Cglsb25nCQkweDNGRkYwMDAwLDB4REU2MEY0ODIsMHg1RTBFOTEyNCwweDlFOEJFMTc1Cglsb25nCQkweDNGRkYwMDAwLDB4RTBDQ0RFRUMsMHgyQTk0RTExMCwweDIwMDMyQzRCCglsb25nCQkweDNGRkYwMDAwLDB4RTMzRjg5NzIsMHhCRThBNUE1MCwweDIwMDRERkY1Cglsb25nCQkweDNGRkYwMDAwLDB4RTVCOTA2RTcsMHg3QzgzNDhBOCwweDFFNzJGNDdBCglsb25nCQkweDNGRkYwMDAwLDB4RTgzOTZBNTAsMHgzQzRCREM2OCwweDFGNzIyRjIyCglsb25nCQkweDNGRkYwMDAwLDB4RUFDMEM2RTcsMHhERDI0MzkzMCwweEEwMTdFOTQ1Cglsb25nCQkweDNGRkYwMDAwLDB4RUQ0RjMwMUUsMHhEOTk0MkI4NCwweDFGNDAxQTVCCglsb25nCQkweDNGRkYwMDAwLDB4RUZFNEI5OUIsMHhEQ0RBRjVDQywweDlGQjlBOUUzCglsb25nCQkweDNGRkYwMDAwLDB4RjI4MTc3M0MsMHg1OUZGQjEzOCwweDIwNzQ0QzA1Cglsb25nCQkweDNGRkYwMDAwLDB4RjUyNTdEMTUsMHgyNDg2Q0MyQywweDFGNzczQTE5Cglsb25nCQkweDNGRkYwMDAwLDB4RjdEMERGNzMsMHgwQUQxM0JCOCwweDFGRkU5MEQ1Cglsb25nCQkweDNGRkYwMDAwLDB4RkE4M0IyREIsMHg3MjJBMDMzQywweEEwNDFFRDIyCglsb25nCQkweDNGRkYwMDAwLDB4RkQzRTBDMEMsMHhGNDg2QzE3NCwweDFGODUzRjNBCgoJc2V0CQlBREpGTEFHLExfU0NSMgoJc2V0CQlTQ0FMRSxGUF9TQ1IwCglzZXQJCUFESlNDQUxFLEZQX1NDUjEKCXNldAkJU0MsRlBfU0NSMAoJc2V0CQlPTkVCWVNDLEZQX1NDUjEKCglnbG9iYWwJCXNldG94CnNldG94OgojLS1lbnRyeSBwb2ludCBmb3IgRVhQKFgpLCBoZXJlIFggaXMgZmluaXRlLCBub24temVybywgYW5kIG5vdCBOYU4ncwoKIy0tU3RlcCAxLgoJbW92LmwJCSglYTApLCVkMQkJIyBsb2FkIHBhcnQgb2YgaW5wdXQgWAoJYW5kLmwJCSYweDdGRkYwMDAwLCVkMQkJIyBiaWFzZWQgZXhwby4gb2YgWAoJY21wLmwJCSVkMSwmMHgzRkJFMDAwMAkJIyAyXigtNjUpCgliZ2UuYgkJRVhQQzEJCQkjIG5vcm1hbCBjYXNlCglicmEJCUVYUFNNCgpFWFBDMToKIy0tVGhlIGNhc2UgfFh8ID49IDJeKC02NSkKCW1vdi53CQk0KCVhMCksJWQxCQkjIGV4cG8uIGFuZCBwYXJ0aWFsIHNpZy4gb2YgfFh8CgljbXAubAkJJWQxLCYweDQwMENCMTY3CQkjIDE2MzgwIGxvZzIgdHJ1bmMuIDE2IGJpdHMKCWJsdC5iCQlFWFBNQUlOCQkJIyBub3JtYWwgY2FzZQoJYnJhCQlFRVhQQklHCgpFWFBNQUlOOgojLS1TdGVwIDIuCiMtLVRoaXMgaXMgdGhlIG5vcm1hbCBicmFuY2g6CTJeKC02NSkgPD0gfFh8IDwgMTYzODAgbG9nMi4KCWZtb3YueAkJKCVhMCksJWZwMAkJIyBsb2FkIGlucHV0IGZyb20gKGEwKQoKCWZtb3YueAkJJWZwMCwlZnAxCglmbXVsLnMJCSYweDQyQjhBQTNCLCVmcDAJIyA2NC9sb2cyICogWAoJZm1vdm0ueAkJJjB4YywtKCVzcCkJCSMgc2F2ZSBmcDIgeyVmcDIvJWZwM30KCW1vdi5sCQkmMCxBREpGTEFHKCVhNikKCWZtb3YubAkJJWZwMCwlZDEJCSMgTiA9IGludCggWCAqIDY0L2xvZzIgKQoJbGVhCQlFRVhQVEJMKCVwYyksJWExCglmbW92LmwJCSVkMSwlZnAwCQkjIGNvbnZlcnQgdG8gZmxvYXRpbmctZm9ybWF0CgoJbW92LmwJCSVkMSxMX1NDUjEoJWE2KQkJIyBzYXZlIE4gdGVtcG9yYXJpbHkKCWFuZC5sCQkmMHgzRiwlZDEJCSMgRDAgaXMgSiA9IE4gbW9kIDY0Cglsc2wubAkJJjQsJWQxCglhZGQubAkJJWQxLCVhMQkJCSMgYWRkcmVzcyBvZiAyXihKLzY0KQoJbW92LmwJCUxfU0NSMSglYTYpLCVkMQoJYXNyLmwJCSY2LCVkMQkJCSMgRDAgaXMgTQoJYWRkLncJCSYweDNGRkYsJWQxCQkjIGJpYXNlZCBleHBvLiBvZiAyXihNKQoJbW92LncJCUwyKCVwYyksTF9TQ1IxKCVhNikJIyBwcmVmZXRjaCBMMiwgbm8gbmVlZCBpbiBDQgoKRVhQQ09OVDE6CiMtLVN0ZXAgMy4KIy0tZnAxLGZwMiBzYXZlZCBvbiB0aGUgc3RhY2suIGZwMCBpcyBOLCBmcDEgaXMgWCwKIy0tYTAgcG9pbnRzIHRvIDJeKEovNjQpLCBEMCBpcyBiaWFzZWQgZXhwby4gb2YgMl4oTSkKCWZtb3YueAkJJWZwMCwlZnAyCglmbXVsLnMJCSYweEJDMzE3MjE4LCVmcDAJIyBOICogTDEsIEwxID0gbGVhZCgtbG9nMi82NCkKCWZtdWwueAkJTDIoJXBjKSwlZnAyCQkjIE4gKiBMMiwgTDErTDIgPSAtbG9nMi82NAoJZmFkZC54CQklZnAxLCVmcDAJCSMgWCArIE4qTDEKCWZhZGQueAkJJWZwMiwlZnAwCQkjIGZwMCBpcyBSLCByZWR1Y2VkIGFyZy4KCiMtLVN0ZXAgNC4KIy0tV0UgTk9XIENPTVBVVEUgRVhQKFIpLTEgQlkgQSBQT0xZTk9NSUFMCiMtLSBSICsgUipSKihBMSArIFIqKEEyICsgUiooQTMgKyBSKihBNCArIFIqQTUpKSkpCiMtLVRPIEZVTExZIFVUSUxJWkUgVEhFIFBJUEVMSU5FLCBXRSBDT01QVVRFIFMgPSBSKlIKIy0tW1IrUipTKihBMitTKkE0KV0gKyBbUyooQTErUyooQTMrUypBNSkpXQoKCWZtb3YueAkJJWZwMCwlZnAxCglmbXVsLngJCSVmcDEsJWZwMQkJIyBmcDEgSVMgUyA9IFIqUgoKCWZtb3YucwkJJjB4M0FCNjBCNzAsJWZwMgkjIGZwMiBJUyBBNQoKCWZtdWwueAkJJWZwMSwlZnAyCQkjIGZwMiBJUyBTKkE1CglmbW92LngJCSVmcDEsJWZwMwoJZm11bC5zCQkmMHgzQzA4ODg5NSwlZnAzCSMgZnAzIElTIFMqQTQKCglmYWRkLmQJCUVFWFBBMyglcGMpLCVmcDIJIyBmcDIgSVMgQTMrUypBNQoJZmFkZC5kCQlFRVhQQTIoJXBjKSwlZnAzCSMgZnAzIElTIEEyK1MqQTQKCglmbXVsLngJCSVmcDEsJWZwMgkJIyBmcDIgSVMgUyooQTMrUypBNSkKCW1vdi53CQklZDEsU0NBTEUoJWE2KQkJIyBTQ0FMRSBpcyAyXihNKSBpbiBleHRlbmRlZAoJbW92LmwJCSYweDgwMDAwMDAwLFNDQUxFKzQoJWE2KQoJY2xyLmwJCVNDQUxFKzgoJWE2KQoKCWZtdWwueAkJJWZwMSwlZnAzCQkjIGZwMyBJUyBTKihBMitTKkE0KQoKCWZhZGQucwkJJjB4M0YwMDAwMDAsJWZwMgkjIGZwMiBJUyBBMStTKihBMytTKkE1KQoJZm11bC54CQklZnAwLCVmcDMJCSMgZnAzIElTIFIqUyooQTIrUypBNCkKCglmbXVsLngJCSVmcDEsJWZwMgkJIyBmcDIgSVMgUyooQTErUyooQTMrUypBNSkpCglmYWRkLngJCSVmcDMsJWZwMAkJIyBmcDAgSVMgUitSKlMqKEEyK1MqQTQpLAoKCWZtb3YueAkJKCVhMSkrLCVmcDEJCSMgZnAxIGlzIGxlYWQuIHB0LiBvZiAyXihKLzY0KQoJZmFkZC54CQklZnAyLCVmcDAJCSMgZnAwIGlzIEVYUChSKSAtIDEKCiMtLVN0ZXAgNQojLS1maW5hbCByZWNvbnN0cnVjdGlvbiBwcm9jZXNzCiMtLUVYUChYKSA9IDJeTSAqICggMl4oSi82NCkgKyAyXihKLzY0KSooRVhQKFIpLTEpICkKCglmbXVsLngJCSVmcDEsJWZwMAkJIyAyXihKLzY0KSooRXhwKFIpLTEpCglmbW92bS54CQkoJXNwKSssJjB4MzAJCSMgZnAyIHJlc3RvcmVkIHslZnAyLyVmcDN9CglmYWRkLnMJCSglYTEpLCVmcDAJCSMgYWNjdXJhdGUgMl4oSi82NCkKCglmYWRkLngJCSVmcDEsJWZwMAkJIyAyXihKLzY0KSArIDJeKEovNjQpKi4uLgoJbW92LmwJCUFESkZMQUcoJWE2KSwlZDEKCiMtLVN0ZXAgNgoJdHN0LmwJCSVkMQoJYmVxLmIJCU5PUk1BTApBREpVU1Q6CglmbXVsLngJCUFESlNDQUxFKCVhNiksJWZwMApOT1JNQUw6CglmbW92LmwJCSVkMCwlZnBjcgkJIyByZXN0b3JlIHVzZXIgRlBDUgoJbW92LmIJCSZGTVVMX09QLCVkMQkJIyBsYXN0IGluc3QgaXMgTVVMCglmbXVsLngJCVNDQUxFKCVhNiksJWZwMAkJIyBtdWx0aXBseSAyXihNKQoJYnJhCQl0X2NhdGNoCgpFWFBTTToKIy0tU3RlcCA3CglmbW92bS54CQkoJWEwKSwmMHg4MAkJIyBsb2FkIFgKCWZtb3YubAkJJWQwLCVmcGNyCglmYWRkLnMJCSYweDNGODAwMDAwLCVmcDAJIyAxK1ggaW4gdXNlciBtb2RlCglicmEJCXRfcGlueDIKCkVFWFBCSUc6CiMtLVN0ZXAgOAoJY21wLmwJCSVkMSwmMHg0MDBDQjI3QwkJIyAxNjQ4MCBsb2cyCgliZ3QuYgkJRVhQMkJJRwojLS1TdGVwcyA4LjIgLS0gOC42CglmbW92LngJCSglYTApLCVmcDAJCSMgbG9hZCBpbnB1dCBmcm9tIChhMCkKCglmbW92LngJCSVmcDAsJWZwMQoJZm11bC5zCQkmMHg0MkI4QUEzQiwlZnAwCSMgNjQvbG9nMiAqIFgKCWZtb3ZtLngJCSYweGMsLSglc3ApCQkjIHNhdmUgZnAyIHslZnAyLyVmcDN9Cgltb3YubAkJJjEsQURKRkxBRyglYTYpCglmbW92LmwJCSVmcDAsJWQxCQkjIE4gPSBpbnQoIFggKiA2NC9sb2cyICkKCWxlYQkJRUVYUFRCTCglcGMpLCVhMQoJZm1vdi5sCQklZDEsJWZwMAkJIyBjb252ZXJ0IHRvIGZsb2F0aW5nLWZvcm1hdAoJbW92LmwJCSVkMSxMX1NDUjEoJWE2KQkJIyBzYXZlIE4gdGVtcG9yYXJpbHkKCWFuZC5sCQkmMHgzRiwlZDEJCSMgRDAgaXMgSiA9IE4gbW9kIDY0Cglsc2wubAkJJjQsJWQxCglhZGQubAkJJWQxLCVhMQkJCSMgYWRkcmVzcyBvZiAyXihKLzY0KQoJbW92LmwJCUxfU0NSMSglYTYpLCVkMQoJYXNyLmwJCSY2LCVkMQkJCSMgRDAgaXMgSwoJbW92LmwJCSVkMSxMX1NDUjEoJWE2KQkJIyBzYXZlIEsgdGVtcG9yYXJpbHkKCWFzci5sCQkmMSwlZDEJCQkjIEQwIGlzIE0xCglzdWIubAkJJWQxLExfU0NSMSglYTYpCQkjIGExIGlzIE0KCWFkZC53CQkmMHgzRkZGLCVkMQkJIyBiaWFzZWQgZXhwby4gb2YgMl4oTTEpCgltb3YudwkJJWQxLEFESlNDQUxFKCVhNikJIyBBREpTQ0FMRSA6PSAyXihNMSkKCW1vdi5sCQkmMHg4MDAwMDAwMCxBREpTQ0FMRSs0KCVhNikKCWNsci5sCQlBREpTQ0FMRSs4KCVhNikKCW1vdi5sCQlMX1NDUjEoJWE2KSwlZDEJCSMgRDAgaXMgTQoJYWRkLncJCSYweDNGRkYsJWQxCQkjIGJpYXNlZCBleHBvLiBvZiAyXihNKQoJYnJhLncJCUVYUENPTlQxCQkjIGdvIGJhY2sgdG8gU3RlcCAzCgpFWFAyQklHOgojLS1TdGVwIDkKCXRzdC5iCQkoJWEwKQkJCSMgaXMgWCBwb3NpdGl2ZSBvciBuZWdhdGl2ZT8KCWJtaQkJdF91bmZsMgoJYnJhCQl0X292ZmwyCgoJZ2xvYmFsCQlzZXRveGQKc2V0b3hkOgojLS1lbnRyeSBwb2ludCBmb3IgRVhQKFgpLCBYIGlzIGRlbm9ybWFsaXplZAoJbW92LmwJCSglYTApLC0oJXNwKQoJYW5kaS5sCQkmMHg4MDAwMDAwMCwoJXNwKQoJb3JpLmwJCSYweDAwODAwMDAwLCglc3ApCSMgc2lnbihYKSoyXigtMTI2KQoKCWZtb3YucwkJJjB4M0Y4MDAwMDAsJWZwMAoKCWZtb3YubAkJJWQwLCVmcGNyCglmYWRkLnMJCSglc3ApKywlZnAwCglicmEJCXRfcGlueDIKCglnbG9iYWwJCXNldG94bTEKc2V0b3htMToKIy0tZW50cnkgcG9pbnQgZm9yIEVYUE0xKFgpLCBoZXJlIFggaXMgZmluaXRlLCBub24temVybywgbm9uLU5hTgoKIy0tU3RlcCAxLgojLS1TdGVwIDEuMQoJbW92LmwJCSglYTApLCVkMQkJIyBsb2FkIHBhcnQgb2YgaW5wdXQgWAoJYW5kLmwJCSYweDdGRkYwMDAwLCVkMQkJIyBiaWFzZWQgZXhwby4gb2YgWAoJY21wLmwJCSVkMSwmMHgzRkZEMDAwMAkJIyAxLzQKCWJnZS5iCQlFTTFDT04xCQkJIyB8WHwgPj0gMS80CglicmEJCUVNMVNNCgpFTTFDT04xOgojLS1TdGVwIDEuMwojLS1UaGUgY2FzZSB8WHwgPj0gMS80Cgltb3YudwkJNCglYTApLCVkMQkJIyBleHBvLiBhbmQgcGFydGlhbCBzaWcuIG9mIHxYfAoJY21wLmwJCSVkMSwmMHg0MDA0QzIxNQkJIyA3MGxvZzIgcm91bmRlZCB1cCB0byAxNiBiaXRzCglibGUuYgkJRU0xTUFJTgkJCSMgMS80IDw9IHxYfCA8PSA3MGxvZzIKCWJyYQkJRU0xQklHCgpFTTFNQUlOOgojLS1TdGVwIDIuCiMtLVRoaXMgaXMgdGhlIGNhc2U6CTEvNCA8PSB8WHwgPD0gNzAgbG9nMi4KCWZtb3YueAkJKCVhMCksJWZwMAkJIyBsb2FkIGlucHV0IGZyb20gKGEwKQoKCWZtb3YueAkJJWZwMCwlZnAxCglmbXVsLnMJCSYweDQyQjhBQTNCLCVmcDAJIyA2NC9sb2cyICogWAoJZm1vdm0ueAkJJjB4YywtKCVzcCkJCSMgc2F2ZSBmcDIgeyVmcDIvJWZwM30KCWZtb3YubAkJJWZwMCwlZDEJCSMgTiA9IGludCggWCAqIDY0L2xvZzIgKQoJbGVhCQlFRVhQVEJMKCVwYyksJWExCglmbW92LmwJCSVkMSwlZnAwCQkjIGNvbnZlcnQgdG8gZmxvYXRpbmctZm9ybWF0CgoJbW92LmwJCSVkMSxMX1NDUjEoJWE2KQkJIyBzYXZlIE4gdGVtcG9yYXJpbHkKCWFuZC5sCQkmMHgzRiwlZDEJCSMgRDAgaXMgSiA9IE4gbW9kIDY0Cglsc2wubAkJJjQsJWQxCglhZGQubAkJJWQxLCVhMQkJCSMgYWRkcmVzcyBvZiAyXihKLzY0KQoJbW92LmwJCUxfU0NSMSglYTYpLCVkMQoJYXNyLmwJCSY2LCVkMQkJCSMgRDAgaXMgTQoJbW92LmwJCSVkMSxMX1NDUjEoJWE2KQkJIyBzYXZlIGEgY29weSBvZiBNCgojLS1TdGVwIDMuCiMtLWZwMSxmcDIgc2F2ZWQgb24gdGhlIHN0YWNrLiBmcDAgaXMgTiwgZnAxIGlzIFgsCiMtLWEwIHBvaW50cyB0byAyXihKLzY0KSwgRDAgYW5kIGExIGJvdGggY29udGFpbiBNCglmbW92LngJCSVmcDAsJWZwMgoJZm11bC5zCQkmMHhCQzMxNzIxOCwlZnAwCSMgTiAqIEwxLCBMMSA9IGxlYWQoLWxvZzIvNjQpCglmbXVsLngJCUwyKCVwYyksJWZwMgkJIyBOICogTDIsIEwxK0wyID0gLWxvZzIvNjQKCWZhZGQueAkJJWZwMSwlZnAwCQkjIFggKyBOKkwxCglmYWRkLngJCSVmcDIsJWZwMAkJIyBmcDAgaXMgUiwgcmVkdWNlZCBhcmcuCglhZGQudwkJJjB4M0ZGRiwlZDEJCSMgRDAgaXMgYmlhc2VkIGV4cG8uIG9mIDJeTQoKIy0tU3RlcCA0LgojLS1XRSBOT1cgQ09NUFVURSBFWFAoUiktMSBCWSBBIFBPTFlOT01JQUwKIy0tIFIgKyBSKlIqKEExICsgUiooQTIgKyBSKihBMyArIFIqKEE0ICsgUiooQTUgKyBSKkE2KSkpKSkKIy0tVE8gRlVMTFkgVVRJTElaRSBUSEUgUElQRUxJTkUsIFdFIENPTVBVVEUgUyA9IFIqUgojLS1bUipTKihBMitTKihBNCtTKkE2KSldICsgW1IrUyooQTErUyooQTMrUypBNSkpXQoKCWZtb3YueAkJJWZwMCwlZnAxCglmbXVsLngJCSVmcDEsJWZwMQkJIyBmcDEgSVMgUyA9IFIqUgoKCWZtb3YucwkJJjB4Mzk1MDA5N0IsJWZwMgkjIGZwMiBJUyBhNgoKCWZtdWwueAkJJWZwMSwlZnAyCQkjIGZwMiBJUyBTKkE2CglmbW92LngJCSVmcDEsJWZwMwoJZm11bC5zCQkmMHgzQUI2MEI2QSwlZnAzCSMgZnAzIElTIFMqQTUKCglmYWRkLmQJCUVNMUE0KCVwYyksJWZwMgkJIyBmcDIgSVMgQTQrUypBNgoJZmFkZC5kCQlFTTFBMyglcGMpLCVmcDMJCSMgZnAzIElTIEEzK1MqQTUKCW1vdi53CQklZDEsU0MoJWE2KQkJIyBTQyBpcyAyXihNKSBpbiBleHRlbmRlZAoJbW92LmwJCSYweDgwMDAwMDAwLFNDKzQoJWE2KQoJY2xyLmwJCVNDKzgoJWE2KQoKCWZtdWwueAkJJWZwMSwlZnAyCQkjIGZwMiBJUyBTKihBNCtTKkE2KQoJbW92LmwJCUxfU0NSMSglYTYpLCVkMQkJIyBEMCBpcwlNCgluZWcudwkJJWQxCQkJIyBEMCBpcyAtTQoJZm11bC54CQklZnAxLCVmcDMJCSMgZnAzIElTIFMqKEEzK1MqQTUpCglhZGQudwkJJjB4M0ZGRiwlZDEJCSMgYmlhc2VkIGV4cG8uIG9mIDJeKC1NKQoJZmFkZC5kCQlFTTFBMiglcGMpLCVmcDIJCSMgZnAyIElTIEEyK1MqKEE0K1MqQTYpCglmYWRkLnMJCSYweDNGMDAwMDAwLCVmcDMJIyBmcDMgSVMgQTErUyooQTMrUypBNSkKCglmbXVsLngJCSVmcDEsJWZwMgkJIyBmcDIgSVMgUyooQTIrUyooQTQrUypBNikpCglvci53CQkmMHg4MDAwLCVkMQkJIyBzaWduZWQvZXhwby4gb2YgLTJeKC1NKQoJbW92LncJCSVkMSxPTkVCWVNDKCVhNikJIyBPbmVieVNjIGlzIC0yXigtTSkKCW1vdi5sCQkmMHg4MDAwMDAwMCxPTkVCWVNDKzQoJWE2KQoJY2xyLmwJCU9ORUJZU0MrOCglYTYpCglmbXVsLngJCSVmcDMsJWZwMQkJIyBmcDEgSVMgUyooQTErUyooQTMrUypBNSkpCgoJZm11bC54CQklZnAwLCVmcDIJCSMgZnAyIElTIFIqUyooQTIrUyooQTQrUypBNikpCglmYWRkLngJCSVmcDEsJWZwMAkJIyBmcDAgSVMgUitTKihBMStTKihBMytTKkE1KSkKCglmYWRkLngJCSVmcDIsJWZwMAkJIyBmcDAgSVMgRVhQKFIpLTEKCglmbW92bS54CQkoJXNwKSssJjB4MzAJCSMgZnAyIHJlc3RvcmVkIHslZnAyLyVmcDN9CgojLS1TdGVwIDUKIy0tQ29tcHV0ZSAyXihKLzY0KSpwCgoJZm11bC54CQkoJWExKSwlZnAwCQkjIDJeKEovNjQpKihFeHAoUiktMSkKCiMtLVN0ZXAgNgojLS1TdGVwIDYuMQoJbW92LmwJCUxfU0NSMSglYTYpLCVkMQkJIyByZXRyaWV2ZSBNCgljbXAubAkJJWQxLCY2MwoJYmxlLmIJCU1MRTYzCiMtLVN0ZXAgNi4yCU0gPj0gNjQKCWZtb3YucwkJMTIoJWExKSwlZnAxCQkjIGZwMSBpcyB0CglmYWRkLngJCU9ORUJZU0MoJWE2KSwlZnAxCSMgZnAxIGlzIHQrT25lYnlTYwoJZmFkZC54CQklZnAxLCVmcDAJCSMgcCsodCtPbmVieVNjKSwgZnAxIHJlbGVhc2VkCglmYWRkLngJCSglYTEpLCVmcDAJCSMgVCsocCsodCtPbmVieVNjKSkKCWJyYQkJRU0xU0NBTEUKTUxFNjM6CiMtLVN0ZXAgNi4zCU0gPD0gNjMKCWNtcC5sCQklZDEsJi0zCgliZ2UuYgkJTUdFTjMKTUxUTjM6CiMtLVN0ZXAgNi40CU0gPD0gLTQKCWZhZGQucwkJMTIoJWExKSwlZnAwCQkjIHArdAoJZmFkZC54CQkoJWExKSwlZnAwCQkjIFQrKHArdCkKCWZhZGQueAkJT05FQllTQyglYTYpLCVmcDAJIyBPbmVieVNjICsgKFQrKHArdCkpCglicmEJCUVNMVNDQUxFCk1HRU4zOgojLS1TdGVwIDYuNQktMyA8PSBNIDw9IDYzCglmbW92LngJCSglYTEpKywlZnAxCQkjIGZwMSBpcyBUCglmYWRkLnMJCSglYTEpLCVmcDAJCSMgZnAwIGlzIHArdAoJZmFkZC54CQlPTkVCWVNDKCVhNiksJWZwMQkjIGZwMSBpcyBUK09uZWJ5U2MKCWZhZGQueAkJJWZwMSwlZnAwCQkjIChUK09uZWJ5U2MpKyhwK3QpCgpFTTFTQ0FMRToKIy0tU3RlcCA2LjYKCWZtb3YubAkJJWQwLCVmcGNyCglmbXVsLngJCVNDKCVhNiksJWZwMAoJYnJhCQl0X2lueDIKCkVNMVNNOgojLS1TdGVwIDcJfFh8IDwgMS80LgoJY21wLmwJCSVkMSwmMHgzRkJFMDAwMAkJIyAyXigtNjUpCgliZ2UuYgkJRU0xUE9MWQoKRU0xVElOWToKIy0tU3RlcCA4CXxYfCA8IDJeKC02NSkKCWNtcC5sCQklZDEsJjB4MDAzMzAwMDAJCSMgMl4oLTE2MzEyKQoJYmx0LmIJCUVNMTJUSU5ZCiMtLVN0ZXAgOC4yCgltb3YubAkJJjB4ODAwMTAwMDAsU0MoJWE2KQkjIFNDIGlzIC0yXigtMTYzODIpCgltb3YubAkJJjB4ODAwMDAwMDAsU0MrNCglYTYpCgljbHIubAkJU0MrOCglYTYpCglmbW92LngJCSglYTApLCVmcDAKCWZtb3YubAkJJWQwLCVmcGNyCgltb3YuYgkJJkZBRERfT1AsJWQxCQkjIGxhc3QgaW5zdCBpcyBBREQKCWZhZGQueAkJU0MoJWE2KSwlZnAwCglicmEJCXRfY2F0Y2gKCkVNMTJUSU5ZOgojLS1TdGVwIDguMwoJZm1vdi54CQkoJWEwKSwlZnAwCglmbXVsLmQJCVRXTzE0MCglcGMpLCVmcDAKCW1vdi5sCQkmMHg4MDAxMDAwMCxTQyglYTYpCgltb3YubAkJJjB4ODAwMDAwMDAsU0MrNCglYTYpCgljbHIubAkJU0MrOCglYTYpCglmYWRkLngJCVNDKCVhNiksJWZwMAoJZm1vdi5sCQklZDAsJWZwY3IKCW1vdi5iCQkmRk1VTF9PUCwlZDEJCSMgbGFzdCBpbnN0IGlzIE1VTAoJZm11bC5kCQlUV09OMTQwKCVwYyksJWZwMAoJYnJhCQl0X2NhdGNoCgpFTTFQT0xZOgojLS1TdGVwIDkJZXhwKFgpLTEgYnkgYSBzaW1wbGUgcG9seW5vbWlhbAoJZm1vdi54CQkoJWEwKSwlZnAwCQkjIGZwMCBpcyBYCglmbXVsLngJCSVmcDAsJWZwMAkJIyBmcDAgaXMgUyA6PSBYKlgKCWZtb3ZtLngJCSYweGMsLSglc3ApCQkjIHNhdmUgZnAyIHslZnAyLyVmcDN9CglmbW92LnMJCSYweDJGMzBDQUE4LCVmcDEJIyBmcDEgaXMgQjEyCglmbXVsLngJCSVmcDAsJWZwMQkJIyBmcDEgaXMgUypCMTIKCWZtb3YucwkJJjB4MzEwRjgyOTAsJWZwMgkjIGZwMiBpcyBCMTEKCWZhZGQucwkJJjB4MzJENzMyMjAsJWZwMQkjIGZwMSBpcyBCMTArUypCMTIKCglmbXVsLngJCSVmcDAsJWZwMgkJIyBmcDIgaXMgUypCMTEKCWZtdWwueAkJJWZwMCwlZnAxCQkjIGZwMSBpcyBTKihCMTAgKyAuLi4KCglmYWRkLnMJCSYweDM0OTNGMjgxLCVmcDIJIyBmcDIgaXMgQjkrUyouLi4KCWZhZGQuZAkJRU0xQjgoJXBjKSwlZnAxCQkjIGZwMSBpcyBCOCtTKi4uLgoKCWZtdWwueAkJJWZwMCwlZnAyCQkjIGZwMiBpcyBTKihCOSsuLi4KCWZtdWwueAkJJWZwMCwlZnAxCQkjIGZwMSBpcyBTKihCOCsuLi4KCglmYWRkLmQJCUVNMUI3KCVwYyksJWZwMgkJIyBmcDIgaXMgQjcrUyouLi4KCWZhZGQuZAkJRU0xQjYoJXBjKSwlZnAxCQkjIGZwMSBpcyBCNitTKi4uLgoKCWZtdWwueAkJJWZwMCwlZnAyCQkjIGZwMiBpcyBTKihCNysuLi4KCWZtdWwueAkJJWZwMCwlZnAxCQkjIGZwMSBpcyBTKihCNisuLi4KCglmYWRkLmQJCUVNMUI1KCVwYyksJWZwMgkJIyBmcDIgaXMgQjUrUyouLi4KCWZhZGQuZAkJRU0xQjQoJXBjKSwlZnAxCQkjIGZwMSBpcyBCNCtTKi4uLgoKCWZtdWwueAkJJWZwMCwlZnAyCQkjIGZwMiBpcyBTKihCNSsuLi4KCWZtdWwueAkJJWZwMCwlZnAxCQkjIGZwMSBpcyBTKihCNCsuLi4KCglmYWRkLmQJCUVNMUIzKCVwYyksJWZwMgkJIyBmcDIgaXMgQjMrUyouLi4KCWZhZGQueAkJRU0xQjIoJXBjKSwlZnAxCQkjIGZwMSBpcyBCMitTKi4uLgoKCWZtdWwueAkJJWZwMCwlZnAyCQkjIGZwMiBpcyBTKihCMysuLi4KCWZtdWwueAkJJWZwMCwlZnAxCQkjIGZwMSBpcyBTKihCMisuLi4KCglmbXVsLngJCSVmcDAsJWZwMgkJIyBmcDIgaXMgUypTKihCMysuLi4pCglmbXVsLngJCSglYTApLCVmcDEJCSMgZnAxIGlzIFgqUyooQjIuLi4KCglmbXVsLnMJCSYweDNGMDAwMDAwLCVmcDAJIyBmcDAgaXMgUypCMQoJZmFkZC54CQklZnAyLCVmcDEJCSMgZnAxIGlzIFEKCglmbW92bS54CQkoJXNwKSssJjB4MzAJCSMgZnAyIHJlc3RvcmVkIHslZnAyLyVmcDN9CgoJZmFkZC54CQklZnAxLCVmcDAJCSMgZnAwIGlzIFMqQjErUQoKCWZtb3YubAkJJWQwLCVmcGNyCglmYWRkLngJCSglYTApLCVmcDAKCWJyYQkJdF9pbngyCgpFTTFCSUc6CiMtLVN0ZXAgMTAJfFh8ID4gNzAgbG9nMgoJbW92LmwJCSglYTApLCVkMQoJY21wLmwJCSVkMSwmMAoJYmd0LncJCUVYUEMxCiMtLVN0ZXAgMTAuMgoJZm1vdi5zCQkmMHhCRjgwMDAwMCwlZnAwCSMgZnAwIGlzIC0xCglmbW92LmwJCSVkMCwlZnBjcgoJZmFkZC5zCQkmMHgwMDgwMDAwMCwlZnAwCSMgLTEgKyAyXigtMTI2KQoJYnJhCQl0X21pbngyCgoJZ2xvYmFsCQlzZXRveG0xZApzZXRveG0xZDoKIy0tZW50cnkgcG9pbnQgZm9yIEVYUE0xKFgpLCBoZXJlIFggaXMgZGVub3JtYWxpemVkCiMtLVN0ZXAgMC4KCWJyYQkJdF9leHRkbnJtCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgc2dldGV4cCgpOiAgcmV0dXJucyB0aGUgZXhwb25lbnQgcG9ydGlvbiBvZiB0aGUgaW5wdXQgYXJndW1lbnQuCSMKIwkgICAgICBUaGUgZXhwb25lbnQgYmlhcyBpcyByZW1vdmVkIGFuZCB0aGUgZXhwb25lbnQgdmFsdWUgaXMJIwojCSAgICAgIHJldHVybmVkIGFzIGFuIGV4dGVuZGVkIHByZWNpc2lvbiBudW1iZXIgaW4gZnAwLgkJIwojIHNnZXRleHBkKCk6IGhhbmRsZXMgZGVub3JtYWxpemVkIG51bWJlcnMuCQkJCSMKIwkJCQkJCQkJCSMKIyBzZ2V0bWFuKCk6ICBleHRyYWN0cyB0aGUgbWFudGlzc2Egb2YgdGhlIGlucHV0IGFyZ3VtZW50LiBUaGUJCSMKIwkgICAgICBtYW50aXNzYSBpcyBjb252ZXJ0ZWQgdG8gYW4gZXh0ZW5kZWQgcHJlY2lzaW9uIG51bWJlciB3LwkjCiMJICAgICAgYW4gZXhwb25lbnQgb2YgJDNmZmYgYW5kIGlzIHJldHVybmVkIGluIGZwMC4gVGhlIHJhbmdlIG9mICMKIwkgICAgICB0aGUgcmVzdWx0IGlzIFsxLjAgLSAyLjApLgkJCQkjCiMgc2dldG1hbmQoKTogaGFuZGxlcyBkZW5vcm1hbGl6ZWQgbnVtYmVycy4JCQkJIwojCQkJCQkJCQkJIwojIElOUFVUICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAjCiMJYTAgID0gcG9pbnRlciB0byBleHRlbmRlZCBwcmVjaXNpb24gaW5wdXQJCQkjCiMJCQkJCQkJCQkjCiMgT1VUUFVUICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICMKIwlmcDAgPSBleHBvbmVudChYKSBvciBtYW50aXNzYShYKQkJCQkjCiMJCQkJCQkJCQkjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCglnbG9iYWwJCXNnZXRleHAKc2dldGV4cDoKCW1vdi53CQlTUkNfRVgoJWEwKSwlZDAJCSMgZ2V0IHRoZSBleHBvbmVudAoJYmNscgkJJjB4ZiwlZDAJCSMgY2xlYXIgdGhlIHNpZ24gYml0CglzdWJpLncJCSYweDNmZmYsJWQwCQkjIHN1YnRyYWN0IG9mZiB0aGUgYmlhcwoJZm1vdi53CQklZDAsJWZwMAkJIyByZXR1cm4gZXhwIGluIGZwMAoJYmx0LmIJCXNnZXRleHBuCQkjIGl0J3MgbmVnYXRpdmUKCXJ0cwoKc2dldGV4cG46Cgltb3YuYgkJJm5lZ19ibWFzayxGUFNSX0NDKCVhNikJIyBzZXQgJ04nIGNjb2RlIGJpdAoJcnRzCgoJZ2xvYmFsCQlzZ2V0ZXhwZApzZ2V0ZXhwZDoKCWJzci5sCQlub3JtCQkJIyBub3JtYWxpemUKCW5lZy53CQklZDAJCQkjIG5ldyBleHAgPSAtKHNoZnQgYW10KQoJc3ViaS53CQkmMHgzZmZmLCVkMAkJIyBzdWJ0cmFjdCBvZmYgdGhlIGJpYXMKCWZtb3YudwkJJWQwLCVmcDAJCSMgcmV0dXJuIGV4cCBpbiBmcDAKCW1vdi5iCQkmbmVnX2JtYXNrLEZQU1JfQ0MoJWE2KQkjIHNldCAnTicgY2NvZGUgYml0CglydHMKCglnbG9iYWwJCXNnZXRtYW4Kc2dldG1hbjoKCW1vdi53CQlTUkNfRVgoJWEwKSwlZDAJCSMgZ2V0IHRoZSBleHAKCW9yaS53CQkmMHg3ZmZmLCVkMAkJIyBjbGVhciBvbGQgZXhwCgliY2xyCQkmMHhlLCVkMAkJIyBtYWtlIGl0IHRoZSBuZXcgZXhwICstM2ZmZgoKIyBoZXJlLCB3ZSBidWlsZCB0aGUgcmVzdWx0IGluIGEgdG1wIGxvY2F0aW9uIHNvIGFzIG5vdCB0byBkaXN0dXJiIHRoZSBpbnB1dAoJbW92LmwJCVNSQ19ISSglYTApLEZQX1NDUjBfSEkoJWE2KSAjIGNvcHkgdG8gdG1wIGxvYwoJbW92LmwJCVNSQ19MTyglYTApLEZQX1NDUjBfTE8oJWE2KSAjIGNvcHkgdG8gdG1wIGxvYwoJbW92LncJCSVkMCxGUF9TQ1IwX0VYKCVhNikJIyBpbnNlcnQgbmV3IGV4cG9uZW50CglmbW92LngJCUZQX1NDUjAoJWE2KSwlZnAwCSMgcHV0IG5ldyB2YWx1ZSBiYWNrIGluIGZwMAoJYm1pLmIJCXNnZXRtYW5uCQkjIGl0J3MgbmVnYXRpdmUKCXJ0cwoKc2dldG1hbm46Cgltb3YuYgkJJm5lZ19ibWFzayxGUFNSX0NDKCVhNikJIyBzZXQgJ04nIGNjb2RlIGJpdAoJcnRzCgojCiMgRm9yIGRlbm9ybWFsaXplZCBudW1iZXJzLCBzaGlmdCB0aGUgbWFudGlzc2EgdW50aWwgdGhlIGotYml0ID0gMSwKIyB0aGVuIGxvYWQgdGhlIGV4cG9uZW50IHdpdGggKy8xICQzZmZmLgojCglnbG9iYWwJCXNnZXRtYW5kCnNnZXRtYW5kOgoJYnNyLmwJCW5vcm0JCQkjIG5vcm1hbGl6ZSBleHBvbmVudAoJYnJhLmIJCXNnZXRtYW4KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBzY29zaCgpOiAgY29tcHV0ZXMgdGhlIGh5cGVyYm9saWMgY29zaW5lIG9mIGEgbm9ybWFsaXplZCBpbnB1dAkjCiMgc2Nvc2hkKCk6IGNvbXB1dGVzIHRoZSBoeXBlcmJvbGljIGNvc2luZSBvZiBhIGRlbm9ybWFsaXplZCBpbnB1dAkjCiMJCQkJCQkJCQkjCiMgSU5QVVQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCSMKIwlhMCA9IHBvaW50ZXIgdG8gZXh0ZW5kZWQgcHJlY2lzaW9uIGlucHV0CQkJIwojCWQwID0gcm91bmQgcHJlY2lzaW9uLG1vZGUJCQkJCSMKIwkJCQkJCQkJCSMKIyBPVVRQVVQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioJIwojCWZwMCA9IGNvc2goWCkJCQkJCQkJIwojCQkJCQkJCQkJIwojIEFDQ1VSQUNZIGFuZCBNT05PVE9OSUNJVFkgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgkjCiMJVGhlIHJldHVybmVkIHJlc3VsdCBpcyB3aXRoaW4gMyB1bHBzIGluIDY0IHNpZ25pZmljYW50IGJpdCwJIwojCWkuZS4gd2l0aGluIDAuNTAwMSB1bHAgdG8gNTMgYml0cyBpZiB0aGUgcmVzdWx0IGlzIHN1YnNlcXVlbnRseQkjCiMJcm91bmRlZCB0byBkb3VibGUgcHJlY2lzaW9uLiBUaGUgcmVzdWx0IGlzIHByb3ZhYmx5IG1vbm90b25pYwkjCiMJaW4gZG91YmxlIHByZWNpc2lvbi4JCQkJCQkjCiMJCQkJCQkJCQkjCiMgQUxHT1JJVEhNICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCSMKIwkJCQkJCQkJCSMKIwlDT1NICQkJCQkJCQkjCiMJMS4gSWYgfFh8ID4gMTYzODAgbG9nMiwgZ28gdG8gMy4JCQkJIwojCQkJCQkJCQkJIwojCTIuICh8WHwgPD0gMTYzODAgbG9nMikgQ29zaChYKSBpcyBvYnRhaW5lZCBieSB0aGUgZm9ybXVsYWUJIwojCQl5ID0gfFh8LCB6ID0gZXhwKFkpLCBhbmQJCQkJIwojCQljb3NoKFgpID0gKDEvMikqKCB6ICsgMS96ICkuCQkJCSMKIwkJRXhpdC4JCQkJCQkJIwojCQkJCQkJCQkJIwojCTMuICh8WHwgPiAxNjM4MCBsb2cyKS4gSWYgfFh8ID4gMTY0ODAgbG9nMiwgZ28gdG8gNS4JCSMKIwkJCQkJCQkJCSMKIwk0LiAoMTYzODAgbG9nMiA8IHxYfCA8PSAxNjQ4MCBsb2cyKQkJCQkjCiMJCWNvc2goWCkgPSBzaWduKFgpICogZXhwKHxYfCkvMi4JCQkJIwojCQlIb3dldmVyLCBpbnZva2luZyBleHAofFh8KSBtYXkgY2F1c2UgcHJlbWF0dXJlCQkjCiMJCW92ZXJmbG93LiBUaHVzLCB3ZSBjYWxjdWxhdGUgc2luaChYKSBhcyBmb2xsb3dzOgkjCiMJCVkJOj0gfFh8CQkJCQkJIwojCQlGYWN0CTo9CTIqKigxNjM4MCkJCQkJIwojCQlZJwk6PSBZIC0gMTYzODEgbG9nMgkJCQkjCiMJCWNvc2goWCkgOj0gRmFjdCAqIGV4cChZJykuCQkJCSMKIwkJRXhpdC4JCQkJCQkJIwojCQkJCQkJCQkJIwojCTUuICh8WHwgPiAxNjQ4MCBsb2cyKSBzaW5oKFgpIG11c3Qgb3ZlcmZsb3cuIFJldHVybgkJIwojCQlIdWdlKkh1Z2UgdG8gZ2VuZXJhdGUgb3ZlcmZsb3cgYW5kIGFuIGluZmluaXR5IHdpdGgJIwojCQl0aGUgYXBwcm9wcmlhdGUgc2lnbi4gSHVnZSBpcyB0aGUgbGFyZ2VzdCBmaW5pdGUgbnVtYmVyCSMKIwkJaW4gZXh0ZW5kZWQgZm9ybWF0LiBFeGl0LgkJCQkjCiMJCQkJCQkJCQkjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKClRXTzE2MzgwOgoJbG9uZwkJMHg3RkZCMDAwMCwweDgwMDAwMDAwLDB4MDAwMDAwMDAsMHgwMDAwMDAwMAoKCWdsb2JhbAkJc2Nvc2gKc2Nvc2g6CglmbW92LngJCSglYTApLCVmcDAJCSMgTE9BRCBJTlBVVAoKCW1vdi5sCQkoJWEwKSwlZDEKCW1vdi53CQk0KCVhMCksJWQxCglhbmQubAkJJjB4N0ZGRkZGRkYsJWQxCgljbXAubAkJJWQxLCYweDQwMENCMTY3CgliZ3QuYgkJQ09TSEJJRwoKIy0tVEhJUyBJUyBUSEUgVVNVQUwgQ0FTRSwgfFh8IDwgMTYzODAgTE9HMgojLS1DT1NIKFgpID0gKDEvMikgKiAoIEVYUChYKSArIDEvRVhQKFgpICkKCglmYWJzLngJCSVmcDAJCQkjIHxYfAoKCW1vdi5sCQklZDAsLSglc3ApCgljbHIubAkJJWQwCglmbW92bS54CQkmMHgwMSwtKCVzcCkJCSMgc2F2ZSB8WHwgdG8gc3RhY2sKCWxlYQkJKCVzcCksJWEwCQkjIHBhc3MgcHRyIHRvIHxYfAoJYnNyCQlzZXRveAkJCSMgRlAwIElTIEVYUCh8WHwpCglhZGQubAkJJjB4Yywlc3AJCSMgZXJhc2UgfFh8IGZyb20gc3RhY2sKCWZtdWwucwkJJjB4M0YwMDAwMDAsJWZwMAkjICgxLzIpRVhQKHxYfCkKCW1vdi5sCQkoJXNwKSssJWQwCgoJZm1vdi5zCQkmMHgzRTgwMDAwMCwlZnAxCSMgKDEvNCkKCWZkaXYueAkJJWZwMCwlZnAxCQkjIDEvKDIgRVhQKHxYfCkpCgoJZm1vdi5sCQklZDAsJWZwY3IKCW1vdi5iCQkmRkFERF9PUCwlZDEJCSMgbGFzdCBpbnN0IGlzIEFERAoJZmFkZC54CQklZnAxLCVmcDAKCWJyYQkJdF9jYXRjaAoKQ09TSEJJRzoKCWNtcC5sCQklZDEsJjB4NDAwQ0IyQjMKCWJndC5iCQlDT1NISFVHRQoKCWZhYnMueAkJJWZwMAoJZnN1Yi5kCQlUMSglcGMpLCVmcDAJCSMgKHxYfC0xNjM4MUxPRzJfTEVBRCkKCWZzdWIuZAkJVDIoJXBjKSwlZnAwCQkjIHxYfCAtIDE2MzgxIExPRzIsIEFDQ1VSQVRFCgoJbW92LmwJCSVkMCwtKCVzcCkKCWNsci5sCQklZDAKCWZtb3ZtLngJCSYweDAxLC0oJXNwKQkJIyBzYXZlIGZwMCB0byBzdGFjawoJbGVhCQkoJXNwKSwlYTAJCSMgcGFzcyBwdHIgdG8gZnAwCglic3IJCXNldG94CglhZGQubAkJJjB4Yywlc3AJCSMgY2xlYXIgZnAwIGZyb20gc3RhY2sKCW1vdi5sCQkoJXNwKSssJWQwCgoJZm1vdi5sCQklZDAsJWZwY3IKCW1vdi5iCQkmRk1VTF9PUCwlZDEJCSMgbGFzdCBpbnN0IGlzIE1VTAoJZm11bC54CQlUV08xNjM4MCglcGMpLCVmcDAKCWJyYQkJdF9jYXRjaAoKQ09TSEhVR0U6CglicmEJCXRfb3ZmbDIKCglnbG9iYWwJCXNjb3NoZAojLS1DT1NIKFgpID0gMSBGT1IgREVOT1JNQUxJWkVEIFgKc2Nvc2hkOgoJZm1vdi5zCQkmMHgzRjgwMDAwMCwlZnAwCgoJZm1vdi5sCQklZDAsJWZwY3IKCWZhZGQucwkJJjB4MDA4MDAwMDAsJWZwMAoJYnJhCQl0X3BpbngyCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgc3NpbmgoKTogIGNvbXB1dGVzIHRoZSBoeXBlcmJvbGljIHNpbmUgb2YgYSBub3JtYWxpemVkIGlucHV0CQkjCiMgc3NpbmhkKCk6IGNvbXB1dGVzIHRoZSBoeXBlcmJvbGljIHNpbmUgb2YgYSBkZW5vcm1hbGl6ZWQgaW5wdXQJIwojCQkJCQkJCQkJIwojIElOUFVUICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAjCiMJYTAgPSBwb2ludGVyIHRvIGV4dGVuZGVkIHByZWNpc2lvbiBpbnB1dAkJCSMKIwlkMCA9IHJvdW5kIHByZWNpc2lvbixtb2RlCQkJCQkjCiMJCQkJCQkJCQkjCiMgT1VUUFVUICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICMKIwlmcDAgPSBzaW5oKFgpCQkJCQkJCSMKIwkJCQkJCQkJCSMKIyBBQ0NVUkFDWSBhbmQgTU9OT1RPTklDSVRZICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioJIwojCVRoZSByZXR1cm5lZCByZXN1bHQgaXMgd2l0aGluIDMgdWxwcyBpbiA2NCBzaWduaWZpY2FudCBiaXQsCSMKIwlpLmUuIHdpdGhpbiAwLjUwMDEgdWxwIHRvIDUzIGJpdHMgaWYgdGhlIHJlc3VsdCBpcyBzdWJzZXF1ZW50bHkgIwojCXJvdW5kZWQgdG8gZG91YmxlIHByZWNpc2lvbi4gVGhlIHJlc3VsdCBpcyBwcm92YWJseSBtb25vdG9uaWMJIwojCWluIGRvdWJsZSBwcmVjaXNpb24uCQkJCQkJIwojCQkJCQkJCQkJIwojIEFMR09SSVRITSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAjCiMJCQkJCQkJCQkjCiMgICAgICAgU0lOSAkJCQkJCQkJIwojICAgICAgIDEuIElmIHxYfCA+IDE2MzgwIGxvZzIsIGdvIHRvIDMuCQkJCSMKIwkJCQkJCQkJCSMKIyAgICAgICAyLiAofFh8IDw9IDE2MzgwIGxvZzIpIFNpbmgoWCkgaXMgb2J0YWluZWQgYnkgdGhlIGZvcm11bGEJIwojICAgICAgICAgICAgICAgeSA9IHxYfCwgc2duID0gc2lnbihYKSwgYW5kIHogPSBleHBtMShZKSwJCSMKIyAgICAgICAgICAgICAgIHNpbmgoWCkgPSBzZ24qKDEvMikqKCB6ICsgei8oMSt6KSApLgkJCSMKIyAgICAgICAgICBFeGl0LgkJCQkJCQkjCiMJCQkJCQkJCQkjCiMgICAgICAgMy4gSWYgfFh8ID4gMTY0ODAgbG9nMiwgZ28gdG8gNS4JCQkJIwojCQkJCQkJCQkJIwojICAgICAgIDQuICgxNjM4MCBsb2cyIDwgfFh8IDw9IDE2NDgwIGxvZzIpCQkJCSMKIyAgICAgICAgICAgICAgIHNpbmgoWCkgPSBzaWduKFgpICogZXhwKHxYfCkvMi4JCQkJIwojICAgICAgICAgIEhvd2V2ZXIsIGludm9raW5nIGV4cCh8WHwpIG1heSBjYXVzZSBwcmVtYXR1cmUgb3ZlcmZsb3cuCSMKIyAgICAgICAgICBUaHVzLCB3ZSBjYWxjdWxhdGUgc2luaChYKSBhcyBmb2xsb3dzOgkJCSMKIyAgICAgICAgICAgICBZICAgICAgIDo9IHxYfAkJCQkJCSMKIyAgICAgICAgICAgICBzZ24gICAgIDo9IHNpZ24oWCkJCQkJCSMKIyAgICAgICAgICAgICBzZ25GYWN0IDo9IHNnbiAqIDIqKigxNjM4MCkJCQkJIwojICAgICAgICAgICAgIFknICAgICAgOj0gWSAtIDE2MzgxIGxvZzIJCQkJCSMKIyAgICAgICAgICAgICBzaW5oKFgpIDo9IHNnbkZhY3QgKiBleHAoWScpLgkJCQkjCiMgICAgICAgICAgRXhpdC4JCQkJCQkJIwojCQkJCQkJCQkJIwojICAgICAgIDUuICh8WHwgPiAxNjQ4MCBsb2cyKSBzaW5oKFgpIG11c3Qgb3ZlcmZsb3cuIFJldHVybgkJIwojICAgICAgICAgIHNpZ24oWCkqSHVnZSpIdWdlIHRvIGdlbmVyYXRlIG92ZXJmbG93IGFuZCBhbiBpbmZpbml0eSB3aXRoCSMKIyAgICAgICAgICB0aGUgYXBwcm9wcmlhdGUgc2lnbi4gSHVnZSBpcyB0aGUgbGFyZ2VzdCBmaW5pdGUgbnVtYmVyIGluCSMKIyAgICAgICAgICBleHRlbmRlZCBmb3JtYXQuIEV4aXQuCQkJCQkjCiMJCQkJCQkJCQkjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCglnbG9iYWwJCXNzaW5oCnNzaW5oOgoJZm1vdi54CQkoJWEwKSwlZnAwCQkjIExPQUQgSU5QVVQKCgltb3YubAkJKCVhMCksJWQxCgltb3YudwkJNCglYTApLCVkMQoJbW92LmwJCSVkMSwlYTEJCQkjIHNhdmUgKGNvbXBhY3RlZCkgb3BlcmFuZAoJYW5kLmwJCSYweDdGRkZGRkZGLCVkMQoJY21wLmwJCSVkMSwmMHg0MDBDQjE2NwoJYmd0LmIJCVNJTkhCSUcKCiMtLVRISVMgSVMgVEhFIFVTVUFMIENBU0UsIHxYfCA8IDE2MzgwIExPRzIKIy0tWSA9IHxYfCwgWiA9IEVYUE0xKFkpLCBTSU5IKFgpID0gU0lHTihYKSooMS8yKSooIFogKyBaLygxK1opICkKCglmYWJzLngJCSVmcDAJCQkjIFkgPSB8WHwKCgltb3ZtLmwJCSYweDgwNDAsLSglc3ApCQkjIHthMS9kMH0KCWZtb3ZtLngJCSYweDAxLC0oJXNwKQkJIyBzYXZlIFkgb24gc3RhY2sKCWxlYQkJKCVzcCksJWEwCQkjIHBhc3MgcHRyIHRvIFkKCWNsci5sCQklZDAKCWJzcgkJc2V0b3htMQkJCSMgRlAwIElTIFogPSBFWFBNMShZKQoJYWRkLmwJCSYweGMsJXNwCQkjIGNsZWFyIFkgZnJvbSBzdGFjawoJZm1vdi5sCQkmMCwlZnBjcgoJbW92bS5sCQkoJXNwKSssJjB4MDIwMQkJIyB7YTEvZDB9CgoJZm1vdi54CQklZnAwLCVmcDEKCWZhZGQucwkJJjB4M0Y4MDAwMDAsJWZwMQkjIDErWgoJZm1vdi54CQklZnAwLC0oJXNwKQoJZmRpdi54CQklZnAxLCVmcDAJCSMgWi8oMStaKQoJbW92LmwJCSVhMSwlZDEKCWFuZC5sCQkmMHg4MDAwMDAwMCwlZDEKCW9yLmwJCSYweDNGMDAwMDAwLCVkMQoJZmFkZC54CQkoJXNwKSssJWZwMAoJbW92LmwJCSVkMSwtKCVzcCkKCglmbW92LmwJCSVkMCwlZnBjcgoJbW92LmIJCSZGTVVMX09QLCVkMQkJIyBsYXN0IGluc3QgaXMgTVVMCglmbXVsLnMJCSglc3ApKywlZnAwCQkjIGxhc3QgZnAgaW5zdCAtIHBvc3NpYmxlIGV4Y2VwdGlvbnMgc2V0CglicmEJCXRfY2F0Y2gKClNJTkhCSUc6CgljbXAubAkJJWQxLCYweDQwMENCMkIzCgliZ3QJCXRfb3ZmbAoJZmFicy54CQklZnAwCglmc3ViLmQJCVQxKCVwYyksJWZwMAkJIyAofFh8LTE2MzgxTE9HMl9MRUFEKQoJbW92LmwJCSYwLC0oJXNwKQoJbW92LmwJCSYweDgwMDAwMDAwLC0oJXNwKQoJbW92LmwJCSVhMSwlZDEKCWFuZC5sCQkmMHg4MDAwMDAwMCwlZDEKCW9yLmwJCSYweDdGRkIwMDAwLCVkMQoJbW92LmwJCSVkMSwtKCVzcCkJCSMgRVhURU5ERUQgRk1UCglmc3ViLmQJCVQyKCVwYyksJWZwMAkJIyB8WHwgLSAxNjM4MSBMT0cyLCBBQ0NVUkFURQoKCW1vdi5sCQklZDAsLSglc3ApCgljbHIubAkJJWQwCglmbW92bS54CQkmMHgwMSwtKCVzcCkJCSMgc2F2ZSBmcDAgb24gc3RhY2sKCWxlYQkJKCVzcCksJWEwCQkjIHBhc3MgcHRyIHRvIGZwMAoJYnNyCQlzZXRveAoJYWRkLmwJCSYweGMsJXNwCQkjIGNsZWFyIGZwMCBmcm9tIHN0YWNrCgoJbW92LmwJCSglc3ApKywlZDAKCWZtb3YubAkJJWQwLCVmcGNyCgltb3YuYgkJJkZNVUxfT1AsJWQxCQkjIGxhc3QgaW5zdCBpcyBNVUwKCWZtdWwueAkJKCVzcCkrLCVmcDAJCSMgcG9zc2libGUgZXhjZXB0aW9uCglicmEJCXRfY2F0Y2gKCglnbG9iYWwJCXNzaW5oZAojLS1TSU5IKFgpID0gWCBGT1IgREVOT1JNQUxJWkVEIFgKc3NpbmhkOgoJYnJhCQl0X2V4dGRucm0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBzdGFuaCgpOiAgY29tcHV0ZXMgdGhlIGh5cGVyYm9saWMgdGFuZ2VudCBvZiBhIG5vcm1hbGl6ZWQgaW5wdXQJIwojIHN0YW5oZCgpOiBjb21wdXRlcyB0aGUgaHlwZXJib2xpYyB0YW5nZW50IG9mIGEgZGVub3JtYWxpemVkIGlucHV0CSMKIwkJCQkJCQkJCSMKIyBJTlBVVCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioJIwojCWEwID0gcG9pbnRlciB0byBleHRlbmRlZCBwcmVjaXNpb24gaW5wdXQJCQkjCiMJZDAgPSByb3VuZCBwcmVjaXNpb24sbW9kZQkJCQkJIwojCQkJCQkJCQkJIwojIE9VVFBVVCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgkjCiMJZnAwID0gdGFuaChYKQkJCQkJCQkjCiMJCQkJCQkJCQkjCiMgQUNDVVJBQ1kgYW5kIE1PTk9UT05JQ0lUWSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCSMKIwlUaGUgcmV0dXJuZWQgcmVzdWx0IGlzIHdpdGhpbiAzIHVscHMgaW4gNjQgc2lnbmlmaWNhbnQgYml0LAkjCiMJaS5lLiB3aXRoaW4gMC41MDAxIHVscCB0byA1MyBiaXRzIGlmIHRoZSByZXN1bHQgaXMgc3Vic2VxdWVudGx5ICMKIwlyb3VuZGVkIHRvIGRvdWJsZSBwcmVjaXNpb24uIFRoZSByZXN1bHQgaXMgcHJvdmFibHkgbW9ub3RvbmljCSMKIwlpbiBkb3VibGUgcHJlY2lzaW9uLgkJCQkJCSMKIwkJCQkJCQkJCSMKIyBBTEdPUklUSE0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioJIwojCQkJCQkJCQkJIwojCVRBTkgJCQkJCQkJCSMKIwkxLiBJZiB8WHwgPj0gKDUvMikgbG9nMiBvciB8WHwgPD0gMioqKC00MCksIGdvIHRvIDMuCQkjCiMJCQkJCQkJCQkjCiMJMi4gKDIqKigtNDApIDwgfFh8IDwgKDUvMikgbG9nMikgQ2FsY3VsYXRlIHRhbmgoWCkgYnkJCSMKIwkJc2duIDo9IHNpZ24oWCksIHkgOj0gMnxYfCwgeiA6PSBleHBtMShZKSwgYW5kCQkjCiMJCXRhbmgoWCkgPSBzZ24qKCB6LygyK3opICkuCQkJCSMKIwkJRXhpdC4JCQkJCQkJIwojCQkJCQkJCQkJIwojCTMuICh8WHwgPD0gMioqKC00MCkgb3IgfFh8ID49ICg1LzIpIGxvZzIpLiBJZiB8WHwgPCAxLAkJIwojCQlnbyB0byA3LgkJCQkJCSMKIwkJCQkJCQkJCSMKIwk0LiAofFh8ID49ICg1LzIpIGxvZzIpIElmIHxYfCA+PSA1MCBsb2cyLCBnbyB0byA2LgkJIwojCQkJCQkJCQkJIwojCTUuICgoNS8yKSBsb2cyIDw9IHxYfCA8IDUwIGxvZzIpIENhbGN1bGF0ZSB0YW5oKFgpIGJ5CQkjCiMJCXNnbiA6PSBzaWduKFgpLCB5IDo9IDJ8WHwsIHogOj0gZXhwKFkpLAkJCSMKIwkJdGFuaChYKSA9IHNnbiAtIFsgc2duKjIvKDEreikgXS4JCQkjCiMJCUV4aXQuCQkJCQkJCSMKIwkJCQkJCQkJCSMKIwk2LiAofFh8ID49IDUwIGxvZzIpIFRhbmgoWCkgPSArLTEgKHJvdW5kIHRvIG5lYXJlc3QpLiBUaHVzLCB3ZQkjCiMJCWNhbGN1bGF0ZSBUYW5oKFgpIGJ5CQkJCQkjCiMJCXNnbiA6PSBzaWduKFgpLCBUaW55IDo9IDIqKigtMTI2KSwJCQkjCiMJCXRhbmgoWCkgOj0gc2duIC0gc2duKlRpbnkuCQkJCSMKIwkJRXhpdC4JCQkJCQkJIwojCQkJCQkJCQkJIwojCTcuICh8WHwgPCAyKiooLTQwKSkuIFRhbmgoWCkgPSBYLglFeGl0LgkJCSMKIwkJCQkJCQkJCSMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKCXNldAkJWCxGUF9TQ1IwCglzZXQJCVhGUkFDLFgrNAoKCXNldAkJU0dOLExfU0NSMwoKCXNldAkJVixGUF9TQ1IwCgoJZ2xvYmFsCQlzdGFuaApzdGFuaDoKCWZtb3YueAkJKCVhMCksJWZwMAkJIyBMT0FEIElOUFVUCgoJZm1vdi54CQklZnAwLFgoJWE2KQoJbW92LmwJCSglYTApLCVkMQoJbW92LncJCTQoJWEwKSwlZDEKCW1vdi5sCQklZDEsWCglYTYpCglhbmQubAkJJjB4N0ZGRkZGRkYsJWQxCgljbXAubAkJJWQxLCAmMHgzZmQ3ODAwMAkjIGlzIHxYfCA8IDJeKC00MCk/CglibHQudwkJVEFOSEJPUlMJCSMgeWVzCgljbXAubAkJJWQxLCAmMHgzZmZmZGRjZQkjIGlzIHxYfCA+ICg1LzIpTE9HMj8KCWJndC53CQlUQU5IQk9SUwkJIyB5ZXMKCiMtLVRISVMgSVMgVEhFIFVTVUFMIENBU0UKIy0tWSA9IDJ8WHwsIFogPSBFWFBNMShZKSwgVEFOSChYKSA9IFNJR04oWCkgKiBaIC8gKForMikuCgoJbW92LmwJCVgoJWE2KSwlZDEKCW1vdi5sCQklZDEsU0dOKCVhNikKCWFuZC5sCQkmMHg3RkZGMDAwMCwlZDEKCWFkZC5sCQkmMHgwMDAxMDAwMCwlZDEJCSMgRVhQT05FTlQgT0YgMnxYfAoJbW92LmwJCSVkMSxYKCVhNikKCWFuZC5sCQkmMHg4MDAwMDAwMCxTR04oJWE2KQoJZm1vdi54CQlYKCVhNiksJWZwMAkJIyBGUDAgSVMgWSA9IDJ8WHwKCgltb3YubAkJJWQwLC0oJXNwKQoJY2xyLmwJCSVkMAoJZm1vdm0ueAkJJjB4MSwtKCVzcCkJCSMgc2F2ZSBZIG9uIHN0YWNrCglsZWEJCSglc3ApLCVhMAkJIyBwYXNzIHB0ciB0byBZCglic3IJCXNldG94bTEJCQkjIEZQMCBJUyBaID0gRVhQTTEoWSkKCWFkZC5sCQkmMHhjLCVzcAkJIyBjbGVhciBZIGZyb20gc3RhY2sKCW1vdi5sCQkoJXNwKSssJWQwCgoJZm1vdi54CQklZnAwLCVmcDEKCWZhZGQucwkJJjB4NDAwMDAwMDAsJWZwMQkjIForMgoJbW92LmwJCVNHTiglYTYpLCVkMQoJZm1vdi54CQklZnAxLFYoJWE2KQoJZW9yLmwJCSVkMSxWKCVhNikKCglmbW92LmwJCSVkMCwlZnBjcgkJIyByZXN0b3JlIHVzZXJzIHJvdW5kIHByZWMsbW9kZQoJZmRpdi54CQlWKCVhNiksJWZwMAoJYnJhCQl0X2lueDIKClRBTkhCT1JTOgoJY21wLmwJCSVkMSwmMHgzRkZGODAwMAoJYmx0LncJCVRBTkhTTQoKCWNtcC5sCQklZDEsJjB4NDAwNDhBQTEKCWJndC53CQlUQU5ISFVHRQoKIy0tICg1LzIpIExPRzIgPCB8WHwgPCA1MCBMT0cyLAojLS1UQU5IKFgpID0gMSAtICgyL1tFWFAoMlgpKzFdKS4gTEVUIFkgPSAyfFh8LCBTR04gPSBTSUdOKFgpLAojLS1UQU5IKFgpID0gU0dOIC0JU0dOKjIvW0VYUChZKSsxXS4KCgltb3YubAkJWCglYTYpLCVkMQoJbW92LmwJCSVkMSxTR04oJWE2KQoJYW5kLmwJCSYweDdGRkYwMDAwLCVkMQoJYWRkLmwJCSYweDAwMDEwMDAwLCVkMQkJIyBFWFBPIE9GIDJ8WHwKCW1vdi5sCQklZDEsWCglYTYpCQkjIFkgPSAyfFh8CglhbmQubAkJJjB4ODAwMDAwMDAsU0dOKCVhNikKCW1vdi5sCQlTR04oJWE2KSwlZDEKCWZtb3YueAkJWCglYTYpLCVmcDAJCSMgWSA9IDJ8WHwKCgltb3YubAkJJWQwLC0oJXNwKQoJY2xyLmwJCSVkMAoJZm1vdm0ueAkJJjB4MDEsLSglc3ApCQkjIHNhdmUgWSBvbiBzdGFjawoJbGVhCQkoJXNwKSwlYTAJCSMgcGFzcyBwdHIgdG8gWQoJYnNyCQlzZXRveAkJCSMgRlAwIElTIEVYUChZKQoJYWRkLmwJCSYweGMsJXNwCQkjIGNsZWFyIFkgZnJvbSBzdGFjawoJbW92LmwJCSglc3ApKywlZDAKCW1vdi5sCQlTR04oJWE2KSwlZDEKCWZhZGQucwkJJjB4M0Y4MDAwMDAsJWZwMAkjIEVYUChZKSsxCgoJZW9yLmwJCSYweEMwMDAwMDAwLCVkMQkJIyAtU0lHTihYKSoyCglmbW92LnMJCSVkMSwlZnAxCQkjIC1TSUdOKFgpKjIgSU4gU0dMIEZNVAoJZmRpdi54CQklZnAwLCVmcDEJCSMgLVNJR04oWCkyIC8gW0VYUChZKSsxIF0KCgltb3YubAkJU0dOKCVhNiksJWQxCglvci5sCQkmMHgzRjgwMDAwMCwlZDEJCSMgU0dOCglmbW92LnMJCSVkMSwlZnAwCQkjIFNHTiBJTiBTR0wgRk1UCgoJZm1vdi5sCQklZDAsJWZwY3IJCSMgcmVzdG9yZSB1c2VycyByb3VuZCBwcmVjLG1vZGUKCW1vdi5iCQkmRkFERF9PUCwlZDEJCSMgbGFzdCBpbnN0IGlzIEFERAoJZmFkZC54CQklZnAxLCVmcDAKCWJyYQkJdF9pbngyCgpUQU5IU006CglmbW92LmwJCSVkMCwlZnBjcgkJIyByZXN0b3JlIHVzZXJzIHJvdW5kIHByZWMsbW9kZQoJbW92LmIJCSZGTU9WX09QLCVkMQkJIyBsYXN0IGluc3QgaXMgTU9WRQoJZm1vdi54CQlYKCVhNiksJWZwMAkJIyBsYXN0IGluc3QgLSBwb3NzaWJsZSBleGNlcHRpb24gc2V0CglicmEJCXRfY2F0Y2gKCiMtLS1SRVRVUk4gU0dOKFgpIC0gU0dOKFgpRVBTClRBTkhIVUdFOgoJbW92LmwJCVgoJWE2KSwlZDEKCWFuZC5sCQkmMHg4MDAwMDAwMCwlZDEKCW9yLmwJCSYweDNGODAwMDAwLCVkMQoJZm1vdi5zCQklZDEsJWZwMAoJYW5kLmwJCSYweDgwMDAwMDAwLCVkMQoJZW9yLmwJCSYweDgwODAwMDAwLCVkMQkJIyAtU0lHTihYKSpFUFMKCglmbW92LmwJCSVkMCwlZnBjcgkJIyByZXN0b3JlIHVzZXJzIHJvdW5kIHByZWMsbW9kZQoJZmFkZC5zCQklZDEsJWZwMAoJYnJhCQl0X2lueDIKCglnbG9iYWwJCXN0YW5oZAojLS1UQU5IKFgpID0gWCBGT1IgREVOT1JNQUxJWkVEIFgKc3RhbmhkOgoJYnJhCQl0X2V4dGRucm0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBzbG9nbigpOiAgICBjb21wdXRlcyB0aGUgbmF0dXJhbCBsb2dhcml0aG0gb2YgYSBub3JtYWxpemVkIGlucHV0CSMKIyBzbG9nbmQoKTogICBjb21wdXRlcyB0aGUgbmF0dXJhbCBsb2dhcml0aG0gb2YgYSBkZW5vcm1hbGl6ZWQgaW5wdXQJIwojIHNsb2ducDEoKTogIGNvbXB1dGVzIHRoZSBsb2coMStYKSBvZiBhIG5vcm1hbGl6ZWQgaW5wdXQJCSMKIyBzbG9nbnAxZCgpOiBjb21wdXRlcyB0aGUgbG9nKDErWCkgb2YgYSBkZW5vcm1hbGl6ZWQgaW5wdXQJCSMKIwkJCQkJCQkJCSMKIyBJTlBVVCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioJIwojCWEwID0gcG9pbnRlciB0byBleHRlbmRlZCBwcmVjaXNpb24gaW5wdXQJCQkjCiMJZDAgPSByb3VuZCBwcmVjaXNpb24sbW9kZQkJCQkJIwojCQkJCQkJCQkJIwojIE9VVFBVVCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgkjCiMJZnAwID0gbG9nKFgpIG9yIGxvZygxK1gpCQkJCQkjCiMJCQkJCQkJCQkjCiMgQUNDVVJBQ1kgYW5kIE1PTk9UT05JQ0lUWSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCSMKIwlUaGUgcmV0dXJuZWQgcmVzdWx0IGlzIHdpdGhpbiAyIHVscHMgaW4gNjQgc2lnbmlmaWNhbnQgYml0LAkjCiMJaS5lLiB3aXRoaW4gMC41MDAxIHVscCB0byA1MyBiaXRzIGlmIHRoZSByZXN1bHQgaXMgc3Vic2VxdWVudGx5CSMKIwlyb3VuZGVkIHRvIGRvdWJsZSBwcmVjaXNpb24uIFRoZSByZXN1bHQgaXMgcHJvdmFibHkgbW9ub3RvbmljCSMKIwlpbiBkb3VibGUgcHJlY2lzaW9uLgkJCQkJCSMKIwkJCQkJCQkJCSMKIyBBTEdPUklUSE0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioJIwojCUxPR046CQkJCQkJCQkjCiMJU3RlcCAxLiBJZiB8WC0xfCA8IDEvMTYsIGFwcHJveGltYXRlIGxvZyhYKSBieSBhbiBvZGQJCSMKIwkJcG9seW5vbWlhbCBpbiB1LCB3aGVyZSB1ID0gMihYLTEpLyhYKzEpLiBPdGhlcndpc2UsCSMKIwkJbW92ZSBvbiB0byBTdGVwIDIuCQkJCQkjCiMJCQkJCQkJCQkjCiMJU3RlcCAyLiBYID0gMioqayAqIFkgd2hlcmUgMSA8PSBZIDwgMi4gRGVmaW5lIEYgdG8gYmUgdGhlIGZpcnN0CSMKIwkJc2V2ZW4gc2lnbmlmaWNhbnQgYml0cyBvZiBZIHBsdXMgMioqKC03KSwgaS5lLgkJIwojCQlGID0gMS54eHh4eHgxIGluIGJhc2UgMiB3aGVyZSB0aGUgc2l4ICJ4IiBtYXRjaCB0aG9zZQkjCiMJCW9mIFkuIE5vdGUgdGhhdCB8WS1GfCA8PSAyKiooLTcpLgkJCSMKIwkJCQkJCQkJCSMKIwlTdGVwIDMuIERlZmluZSB1ID0gKFktRikvRi4gQXBwcm94aW1hdGUgbG9nKDErdSkgYnkgYQkJIwojCQlwb2x5bm9taWFsIGluIHUsIGxvZygxK3UpID0gcG9seS4JCQkjCiMJCQkJCQkJCQkjCiMJU3RlcCA0LiBSZWNvbnN0cnVjdAkJCQkJCSMKIwkJbG9nKFgpID0gbG9nKCAyKiprICogWSApID0gaypsb2coMikgKyBsb2coRikgKyBsb2coMSt1KQkjCiMJCWJ5IGsqbG9nKDIpICsgKGxvZyhGKSArIHBvbHkpLiBUaGUgdmFsdWVzIG9mIGxvZyhGKSBhcmUJIwojCQljYWxjdWxhdGVkIGJlZm9yZWhhbmQgYW5kIHN0b3JlZCBpbiB0aGUgcHJvZ3JhbS4JIwojCQkJCQkJCQkJIwojCWxvZ25wMToJCQkJCQkJCSMKIwlTdGVwIDE6IElmIHxYfCA8IDEvMTYsIGFwcHJveGltYXRlIGxvZygxK1gpIGJ5IGFuIG9kZAkJIwojCQlwb2x5bm9taWFsIGluIHUgd2hlcmUgdSA9IDJYLygyK1gpLiBPdGhlcndpc2UsIG1vdmUgb24JIwojCQl0byBTdGVwIDIuCQkJCQkJIwojCQkJCQkJCQkJIwojCVN0ZXAgMjogTGV0IDErWCA9IDIqKmsgKiBZLCB3aGVyZSAxIDw9IFkgPCAyLiBEZWZpbmUgRiBhcyBkb25lCSMKIwkJaW4gU3RlcCAyIG9mIHRoZSBhbGdvcml0aG0gZm9yIExPR04gYW5kIGNvbXB1dGUJCSMKIwkJbG9nKDErWCkgYXMgaypsb2coMikgKyBsb2coRikgKyBwb2x5IHdoZXJlIHBvbHkJCSMKIwkJYXBwcm94aW1hdGVzIGxvZygxK3UpLCB1ID0gKFktRikvRi4JCQkjCiMJCQkJCQkJCQkjCiMJSW1wbGVtZW50YXRpb24gTm90ZXM6CQkJCQkJIwojCU5vdGUgMS4gVGhlcmUgYXJlIDY0IGRpZmZlcmVudCBwb3NzaWJsZSB2YWx1ZXMgZm9yIEYsIHRodXMgNjQJIwojCQlsb2coRikncyBuZWVkIHRvIGJlIHRhYnVsYXRlZC4gTW9yZW92ZXIsIHRoZSB2YWx1ZXMgb2YJIwojCQkxL0YgYXJlIGFsc28gdGFidWxhdGVkIHNvIHRoYXQgdGhlIGRpdmlzaW9uIGluIChZLUYpL0YJIwojCQljYW4gYmUgcGVyZm9ybWVkIGJ5IGEgbXVsdGlwbGljYXRpb24uCQkJIwojCQkJCQkJCQkJIwojCU5vdGUgMi4gSW4gU3RlcCAyIG9mIGxvZ25wMSwgaW4gb3JkZXIgdG8gcHJlc2VydmVkIGFjY3VyYWN5LAkjCiMJCXRoZSB2YWx1ZSBZLUYgaGFzIHRvIGJlIGNhbGN1bGF0ZWQgY2FyZWZ1bGx5IHdoZW4JIwojCQkxLzIgPD0gWCA8IDMvMi4JCQkJCQkjCiMJCQkJCQkJCQkjCiMJTm90ZSAzLiBUbyBmdWxseSBleHBsb2l0IHRoZSBwaXBlbGluZSwgcG9seW5vbWlhbHMgYXJlIHVzdWFsbHkJIwojCQlzZXBhcmF0ZWQgaW50byB0d28gcGFydHMgZXZhbHVhdGVkIGluZGVwZW5kZW50bHkgYmVmb3JlCSMKIwkJYmVpbmcgYWRkZWQgdXAuCQkJCQkJIwojCQkJCQkJCQkJIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkxPR09GMjoKCWxvbmcJCTB4M0ZGRTAwMDAsMHhCMTcyMTdGNywweEQxQ0Y3OUFDLDB4MDAwMDAwMDAKCm9uZToKCWxvbmcJCTB4M0Y4MDAwMDAKemVybzoKCWxvbmcJCTB4MDAwMDAwMDAKaW5mdHk6Cglsb25nCQkweDdGODAwMDAwCm5lZ29uZToKCWxvbmcJCTB4QkY4MDAwMDAKCkxPR0E2OgoJbG9uZwkJMHgzRkMyNDk5QSwweEI1RTQwNDBCCkxPR0E1OgoJbG9uZwkJMHhCRkM1NTVCNSwweDg0OENCN0RCCgpMT0dBNDoKCWxvbmcJCTB4M0ZDOTk5OTksMHg5ODdEODczMApMT0dBMzoKCWxvbmcJCTB4QkZDRkZGRkYsMHhGRjZGN0U5NwoKTE9HQTI6Cglsb25nCQkweDNGRDU1NTU1LDB4NTU1NTU1QTQKTE9HQTE6Cglsb25nCQkweEJGRTAwMDAwLDB4MDAwMDAwMDgKCkxPR0I1OgoJbG9uZwkJMHgzRjE3NTQ5NiwweEFERDdEQUQ2CkxPR0I0OgoJbG9uZwkJMHgzRjNDNzFDMiwweEZFODBDN0UwCgpMT0dCMzoKCWxvbmcJCTB4M0Y2MjQ5MjQsMHg5MjhCQ0NGRgpMT0dCMjoKCWxvbmcJCTB4M0Y4OTk5OTksMHg5OTk5OTVFQwoKTE9HQjE6Cglsb25nCQkweDNGQjU1NTU1LDB4NTU1NTU1NTUKVFdPOgoJbG9uZwkJMHg0MDAwMDAwMCwweDAwMDAwMDAwCgpMVEhPTEQ6Cglsb25nCQkweDNmOTkwMDAwLDB4ODAwMDAwMDAsMHgwMDAwMDAwMCwweDAwMDAwMDAwCgpMT0dUQkw6Cglsb25nCQkweDNGRkUwMDAwLDB4RkUwM0Y4MEYsMHhFMDNGODBGRSwweDAwMDAwMDAwCglsb25nCQkweDNGRjcwMDAwLDB4RkYwMTUzNTgsMHg4MzNDNDdFMiwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4RkEyMzJDRjIsMHg1MjEzOEFDMCwweDAwMDAwMDAwCglsb25nCQkweDNGRjkwMDAwLDB4QkRDOEQ4M0UsMHhBRDg4RDU0OSwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4RjY2MDNEOTgsMHgwRjY2MDNEQSwweDAwMDAwMDAwCglsb25nCQkweDNGRkEwMDAwLDB4OUNGNDNEQ0YsMHhGNUVBRkQ0OCwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4RjJCOUQ2NDgsMHgwRjJCOUQ2NSwweDAwMDAwMDAwCglsb25nCQkweDNGRkEwMDAwLDB4REExNkVCODgsMHhDQjhERjYxNCwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4RUYyRUI3MUYsMHhDNDM0NTIzOCwweDAwMDAwMDAwCglsb25nCQkweDNGRkIwMDAwLDB4OEIyOUI3NzUsMHgxQkQ3MDc0MywweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4RUJCREIyQTUsMHhDMTYxOUM4QywweDAwMDAwMDAwCglsb25nCQkweDNGRkIwMDAwLDB4QThEODM5RjgsMHgzMEMxRkI0OSwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4RTg2NUFDN0IsMHg3NjAzQTE5NywweDAwMDAwMDAwCglsb25nCQkweDNGRkIwMDAwLDB4QzYxQTJFQjEsMHg4Q0Q5MDdBRCwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4RTUyNTk4MkEsMHhGNzBDODgwRSwweDAwMDAwMDAwCglsb25nCQkweDNGRkIwMDAwLDB4RTJGMkE0N0EsMHhERTNBMThBRiwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4RTFGQzc4MEUsMHgxRkM3ODBFMiwweDAwMDAwMDAwCglsb25nCQkweDNGRkIwMDAwLDB4RkY2NDg5OEUsMHhERjU1RDU1MSwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4REVFOTVDNEMsMHhBMDM3QkE1NywweDAwMDAwMDAwCglsb25nCQkweDNGRkMwMDAwLDB4OERCOTU2QTksMHg3QjNEMDE0OCwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4REJFQjYxRUUsMHhEMTlDNTk1OCwweDAwMDAwMDAwCglsb25nCQkweDNGRkMwMDAwLDB4OUI4RkUxMDAsMHhGNDdCQTFERSwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4RDkwMUIyMDMsMHg2NDA2QzgwRSwweDAwMDAwMDAwCglsb25nCQkweDNGRkMwMDAwLDB4QTkzNzJGMUQsMHgwREExQkQxNywweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4RDYyQjgwRDYsMHgyQjgwRDYyQywweDAwMDAwMDAwCglsb25nCQkweDNGRkMwMDAwLDB4QjZCMDdGMzgsMHhDRTkwRTQ2QiwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4RDM2ODBEMzYsMHg4MEQzNjgwRCwweDAwMDAwMDAwCglsb25nCQkweDNGRkMwMDAwLDB4QzNGRDAzMjksMHgwNjQ4ODQ4MSwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4RDBCNjlGQ0IsMHhEMjU4MEQwQiwweDAwMDAwMDAwCglsb25nCQkweDNGRkMwMDAwLDB4RDExREUwRkYsMHgxNUFCMThDQSwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4Q0UxNjhBNzcsMHgyNTA4MENFMSwweDAwMDAwMDAwCglsb25nCQkweDNGRkMwMDAwLDB4REUxNDMzQTEsMHg2QzY2QjE1MCwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4Q0I4NzI3QzAsMHg2NUMzOTNFMCwweDAwMDAwMDAwCglsb25nCQkweDNGRkMwMDAwLDB4RUFFMTBCNUEsMHg3RERDOEFERCwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4QzkwN0RBNEUsMHg4NzExNDZBRCwweDAwMDAwMDAwCglsb25nCQkweDNGRkMwMDAwLDB4Rjc4NTZFNUUsMHhFMkM5QjI5MSwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4QzY5ODBDNjksMHg4MEM2OTgwQywweDAwMDAwMDAwCglsb25nCQkweDNGRkQwMDAwLDB4ODIwMTJDQTUsMHhBNjgyMDZENywweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4QzQzNzJGODUsMHg1RDgyNENBNiwweDAwMDAwMDAwCglsb25nCQkweDNGRkQwMDAwLDB4ODgyQzVGQ0QsMHg3MjU2QThDNSwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4QzFFNEJCRDUsMHg5NUY2RTk0NywweDAwMDAwMDAwCglsb25nCQkweDNGRkQwMDAwLDB4OEU0NEM2MEIsMHg0Q0NGRDdERSwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4QkZBMDJGRTgsMHgwQkZBMDJGRiwweDAwMDAwMDAwCglsb25nCQkweDNGRkQwMDAwLDB4OTQ0QUQwOUUsMHhGNDM1MUFGNiwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4QkQ2OTEwNDcsMHgwNzY2MUFBMywweDAwMDAwMDAwCglsb25nCQkweDNGRkQwMDAwLDB4OUEzRUVDRDQsMHhDM0VBQTZCMiwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4QkIzRUU3MjEsMHhBNTREODgwQywweDAwMDAwMDAwCglsb25nCQkweDNGRkQwMDAwLDB4QTAyMTg0MzQsMHgzNTNGMURFOCwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4QjkyMTQzRkEsMHgzNkY1RTAyRSwweDAwMDAwMDAwCglsb25nCQkweDNGRkQwMDAwLDB4QTVGMkZDQUIsMHhCQkM1MDZEQSwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4QjcwRkJCNUEsMHgxOUJFMzY1OSwweDAwMDAwMDAwCglsb25nCQkweDNGRkQwMDAwLDB4QUJCM0I4QkEsMHgyQUQzNjJBNSwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4QjUwOUU2OEEsMHg5Qjk0ODIxRiwweDAwMDAwMDAwCglsb25nCQkweDNGRkQwMDAwLDB4QjE2NDE3OTUsMHhDRTNDQTk3QiwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4QjMwRjYzNTIsMHg4OTE3QzgwQiwweDAwMDAwMDAwCglsb25nCQkweDNGRkQwMDAwLDB4QjcwNDc1NTEsMHg1RDBGMUM2MSwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4QjExRkQzQjgsMHgwQjExRkQzQywweDAwMDAwMDAwCglsb25nCQkweDNGRkQwMDAwLDB4QkM5NTJBRkUsMHhFQTNEMTNFMSwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4QUYzQUREQzYsMHg4MEFGM0FERSwweDAwMDAwMDAwCglsb25nCQkweDNGRkQwMDAwLDB4QzIxNjhFRDAsMHhGNDU4QkE0QSwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4QUQ2MDJCNTgsMHgwQUQ2MDJCNiwweDAwMDAwMDAwCglsb25nCQkweDNGRkQwMDAwLDB4Qzc4OEY0MzksMHhCMzE2M0JGMSwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4QUI4RjY5RTIsMHg4MzU5Q0QxMSwweDAwMDAwMDAwCglsb25nCQkweDNGRkQwMDAwLDB4Q0NFQ0FDMDgsMHhCRjA0NTY1RCwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4QTlDODRBNDcsMHhBMDdGNTYzOCwweDAwMDAwMDAwCglsb25nCQkweDNGRkQwMDAwLDB4RDI0MjA0ODcsMHgyREQ4NTE2MCwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4QTgwQTgwQTgsMHgwQTgwQTgwQiwweDAwMDAwMDAwCglsb25nCQkweDNGRkQwMDAwLDB4RDc4OTQ5OTIsMHgzQkMzNTg4QSwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4QTY1NUM0MzksMHgyRDdCNzNBOCwweDAwMDAwMDAwCglsb25nCQkweDNGRkQwMDAwLDB4RENDMkM0QjQsMHg5ODg3REFDQywweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4QTRBOUNGMUQsMHg5NjgzMzc1MSwweDAwMDAwMDAwCglsb25nCQkweDNGRkQwMDAwLDB4RTFFRUJEM0UsMHg2RDZBNkI5RSwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4QTMwNjVFM0YsMHhBRTdDRDBFMCwweDAwMDAwMDAwCglsb25nCQkweDNGRkQwMDAwLDB4RTcwRDc4NUMsMHgyRjlGNUJEQywweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4QTE2QjMxMkUsMHhBOEZDMzc3RCwweDAwMDAwMDAwCglsb25nCQkweDNGRkQwMDAwLDB4RUMxRjM5MkMsMHg1MTc5RjI4MywweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4OUZEODA5RkQsMHg4MDlGRDgwQSwweDAwMDAwMDAwCglsb25nCQkweDNGRkQwMDAwLDB4RjEyNDQwRDMsMHhFMzYxMzBFNiwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4OUU0Q0FEMjMsMHhERDVGM0EyMCwweDAwMDAwMDAwCglsb25nCQkweDNGRkQwMDAwLDB4RjYxQ0NFOTIsMHgzNDY2MDBCQiwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4OUNDOEUxNjAsMHhDM0ZCMTlCOSwweDAwMDAwMDAwCglsb25nCQkweDNGRkQwMDAwLDB4RkIwOTFGRDMsMHg4MTQ1NjMwQSwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4OUI0QzZGOUUsMHhGMDNBM0NBQSwweDAwMDAwMDAwCglsb25nCQkweDNGRkQwMDAwLDB4RkZFOTcwNDIsMHhCRkE0QzJBRCwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4OTlENzIyREEsMHhCREU1OEYwNiwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4ODI1RUZDRUQsMHg0OTM2OTMzMCwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4OTg2OEM4MDksMHg4NjhDODA5OCwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4ODRDMzdBN0EsMHhCOUE5MDVDOSwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4OTcwMTJFMDIsMHg1QzA0QjgwOSwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4ODcyMjRDMkUsMHg4RTY0NUZCNywweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4OTVBMDI1NjgsMHgwOTVBMDI1NywweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4ODk3QjhDQUMsMHg5RjdERTI5OCwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4OTQ0NTgwOTQsMHg0NTgwOTQ0NiwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4OEJDRjU1REUsMHhDNENEMDVGRSwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4OTJGMTEzODQsMHgwNDk3ODg5QywweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4OEUxREMwRkIsMHg4OUUxMjVFNSwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4OTFBMkIzQzQsMHhENUU2RjgwOSwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4OTA2NkU2OEMsMHg5NTVCNkM5QiwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4OTA1QTM4NjMsMHgzRTA2QzQzQiwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4OTJBQURFNzQsMHhDN0JFNTlFMCwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4OEYxNzc5RDksMHhGREMzQTIxOSwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4OTRFOUJGRjYsMHgxNTg0NTY0MywweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4OEREQTUyMDIsMHgzNzY5NDgwOSwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4OTcyM0ExQjcsMHgyMDEzNDIwMywweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4OENBMjlDMDQsMHg2NTE0RTAyMywweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4OTk1ODk5QzgsMHg5MEVCODk5MCwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4OEI3MDM0NEEsMHgxMzlCQzc1QSwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4OUI4OEJEQUEsMHgzQTNEQUUyRiwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4OEE0MkY4NzAsMHg1NjY5REI0NiwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4OURCNDIyNEYsMHhGRkUxMTU3QywweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4ODkxQUM3M0EsMHhFOTgxOUI1MCwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4OUZEQURDMjYsMHg4QjdBMTJEQSwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4ODdGNzgwODcsMHhGNzgwODdGOCwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4QTFGQ0ZGMTcsMHhDRTczM0JENCwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4ODZEOTA1NDQsMHg3QTM0QUNDNiwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4QTQxQTlFOEYsMHg1NDQ2RkI5RiwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4ODVCRjM3NjEsMHgyQ0VFM0M5QiwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4QTYzM0NEN0UsMHg2NzcxQ0Q4QiwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4ODRBOUY5QzgsMHgwODRBOUY5RCwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4QTg0ODlFNjAsMHgwQjQzNUE1RSwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4ODM5OTMwNTIsMHgzRkJFMzM2OCwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4QUE1OTIzM0MsMHhDQ0E0QkQ0OSwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4ODI4Q0JGQkUsMHhCOUEwMjBBMywweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4QUM2NTZEQUUsMHg2QkNDNDk4NSwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4ODE4NDhEQTgsMHhGQUYwRDI3NywweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4QUU2RDhFRTMsMHg2MEJCMjQ2OCwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4ODA4MDgwODAsMHg4MDgwODA4MSwweDAwMDAwMDAwCglsb25nCQkweDNGRkUwMDAwLDB4QjA3MTk3QTIsMHgzQzQ2QzY1NCwweDAwMDAwMDAwCgoJc2V0CQlBREpLLExfU0NSMQoKCXNldAkJWCxGUF9TQ1IwCglzZXQJCVhEQ0FSRSxYKzIKCXNldAkJWEZSQUMsWCs0CgoJc2V0CQlGLEZQX1NDUjEKCXNldAkJRkZSQUMsRis0CgoJc2V0CQlLTE9HMixGUF9TQ1IwCgoJc2V0CQlTQVZFVSxGUF9TQ1IwCgoJZ2xvYmFsCQlzbG9nbgojLS1FTlRSWSBQT0lOVCBGT1IgTE9HKFgpIEZPUiBYIEZJTklURSwgTk9OLVpFUk8sIE5PVCBOQU4nUwpzbG9nbjoKCWZtb3YueAkJKCVhMCksJWZwMAkJIyBMT0FEIElOUFVUCgltb3YubAkJJjB4MDAwMDAwMDAsQURKSyglYTYpCgpMT0dCR046CiMtLUZQQ1IgU0FWRUQgQU5EIENMRUFSRUQsIElOUFVUIElTIDJeKEFESkspKkZQMCwgRlAwIENPTlRBSU5TCiMtLUEgRklOSVRFLCBOT04tWkVSTywgTk9STUFMSVpFRCBOVU1CRVIuCgoJbW92LmwJCSglYTApLCVkMQoJbW92LncJCTQoJWEwKSwlZDEKCgltb3YubAkJKCVhMCksWCglYTYpCgltb3YubAkJNCglYTApLFgrNCglYTYpCgltb3YubAkJOCglYTApLFgrOCglYTYpCgoJY21wLmwJCSVkMSwmMAkJCSMgQ0hFQ0sgSUYgWCBJUyBORUdBVElWRQoJYmx0LncJCUxPR05FRwkJCSMgTE9HIE9GIE5FR0FUSVZFIEFSR1VNRU5UIElTIElOVkFMSUQKIyBYIElTIFBPU0lUSVZFLCBDSEVDSyBJRiBYIElTIE5FQVIgMQoJY21wLmwJCSVkMSwmMHgzZmZlZjA3ZAkJIyBJUyBYIDwgMTUvMTY/CglibHQuYgkJTE9HTUFJTgkJCSMgWUVTCgljbXAubAkJJWQxLCYweDNmZmY4ODQxCQkjIElTIFggPiAxNy8xNj8KCWJsZS53CQlMT0dORUFSMQkJIyBOTwoKTE9HTUFJTjoKIy0tVEhJUyBTSE9VTEQgQkUgVEhFIFVTVUFMIENBU0UsIFggTk9UIFZFUlkgQ0xPU0UgVE8gMQoKIy0tWCA9IDJeKEspICogWSwgMSA8PSBZIDwgMi4gVEhVUywgWSA9IDEuWFhYWFhYWFguLi4uWFggSU4gQklOQVJZLgojLS1XRSBERUZJTkUgRiA9IDEuWFhYWFhYMSwgSS5FLiBGSVJTVCA3IEJJVFMgT0YgWSBBTkQgQVRUQUNIIEEgMS4KIy0tVEhFIElERUEgSVMgVEhBVCBMT0coWCkgPSBLKkxPRzIgKyBMT0coWSkKIy0tCQkJID0gSypMT0cyICsgTE9HKEYpICsgTE9HKDEgKyAoWS1GKS9GKS4KIy0tTk9URSBUSEFUIFUgPSAoWS1GKS9GIElTIFZFUlkgU01BTEwgQU5EIFRIVVMgQVBQUk9YSU1BVElORwojLS1MT0coMStVKSBDQU4gQkUgVkVSWSBFRkZJQ0lFTlQuCiMtLUFMU08gTk9URSBUSEFUIFRIRSBWQUxVRSAxL0YgSVMgU1RPUkVEIElOIEEgVEFCTEUgU08gVEhBVCBOTwojLS1ESVZJU0lPTiBJUyBORUVERUQgVE8gQ0FMQ1VMQVRFIChZLUYpL0YuCgojLS1HRVQgSywgWSwgRiwgQU5EIEFERFJFU1MgT0YgMS9GLgoJYXNyLmwJCSY4LCVkMQoJYXNyLmwJCSY4LCVkMQkJCSMgU0hJRlRFRCAxNiBCSVRTLCBCSUFTRUQgRVhQTy4gT0YgWAoJc3ViLmwJCSYweDNGRkYsJWQxCQkjIFRISVMgSVMgSwoJYWRkLmwJCUFESksoJWE2KSwlZDEJCSMgQURKVVNUIEssIE9SSUdJTkFMIElOUFVUIE1BWSBCRSAgREVOT1JNLgoJbGVhCQlMT0dUQkwoJXBjKSwlYTAJCSMgQkFTRSBBRERSRVNTIE9GIDEvRiBBTkQgTE9HKEYpCglmbW92LmwJCSVkMSwlZnAxCQkjIENPTlZFUlQgSyBUTyBGTE9BVElORy1QT0lOVCBGT1JNQVQKCiMtLVdISUxFIFRIRSBDT05WRVJTSU9OIElTIEdPSU5HIE9OLCBXRSBHRVQgRiBBTkQgQUREUkVTUyBPRiAxL0YKCW1vdi5sCQkmMHgzRkZGMDAwMCxYKCVhNikJIyBYIElTIE5PVyBZLCBJLkUuIDJeKC1LKSpYCgltb3YubAkJWEZSQUMoJWE2KSxGRlJBQyglYTYpCglhbmQubAkJJjB4RkUwMDAwMDAsRkZSQUMoJWE2KQkjIEZJUlNUIDcgQklUUyBPRiBZCglvci5sCQkmMHgwMTAwMDAwMCxGRlJBQyglYTYpCSMgR0VUIEY6IEFUVEFDSCBBIDEgQVQgVEhFIEVJR0hUSCBCSVQKCW1vdi5sCQlGRlJBQyglYTYpLCVkMQkjIFJFQURZIFRPIEdFVCBBRERSRVNTIE9GIDEvRgoJYW5kLmwJCSYweDdFMDAwMDAwLCVkMQoJYXNyLmwJCSY4LCVkMQoJYXNyLmwJCSY4LCVkMQoJYXNyLmwJCSY0LCVkMQkJCSMgU0hJRlRFRCAyMCwgRDAgSVMgVEhFIERJU1BMQUNFTUVOVAoJYWRkLmwJCSVkMSwlYTAJCQkjIEEwIElTIFRIRSBBRERSRVNTIEZPUiAxL0YKCglmbW92LngJCVgoJWE2KSwlZnAwCgltb3YubAkJJjB4M2ZmZjAwMDAsRiglYTYpCgljbHIubAkJRis4KCVhNikKCWZzdWIueAkJRiglYTYpLCVmcDAJCSMgWS1GCglmbW92bS54CQkmMHhjLC0oJXNwKQkJIyBTQVZFIEZQMi0zIFdISUxFIEZQMCBJUyBOT1QgUkVBRFkKIy0tU1VNTUFSWTogRlAwIElTIFktRiwgQTAgSVMgQUREUkVTUyBPRiAxL0YsIEZQMSBJUyBLCiMtLVJFR0lTVEVSUyBTQVZFRDogRlBDUiwgRlAxLCBGUDIKCkxQMUNPTlQxOgojLS1BTiBSRS1FTlRSWSBQT0lOVCBGT1IgTE9HTlAxCglmbXVsLngJCSglYTApLCVmcDAJCSMgRlAwIElTIFUgPSAoWS1GKS9GCglmbXVsLngJCUxPR09GMiglcGMpLCVmcDEJIyBHRVQgSypMT0cyIFdISUxFIEZQMCBJUyBOT1QgUkVBRFkKCWZtb3YueAkJJWZwMCwlZnAyCglmbXVsLngJCSVmcDIsJWZwMgkJIyBGUDIgSVMgVj1VKlUKCWZtb3YueAkJJWZwMSxLTE9HMiglYTYpCQkjIFBVVCBLKkxPRzIgSU4gTUVNRU9SWSwgRlJFRSBGUDEKCiMtLUxPRygxK1UpIElTIEFQUFJPWElNQVRFRCBCWQojLS1VICsgViooQTErVSooQTIrVSooQTMrVSooQTQrVSooQTUrVSpBNikpKSkpIFdISUNIIElTCiMtLVtVICsgViooQTErViooQTMrVipBNSkpXSAgKyAgW1UqViooQTIrViooQTQrVipBNikpXQoKCWZtb3YueAkJJWZwMiwlZnAzCglmbW92LngJCSVmcDIsJWZwMQoKCWZtdWwuZAkJTE9HQTYoJXBjKSwlZnAxCQkjIFYqQTYKCWZtdWwuZAkJTE9HQTUoJXBjKSwlZnAyCQkjIFYqQTUKCglmYWRkLmQJCUxPR0E0KCVwYyksJWZwMQkJIyBBNCtWKkE2CglmYWRkLmQJCUxPR0EzKCVwYyksJWZwMgkJIyBBMytWKkE1CgoJZm11bC54CQklZnAzLCVmcDEJCSMgViooQTQrVipBNikKCWZtdWwueAkJJWZwMywlZnAyCQkjIFYqKEEzK1YqQTUpCgoJZmFkZC5kCQlMT0dBMiglcGMpLCVmcDEJCSMgQTIrViooQTQrVipBNikKCWZhZGQuZAkJTE9HQTEoJXBjKSwlZnAyCQkjIEExK1YqKEEzK1YqQTUpCgoJZm11bC54CQklZnAzLCVmcDEJCSMgViooQTIrViooQTQrVipBNikpCglhZGQubAkJJjE2LCVhMAkJCSMgQUREUkVTUyBPRiBMT0coRikKCWZtdWwueAkJJWZwMywlZnAyCQkjIFYqKEExK1YqKEEzK1YqQTUpKQoKCWZtdWwueAkJJWZwMCwlZnAxCQkjIFUqViooQTIrViooQTQrVipBNikpCglmYWRkLngJCSVmcDIsJWZwMAkJIyBVK1YqKEExK1YqKEEzK1YqQTUpKQoKCWZhZGQueAkJKCVhMCksJWZwMQkJIyBMT0coRikrVSpWKihBMitWKihBNCtWKkE2KSkKCWZtb3ZtLngJCSglc3ApKywmMHgzMAkJIyBSRVNUT1JFIEZQMi0zCglmYWRkLngJCSVmcDEsJWZwMAkJIyBGUDAgSVMgTE9HKEYpICsgTE9HKDErVSkKCglmbW92LmwJCSVkMCwlZnBjcgoJZmFkZC54CQlLTE9HMiglYTYpLCVmcDAJCSMgRklOQUwgQURECglicmEJCXRfaW54MgoKCkxPR05FQVIxOgoKIyBpZiB0aGUgaW5wdXQgaXMgZXhhY3RseSBlcXVhbCB0byBvbmUsIHRoZW4gZXhpdCB0aHJvdWdoIGxkX3B6ZXJvLgojIGlmIHRoZXNlIDIgbGluZXMgd2VyZW4ndCBoZXJlLCB0aGUgY29ycmVjdCBhbnN3ZXIgd291bGQgYmUgcmV0dXJuZWQKIyBidXQgdGhlIElORVgyIGJpdCB3b3VsZCBiZSBzZXQuCglmY21wLmIJCSVmcDAsJjB4MQkJIyBpcyBpdCBlcXVhbCB0byBvbmU/CglmYmVxLmwJCWxkX3B6ZXJvCQkjIHllcwoKIy0tUkVHSVNURVJTIFNBVkVEOiBGUENSLCBGUDEuIEZQMCBDT05UQUlOUyBUSEUgSU5QVVQuCglmbW92LngJCSVmcDAsJWZwMQoJZnN1Yi5zCQlvbmUoJXBjKSwlZnAxCQkjIEZQMSBJUyBYLTEKCWZhZGQucwkJb25lKCVwYyksJWZwMAkJIyBGUDAgSVMgWCsxCglmYWRkLngJCSVmcDEsJWZwMQkJIyBGUDEgSVMgMihYLTEpCiMtLUxPRyhYKSA9IExPRygxK1UvMiktTE9HKDEtVS8yKSBXSElDSCBJUyBBTiBPREQgUE9MWU5PTUlBTAojLS1JTiBVLCBVID0gMihYLTEpLyhYKzEpID0gRlAxL0ZQMAoKTFAxQ09OVDI6CiMtLVRISVMgSVMgQU4gUkUtRU5UUlkgUE9JTlQgRk9SIExPR05QMQoJZmRpdi54CQklZnAwLCVmcDEJCSMgRlAxIElTIFUKCWZtb3ZtLngJCSYweGMsLSglc3ApCQkjIFNBVkUgRlAyLTMKIy0tUkVHSVNURVJTIFNBVkVEIEFSRSBOT1cgRlBDUixGUDEsRlAyLEZQMwojLS1MRVQgVj1VKlUsIFc9VipWLCBDQUxDVUxBVEUKIy0tVSArIFUqViooQjEgKyBWKihCMiArIFYqKEIzICsgViooQjQgKyBWKkI1KSkpKSBCWQojLS1VICsgVSpWKiggIFtCMSArIFcqKEIzICsgVypCNSldICArICBbViooQjIgKyBXKkI0KV0gICkKCWZtb3YueAkJJWZwMSwlZnAwCglmbXVsLngJCSVmcDAsJWZwMAkJIyBGUDAgSVMgVgoJZm1vdi54CQklZnAxLFNBVkVVKCVhNikJCSMgU1RPUkUgVSBJTiBNRU1PUlksIEZSRUUgRlAxCglmbW92LngJCSVmcDAsJWZwMQoJZm11bC54CQklZnAxLCVmcDEJCSMgRlAxIElTIFcKCglmbW92LmQJCUxPR0I1KCVwYyksJWZwMwoJZm1vdi5kCQlMT0dCNCglcGMpLCVmcDIKCglmbXVsLngJCSVmcDEsJWZwMwkJIyBXKkI1CglmbXVsLngJCSVmcDEsJWZwMgkJIyBXKkI0CgoJZmFkZC5kCQlMT0dCMyglcGMpLCVmcDMJCSMgQjMrVypCNQoJZmFkZC5kCQlMT0dCMiglcGMpLCVmcDIJCSMgQjIrVypCNAoKCWZtdWwueAkJJWZwMywlZnAxCQkjIFcqKEIzK1cqQjUpLCBGUDMgUkVMRUFTRUQKCglmbXVsLngJCSVmcDAsJWZwMgkJIyBWKihCMitXKkI0KQoKCWZhZGQuZAkJTE9HQjEoJXBjKSwlZnAxCQkjIEIxK1cqKEIzK1cqQjUpCglmbXVsLngJCVNBVkVVKCVhNiksJWZwMAkJIyBGUDAgSVMgVSpWCgoJZmFkZC54CQklZnAyLCVmcDEJCSMgQjErVyooQjMrVypCNSkgKyBWKihCMitXKkI0KSwgRlAyIFJFTEVBU0VECglmbW92bS54CQkoJXNwKSssJjB4MzAJCSMgRlAyLTMgUkVTVE9SRUQKCglmbXVsLngJCSVmcDEsJWZwMAkJIyBVKlYqKCBbQjErVyooQjMrVypCNSldICsgW1YqKEIyK1cqQjQpXSApCgoJZm1vdi5sCQklZDAsJWZwY3IKCWZhZGQueAkJU0FWRVUoJWE2KSwlZnAwCglicmEJCXRfaW54MgoKIy0tUkVHSVNURVJTIFNBVkVEIEZQQ1IuIExPRygtVkUpIElTIElOVkFMSUQKTE9HTkVHOgoJYnJhCQl0X29wZXJyCgoJZ2xvYmFsCQlzbG9nbmQKc2xvZ25kOgojLS1FTlRSWSBQT0lOVCBGT1IgTE9HKFgpIEZPUiBERU5PUk1BTElaRUQgSU5QVVQKCgltb3YubAkJJi0xMDAsQURKSyglYTYpCQkjIElOUFVUID0gMl4oQURKSykgKiBGUDAKCiMtLS0tbm9ybWFsaXplIHRoZSBpbnB1dCB2YWx1ZSBieSBsZWZ0IHNoaWZ0aW5nIGsgYml0cyAoayB0byBiZSBkZXRlcm1pbmVkCiMtLS0tYmVsb3cpLCBhZGp1c3RpbmcgZXhwb25lbnQgYW5kIHN0b3JpbmcgLWsgdG8gIEFESksKIy0tLS10aGUgdmFsdWUgVFdPVE8xMDAgaXMgbm8gbG9uZ2VyIG5lZWRlZC4KIy0tLS1Ob3RlIHRoYXQgdGhpcyBjb2RlIGFzc3VtZXMgdGhlIGRlbm9ybWFsaXplZCBpbnB1dCBpcyBOT04tWkVSTy4KCgltb3ZtLmwJCSYweDNmMDAsLSglc3ApCQkjIHNhdmUgc29tZSByZWdpc3RlcnMgIHtkMi1kN30KCW1vdi5sCQkoJWEwKSwlZDMJCSMgRDMgaXMgZXhwb25lbnQgb2Ygc21hbGxlc3Qgbm9ybS4gIwoJbW92LmwJCTQoJWEwKSwlZDQKCW1vdi5sCQk4KCVhMCksJWQ1CQkjIChENCxENSkgaXMgKEhpX1gsTG9fWCkKCWNsci5sCQklZDIJCQkjIEQyIHVzZWQgZm9yIGhvbGRpbmcgSwoKCXRzdC5sCQklZDQKCWJuZS5iCQlIaV9ub3QwCgpIaV8wOgoJbW92LmwJCSVkNSwlZDQKCWNsci5sCQklZDUKCW1vdi5sCQkmMzIsJWQyCgljbHIubAkJJWQ2CgliZmZmbwkJJWQ0eyYwOiYzMn0sJWQ2Cglsc2wubAkJJWQ2LCVkNAoJYWRkLmwJCSVkNiwlZDIJCQkjIChEMyxENCxENSkgaXMgbm9ybWFsaXplZAoKCW1vdi5sCQklZDMsWCglYTYpCgltb3YubAkJJWQ0LFhGUkFDKCVhNikKCW1vdi5sCQklZDUsWEZSQUMrNCglYTYpCgluZWcubAkJJWQyCgltb3YubAkJJWQyLEFESksoJWE2KQoJZm1vdi54CQlYKCVhNiksJWZwMAoJbW92bS5sCQkoJXNwKSssJjB4ZmMJCSMgcmVzdG9yZSByZWdpc3RlcnMge2QyLWQ3fQoJbGVhCQlYKCVhNiksJWEwCglicmEudwkJTE9HQkdOCQkJIyBiZWdpbiByZWd1bGFyIGxvZyhYKQoKSGlfbm90MDoKCWNsci5sCQklZDYKCWJmZmZvCQklZDR7JjA6JjMyfSwlZDYJCSMgZmluZCBmaXJzdCAxCgltb3YubAkJJWQ2LCVkMgkJCSMgZ2V0IGsKCWxzbC5sCQklZDYsJWQ0Cgltb3YubAkJJWQ1LCVkNwkJCSMgYSBjb3B5IG9mIEQ1Cglsc2wubAkJJWQ2LCVkNQoJbmVnLmwJCSVkNgoJYWRkLmwJCSYzMiwlZDYKCWxzci5sCQklZDYsJWQ3Cglvci5sCQklZDcsJWQ0CQkJIyAoRDMsRDQsRDUpIG5vcm1hbGl6ZWQKCgltb3YubAkJJWQzLFgoJWE2KQoJbW92LmwJCSVkNCxYRlJBQyglYTYpCgltb3YubAkJJWQ1LFhGUkFDKzQoJWE2KQoJbmVnLmwJCSVkMgoJbW92LmwJCSVkMixBREpLKCVhNikKCWZtb3YueAkJWCglYTYpLCVmcDAKCW1vdm0ubAkJKCVzcCkrLCYweGZjCQkjIHJlc3RvcmUgcmVnaXN0ZXJzIHtkMi1kN30KCWxlYQkJWCglYTYpLCVhMAoJYnJhLncJCUxPR0JHTgkJCSMgYmVnaW4gcmVndWxhciBsb2coWCkKCglnbG9iYWwJCXNsb2ducDEKIy0tRU5UUlkgUE9JTlQgRk9SIExPRygxK1gpIEZPUiBYIEZJTklURSwgTk9OLVpFUk8sIE5PVCBOQU4nUwpzbG9nbnAxOgoJZm1vdi54CQkoJWEwKSwlZnAwCQkjIExPQUQgSU5QVVQKCWZhYnMueAkJJWZwMAkJCSMgdGVzdCBtYWduaXR1ZGUKCWZjbXAueAkJJWZwMCxMVEhPTEQoJXBjKQkjIGNvbXBhcmUgd2l0aCBtaW4gdGhyZXNob2xkCglmYmd0LncJCUxQMVJFQUwJCQkjIGlmIGdyZWF0ZXIsIGNvbnRpbnVlCglmbW92LmwJCSVkMCwlZnBjcgoJbW92LmIJCSZGTU9WX09QLCVkMQkJIyBsYXN0IGluc3QgaXMgTU9WRQoJZm1vdi54CQkoJWEwKSwlZnAwCQkjIHJldHVybiBzaWduZWQgYXJndW1lbnQKCWJyYQkJdF9jYXRjaAoKTFAxUkVBTDoKCWZtb3YueAkJKCVhMCksJWZwMAkJIyBMT0FEIElOUFVUCgltb3YubAkJJjB4MDAwMDAwMDAsQURKSyglYTYpCglmbW92LngJCSVmcDAsJWZwMQkJIyBGUDEgSVMgSU5QVVQgWgoJZmFkZC5zCQlvbmUoJXBjKSwlZnAwCQkjIFggOj0gUk9VTkQoMStaKQoJZm1vdi54CQklZnAwLFgoJWE2KQoJbW92LncJCVhGUkFDKCVhNiksWERDQVJFKCVhNikKCW1vdi5sCQlYKCVhNiksJWQxCgljbXAubAkJJWQxLCYwCglibGUudwkJTFAxTkVHMAkJCSMgTE9HIE9GIFpFUk8gT1IgLVZFCgljbXAubAkJJWQxLCYweDNmZmU4MDAwCQkjIElTIEJPVU5EUyBbMS8yLDMvMl0/CglibHQudwkJTE9HTUFJTgoJY21wLmwJCSVkMSwmMHgzZmZmYzAwMAoJYmd0LncJCUxPR01BSU4KIy0tSUYgMStaID4gMy8yIE9SIDErWiA8IDEvMiwgVEhFTiBYLCBXSElDSCBJUyBST1VORElORyAxK1osCiMtLUNPTlRBSU5TIEFUIExFQVNUIDYzIEJJVFMgT0YgSU5GT1JNQVRJT04gT0YgWi4gSU4gVEhBVCBDQVNFLAojLS1TSU1QTFkgSU5WT0tFIExPRyhYKSBGT1IgTE9HKDErWikuCgpMUDFORUFSMToKIy0tTkVYVCBTRUUgSUYgRVhQKC0xLzE2KSA8IFggPCBFWFAoMS8xNikKCWNtcC5sCQklZDEsJjB4M2ZmZWYwN2QKCWJsdC53CQlMUDFDQVJFCgljbXAubAkJJWQxLCYweDNmZmY4ODQxCgliZ3QudwkJTFAxQ0FSRQoKTFAxT05FMTY6CiMtLUVYUCgtMS8xNikgPCBYIDwgRVhQKDEvMTYpLiBMT0coMStaKSA9IExPRygxK1UvMikgLSBMT0coMS1VLzIpCiMtLVdIRVJFIFUgPSAyWi8oMitaKSA9IDJaLygxK1gpLgoJZmFkZC54CQklZnAxLCVmcDEJCSMgRlAxIElTIDJaCglmYWRkLnMJCW9uZSglcGMpLCVmcDAJCSMgRlAwIElTIDErWAojLS1VID0gRlAxL0ZQMAoJYnJhLncJCUxQMUNPTlQyCgpMUDFDQVJFOgojLS1IRVJFIFdFIFVTRSBUSEUgVVNVQUwgVEFCTEUgRFJJVkVOIEFQUFJPQUNILiBDQVJFIEhBUyBUTyBCRQojLS1UQUtFTiBCRUNBVVNFIDErWiBDQU4gSEFWRSA2NyBCSVRTIE9GIElORk9STUFUSU9OIEFORCBXRSBNVVNUCiMtLVBSRVNFUlZFIEFMTCBUSEUgSU5GT1JNQVRJT04uIEJFQ0FVU0UgMStaIElTIElOIFsxLzIsMy8yXSwKIy0tVEhFUkUgQVJFIE9OTFkgVFdPIENBU0VTLgojLS1DQVNFIDE6IDErWiA8IDEsIFRIRU4gSyA9IC0xIEFORCBZLUYgPSAoMi1GKSArIDJaCiMtLUNBU0UgMjogMStaID4gMSwgVEhFTiBLID0gMCAgQU5EIFktRiA9ICgxLUYpICsgWgojLS1PTiBSRVRVUk5JTkcgVE8gTFAxQ09OVDEsIFdFIE1VU1QgSEFWRSBLIElOIEZQMSwgQUREUkVTUyBPRgojLS0oMS9GKSBJTiBBMCwgWS1GIElOIEZQMCwgQU5EIEZQMiBTQVZFRC4KCgltb3YubAkJWEZSQUMoJWE2KSxGRlJBQyglYTYpCglhbmQubAkJJjB4RkUwMDAwMDAsRkZSQUMoJWE2KQoJb3IubAkJJjB4MDEwMDAwMDAsRkZSQUMoJWE2KQkjIEYgT0JUQUlORUQKCWNtcC5sCQklZDEsJjB4M0ZGRjgwMDAJCSMgU0VFIElGIDErWiA+IDEKCWJnZS5iCQlLSVNaRVJPCgpLSVNORUcxOgoJZm1vdi5zCQlUV08oJXBjKSwlZnAwCgltb3YubAkJJjB4M2ZmZjAwMDAsRiglYTYpCgljbHIubAkJRis4KCVhNikKCWZzdWIueAkJRiglYTYpLCVmcDAJCSMgMi1GCgltb3YubAkJRkZSQUMoJWE2KSwlZDEKCWFuZC5sCQkmMHg3RTAwMDAwMCwlZDEKCWFzci5sCQkmOCwlZDEKCWFzci5sCQkmOCwlZDEKCWFzci5sCQkmNCwlZDEJCQkjIEQwIENPTlRBSU5TIERJU1BMQUNFTUVOVCBGT1IgMS9GCglmYWRkLngJCSVmcDEsJWZwMQkJIyBHRVQgMloKCWZtb3ZtLngJCSYweGMsLSglc3ApCQkjIFNBVkUgRlAyICB7JWZwMi8lZnAzfQoJZmFkZC54CQklZnAxLCVmcDAJCSMgRlAwIElTIFktRiA9ICgyLUYpKzJaCglsZWEJCUxPR1RCTCglcGMpLCVhMAkJIyBBMCBJUyBBRERSRVNTIE9GIDEvRgoJYWRkLmwJCSVkMSwlYTAKCWZtb3YucwkJbmVnb25lKCVwYyksJWZwMQkjIEZQMSBJUyBLID0gLTEKCWJyYS53CQlMUDFDT05UMQoKS0lTWkVSTzoKCWZtb3YucwkJb25lKCVwYyksJWZwMAoJbW92LmwJCSYweDNmZmYwMDAwLEYoJWE2KQoJY2xyLmwJCUYrOCglYTYpCglmc3ViLngJCUYoJWE2KSwlZnAwCQkjIDEtRgoJbW92LmwJCUZGUkFDKCVhNiksJWQxCglhbmQubAkJJjB4N0UwMDAwMDAsJWQxCglhc3IubAkJJjgsJWQxCglhc3IubAkJJjgsJWQxCglhc3IubAkJJjQsJWQxCglmYWRkLngJCSVmcDEsJWZwMAkJIyBGUDAgSVMgWS1GCglmbW92bS54CQkmMHhjLC0oJXNwKQkJIyBGUDIgU0FWRUQgeyVmcDIvJWZwM30KCWxlYQkJTE9HVEJMKCVwYyksJWEwCglhZGQubAkJJWQxLCVhMAkJCSMgQTAgSVMgQUREUkVTUyBPRiAxL0YKCWZtb3YucwkJemVybyglcGMpLCVmcDEJCSMgRlAxIElTIEsgPSAwCglicmEudwkJTFAxQ09OVDEKCkxQMU5FRzA6CiMtLUZQQ1IgU0FWRUQuIEQwIElTIFggSU4gQ09NUEFDVCBGT1JNLgoJY21wLmwJCSVkMSwmMAoJYmx0LmIJCUxQMU5FRwpMUDFaRVJPOgoJZm1vdi5zCQluZWdvbmUoJXBjKSwlZnAwCgoJZm1vdi5sCQklZDAsJWZwY3IKCWJyYQkJdF9kegoKTFAxTkVHOgoJZm1vdi5zCQl6ZXJvKCVwYyksJWZwMAoKCWZtb3YubAkJJWQwLCVmcGNyCglicmEJCXRfb3BlcnIKCglnbG9iYWwJCXNsb2ducDFkCiMtLUVOVFJZIFBPSU5UIEZPUiBMT0coMStaKSBGT1IgREVOT1JNQUxJWkVEIElOUFVUCiMgU2ltcGx5IHJldHVybiB0aGUgZGVub3JtCnNsb2ducDFkOgoJYnJhCQl0X2V4dGRucm0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBzYXRhbmgoKTogIGNvbXB1dGVzIHRoZSBpbnZlcnNlIGh5cGVyYm9saWMgdGFuZ2VudCBvZiBhIG5vcm0gaW5wdXQJIwojIHNhdGFuaGQoKTogY29tcHV0ZXMgdGhlIGludmVyc2UgaHlwZXJib2xpYyB0YW5nZW50IG9mIGEgZGVub3JtIGlucHV0CSMKIwkJCQkJCQkJCSMKIyBJTlBVVCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioJIwojCWEwID0gcG9pbnRlciB0byBleHRlbmRlZCBwcmVjaXNpb24gaW5wdXQJCQkjCiMJZDAgPSByb3VuZCBwcmVjaXNpb24sbW9kZQkJCQkJIwojCQkJCQkJCQkJIwojIE9VVFBVVCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgkjCiMJZnAwID0gYXJjdGFuaChYKQkJCQkJCSMKIwkJCQkJCQkJCSMKIyBBQ0NVUkFDWSBhbmQgTU9OT1RPTklDSVRZICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioJIwojCVRoZSByZXR1cm5lZCByZXN1bHQgaXMgd2l0aGluIDMgdWxwcyBpbgk2NCBzaWduaWZpY2FudCBiaXQsCSMKIwlpLmUuIHdpdGhpbiAwLjUwMDEgdWxwIHRvIDUzIGJpdHMgaWYgdGhlIHJlc3VsdCBpcyBzdWJzZXF1ZW50bHkJIwojCXJvdW5kZWQgdG8gZG91YmxlIHByZWNpc2lvbi4gVGhlIHJlc3VsdCBpcyBwcm92YWJseSBtb25vdG9uaWMJIwojCWluIGRvdWJsZSBwcmVjaXNpb24uCQkJCQkJIwojCQkJCQkJCQkJIwojIEFMR09SSVRITSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgkjCiMJCQkJCQkJCQkjCiMJQVRBTkgJCQkJCQkJCSMKIwkxLiBJZiB8WHwgPj0gMSwgZ28gdG8gMy4JCQkJCSMKIwkJCQkJCQkJCSMKIwkyLiAofFh8IDwgMSkgQ2FsY3VsYXRlIGF0YW5oKFgpIGJ5CQkJCSMKIwkJc2duIDo9IHNpZ24oWCkJCQkJCQkjCiMJCXkgOj0gfFh8CQkJCQkJIwojCQl6IDo9IDJ5LygxLXkpCQkJCQkJIwojCQlhdGFuaChYKSA6PSBzZ24gKiAoMS8yKSAqIGxvZ3AxKHopCQkJIwojCQlFeGl0LgkJCQkJCQkjCiMJCQkJCQkJCQkjCiMJMy4gSWYgfFh8ID4gMSwgZ28gdG8gNS4JCQkJCQkjCiMJCQkJCQkJCQkjCiMJNC4gKHxYfCA9IDEpIEdlbmVyYXRlIGluZmluaXR5IHdpdGggYW4gYXBwcm9wcmlhdGUgc2lnbiBhbmQJIwojCQlkaXZpZGUtYnktemVybyBieQkJCQkJIwojCQlzZ24gOj0gc2lnbihYKQkJCQkJCSMKIwkJYXRhbihYKSA6PSBzZ24gLyAoKzApLgkJCQkJIwojCQlFeGl0LgkJCQkJCQkjCiMJCQkJCQkJCQkjCiMJNS4gKHxYfCA+IDEpIEdlbmVyYXRlIGFuIGludmFsaWQgb3BlcmF0aW9uIGJ5IDAgKiBpbmZpbml0eS4JIwojCQlFeGl0LgkJCQkJCQkjCiMJCQkJCQkJCQkjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCglnbG9iYWwJCXNhdGFuaApzYXRhbmg6Cgltb3YubAkJKCVhMCksJWQxCgltb3YudwkJNCglYTApLCVkMQoJYW5kLmwJCSYweDdGRkZGRkZGLCVkMQoJY21wLmwJCSVkMSwmMHgzRkZGODAwMAoJYmdlLmIJCUFUQU5IQklHCgojLS1USElTIElTIFRIRSBVU1VBTCBDQVNFLCB8WHwgPCAxCiMtLVkgPSB8WHwsIFogPSAyWS8oMS1ZKSwgQVRBTkgoWCkgPSBTSUdOKFgpICogKDEvMikgKiBMT0cxUChaKS4KCglmYWJzLngJCSglYTApLCVmcDAJCSMgWSA9IHxYfAoJZm1vdi54CQklZnAwLCVmcDEKCWZuZWcueAkJJWZwMQkJCSMgLVkKCWZhZGQueAkJJWZwMCwlZnAwCQkjIDJZCglmYWRkLnMJCSYweDNGODAwMDAwLCVmcDEJIyAxLVkKCWZkaXYueAkJJWZwMSwlZnAwCQkjIDJZLygxLVkpCgltb3YubAkJKCVhMCksJWQxCglhbmQubAkJJjB4ODAwMDAwMDAsJWQxCglvci5sCQkmMHgzRjAwMDAwMCwlZDEJCSMgU0lHTihYKSpIQUxGCgltb3YubAkJJWQxLC0oJXNwKQoKCW1vdi5sCQklZDAsLSglc3ApCQkjIHNhdmUgcm5kIHByZWMsbW9kZQoJY2xyLmwJCSVkMAkJCSMgcGFzcyBleHQgcHJlYyxSTgoJZm1vdm0ueAkJJjB4MDEsLSglc3ApCQkjIHNhdmUgWiBvbiBzdGFjawoJbGVhCQkoJXNwKSwlYTAJCSMgcGFzcyBwdHIgdG8gWgoJYnNyCQlzbG9nbnAxCQkJIyBMT0cxUChaKQoJYWRkLmwJCSYweGMsJXNwCQkjIGNsZWFyIFogZnJvbSBzdGFjawoKCW1vdi5sCQkoJXNwKSssJWQwCQkjIGZldGNoIG9sZCBwcmVjLG1vZGUKCWZtb3YubAkJJWQwLCVmcGNyCQkjIGxvYWQgaXQKCW1vdi5iCQkmRk1VTF9PUCwlZDEJCSMgbGFzdCBpbnN0IGlzIE1VTAoJZm11bC5zCQkoJXNwKSssJWZwMAoJYnJhCQl0X2NhdGNoCgpBVEFOSEJJRzoKCWZhYnMueAkJKCVhMCksJWZwMAkJIyB8WHwKCWZjbXAucwkJJWZwMCwmMHgzRjgwMDAwMAoJZmJndAkJdF9vcGVycgoJYnJhCQl0X2R6CgoJZ2xvYmFsCQlzYXRhbmhkCiMtLUFUQU5IKFgpID0gWCBGT1IgREVOT1JNQUxJWkVEIFgKc2F0YW5oZDoKCWJyYQkJdF9leHRkbnJtCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgc2xvZzEwKCk6ICBjb21wdXRlcyB0aGUgYmFzZS0xMCBsb2dhcml0aG0gb2YgYSBub3JtYWxpemVkIGlucHV0CSMKIyBzbG9nMTBkKCk6IGNvbXB1dGVzIHRoZSBiYXNlLTEwIGxvZ2FyaXRobSBvZiBhIGRlbm9ybWFsaXplZCBpbnB1dAkjCiMgc2xvZzIoKTogICBjb21wdXRlcyB0aGUgYmFzZS0yIGxvZ2FyaXRobSBvZiBhIG5vcm1hbGl6ZWQgaW5wdXQJIwojIHNsb2cyZCgpOiAgY29tcHV0ZXMgdGhlIGJhc2UtMiBsb2dhcml0aG0gb2YgYSBkZW5vcm1hbGl6ZWQgaW5wdXQJIwojCQkJCQkJCQkJIwojIElOUFVUICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAjCiMJYTAgPSBwb2ludGVyIHRvIGV4dGVuZGVkIHByZWNpc2lvbiBpbnB1dAkJCSMKIwlkMCA9IHJvdW5kIHByZWNpc2lvbixtb2RlCQkJCQkjCiMJCQkJCQkJCQkjCiMgT1VUUFVUICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCSMKIwlmcDAgPSBsb2dfMTAoWCkgb3IgbG9nXzIoWCkJCQkJCSMKIwkJCQkJCQkJCSMKIyBBQ0NVUkFDWSBhbmQgTU9OT1RPTklDSVRZICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioJIwojCVRoZSByZXR1cm5lZCByZXN1bHQgaXMgd2l0aGluIDEuNyB1bHBzIGluIDY0IHNpZ25pZmljYW50IGJpdCwJIwojCWkuZS4gd2l0aGluIDAuNTAwMyB1bHAgdG8gNTMgYml0cyBpZiB0aGUgcmVzdWx0IGlzIHN1YnNlcXVlbnRseQkjCiMJcm91bmRlZCB0byBkb3VibGUgcHJlY2lzaW9uLiBUaGUgcmVzdWx0IGlzIHByb3ZhYmx5IG1vbm90b25pYwkjCiMJaW4gZG91YmxlIHByZWNpc2lvbi4JCQkJCQkjCiMJCQkJCQkJCQkjCiMgQUxHT1JJVEhNICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCSMKIwkJCQkJCQkJCSMKIyAgICAgICBzbG9nMTBkOgkJCQkJCQkjCiMJCQkJCQkJCQkjCiMgICAgICAgU3RlcCAwLglJZiBYIDwgMCwgY3JlYXRlIGEgTmFOIGFuZCByYWlzZSB0aGUgaW52YWxpZCBvcGVyYXRpb24JIwojICAgICAgICAgICAgICAgZmxhZy4gT3RoZXJ3aXNlLCBzYXZlIEZQQ1IgaW4gRDE7IHNldCBGcENSIHRvIGRlZmF1bHQuCSMKIyAgICAgICBOb3RlczogIERlZmF1bHQgbWVhbnMgcm91bmQtdG8tbmVhcmVzdCBtb2RlLCBubyBmbG9hdGluZy1wb2ludAkjCiMgICAgICAgICAgICAgICB0cmFwcywgYW5kIHByZWNpc2lvbiBjb250cm9sID0gZG91YmxlIGV4dGVuZGVkLgkJIwojCQkJCQkJCQkJIwojICAgICAgIFN0ZXAgMS4gQ2FsbCBzbG9nbmQgdG8gb2J0YWluIFkgPSBsb2coWCksIHRoZSBuYXR1cmFsIGxvZyBvZiBYLgkjCiMgICAgICAgTm90ZXM6ICBFdmVuIGlmIFggaXMgZGVub3JtYWxpemVkLCBsb2coWCkgaXMgYWx3YXlzIG5vcm1hbGl6ZWQuCSMKIwkJCQkJCQkJCSMKIyAgICAgICBTdGVwIDIuICBDb21wdXRlIGxvZ18xMChYKSA9IGxvZyhYKSAqICgxL2xvZygxMCkpLgkJIwojICAgICAgICAgICAgMi4xIFJlc3RvcmUgdGhlIHVzZXIgRlBDUgkJCQkJIwojICAgICAgICAgICAgMi4yIFJldHVybiBhbnMgOj0gWSAqIElOVl9MMTAuCQkJCSMKIwkJCQkJCQkJCSMKIyAgICAgICBzbG9nMTA6CQkJCQkJCQkjCiMJCQkJCQkJCQkjCiMgICAgICAgU3RlcCAwLiBJZiBYIDwgMCwgY3JlYXRlIGEgTmFOIGFuZCByYWlzZSB0aGUgaW52YWxpZCBvcGVyYXRpb24JIwojICAgICAgICAgICAgICAgZmxhZy4gT3RoZXJ3aXNlLCBzYXZlIEZQQ1IgaW4gRDE7IHNldCBGcENSIHRvIGRlZmF1bHQuCSMKIyAgICAgICBOb3RlczogIERlZmF1bHQgbWVhbnMgcm91bmQtdG8tbmVhcmVzdCBtb2RlLCBubyBmbG9hdGluZy1wb2ludAkjCiMgICAgICAgICAgICAgICB0cmFwcywgYW5kIHByZWNpc2lvbiBjb250cm9sID0gZG91YmxlIGV4dGVuZGVkLgkJIwojCQkJCQkJCQkJIwojICAgICAgIFN0ZXAgMS4gQ2FsbCBzTG9nTiB0byBvYnRhaW4gWSA9IGxvZyhYKSwgdGhlIG5hdHVyYWwgbG9nIG9mIFguCSMKIwkJCQkJCQkJCSMKIyAgICAgICBTdGVwIDIuICAgQ29tcHV0ZSBsb2dfMTAoWCkgPSBsb2coWCkgKiAoMS9sb2coMTApKS4JCSMKIyAgICAgICAgICAgIDIuMSAgUmVzdG9yZSB0aGUgdXNlciBGUENSCQkJCQkjCiMgICAgICAgICAgICAyLjIgIFJldHVybiBhbnMgOj0gWSAqIElOVl9MMTAuCQkJCSMKIwkJCQkJCQkJCSMKIyAgICAgICBzTG9nMmQ6CQkJCQkJCQkjCiMJCQkJCQkJCQkjCiMgICAgICAgU3RlcCAwLiBJZiBYIDwgMCwgY3JlYXRlIGEgTmFOIGFuZCByYWlzZSB0aGUgaW52YWxpZCBvcGVyYXRpb24JIwojICAgICAgICAgICAgICAgZmxhZy4gT3RoZXJ3aXNlLCBzYXZlIEZQQ1IgaW4gRDE7IHNldCBGcENSIHRvIGRlZmF1bHQuCSMKIyAgICAgICBOb3RlczogIERlZmF1bHQgbWVhbnMgcm91bmQtdG8tbmVhcmVzdCBtb2RlLCBubyBmbG9hdGluZy1wb2ludAkjCiMgICAgICAgICAgICAgICB0cmFwcywgYW5kIHByZWNpc2lvbiBjb250cm9sID0gZG91YmxlIGV4dGVuZGVkLgkJIwojCQkJCQkJCQkJIwojICAgICAgIFN0ZXAgMS4gQ2FsbCBzbG9nbmQgdG8gb2J0YWluIFkgPSBsb2coWCksIHRoZSBuYXR1cmFsIGxvZyBvZiBYLgkjCiMgICAgICAgTm90ZXM6ICBFdmVuIGlmIFggaXMgZGVub3JtYWxpemVkLCBsb2coWCkgaXMgYWx3YXlzIG5vcm1hbGl6ZWQuCSMKIwkJCQkJCQkJCSMKIyAgICAgICBTdGVwIDIuICAgQ29tcHV0ZSBsb2dfMTAoWCkgPSBsb2coWCkgKiAoMS9sb2coMikpLgkJIwojICAgICAgICAgICAgMi4xICBSZXN0b3JlIHRoZSB1c2VyIEZQQ1IJCQkJCSMKIyAgICAgICAgICAgIDIuMiAgUmV0dXJuIGFucyA6PSBZICogSU5WX0wyLgkJCQkjCiMJCQkJCQkJCQkjCiMgICAgICAgc0xvZzI6CQkJCQkJCQkjCiMJCQkJCQkJCQkjCiMgICAgICAgU3RlcCAwLiBJZiBYIDwgMCwgY3JlYXRlIGEgTmFOIGFuZCByYWlzZSB0aGUgaW52YWxpZCBvcGVyYXRpb24JIwojICAgICAgICAgICAgICAgZmxhZy4gT3RoZXJ3aXNlLCBzYXZlIEZQQ1IgaW4gRDE7IHNldCBGcENSIHRvIGRlZmF1bHQuCSMKIyAgICAgICBOb3RlczogIERlZmF1bHQgbWVhbnMgcm91bmQtdG8tbmVhcmVzdCBtb2RlLCBubyBmbG9hdGluZy1wb2ludAkjCiMgICAgICAgICAgICAgICB0cmFwcywgYW5kIHByZWNpc2lvbiBjb250cm9sID0gZG91YmxlIGV4dGVuZGVkLgkJIwojCQkJCQkJCQkJIwojICAgICAgIFN0ZXAgMS4gSWYgWCBpcyBub3QgYW4gaW50ZWdlciBwb3dlciBvZiB0d28sIGkuZS4sIFggIT0gMl5rLAkjCiMgICAgICAgICAgICAgICBnbyB0byBTdGVwIDMuCQkJCQkJIwojCQkJCQkJCQkJIwojICAgICAgIFN0ZXAgMi4gICBSZXR1cm4gay4JCQkJCQkjCiMgICAgICAgICAgICAyLjEgIEdldCBpbnRlZ2VyIGssIFggPSAyXmsuCQkJCSMKIyAgICAgICAgICAgIDIuMiAgUmVzdG9yZSB0aGUgdXNlciBGUENSLgkJCQkjCiMgICAgICAgICAgICAyLjMgIFJldHVybiBhbnMgOj0gY29udmVydC10by1kb3VibGUtZXh0ZW5kZWQoaykuCQkjCiMJCQkJCQkJCQkjCiMgICAgICAgU3RlcCAzLiBDYWxsIHNMb2dOIHRvIG9idGFpbiBZID0gbG9nKFgpLCB0aGUgbmF0dXJhbCBsb2cgb2YgWC4JIwojCQkJCQkJCQkJIwojICAgICAgIFN0ZXAgNC4gICBDb21wdXRlIGxvZ18yKFgpID0gbG9nKFgpICogKDEvbG9nKDIpKS4JCSMKIyAgICAgICAgICAgIDQuMSAgUmVzdG9yZSB0aGUgdXNlciBGUENSCQkJCQkjCiMgICAgICAgICAgICA0LjIgIFJldHVybiBhbnMgOj0gWSAqIElOVl9MMi4JCQkJIwojCQkJCQkJCQkJIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpJTlZfTDEwOgoJbG9uZwkJMHgzRkZEMDAwMCwweERFNUJEOEE5LDB4MzcyODcxOTUsMHgwMDAwMDAwMAoKSU5WX0wyOgoJbG9uZwkJMHgzRkZGMDAwMCwweEI4QUEzQjI5LDB4NUMxN0YwQkMsMHgwMDAwMDAwMAoKCWdsb2JhbAkJc2xvZzEwCiMtLWVudHJ5IHBvaW50IGZvciBMb2cxMChYKSwgWCBpcyBub3JtYWxpemVkCnNsb2cxMDoKCWZtb3YuYgkJJjB4MSwlZnAwCglmY21wLngJCSVmcDAsKCVhMCkJCSMgaWYgb3BlcmFuZCA9PSAxLAoJZmJlcS5sCQlsZF9wemVybwkJIyByZXR1cm4gYW4gRVhBQ1QgemVybwoKCW1vdi5sCQkoJWEwKSwlZDEKCWJsdC53CQlpbnZhbGlkCgltb3YubAkJJWQwLC0oJXNwKQoJY2xyLmwJCSVkMAoJYnNyCQlzbG9nbgkJCSMgbG9nKFgpLCBYIG5vcm1hbC4KCWZtb3YubAkJKCVzcCkrLCVmcGNyCglmbXVsLngJCUlOVl9MMTAoJXBjKSwlZnAwCglicmEJCXRfaW54MgoKCWdsb2JhbAkJc2xvZzEwZAojLS1lbnRyeSBwb2ludCBmb3IgTG9nMTAoWCksIFggaXMgZGVub3JtYWxpemVkCnNsb2cxMGQ6Cgltb3YubAkJKCVhMCksJWQxCglibHQudwkJaW52YWxpZAoJbW92LmwJCSVkMCwtKCVzcCkKCWNsci5sCQklZDAKCWJzcgkJc2xvZ25kCQkJIyBsb2coWCksIFggZGVub3JtLgoJZm1vdi5sCQkoJXNwKSssJWZwY3IKCWZtdWwueAkJSU5WX0wxMCglcGMpLCVmcDAKCWJyYQkJdF9taW54MgoKCWdsb2JhbAkJc2xvZzIKIy0tZW50cnkgcG9pbnQgZm9yIExvZzIoWCksIFggaXMgbm9ybWFsaXplZApzbG9nMjoKCW1vdi5sCQkoJWEwKSwlZDEKCWJsdC53CQlpbnZhbGlkCgoJbW92LmwJCTgoJWEwKSwlZDEKCWJuZS5iCQljb250aW51ZQkJIyBYIGlzIG5vdCAyXmsKCgltb3YubAkJNCglYTApLCVkMQoJYW5kLmwJCSYweDdGRkZGRkZGLCVkMQoJYm5lLmIJCWNvbnRpbnVlCgojLS1YID0gMl5rLgoJbW92LncJCSglYTApLCVkMQoJYW5kLmwJCSYweDAwMDA3RkZGLCVkMQoJc3ViLmwJCSYweDNGRkYsJWQxCgliZXEubAkJbGRfcHplcm8KCWZtb3YubAkJJWQwLCVmcGNyCglmbW92LmwJCSVkMSwlZnAwCglicmEJCXRfaW54MgoKY29udGludWU6Cgltb3YubAkJJWQwLC0oJXNwKQoJY2xyLmwJCSVkMAoJYnNyCQlzbG9nbgkJCSMgbG9nKFgpLCBYIG5vcm1hbC4KCWZtb3YubAkJKCVzcCkrLCVmcGNyCglmbXVsLngJCUlOVl9MMiglcGMpLCVmcDAKCWJyYQkJdF9pbngyCgppbnZhbGlkOgoJYnJhCQl0X29wZXJyCgoJZ2xvYmFsCQlzbG9nMmQKIy0tZW50cnkgcG9pbnQgZm9yIExvZzIoWCksIFggaXMgZGVub3JtYWxpemVkCnNsb2cyZDoKCW1vdi5sCQkoJWEwKSwlZDEKCWJsdC53CQlpbnZhbGlkCgltb3YubAkJJWQwLC0oJXNwKQoJY2xyLmwJCSVkMAoJYnNyCQlzbG9nbmQJCQkjIGxvZyhYKSwgWCBkZW5vcm0uCglmbW92LmwJCSglc3ApKywlZnBjcgoJZm11bC54CQlJTlZfTDIoJXBjKSwlZnAwCglicmEJCXRfbWlueDIKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBzdHdvdG94KCk6ICBjb21wdXRlcyAyKipYIGZvciBhIG5vcm1hbGl6ZWQgaW5wdXQJCQkjCiMgc3R3b3RveGQoKTogY29tcHV0ZXMgMioqWCBmb3IgYSBkZW5vcm1hbGl6ZWQgaW5wdXQJCQkjCiMgc3RlbnRveCgpOiAgY29tcHV0ZXMgMTAqKlggZm9yIGEgbm9ybWFsaXplZCBpbnB1dAkJCSMKIyBzdGVudG94ZCgpOiBjb21wdXRlcyAxMCoqWCBmb3IgYSBkZW5vcm1hbGl6ZWQgaW5wdXQJCQkjCiMJCQkJCQkJCQkjCiMgSU5QVVQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCSMKIwlhMCA9IHBvaW50ZXIgdG8gZXh0ZW5kZWQgcHJlY2lzaW9uIGlucHV0CQkJIwojCWQwID0gcm91bmQgcHJlY2lzaW9uLG1vZGUJCQkJCSMKIwkJCQkJCQkJCSMKIyBPVVRQVVQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioJIwojCWZwMCA9IDIqKlggb3IgMTAqKlgJCQkJCQkjCiMJCQkJCQkJCQkjCiMgQUNDVVJBQ1kgYW5kIE1PTk9UT05JQ0lUWSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCSMKIwlUaGUgcmV0dXJuZWQgcmVzdWx0IGlzIHdpdGhpbiAyIHVscHMgaW4gNjQgc2lnbmlmaWNhbnQgYml0LAkjCiMJaS5lLiB3aXRoaW4gMC41MDAxIHVscCB0byA1MyBiaXRzIGlmIHRoZSByZXN1bHQgaXMgc3Vic2VxdWVudGx5CSMKIwlyb3VuZGVkIHRvIGRvdWJsZSBwcmVjaXNpb24uIFRoZSByZXN1bHQgaXMgcHJvdmFibHkgbW9ub3RvbmljCSMKIwlpbiBkb3VibGUgcHJlY2lzaW9uLgkJCQkJCSMKIwkJCQkJCQkJCSMKIyBBTEdPUklUSE0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioJIwojCQkJCQkJCQkJIwojCXR3b3RveAkJCQkJCQkJIwojCTEuIElmIHxYfCA+IDE2NDgwLCBnbyB0byBFeHBCaWcuCQkJCSMKIwkJCQkJCQkJCSMKIwkyLiBJZiB8WHwgPCAyKiooLTcwKSwgZ28gdG8gRXhwU20uCQkJCSMKIwkJCQkJCQkJCSMKIwkzLiBEZWNvbXBvc2UgWCBhcyBYID0gTi82NCArIHIgd2hlcmUgfHJ8IDw9IDEvMTI4LiBGdXJ0aGVybW9yZQkjCiMJCWRlY29tcG9zZSBOIGFzCQkJCQkJIwojCQkgTiA9IDY0KE0gKyBNJykgKyBqLCAgaiA9IDAsMSwyLC4uLiw2My4JCQkjCiMJCQkJCQkJCQkjCiMJNC4gT3ZlcndyaXRlIHIgOj0gciAqIGxvZzIuIFRoZW4JCQkJIwojCQkyKipYID0gMioqKE0nKSAqIDIqKihNKSAqIDIqKihqLzY0KSAqIGV4cChyKS4JCSMKIwkJR28gdG8gZXhwciB0byBjb21wdXRlIHRoYXQgZXhwcmVzc2lvbi4JCQkjCiMJCQkJCQkJCQkjCiMJdGVudG94CQkJCQkJCQkjCiMJMS4gSWYgfFh8ID4gMTY0ODAqbG9nXzEwKDIpIChiYXNlIDEwIGxvZyBvZiAyKSwgZ28gdG8gRXhwQmlnLgkjCiMJCQkJCQkJCQkjCiMJMi4gSWYgfFh8IDwgMioqKC03MCksIGdvIHRvIEV4cFNtLgkJCQkjCiMJCQkJCQkJCQkjCiMJMy4gU2V0IHkgOj0gWCpsb2dfMigxMCkqNjQgKGJhc2UgMiBsb2cgb2YgMTApLiBTZXQJCSMKIwkJTiA6PSByb3VuZC10by1pbnQoeSkuIERlY29tcG9zZSBOIGFzCQkJIwojCQkgTiA9IDY0KE0gKyBNJykgKyBqLCAgaiA9IDAsMSwyLC4uLiw2My4JCQkjCiMJCQkJCQkJCQkjCiMJNC4gRGVmaW5lIHIgYXMJCQkJCQkJIwojCQlyIDo9ICgoWCAtIE4qTDEpLU4qTDIpICogTDEwCQkJCSMKIwkJd2hlcmUgTDEsIEwyIGFyZSB0aGUgbGVhZGluZyBhbmQgdHJhaWxpbmcgcGFydHMgb2YJIwojCQlsb2dfMTAoMikvNjQgYW5kIEwxMCBpcyB0aGUgbmF0dXJhbCBsb2cgb2YgMTAuIFRoZW4JIwojCQkxMCoqWCA9IDIqKihNJykgKiAyKiooTSkgKiAyKiooai82NCkgKiBleHAocikuCQkjCiMJCUdvIHRvIGV4cHIgdG8gY29tcHV0ZSB0aGF0IGV4cHJlc3Npb24uCQkJIwojCQkJCQkJCQkJIwojCWV4cHIJCQkJCQkJCSMKIwkxLiBGZXRjaCAyKiooai82NCkgZnJvbSB0YWJsZSBhcyBGYWN0MSBhbmQgRmFjdDIuCQkjCiMJCQkJCQkJCQkjCiMJMi4gT3ZlcndyaXRlIEZhY3QxIGFuZCBGYWN0MiBieQkJCQkJIwojCQlGYWN0MSA6PSAyKiooTSkgKiBGYWN0MQkJCQkJIwojCQlGYWN0MiA6PSAyKiooTSkgKiBGYWN0MgkJCQkJIwojCQlUaHVzIEZhY3QxICsgRmFjdDIgPSAyKiooTSkgKiAyKiooai82NCkuCQkjCiMJCQkJCQkJCQkjCiMJMy4gQ2FsY3VsYXRlIFAgd2hlcmUgMSArIFAgYXBwcm94aW1hdGVzIGV4cChyKToJCQkjCiMJCVAgPSByICsgcipyKihBMStyKihBMisuLi4rcipBNSkpLgkJCSMKIwkJCQkJCQkJCSMKIwk0LiBMZXQgQWRqRmFjdCA6PSAyKiooTScpLiBSZXR1cm4JCQkJIwojCQlBZGpGYWN0ICogKCBGYWN0MSArICgoRmFjdDEqUCkgKyBGYWN0MikgKS4JCSMKIwkJRXhpdC4JCQkJCQkJIwojCQkJCQkJCQkJIwojCUV4cEJpZwkJCQkJCQkJIwojCTEuIEdlbmVyYXRlIG92ZXJmbG93IGJ5IEh1Z2UgKiBIdWdlIGlmIFggPiAwOyBvdGhlcndpc2UsCSMKIwkgICAgICAgIGdlbmVyYXRlIHVuZGVyZmxvdyBieSBUaW55ICogVGlueS4JCQkjCiMJCQkJCQkJCQkjCiMJRXhwU20JCQkJCQkJCSMKIwkxLiBSZXR1cm4gMSArIFguCQkJCQkJIwojCQkJCQkJCQkJIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpMMlRFTjY0OgoJbG9uZwkJMHg0MDZBOTM0RiwweDA5NzlBMzcxCSMgNjRMT0cxMC9MT0cyCkwxMFRXTzE6Cglsb25nCQkweDNGNzM0NDEzLDB4NTA5RjgwMDAJIyBMT0cyLzY0TE9HMTAKCkwxMFRXTzI6Cglsb25nCQkweEJGQ0QwMDAwLDB4QzAyMTlEQzEsMHhEQTk5NEZEMiwweDAwMDAwMDAwCgpMT0cxMDoJbG9uZwkJMHg0MDAwMDAwMCwweDkzNUQ4RERELDB4QUFBOEFDMTcsMHgwMDAwMDAwMAoKTE9HMjoJbG9uZwkJMHgzRkZFMDAwMCwweEIxNzIxN0Y3LDB4RDFDRjc5QUMsMHgwMDAwMDAwMAoKRVhQQTU6CWxvbmcJCTB4M0Y1NkMxNkQsMHg2RjdCRDBCMgpFWFBBNDoJbG9uZwkJMHgzRjgxMTExMiwweDMwMkM3MTJDCkVYUEEzOglsb25nCQkweDNGQTU1NTU1LDB4NTU1NTRDQzEKRVhQQTI6CWxvbmcJCTB4M0ZDNTU1NTUsMHg1NTU1NEE1NApFWFBBMToJbG9uZwkJMHgzRkUwMDAwMCwweDAwMDAwMDAwLDB4MDAwMDAwMDAsMHgwMDAwMDAwMAoKVEVYUFRCTDoKCWxvbmcJCTB4M0ZGRjAwMDAsMHg4MDAwMDAwMCwweDAwMDAwMDAwLDB4M0Y3MzgwMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHg4MTY0RDFGMywweEJDMDMwNzczLDB4M0ZCRUY3Q0EKCWxvbmcJCTB4M0ZGRjAwMDAsMHg4MkNEODY5OCwweEFDMkJBMUQ3LDB4M0ZCREY4QTkKCWxvbmcJCTB4M0ZGRjAwMDAsMHg4NDNBMjhDMywweEFDREU0MDQ2LDB4M0ZCQ0Q3QzkKCWxvbmcJCTB4M0ZGRjAwMDAsMHg4NUFBQzM2NywweENDNDg3QjE1LDB4QkZCREU4REEKCWxvbmcJCTB4M0ZGRjAwMDAsMHg4NzFGNjE5NiwweDlFOEQxMDEwLDB4M0ZCREU4NUMKCWxvbmcJCTB4M0ZGRjAwMDAsMHg4ODk4MEU4MCwweDkyREE4NTI3LDB4M0ZCRUJCRjEKCWxvbmcJCTB4M0ZGRjAwMDAsMHg4QTE0RDU3NSwweDQ5NkVGRDlBLDB4M0ZCQjgwQ0EKCWxvbmcJCTB4M0ZGRjAwMDAsMHg4Qjk1QzFFMywweEVBOEJENkU3LDB4QkZCQTgzNzMKCWxvbmcJCTB4M0ZGRjAwMDAsMHg4RDFBREY1QiwweDdFNUJBOUU2LDB4QkZCRTk2NzAKCWxvbmcJCTB4M0ZGRjAwMDAsMHg4RUE0Mzk4QiwweDQ1Q0Q1M0MwLDB4M0ZCREI3MDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHg5MDMxREM0MywweDE0NjZCMURDLDB4M0ZCRUVFQjAKCWxvbmcJCTB4M0ZGRjAwMDAsMHg5MUMzRDM3MywweEFCMTFDMzM2LDB4M0ZCQkZENkQKCWxvbmcJCTB4M0ZGRjAwMDAsMHg5MzVBMkIyRiwweDEzRTZFOTJDLDB4QkZCREIzMTkKCWxvbmcJCTB4M0ZGRjAwMDAsMHg5NEY0RUZBOCwweEZFRjcwOTYxLDB4M0ZCREJBMkIKCWxvbmcJCTB4M0ZGRjAwMDAsMHg5Njk0MkQzNywweDIwMTg1QTAwLDB4M0ZCRTkxRDUKCWxvbmcJCTB4M0ZGRjAwMDAsMHg5ODM3RjA1MSwweDhEQjhBOTZGLDB4M0ZCRThENUEKCWxvbmcJCTB4M0ZGRjAwMDAsMHg5OUUwNDU5MywweDIwQjdGQTY1LDB4QkZCQ0RFN0IKCWxvbmcJCTB4M0ZGRjAwMDAsMHg5QjhEMzlCOSwweEQ1NEU1NTM5LDB4QkZCRUJBQUYKCWxvbmcJCTB4M0ZGRjAwMDAsMHg5RDNFRDlBNywweDJDRkZCNzUxLDB4QkZCRDg2REEKCWxvbmcJCTB4M0ZGRjAwMDAsMHg5RUY1MzI2MCwweDkxQTExMUFFLDB4QkZCRUJFREQKCWxvbmcJCTB4M0ZGRjAwMDAsMHhBMEIwNTEwRiwweEI5NzE0RkMyLDB4M0ZCQ0M5NkUKCWxvbmcJCTB4M0ZGRjAwMDAsMHhBMjcwNDMwMywweDBDNDk2ODE5LDB4QkZCRUM5MEIKCWxvbmcJCTB4M0ZGRjAwMDAsMHhBNDM1MTVBRSwweDA5RTY4MDlFLDB4M0ZCQkQxREIKCWxvbmcJCTB4M0ZGRjAwMDAsMHhBNUZFRDZBOSwweEIxNTEzOEVBLDB4M0ZCQ0U1RUIKCWxvbmcJCTB4M0ZGRjAwMDAsMHhBN0NEOTNCNCwweEU5NjUzNTZBLDB4QkZCRUMyNzQKCWxvbmcJCTB4M0ZGRjAwMDAsMHhBOUExNUFCNCwweEVBN0MwRUY4LDB4M0ZCRUE4M0MKCWxvbmcJCTB4M0ZGRjAwMDAsMHhBQjdBMzlCNSwweEE5M0VEMzM3LDB4M0ZCRUNCMDAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhBRDU4M0VFQSwweDQyQTE0QUM2LDB4M0ZCRTkzMDEKCWxvbmcJCTB4M0ZGRjAwMDAsMHhBRjNCNzhBRCwweDY5MEE0Mzc1LDB4QkZCRDgzNjcKCWxvbmcJCTB4M0ZGRjAwMDAsMHhCMTIzRjU4MSwweEQyQUMyNTkwLDB4QkZCRUYwNUYKCWxvbmcJCTB4M0ZGRjAwMDAsMHhCMzExQzQxMiwweEE5MTEyNDg5LDB4M0ZCREZCM0MKCWxvbmcJCTB4M0ZGRjAwMDAsMHhCNTA0RjMzMywweEY5REU2NDg0LDB4M0ZCRUIyRkIKCWxvbmcJCTB4M0ZGRjAwMDAsMHhCNkZEOTFFMywweDI4RDE3NzkxLDB4M0ZCQUUyQ0IKCWxvbmcJCTB4M0ZGRjAwMDAsMHhCOEZCQUY0NywweDYyRkI5RUU5LDB4M0ZCQ0RDM0MKCWxvbmcJCTB4M0ZGRjAwMDAsMHhCQUZGNUFCMiwweDEzM0U0NUZCLDB4M0ZCRUU5QUEKCWxvbmcJCTB4M0ZGRjAwMDAsMHhCRDA4QTM5RiwweDU4MEMzNkJGLDB4QkZCRUFFRkQKCWxvbmcJCTB4M0ZGRjAwMDAsMHhCRjE3OTlCNiwweDdBNzMxMDgzLDB4QkZCQ0JGNTEKCWxvbmcJCTB4M0ZGRjAwMDAsMHhDMTJDNENDQSwweDY2NzA5NDU2LDB4M0ZCRUY4OEEKCWxvbmcJCTB4M0ZGRjAwMDAsMHhDMzQ2Q0NEQSwweDI0OTc2NDA3LDB4M0ZCRDgzQjIKCWxvbmcJCTB4M0ZGRjAwMDAsMHhDNTY3MkExMSwweDU1MDZEQURELDB4M0ZCREY4QUIKCWxvbmcJCTB4M0ZGRjAwMDAsMHhDNzhENzRDOCwweEFCQjlCMTVELDB4QkZCREZCMTcKCWxvbmcJCTB4M0ZGRjAwMDAsMHhDOUI5QkQ4NiwweDZFMkYyN0EzLDB4QkZCRUZFM0MKCWxvbmcJCTB4M0ZGRjAwMDAsMHhDQkVDMTRGRSwweEYyNzI3QzVELDB4QkZCQkI2RjgKCWxvbmcJCTB4M0ZGRjAwMDAsMHhDRTI0OEMxNSwweDFGODQ4MEU0LDB4QkZCQ0VFNTMKCWxvbmcJCTB4M0ZGRjAwMDAsMHhEMDYzMzNEQSwweEVGMkIyNTk1LDB4QkZCREE0QUUKCWxvbmcJCTB4M0ZGRjAwMDAsMHhEMkE4MUQ5MSwweEYxMkFFNDVBLDB4M0ZCQzkxMjQKCWxvbmcJCTB4M0ZGRjAwMDAsMHhENEYzNUFBQiwweENGRURGQTFGLDB4M0ZCRUIyNDMKCWxvbmcJCTB4M0ZGRjAwMDAsMHhENzQ0RkNDQSwweEQ2OUQ2QUY0LDB4M0ZCREU2OUEKCWxvbmcJCTB4M0ZGRjAwMDAsMHhEOTlEMTVDMiwweDc4QUZEN0I2LDB4QkZCOEJDNjEKCWxvbmcJCTB4M0ZGRjAwMDAsMHhEQkZCQjc5NywweERBRjIzNzU1LDB4M0ZCREY2MTAKCWxvbmcJCTB4M0ZGRjAwMDAsMHhERTYwRjQ4MiwweDVFMEU5MTI0LDB4QkZCRDhCRTEKCWxvbmcJCTB4M0ZGRjAwMDAsMHhFMENDREVFQywweDJBOTRFMTExLDB4M0ZCQUNCMTIKCWxvbmcJCTB4M0ZGRjAwMDAsMHhFMzNGODk3MiwweEJFOEE1QTUxLDB4M0ZCQjlCRkUKCWxvbmcJCTB4M0ZGRjAwMDAsMHhFNUI5MDZFNywweDdDODM0OEE4LDB4M0ZCQ0YyRjQKCWxvbmcJCTB4M0ZGRjAwMDAsMHhFODM5NkE1MCwweDNDNEJEQzY4LDB4M0ZCRUYyMkYKCWxvbmcJCTB4M0ZGRjAwMDAsMHhFQUMwQzZFNywweEREMjQzOTJGLDB4QkZCREJGNEEKCWxvbmcJCTB4M0ZGRjAwMDAsMHhFRDRGMzAxRSwweEQ5OTQyQjg0LDB4M0ZCRUMwMUEKCWxvbmcJCTB4M0ZGRjAwMDAsMHhFRkU0Qjk5QiwweERDREFGNUNCLDB4M0ZCRThDQUMKCWxvbmcJCTB4M0ZGRjAwMDAsMHhGMjgxNzczQywweDU5RkZCMTNBLDB4QkZCQ0JCM0YKCWxvbmcJCTB4M0ZGRjAwMDAsMHhGNTI1N0QxNSwweDI0ODZDQzJDLDB4M0ZCRUY3M0EKCWxvbmcJCTB4M0ZGRjAwMDAsMHhGN0QwREY3MywweDBBRDEzQkI5LDB4QkZCOEI3OTUKCWxvbmcJCTB4M0ZGRjAwMDAsMHhGQTgzQjJEQiwweDcyMkEwMzNBLDB4M0ZCRUY4NEIKCWxvbmcJCTB4M0ZGRjAwMDAsMHhGRDNFMEMwQywweEY0ODZDMTc1LDB4QkZCRUY1ODEKCglzZXQJCUlOVCxMX1NDUjEKCglzZXQJCVgsRlBfU0NSMAoJc2V0CQlYRENBUkUsWCsyCglzZXQJCVhGUkFDLFgrNAoKCXNldAkJQURKRkFDVCxGUF9TQ1IwCgoJc2V0CQlGQUNUMSxGUF9TQ1IwCglzZXQJCUZBQ1QxSEksRkFDVDErNAoJc2V0CQlGQUNUMUxPVyxGQUNUMSs4CgoJc2V0CQlGQUNUMixGUF9TQ1IxCglzZXQJCUZBQ1QySEksRkFDVDIrNAoJc2V0CQlGQUNUMkxPVyxGQUNUMis4CgoJZ2xvYmFsCQlzdHdvdG94CiMtLUVOVFJZIFBPSU5UIEZPUiAyKiooWCksIEhFUkUgWCBJUyBGSU5JVEUsIE5PTi1aRVJPLCBBTkQgTk9UIE5BTidTCnN0d290b3g6CglmbW92bS54CQkoJWEwKSwmMHg4MAkJIyBMT0FEIElOUFVUCgoJbW92LmwJCSglYTApLCVkMQoJbW92LncJCTQoJWEwKSwlZDEKCWZtb3YueAkJJWZwMCxYKCVhNikKCWFuZC5sCQkmMHg3RkZGRkZGRiwlZDEKCgljbXAubAkJJWQxLCYweDNGQjk4MDAwCQkjIHxYfCA+PSAyKiooLTcwKT8KCWJnZS5iCQlUV09PSzEKCWJyYS53CQlFWFBCT1JTCgpUV09PSzE6CgljbXAubAkJJWQxLCYweDQwMEQ4MEMwCQkjIHxYfCA+IDE2NDgwPwoJYmxlLmIJCVRXT01BSU4KCWJyYS53CQlFWFBCT1JTCgpUV09NQUlOOgojLS1VU1VBTCBDQVNFLCAyXigtNzApIDw9IHxYfCA8PSAxNjQ4MAoKCWZtb3YueAkJJWZwMCwlZnAxCglmbXVsLnMJCSYweDQyODAwMDAwLCVmcDEJIyA2NCAqIFgKCWZtb3YubAkJJWZwMSxJTlQoJWE2KQkJIyBOID0gUk9VTkQtVE8tSU5UKDY0IFgpCgltb3YubAkJJWQyLC0oJXNwKQoJbGVhCQlURVhQVEJMKCVwYyksJWExCSMgTE9BRCBBRERSRVNTIE9GIFRBQkxFIE9GIDJeKEovNjQpCglmbW92LmwJCUlOVCglYTYpLCVmcDEJCSMgTiAtLT4gRkxPQVRJTkcgRk1UCgltb3YubAkJSU5UKCVhNiksJWQxCgltb3YubAkJJWQxLCVkMgoJYW5kLmwJCSYweDNGLCVkMQkJIyBEMCBJUyBKCglhc2wubAkJJjQsJWQxCQkJIyBESVNQTEFDRU1FTlQgRk9SIDJeKEovNjQpCglhZGQubAkJJWQxLCVhMQkJCSMgQUREUkVTUyBGT1IgMl4oSi82NCkKCWFzci5sCQkmNiwlZDIJCQkjIGQyIElTIEwsIE4gPSA2NEwgKyBKCgltb3YubAkJJWQyLCVkMQoJYXNyLmwJCSYxLCVkMQkJCSMgRDAgSVMgTQoJc3ViLmwJCSVkMSwlZDIJCQkjIGQyIElTIE0nLCBOID0gNjQoTStNJykgKyBKCglhZGQubAkJJjB4M0ZGRiwlZDIKCiMtLVNVTU1BUlk6IGExIElTIEFERFJFU1MgRk9SIFRIRSBMRUFESU5HIFBPUlRJT04gT0YgMl4oSi82NCksCiMtLUQwIElTIE0gV0hFUkUgTiA9IDY0KE0rTScpICsgSi4gTk9URSBUSEFUIHxNfCA8PSAxNjE0MCBCWSBERVNJR04uCiMtLUFESkZBQ1QgPSAyXihNJykuCiMtLVJFR0lTVEVSUyBTQVZFRCBTTyBGQVIgQVJFIChJTiBPUkRFUikgRlBDUiwgRDAsIEZQMSwgYTEsIEFORCBGUDIuCgoJZm1vdm0ueAkJJjB4MGMsLSglc3ApCQkjIHNhdmUgZnAyL2ZwMwoKCWZtdWwucwkJJjB4M0M4MDAwMDAsJWZwMQkjICgxLzY0KSpOCgltb3YubAkJKCVhMSkrLEZBQ1QxKCVhNikKCW1vdi5sCQkoJWExKSssRkFDVDFISSglYTYpCgltb3YubAkJKCVhMSkrLEZBQ1QxTE9XKCVhNikKCW1vdi53CQkoJWExKSssRkFDVDIoJWE2KQoKCWZzdWIueAkJJWZwMSwlZnAwCQkjIFggLSAoMS82NCkqSU5UKDY0IFgpCgoJbW92LncJCSglYTEpKyxGQUNUMkhJKCVhNikKCWNsci53CQlGQUNUMkhJKzIoJWE2KQoJY2xyLmwJCUZBQ1QyTE9XKCVhNikKCWFkZC53CQklZDEsRkFDVDEoJWE2KQoJZm11bC54CQlMT0cyKCVwYyksJWZwMAkJIyBGUDAgSVMgUgoJYWRkLncJCSVkMSxGQUNUMiglYTYpCgoJYnJhLncJCWV4cHIKCkVYUEJPUlM6CiMtLUZQQ1IsIEQwIFNBVkVECgljbXAubAkJJWQxLCYweDNGRkY4MDAwCgliZ3QuYgkJVEVYUEJJRwoKIy0tfFh8IElTIFNNQUxMLCBSRVRVUk4gMSArIFgKCglmbW92LmwJCSVkMCwlZnBjcgkJIyByZXN0b3JlIHVzZXJzIHJvdW5kIHByZWMsbW9kZQoJZmFkZC5zCQkmMHgzRjgwMDAwMCwlZnAwCSMgUkVUVVJOIDEgKyBYCglicmEJCXRfcGlueDIKClRFWFBCSUc6CiMtLXxYfCBJUyBMQVJHRSwgR0VORVJBVEUgT1ZFUkZMT1cgSUYgWCA+IDA7IEVMU0UgR0VORVJBVEUgVU5ERVJGTE9XCiMtLVJFR0lTVEVSUyBTQVZFIFNPIEZBUiBBUkUgRlBDUiBBTkQgIEQwCgltb3YubAkJWCglYTYpLCVkMQoJY21wLmwJCSVkMSwmMAoJYmx0LmIJCUVYUE5FRwoKCWJyYQkJdF9vdmZsMgkJCSMgdF9vdmZsIGV4cGVjdHMgcG9zaXRpdmUgdmFsdWUKCkVYUE5FRzoKCWJyYQkJdF91bmZsMgkJCSMgdF91bmZsIGV4cGVjdHMgcG9zaXRpdmUgdmFsdWUKCglnbG9iYWwJCXN0d290b3hkCnN0d290b3hkOgojLS1FTlRSWSBQT0lOVCBGT1IgMioqKFgpIEZPUiBERU5PUk1BTElaRUQgQVJHVU1FTlQKCglmbW92LmwJCSVkMCwlZnBjcgkJIyBzZXQgdXNlcidzIHJvdW5kaW5nIG1vZGUvcHJlY2lzaW9uCglmbW92LnMJCSYweDNGODAwMDAwLCVmcDAJIyBSRVRVUk4gMSArIFgKCW1vdi5sCQkoJWEwKSwlZDEKCW9yLmwJCSYweDAwODAwMDAxLCVkMQoJZmFkZC5zCQklZDEsJWZwMAoJYnJhCQl0X3BpbngyCgoJZ2xvYmFsCQlzdGVudG94CiMtLUVOVFJZIFBPSU5UIEZPUiAxMCoqKFgpLCBIRVJFIFggSVMgRklOSVRFLCBOT04tWkVSTywgQU5EIE5PVCBOQU4nUwpzdGVudG94OgoJZm1vdm0ueAkJKCVhMCksJjB4ODAJCSMgTE9BRCBJTlBVVAoKCW1vdi5sCQkoJWEwKSwlZDEKCW1vdi53CQk0KCVhMCksJWQxCglmbW92LngJCSVmcDAsWCglYTYpCglhbmQubAkJJjB4N0ZGRkZGRkYsJWQxCgoJY21wLmwJCSVkMSwmMHgzRkI5ODAwMAkJIyB8WHwgPj0gMioqKC03MCk/CgliZ2UuYgkJVEVOT0sxCglicmEudwkJRVhQQk9SUwoKVEVOT0sxOgoJY21wLmwJCSVkMSwmMHg0MDBCOUIwNwkJIyB8WHwgPD0gMTY0ODAqbG9nMi9sb2cxMCA/CglibGUuYgkJVEVOTUFJTgoJYnJhLncJCUVYUEJPUlMKClRFTk1BSU46CiMtLVVTVUFMIENBU0UsIDJeKC03MCkgPD0gfFh8IDw9IDE2NDgwIExPRyAyIC8gTE9HIDEwCgoJZm1vdi54CQklZnAwLCVmcDEKCWZtdWwuZAkJTDJURU42NCglcGMpLCVmcDEJIyBYKjY0KkxPRzEwL0xPRzIKCWZtb3YubAkJJWZwMSxJTlQoJWE2KQkJIyBOPUlOVChYKjY0KkxPRzEwL0xPRzIpCgltb3YubAkJJWQyLC0oJXNwKQoJbGVhCQlURVhQVEJMKCVwYyksJWExCSMgTE9BRCBBRERSRVNTIE9GIFRBQkxFIE9GIDJeKEovNjQpCglmbW92LmwJCUlOVCglYTYpLCVmcDEJCSMgTiAtLT4gRkxPQVRJTkcgRk1UCgltb3YubAkJSU5UKCVhNiksJWQxCgltb3YubAkJJWQxLCVkMgoJYW5kLmwJCSYweDNGLCVkMQkJIyBEMCBJUyBKCglhc2wubAkJJjQsJWQxCQkJIyBESVNQTEFDRU1FTlQgRk9SIDJeKEovNjQpCglhZGQubAkJJWQxLCVhMQkJCSMgQUREUkVTUyBGT1IgMl4oSi82NCkKCWFzci5sCQkmNiwlZDIJCQkjIGQyIElTIEwsIE4gPSA2NEwgKyBKCgltb3YubAkJJWQyLCVkMQoJYXNyLmwJCSYxLCVkMQkJCSMgRDAgSVMgTQoJc3ViLmwJCSVkMSwlZDIJCQkjIGQyIElTIE0nLCBOID0gNjQoTStNJykgKyBKCglhZGQubAkJJjB4M0ZGRiwlZDIKCiMtLVNVTU1BUlk6IGExIElTIEFERFJFU1MgRk9SIFRIRSBMRUFESU5HIFBPUlRJT04gT0YgMl4oSi82NCksCiMtLUQwIElTIE0gV0hFUkUgTiA9IDY0KE0rTScpICsgSi4gTk9URSBUSEFUIHxNfCA8PSAxNjE0MCBCWSBERVNJR04uCiMtLUFESkZBQ1QgPSAyXihNJykuCiMtLVJFR0lTVEVSUyBTQVZFRCBTTyBGQVIgQVJFIChJTiBPUkRFUikgRlBDUiwgRDAsIEZQMSwgYTEsIEFORCBGUDIuCglmbW92bS54CQkmMHgwYywtKCVzcCkJCSMgc2F2ZSBmcDIvZnAzCgoJZm1vdi54CQklZnAxLCVmcDIKCglmbXVsLmQJCUwxMFRXTzEoJXBjKSwlZnAxCSMgTiooTE9HMi82NExPRzEwKV9MRUFECgltb3YubAkJKCVhMSkrLEZBQ1QxKCVhNikKCglmbXVsLngJCUwxMFRXTzIoJXBjKSwlZnAyCSMgTiooTE9HMi82NExPRzEwKV9UUkFJTAoKCW1vdi5sCQkoJWExKSssRkFDVDFISSglYTYpCgltb3YubAkJKCVhMSkrLEZBQ1QxTE9XKCVhNikKCWZzdWIueAkJJWZwMSwlZnAwCQkjIFggLSBOIExfTEVBRAoJbW92LncJCSglYTEpKyxGQUNUMiglYTYpCgoJZnN1Yi54CQklZnAyLCVmcDAJCSMgWCAtIE4gTF9UUkFJTAoKCW1vdi53CQkoJWExKSssRkFDVDJISSglYTYpCgljbHIudwkJRkFDVDJISSsyKCVhNikKCWNsci5sCQlGQUNUMkxPVyglYTYpCgoJZm11bC54CQlMT0cxMCglcGMpLCVmcDAJCSMgRlAwIElTIFIKCWFkZC53CQklZDEsRkFDVDEoJWE2KQoJYWRkLncJCSVkMSxGQUNUMiglYTYpCgpleHByOgojLS1GUENSLCBGUDIsIEZQMyBBUkUgU0FWRUQgSU4gT1JERVIgQVMgU0hPV04uCiMtLUFESkZBQ1QgQ09OVEFJTlMgMioqKE0nKSwgRkFDVDEgKyBGQUNUMiA9IDIqKihNKSAqIDIqKihKLzY0KS4KIy0tRlAwIElTIFIuIFRIRSBGT0xMT1dJTkcgQ09ERSBDT01QVVRFUwojLS0JMioqKE0nK00pICogMioqKEovNjQpICogRVhQKFIpCgoJZm1vdi54CQklZnAwLCVmcDEKCWZtdWwueAkJJWZwMSwlZnAxCQkjIEZQMSBJUyBTID0gUipSCgoJZm1vdi5kCQlFWFBBNSglcGMpLCVmcDIJCSMgRlAyIElTIEE1CglmbW92LmQJCUVYUEE0KCVwYyksJWZwMwkJIyBGUDMgSVMgQTQKCglmbXVsLngJCSVmcDEsJWZwMgkJIyBGUDIgSVMgUypBNQoJZm11bC54CQklZnAxLCVmcDMJCSMgRlAzIElTIFMqQTQKCglmYWRkLmQJCUVYUEEzKCVwYyksJWZwMgkJIyBGUDIgSVMgQTMrUypBNQoJZmFkZC5kCQlFWFBBMiglcGMpLCVmcDMJCSMgRlAzIElTIEEyK1MqQTQKCglmbXVsLngJCSVmcDEsJWZwMgkJIyBGUDIgSVMgUyooQTMrUypBNSkKCWZtdWwueAkJJWZwMSwlZnAzCQkjIEZQMyBJUyBTKihBMitTKkE0KQoKCWZhZGQuZAkJRVhQQTEoJXBjKSwlZnAyCQkjIEZQMiBJUyBBMStTKihBMytTKkE1KQoJZm11bC54CQklZnAwLCVmcDMJCSMgRlAzIElTIFIqUyooQTIrUypBNCkKCglmbXVsLngJCSVmcDEsJWZwMgkJIyBGUDIgSVMgUyooQTErUyooQTMrUypBNSkpCglmYWRkLngJCSVmcDMsJWZwMAkJIyBGUDAgSVMgUitSKlMqKEEyK1MqQTQpCglmYWRkLngJCSVmcDIsJWZwMAkJIyBGUDAgSVMgRVhQKFIpIC0gMQoKCWZtb3ZtLngJCSglc3ApKywmMHgzMAkJIyByZXN0b3JlIGZwMi9mcDMKCiMtLUZJTkFMIFJFQ09OU1RSVUNUSU9OIFBST0NFU1MKIy0tRVhQKFgpID0gMl5NKjJeKEovNjQpICsgMl5NKjJeKEovNjQpKihFWFAoUiktMSkgIC0gICgxIE9SIDApCgoJZm11bC54CQlGQUNUMSglYTYpLCVmcDAKCWZhZGQueAkJRkFDVDIoJWE2KSwlZnAwCglmYWRkLngJCUZBQ1QxKCVhNiksJWZwMAoKCWZtb3YubAkJJWQwLCVmcGNyCQkjIHJlc3RvcmUgdXNlcnMgcm91bmQgcHJlYyxtb2RlCgltb3YudwkJJWQyLEFESkZBQ1QoJWE2KQkjIElOU0VSVCBFWFBPTkVOVAoJbW92LmwJCSglc3ApKywlZDIKCW1vdi5sCQkmMHg4MDAwMDAwMCxBREpGQUNUKzQoJWE2KQoJY2xyLmwJCUFESkZBQ1QrOCglYTYpCgltb3YuYgkJJkZNVUxfT1AsJWQxCQkjIGxhc3QgaW5zdCBpcyBNVUwKCWZtdWwueAkJQURKRkFDVCglYTYpLCVmcDAJIyBGSU5BTCBBREpVU1RNRU5UCglicmEJCXRfY2F0Y2gKCglnbG9iYWwJCXN0ZW50b3hkCnN0ZW50b3hkOgojLS1FTlRSWSBQT0lOVCBGT1IgMTAqKihYKSBGT1IgREVOT1JNQUxJWkVEIEFSR1VNRU5UCgoJZm1vdi5sCQklZDAsJWZwY3IJCSMgc2V0IHVzZXIncyByb3VuZGluZyBtb2RlL3ByZWNpc2lvbgoJZm1vdi5zCQkmMHgzRjgwMDAwMCwlZnAwCSMgUkVUVVJOIDEgKyBYCgltb3YubAkJKCVhMCksJWQxCglvci5sCQkmMHgwMDgwMDAwMSwlZDEKCWZhZGQucwkJJWQxLCVmcDAKCWJyYQkJdF9waW54MgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHNzY2FsZSgpOiBjb21wdXRlcyB0aGUgZGVzdGluYXRpb24gb3BlcmFuZCBzY2FsZWQgYnkgdGhlIHNvdXJjZQkjCiMJICAgIG9wZXJhbmQuIElmIHRoZSBhYnNvdWx1dGUgdmFsdWUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kIGlzCSMKIwkgICAgPj0gMl4xNCwgYW4gb3ZlcmZsb3cgb3IgdW5kZXJmbG93IGlzIHJldHVybmVkLgkJIwojCQkJCQkJCQkJIwojIElOUFVUICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAjCiMJYTAgID0gcG9pbnRlciB0byBkb3VibGUtZXh0ZW5kZWQgc291cmNlIG9wZXJhbmQgWAkJIwojCWExICA9IHBvaW50ZXIgdG8gZG91YmxlLWV4dGVuZGVkIGRlc3RpbmF0aW9uIG9wZXJhbmQgWQkJIwojCQkJCQkJCQkJIwojIE9VVFBVVCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAjCiMJZnAwID0gIHNjYWxlKFgsWSkJCQkJCQkjCiMJCQkJCQkJCQkjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnNldAlTSUdOLAkJTF9TQ1IxCgoJZ2xvYmFsCQlzc2NhbGUKc3NjYWxlOgoJbW92LmwJCSVkMCwtKCVzcCkJCSMgc3RvcmUgb2ZmIGN0cmwgYml0cyBmb3Igbm93CgoJbW92LncJCURTVF9FWCglYTEpLCVkMQkJIyBnZXQgZHN0IGV4cG9uZW50CglzbWkuYgkJU0lHTiglYTYpCQkjIHVzZSBTSUdOIHRvIGhvbGQgZHN0IHNpZ24KCWFuZGkubAkJJjB4MDAwMDdmZmYsJWQxCQkjIHN0cmlwIHNpZ24gZnJvbSBkc3QgZXhwCgoJbW92LncJCVNSQ19FWCglYTApLCVkMAkJIyBjaGVjayBzcmMgYm91bmRzCglhbmRpLncJCSYweDdmZmYsJWQwCQkjIGNsciBzcmMgc2lnbiBiaXQKCWNtcGkudwkJJWQwLCYweDNmZmYJCSMgaXMgc3JjIH4gWkVSTz8KCWJsdC53CQlzcmNfc21hbGwJCSMgeWVzCgljbXBpLncJCSVkMCwmMHg0MDBjCQkjIG5vOyBpcyBzcmMgdG9vIGJpZz8KCWJndC53CQlzcmNfb3V0CQkJIyB5ZXMKCiMKIyBTb3VyY2UgaXMgd2l0aGluIDJeMTQgcmFuZ2UuCiMKc3JjX29rOgoJZmludHJ6LngJU1JDKCVhMCksJWZwMAkJIyBjYWxjIGludCBvZiBzcmMKCWZtb3YubAkJJWZwMCwlZDAJCSMgaW50IHNyYyB0byBkMAojIGRvbid0IHdhbnQgYW55IGFjY3J1ZWQgYml0cyBmcm9tIHRoZSBmaW50cnogc2hvd2luZyB1cCBsYXRlciBzaW5jZQojIHdlIG1heSBuZWVkIHRvIHJlYWQgdGhlIGZwc3IgZm9yIHRoZSBsYXN0IGZwIG9wIGluIHRfY2F0Y2gyKCkuCglmbW92LmwJCSYweDAsJWZwc3IKCgl0c3QuYgkJRFNUX0hJKCVhMSkJCSMgaXMgZHN0IGRlbm9ybWFsaXplZD8KCWJtaS5iCQlzb2tfbm9ybQoKIyB0aGUgZHN0IGlzIGEgREVOT1JNLiBub3JtYWxpemUgdGhlIERFTk9STSBhbmQgYWRkIHRoZSBhZGp1c3RtZW50IHRvCiMgdGhlIHNyYyB2YWx1ZS4gdGhlbiwganVtcCB0byB0aGUgbm9ybSBwYXJ0IG9mIHRoZSByb3V0aW5lLgpzb2tfZG5ybToKCW1vdi5sCQklZDAsLSglc3ApCQkjIHNhdmUgc3JjIGZvciBub3cKCgltb3YudwkJRFNUX0VYKCVhMSksRlBfU0NSMF9FWCglYTYpICMgbWFrZSBhIGNvcHkKCW1vdi5sCQlEU1RfSEkoJWExKSxGUF9TQ1IwX0hJKCVhNikKCW1vdi5sCQlEU1RfTE8oJWExKSxGUF9TQ1IwX0xPKCVhNikKCglsZWEJCUZQX1NDUjAoJWE2KSwlYTAJIyBwYXNzIHB0ciB0byBERU5PUk0KCWJzci5sCQlub3JtCQkJIyBub3JtYWxpemUgdGhlIERFTk9STQoJbmVnLmwJCSVkMAoJYWRkLmwJCSglc3ApKywlZDAJCSMgYWRkIGFkanVzdG1lbnQgdG8gc3JjCgoJZm1vdm0ueAkJRlBfU0NSMCglYTYpLCYweDgwCSMgbG9hZCBub3JtYWxpemVkIERFTk9STQoKCWNtcGkudwkJJWQwLCYtMHgzZmZmCQkjIGlzIHRoZSBzaGZ0IGFtdCByZWFsbHkgbG93PwoJYmdlLmIJCXNva19ub3JtMgkJIyB0aGFuayBnb29kbmVzcyBubwoKIyB0aGUgbXVsdGlwbHkgZmFjdG9yIHRoYXQgd2UncmUgdHJ5aW5nIHRvIGNyZWF0ZSBzaG91bGQgYmUgYSBkZW5vcm0KIyBmb3IgdGhlIG11bHRpcGx5IHRvIHdvcmsuIHRoZXJlZm9yZSwgd2UncmUgZ29pbmcgdG8gYWN0dWFsbHkgZG8gYQojIG11bHRpcGx5IHdpdGggYSBkZW5vcm0gd2hpY2ggd2lsbCBjYXVzZSBhbiB1bmltcGxlbWVudGVkIGRhdGEgdHlwZQojIGV4Y2VwdGlvbiB0byBiZSBwdXQgaW50byB0aGUgbWFjaGluZSB3aGljaCB3aWxsIGJlIGNhdWdodCBhbmQgY29ycmVjdGVkCiMgbGF0ZXIuIHdlIGRvbid0IGRvIHRoaXMgd2l0aCB0aGUgREVOT1JNcyBhYm92ZSBiZWNhdXNlIHRoaXMgbWV0aG9kCiMgaXMgc2xvd2VyLiBidXQsIGRvbid0IGZyZXQsIEkgZG9uJ3Qgc2VlIGl0IGJlaW5nIHVzZWQgbXVjaCBlaXRoZXIuCglmbW92LmwJCSglc3ApKywlZnBjcgkJIyByZXN0b3JlIHVzZXIgZnBjcgoJbW92LmwJCSYweDgwMDAwMDAwLCVkMQkJIyBsb2FkIG5vcm1hbGl6ZWQgbWFudGlzc2EKCXN1YmkubAkJJi0weDNmZmYsJWQwCQkjIGhvdyBtYW55IHNob3VsZCB3ZSBzaGlmdD8KCW5lZy5sCQklZDAJCQkjIG1ha2UgaXQgcG9zaXRpdmUKCWNtcGkuYgkJJWQwLCYweDIwCQkjIGlzIGl0ID4gMzI/CgliZ2UuYgkJc29rX2Rucm1fMzIJCSMgeWVzCglsc3IubAkJJWQwLCVkMQkJCSMgbm87IGJpdCBzdGF5cyBpbiB1cHBlciBsdwoJY2xyLmwJCS0oJXNwKQkJCSMgaW5zZXJ0IHplcm8gbG93IG1hbnRpc3NhCgltb3YubAkJJWQxLC0oJXNwKQkJIyBpbnNlcnQgbmV3IGhpZ2ggbWFudGlzc2EKCWNsci5sCQktKCVzcCkJCQkjIG1ha2UgemVybyBleHBvbmVudAoJYnJhLmIJCXNva19ub3JtX2NvbnQKc29rX2Rucm1fMzI6CglzdWJpLmIJCSYweDIwLCVkMAkJIyBnZXQgc2hpZnQgY291bnQKCWxzci5sCQklZDAsJWQxCQkJIyBtYWtlIGxvdyBtYW50aXNzYSBsb25nd29yZAoJbW92LmwJCSVkMSwtKCVzcCkJCSMgaW5zZXJ0IG5ldyBsb3cgbWFudGlzc2EKCWNsci5sCQktKCVzcCkJCQkjIGluc2VydCB6ZXJvIGhpZ2ggbWFudGlzc2EKCWNsci5sCQktKCVzcCkJCQkjIG1ha2UgemVybyBleHBvbmVudAoJYnJhLmIJCXNva19ub3JtX2NvbnQKCiMgdGhlIHNyYyB3aWxsIGZvcmNlIHRoZSBkc3QgdG8gYSBERU5PUk0gdmFsdWUgb3Igd29yc2UuIHNvLCBsZXQncwojIGNyZWF0ZSBhbiBmcCBtdWx0aXBseSB0aGF0IHdpbGwgY3JlYXRlIHRoZSByZXN1bHQuCnNva19ub3JtOgoJZm1vdm0ueAkJRFNUKCVhMSksJjB4ODAJCSMgbG9hZCBmcDAgd2l0aCBub3JtYWxpemVkIHNyYwpzb2tfbm9ybTI6CglmbW92LmwJCSglc3ApKywlZnBjcgkJIyByZXN0b3JlIHVzZXIgZnBjcgoKCWFkZGkudwkJJjB4M2ZmZiwlZDAJCSMgdHVybiBzcmMgYW10IGludG8gZXhwIHZhbHVlCglzd2FwCQklZDAJCQkjIHB1dCBleHBvbmVudCBpbiBoaWdoIHdvcmQKCWNsci5sCQktKCVzcCkJCQkjIGluc2VydCBuZXcgZXhwb25lbnQKCW1vdi5sCQkmMHg4MDAwMDAwMCwtKCVzcCkJIyBpbnNlcnQgbmV3IGhpZ2ggbWFudGlzc2EKCW1vdi5sCQklZDAsLSglc3ApCQkjIGluc2VydCBuZXcgbG8gbWFudGlzc2EKCnNva19ub3JtX2NvbnQ6CglmbW92LmwJCSVmcGNyLCVkMAkJIyBkMCBuZWVkcyBmcGNyIGZvciB0X2NhdGNoMgoJbW92LmIJCSZGTVVMX09QLCVkMQkJIyBsYXN0IGluc3QgaXMgTVVMCglmbXVsLngJCSglc3ApKywlZnAwCQkjIGRvIHRoZSBtdWx0aXBseQoJYnJhCQl0X2NhdGNoMgkJIyBjYXRjaCBhbnkgZXhjZXB0aW9ucwoKIwojIFNvdXJjZSBpcyBvdXRzaWRlIG9mIDJeMTQgcmFuZ2UuICBUZXN0IHRoZSBzaWduIGFuZCBicmFuY2gKIyB0byB0aGUgYXBwcm9wcmlhdGUgZXhjZXB0aW9uIGhhbmRsZXIuCiMKc3JjX291dDoKCW1vdi5sCQkoJXNwKSssJWQwCQkjIHJlc3RvcmUgY3RybCBiaXRzCglleGcJCSVhMCwlYTEJCQkjIHN3YXAgc3JjLGRzdCBwdHJzCgl0c3QuYgkJU1JDX0VYKCVhMSkJCSMgaXMgc3JjIG5lZ2F0aXZlPwoJYm1pCQl0X3VuZmwJCQkjIHllczsgdW5kZXJmbG93CglicmEJCXRfb3ZmbF9zYwkJIyBubzsgb3ZlcmZsb3cKCiMKIyBUaGUgc291cmNlIGlucHV0IGlzIGJlbG93IDEsIHNvIHdlIGNoZWNrIGZvciBkZW5vcm1hbGl6ZWQgbnVtYmVycwojIGFuZCBzZXQgdW5mbC4KIwpzcmNfc21hbGw6Cgl0c3QuYgkJRFNUX0hJKCVhMSkJCSMgaXMgZHN0IGRlbm9ybWFsaXplZD8KCWJwbC5iCQlzc21hbGxfZG9uZQkJIyB5ZXMKCgltb3YubAkJKCVzcCkrLCVkMAoJZm1vdi5sCQklZDAsJWZwY3IJCSMgbm87IGxvYWQgY29udHJvbCBiaXRzCgltb3YuYgkJJkZNT1ZfT1AsJWQxCQkjIGxhc3QgaW5zdCBpcyBNT1ZFCglmbW92LngJCURTVCglYTEpLCVmcDAJCSMgc2ltcGx5IHJldHVybiBkZXN0CglicmEJCXRfY2F0Y2gyCnNzbWFsbF9kb25lOgoJbW92LmwJCSglc3ApKywlZDAJCSMgbG9hZCBjb250cm9sIGJpdHMgaW50byBkMQoJbW92LmwJCSVhMSwlYTAJCQkjIHBhc3MgcHRyIHRvIGRzdAoJYnJhCQl0X3Jlc2Rucm0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBzbW9kKCk6IGNvbXB1dGVzIHRoZSBmcCBNT0Qgb2YgdGhlIGlucHV0IHZhbHVlcyBYLFkuCQkJIwojIHNyZW0oKTogY29tcHV0ZXMgdGhlIGZwIChJRUVFKSBSRU0gb2YgdGhlIGlucHV0IHZhbHVlcyBYLFkuCQkjCiMJCQkJCQkJCQkjCiMgSU5QVVQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICMKIwlhMCA9IHBvaW50ZXIgdG8gZXh0ZW5kZWQgcHJlY2lzaW9uIGlucHV0IFgJCQkjCiMJYTEgPSBwb2ludGVyIHRvIGV4dGVuZGVkIHByZWNpc2lvbiBpbnB1dCBZCQkJIwojCWQwID0gcm91bmQgcHJlY2lzaW9uLG1vZGUJCQkJCSMKIwkJCQkJCQkJCSMKIwlUaGUgaW5wdXQgb3BlcmFuZHMgWCBhbmQgWSBjYW4gYmUgZWl0aGVyIG5vcm1hbGl6ZWQgb3IJCSMKIwlkZW5vcm1hbGl6ZWQuCQkJCQkJCSMKIwkJCQkJCQkJCSMKIyBPVVRQVVQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogIwojICAgICAgZnAwID0gRlJFTShYLFkpIG9yIEZNT0QoWCxZKQkJCQkJIwojCQkJCQkJCQkJIwojIEFMR09SSVRITSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAjCiMJCQkJCQkJCQkjCiMgICAgICAgU3RlcCAxLiAgU2F2ZSBhbmQgc3RyaXAgc2lnbnMgb2YgWCBhbmQgWTogc2lnblggOj0gc2lnbihYKSwJIwojICAgICAgICAgICAgICAgIHNpZ25ZIDo9IHNpZ24oWSksIFggOj0gfFh8LCBZIDo9IHxZfCwJCQkjCiMgICAgICAgICAgICAgICAgc2lnblEgOj0gc2lnblggRU9SIHNpZ25ZLiBSZWNvcmQgd2hldGhlciBNT0Qgb3IgUkVNCSMKIyAgICAgICAgICAgICAgICBpcyByZXF1ZXN0ZWQuCQkJCQkJIwojCQkJCQkJCQkJIwojICAgICAgIFN0ZXAgMi4gIFNldCBMIDo9IGV4cG8oWCktZXhwbyhZKSwgayA6PSAwLCBRIDo9IDAuCQkjCiMgICAgICAgICAgICAgICAgSWYgKEwgPCAwKSB0aGVuCQkJCQkjCiMgICAgICAgICAgICAgICAgICAgUiA6PSBYLCBnbyB0byBTdGVwIDQuCQkJCSMKIyAgICAgICAgICAgICAgICBlbHNlCQkJCQkJCSMKIyAgICAgICAgICAgICAgICAgICBSIDo9IDJeKC1MKVgsIGogOj0gTC4JCQkJIwojICAgICAgICAgICAgICAgIGVuZGlmCQkJCQkJCSMKIwkJCQkJCQkJCSMKIyAgICAgICBTdGVwIDMuICBQZXJmb3JtIE1PRChYLFkpCQkJCQkjCiMgICAgICAgICAgICAzLjEgSWYgUiA9IFksIGdvIHRvIFN0ZXAgOS4JCQkJIwojICAgICAgICAgICAgMy4yIElmIFIgPiBZLCB0aGVuIHsgUiA6PSBSIC0gWSwgUSA6PSBRICsgMX0JCSMKIyAgICAgICAgICAgIDMuMyBJZiBqID0gMCwgZ28gdG8gU3RlcCA0LgkJCQkjCiMgICAgICAgICAgICAzLjQgayA6PSBrICsgMSwgaiA6PSBqIC0gMSwgUSA6PSAyUSwgUiA6PSAyUi4gR28gdG8JIwojICAgICAgICAgICAgICAgIFN0ZXAgMy4xLgkJCQkJCSMKIwkJCQkJCQkJCSMKIyAgICAgICBTdGVwIDQuICBBdCB0aGlzIHBvaW50LCBSID0gWCAtIFFZID0gTU9EKFgsWSkuIFNldAkJIwojICAgICAgICAgICAgICAgIExhc3RfU3VidHJhY3QgOj0gZmFsc2UgKHVzZWQgaW4gU3RlcCA3IGJlbG93KS4gSWYJIwojICAgICAgICAgICAgICAgIE1PRCBpcyByZXF1ZXN0ZWQsIGdvIHRvIFN0ZXAgNi4JCQkjCiMJCQkJCQkJCQkjCiMgICAgICAgU3RlcCA1LiAgUiA9IE1PRChYLFkpLCBidXQgUkVNKFgsWSkgaXMgcmVxdWVzdGVkLgkJIwojICAgICAgICAgICAgNS4xIElmIFIgPCBZLzIsIHRoZW4gUiA9IE1PRChYLFkpID0gUkVNKFgsWSkuIEdvIHRvCSMKIyAgICAgICAgICAgICAgICBTdGVwIDYuCQkJCQkJIwojICAgICAgICAgICAgNS4yIElmIFIgPiBZLzIsIHRoZW4geyBzZXQgTGFzdF9TdWJ0cmFjdCA6PSB0cnVlLAkJIwojICAgICAgICAgICAgICAgIFEgOj0gUSArIDEsIFkgOj0gc2lnblkqWSB9LiBHbyB0byBTdGVwIDYuCQkjCiMgICAgICAgICAgICA1LjMgVGhpcyBpcyB0aGUgdHJpY2t5IGNhc2Ugb2YgUiA9IFkvMi4gSWYgUSBpcyBvZGQsCSMKIyAgICAgICAgICAgICAgICB0aGVuIHsgUSA6PSBRICsgMSwgc2lnblggOj0gLXNpZ25YIH0uCQkJIwojCQkJCQkJCQkJIwojICAgICAgIFN0ZXAgNi4gIFIgOj0gc2lnblgqUi4JCQkJCQkjCiMJCQkJCQkJCQkjCiMgICAgICAgU3RlcCA3LiAgSWYgTGFzdF9TdWJ0cmFjdCA9IHRydWUsIFIgOj0gUiAtIFkuCQkJIwojCQkJCQkJCQkJIwojICAgICAgIFN0ZXAgOC4gIFJldHVybiBzaWduUSwgbGFzdCA3IGJpdHMgb2YgUSwgYW5kIFIgYXMgcmVxdWlyZWQuCSMKIwkJCQkJCQkJCSMKIyAgICAgICBTdGVwIDkuICBBdCB0aGlzIHBvaW50LCBSID0gMl4oLWopKlggLSBRIFkgPSBZLiBUaHVzLAkJIwojICAgICAgICAgICAgICAgIFggPSAyXihqKSooUSsxKVkuIHNldCBRIDo9IDJeKGopKihRKzEpLAkJIwojICAgICAgICAgICAgICAgIFIgOj0gMC4gUmV0dXJuIHNpZ25RLCBsYXN0IDcgYml0cyBvZiBRLCBhbmQgUi4JCSMKIwkJCQkJCQkJCSMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKCXNldAkJTW9kX0ZsYWcsTF9TQ1IzCglzZXQJCVNjX0ZsYWcsTF9TQ1IzKzEKCglzZXQJCVNpZ25ZLExfU0NSMgoJc2V0CQlTaWduWCxMX1NDUjIrMgoJc2V0CQlTaWduUSxMX1NDUjMrMgoKCXNldAkJWSxGUF9TQ1IwCglzZXQJCVlfSGksWSs0CglzZXQJCVlfTG8sWSs4CgoJc2V0CQlSLEZQX1NDUjEKCXNldAkJUl9IaSxSKzQKCXNldAkJUl9MbyxSKzgKClNjYWxlOgoJbG9uZwkJMHgwMDAxMDAwMCwweDgwMDAwMDAwLDB4MDAwMDAwMDAsMHgwMDAwMDAwMAoKCWdsb2JhbAkJc21vZApzbW9kOgoJY2xyLmIJCUZQU1JfUUJZVEUoJWE2KQoJbW92LmwJCSVkMCwtKCVzcCkJCSMgc2F2ZSBjdHJsIGJpdHMKCWNsci5iCQlNb2RfRmxhZyglYTYpCglicmEuYgkJTW9kX1JlbQoKCWdsb2JhbAkJc3JlbQpzcmVtOgoJY2xyLmIJCUZQU1JfUUJZVEUoJWE2KQoJbW92LmwJCSVkMCwtKCVzcCkJCSMgc2F2ZSBjdHJsIGJpdHMKCW1vdi5iCQkmMHgxLE1vZF9GbGFnKCVhNikKCk1vZF9SZW06CiMuLlNhdmUgc2lnbiBvZiBYIGFuZCBZCgltb3ZtLmwJCSYweDNmMDAsLSglc3ApCQkjIHNhdmUgZGF0YSByZWdpc3RlcnMKCW1vdi53CQlTUkNfRVgoJWEwKSwlZDMKCW1vdi53CQklZDMsU2lnblkoJWE2KQoJYW5kLmwJCSYweDAwMDA3RkZGLCVkMwkJIyBZIDo9IHxZfAoKIwoJbW92LmwJCVNSQ19ISSglYTApLCVkNAoJbW92LmwJCVNSQ19MTyglYTApLCVkNQkJIyAoRDMsRDQsRDUpIGlzIHxZfAoKCXRzdC5sCQklZDMKCWJuZS5iCQlZX05vcm1hbAoKCW1vdi5sCQkmMHgwMDAwM0ZGRSwlZDMJCSMgJDNGRkQgKyAxCgl0c3QubAkJJWQ0CglibmUuYgkJSGlZX25vdDAKCkhpWV8wOgoJbW92LmwJCSVkNSwlZDQKCWNsci5sCQklZDUKCXN1Yi5sCQkmMzIsJWQzCgljbHIubAkJJWQ2CgliZmZmbwkJJWQ0eyYwOiYzMn0sJWQ2Cglsc2wubAkJJWQ2LCVkNAoJc3ViLmwJCSVkNiwlZDMJCQkjIChEMyxENCxENSkgaXMgbm9ybWFsaXplZAojCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi53aXRoIGJpYXMgJDdGRkQKCWJyYS5iCQlDaGtfWAoKSGlZX25vdDA6CgljbHIubAkJJWQ2CgliZmZmbwkJJWQ0eyYwOiYzMn0sJWQ2CglzdWIubAkJJWQ2LCVkMwoJbHNsLmwJCSVkNiwlZDQKCW1vdi5sCQklZDUsJWQ3CQkJIyBhIGNvcHkgb2YgRDUKCWxzbC5sCQklZDYsJWQ1CgluZWcubAkJJWQ2CglhZGQubAkJJjMyLCVkNgoJbHNyLmwJCSVkNiwlZDcKCW9yLmwJCSVkNywlZDQJCQkjIChEMyxENCxENSkgbm9ybWFsaXplZAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ud2l0aCBiaWFzICQ3RkZECglicmEuYgkJQ2hrX1gKCllfTm9ybWFsOgoJYWRkLmwJCSYweDAwMDAzRkZFLCVkMwkJIyAoRDMsRDQsRDUpIG5vcm1hbGl6ZWQKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLndpdGggYmlhcyAkN0ZGRAoKQ2hrX1g6Cgltb3YudwkJRFNUX0VYKCVhMSksJWQwCgltb3YudwkJJWQwLFNpZ25YKCVhNikKCW1vdi53CQlTaWduWSglYTYpLCVkMQoJZW9yLmwJCSVkMCwlZDEKCWFuZC5sCQkmMHgwMDAwODAwMCwlZDEKCW1vdi53CQklZDEsU2lnblEoJWE2KQkJIyBzaWduKFEpIG9idGFpbmVkCglhbmQubAkJJjB4MDAwMDdGRkYsJWQwCgltb3YubAkJRFNUX0hJKCVhMSksJWQxCgltb3YubAkJRFNUX0xPKCVhMSksJWQyCQkjIChEMCxEMSxEMikgaXMgfFh8Cgl0c3QubAkJJWQwCglibmUuYgkJWF9Ob3JtYWwKCW1vdi5sCQkmMHgwMDAwM0ZGRSwlZDAKCXRzdC5sCQklZDEKCWJuZS5iCQlIaVhfbm90MAoKSGlYXzA6Cgltb3YubAkJJWQyLCVkMQoJY2xyLmwJCSVkMgoJc3ViLmwJCSYzMiwlZDAKCWNsci5sCQklZDYKCWJmZmZvCQklZDF7JjA6JjMyfSwlZDYKCWxzbC5sCQklZDYsJWQxCglzdWIubAkJJWQ2LCVkMAkJCSMgKEQwLEQxLEQyKSBpcyBub3JtYWxpemVkCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi53aXRoIGJpYXMgJDdGRkQKCWJyYS5iCQlJbml0CgpIaVhfbm90MDoKCWNsci5sCQklZDYKCWJmZmZvCQklZDF7JjA6JjMyfSwlZDYKCXN1Yi5sCQklZDYsJWQwCglsc2wubAkJJWQ2LCVkMQoJbW92LmwJCSVkMiwlZDcJCQkjIGEgY29weSBvZiBEMgoJbHNsLmwJCSVkNiwlZDIKCW5lZy5sCQklZDYKCWFkZC5sCQkmMzIsJWQ2Cglsc3IubAkJJWQ2LCVkNwoJb3IubAkJJWQ3LCVkMQkJCSMgKEQwLEQxLEQyKSBub3JtYWxpemVkCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi53aXRoIGJpYXMgJDdGRkQKCWJyYS5iCQlJbml0CgpYX05vcm1hbDoKCWFkZC5sCQkmMHgwMDAwM0ZGRSwlZDAJCSMgKEQwLEQxLEQyKSBub3JtYWxpemVkCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi53aXRoIGJpYXMgJDdGRkQKCkluaXQ6CiMKCW1vdi5sCQklZDMsTF9TQ1IxKCVhNikJCSMgc2F2ZSBiaWFzZWQgZXhwKFkpCgltb3YubAkJJWQwLC0oJXNwKQkJIyBzYXZlIGJpYXNlZCBleHAoWCkKCXN1Yi5sCQklZDMsJWQwCQkJIyBMIDo9IGV4cG8oWCktZXhwbyhZKQoKCWNsci5sCQklZDYJCQkjIEQ2IDo9IGNhcnJ5IDwtIDAKCWNsci5sCQklZDMJCQkjIEQzIGlzIFEKCW1vdi5sCQkmMCwlYTEJCQkjIEExIGlzIGs7IGoraz1MLCBRPTAKCiMuLihDYXJyeSxEMSxEMikgaXMgUgoJdHN0LmwJCSVkMAoJYmdlLmIJCU1vZF9Mb29wX3ByZQoKIy4uZXhwbyhYKSA8IGV4cG8oWSkuIFRodXMgWCA9IG1vZChYLFkpCiMKCW1vdi5sCQkoJXNwKSssJWQwCQkjIHJlc3RvcmUgZDAKCWJyYS53CQlHZXRfTW9kCgpNb2RfTG9vcF9wcmU6CglhZGRxLmwJCSYweDQsJXNwCQkjIGVyYXNlIGV4cChYKQojLi5BdCB0aGlzIHBvaW50ICBSID0gMl4oLUwpWDsgUSA9IDA7IGsgPSAwOyBhbmQgIGsraiA9IEwKTW9kX0xvb3A6Cgl0c3QubAkJJWQ2CQkJIyB0ZXN0IGNhcnJ5IGJpdAoJYmd0LmIJCVJfR1RfWQoKIy4uQXQgdGhpcyBwb2ludCBjYXJyeSA9IDAsIFIgPSAoRDEsRDIpLCBZID0gKEQ0LEQ1KQoJY21wLmwJCSVkMSwlZDQJCQkjIGNvbXBhcmUgaGkoUikgYW5kIGhpKFkpCglibmUuYgkJUl9ORV9ZCgljbXAubAkJJWQyLCVkNQkJCSMgY29tcGFyZSBsbyhSKSBhbmQgbG8oWSkKCWJuZS5iCQlSX05FX1kKCiMuLkF0IHRoaXMgcG9pbnQsIFIgPSBZCglicmEudwkJUmVtX2lzXzAKClJfTkVfWToKIy4udXNlIHRoZSBib3Jyb3cgb2YgdGhlIHByZXZpb3VzIGNvbXBhcmUKCWJjcy5iCQlSX0xUX1kJCQkjIGJvcnJvdyBpcyBzZXQgaWZmIFIgPCBZCgpSX0dUX1k6CiMuLklmIENhcnJ5IGlzIHNldCwgdGhlbiBZIDwgKENhcnJ5LEQxLEQyKSA8IDJZLiBPdGhlcndpc2UsIENhcnJ5ID0gMAojLi5hbmQgWSA8IChEMSxEMikgPCAyWS4gRWl0aGVyIHdheSwgcGVyZm9ybSBSIC0gWQoJc3ViLmwJCSVkNSwlZDIJCQkjIGxvKFIpIC0gbG8oWSkKCXN1YngubAkJJWQ0LCVkMQkJCSMgaGkoUikgLSBoaShZKQoJY2xyLmwJCSVkNgkJCSMgY2xlYXIgY2FycnkKCWFkZHEubAkJJjEsJWQzCQkJIyBRIDo9IFEgKyAxCgpSX0xUX1k6CiMuLkF0IHRoaXMgcG9pbnQsIENhcnJ5PTAsIFIgPCBZLiBSID0gMl4oay1MKVggLSBRWTsgaytqID0gTDsgaiA+PSAwLgoJdHN0LmwJCSVkMAkJCSMgc2VlIGlmIGogPSAwLgoJYmVxLmIJCVBvc3RMb29wCgoJYWRkLmwJCSVkMywlZDMJCQkjIFEgOj0gMlEKCWFkZC5sCQklZDIsJWQyCQkJIyBsbyhSKSA9IDJsbyhSKQoJcm94bC5sCQkmMSwlZDEJCQkjIGhpKFIpID0gMmhpKFIpICsgY2FycnkKCXNjcwkJJWQ2CQkJIyBzZXQgQ2FycnkgaWYgMihSKSBvdmVyZmxvd3MKCWFkZHEubAkJJjEsJWExCQkJIyBrIDo9IGsrMQoJc3VicS5sCQkmMSwlZDAJCQkjIGogOj0gaiAtIDEKIy4uQXQgdGhpcyBwb2ludCwgUj0oQ2FycnksRDEsRDIpID0gMl4oay1MKVggLSBRWSwgaitrPUwsIGogPj0gMCwgUiA8IDJZLgoKCWJyYS5iCQlNb2RfTG9vcAoKUG9zdExvb3A6CiMuLmsgPSBMLCBqID0gMCwgQ2FycnkgPSAwLCBSID0gKEQxLEQyKSA9IFggLSBRWSwgUiA8IFkuCgojLi5ub3JtYWxpemUgUi4KCW1vdi5sCQlMX1NDUjEoJWE2KSwlZDAJCSMgbmV3IGJpYXNlZCBleHBvIG9mIFIKCXRzdC5sCQklZDEKCWJuZS5iCQlIaVJfbm90MAoKSGlSXzA6Cgltb3YubAkJJWQyLCVkMQoJY2xyLmwJCSVkMgoJc3ViLmwJCSYzMiwlZDAKCWNsci5sCQklZDYKCWJmZmZvCQklZDF7JjA6JjMyfSwlZDYKCWxzbC5sCQklZDYsJWQxCglzdWIubAkJJWQ2LCVkMAkJCSMgKEQwLEQxLEQyKSBpcyBub3JtYWxpemVkCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi53aXRoIGJpYXMgJDdGRkQKCWJyYS5iCQlHZXRfTW9kCgpIaVJfbm90MDoKCWNsci5sCQklZDYKCWJmZmZvCQklZDF7JjA6JjMyfSwlZDYKCWJtaS5iCQlHZXRfTW9kCQkJIyBhbHJlYWR5IG5vcm1hbGl6ZWQKCXN1Yi5sCQklZDYsJWQwCglsc2wubAkJJWQ2LCVkMQoJbW92LmwJCSVkMiwlZDcJCQkjIGEgY29weSBvZiBEMgoJbHNsLmwJCSVkNiwlZDIKCW5lZy5sCQklZDYKCWFkZC5sCQkmMzIsJWQ2Cglsc3IubAkJJWQ2LCVkNwoJb3IubAkJJWQ3LCVkMQkJCSMgKEQwLEQxLEQyKSBub3JtYWxpemVkCgojCkdldF9Nb2Q6CgljbXAubAkJJWQwLCYweDAwMDA0MUZFCgliZ2UuYgkJTm9fU2NhbGUKRG9fU2NhbGU6Cgltb3YudwkJJWQwLFIoJWE2KQoJbW92LmwJCSVkMSxSX0hpKCVhNikKCW1vdi5sCQklZDIsUl9MbyglYTYpCgltb3YubAkJTF9TQ1IxKCVhNiksJWQ2Cgltb3YudwkJJWQ2LFkoJWE2KQoJbW92LmwJCSVkNCxZX0hpKCVhNikKCW1vdi5sCQklZDUsWV9MbyglYTYpCglmbW92LngJCVIoJWE2KSwlZnAwCQkjIG5vIGV4Y2VwdGlvbgoJbW92LmIJCSYxLFNjX0ZsYWcoJWE2KQoJYnJhLmIJCU1vZE9yUmVtCk5vX1NjYWxlOgoJbW92LmwJCSVkMSxSX0hpKCVhNikKCW1vdi5sCQklZDIsUl9MbyglYTYpCglzdWIubAkJJjB4M0ZGRSwlZDAKCW1vdi53CQklZDAsUiglYTYpCgltb3YubAkJTF9TQ1IxKCVhNiksJWQ2CglzdWIubAkJJjB4M0ZGRSwlZDYKCW1vdi5sCQklZDYsTF9TQ1IxKCVhNikKCWZtb3YueAkJUiglYTYpLCVmcDAKCW1vdi53CQklZDYsWSglYTYpCgltb3YubAkJJWQ0LFlfSGkoJWE2KQoJbW92LmwJCSVkNSxZX0xvKCVhNikKCWNsci5iCQlTY19GbGFnKCVhNikKCiMKTW9kT3JSZW06Cgl0c3QuYgkJTW9kX0ZsYWcoJWE2KQoJYmVxLmIJCUZpeF9TaWduCgoJbW92LmwJCUxfU0NSMSglYTYpLCVkNgkJIyBuZXcgYmlhc2VkIGV4cG8oWSkKCXN1YnEubAkJJjEsJWQ2CQkJIyBiaWFzZWQgZXhwbyhZLzIpCgljbXAubAkJJWQwLCVkNgoJYmx0LmIJCUZpeF9TaWduCgliZ3QuYgkJTGFzdF9TdWIKCgljbXAubAkJJWQxLCVkNAoJYm5lLmIJCU5vdF9FUQoJY21wLmwJCSVkMiwlZDUKCWJuZS5iCQlOb3RfRVEKCWJyYS53CQlUaWVfQ2FzZQoKTm90X0VROgoJYmNzLmIJCUZpeF9TaWduCgpMYXN0X1N1YjoKIwoJZnN1Yi54CQlZKCVhNiksJWZwMAkJIyBubyBleGNlcHRpb25zCglhZGRxLmwJCSYxLCVkMwkJCSMgUSA6PSBRICsgMQoKIwpGaXhfU2lnbjoKIy4uR2V0IHNpZ24gb2YgWAoJbW92LncJCVNpZ25YKCVhNiksJWQ2CgliZ2UuYgkJR2V0X1EKCWZuZWcueAkJJWZwMAoKIy4uR2V0IFEKIwpHZXRfUToKCWNsci5sCQklZDYKCW1vdi53CQlTaWduUSglYTYpLCVkNgkJIyBENiBpcyBzaWduKFEpCgltb3YubAkJJjgsJWQ3Cglsc3IubAkJJWQ3LCVkNgoJYW5kLmwJCSYweDAwMDAwMDdGLCVkMwkJIyA3IGJpdHMgb2YgUQoJb3IubAkJJWQ2LCVkMwkJCSMgc2lnbiBhbmQgYml0cyBvZiBRCiMJc3dhcAkJJWQzCiMJZm1vdi5sCQklZnBzciwlZDYKIwlhbmQubAkJJjB4RkYwMEZGRkYsJWQ2CiMJb3IubAkJJWQzLCVkNgojCWZtb3YubAkJJWQ2LCVmcHNyCQkjIHB1dCBRIGluIGZwc3IKCW1vdi5iCQklZDMsRlBTUl9RQllURSglYTYpCSMgcHV0IFEgaW4gZnBzcgoKIwpSZXN0b3JlOgoJbW92bS5sCQkoJXNwKSssJjB4ZmMJCSMgIHslZDItJWQ3fQoJbW92LmwJCSglc3ApKywlZDAKCWZtb3YubAkJJWQwLCVmcGNyCgl0c3QuYgkJU2NfRmxhZyglYTYpCgliZXEuYgkJRmluaXNoCgltb3YuYgkJJkZNVUxfT1AsJWQxCQkjIGxhc3QgaW5zdCBpcyBNVUwKCWZtdWwueAkJU2NhbGUoJXBjKSwlZnAwCQkjIG1heSBjYXVzZSB1bmRlcmZsb3cKCWJyYQkJdF9jYXRjaDIKIyB0aGUgJzA0MCBwYWNrYWdlIGRpZCB0aGlzIGFwcGFyZW50bHkgdG8gc2VlIGlmIHRoZSBkc3Qgb3BlcmFuZCBmb3IgdGhlCiMgcHJlY2VkaW5nIGZtdWwgd2FzIGEgZGVub3JtLiBidXQsIGl0IGJldHRlciBub3QgaGF2ZSBiZWVuIHNpbmNlIHRoZQojIGFsZ29yaXRobSBqdXN0IGdvdCBkb25lIHBsYXlpbmcgd2l0aCBmcDAgYW5kIGV4cGVjdGVkIG5vIGV4Y2VwdGlvbnMKIyBhcyBhIHJlc3VsdC4gdHJ1c3QgbWUuLi4KIwlicmEJCXRfYXZvaWRfdW5zdXBwCQkjIGNoZWNrIGZvciBkZW5vcm0gYXMgYQojCQkJCQkJO3Jlc3VsdCBvZiB0aGUgc2NhbGluZwoKRmluaXNoOgoJbW92LmIJCSZGTU9WX09QLCVkMQkJIyBsYXN0IGluc3QgaXMgTU9WRQoJZm1vdi54CQklZnAwLCVmcDAJCSMgY2FwdHVyZSBleGNlcHRpb25zICYgcm91bmQKCWJyYQkJdF9jYXRjaDIKClJlbV9pc18wOgojLi5SID0gMl4oLWopWCAtIFEgWSA9IFksIHRodXMgUiA9IDAgYW5kIHF1b3RpZW50ID0gMl5qIChRKzEpCglhZGRxLmwJCSYxLCVkMwoJY21wLmwJCSVkMCwmOAkJCSMgRDAgaXMgagoJYmdlLmIJCVFfQmlnCgoJbHNsLmwJCSVkMCwlZDMKCWJyYS5iCQlTZXRfUl8wCgpRX0JpZzoKCWNsci5sCQklZDMKClNldF9SXzA6CglmbW92LnMJCSYweDAwMDAwMDAwLCVmcDAKCWNsci5iCQlTY19GbGFnKCVhNikKCWJyYS53CQlGaXhfU2lnbgoKVGllX0Nhc2U6CiMuLkNoZWNrIHBhcml0eSBvZiBRCgltb3YubAkJJWQzLCVkNgoJYW5kLmwJCSYweDAwMDAwMDAxLCVkNgoJdHN0LmwJCSVkNgoJYmVxLncJCUZpeF9TaWduCQkjIFEgaXMgZXZlbgoKIy4uUSBpcyBvZGQsIFEgOj0gUSArIDEsIHNpZ25YIDo9IC1zaWduWAoJYWRkcS5sCQkmMSwlZDMKCW1vdi53CQlTaWduWCglYTYpLCVkNgoJZW9yLmwJCSYweDAwMDA4MDAwLCVkNgoJbW92LncJCSVkNixTaWduWCglYTYpCglicmEudwkJRml4X1NpZ24KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBYREVGICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioJIwojCXRhZygpOiByZXR1cm4gdGhlIG9wdHlwZSBvZiB0aGUgaW5wdXQgZXh0IGZwIG51bWJlcgkJIwojCQkJCQkJCQkJIwojCVRoaXMgcm91dGluZSBpcyB1c2VkIGJ5IHRoZSAwNjBGUExTUC4JCQkJIwojCQkJCQkJCQkJIwojIFhSRUYgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgkjCiMJTm9uZQkJCQkJCQkJIwojCQkJCQkJCQkJIwojIElOUFVUICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgkjCiMJYTAgPSBwb2ludGVyIHRvIGV4dGVuZGVkIHByZWNpc2lvbiBvcGVyYW5kCQkJIwojCQkJCQkJCQkJIwojIE9VVFBVVCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgkjCiMJZDAgPSB2YWx1ZSBvZiB0eXBlIHRhZwkJCQkJCSMKIwkJb25lIG9mOiBOT1JNLCBJTkYsIFFOQU4sIFNOQU4sIERFTk9STSwgWkVSTwkJIwojCQkJCQkJCQkJIwojIEFMR09SSVRITSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgkjCiMJU2ltcGx5IHRlc3QgdGhlIGV4cG9uZW50LCBqLWJpdCwgYW5kIG1hbnRpc3NhIHZhbHVlcyB0bwkJIwojIGRldGVybWluZSB0aGUgdHlwZSBvZiBvcGVyYW5kLgkJCQkJIwojCUlmIGl0J3MgYW4gdW5ub3JtYWxpemVkIHplcm8sIGFsdGVyIHRoZSBvcGVyYW5kIGFuZCBmb3JjZSBpdAkjCiMgdG8gYmUgYSBub3JtYWwgemVyby4JCQkJCQkJIwojCQkJCQkJCQkJIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgoJZ2xvYmFsCQl0YWcKdGFnOgoJbW92LncJCUZURU1QX0VYKCVhMCksICVkMAkjIGV4dHJhY3QgZXhwb25lbnQKCWFuZGkudwkJJjB4N2ZmZiwgJWQwCQkjIHN0cmlwIG9mZiBzaWduCgljbXBpLncJCSVkMCwgJjB4N2ZmZgkJIyBpcyAoRVhQID09IE1BWCk/CgliZXEuYgkJaW5mX29yX25hbl94Cm5vdF9pbmZfb3JfbmFuX3g6CglidHN0CQkmMHg3LEZURU1QX0hJKCVhMCkKCWJlcS5iCQlub3Rfbm9ybV94CmlzX25vcm1feDoKCW1vdi5iCQkmTk9STSwgJWQwCglydHMKbm90X25vcm1feDoKCXRzdC53CQklZDAJCQkjIGlzIGV4cG9uZW50ID0gMD8KCWJuZS5iCQlpc191bm5vcm1feApub3RfdW5ub3JtX3g6Cgl0c3QubAkJRlRFTVBfSEkoJWEwKQoJYm5lLmIJCWlzX2Rlbm9ybV94Cgl0c3QubAkJRlRFTVBfTE8oJWEwKQoJYm5lLmIJCWlzX2Rlbm9ybV94CmlzX3plcm9feDoKCW1vdi5iCQkmWkVSTywgJWQwCglydHMKaXNfZGVub3JtX3g6Cgltb3YuYgkJJkRFTk9STSwgJWQwCglydHMKaXNfdW5ub3JtX3g6Cglic3IubAkJdW5ub3JtX2ZpeAkJIyBjb252ZXJ0IHRvIG5vcm0sZGVub3JtLG9yIHplcm8KCXJ0cwppc191bm5vcm1fcmVnX3g6Cgltb3YuYgkJJlVOTk9STSwgJWQwCglydHMKaW5mX29yX25hbl94OgoJdHN0LmwJCUZURU1QX0xPKCVhMCkKCWJuZS5iCQlpc19uYW5feAoJbW92LmwJCUZURU1QX0hJKCVhMCksICVkMAoJYW5kLmwJCSYweDdmZmZmZmZmLCAlZDAJIyBtc2IgaXMgYSBkb24ndCBjYXJlIQoJYm5lLmIJCWlzX25hbl94CmlzX2luZl94OgoJbW92LmIJCSZJTkYsICVkMAoJcnRzCmlzX25hbl94OgoJbW92LmIJCSZRTkFOLCAlZDAKCXJ0cwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKcW5hbjoJbG9uZwkJMHg3ZmZmMDAwMCwgMHhmZmZmZmZmZiwgMHhmZmZmZmZmZgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFhERUYgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgkjCiMJdF9keigpOiBIYW5kbGUgMDYwRlBMU1AgZHogZXhjZXB0aW9uIGZvciAiZmxvZ24iIGVtdWxhdGlvbi4JIwojCXRfZHoyKCk6IEhhbmRsZSAwNjBGUExTUCBkeiBleGNlcHRpb24gZm9yICJmYXRhbmgiIGVtdWxhdGlvbi4JIwojCQkJCQkJCQkJIwojCVRoZXNlIHJvdWl0bmVzIGFyZSB1c2VkIGJ5IHRoZSAwNjBGUExTUCBwYWNrYWdlLgkJIwojCQkJCQkJCQkJIwojIFhSRUYgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgkjCiMJTm9uZQkJCQkJCQkJIwojCQkJCQkJCQkJIwojIElOUFVUICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgkjCiMJYTAgPSBwb2ludGVyIHRvIGV4dGVuZGVkIHByZWNpc2lvbiBzb3VyY2Ugb3BlcmFuZC4JCSMKIwkJCQkJCQkJCSMKIyBPVVRQVVQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioJIwojCWZwMCA9IGRlZmF1bHQgRFogcmVzdWx0LgkJCQkJIwojCQkJCQkJCQkJIwojIEFMR09SSVRITSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgkjCiMJVHJhbnNjZW5kZW50YWwgZW11bGF0aW9uIGZvciB0aGUgMDYwRlBMU1AgaGFzIGRldGVjdGVkIHRoYXQJIwojIGEgRFogZXhjZXB0aW9uIHNob3VsZCBvY2N1ciBmb3IgdGhlIGluc3RydWN0aW9uLiBJZiBEWiBpcyBkaXNhYmxlZCwJIwojIHJldHVybiB0aGUgZGVmYXVsdCByZXN1bHQuCQkJCQkJIwojCUlmIERaIGlzIGVuYWJsZWQsIHRoZSBkc3Qgb3BlcmFuZCBzaG91bGQgYmUgcmV0dXJuZWQgdW5zY2F0aGVkCSMKIyBpbiBmcDAgd2hpbGUgZnAxIGlzIHVzZWQgdG8gY3JlYXRlIGEgRFogZXhjZXB0aW9uIHNvIHRoYXQgdGhlCQkjCiMgb3BlcmF0aW5nIHN5c3RlbSBjYW4gbG9nIHRoYXQgc3VjaCBhbiBldmVudCBvY2N1cnJlZC4JCQkjCiMJCQkJCQkJCQkjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCglnbG9iYWwJCXRfZHoKdF9kejoKCXRzdC5iCQlTUkNfRVgoJWEwKQkJIyBjaGVjayBzaWduIGZvciBuZWcgb3IgcG9zCglicGwuYgkJZHpfcGluZgkJCSMgYnJhbmNoIGlmIHBvcyBzaWduCgoJZ2xvYmFsCQl0X2R6Mgp0X2R6MjoKCW9yaS5sCQkmZHppbmZfbWFzaytuZWdfbWFzayxVU0VSX0ZQU1IoJWE2KSAjIHNldCBOL0kvRFovQURaCgoJYnRzdAkJJmR6X2JpdCxGUENSX0VOQUJMRSglYTYpCglibmUuYgkJZHpfbWluZl9lbmEKCiMgZHogaXMgZGlzYWJsZWQuIHJldHVybiBhIC1JTkYuCglmbW92LnMJCSYweGZmODAwMDAwLCVmcDAJIyByZXR1cm4gLUlORgoJcnRzCgojIGR6IGlzIGVuYWJsZWQuIGNyZWF0ZSBhIGR6IGV4Y2VwdGlvbiBzbyB0aGUgdXNlciBjYW4gcmVjb3JkIGl0CiMgYnV0IHVzZSBmcDEgaW5zdGVhZC4gcmV0dXJuIHRoZSBkc3Qgb3BlcmFuZCB1bnNjYXRoZWQgaW4gZnAwLgpkel9taW5mX2VuYToKCWZtb3ZtLngJCUVYQ19GUDAoJWE2KSwmMHg4MAkjIHJldHVybiBmcDAgdW5zY2F0aGVkCglmbW92LmwJCVVTRVJfRlBDUiglYTYpLCVmcGNyCglmbW92LnMJCSYweGJmODAwMDAwLCVmcDEJIyBsb2FkIC0xCglmZGl2LnMJCSYweDAwMDAwMDAwLCVmcDEJIyAtMSAvIDAKCXJ0cwoKZHpfcGluZjoKCW9yaS5sCQkmZHppbmZfbWFzayxVU0VSX0ZQU1IoJWE2KSAjIHNldCBJL0RaL0FEWgoKCWJ0c3QJCSZkel9iaXQsRlBDUl9FTkFCTEUoJWE2KQoJYm5lLmIJCWR6X3BpbmZfZW5hCgojIGR6IGlzIGRpc2FibGVkLiByZXR1cm4gYSArSU5GLgoJZm1vdi5zCQkmMHg3ZjgwMDAwMCwlZnAwCSMgcmV0dXJuICtJTkYKCXJ0cwoKIyBkeiBpcyBlbmFibGVkLiBjcmVhdGUgYSBkeiBleGNlcHRpb24gc28gdGhlIHVzZXIgY2FuIHJlY29yZCBpdAojIGJ1dCB1c2UgZnAxIGluc3RlYWQuIHJldHVybiB0aGUgZHN0IG9wZXJhbmQgdW5zY2F0aGVkIGluIGZwMC4KZHpfcGluZl9lbmE6CglmbW92bS54CQlFWENfRlAwKCVhNiksJjB4ODAJIyByZXR1cm4gZnAwIHVuc2NhdGhlZAoJZm1vdi5sCQlVU0VSX0ZQQ1IoJWE2KSwlZnBjcgoJZm1vdi5zCQkmMHgzZjgwMDAwMCwlZnAxCSMgbG9hZCArMQoJZmRpdi5zCQkmMHgwMDAwMDAwMCwlZnAxCSMgKzEgLyAwCglydHMKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBYREVGICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioJIwojCXRfb3BlcnIoKTogSGFuZGxlIDA2MEZQTFNQIE9QRVJSIGV4Y2VwdGlvbiBkdXJpbmcgZW11bGF0aW9uLgkjCiMJCQkJCQkJCQkjCiMJVGhpcyByb3V0aW5lIGlzIHVzZWQgYnkgdGhlIDA2MEZQTFNQIHBhY2thZ2UuCQkJIwojCQkJCQkJCQkJIwojIFhSRUYgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgkjCiMJTm9uZS4JCQkJCQkJCSMKIwkJCQkJCQkJCSMKIyBJTlBVVCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioJIwojCWZwMSA9IHNvdXJjZSBvcGVyYW5kCQkJCQkJIwojCQkJCQkJCQkJIwojIE9VVFBVVCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgkjCiMJZnAwID0gZGVmYXVsdCByZXN1bHQJCQkJCQkjCiMJZnAxID0gdW5jaGFuZ2VkCQkJCQkJCSMKIwkJCQkJCQkJCSMKIyBBTEdPUklUSE0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioJIwojCUFuIG9wZXJhbmQgZXJyb3Igc2hvdWxkIG9jY3VyIGFzIHRoZSByZXN1bHQgb2YgdHJhbnNjZW5kZW50YWwJIwojIGVtdWxhdGlvbiBpbiB0aGUgMDYwRlBMU1AuIElmIE9QRVJSIGlzIGRpc2FibGVkLCBqdXN0IHJldHVybiBhIE5BTgkjCiMgaW4gZnAwLiBJZiBPUEVSUiBpcyBlbmFibGVkLCByZXR1cm4gdGhlIGRzdCBvcGVyYW5kIHVuc2NhdGhlZCBpbiBmcDAJIwojIGFuZCB0aGUgc291cmNlIG9wZXJhbmQgaW4gZnAxLiBVc2UgZnAyIHRvIGNyZWF0ZSBhbiBPUEVSUiBleGNlcHRpb24JIwojIHNvIHRoYXQgdGhlIG9wZXJhdGluZyBzeXN0ZW0gY2FuIGxvZyB0aGUgZXZlbnQuCQkJIwojCQkJCQkJCQkJIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgoJZ2xvYmFsCQl0X29wZXJyCnRfb3BlcnI6CglvcmkubAkJJm9wbmFuX21hc2ssVVNFUl9GUFNSKCVhNikgIyBzZXQgTkFOL09QRVJSL0FJT1AKCglidHN0CQkmb3BlcnJfYml0LEZQQ1JfRU5BQkxFKCVhNikKCWJuZS5iCQlvcGVycl9lbmEKCiMgb3BlcnIgaXMgZGlzYWJsZWQuIHJldHVybiBhIFFOQU4gaW4gZnAwCglmbW92bS54CQlxbmFuKCVwYyksJjB4ODAJCSMgcmV0dXJuIFFOQU4KCXJ0cwoKIyBvcGVyciBpcyBlbmFibGVkLiBjcmVhdGUgYW4gb3BlcnIgZXhjZXB0aW9uIHNvIHRoZSB1c2VyIGNhbiByZWNvcmQgaXQKIyBidXQgdXNlIGZwMiBpbnN0ZWFkLiByZXR1cm4gdGhlIGRzdCBvcGVyYW5kIHVuc2NhdGhlZCBpbiBmcDAuCm9wZXJyX2VuYToKCWZtb3ZtLngJCUVYQ19GUDAoJWE2KSwmMHg4MAkjIHJldHVybiBmcDAgdW5zY2F0aGVkCglmbW92LmwJCVVTRVJfRlBDUiglYTYpLCVmcGNyCglmbW92bS54CQkmMHgwNCwtKCVzcCkJCSMgc2F2ZSBmcDIKCWZtb3YucwkJJjB4N2Y4MDAwMDAsJWZwMgkjIGxvYWQgK0lORgoJZm11bC5zCQkmMHgwMDAwMDAwMCwlZnAyCSMgK0lORiB4IDAKCWZtb3ZtLngJCSglc3ApKywmMHgyMAkJIyByZXN0b3JlIGZwMgoJcnRzCgpwbHNfaHVnZToKCWxvbmcJCTB4N2ZmZTAwMDAsMHhmZmZmZmZmZiwweGZmZmZmZmZmCm1uc19odWdlOgoJbG9uZwkJMHhmZmZlMDAwMCwweGZmZmZmZmZmLDB4ZmZmZmZmZmYKcGxzX3Rpbnk6Cglsb25nCQkweDAwMDAwMDAwLDB4ODAwMDAwMDAsMHgwMDAwMDAwMAptbnNfdGlueToKCWxvbmcJCTB4ODAwMDAwMDAsMHg4MDAwMDAwMCwweDAwMDAwMDAwCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgWERFRiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCSMKIwl0X3VuZmwoKTogSGFuZGxlIDA2MEZQTFNQIHVuZGVyZmxvdyBleGNlcHRpb24gZHVyaW5nIGVtdWxhdGlvbi4JIwojCXRfdW5mbDIoKTogSGFuZGxlIDA2MEZQTFNQIHVuZGVyZmxvdyBleGNlcHRpb24gZHVyaW5nCQkjCiMJICAgICAgICAgICBlbXVsYXRpb24uIHJlc3VsdCBhbHdheXMgcG9zaXRpdmUuCQkJIwojCQkJCQkJCQkJIwojCVRoaXMgcm91dGluZSBpcyB1c2VkIGJ5IHRoZSAwNjBGUExTUCBwYWNrYWdlLgkJCSMKIwkJCQkJCQkJCSMKIyBYUkVGICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioJIwojCU5vbmUuCQkJCQkJCQkjCiMJCQkJCQkJCQkjCiMgSU5QVVQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCSMKIwlhMCA9IHBvaW50ZXIgdG8gZXh0ZW5kZWQgcHJlY2lzaW9uIHNvdXJjZSBvcGVyYW5kCQkjCiMJCQkJCQkJCQkjCiMgT1VUUFVUICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCSMKIwlmcDAgPSBkZWZhdWx0IHVuZGVyZmxvdyByZXN1bHQJCQkJCSMKIwkJCQkJCQkJCSMKIyBBTEdPUklUSE0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioJIwojCUFuIHVuZGVyZmxvdyBzaG91bGQgb2NjdXIgYXMgdGhlIHJlc3VsdCBvZiB0cmFuc2NlbmRlbnRhbAkjCiMgZW11bGF0aW9uIGluIHRoZSAwNjBGUExTUC4gQ3JlYXRlIGFuIHVuZGVyZmxvdyBieSB1c2luZyAiZm11bCIJIwojIGFuZCB0d28gdmVyeSBzbWFsbCBudW1iZXJzIG9mIGFwcHJvcHJpYXRlIHNpZ24gc28gdGhlIG9wZXJhdGluZwkjCiMgc3lzdGVtIGNhbiBsb2cgdGhlIGV2ZW50LgkJCQkJCSMKIwkJCQkJCQkJCSMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKCWdsb2JhbAkJdF91bmZsCnRfdW5mbDoKCXRzdC5iCQlTUkNfRVgoJWEwKQoJYnBsLmIJCXVuZl9wb3MKCglnbG9iYWwJCXRfdW5mbDIKdF91bmZsMjoKCW9yaS5sCQkmdW5maW54X21hc2srbmVnX21hc2ssVVNFUl9GUFNSKCVhNikgIyBzZXQgTi9VTkZML0lORVgyL0FVTkZML0FJTkVYCgoJZm1vdi5sCQlVU0VSX0ZQQ1IoJWE2KSwlZnBjcgoJZm1vdm0ueAkJbW5zX3RpbnkoJXBjKSwmMHg4MAoJZm11bC54CQlwbHNfdGlueSglcGMpLCVmcDAKCglmbW92LmwJCSVmcHNyLCVkMAoJcm9sLmwJCSYweDgsJWQwCgltb3YuYgkJJWQwLEZQU1JfQ0MoJWE2KQoJcnRzCnVuZl9wb3M6CglvcmkudwkJJnVuZmlueF9tYXNrLEZQU1JfRVhDRVBUKCVhNikgIyBzZXQgVU5GTC9JTkVYMi9BVU5GTC9BSU5FWAoKCWZtb3YubAkJVVNFUl9GUENSKCVhNiksJWZwY3IKCWZtb3ZtLngJCXBsc190aW55KCVwYyksJjB4ODAKCWZtdWwueAkJJWZwMCwlZnAwCgoJZm1vdi5sCQklZnBzciwlZDAKCXJvbC5sCQkmMHg4LCVkMAoJbW92LmIJCSVkMCxGUFNSX0NDKCVhNikKCXJ0cwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFhERUYgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgkjCiMJdF9vdmZsKCk6IEhhbmRsZSAwNjBGUExTUCBvdmVyZmxvdyBleGNlcHRpb24gZHVyaW5nIGVtdWxhdGlvbi4JIwojCQkgIChtb25hZGljKQkJCQkJCSMKIwl0X292ZmwyKCk6IEhhbmRsZSAwNjBGUExTUCBvdmVyZmxvdyBleGNlcHRpb24gZHVyaW5nCQkjCiMJICAgICAgICAgICBlbXVsYXRpb24uIHJlc3VsdCBhbHdheXMgcG9zaXRpdmUuIChkeWFkaWMpCQkjCiMJdF9vdmZsX3NjKCk6IEhhbmRsZSAwNjBGUExTUCBvdmVyZmxvdyBleGNlcHRpb24gZHVyaW5nCQkjCiMJICAgICAgICAgICAgIGVtdWxhdGlvbiBmb3IgImZzY2FsZSIuCQkJCSMKIwkJCQkJCQkJCSMKIwlUaGlzIHJvdXRpbmUgaXMgdXNlZCBieSB0aGUgMDYwRlBMU1AgcGFja2FnZS4JCQkjCiMJCQkJCQkJCQkjCiMgWFJFRiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCSMKIwlOb25lLgkJCQkJCQkJIwojCQkJCQkJCQkJIwojIElOUFVUICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgkjCiMJYTAgPSBwb2ludGVyIHRvIGV4dGVuZGVkIHByZWNpc2lvbiBzb3VyY2Ugb3BlcmFuZAkJIwojCQkJCQkJCQkJIwojIE9VVFBVVCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgkjCiMJZnAwID0gZGVmYXVsdCB1bmRlcmZsb3cgcmVzdWx0CQkJCQkjCiMJCQkJCQkJCQkjCiMgQUxHT1JJVEhNICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCSMKIwlBbiBvdmVyZmxvdyBzaG91bGQgb2NjdXIgYXMgdGhlIHJlc3VsdCBvZiB0cmFuc2NlbmRlbnRhbAkjCiMgZW11bGF0aW9uIGluIHRoZSAwNjBGUExTUC4gQ3JlYXRlIGFuIG92ZXJmbG93IGJ5IHVzaW5nICJmbXVsIgkJIwojIGFuZCB0d28gdmVyeSBsYXJlZyBudW1iZXJzIG9mIGFwcHJvcHJpYXRlIHNpZ24gc28gdGhlIG9wZXJhdGluZwkjCiMgc3lzdGVtIGNhbiBsb2cgdGhlIGV2ZW50LgkJCQkJCSMKIwlGb3IgdF9vdmZsX3NjKCkgd2UgdGFrZSBzcGVjaWFsIGNhcmUgbm90IHRvIGxvc2UgdGhlIElORVgyIGJpdC4JIwojCQkJCQkJCQkJIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgoJZ2xvYmFsCQl0X292Zmxfc2MKdF9vdmZsX3NjOgoJb3JpLmwJCSZvdmZsX2lueF9tYXNrLFVTRVJfRlBTUiglYTYpICMgc2V0IE9WRkwvQU9WRkwvQUlORVgKCgltb3YuYgkJJWQwLCVkMQkJCSMgZmV0Y2ggcm5kIHByZWMsbW9kZQoJYW5kaS5iCQkmMHhjMCwlZDEJCSMgZXh0cmFjdCBwcmVjCgliZXEudwkJb3ZmbF93b3JrCgojIGRzdCBvcCBpcyBhIERFTk9STS4gd2UgaGF2ZSB0byBub3JtYWxpemUgdGhlIG1hbnRpc3NhIHRvIHNlZSBpZiB0aGUKIyByZXN1bHQgd291bGQgYmUgaW5leGFjdCBmb3IgdGhlIGdpdmVuIHByZWNpc2lvbi4gbWFrZSBhIGNvcHkgb2YgdGhlCiMgZHN0IHNvIHdlIGRvbid0IHNjcmV3IHVwIHRoZSB2ZXJzaW9uIHBhc3NlZCB0byB1cy4KCW1vdi53CQlMT0NBTF9FWCglYTApLEZQX1NDUjBfRVgoJWE2KQoJbW92LmwJCUxPQ0FMX0hJKCVhMCksRlBfU0NSMF9ISSglYTYpCgltb3YubAkJTE9DQUxfTE8oJWEwKSxGUF9TQ1IwX0xPKCVhNikKCWxlYQkJRlBfU0NSMCglYTYpLCVhMAkjIHBhc3MgcHRyIHRvIEZQX1NDUjAKCW1vdm0ubAkJJjB4YzA4MCwtKCVzcCkJCSMgc2F2ZSBkMC1kMS9hMAoJYnNyLmwJCW5vcm0JCQkjIG5vcm1hbGl6ZSBtYW50aXNzYQoJbW92bS5sCQkoJXNwKSssJjB4MDEwMwkJIyByZXN0b3JlIGQwLWQxL2EwCgoJY21waS5iCQklZDEsJjB4NDAJCSMgaXMgcHJlY2lzaW9uIHNnbD8KCWJuZS5iCQlvdmZsX3NjX2RibAkJIyBubzsgZGJsCm92Zmxfc2Nfc2dsOgoJdHN0LmwJCUxPQ0FMX0xPKCVhMCkJCSMgaXMgbG8gbHcgb2Ygc2dsIHNldD8KCWJuZS5iCQlvdmZsX3NjX2lueAkJIyB5ZXMKCXRzdC5iCQkzK0xPQ0FMX0hJKCVhMCkJCSMgaXMgbG8gYnl0ZSBvZiBoaSBsdyBzZXQ/CglibmUuYgkJb3ZmbF9zY19pbngJCSMgeWVzCglicmEudwkJb3ZmbF93b3JrCQkjIGRvbid0IHNldCBJTkVYMgpvdmZsX3NjX2RibDoKCW1vdi5sCQlMT0NBTF9MTyglYTApLCVkMQkjIGFyZSBhbnkgb2YgbG8gMTEgYml0cyBvZgoJYW5kaS5sCQkmMHg3ZmYsJWQxCQkjIGRibCBtYW50aXNzYSBzZXQ/CgliZXEudwkJb3ZmbF93b3JrCQkjIG5vOyBkb24ndCBzZXQgSU5FWDIKb3ZmbF9zY19pbng6CglvcmkubAkJJmluZXgyX21hc2ssVVNFUl9GUFNSKCVhNikgIyBzZXQgSU5FWDIKCWJyYS5iCQlvdmZsX3dvcmsJCSMgY29udGludWUKCglnbG9iYWwJCXRfb3ZmbAp0X292Zmw6CglvcmkudwkJJm92ZmlueF9tYXNrLEZQU1JfRVhDRVBUKCVhNikgIyBzZXQgT1ZGTC9JTkVYMi9BT1ZGTC9BSU5FWApvdmZsX3dvcms6Cgl0c3QuYgkJU1JDX0VYKCVhMCkKCWJwbC5iCQlvdmZsX3AKb3ZmbF9tOgoJZm1vdi5sCQlVU0VSX0ZQQ1IoJWE2KSwlZnBjcgoJZm1vdm0ueAkJbW5zX2h1Z2UoJXBjKSwmMHg4MAoJZm11bC54CQlwbHNfaHVnZSglcGMpLCVmcDAKCglmbW92LmwJCSVmcHNyLCVkMAoJcm9sLmwJCSYweDgsJWQwCglvcmkuYgkJJm5lZ19tYXNrLCVkMAoJbW92LmIJCSVkMCxGUFNSX0NDKCVhNikKCXJ0cwpvdmZsX3A6CglmbW92LmwJCVVTRVJfRlBDUiglYTYpLCVmcGNyCglmbW92bS54CQlwbHNfaHVnZSglcGMpLCYweDgwCglmbXVsLngJCXBsc19odWdlKCVwYyksJWZwMAoKCWZtb3YubAkJJWZwc3IsJWQwCglyb2wubAkJJjB4OCwlZDAKCW1vdi5iCQklZDAsRlBTUl9DQyglYTYpCglydHMKCglnbG9iYWwJCXRfb3ZmbDIKdF9vdmZsMjoKCW9yaS53CQkmb3ZmaW54X21hc2ssRlBTUl9FWENFUFQoJWE2KSAjIHNldCBPVkZML0lORVgyL0FPVkZML0FJTkVYCglmbW92LmwJCVVTRVJfRlBDUiglYTYpLCVmcGNyCglmbW92bS54CQlwbHNfaHVnZSglcGMpLCYweDgwCglmbXVsLngJCXBsc19odWdlKCVwYyksJWZwMAoKCWZtb3YubAkJJWZwc3IsJWQwCglyb2wubAkJJjB4OCwlZDAKCW1vdi5iCQklZDAsRlBTUl9DQyglYTYpCglydHMKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBYREVGICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioJIwojCXRfY2F0Y2goKTogSGFuZGxlIDA2MEZQTFNQIE9WRkwsVU5GTCxvciBJTkVYMiBleGNlcHRpb24gZHVyaW5nCSMKIwkJICAgZW11bGF0aW9uLgkJCQkJCSMKIwl0X2NhdGNoMigpOiBIYW5kbGUgMDYwRlBMU1AgT1ZGTCxVTkZMLG9yIElORVgyIGV4Y2VwdGlvbiBkdXJpbmcJIwojCQkgICAgZW11bGF0aW9uLgkJCQkJCSMKIwkJCQkJCQkJCSMKIwlUaGVzZSByb3V0aW5lcyBhcmUgdXNlZCBieSB0aGUgMDYwRlBMU1AgcGFja2FnZS4JCSMKIwkJCQkJCQkJCSMKIyBYUkVGICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioJIwojCU5vbmUuCQkJCQkJCQkjCiMJCQkJCQkJCQkjCiMgSU5QVVQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCSMKIwlmcDAgPSBkZWZhdWx0IHVuZGVyZmxvdyBvciBvdmVyZmxvdyByZXN1bHQJCQkjCiMJCQkJCQkJCQkjCiMgT1VUUFVUICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCSMKIwlmcDAgPSBkZWZhdWx0IHJlc3VsdAkJCQkJCSMKIwkJCQkJCQkJCSMKIyBBTEdPUklUSE0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioJIwojCUlmIGFuIG92ZXJmbG93IG9yIHVuZGVyZmxvdyBvY2N1cnJlZCBkdXJpbmcgdGhlIGxhc3QJCSMKIyBpbnN0cnVjdGlvbiBvZiB0cmFuc2NlbmRlbnRhbCAwNjBGUExTUCBlbXVsYXRpb24sIHRoZW4gaXQgaGFzIGFscmVhZHkJIwojIG9jY3VycmVkIGFuZCBoYXMgYmVlbiBsb2dnZWQuIE5vdyB3ZSBuZWVkIHRvIHNlZSBpZiBhbiBpbmV4YWN0CSMKIyBleGNlcHRpb24gc2hvdWxkIG9jY3VyLgkJCQkJCSMKIwkJCQkJCQkJCSMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKCWdsb2JhbAkJdF9jYXRjaDIKdF9jYXRjaDI6CglmbW92LmwJCSVmcHNyLCVkMAoJb3IubAkJJWQwLFVTRVJfRlBTUiglYTYpCglicmEuYgkJaW54Ml93b3JrCgoJZ2xvYmFsCQl0X2NhdGNoCnRfY2F0Y2g6CglmbW92LmwJCSVmcHNyLCVkMAoJb3IubAkJJWQwLFVTRVJfRlBTUiglYTYpCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgWERFRiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCSMKIwl0X2lueDIoKTogSGFuZGxlIGluZXhhY3QgMDYwRlBMU1AgZXhjZXB0aW9uIGR1cmluZyBlbXVsYXRpb24uCSMKIwl0X3BpbngyKCk6IEhhbmRsZSBpbmV4YWN0IDA2MEZQTFNQIGV4Y2VwdGlvbiBmb3IgIisiIHJlc3VsdHMuCSMKIwl0X21pbngyKCk6IEhhbmRsZSBpbmV4YWN0IDA2MEZQTFNQIGV4Y2VwdGlvbiBmb3IgIi0iIHJlc3VsdHMuCSMKIwkJCQkJCQkJCSMKIyBYUkVGICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioJIwojCU5vbmUuCQkJCQkJCQkjCiMJCQkJCQkJCQkjCiMgSU5QVVQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCSMKIwlmcDAgPSBkZWZhdWx0IHJlc3VsdAkJCQkJCSMKIwkJCQkJCQkJCSMKIyBPVVRQVVQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioJIwojCWZwMCA9IGRlZmF1bHQgcmVzdWx0CQkJCQkJIwojCQkJCQkJCQkJIwojIEFMR09SSVRITSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgkjCiMJVGhlIGxhc3QgaW5zdHJ1Y3Rpb24gb2YgdHJhbnNjZW5kZW50YWwgZW11bGF0aW9uIGZvciB0aGUJIwojIDA2MEZQTFNQIHNob3VsZCBiZSBpbmV4YWN0LiBTbywgaWYgaW5leGFjdCBpcyBlbmFibGVkLCB0aGVuIHdlIGNyZWF0ZQkjCiMgdGhlIGV2ZW50IGhlcmUgYnkgYWRkaW5nIGEgbGFyZ2UgYW5kIHZlcnkgc21hbGwgbnVtYmVyIHRvZ2V0aGVyCSMKIyBzbyB0aGF0IHRoZSBvcGVyYXRpbmcgc3lzdGVtIGNhbiBsb2cgdGhlIGV2ZW50LgkJCSMKIwlNdXN0IGNoZWNrLCB0b28sIGlmIHRoZSByZXN1bHQgd2FzIHplcm8sIGluIHdoaWNoIGNhc2Ugd2UganVzdAkjCiMgc2V0IHRoZSBGUFNSIGJpdHMgYW5kIHJldHVybi4JCQkJCQkjCiMJCQkJCQkJCQkjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCglnbG9iYWwJCXRfaW54Mgp0X2lueDI6CglmYmx0LncJCXRfbWlueDIKCWZiZXEudwkJaW54Ml96ZXJvCgoJZ2xvYmFsCQl0X3BpbngyCnRfcGlueDI6CglvcmkudwkJJmlueDJhX21hc2ssRlBTUl9FWENFUFQoJWE2KSAjIHNldCBJTkVYMi9BSU5FWAoJYnJhLmIJCWlueDJfd29yawoKCWdsb2JhbAkJdF9taW54Mgp0X21pbngyOgoJb3JpLmwJCSZpbngyYV9tYXNrK25lZ19tYXNrLFVTRVJfRlBTUiglYTYpCgppbngyX3dvcms6CglidHN0CQkmaW5leDJfYml0LEZQQ1JfRU5BQkxFKCVhNikgIyBpcyBpbmV4YWN0IGVuYWJsZWQ/CglibmUuYgkJaW54Ml93b3JrX2VuYQkJIyB5ZXMKCXJ0cwppbngyX3dvcmtfZW5hOgoJZm1vdi5sCQlVU0VSX0ZQQ1IoJWE2KSwlZnBjcgkjIGluc2VydCB1c2VyJ3MgZXhjZXB0aW9ucwoJZm1vdi5zCQkmMHgzZjgwMDAwMCwlZnAxCSMgbG9hZCArMQoJZmFkZC54CQlwbHNfdGlueSglcGMpLCVmcDEJIyBjYXVzZSBleGNlcHRpb24KCXJ0cwoKaW54Ml96ZXJvOgoJbW92LmIJCSZ6X2JtYXNrLEZQU1JfQ0MoJWE2KQoJb3JpLncJCSZpbngyYV9tYXNrLDIrVVNFUl9GUFNSKCVhNikgIyBzZXQgSU5FWC9BSU5FWAoJcnRzCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgWERFRiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCSMKIwl0X2V4dGRucm0oKTogSGFuZGxlIERFTk9STSBpbnB1dHMgaW4gMDYwRlBMU1AuCQkJIwojCXRfcmVzZG5ybSgpOiBIYW5kbGUgREVOT1JNIGlucHV0cyBpbiAwNjBGUExTUCBmb3IgImZzY2FsZSIuCSMKIwkJCQkJCQkJCSMKIwlUaGlzIHJvdXRpbmUgaXMgdXNlZCBieSB0aGUgMDYwRlBMU1AgcGFja2FnZS4JCQkjCiMJCQkJCQkJCQkjCiMgWFJFRiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCSMKIwlOb25lLgkJCQkJCQkJIwojCQkJCQkJCQkJIwojIElOUFVUICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgkjCiMJYTAgPSBwb2ludGVyIHRvIGV4dGVuZGVkIHByZWNpc2lvbiBpbnB1dCBvcGVyYW5kCQkjCiMJCQkJCQkJCQkjCiMgT1VUUFVUICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCSMKIwlmcDAgPSBkZWZhdWx0IHJlc3VsdAkJCQkJCSMKIwkJCQkJCQkJCSMKIyBBTEdPUklUSE0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioJIwojCUZvciBhbGwgZnVuY3Rpb25zIHRoYXQgaGF2ZSBhIGRlbm9ybWFsaXplZCBpbnB1dCBhbmQgdGhhdAkjCiMgZih4KT14LCB0aGlzIGlzIHRoZSBlbnRyeSBwb2ludC4JCQkJCSMKIwlERU5PUk0gdmFsdWUgaXMgbW92ZWQgdXNpbmcgImZtb3ZlIiB3aGljaCB0cmlnZ2VycyBhbiBleGNlcHRpb24JIwojIGlmIGVuYWJsZWQgc28gdGhlIG9wZXJhdGluZyBzeXN0ZW0gY2FuIGxvZyB0aGUgZXZlbnQuCQkJIwojCQkJCQkJCQkJIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgoJZ2xvYmFsCQl0X2V4dGRucm0KdF9leHRkbnJtOgoJZm1vdi5sCQlVU0VSX0ZQQ1IoJWE2KSwlZnBjcgoJZm1vdi54CQlTUkNfRVgoJWEwKSwlZnAwCglmbW92LmwJCSVmcHNyLCVkMAoJb3JpLmwJCSZ1bmZpbnhfbWFzaywlZDAKCW9yLmwJCSVkMCxVU0VSX0ZQU1IoJWE2KQoJcnRzCgoJZ2xvYmFsCQl0X3Jlc2Rucm0KdF9yZXNkbnJtOgoJZm1vdi5sCQlVU0VSX0ZQQ1IoJWE2KSwlZnBjcgoJZm1vdi54CQlTUkNfRVgoJWEwKSwlZnAwCglmbW92LmwJCSVmcHNyLCVkMAoJb3IubAkJJWQwLFVTRVJfRlBTUiglYTYpCglydHMKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIwojIHN0b19jb3M6CiMJVGhpcyBpcyB1c2VkIGJ5IGZzaW5jb3MgbGlicmFyeSBlbXVsYXRpb24uIFRoZSBjb3JyZWN0CiMgdmFsdWVzIGFyZSBhbHJlYWR5IGluIGZwMCBhbmQgZnAxIHNvIHdlIGRvIG5vdGhpbmcgaGVyZS4KIwoJZ2xvYmFsCQlzdG9fY29zCnN0b19jb3M6CglydHMKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIwojCWRzdF9xbmFuIC0tLSBmb3JjZSByZXN1bHQgd2hlbiBkZXN0aW5hdGlvbiBpcyBhIE5hTgojCglnbG9iYWwJCWRzdF9xbmFuCmRzdF9xbmFuOgoJZm1vdi54CQlEU1QoJWExKSwlZnAwCgl0c3QuYgkJRFNUX0VYKCVhMSkKCWJtaS5iCQlkc3RfcW5hbl9tCmRzdF9xbmFuX3A6Cgltb3YuYgkJJm5hbl9ibWFzayxGUFNSX0NDKCVhNikKCXJ0cwpkc3RfcW5hbl9tOgoJbW92LmIJCSZuYW5fYm1hc2srbmVnX2JtYXNrLEZQU1JfQ0MoJWE2KQoJcnRzCgojCiMJc3JjX3FuYW4gLS0tIGZvcmNlIHJlc3VsdCB3aGVuIHNvdXJjZSBpcyBhIE5hTgojCglnbG9iYWwJCXNyY19xbmFuCnNyY19xbmFuOgoJZm1vdi54CQlTUkMoJWEwKSwlZnAwCgl0c3QuYgkJU1JDX0VYKCVhMCkKCWJtaS5iCQlzcmNfcW5hbl9tCnNyY19xbmFuX3A6Cgltb3YuYgkJJm5hbl9ibWFzayxGUFNSX0NDKCVhNikKCXJ0cwpzcmNfcW5hbl9tOgoJbW92LmIJCSZuYW5fYm1hc2srbmVnX2JtYXNrLEZQU1JfQ0MoJWE2KQoJcnRzCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMKIwlOYXRpdmUgaW5zdHJ1Y3Rpb24gc3VwcG9ydAojCiMJU29tZSBzeXN0ZW1zIG1heSBuZWVkIGVudHJ5IHBvaW50cyBldmVuIGZvciA2ODA2MCBuYXRpdmUKIwlpbnN0cnVjdGlvbnMuICBUaGVzZSByb3V0aW5lcyBhcmUgcHJvdmlkZWQgZm9yCiMJY29udmVuaWVuY2UuCiMKCWdsb2JhbAkJX2ZhZGRzXwpfZmFkZHNfOgoJZm1vdi5sCQklZnBjciwtKCVzcCkJCSMgc2F2ZSBmcGNyCglmbW92LmwJCSYweDAwMDAwMDAwLCVmcGNyCSMgY2xlYXIgZnBjciBmb3IgbG9hZAoJZm1vdi5zCQkweDgoJXNwKSwlZnAwCQkjIGxvYWQgc2dsIGRzdAoJZm1vdi5sCQkoJXNwKSssJWZwY3IJCSMgcmVzdG9yZSBmcGNyCglmYWRkLnMJCTB4OCglc3ApLCVmcDAJCSMgZmFkZCB3LyBzZ2wgc3JjCglydHMKCglnbG9iYWwJCV9mYWRkZF8KX2ZhZGRkXzoKCWZtb3YubAkJJWZwY3IsLSglc3ApCQkjIHNhdmUgZnBjcgoJZm1vdi5sCQkmMHgwMDAwMDAwMCwlZnBjcgkjIGNsZWFyIGZwY3IgZm9yIGxvYWQKCWZtb3YuZAkJMHg4KCVzcCksJWZwMAkJIyBsb2FkIGRibCBkc3QKCWZtb3YubAkJKCVzcCkrLCVmcGNyCQkjIHJlc3RvcmUgZnBjcgoJZmFkZC5kCQkweGMoJXNwKSwlZnAwCQkjIGZhZGQgdy8gZGJsIHNyYwoJcnRzCgoJZ2xvYmFsCQlfZmFkZHhfCl9mYWRkeF86CglmbW92bS54CQkweDQoJXNwKSwmMHg4MAkJIyBsb2FkIGV4dCBkc3QKCWZhZGQueAkJMHgxMCglc3ApLCVmcDAJCSMgZmFkZCB3LyBleHQgc3JjCglydHMKCglnbG9iYWwJCV9mc3Vic18KX2ZzdWJzXzoKCWZtb3YubAkJJWZwY3IsLSglc3ApCQkjIHNhdmUgZnBjcgoJZm1vdi5sCQkmMHgwMDAwMDAwMCwlZnBjcgkjIGNsZWFyIGZwY3IgZm9yIGxvYWQKCWZtb3YucwkJMHg4KCVzcCksJWZwMAkJIyBsb2FkIHNnbCBkc3QKCWZtb3YubAkJKCVzcCkrLCVmcGNyCQkjIHJlc3RvcmUgZnBjcgoJZnN1Yi5zCQkweDgoJXNwKSwlZnAwCQkjIGZzdWIgdy8gc2dsIHNyYwoJcnRzCgoJZ2xvYmFsCQlfZnN1YmRfCl9mc3ViZF86CglmbW92LmwJCSVmcGNyLC0oJXNwKQkJIyBzYXZlIGZwY3IKCWZtb3YubAkJJjB4MDAwMDAwMDAsJWZwY3IJIyBjbGVhciBmcGNyIGZvciBsb2FkCglmbW92LmQJCTB4OCglc3ApLCVmcDAJCSMgbG9hZCBkYmwgZHN0CglmbW92LmwJCSglc3ApKywlZnBjcgkJIyByZXN0b3JlIGZwY3IKCWZzdWIuZAkJMHhjKCVzcCksJWZwMAkJIyBmc3ViIHcvIGRibCBzcmMKCXJ0cwoKCWdsb2JhbAkJX2ZzdWJ4XwpfZnN1YnhfOgoJZm1vdm0ueAkJMHg0KCVzcCksJjB4ODAJCSMgbG9hZCBleHQgZHN0Cglmc3ViLngJCTB4MTAoJXNwKSwlZnAwCQkjIGZzdWIgdy8gZXh0IHNyYwoJcnRzCgoJZ2xvYmFsCQlfZm11bHNfCl9mbXVsc186CglmbW92LmwJCSVmcGNyLC0oJXNwKQkJIyBzYXZlIGZwY3IKCWZtb3YubAkJJjB4MDAwMDAwMDAsJWZwY3IJIyBjbGVhciBmcGNyIGZvciBsb2FkCglmbW92LnMJCTB4OCglc3ApLCVmcDAJCSMgbG9hZCBzZ2wgZHN0CglmbW92LmwJCSglc3ApKywlZnBjcgkJIyByZXN0b3JlIGZwY3IKCWZtdWwucwkJMHg4KCVzcCksJWZwMAkJIyBmbXVsIHcvIHNnbCBzcmMKCXJ0cwoKCWdsb2JhbAkJX2ZtdWxkXwpfZm11bGRfOgoJZm1vdi5sCQklZnBjciwtKCVzcCkJCSMgc2F2ZSBmcGNyCglmbW92LmwJCSYweDAwMDAwMDAwLCVmcGNyCSMgY2xlYXIgZnBjciBmb3IgbG9hZAoJZm1vdi5kCQkweDgoJXNwKSwlZnAwCQkjIGxvYWQgZGJsIGRzdAoJZm1vdi5sCQkoJXNwKSssJWZwY3IJCSMgcmVzdG9yZSBmcGNyCglmbXVsLmQJCTB4Yyglc3ApLCVmcDAJCSMgZm11bCB3LyBkYmwgc3JjCglydHMKCglnbG9iYWwJCV9mbXVseF8KX2ZtdWx4XzoKCWZtb3ZtLngJCTB4NCglc3ApLCYweDgwCQkjIGxvYWQgZXh0IGRzdAoJZm11bC54CQkweDEwKCVzcCksJWZwMAkJIyBmbXVsIHcvIGV4dCBzcmMKCXJ0cwoKCWdsb2JhbAkJX2ZkaXZzXwpfZmRpdnNfOgoJZm1vdi5sCQklZnBjciwtKCVzcCkJCSMgc2F2ZSBmcGNyCglmbW92LmwJCSYweDAwMDAwMDAwLCVmcGNyCSMgY2xlYXIgZnBjciBmb3IgbG9hZAoJZm1vdi5zCQkweDgoJXNwKSwlZnAwCQkjIGxvYWQgc2dsIGRzdAoJZm1vdi5sCQkoJXNwKSssJWZwY3IJCSMgcmVzdG9yZSBmcGNyCglmZGl2LnMJCTB4OCglc3ApLCVmcDAJCSMgZmRpdiB3LyBzZ2wgc3JjCglydHMKCglnbG9iYWwJCV9mZGl2ZF8KX2ZkaXZkXzoKCWZtb3YubAkJJWZwY3IsLSglc3ApCQkjIHNhdmUgZnBjcgoJZm1vdi5sCQkmMHgwMDAwMDAwMCwlZnBjcgkjIGNsZWFyIGZwY3IgZm9yIGxvYWQKCWZtb3YuZAkJMHg4KCVzcCksJWZwMAkJIyBsb2FkIGRibCBkc3QKCWZtb3YubAkJKCVzcCkrLCVmcGNyCQkjIHJlc3RvcmUgZnBjcgoJZmRpdi5kCQkweGMoJXNwKSwlZnAwCQkjIGZkaXYgdy8gZGJsIHNyYwoJcnRzCgoJZ2xvYmFsCQlfZmRpdnhfCl9mZGl2eF86CglmbW92bS54CQkweDQoJXNwKSwmMHg4MAkJIyBsb2FkIGV4dCBkc3QKCWZkaXYueAkJMHgxMCglc3ApLCVmcDAJCSMgZmRpdiB3LyBleHQgc3JjCglydHMKCglnbG9iYWwJCV9mYWJzc18KX2ZhYnNzXzoKCWZhYnMucwkJMHg0KCVzcCksJWZwMAkJIyBmYWJzIHcvIHNnbCBzcmMKCXJ0cwoKCWdsb2JhbAkJX2ZhYnNkXwpfZmFic2RfOgoJZmFicy5kCQkweDQoJXNwKSwlZnAwCQkjIGZhYnMgdy8gZGJsIHNyYwoJcnRzCgoJZ2xvYmFsCQlfZmFic3hfCl9mYWJzeF86CglmYWJzLngJCTB4NCglc3ApLCVmcDAJCSMgZmFicyB3LyBleHQgc3JjCglydHMKCglnbG9iYWwJCV9mbmVnc18KX2ZuZWdzXzoKCWZuZWcucwkJMHg0KCVzcCksJWZwMAkJIyBmbmVnIHcvIHNnbCBzcmMKCXJ0cwoKCWdsb2JhbAkJX2ZuZWdkXwpfZm5lZ2RfOgoJZm5lZy5kCQkweDQoJXNwKSwlZnAwCQkjIGZuZWcgdy8gZGJsIHNyYwoJcnRzCgoJZ2xvYmFsCQlfZm5lZ3hfCl9mbmVneF86CglmbmVnLngJCTB4NCglc3ApLCVmcDAJCSMgZm5lZyB3LyBleHQgc3JjCglydHMKCglnbG9iYWwJCV9mc3FydHNfCl9mc3FydHNfOgoJZnNxcnQucwkJMHg0KCVzcCksJWZwMAkJIyBmc3FydCB3LyBzZ2wgc3JjCglydHMKCglnbG9iYWwJCV9mc3FydGRfCl9mc3FydGRfOgoJZnNxcnQuZAkJMHg0KCVzcCksJWZwMAkJIyBmc3FydCB3LyBkYmwgc3JjCglydHMKCglnbG9iYWwJCV9mc3FydHhfCl9mc3FydHhfOgoJZnNxcnQueAkJMHg0KCVzcCksJWZwMAkJIyBmc3FydCB3LyBleHQgc3JjCglydHMKCglnbG9iYWwJCV9maW50c18KX2ZpbnRzXzoKCWZpbnQucwkJMHg0KCVzcCksJWZwMAkJIyBmaW50IHcvIHNnbCBzcmMKCXJ0cwoKCWdsb2JhbAkJX2ZpbnRkXwpfZmludGRfOgoJZmludC5kCQkweDQoJXNwKSwlZnAwCQkjIGZpbnQgdy8gZGJsIHNyYwoJcnRzCgoJZ2xvYmFsCQlfZmludHhfCl9maW50eF86CglmaW50LngJCTB4NCglc3ApLCVmcDAJCSMgZmludCB3LyBleHQgc3JjCglydHMKCglnbG9iYWwJCV9maW50cnpzXwpfZmludHJ6c186CglmaW50cnoucwkweDQoJXNwKSwlZnAwCQkjIGZpbnRyeiB3LyBzZ2wgc3JjCglydHMKCglnbG9iYWwJCV9maW50cnpkXwpfZmludHJ6ZF86CglmaW50cnouZAkweDQoJXNwKSwlZnAwCQkjIGZpbnRyeCB3LyBkYmwgc3JjCglydHMKCglnbG9iYWwJCV9maW50cnp4XwpfZmludHJ6eF86CglmaW50cnoueAkweDQoJXNwKSwlZnAwCQkjIGZpbnRyeiB3LyBleHQgc3JjCglydHMKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHNyY196ZXJvKCk6IFJldHVybiBzaWduZWQgemVybyBhY2NvcmRpbmcgdG8gc2lnbiBvZiBzcmMgb3BlcmFuZC4JIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCglnbG9iYWwJCXNyY196ZXJvCnNyY196ZXJvOgoJdHN0LmIJCVNSQ19FWCglYTApCQkjIGdldCBzaWduIG9mIHNyYyBvcGVyYW5kCglibWkuYgkJbGRfbXplcm8JCSMgaWYgbmVnLCBsb2FkIG5lZyB6ZXJvCgojCiMgbGRfcHplcm8oKTogcmV0dXJuIGEgcG9zaXRpdmUgemVyby4KIwoJZ2xvYmFsCQlsZF9wemVybwpsZF9wemVybzoKCWZtb3YucwkJJjB4MDAwMDAwMDAsJWZwMAkjIGxvYWQgKzAKCW1vdi5iCQkmel9ibWFzayxGUFNSX0NDKCVhNikJIyBzZXQgJ1onIGNjb2RlIGJpdAoJcnRzCgojIGxkX216ZXJvKCk6IHJldHVybiBhIG5lZ2F0aXZlIHplcm8uCglnbG9iYWwJCWxkX216ZXJvCmxkX216ZXJvOgoJZm1vdi5zCQkmMHg4MDAwMDAwMCwlZnAwCSMgbG9hZCAtMAoJbW92LmIJCSZuZWdfYm1hc2srel9ibWFzayxGUFNSX0NDKCVhNikgIyBzZXQgJ04nLCdaJyBjY29kZSBiaXRzCglydHMKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBkc3RfemVybygpOiBSZXR1cm4gc2lnbmVkIHplcm8gYWNjb3JkaW5nIHRvIHNpZ24gb2YgZHN0IG9wZXJhbmQuCSMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoJZ2xvYmFsCQlkc3RfemVybwpkc3RfemVybzoKCXRzdC5iCQlEU1RfRVgoJWExKQkJIyBnZXQgc2lnbiBvZiBkc3Qgb3BlcmFuZAoJYm1pLmIJCWxkX216ZXJvCQkjIGlmIG5lZywgbG9hZCBuZWcgemVybwoJYnJhLmIJCWxkX3B6ZXJvCQkjIGxvYWQgcG9zaXRpdmUgemVybwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHNyY19pbmYoKTogUmV0dXJuIHNpZ25lZCBpbmYgYWNjb3JkaW5nIHRvIHNpZ24gb2Ygc3JjIG9wZXJhbmQuCSMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoJZ2xvYmFsCQlzcmNfaW5mCnNyY19pbmY6Cgl0c3QuYgkJU1JDX0VYKCVhMCkJCSMgZ2V0IHNpZ24gb2Ygc3JjIG9wZXJhbmQKCWJtaS5iCQlsZF9taW5mCQkJIyBpZiBuZWdhdGl2ZSBicmFuY2gKCiMKIyBsZF9waW5mKCk6IHJldHVybiBhIHBvc2l0aXZlIGluZmluaXR5LgojCglnbG9iYWwJCWxkX3BpbmYKbGRfcGluZjoKCWZtb3YucwkJJjB4N2Y4MDAwMDAsJWZwMAkjIGxvYWQgK0lORgoJbW92LmIJCSZpbmZfYm1hc2ssRlBTUl9DQyglYTYpCSMgc2V0ICdJTkYnIGNjb2RlIGJpdAoJcnRzCgojCiMgbGRfbWluZigpOnJldHVybiBhIG5lZ2F0aXZlIGluZmluaXR5LgojCglnbG9iYWwJCWxkX21pbmYKbGRfbWluZjoKCWZtb3YucwkJJjB4ZmY4MDAwMDAsJWZwMAkjIGxvYWQgLUlORgoJbW92LmIJCSZuZWdfYm1hc2sraW5mX2JtYXNrLEZQU1JfQ0MoJWE2KSAjIHNldCAnTicsJ0knIGNjb2RlIGJpdHMKCXJ0cwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIGRzdF9pbmYoKTogUmV0dXJuIHNpZ25lZCBpbmYgYWNjb3JkaW5nIHRvIHNpZ24gb2YgZHN0IG9wZXJhbmQuCSMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoJZ2xvYmFsCQlkc3RfaW5mCmRzdF9pbmY6Cgl0c3QuYgkJRFNUX0VYKCVhMSkJCSMgZ2V0IHNpZ24gb2YgZHN0IG9wZXJhbmQKCWJtaS5iCQlsZF9taW5mCQkJIyBpZiBuZWdhdGl2ZSBicmFuY2gKCWJyYS5iCQlsZF9waW5mCgoJZ2xvYmFsCQlzenJfaW5mCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgc3pyX2luZigpOiBSZXR1cm4gK1pFUk8gZm9yIGEgbmVnYXRpdmUgc3JjIG9wZXJhbmQgb3IJCSMKIwkgICAgICAgICAgICArSU5GIGZvciBhIHBvc2l0aXZlIHNyYyBvcGVyYW5kLgkJIwojCSAgICAgUm91dGluZSB1c2VkIGZvciBmZXRveCwgZnR3b3RveCwgYW5kIGZ0ZW50b3guCSMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKc3pyX2luZjoKCXRzdC5iCQlTUkNfRVgoJWEwKQkJIyBjaGVjayBzaWduIG9mIHNvdXJjZQoJYm1pLmIJCWxkX3B6ZXJvCglicmEuYgkJbGRfcGluZgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHNvcHJfaW5mKCk6IFJldHVybiArSU5GIGZvciBhIHBvc2l0aXZlIHNyYyBvcGVyYW5kIG9yCQkJIwojCSAgICAgIGp1bXAgdG8gb3BlcmFuZCBlcnJvciByb3V0aW5lIGZvciBhIG5lZ2F0aXZlIHNyYyBvcGVyYW5kLgkjCiMJICAgICAgUm91dGluZSB1c2VkIGZvciBmbG9nbiwgZmxvZ25wMSwgZmxvZzEwLCBhbmQgZmxvZzIuCSMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoJZ2xvYmFsCQlzb3ByX2luZgpzb3ByX2luZjoKCXRzdC5iCQlTUkNfRVgoJWEwKQkJIyBjaGVjayBzaWduIG9mIHNvdXJjZQoJYm1pLncJCXRfb3BlcnIKCWJyYS5iCQlsZF9waW5mCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHNldG94bTFpKCk6IFJldHVybiBtaW51cyBvbmUgZm9yIGEgbmVnYXRpdmUgc3JjIG9wZXJhbmQgb3IJIwojCSAgICAgIHBvc2l0aXZlIGluZmluaXR5IGZvciBhIHBvc2l0aXZlIHNyYyBvcGVyYW5kLgkjCiMJICAgICAgUm91dGluZSB1c2VkIGZvciBmZXRveG0xLgkJCQkjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCglnbG9iYWwJCXNldG94bTFpCnNldG94bTFpOgoJdHN0LmIJCVNSQ19FWCglYTApCQkjIGNoZWNrIHNpZ24gb2Ygc291cmNlCglibWkuYgkJbGRfbW9uZQoJYnJhLmIJCWxkX3BpbmYKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBzcmNfb25lKCk6IFJldHVybiBzaWduZWQgb25lIGFjY29yZGluZyB0byBzaWduIG9mIHNyYyBvcGVyYW5kLgkjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCWdsb2JhbAkJc3JjX29uZQpzcmNfb25lOgoJdHN0LmIJCVNSQ19FWCglYTApCQkjIGNoZWNrIHNpZ24gb2Ygc291cmNlCglibWkuYgkJbGRfbW9uZQoKIwojIGxkX3BvbmUoKTogcmV0dXJuIHBvc2l0aXZlIG9uZS4KIwoJZ2xvYmFsCQlsZF9wb25lCmxkX3BvbmU6CglmbW92LnMJCSYweDNmODAwMDAwLCVmcDAJIyBsb2FkICsxCgljbHIuYgkJRlBTUl9DQyglYTYpCglydHMKCiMKIyBsZF9tb25lKCk6IHJldHVybiBuZWdhdGl2ZSBvbmUuCiMKCWdsb2JhbAkJbGRfbW9uZQpsZF9tb25lOgoJZm1vdi5zCQkmMHhiZjgwMDAwMCwlZnAwCSMgbG9hZCAtMQoJbW92LmIJCSZuZWdfYm1hc2ssRlBTUl9DQyglYTYpCSMgc2V0ICdOJyBjY29kZSBiaXQKCXJ0cwoKcHBpYnkyOglsb25nCQkweDNmZmYwMDAwLCAweGM5MGZkYWEyLCAweDIxNjhjMjM1Cm1waWJ5MjoJbG9uZwkJMHhiZmZmMDAwMCwgMHhjOTBmZGFhMiwgMHgyMTY4YzIzNQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBzcGlfMigpOiBSZXR1cm4gc2lnbmVkIFBJLzIgYWNjb3JkaW5nIHRvIHNpZ24gb2Ygc3JjIG9wZXJhbmQuCSMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCWdsb2JhbAkJc3BpXzIKc3BpXzI6Cgl0c3QuYgkJU1JDX0VYKCVhMCkJCSMgY2hlY2sgc2lnbiBvZiBzb3VyY2UKCWJtaS5iCQlsZF9tcGkyCgojCiMgbGRfcHBpMigpOiByZXR1cm4gcG9zaXRpdmUgUEkvMi4KIwoJZ2xvYmFsCQlsZF9wcGkyCmxkX3BwaTI6CglmbW92LmwJCSVkMCwlZnBjcgoJZm1vdi54CQlwcGlieTIoJXBjKSwlZnAwCSMgbG9hZCArcGkvMgoJYnJhLncJCXRfcGlueDIJCQkjIHNldCBJTkVYMgoKIwojIGxkX21waTIoKTogcmV0dXJuIG5lZ2F0aXZlIFBJLzIuCiMKCWdsb2JhbAkJbGRfbXBpMgpsZF9tcGkyOgoJZm1vdi5sCQklZDAsJWZwY3IKCWZtb3YueAkJbXBpYnkyKCVwYyksJWZwMAkjIGxvYWQgLXBpLzIKCWJyYS53CQl0X21pbngyCQkJIyBzZXQgSU5FWDIKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBUaGUgZm9sbG93aW5nIHJvdXRpbmVzIGdpdmUgc3VwcG9ydCBmb3IgZnNpbmNvcy4gIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojCiMgc3NpbmNvc3ooKTogV2hlbiB0aGUgc3JjIG9wZXJhbmQgaXMgWkVSTywgc3RvcmUgYSBvbmUgaW4gdGhlCiMJICAgICAgY29zaW5lIHJlZ2lzdGVyIGFuZCByZXR1cm4gYSBaRVJPIGluIGZwMCB3LyB0aGUgc2FtZSBzaWduCiMJICAgICAgYXMgdGhlIHNyYyBvcGVyYW5kLgojCglnbG9iYWwJCXNzaW5jb3N6CnNzaW5jb3N6OgoJZm1vdi5zCQkmMHgzZjgwMDAwMCwlZnAxCgl0c3QuYgkJU1JDX0VYKCVhMCkJCSMgdGVzdCBzaWduCglicGwuYgkJc2luY29zenAKCWZtb3YucwkJJjB4ODAwMDAwMDAsJWZwMAkjIHJldHVybiBzaW4gcmVzdWx0IGluIGZwMAoJbW92LmIJCSZ6X2JtYXNrK25lZ19ibWFzayxGUFNSX0NDKCVhNikKCXJ0cwpzaW5jb3N6cDoKCWZtb3YucwkJJjB4MDAwMDAwMDAsJWZwMAkjIHJldHVybiBzaW4gcmVzdWx0IGluIGZwMAoJbW92LmIJCSZ6X2JtYXNrLEZQU1JfQ0MoJWE2KQoJcnRzCgojCiMgc3NpbmNvc2koKTogV2hlbiB0aGUgc3JjIG9wZXJhbmQgaXMgSU5GLCBzdG9yZSBhIFFOQU4gaW4gdGhlIGNvc2luZQojCSAgICAgIHJlZ2lzdGVyIGFuZCBqdW1wIHRvIHRoZSBvcGVyYW5kIGVycm9yIHJvdXRpbmUgZm9yIG5lZ2F0aXZlCiMJICAgICAgc3JjIG9wZXJhbmRzLgojCglnbG9iYWwJCXNzaW5jb3NpCnNzaW5jb3NpOgoJZm1vdi54CQlxbmFuKCVwYyksJWZwMQkJIyBsb2FkIE5BTgoJYnJhLncJCXRfb3BlcnIKCiMKIyBzc2luY29zcW5hbigpOiBXaGVuIHRoZSBzcmMgb3BlcmFuZCBpcyBhIFFOQU4sIHN0b3JlIHRoZSBRTkFOIGluIHRoZSBjb3NpbmUKIwkJIHJlZ2lzdGVyIGFuZCBicmFuY2ggdG8gdGhlIHNyYyBRTkFOIHJvdXRpbmUuCiMKCWdsb2JhbAkJc3NpbmNvc3FuYW4Kc3NpbmNvc3FuYW46CglmbW92LngJCUxPQ0FMX0VYKCVhMCksJWZwMQoJYnJhLncJCXNyY19xbmFuCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCglnbG9iYWwJCXNtb2Rfc2Rucm0KCWdsb2JhbAkJc21vZF9zbm9ybQpzbW9kX3NkbnJtOgpzbW9kX3Nub3JtOgoJbW92LmIJCURUQUcoJWE2KSwlZDEKCWJlcS5sCQlzbW9kCgljbXBpLmIJCSVkMSwmWkVSTwoJYmVxLncJCXNtb2RfenJvCgljbXBpLmIJCSVkMSwmSU5GCgliZXEubAkJdF9vcGVycgoJY21waS5iCQklZDEsJkRFTk9STQoJYmVxLmwJCXNtb2QKCWJyYS5sCQlkc3RfcW5hbgoKCWdsb2JhbAkJc21vZF9zemVybwpzbW9kX3N6ZXJvOgoJbW92LmIJCURUQUcoJWE2KSwlZDEKCWJlcS5sCQl0X29wZXJyCgljbXBpLmIJCSVkMSwmWkVSTwoJYmVxLmwJCXRfb3BlcnIKCWNtcGkuYgkJJWQxLCZJTkYKCWJlcS5sCQl0X29wZXJyCgljbXBpLmIJCSVkMSwmREVOT1JNCgliZXEubAkJdF9vcGVycgoJYnJhLmwJCWRzdF9xbmFuCgoJZ2xvYmFsCQlzbW9kX3NpbmYKc21vZF9zaW5mOgoJbW92LmIJCURUQUcoJWE2KSwlZDEKCWJlcS5sCQlzbW9kX2ZwbgoJY21waS5iCQklZDEsJlpFUk8KCWJlcS5sCQlzbW9kX3pybwoJY21waS5iCQklZDEsJklORgoJYmVxLmwJCXRfb3BlcnIKCWNtcGkuYgkJJWQxLCZERU5PUk0KCWJlcS5sCQlzbW9kX2ZwbgoJYnJhLmwJCWRzdF9xbmFuCgpzbW9kX3pybzoKc3JlbV96cm86Cgltb3YuYgkJU1JDX0VYKCVhMCksJWQxCQkjIGdldCBzcmMgc2lnbgoJbW92LmIJCURTVF9FWCglYTEpLCVkMAkJIyBnZXQgZHN0IHNpZ24KCWVvci5iCQklZDAsJWQxCQkJIyBnZXQgcWJ5dGUgc2lnbgoJYW5kaS5iCQkmMHg4MCwlZDEKCW1vdi5iCQklZDEsRlBTUl9RQllURSglYTYpCgl0c3QuYgkJJWQwCglicGwudwkJbGRfcHplcm8KCWJyYS53CQlsZF9temVybwoKc21vZF9mcG46CnNyZW1fZnBuOgoJY2xyLmIJCUZQU1JfUUJZVEUoJWE2KQoJbW92LmwJCSVkMCwtKCVzcCkKCW1vdi5iCQlTUkNfRVgoJWEwKSwlZDEJCSMgZ2V0IHNyYyBzaWduCgltb3YuYgkJRFNUX0VYKCVhMSksJWQwCQkjIGdldCBkc3Qgc2lnbgoJZW9yLmIJCSVkMCwlZDEJCQkjIGdldCBxYnl0ZSBzaWduCglhbmRpLmIJCSYweDgwLCVkMQoJbW92LmIJCSVkMSxGUFNSX1FCWVRFKCVhNikKCWNtcGkuYgkJRFRBRyglYTYpLCZERU5PUk0KCWJuZS5iCQlzbW9kX25ybQoJbGVhCQlEU1QoJWExKSwlYTAKCW1vdi5sCQkoJXNwKSssJWQwCglicmEJCXRfcmVzZG5ybQpzbW9kX25ybToKCWZtb3YubAkJKCVzcCkrLCVmcGNyCglmbW92LngJCURTVCglYTEpLCVmcDAKCXRzdC5iCQlEU1RfRVgoJWExKQoJYm1pLmIJCXNtb2RfbnJtX25lZwoJcnRzCgpzbW9kX25ybV9uZWc6Cgltb3YuYgkJJm5lZ19ibWFzayxGUFNSX0NDKCVhNikJIyBzZXQgJ04nIGNvZGUKCXJ0cwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoJZ2xvYmFsCQlzcmVtX3Nub3JtCglnbG9iYWwJCXNyZW1fc2Rucm0Kc3JlbV9zZG5ybToKc3JlbV9zbm9ybToKCW1vdi5iCQlEVEFHKCVhNiksJWQxCgliZXEubAkJc3JlbQoJY21waS5iCQklZDEsJlpFUk8KCWJlcS53CQlzcmVtX3pybwoJY21waS5iCQklZDEsJklORgoJYmVxLmwJCXRfb3BlcnIKCWNtcGkuYgkJJWQxLCZERU5PUk0KCWJlcS5sCQlzcmVtCglicmEubAkJZHN0X3FuYW4KCglnbG9iYWwJCXNyZW1fc3plcm8Kc3JlbV9zemVybzoKCW1vdi5iCQlEVEFHKCVhNiksJWQxCgliZXEubAkJdF9vcGVycgoJY21waS5iCQklZDEsJlpFUk8KCWJlcS5sCQl0X29wZXJyCgljbXBpLmIJCSVkMSwmSU5GCgliZXEubAkJdF9vcGVycgoJY21waS5iCQklZDEsJkRFTk9STQoJYmVxLmwJCXRfb3BlcnIKCWJyYS5sCQlkc3RfcW5hbgoKCWdsb2JhbAkJc3JlbV9zaW5mCnNyZW1fc2luZjoKCW1vdi5iCQlEVEFHKCVhNiksJWQxCgliZXEudwkJc3JlbV9mcG4KCWNtcGkuYgkJJWQxLCZaRVJPCgliZXEudwkJc3JlbV96cm8KCWNtcGkuYgkJJWQxLCZJTkYKCWJlcS5sCQl0X29wZXJyCgljbXBpLmIJCSVkMSwmREVOT1JNCgliZXEubAkJc3JlbV9mcG4KCWJyYS5sCQlkc3RfcW5hbgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKCWdsb2JhbAkJc3NjYWxlX3Nub3JtCglnbG9iYWwJCXNzY2FsZV9zZG5ybQpzc2NhbGVfc25vcm06CnNzY2FsZV9zZG5ybToKCW1vdi5iCQlEVEFHKCVhNiksJWQxCgliZXEubAkJc3NjYWxlCgljbXBpLmIJCSVkMSwmWkVSTwoJYmVxLmwJCWRzdF96ZXJvCgljbXBpLmIJCSVkMSwmSU5GCgliZXEubAkJZHN0X2luZgoJY21waS5iCQklZDEsJkRFTk9STQoJYmVxLmwJCXNzY2FsZQoJYnJhLmwJCWRzdF9xbmFuCgoJZ2xvYmFsCQlzc2NhbGVfc3plcm8Kc3NjYWxlX3N6ZXJvOgoJbW92LmIJCURUQUcoJWE2KSwlZDEKCWJlcS5sCQlzc2NhbGUKCWNtcGkuYgkJJWQxLCZaRVJPCgliZXEubAkJZHN0X3plcm8KCWNtcGkuYgkJJWQxLCZJTkYKCWJlcS5sCQlkc3RfaW5mCgljbXBpLmIJCSVkMSwmREVOT1JNCgliZXEubAkJc3NjYWxlCglicmEubAkJZHN0X3FuYW4KCglnbG9iYWwJCXNzY2FsZV9zaW5mCnNzY2FsZV9zaW5mOgoJbW92LmIJCURUQUcoJWE2KSwlZDEKCWJlcS5sCQl0X29wZXJyCgljbXBpLmIJCSVkMSwmUU5BTgoJYmVxLmwJCWRzdF9xbmFuCglicmEubAkJdF9vcGVycgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgoJZ2xvYmFsCQlzb3Bfc3FuYW4Kc29wX3NxbmFuOgoJbW92LmIJCURUQUcoJWE2KSwlZDEKCWNtcGkuYgkJJWQxLCZRTkFOCgliZXEubAkJZHN0X3FuYW4KCWJyYS5sCQlzcmNfcW5hbgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIG5vcm0oKTogbm9ybWFsaXplIHRoZSBtYW50aXNzYSBvZiBhbiBleHRlbmRlZCBwcmVjaXNpb24gaW5wdXQuIHRoZQkjCiMJICBpbnB1dCBvcGVyYW5kIHNob3VsZCBub3QgYmUgbm9ybWFsaXplZCBhbHJlYWR5LgkJIwojCQkJCQkJCQkJIwojIFhERUYgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgkjCiMJbm9ybSgpCQkJCQkJCQkjCiMJCQkJCQkJCQkjCiMgWFJFRiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICMKIwlub25lCQkJCQkJCQkjCiMJCQkJCQkJCQkjCiMgSU5QVVQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICMKIwlhMCA9IHBvaW50ZXIgZnAgZXh0ZW5kZWQgcHJlY2lzaW9uIG9wZXJhbmQgdG8gbm9ybWFsaXplCQkjCiMJCQkJCQkJCQkjCiMgT1VUUFVUICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICMKIwlkMCA9IG51bWJlciBvZiBiaXQgcG9zaXRpb25zIHRoZSBtYW50aXNzYSB3YXMgc2hpZnRlZAkJIwojCWEwID0gdGhlIGlucHV0IG9wZXJhbmQncyBtYW50aXNzYSBpcyBub3JtYWxpemVkOyB0aGUgZXhwb25lbnQJIwojCSAgICAgaXMgdW5jaGFuZ2VkLgkJCQkJCSMKIwkJCQkJCQkJCSMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoJZ2xvYmFsCQlub3JtCm5vcm06Cgltb3YubAkJJWQyLCAtKCVzcCkJCSMgY3JlYXRlIHNvbWUgdGVtcCByZWdzCgltb3YubAkJJWQzLCAtKCVzcCkKCgltb3YubAkJRlRFTVBfSEkoJWEwKSwgJWQwCSMgbG9hZCBoaShtYW50aXNzYSkKCW1vdi5sCQlGVEVNUF9MTyglYTApLCAlZDEJIyBsb2FkIGxvKG1hbnRpc3NhKQoKCWJmZmZvCQklZDB7JjA6JjMyfSwgJWQyCSMgaG93IG1hbnkgcGxhY2VzIHRvIHNoaWZ0PwoJYmVxLmIJCW5vcm1fbG8JCQkjIGhpKG1hbikgaXMgYWxsIHplcm9lcyEKCm5vcm1faGk6Cglsc2wubAkJJWQyLCAlZDAJCSMgbGVmdCBzaGlmdCBoaShtYW4pCgliZmV4dHUJCSVkMXsmMDolZDJ9LCAlZDMJIyBleHRyYWN0IGxvIGJpdHMKCglvci5sCQklZDMsICVkMAkJIyBjcmVhdGUgaGkobWFuKQoJbHNsLmwJCSVkMiwgJWQxCQkjIGNyZWF0ZSBsbyhtYW4pCgoJbW92LmwJCSVkMCwgRlRFTVBfSEkoJWEwKQkjIHN0b3JlIG5ldyBoaShtYW4pCgltb3YubAkJJWQxLCBGVEVNUF9MTyglYTApCSMgc3RvcmUgbmV3IGxvKG1hbikKCgltb3YubAkJJWQyLCAlZDAJCSMgcmV0dXJuIHNoaWZ0IGFtb3VudAoKCW1vdi5sCQkoJXNwKSssICVkMwkJIyByZXN0b3JlIHRlbXAgcmVncwoJbW92LmwJCSglc3ApKywgJWQyCgoJcnRzCgpub3JtX2xvOgoJYmZmZm8JCSVkMXsmMDomMzJ9LCAlZDIJIyBob3cgbWFueSBwbGFjZXMgdG8gc2hpZnQ/Cglsc2wubAkJJWQyLCAlZDEJCSMgc2hpZnQgbG8obWFuKQoJYWRkLmwJCSYzMiwgJWQyCQkjIGFkZCAzMiB0byBzaGZ0IGFtb3VudAoKCW1vdi5sCQklZDEsIEZURU1QX0hJKCVhMCkJIyBzdG9yZSBoaShtYW4pCgljbHIubAkJRlRFTVBfTE8oJWEwKQkJIyBsbyhtYW4pIGlzIG5vdyB6ZXJvCgoJbW92LmwJCSVkMiwgJWQwCQkjIHJldHVybiBzaGlmdCBhbW91bnQKCgltb3YubAkJKCVzcCkrLCAlZDMJCSMgcmVzdG9yZSB0ZW1wIHJlZ3MKCW1vdi5sCQkoJXNwKSssICVkMgoKCXJ0cwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHVubm9ybV9maXgoKTogLSBjaGFuZ2VzIGFuIFVOTk9STSB0byBvbmUgb2YgTk9STSwgREVOT1JNLCBvciBaRVJPCSMKIwkJLSByZXR1cm5zIGNvcnJlc3BvbmRpbmcgb3B0eXBlIHRhZwkJCSMKIwkJCQkJCQkJCSMKIyBYREVGICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioJIwojCXVubm9ybV9maXgoKQkJCQkJCQkjCiMJCQkJCQkJCQkjCiMgWFJFRiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICMKIwlub3JtKCkgLSBub3JtYWxpemUgdGhlIG1hbnRpc3NhCQkJCQkjCiMJCQkJCQkJCQkjCiMgSU5QVVQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICMKIwlhMCA9IHBvaW50ZXIgdG8gdW5ub3JtYWxpemVkIGV4dGVuZGVkIHByZWNpc2lvbiBudW1iZXIJCSMKIwkJCQkJCQkJCSMKIyBPVVRQVVQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogIwojCWQwID0gb3B0eXBlIHRhZyAtIGlzIGNvcnJlY3RlZCB0byBvbmUgb2YgTk9STSwgREVOT1JNLCBvciBaRVJPCSMKIwlhMCA9IGlucHV0IG9wZXJhbmQgaGFzIGJlZW4gY29udmVydGVkIHRvIGEgbm9ybSwgZGVub3JtLCBvcgkjCiMJICAgICB6ZXJvOyBib3RoIHRoZSBleHBvbmVudCBhbmQgbWFudGlzc2EgYXJlIGNoYW5nZWQuCQkjCiMJCQkJCQkJCQkjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCglnbG9iYWwJCXVubm9ybV9maXgKdW5ub3JtX2ZpeDoKCWJmZmZvCQlGVEVNUF9ISSglYTApeyYwOiYzMn0sICVkMCAjIGhvdyBtYW55IHNoaWZ0cyBhcmUgbmVlZGVkPwoJYm5lLmIJCXVubm9ybV9zaGlmdAkJIyBoaShtYW4pIGlzIG5vdCBhbGwgemVyb2VzCgojCiMgaGkobWFuKSBpcyBhbGwgemVyb2VzIHNvIHNlZSBpZiBhbnkgYml0cyBpbiBsbyhtYW4pIGFyZSBzZXQKIwp1bm5vcm1fY2hrX2xvOgoJYmZmZm8JCUZURU1QX0xPKCVhMCl7JjA6JjMyfSwgJWQwICMgaXMgb3BlcmFuZCByZWFsbHkgYSB6ZXJvPwoJYmVxLncJCXVubm9ybV96ZXJvCQkjIHllcwoKCWFkZC53CQkmMzIsICVkMAkJIyBubzsgZml4IHNoaWZ0IGRpc3RhbmNlCgojCiMgZDAgPSAjIHNoaWZ0cyBuZWVkZWQgZm9yIGNvbXBsZXRlIG5vcm1hbGl6YXRpb24KIwp1bm5vcm1fc2hpZnQ6CgljbHIubAkJJWQxCQkJIyBjbGVhciB0b3Agd29yZAoJbW92LncJCUZURU1QX0VYKCVhMCksICVkMQkjIGV4dHJhY3QgZXhwb25lbnQKCWFuZC53CQkmMHg3ZmZmLCAlZDEJCSMgc3RyaXAgb2ZmIHNnbgoKCWNtcC53CQklZDAsICVkMQkJIyB3aWxsIGRlbm9ybSBwdXNoIGV4cCA8IDA/CgliZ3QuYgkJdW5ub3JtX25ybV96ZXJvCQkjIHllczsgZGVub3JtIG9ubHkgdW50aWwgZXhwID0gMAoKIwojIGV4cG9uZW50IHdvdWxkIG5vdCBnbyA8IDAuIHRoZXJlZm9yZSwgbnVtYmVyIHN0YXlzIG5vcm1hbGl6ZWQKIwoJc3ViLncJCSVkMCwgJWQxCQkjIHNoaWZ0IGV4cG9uZW50IHZhbHVlCgltb3YudwkJRlRFTVBfRVgoJWEwKSwgJWQwCSMgbG9hZCBvbGQgZXhwb25lbnQKCWFuZC53CQkmMHg4MDAwLCAlZDAJCSMgc2F2ZSBvbGQgc2lnbgoJb3IudwkJJWQwLCAlZDEJCSMge3NnbixuZXcgZXhwfQoJbW92LncJCSVkMSwgRlRFTVBfRVgoJWEwKQkjIGluc2VydCBuZXcgZXhwb25lbnQKCglic3IubAkJbm9ybQkJCSMgbm9ybWFsaXplIFVOTk9STQoKCW1vdi5iCQkmTk9STSwgJWQwCQkjIHJldHVybiBuZXcgb3B0eXBlIHRhZwoJcnRzCgojCiMgZXhwb25lbnQgd291bGQgZ28gPCAwLCBzbyBvbmx5IGRlbm9ybWFsaXplIHVudGlsIGV4cCA9IDAKIwp1bm5vcm1fbnJtX3plcm86CgljbXAuYgkJJWQxLCAmMzIJCSMgaXMgZXhwIDw9IDMyPwoJYmd0LmIJCXVubm9ybV9ucm1femVyb19scmcJIyBubzsgZ28gaGFuZGxlIGxhcmdlIGV4cG9uZW50CgoJYmZleHR1CQlGVEVNUF9ISSglYTApeyVkMTomMzJ9LCAlZDAgIyBleHRyYWN0IG5ldyBoaShtYW4pCgltb3YubAkJJWQwLCBGVEVNUF9ISSglYTApCSMgc2F2ZSBuZXcgaGkobWFuKQoKCW1vdi5sCQlGVEVNUF9MTyglYTApLCAlZDAJIyBmZXRjaCBvbGQgbG8obWFuKQoJbHNsLmwJCSVkMSwgJWQwCQkjIGV4dHJhY3QgbmV3IGxvKG1hbikKCW1vdi5sCQklZDAsIEZURU1QX0xPKCVhMCkJIyBzYXZlIG5ldyBsbyhtYW4pCgoJYW5kLncJCSYweDgwMDAsIEZURU1QX0VYKCVhMCkJIyBzZXQgZXhwID0gMAoKCW1vdi5iCQkmREVOT1JNLCAlZDAJCSMgcmV0dXJuIG5ldyBvcHR5cGUgdGFnCglydHMKCiMKIyBvbmx5IG1hbnRpc3NhIGJpdHMgc2V0IGFyZSBpbiBsbyhtYW4pCiMKdW5ub3JtX25ybV96ZXJvX2xyZzoKCXN1Yi53CQkmMzIsICVkMQkJIyBhZGp1c3Qgc2hmdCBhbXQgYnkgMzIKCgltb3YubAkJRlRFTVBfTE8oJWEwKSwgJWQwCSMgZmV0Y2ggb2xkIGxvKG1hbikKCWxzbC5sCQklZDEsICVkMAkJIyBsZWZ0IHNoaWZ0IGxvKG1hbikKCgltb3YubAkJJWQwLCBGVEVNUF9ISSglYTApCSMgc3RvcmUgbmV3IGhpKG1hbikKCWNsci5sCQlGVEVNUF9MTyglYTApCQkjIGxvKG1hbikgPSAwCgoJYW5kLncJCSYweDgwMDAsIEZURU1QX0VYKCVhMCkJIyBzZXQgZXhwID0gMAoKCW1vdi5iCQkmREVOT1JNLCAlZDAJCSMgcmV0dXJuIG5ldyBvcHR5cGUgdGFnCglydHMKCiMKIyB3aG9sZSBtYW50aXNzYSBpcyB6ZXJvIHNvIHRoaXMgVU5OT1JNIGlzIGFjdHVhbGx5IGEgemVybwojCnVubm9ybV96ZXJvOgoJYW5kLncJCSYweDgwMDAsIEZURU1QX0VYKCVhMCkJIyBmb3JjZSBleHBvbmVudCB0byB6ZXJvCgoJbW92LmIJCSZaRVJPLCAlZDAJCSMgZml4IG9wdHlwZSB0YWcKCXJ0cwo=