LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiogqSAyMDE1IE1pY3JvY2hpcCBUZWNobm9sb2d5IEluYy4gYW5kIGl0cyBzdWJzaWRpYXJpZXMuCiogWW91IG1heSB1c2UgdGhpcyBzb2Z0d2FyZSBhbmQgYW55IGRlcml2YXRpdmVzIGV4Y2x1c2l2ZWx5IHdpdGgKKiBNaWNyb2NoaXAgcHJvZHVjdHMuCiogVEhJUyBTT0ZUV0FSRSBJUyBTVVBQTElFRCBCWSBNSUNST0NISVAgIkFTIElTIi4KKiBOTyBXQVJSQU5USUVTLCBXSEVUSEVSIEVYUFJFU1MsIElNUExJRUQgT1IgU1RBVFVUT1JZLCBBUFBMWSBUTyBUSElTIFNPRlRXQVJFLAoqIElOQ0xVRElORyBBTlkgSU1QTElFRCBXQVJSQU5USUVTIE9GIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSwKKiBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsIE9SIElUUyBJTlRFUkFDVElPTiBXSVRIIE1JQ1JPQ0hJUAoqIFBST0RVQ1RTLCBDT01CSU5BVElPTiBXSVRIIEFOWSBPVEhFUiBQUk9EVUNUUywgT1IgVVNFIElOIEFOWSBBUFBMSUNBVElPTi4KKiBJTiBOTyBFVkVOVCBXSUxMIE1JQ1JPQ0hJUCBCRSBMSUFCTEUgRk9SIEFOWSBJTkRJUkVDVCwgU1BFQ0lBTCwgUFVOSVRJVkUsCiogSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIExPU1MsIERBTUFHRSwgQ09TVCBPUiBFWFBFTlNFIE9GIEFOWSBLSU5ECiogV0hBVFNPRVZFUiBSRUxBVEVEIFRPIFRIRSBTT0ZUV0FSRSwgSE9XRVZFUiBDQVVTRUQsIEVWRU4gSUYgTUlDUk9DSElQIEhBUwoqIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT1IgVEhFIERBTUFHRVMgQVJFIEZPUkVTRUVBQkxFLgoqIFRPIFRIRSBGVUxMRVNUIEVYVEVOVCBBTExPV0VEIEJZIExBVywgTUlDUk9DSElQJ1MgVE9UQUwgTElBQklMSVRZIE9OIEFMTAoqIENMQUlNUyBJTiBBTlkgV0FZIFJFTEFURUQgVE8gVEhJUyBTT0ZUV0FSRSBXSUxMIE5PVCBFWENFRUQgVEhFIEFNT1VOVCBPRgoqIEZFRVMsIElGIEFOWSwgVEhBVCBZT1UgSEFWRSBQQUlEIERJUkVDVExZIFRPIE1JQ1JPQ0hJUCBGT1IgVEhJUyBTT0ZUV0FSRS4KKiBNSUNST0NISVAgUFJPVklERVMgVEhJUyBTT0ZUV0FSRSBDT05ESVRJT05BTExZIFVQT04gWU9VUiBBQ0NFUFRBTkNFCiogT0YgVEhFU0UgVEVSTVMuCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKVmVyc2lvbiBDb250cm9sIEluZm9ybWF0aW9uIChQZXJmb3JjZSkKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiRSZXZpc2lvbjogIzEgJCAKJERhdGVUaW1lOiAyMDE2LzA0LzA4IDEwOjE4OjI4ICQgCiRBdXRob3I6IHByYW1hbnMgJApMYXN0IENoYW5nZTogQ29ycmVjdGVkIHNldmVyYWwgaGVhZGVyIGRlZmluYXRpb25zCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoqIEBmaWxlIGludGVycnVwdC5oCiogXGJyaWVmIEludGVycnVwdCBIZWFkZXIgRmlsZQoqIFxhdXRob3IganZhc2FudGgKKiAKKiBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgSW50ZXJydXB0IE1vZHVsZSBIZWFkZXIgZmlsZSAgCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8qKiBAZGVmZ3JvdXAgSW50ZXJydXB0CiAqICBAewogKi8KCiNpZm5kZWYgX0lOVEVSUlVQVF9ICiNkZWZpbmUgX0lOVEVSUlVQVF9ICgovLyBHSVJRIElEcyBmb3IgRUMgSW50ZXJydXB0IEFnZ3JlZ2F0b3IKZW51bSBNRUNfR0lSUV9JRFMKewogICAgTUVDX0dJUlEwOF9JRCA9IDAsCiAgICBNRUNfR0lSUTA5X0lELCAgICAgICAgICAgICAgICAgIAogICAgTUVDX0dJUlExMF9JRCwgICAgICAgICAgICAgICAgICAKICAgIE1FQ19HSVJRMTFfSUQsICAgICAgICAgICAgICAgICAgCiAgICBNRUNfR0lSUTEyX0lELCAgICAgICAgICAgICAgICAgIAogICAgTUVDX0dJUlExM19JRCwgICAgICAgICAgICAgICAgICAKICAgIE1FQ19HSVJRMTRfSUQsICAgICAgICAgICAgICAgICAgCiAgICBNRUNfR0lSUTE1X0lELCAgICAgICAgICAgICAgICAgIAogICAgTUVDX0dJUlExNl9JRCwgICAgICAgICAgICAgICAgICAKICAgIE1FQ19HSVJRMTdfSUQsICAgICAgICAgICAgICAgICAgCiAgICBNRUNfR0lSUTE4X0lELCAgICAgICAgICAgICAgICAgIAogICAgTUVDX0dJUlExOV9JRCwgICAgICAgICAgICAgICAgICAKICAgIE1FQ19HSVJRMjBfSUQsICAgICAgICAgICAgICAgICAgCiAgICBNRUNfR0lSUTIxX0lELCAgICAgICAgICAgICAgICAgIAogICAgTUVDX0dJUlEyMl9JRCwgICAgICAgICAgICAgICAgICAKICAgIE1FQ19HSVJRMjNfSUQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgIE1FQ19HSVJRX0lEX01BWAp9OwoKLy9CaXRtYXNrIG9mIEdJUlEgaW4gRUNJQSBCbG9jayBSZWdpc3RlcnMKI2RlZmluZSBNRUNfR0lSUTA4X0JJVE1BU0sgICAgICAgICAgKDFVTCA8PCAoTUVDX0dJUlEwOF9JRCArIDgpKQojZGVmaW5lIE1FQ19HSVJRMDlfQklUTUFTSyAgICAgICAgICAoMVVMIDw8IChNRUNfR0lSUTA5X0lEICsgOCkpICAKI2RlZmluZSBNRUNfR0lSUTEwX0JJVE1BU0sgICAgICAgICAgKDFVTCA8PCAoTUVDX0dJUlExMF9JRCArIDgpKSAgCiNkZWZpbmUgTUVDX0dJUlExMV9CSVRNQVNLICAgICAgICAgICgxVUwgPDwgKE1FQ19HSVJRMTFfSUQgKyA4KSkgCiNkZWZpbmUgTUVDX0dJUlExMl9CSVRNQVNLICAgICAgICAgICgxVUwgPDwgKE1FQ19HSVJRMTJfSUQgKyA4KSkgCiNkZWZpbmUgTUVDX0dJUlExM19CSVRNQVNLICAgICAgICAgICgxVUwgPDwgKE1FQ19HSVJRMTNfSUQgKyA4KSkgCiNkZWZpbmUgTUVDX0dJUlExNF9CSVRNQVNLICAgICAgICAgICgxVUwgPDwgKE1FQ19HSVJRMTRfSUQgKyA4KSkgCiNkZWZpbmUgTUVDX0dJUlExNV9CSVRNQVNLICAgICAgICAgICgxVUwgPDwgKE1FQ19HSVJRMTVfSUQgKyA4KSkgCiNkZWZpbmUgTUVDX0dJUlExNl9CSVRNQVNLICAgICAgICAgICgxVUwgPDwgKE1FQ19HSVJRMTZfSUQgKyA4KSkgCiNkZWZpbmUgTUVDX0dJUlExN19CSVRNQVNLICAgICAgICAgICgxVUwgPDwgKE1FQ19HSVJRMTdfSUQgKyA4KSkgCiNkZWZpbmUgTUVDX0dJUlExOF9CSVRNQVNLICAgICAgICAgICgxVUwgPDwgKE1FQ19HSVJRMThfSUQgKyA4KSkgCiNkZWZpbmUgTUVDX0dJUlExOV9CSVRNQVNLICAgICAgICAgICgxVUwgPDwgKE1FQ19HSVJRMTlfSUQgKyA4KSkgCiNkZWZpbmUgTUVDX0dJUlEyMF9CSVRNQVNLICAgICAgICAgICgxVUwgPDwgKE1FQ19HSVJRMjBfSUQgKyA4KSkgCiNkZWZpbmUgTUVDX0dJUlEyMV9CSVRNQVNLICAgICAgICAgICgxVUwgPDwgKE1FQ19HSVJRMjFfSUQgKyA4KSkgCiNkZWZpbmUgTUVDX0dJUlEyMl9CSVRNQVNLICAgICAgICAgICgxVUwgPDwgKE1FQ19HSVJRMjJfSUQgKyA4KSkgCiNkZWZpbmUgTUVDX0dJUlEyM19CSVRNQVNLICAgICAgICAgICgxVUwgPDwgKE1FQ19HSVJRMjNfSUQgKyA4KSkgCgojZGVmaW5lIElOVEVSUlVQVF9NT0RFX0FMTF9BR0dSRUdBVEVEICAgICAgICAoMHUpCiNkZWZpbmUgSU5URVJSVVBUX01PREVfRElSRUNUICAgICAgICAgICAgICAgICgxdSkKCi8vIEJpdCBtYXAgb2YgR0lSUXMgd2hvc2Ugc291cmNlcyBjYW4gYmUgZGlyZWN0bHkgY29ubmVjdGVkIHRvIHRoZSBOVklDCi8vIEdJUlFzIDEyIC0gMTgsIDIzCiNkZWZpbmUgRUNJQV9HSVJRX0RJUkVDVF9CSVRNQVAgICAgICgweDAwODdGMDAwdWwpCgovKgogKiAgbiA9IGJbNzowXSAgID0gemVyby1iYXNlZCBkaXJlY3QgbWFwcGVkIE5WSUMgSUQKICogIG0gPSBiWzE1OjhdICA9IHplcm8tYmFzZWQgYWdncmVnYXRlZCBOVklDIElECiAqICBhID0gYlsyMzoxNl0gPSBibG9jayBBZ2dyZWdhdG9yIHJlZ2lzdGVyIGJsb2NrIElECiAqICBiID0gYlszMToyNF0gPSBibG9jayBiaXQgcG9zaXRpb24gaW4gQWdncmVnYXRvciByZWdpc3RlcnMKKi8KI2RlZmluZSBJUk9VVEUoYixhLG0sbikgCSgoKHVpbnQzMl90KShuKSYweEZGdWwpICsgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgodWludDMyX3QpKG0pJjB4RkZ1bCk8PDh1KSArIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKCh1aW50MzJfdCkoYSktOHVsKSYweDBGKTw8MTZ1KSArIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKHVpbnQzMl90KShiKSYweDFGdWwpPDwyNCkpCgojZGVmaW5lIEVDSUFfTlZJQ19JRF9CSVRQT1MgICAgICAgICAgICAgKDB1KQojZGVmaW5lIEVDSUFfSUFfTlZJQ19JRF9CSVRQT1MgICAgICAgICAgKDh1KQojZGVmaW5lIEVDSUFfR0lSUV9JRF9CSVRQT1MgICAgICAgICAgICAgKDE2dSkKI2RlZmluZSBFQ0lBX0dJUlFfQklUX0JJVFBPUyAgICAgICAgICAgICgyNHUpCgovLwovLyBHSVJRMDgKLy8KI2RlZmluZSBHUElPXzAxNDBfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSgwLDgsNTcsNTcpCiNkZWZpbmUgR1BJT18wMTQxX0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMSw4LDU3LDU3KQojZGVmaW5lIEdQSU9fMDE0Ml9JUk9VVEUgICAgICAgICAgICAgICAgSVJPVVRFKDIsOCw1Nyw1NykKI2RlZmluZSBHUElPXzAxNDNfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSgzLDgsNTcsNTcpCiNkZWZpbmUgR1BJT18wMTQ0X0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoNCw4LDU3LDU3KQojZGVmaW5lIEdQSU9fMDE0NV9JUk9VVEUgICAgICAgICAgICAgICAgSVJPVVRFKDUsOCw1Nyw1NykKI2RlZmluZSBHUElPXzAxNDZfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSg2LDgsNTcsNTcpCiNkZWZpbmUgR1BJT18wMTQ3X0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoNyw4LDU3LDU3KQovLwojZGVmaW5lIEdQSU9fMDE1MF9JUk9VVEUgICAgICAgICAgICAgICAgSVJPVVRFKDgsOCw1Nyw1NykKI2RlZmluZSBHUElPXzAxNTFfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSg5LDgsNTcsNTcpCiNkZWZpbmUgR1BJT18wMTUyX0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMTAsOCw1Nyw1NykKI2RlZmluZSBHUElPXzAxNTNfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSgxMSw4LDU3LDU3KQojZGVmaW5lIEdQSU9fMDE1NF9JUk9VVEUgICAgICAgICAgICAgICAgSVJPVVRFKDEyLDgsNTcsNTcpCiNkZWZpbmUgR1BJT18wMTU1X0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMTMsOCw1Nyw1NykKI2RlZmluZSBHUElPXzAxNTZfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSgxNCw4LDU3LDU3KQojZGVmaW5lIEdQSU9fMDE1N19JUk9VVEUgICAgICAgICAgICAgICAgSVJPVVRFKDE1LDgsNTcsNTcpCi8vCiNkZWZpbmUgR1BJT18wMTYwX0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMTYsOCw1Nyw1NykKI2RlZmluZSBHUElPXzAxNjFfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSgxNyw4LDU3LDU3KQojZGVmaW5lIEdQSU9fMDE2Ml9JUk9VVEUgICAgICAgICAgICAgICAgSVJPVVRFKDE4LDgsNTcsNTcpCiNkZWZpbmUgR1BJT18wMTYzX0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMTksOCw1Nyw1NykKI2RlZmluZSBHUElPXzAxNjRfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSgyMCw4LDU3LDU3KQojZGVmaW5lIEdQSU9fMDE2NV9JUk9VVEUgICAgICAgICAgICAgICAgSVJPVVRFKDIxLDgsNTcsNTcpCgovLwovLyBHSVJRMDkKLy8KI2RlZmluZSBHUElPXzAxMDBfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSgwLDksNTgsNTgpCiNkZWZpbmUgR1BJT18wMTAxX0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMSw5LDU4LDU4KQojZGVmaW5lIEdQSU9fMDEwMl9JUk9VVEUgICAgICAgICAgICAgICAgSVJPVVRFKDIsOSw1OCw1OCkKI2RlZmluZSBHUElPXzAxMDNfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSgzLDksNTgsNTgpCiNkZWZpbmUgR1BJT18wMTA0X0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoNCw5LDU4LDU4KQojZGVmaW5lIEdQSU9fMDEwNV9JUk9VVEUgICAgICAgICAgICAgICAgSVJPVVRFKDUsOSw1OCw1OCkKI2RlZmluZSBHUElPXzAxMDZfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSg2LDksNTgsNTgpCiNkZWZpbmUgR1BJT18wMTA3X0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoNyw5LDU4LDU4KQovLwojZGVmaW5lIEdQSU9fMDExMF9JUk9VVEUgICAgICAgICAgICAgICAgSVJPVVRFKDgsOSw1OCw1OCkKI2RlZmluZSBHUElPXzAxMTFfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSg5LDksNTgsNTgpCiNkZWZpbmUgR1BJT18wMTEyX0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMTAsOSw1OCw1OCkKI2RlZmluZSBHUElPXzAxMTNfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSgxMSw5LDU4LDU4KQojZGVmaW5lIEdQSU9fMDExNF9JUk9VVEUgICAgICAgICAgICAgICAgSVJPVVRFKDEyLDksNTgsNTgpCiNkZWZpbmUgR1BJT18wMTE1X0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMTMsOSw1OCw1OCkKI2RlZmluZSBHUElPXzAxMTZfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSgxNCw5LDU4LDU4KQojZGVmaW5lIEdQSU9fMDExN19JUk9VVEUgICAgICAgICAgICAgICAgSVJPVVRFKDE1LDksNTgsNTgpCi8vCiNkZWZpbmUgR1BJT18wMTIwX0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMTYsOSw1OCw1OCkKI2RlZmluZSBHUElPXzAxMjFfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSgxNyw5LDU4LDU4KQojZGVmaW5lIEdQSU9fMDEyMl9JUk9VVEUgICAgICAgICAgICAgICAgSVJPVVRFKDE4LDksNTgsNTgpCiNkZWZpbmUgR1BJT18wMTI0X0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMjAsOSw1OCw1OCkKI2RlZmluZSBHUElPXzAxMjVfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSgyMSw5LDU4LDU4KQojZGVmaW5lIEdQSU9fMDEyNl9JUk9VVEUgICAgICAgICAgICAgICAgSVJPVVRFKDIyLDksNTgsNTgpCiNkZWZpbmUgR1BJT18wMTI3X0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMjMsOSw1OCw1OCkKLy8KI2RlZmluZSBHUElPXzAxMzBfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSgyNCw5LDU4LDU4KQojZGVmaW5lIEdQSU9fMDEzMV9JUk9VVEUgICAgICAgICAgICAgICAgSVJPVVRFKDI1LDksNTgsNTgpCiNkZWZpbmUgR1BJT18wMTMyX0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMjYsOSw1OCw1OCkKI2RlZmluZSBHUElPXzAxMzNfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSgyNyw5LDU4LDU4KQojZGVmaW5lIEdQSU9fMDEzNF9JUk9VVEUgICAgICAgICAgICAgICAgSVJPVVRFKDI4LDksNTgsNTgpCiNkZWZpbmUgR1BJT18wMTM1X0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMjksOSw1OCw1OCkKI2RlZmluZSBHUElPXzAxMzZfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSgzMCw5LDU4LDU4KQoKLy8KLy8gR0lSUTEwCi8vCiNkZWZpbmUgR1BJT18wMDQwX0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMCwxMCw1OSw1OSkKI2RlZmluZSBHUElPXzAwNDFfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSgxLDEwLDU5LDU5KQojZGVmaW5lIEdQSU9fMDA0Ml9JUk9VVEUgICAgICAgICAgICAgICAgSVJPVVRFKDIsMTAsNTksNTkpCiNkZWZpbmUgR1BJT18wMDQzX0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMywxMCw1OSw1OSkKI2RlZmluZSBHUElPXzAwNDRfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSg0LDEwLDU5LDU5KQojZGVmaW5lIEdQSU9fMDA0NV9JUk9VVEUgICAgICAgICAgICAgICAgSVJPVVRFKDUsMTAsNTksNTkpCiNkZWZpbmUgR1BJT18wMDQ2X0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoNiwxMCw1OSw1OSkKI2RlZmluZSBHUElPXzAwNDdfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSg3LDEwLDU5LDU5KQovLwojZGVmaW5lIEdQSU9fMDA1MF9JUk9VVEUgICAgICAgICAgICAgICAgSVJPVVRFKDgsMTAsNTksNTkpCiNkZWZpbmUgR1BJT18wMDUxX0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoOSwxMCw1OSw1OSkKI2RlZmluZSBHUElPXzAwNTJfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSgxMCwxMCw1OSw1OSkKI2RlZmluZSBHUElPXzAwNTNfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSgxMSwxMCw1OSw1OSkKI2RlZmluZSBHUElPXzAwNTRfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSgxMiwxMCw1OSw1OSkKI2RlZmluZSBHUElPXzAwNTVfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSgxMywxMCw1OSw1OSkKI2RlZmluZSBHUElPXzAwNTZfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSgxNCwxMCw1OSw1OSkKI2RlZmluZSBHUElPXzAwNTdfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSgxNSwxMCw1OSw1OSkKLy8KI2RlZmluZSBHUElPXzAwNjBfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSgxNiwxMCw1OSw1OSkKI2RlZmluZSBHUElPXzAwNjFfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSgxNywxMCw1OSw1OSkKI2RlZmluZSBHUElPXzAwNjJfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSgxOCwxMCw1OSw1OSkKI2RlZmluZSBHUElPXzAwNjNfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSgxOSwxMCw1OSw1OSkKI2RlZmluZSBHUElPXzAwNjRfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSgyMCwxMCw1OSw1OSkKI2RlZmluZSBHUElPXzAwNjVfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSgyMSwxMCw1OSw1OSkKI2RlZmluZSBHUElPXzAwNjZfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSgyMiwxMCw1OSw1OSkKI2RlZmluZSBHUElPXzAwNjdfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSgyMywxMCw1OSw1OSkKCi8vCi8vIEdJUlExMQovLwojZGVmaW5lIEdQSU9fMDAwMF9JUk9VVEUgICAgICAgICAgICAgICAgSVJPVVRFKDAsMTEsNjAsNjApCiNkZWZpbmUgR1BJT18wMDAxX0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMSwxMSw2MCw2MCkKI2RlZmluZSBHUElPXzAwMDJfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSgyLDExLDYwLDYwKQojZGVmaW5lIEdQSU9fMDAwM19JUk9VVEUgICAgICAgICAgICAgICAgSVJPVVRFKDMsMTEsNjAsNjApCiNkZWZpbmUgR1BJT18wMDA0X0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoNCwxMSw2MCw2MCkKI2RlZmluZSBHUElPXzAwMDVfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSg1LDExLDYwLDYwKQojZGVmaW5lIEdQSU9fMDAwNl9JUk9VVEUgICAgICAgICAgICAgICAgSVJPVVRFKDYsMTEsNjAsNjApCiNkZWZpbmUgR1BJT18wMDA3X0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoNywxMSw2MCw2MCkKLy8KI2RlZmluZSBHUElPXzAwMTBfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSg4LDExLDYwLDYwKQojZGVmaW5lIEdQSU9fMDAxMV9JUk9VVEUgICAgICAgICAgICAgICAgSVJPVVRFKDksMTEsNjAsNjApCiNkZWZpbmUgR1BJT18wMDEyX0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMTAsMTEsNjAsNjApCiNkZWZpbmUgR1BJT18wMDEzX0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMTEsMTEsNjAsNjApCiNkZWZpbmUgR1BJT18wMDE0X0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMTIsMTEsNjAsNjApCiNkZWZpbmUgR1BJT18wMDE1X0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMTMsMTEsNjAsNjApCiNkZWZpbmUgR1BJT18wMDE2X0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMTQsMTEsNjAsNjApCiNkZWZpbmUgR1BJT18wMDE3X0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMTUsMTEsNjAsNjApCi8vCiNkZWZpbmUgR1BJT18wMDIwX0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMTYsMTEsNjAsNjApCiNkZWZpbmUgR1BJT18wMDIxX0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMTcsMTEsNjAsNjApCiNkZWZpbmUgR1BJT18wMDIyX0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMTgsMTEsNjAsNjApCiNkZWZpbmUgR1BJT18wMDIzX0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMTksMTEsNjAsNjApCiNkZWZpbmUgR1BJT18wMDI0X0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMjAsMTEsNjAsNjApCiNkZWZpbmUgR1BJT18wMDI1X0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMjEsMTEsNjAsNjApCiNkZWZpbmUgR1BJT18wMDI2X0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMjIsMTEsNjAsNjApCiNkZWZpbmUgR1BJT18wMDI3X0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMjMsMTEsNjAsNjApCi8vCiNkZWZpbmUgR1BJT18wMDMwX0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMjQsMTEsNjAsNjApCiNkZWZpbmUgR1BJT18wMDMxX0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMjUsMTEsNjAsNjApCiNkZWZpbmUgR1BJT18wMDMyX0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMjYsMTEsNjAsNjApCiNkZWZpbmUgR1BJT18wMDMzX0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMjcsMTEsNjAsNjApCiNkZWZpbmUgR1BJT18wMDM0X0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMjgsMTEsNjAsNjApCiNkZWZpbmUgR1BJT18wMDM1X0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMjksMTEsNjAsNjApCiNkZWZpbmUgR1BJT18wMDM2X0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMzAsMTEsNjAsNjApCgovLwovLyBHSVJRMTIKLy8KI2RlZmluZSBTTUIwX0lST1VURSAgICAgICAgICAgICAgICAgICAgIElST1VURSgwLDEyLDYxLDApCiNkZWZpbmUgU01CMV9JUk9VVEUgICAgICAgICAgICAgICAgICAgICBJUk9VVEUoMSwxMiw2MSwxKQojZGVmaW5lIFNNQjJfSVJPVVRFICAgICAgICAgICAgICAgICAgICAgSVJPVVRFKDIsMTIsNjEsMikKI2RlZmluZSBTTUIzX0lST1VURSAgICAgICAgICAgICAgICAgICAgIElST1VURSgzLDEyLDYxLDMpCiNkZWZpbmUgSTJDMF8wX1dBS0VfSVJPVVRFICAgICAgICAgICAgICBJUk9VVEUoNCwxMiw2MSw2MSkKI2RlZmluZSBJMkMwXzFfV0FLRV9JUk9VVEUgICAgICAgICAgICAgIElST1VURSg1LDEyLDYxLDYxKQojZGVmaW5lIEkyQzJfMF9XQUtFX0lST1VURSAgICAgICAgICAgICAgSVJPVVRFKDYsMTIsNjEsNjEpCiNkZWZpbmUgSTJDMV8wX1dBS0VfSVJPVVRFICAgICAgICAgICAgICBJUk9VVEUoNywxMiw2MSw2MSkKI2RlZmluZSBJMkMzXzBfV0FLRV9JUk9VVEUgICAgICAgICAgICAgIElST1VURSg4LDEyLDYxLDYxKQoKLy8KLy8gR0lSUTEzCi8vCiNkZWZpbmUgRE1BMF9JUk9VVEUgICAgICAgICAgICAgICAgICAgICBJUk9VVEUoMTYsMTMsNjIsNCkKI2RlZmluZSBETUExX0lST1VURSAgICAgICAgICAgICAgICAgICAgIElST1VURSgxNywxMyw2Miw1KQojZGVmaW5lIERNQTJfSVJPVVRFICAgICAgICAgICAgICAgICAgICAgSVJPVVRFKDE4LDEzLDYyLDYpCiNkZWZpbmUgRE1BM19JUk9VVEUgICAgICAgICAgICAgICAgICAgICBJUk9VVEUoMTksMTMsNjIsNykKI2RlZmluZSBETUE0X0lST1VURSAgICAgICAgICAgICAgICAgICAgIElST1VURSgyMCwxMyw2Miw4KQojZGVmaW5lIERNQTVfSVJPVVRFICAgICAgICAgICAgICAgICAgICAgSVJPVVRFKDIxLDEzLDYyLDkpCiNkZWZpbmUgRE1BNl9JUk9VVEUgICAgICAgICAgICAgICAgICAgICBJUk9VVEUoMjIsMTMsNjIsMTApCiNkZWZpbmUgRE1BN19JUk9VVEUgICAgICAgICAgICAgICAgICAgICBJUk9VVEUoMjMsMTMsNjIsMTEpCiNkZWZpbmUgRE1BOF9JUk9VVEUgICAgICAgICAgICAgICAgICAgICBJUk9VVEUoMjQsMTMsNjIsODEpCiNkZWZpbmUgRE1BOV9JUk9VVEUgICAgICAgICAgICAgICAgICAgICBJUk9VVEUoMjUsMTMsNjIsODIpCiNkZWZpbmUgRE1BMTBfSVJPVVRFICAgICAgICAgICAgICAgICAgICBJUk9VVEUoMjYsMTMsNjIsODMpCiNkZWZpbmUgRE1BMTFfSVJPVVRFICAgICAgICAgICAgICAgICAgICBJUk9VVEUoMjcsMTMsNjIsODQpCgovLwovLyBHSVJRMTQKLy8KI2RlZmluZSBMUENfQkVSUl9JUk9VVEUgICAgICAgICAgICAgICAgIElST1VURSgyLDE0LDYzLDEyKQoKLy8KLy8gR0lSUTE1Ci8vCiNkZWZpbmUgVUFSVDBfSVJPVVRFICAgICAgICAgICAgICAgICAgICBJUk9VVEUoMCwxNSw2NCwxMykKI2RlZmluZSBFTUkwX0lST1VURSAgICAgICAgICAgICAgICAgICAgIElST1VURSgyLDE1LDY0LDE0KQojZGVmaW5lIEFDUElfRUMwX0lCRl9JUk9VVEUgICAgICAgICAgICAgSVJPVVRFKDYsMTUsNjQsMTUpCiNkZWZpbmUgQUNQSV9FQzBfT0JGX0lST1VURSAgICAgICAgICAgICBJUk9VVEUoNywxNSw2NCwxNikKI2RlZmluZSBBQ1BJX0VDMV9JQkZfSVJPVVRFICAgICAgICAgICAgIElST1VURSg4LDE1LDY0LDE3KQojZGVmaW5lIEFDUElfRUMxX09CRl9JUk9VVEUgICAgICAgICAgICAgSVJPVVRFKDksMTUsNjQsMTgpCiNkZWZpbmUgQUNQSV9QTTFfQ1RMX0lST1VURSAgICAgICAgICAgICBJUk9VVEUoMTAsMTUsNjQsMTkpCiNkZWZpbmUgQUNQSV9QTTFfRU5fSVJPVVRFICAgICAgICAgICAgICBJUk9VVEUoMTEsMTUsNjQsMjApCiNkZWZpbmUgQUNQSV9QTTFfU1RTX0lST1VURSAgICAgICAgICAgICBJUk9VVEUoMTIsMTUsNjQsMjEpCiNkZWZpbmUgRU04MDQyX09CRl9JUk9VVEUgICAgICAgICAgICAgICBJUk9VVEUoMTMsMTUsNjQsMjIpCiNkZWZpbmUgRU04MDQyX0lCRl9JUk9VVEUgICAgICAgICAgICAgICBJUk9VVEUoMTQsMTUsNjQsMjMpCiNkZWZpbmUgTUJPWF9JUk9VVEUgICAgICAgICAgICAgICAgICAgICBJUk9VVEUoMTUsMTUsNjQsMjQpCiNkZWZpbmUgTUJPWF9EQVRBX0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMTYsMTUsNjQsNDApIAoKLy8KLy8gR0lSUTE2Ci8vCiNkZWZpbmUgUEVDSV9JUk9VVEUgICAgICAgICAgICAgICAgICAgICBJUk9VVEUoMywxNiw2NSwyNSkKCi8vCi8vIEdJUlExNwovLwojZGVmaW5lIFRBQ0gwX0lST1VURSAgICAgICAgICAgICAgICAgICAgSVJPVVRFKDAsMTcsNjYsMjYpCiNkZWZpbmUgVEFDSDFfSVJPVVRFICAgICAgICAgICAgICAgICAgICBJUk9VVEUoMSwxNyw2NiwyNykKI2RlZmluZSBQUzJfMF9XQUtFX0lST1VURSAgICAgICAgICAgICAgIElST1VURSgyLDE3LDY2LDY2KQojZGVmaW5lIFBTMl8xX1dBS0VfSVJPVVRFICAgICAgICAgICAgICAgSVJPVVRFKDMsMTcsNjYsNjYpCiNkZWZpbmUgUFMyXzJfV0FLRV9JUk9VVEUgICAgICAgICAgICAgICBJUk9VVEUoNCwxNyw2Niw2NikKI2RlZmluZSBQUzJfM19XQUtFX0lST1VURSAgICAgICAgICAgICAgIElST1VURSg1LDE3LDY2LDY2KQojZGVmaW5lIEJDX1dBS0VfSVJPVVRFICAgICAgICAgICAgICAgICAgSVJPVVRFKDYsMTcsNjYsNjYpCiNkZWZpbmUgQURDX1NOR0xfSVJPVVRFICAgICAgICAgICAgICAgICBJUk9VVEUoMTAsMTcsNjYsMjgpCiNkZWZpbmUgQURDX1JQVF9JUk9VVEUgICAgICAgICAgICAgICAgICBJUk9VVEUoMTEsMTcsNjYsMjkpCiNkZWZpbmUgQURDMlBXTTFfSVJPVVRFICAgICAgICAgICAgICAgICBJUk9VVEUoMTIsMTcsNjYsMzApCiNkZWZpbmUgQURDMlBXTTJfSVJPVVRFICAgICAgICAgICAgICAgICBJUk9VVEUoMTMsMTcsNjYsMzEpCiNkZWZpbmUgUFMyXzBfSVJPVVRFICAgICAgICAgICAgICAgICAgICBJUk9VVEUoMTQsMTcsNjYsMzIpCiNkZWZpbmUgUFMyXzFfSVJPVVRFICAgICAgICAgICAgICAgICAgICBJUk9VVEUoMTUsMTcsNjYsMzMpCiNkZWZpbmUgUFMyXzJfSVJPVVRFICAgICAgICAgICAgICAgICAgICBJUk9VVEUoMTYsMTcsNjYsMzQpCiNkZWZpbmUgUFMyXzNfSVJPVVRFICAgICAgICAgICAgICAgICAgICBJUk9VVEUoMTcsMTcsNjYsMzUpCiNkZWZpbmUgUlRDX0lST1VURSAgICAgICAgICAgICAgICAgICAgICBJUk9VVEUoMTgsMTcsNjYsOTEpCiNkZWZpbmUgUlRDX0FMQVJNX0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMTksMTcsNjYsOTIpCiNkZWZpbmUgSFRJTUVSX0lST1VURSAgICAgICAgICAgICAgICAgICBJUk9VVEUoMjAsMTcsNjYsMzgpCiNkZWZpbmUgS1NDX0lST1VURSAgICAgICAgICAgICAgICAgICAgICBJUk9VVEUoMjEsMTcsNjYsMzkpCiNkZWZpbmUgS1NDX1dBS0VfSVJPVVRFICAgICAgICAgICAgICAgICBJUk9VVEUoMjIsMTcsNjYsNjYpCiNkZWZpbmUgUlBNX1NUQUxMX0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMjMsMTcsNjYsNDEpCiNkZWZpbmUgUlBNX1NQSU5fSVJPVVRFICAgICAgICAgICAgICAgICBJUk9VVEUoMjQsMTcsNjYsNDIpCiNkZWZpbmUgUEZSX0lST1VURSAgICAgICAgICAgICAgICAgICAgICBJUk9VVEUoMjUsMTcsNjYsNDMpCiNkZWZpbmUgUFdNX1dEVF8wX0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMjYsMTcsNjYsNDQpCiNkZWZpbmUgUFdNX1dEVF8xX0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMjcsMTcsNjYsNDUpCiNkZWZpbmUgUFdNX1dEVF8yX0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMjgsMTcsNjYsNDYpCiNkZWZpbmUgQkNNX0VSUl9JUk9VVEUgICAgICAgICAgICAgICAgICBJUk9VVEUoMjksMTcsNjYsNDcpCiNkZWZpbmUgQkNNX0JVU1lfSVJPVVRFICAgICAgICAgICAgICAgICBJUk9VVEUoMzAsMTcsNjYsNDgpCgovLwovLyBHSVJRMTgKLy8KI2RlZmluZSBTUEkwX1RYX0lST1VURSAgICAgICAgICAgICAgICAgIElST1VURSgwLDE4LDY3LDM2KQojZGVmaW5lIFNQSTBfUlhfSVJPVVRFICAgICAgICAgICAgICAgICAgSVJPVVRFKDEsMTgsNjcsMzcpCiNkZWZpbmUgU1BJMV9UWF9JUk9VVEUgICAgICAgICAgICAgICAgICBJUk9VVEUoMiwxOCw2Nyw1NSkKI2RlZmluZSBTUEkxX1JYX0lST1VURSAgICAgICAgICAgICAgICAgIElST1VURSgzLDE4LDY3LDU2KQojZGVmaW5lIExFRDNfSVJPVVRFICAgICAgICAgICAgICAgICAgICAgSVJPVVRFKDQsMTgsNjcsODUpCiNkZWZpbmUgUEtFX0VSUl9JUk9VVEUgICAgICAgICAgICAgICAgICBJUk9VVEUoNSwxOCw2Nyw4NikKI2RlZmluZSBQS0VfRU5EX0lST1VURSAgICAgICAgICAgICAgICAgIElST1VURSg2LDE4LDY3LDg3KQojZGVmaW5lIE5EUk5HX0lST1VURSAgICAgICAgICAgICAgICAgICAgSVJPVVRFKDcsMTgsNjcsODgpCiNkZWZpbmUgQUVTX0lST1VURSAgICAgICAgICAgICAgICAgICAgICBJUk9VVEUoOCwxOCw2Nyw4OSkKI2RlZmluZSBIQVNIX0lST1VURSAgICAgICAgICAgICAgICAgICAgIElST1VURSg5LDE4LDY3LDkwKQoKLy8KLy8gR0lSUTE5LCBBZ2dyZWdhdGVkIG9ubHkKLy8KI2RlZmluZSBWQ0NfUFdSR0RfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSgwLDE5LDY4LDY4KQojZGVmaW5lIExSRVNFVF9JUk9VVEUgICAgICAgICAgICAgICAgICAgSVJPVVRFKDEsMTksNjgsNjgpCgovLwovLyBHSVJRMjAsIEFnZ3JlZ2F0ZWQgb25seQovLwojZGVmaW5lIEdQSU9fMDIwMF9JUk9VVEUgICAgICAgICAgICAgICAgSVJPVVRFKDAsMjAsNjksNjkpCiNkZWZpbmUgR1BJT18wMjAxX0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoMSwyMCw2OSw2OSkKI2RlZmluZSBHUElPXzAyMDJfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSgyLDIwLDY5LDY5KQojZGVmaW5lIEdQSU9fMDIwM19JUk9VVEUgICAgICAgICAgICAgICAgSVJPVVRFKDMsMjAsNjksNjkpCiNkZWZpbmUgR1BJT18wMjA0X0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoNCwyMCw2OSw2OSkKLy8KI2RlZmluZSBHUElPXzAyMDZfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSg2LDIwLDY5LDY5KQovLwojZGVmaW5lIEdQSU9fMDIxMF9JUk9VVEUgICAgICAgICAgICAgICAgSVJPVVRFKDgsMjAsNjksNjkpCiNkZWZpbmUgR1BJT18wMjExX0lST1VURSAgICAgICAgICAgICAgICBJUk9VVEUoOSwyMCw2OSw2OSkKI2RlZmluZSBHUElPXzAyMTJfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSgxMCwyMCw2OSw2OSkKI2RlZmluZSBHUElPXzAyMTNfSVJPVVRFICAgICAgICAgICAgICAgIElST1VURSgxMSwyMCw2OSw2OSkKCi8vCi8vIEdJUlEyMQovLwovLyBObyBzb3VyY2VzCgovLwovLyBHSVJRMjIKLy8KLy8gTm8gc291cmNlcwoKLy8KLy8gR0lSUTIzCi8vCiNkZWZpbmUgQlRNUjBfSVJPVVRFICAgICAgICAgICAgICAgICAgICBJUk9VVEUoMCwyMyw3Miw0OSkKI2RlZmluZSBCVE1SMV9JUk9VVEUgICAgICAgICAgICAgICAgICAgIElST1VURSgxLDIzLDcyLDUwKQojZGVmaW5lIEJUTVIyX0lST1VURSAgICAgICAgICAgICAgICAgICAgSVJPVVRFKDIsMjMsNzIsNTEpCiNkZWZpbmUgQlRNUjNfSVJPVVRFICAgICAgICAgICAgICAgICAgICBJUk9VVEUoMywyMyw3Miw1MikKI2RlZmluZSBCVE1SNF9JUk9VVEUgICAgICAgICAgICAgICAgICAgIElST1VURSg0LDIzLDcyLDUzKQojZGVmaW5lIEJUTVI1X0lST1VURSAgICAgICAgICAgICAgICAgICAgSVJPVVRFKDUsMjMsNzIsNTQpCgoKLy8KLy8gR0lSUTA4IEJpdCBQb3NpdGlvbnMKLy8KI2RlZmluZSBHSVJRMDhfR1BJT18wMTQwX0JJVFBPUyAgICAgICAgICgwKQojZGVmaW5lIEdJUlEwOF9HUElPXzAxNDFfQklUUE9TICAgICAgICAgKDEpCiNkZWZpbmUgR0lSUTA4X0dQSU9fMDE0Ml9CSVRQT1MgICAgICAgICAoMikKI2RlZmluZSBHSVJRMDhfR1BJT18wMTQzX0JJVFBPUyAgICAgICAgICgzKQojZGVmaW5lIEdJUlEwOF9HUElPXzAxNDRfQklUUE9TICAgICAgICAgKDQpCiNkZWZpbmUgR0lSUTA4X0dQSU9fMDE0NV9CSVRQT1MgICAgICAgICAoNSkKI2RlZmluZSBHSVJRMDhfR1BJT18wMTQ2X0JJVFBPUyAgICAgICAgICg2KQojZGVmaW5lIEdJUlEwOF9HUElPXzAxNDdfQklUUE9TICAgICAgICAgKDcpCi8vCiNkZWZpbmUgR0lSUTA4X0dQSU9fMDE1MF9CSVRQT1MgICAgICAgICAoOCkKI2RlZmluZSBHSVJRMDhfR1BJT18wMTUxX0JJVFBPUyAgICAgICAgICg5KQojZGVmaW5lIEdJUlEwOF9HUElPXzAxNTJfQklUUE9TICAgICAgICAgKDEwKQojZGVmaW5lIEdJUlEwOF9HUElPXzAxNTNfQklUUE9TICAgICAgICAgKDExKQojZGVmaW5lIEdJUlEwOF9HUElPXzAxNTRfQklUUE9TICAgICAgICAgKDEyKQojZGVmaW5lIEdJUlEwOF9HUElPXzAxNTVfQklUUE9TICAgICAgICAgKDEzKQojZGVmaW5lIEdJUlEwOF9HUElPXzAxNTZfQklUUE9TICAgICAgICAgKDE0KSAKI2RlZmluZSBHSVJRMDhfR1BJT18wMTU3X0JJVFBPUyAgICAgICAgICgxNSkKLy8KI2RlZmluZSBHSVJRMDhfR1BJT18wMTYwX0JJVFBPUyAgICAgICAgICgxNikKI2RlZmluZSBHSVJRMDhfR1BJT18wMTYxX0JJVFBPUyAgICAgICAgICgxNykKI2RlZmluZSBHSVJRMDhfR1BJT18wMTYyX0JJVFBPUyAgICAgICAgICgxOCkKI2RlZmluZSBHSVJRMDhfR1BJT18wMTYzX0JJVFBPUyAgICAgICAgICgxOSkKI2RlZmluZSBHSVJRMDhfR1BJT18wMTY0X0JJVFBPUyAgICAgICAgICgyMCkKI2RlZmluZSBHSVJRMDhfR1BJT18wMTY1X0JJVFBPUyAgICAgICAgICgyMSkKI2RlZmluZSBHSVJRMDhfR1BJT18wMTY2X0JJVFBPUyAgICAgICAgICgyMikgCiNkZWZpbmUgR0lSUTA4X0dQSU9fMDE2N19CSVRQT1MgICAgICAgICAoMjMpCi8vCiNkZWZpbmUgR0lSUTA4X01BU0sgICAgICAgICAgICAgICAgICAgICAoMHgwMEZGRkZCRnVsKQojZGVmaW5lIEdJUlEwOF9XQUtFX0NBUEFCTEVfTUFTSyAgICAgICAgKDB4MDBGRkZGQkZ1bCkKLy8KCi8vCi8vIEdJUlEwOSBCaXQgUG9zaXRpb25zIAovLwojZGVmaW5lIEdJUlEwOV9HUElPXzAxMDBfQklUUE9TICAgICAgICAgKDApCiNkZWZpbmUgR0lSUTA5X0dQSU9fMDEwMV9CSVRQT1MgICAgICAgICAoMSkKI2RlZmluZSBHSVJRMDlfR1BJT18wMTAyX0JJVFBPUyAgICAgICAgICgyKQojZGVmaW5lIEdJUlEwOV9HUElPXzAxMDNfQklUUE9TICAgICAgICAgKDMpCiNkZWZpbmUgR0lSUTA5X0dQSU9fMDEwNF9CSVRQT1MgICAgICAgICAoNCkKI2RlZmluZSBHSVJRMDlfR1BJT18wMTA1X0JJVFBPUyAgICAgICAgICg1KQojZGVmaW5lIEdJUlEwOV9HUElPXzAxMDZfQklUUE9TICAgICAgICAgKDYpIAojZGVmaW5lIEdJUlEwOV9HUElPXzAxMDdfQklUUE9TICAgICAgICAgKDcpCi8vCiNkZWZpbmUgR0lSUTA5X0dQSU9fMDExMF9CSVRQT1MgICAgICAgICAoOCkKI2RlZmluZSBHSVJRMDlfR1BJT18wMTExX0JJVFBPUyAgICAgICAgICg5KQojZGVmaW5lIEdJUlEwOV9HUElPXzAxMTJfQklUUE9TICAgICAgICAgKDEwKQojZGVmaW5lIEdJUlEwOV9HUElPXzAxMTNfQklUUE9TICAgICAgICAgKDExKQojZGVmaW5lIEdJUlEwOV9HUElPXzAxMTRfQklUUE9TICAgICAgICAgKDEyKQojZGVmaW5lIEdJUlEwOV9HUElPXzAxMTVfQklUUE9TICAgICAgICAgKDEzKQojZGVmaW5lIEdJUlEwOV9HUElPXzAxMTZfQklUUE9TICAgICAgICAgKDE0KSAKI2RlZmluZSBHSVJRMDlfR1BJT18wMTE3X0JJVFBPUyAgICAgICAgICgxNSkKLy8KI2RlZmluZSBHSVJRMDlfR1BJT18wMTIwX0JJVFBPUyAgICAgICAgICgxNikKI2RlZmluZSBHSVJRMDlfR1BJT18wMTIxX0JJVFBPUyAgICAgICAgICgxNykKI2RlZmluZSBHSVJRMDlfR1BJT18wMTIyX0JJVFBPUyAgICAgICAgICgxOCkKI2RlZmluZSBHSVJRMDlfR1BJT18wMTIzX0JJVFBPUyAgICAgICAgICgxOSkKI2RlZmluZSBHSVJRMDlfR1BJT18wMTI0X0JJVFBPUyAgICAgICAgICgyMCkKI2RlZmluZSBHSVJRMDlfR1BJT18wMTI1X0JJVFBPUyAgICAgICAgICgyMSkKI2RlZmluZSBHSVJRMDlfR1BJT18wMTI2X0JJVFBPUyAgICAgICAgICgyMikgCiNkZWZpbmUgR0lSUTA5X0dQSU9fMDEyN19CSVRQT1MgICAgICAgICAoMjMpCi8vCiNkZWZpbmUgR0lSUTA5X0dQSU9fMDEzMF9CSVRQT1MgICAgICAgICAoMjQpCiNkZWZpbmUgR0lSUTA5X0dQSU9fMDEzMV9CSVRQT1MgICAgICAgICAoMjUpCiNkZWZpbmUgR0lSUTA5X0dQSU9fMDEzMl9CSVRQT1MgICAgICAgICAoMjYpCiNkZWZpbmUgR0lSUTA5X0dQSU9fMDEzM19CSVRQT1MgICAgICAgICAoMjcpCiNkZWZpbmUgR0lSUTA5X0dQSU9fMDEzNF9CSVRQT1MgICAgICAgICAoMjgpCiNkZWZpbmUgR0lSUTA5X0dQSU9fMDEzNV9CSVRQT1MgICAgICAgICAoMjkpCiNkZWZpbmUgR0lSUTA5X0dQSU9fMDEzNl9CSVRQT1MgICAgICAgICAoMzApIAovLwojZGVmaW5lIEdJUlEwOV9NQVNLICAgICAgICAgICAgICAgICAgICAgKDB4N0ZGN0ZGRkZ1bCkKI2RlZmluZSBHSVJRMDlfV0FLRV9DQVBBQkxFX01BU0sgICAgICAgICgweDdGRjdGRkZGdWwpCi8vCgovLwovLyBHSVJRMTAgQml0IFBvc2l0aW9ucyAKLy8KI2RlZmluZSBHSVJRMTBfR1BJT18wMDQwX0JJVFBPUyAgICAgICAgICgwKQojZGVmaW5lIEdJUlExMF9HUElPXzAwNDFfQklUUE9TICAgICAgICAgKDEpCiNkZWZpbmUgR0lSUTEwX0dQSU9fMDA0Ml9CSVRQT1MgICAgICAgICAoMikKI2RlZmluZSBHSVJRMTBfR1BJT18wMDQzX0JJVFBPUyAgICAgICAgICgzKQojZGVmaW5lIEdJUlExMF9HUElPXzAwNDRfQklUUE9TICAgICAgICAgKDQpCiNkZWZpbmUgR0lSUTEwX0dQSU9fMDA0NV9CSVRQT1MgICAgICAgICAoNSkKI2RlZmluZSBHSVJRMTBfR1BJT18wMDQ2X0JJVFBPUyAgICAgICAgICg2KSAKI2RlZmluZSBHSVJRMTBfR1BJT18wMDQ3X0JJVFBPUyAgICAgICAgICg3KQovLwojZGVmaW5lIEdJUlExMF9HUElPXzAwNTBfQklUUE9TICAgICAgICAgKDgpCiNkZWZpbmUgR0lSUTEwX0dQSU9fMDA1MV9CSVRQT1MgICAgICAgICAoOSkKI2RlZmluZSBHSVJRMTBfR1BJT18wMDUyX0JJVFBPUyAgICAgICAgICgxMCkKI2RlZmluZSBHSVJRMTBfR1BJT18wMDUzX0JJVFBPUyAgICAgICAgICgxMSkKI2RlZmluZSBHSVJRMTBfR1BJT18wMDU0X0JJVFBPUyAgICAgICAgICgxMikKI2RlZmluZSBHSVJRMTBfR1BJT18wMDU1X0JJVFBPUyAgICAgICAgICgxMykKI2RlZmluZSBHSVJRMTBfR1BJT18wMDU2X0JJVFBPUyAgICAgICAgICgxNCkgCiNkZWZpbmUgR0lSUTEwX0dQSU9fMDA1N19CSVRQT1MgICAgICAgICAoMTUpCi8vCiNkZWZpbmUgR0lSUTEwX0dQSU9fMDA2MF9CSVRQT1MgICAgICAgICAoMTYpCiNkZWZpbmUgR0lSUTEwX0dQSU9fMDA2MV9CSVRQT1MgICAgICAgICAoMTcpCiNkZWZpbmUgR0lSUTEwX0dQSU9fMDA2Ml9CSVRQT1MgICAgICAgICAoMTgpCiNkZWZpbmUgR0lSUTEwX0dQSU9fMDA2M19CSVRQT1MgICAgICAgICAoMTkpCiNkZWZpbmUgR0lSUTEwX0dQSU9fMDA2NF9CSVRQT1MgICAgICAgICAoMjApCiNkZWZpbmUgR0lSUTEwX0dQSU9fMDA2NV9CSVRQT1MgICAgICAgICAoMjEpCiNkZWZpbmUgR0lSUTEwX0dQSU9fMDA2Nl9CSVRQT1MgICAgICAgICAoMjIpIAojZGVmaW5lIEdJUlExMF9HUElPXzAwNjdfQklUUE9TICAgICAgICAgKDIzKQovLwojZGVmaW5lIEdJUlExMF9NQVNLICAgICAgICAgICAgICAgICAgICAgKDB4N0ZGRkZGRkZ1bCkKI2RlZmluZSBHSVJRMTBfV0FLRV9DQVBBQkxFX01BU0sgICAgICAgICgweDdGRkZGRkZGdWwpCi8vCgovLyBHSVJRMTEgQml0IFBvc2l0aW9ucyAKI2RlZmluZSBHSVJRMTFfR1BJT18wMDAwX0JJVFBPUyAgICAgICAgICgwKQojZGVmaW5lIEdJUlExMV9HUElPXzAwMDFfQklUUE9TICAgICAgICAgKDEpCiNkZWZpbmUgR0lSUTExX0dQSU9fMDAwMl9CSVRQT1MgICAgICAgICAoMikKI2RlZmluZSBHSVJRMTFfR1BJT18wMDAzX0JJVFBPUyAgICAgICAgICgzKQojZGVmaW5lIEdJUlExMV9HUElPXzAwMDRfQklUUE9TICAgICAgICAgKDQpCiNkZWZpbmUgR0lSUTExX0dQSU9fMDAwNV9CSVRQT1MgICAgICAgICAoNSkKI2RlZmluZSBHSVJRMTFfR1BJT18wMDA2X0JJVFBPUyAgICAgICAgICg2KSAKI2RlZmluZSBHSVJRMTFfR1BJT18wMDA3X0JJVFBPUyAgICAgICAgICg3KQovLwojZGVmaW5lIEdJUlExMV9HUElPXzAwMTBfQklUUE9TICAgICAgICAgKDgpCiNkZWZpbmUgR0lSUTExX0dQSU9fMDAxMV9CSVRQT1MgICAgICAgICAoOSkKI2RlZmluZSBHSVJRMTFfR1BJT18wMDEyX0JJVFBPUyAgICAgICAgICgxMCkKI2RlZmluZSBHSVJRMTFfR1BJT18wMDEzX0JJVFBPUyAgICAgICAgICgxMSkKI2RlZmluZSBHSVJRMTFfR1BJT18wMDE0X0JJVFBPUyAgICAgICAgICgxMikKI2RlZmluZSBHSVJRMTFfR1BJT18wMDE1X0JJVFBPUyAgICAgICAgICgxMykKI2RlZmluZSBHSVJRMTFfR1BJT18wMDE2X0JJVFBPUyAgICAgICAgICgxNCkgCiNkZWZpbmUgR0lSUTExX0dQSU9fMDAxN19CSVRQT1MgICAgICAgICAoMTUpCi8vCiNkZWZpbmUgR0lSUTExX0dQSU9fMDAyMF9CSVRQT1MgICAgICAgICAoMTYpCiNkZWZpbmUgR0lSUTExX0dQSU9fMDAyMV9CSVRQT1MgICAgICAgICAoMTcpCiNkZWZpbmUgR0lSUTExX0dQSU9fMDAyMl9CSVRQT1MgICAgICAgICAoMTgpCiNkZWZpbmUgR0lSUTExX0dQSU9fMDAyM19CSVRQT1MgICAgICAgICAoMTkpCiNkZWZpbmUgR0lSUTExX0dQSU9fMDAyNF9CSVRQT1MgICAgICAgICAoMjApCiNkZWZpbmUgR0lSUTExX0dQSU9fMDAyNV9CSVRQT1MgICAgICAgICAoMjEpCiNkZWZpbmUgR0lSUTExX0dQSU9fMDAyNl9CSVRQT1MgICAgICAgICAoMjIpIAojZGVmaW5lIEdJUlExMV9HUElPXzAwMjdfQklUUE9TICAgICAgICAgKDIzKQovLwojZGVmaW5lIEdJUlExMV9HUElPXzAwMzBfQklUUE9TICAgICAgICAgKDI0KQojZGVmaW5lIEdJUlExMV9HUElPXzAwMzFfQklUUE9TICAgICAgICAgKDI1KQojZGVmaW5lIEdJUlExMV9HUElPXzAwMzJfQklUUE9TICAgICAgICAgKDI2KQojZGVmaW5lIEdJUlExMV9HUElPXzAwMzNfQklUUE9TICAgICAgICAgKDI3KQojZGVmaW5lIEdJUlExMV9HUElPXzAwMzRfQklUUE9TICAgICAgICAgKDI4KQojZGVmaW5lIEdJUlExMV9HUElPXzAwMzVfQklUUE9TICAgICAgICAgKDI5KQojZGVmaW5lIEdJUlExMV9HUElPXzAwMzZfQklUUE9TICAgICAgICAgKDMwKSAKLy8KI2RlZmluZSBHSVJRMTFfTUFTSyAgICAgICAgICAgICAgICAgICAgICgweDdGRkZGRkZGdWwpCiNkZWZpbmUgR0lSUTExX1dBS0VfQ0FQQUJMRV9NQVNLICAgICAgICAoMHg3RkZGRkZGRnVsKQovLwoKLy8gR0lSUTEyIEJpdCBQb3NpdGlvbnMgCiNkZWZpbmUgR0lSUTEyX1NNQlVTMF9CSVRQT1MgICAgICAgICAgICAoMCkKI2RlZmluZSBHSVJRMTJfU01CVVMxX0JJVFBPUyAgICAgICAgICAgICgxKQojZGVmaW5lIEdJUlExMl9TTUJVUzJfQklUUE9TICAgICAgICAgICAgKDIpCiNkZWZpbmUgR0lSUTEyX1NNQlVTM19CSVRQT1MgICAgICAgICAgICAoMykKI2RlZmluZSBHSVJRMTJfSTJDMF8wX1dBS0VfQklUUE9TICAgICAgICg0KQojZGVmaW5lIEdJUlExMl9JMkMwXzFfV0FLRV9CSVRQT1MgICAgICAgKDUpCiNkZWZpbmUgR0lSUTEyX0kyQzJfMF9XQUtFX0JJVFBPUyAgICAgICAoNikKI2RlZmluZSBHSVJRMTJfSTJDMV8wX1dBS0VfQklUUE9TICAgICAgICg3KQojZGVmaW5lIEdJUlExMl9JMkMzXzBfV0FLRV9CSVRQT1MgICAgICAgKDgpCi8vCiNkZWZpbmUgR0lSUTEyX01BU0sgICAgICAgICAgICAgICAgICAgICAoMHgwMUZGdWwpCiNkZWZpbmUgR0lSUTEyX1dBS0VfQ0FQQUJMRV9NQVNLICAgICAgICAoMHgwMUYwdWwpCi8vCgovLwovLyBHSVJRMTMgQml0IFBvc2l0aW9ucyAKLy8KI2RlZmluZSBHSVJRMTNfRE1BMF9CSVRQT1MgICAgICAgICAgICAgICgxNikKI2RlZmluZSBHSVJRMTNfRE1BMV9CSVRQT1MgICAgICAgICAgICAgICgxNykKI2RlZmluZSBHSVJRMTNfRE1BMl9CSVRQT1MgICAgICAgICAgICAgICgxOCkKI2RlZmluZSBHSVJRMTNfRE1BM19CSVRQT1MgICAgICAgICAgICAgICgxOSkKI2RlZmluZSBHSVJRMTNfRE1BNF9CSVRQT1MgICAgICAgICAgICAgICgyMCkKI2RlZmluZSBHSVJRMTNfRE1BNV9CSVRQT1MgICAgICAgICAgICAgICgyMSkKI2RlZmluZSBHSVJRMTNfRE1BNl9CSVRQT1MgICAgICAgICAgICAgICgyMikKI2RlZmluZSBHSVJRMTNfRE1BN19CSVRQT1MgICAgICAgICAgICAgICgyMykKI2RlZmluZSBHSVJRMTNfRE1BOF9CSVRQT1MgICAgICAgICAgICAgICgyNCkKI2RlZmluZSBHSVJRMTNfRE1BOV9CSVRQT1MgICAgICAgICAgICAgICgyNSkKI2RlZmluZSBHSVJRMTNfRE1BMTBfQklUUE9TICAgICAgICAgICAgICgyNikKI2RlZmluZSBHSVJRMTNfRE1BMTFfQklUUE9TICAgICAgICAgICAgICgyNykKLy8KI2RlZmluZSBHSVJRMTNfTUFTSyAgICAgICAgICAgICAgICAgICAgICgweDBGRkYwMDAwdWwpCiNkZWZpbmUgR0lSUTEzX1dBS0VfQ0FQQUJMRV9NQVNLICAgICAgICAoMHgwMDAwMDAwMHVsKQovLwoKLy8KLy8gR0lSUTE0IEJpdCBQb3NpdGlvbnMgCi8vCiNkZWZpbmUgR0lSUTE0X0xQQ19CSVRQT1MgICAgICAgICAgICAgICAoMikKLy8KI2RlZmluZSBHSVJRMTRfTUFTSyAgICAgICAgICAgICAgICAgICAgICgweDA0dWwpCiNkZWZpbmUgR0lSUTE0X1dBS0VfQ0FQQUJMRV9NQVNLICAgICAgICAoMHgwMHVsKQovLwoKLy8KLy8gR0lSUTE1IEJpdCBQb3NpdGlvbnMgCi8vCiNkZWZpbmUgR0lSUTE1X1VBUlQwX0JJVFBPUyAgICAgICAgICAgICAoMCkKI2RlZmluZSBHSVJRMTVfSU1BUF9CSVRQT1MgICAgICAgICAgICAgICgyKQojZGVmaW5lIEdJUlExNV9BQ1BJMF9JQkZfQklUUE9TICAgICAgICAgKDYpCiNkZWZpbmUgR0lSUTE1X0FDUEkwX09CRl9CSVRQT1MgICAgICAgICAoNykKI2RlZmluZSBHSVJRMTVfQUNQSTFfSUJGX0JJVFBPUyAgICAgICAgICg4KQojZGVmaW5lIEdJUlExNV9BQ1BJMV9PQkZfQklUUE9TICAgICAgICAgKDkpCiNkZWZpbmUgR0lSUTE1X0FDUElfUE0xQ1RMX0JJVFBPUyAgICAgICAoMTApCiNkZWZpbmUgR0lSUTE1X0FDUElfUE0xRU5fQklUUE9TICAgICAgICAoMTEpCiNkZWZpbmUgR0lSUTE1X0FDUElfUE0xU1RTX0JJVFBPUyAgICAgICAoMTIpCiNkZWZpbmUgR0lSUTE1X01GODA0Ml9PQkZfQklUUE9TICAgICAgICAoMTMpCiNkZWZpbmUgR0lSUTE1X01GODA0Ml9JQkZfQklUUE9TICAgICAgICAoMTQpCiNkZWZpbmUgR0lSUTE1X01BSUxCT1hfQklUUE9TICAgICAgICAgICAoMTUpCiNkZWZpbmUgR0lSUTE1X01BSUxCT1hfREFUQV9CSVRQT1MgICAgICAoMTYpCi8vCiNkZWZpbmUgR0lSUTE1X01BU0sgICAgICAgICAgICAgICAgICAgICAoMHgwMUZGRER1bCkKI2RlZmluZSBHSVJRMTVfV0FLRV9DQVBBQkxFX01BU0sgICAgICAgICgweDAwMDAwMHVsKQovLwoKLy8KLy8gR0lSUTE2IEJpdCBQb3NpdGlvbnMgCi8vCiNkZWZpbmUgR0lSUTE2X1BFQ0lfQklUUE9TICAgICAgICAgICAgICAoMykKLy8KI2RlZmluZSBHSVJRMTZfTUFTSyAgICAgICAgICAgICAgICAgICAgICgweDA4dWwpCiNkZWZpbmUgR0lSUTE2X1dBS0VfQ0FQQUJMRV9NQVNLICAgICAgICAoMHgwMHVsKQovLwoKLy8KLy8gR0lSUTE3IEJpdCBQb3NpdGlvbnMgCi8vCiNkZWZpbmUgR0lSUTE3X1RBQ0gwX0JJVFBPUyAgICAgICAgICAgICAoMCkKI2RlZmluZSBHSVJRMTdfVEFDSDFfQklUUE9TICAgICAgICAgICAgICgxKQojZGVmaW5lIEdJUlExN19QUzJfMF9XQUtFX0JJVFBPUyAgICAgICAgKDIpCiNkZWZpbmUgR0lSUTE3X1BTMl8xX1dBS0VfQklUUE9TICAgICAgICAoMykKI2RlZmluZSBHSVJRMTdfUFMyXzJfV0FLRV9CSVRQT1MgICAgICAgICg0KQojZGVmaW5lIEdJUlExN19QUzJfM19XQUtFX0JJVFBPUyAgICAgICAgKDUpCiNkZWZpbmUgR0lSUTE3X0JDX1dBS0VfQklUUE9TICAgICAgICAgICAoNikKLy8gUkVTRVJWRUQgYls5OjddCiNkZWZpbmUgR0lSUTE3X0FEQ19JTlQwX0JJVFBPUyAgICAgICAgICAoMTApCiNkZWZpbmUgR0lSUTE3X0FEQ19JTlQxX0JJVFBPUyAgICAgICAgICAoMTEpCiNkZWZpbmUgR0lSUTE3X1YyUF9JTlQwX0JJVFBPUyAgICAgICAgICAoMTIpCiNkZWZpbmUgR0lSUTE3X1YyUF9JTlQxX0JJVFBPUyAgICAgICAgICAoMTMpCiNkZWZpbmUgR0lSUTE3X1BTMl8wX0JJVFBPUyAgICAgICAgICAgICAoMTQpCiNkZWZpbmUgR0lSUTE3X1BTMl8xX0JJVFBPUyAgICAgICAgICAgICAoMTUpCiNkZWZpbmUgR0lSUTE3X1BTMl8yX0JJVFBPUyAgICAgICAgICAgICAoMTYpCiNkZWZpbmUgR0lSUTE3X1BTMl8zX0JJVFBPUyAgICAgICAgICAgICAoMTcpCiNkZWZpbmUgR0lSUTE3X1JUQ19CSVRQT1MgICAgICAgICAgICAgICAoMTgpCiNkZWZpbmUgR0lSUTE3X1JUQ19BTEFSTV9CSVRQT1MgICAgICAgICAoMTkpCiNkZWZpbmUgR0lSUTE3X0hJQlRNUl9CSVRQT1MgICAgICAgICAgICAoMjApCiNkZWZpbmUgR0lSUTE3X0tFWV9JTlRfQklUUE9TICAgICAgICAgICAoMjEpCiNkZWZpbmUgR0lSUTE3X0tFWV9JTlRfV0FLRV9CSVRQT1MgICAgICAoMjIpCiNkZWZpbmUgR0lSUTE3X1JQTV9TVEFMTF9CSVRQT1MgICAgICAgICAoMjMpCiNkZWZpbmUgR0lSUTE3X1JQTV9TUElOX0JJVFBPUyAgICAgICAgICAoMjQpCiNkZWZpbmUgR0lSUTE3X1ZCQVRfQklUUE9TICAgICAgICAgICAgICAoMjUpCiNkZWZpbmUgR0lSUTE3X1BXTV9XRFRfMF9CSVRQT1MgICAgICAgICAoMjYpCiNkZWZpbmUgR0lSUTE3X1BXTV9XRFRfMV9CSVRQT1MgICAgICAgICAoMjcpCiNkZWZpbmUgR0lSUTE3X1BXTV9XRFRfMl9CSVRQT1MgICAgICAgICAoMjgpCiNkZWZpbmUgR0lSUTE3X01CQ19FUlJfQklUUE9TICAgICAgICAgICAoMjkpCiNkZWZpbmUgR0lSUTE3X01CQ19CVVNZX0JJVFBPUyAgICAgICAgICAoMzApCi8vCiNkZWZpbmUgR0lSUTE3X01BU0sgICAgICAgICAgICAgICAgICAgICAoMHg3RkYzRkM3RnVsKQojZGVmaW5lIEdJUlExN19XQUtFX0NBUEFCTEVfTUFTSyAgICAgICAgKDB4MDIzMDAwN0N1bCkKLy8KCi8vCi8vIEdJUlExOCBCaXQgUG9zaXRpb25zCi8vCiNkZWZpbmUgR0lSUTE4X1NQSTBfVFhfQklUUE9TICAgICAgICAgICAoMCkKI2RlZmluZSBHSVJRMThfU1BJMF9SWF9CSVRQT1MgICAgICAgICAgICgxKQojZGVmaW5lIEdJUlExOF9TUEkxX1RYX0JJVFBPUyAgICAgICAgICAgKDIpCiNkZWZpbmUgR0lSUTE4X1NQSTFfUlhfQklUUE9TICAgICAgICAgICAoMykKI2RlZmluZSBHSVJRMThfUFdNX1dEVF8zX0JJVFBPUyAgICAgICAgICg0KSAgLy8gTlZJQyA4NQojZGVmaW5lIEdJUlExOF9QS0VfRVJSX0JJVFBPUyAgICAgICAgICAgKDUpICAvLyBOVklDIDg2CiNkZWZpbmUgR0lSUTE4X1BLRV9FTkRfQklUUE9TICAgICAgICAgICAoNikgIC8vIE5WSUMgODcKI2RlZmluZSBHSVJRMThfVFJOR19CSVRQT1MgICAgICAgICAgICAgICg3KSAgLy8gTlZJQyA4OAojZGVmaW5lIEdJUlExOF9BRVNfQklUUE9TICAgICAgICAgICAgICAgKDgpICAvLyBOVklDIDg5CiNkZWZpbmUgR0lSUTE4X0hBU0hfQklUUE9TICAgICAgICAgICAgICAoOSkgIC8vIE5WSUMgOTAKLy8KI2RlZmluZSBHSVJRMThfTUFTSyAgICAgICAgICAgICAgICAgICAgICgweDBGRnVsKQojZGVmaW5lIEdJUlExOF9XQUtFX0NBUEFCTEVfTUFTSyAgICAgICAgKDB4MDAwdWwpCi8vCgovLwovLyBHSVJRMTkgQml0IFBvc2l0aW9ucwovLwojZGVmaW5lIEdJUlExOV9WQ0NfUFdSR0RfQklUUE9TICAgICAgICAgKDApCiNkZWZpbmUgR0lSUTE5X0xSRVNFVF9CSVRQT1MgICAgICAgICAgICAoMSkKLy8KI2RlZmluZSBHSVJRMTlfTUFTSyAgICAgICAgICAgICAgICAgICAgICgweDAzdWwpCiNkZWZpbmUgR0lSUTE5X1dBS0VfQ0FQQUJMRV9NQVNLICAgICAgICAoMHgwM3VsKQovLwoKLy8KLy8gR0lSUTIwIEJpdCBQb3NpdGlvbnMgCi8vCiNkZWZpbmUgR0lSUTIwX0dQSU9fMDIwMF9CSVRQT1MgICAgICAgICAoMCkKI2RlZmluZSBHSVJRMjBfR1BJT18wMjAxX0JJVFBPUyAgICAgICAgICgxKQojZGVmaW5lIEdJUlEyMF9HUElPXzAyMDJfQklUUE9TICAgICAgICAgKDIpCiNkZWZpbmUgR0lSUTIwX0dQSU9fMDIwM19CSVRQT1MgICAgICAgICAoMykKI2RlZmluZSBHSVJRMjBfR1BJT18wMjA0X0JJVFBPUyAgICAgICAgICg0KQovLwojZGVmaW5lIEdJUlEyMF9HUElPXzAyMDZfQklUUE9TICAgICAgICAgKDYpCi8vCiNkZWZpbmUgR0lSUTIwX0dQSU9fMDIxMF9CSVRQT1MgICAgICAgICAoOCkKI2RlZmluZSBHSVJRMjBfR1BJT18wMjExX0JJVFBPUyAgICAgICAgICg5KQojZGVmaW5lIEdJUlEyMF9HUElPXzAyMTJfQklUUE9TICAgICAgICAgKDEwKQojZGVmaW5lIEdJUlEyMF9HUElPXzAyMTNfQklUUE9TICAgICAgICAgKDExKQovLyAKI2RlZmluZSBHSVJRMjBfTUFTSyAgICAgICAgICAgICAgICAgICAgICgweDBGNUZ1bCkKI2RlZmluZSBHSVJRMjBfV0FLRV9DQVBBQkxFX01BU0sgICAgICAgICgweDBGNUZ1bCkKLy8KCi8vCi8vIEdJUlEyMSBCaXQgUG9zaXRpb25zIAovLwojZGVmaW5lIEdJUlEyMV9NQVNLICAgICAgICAgICAgICAgICAgICAgKDB4MDB1bCkKI2RlZmluZSBHSVJRMjFfV0FLRV9DQVBBQkxFX01BU0sgICAgICAgICgweDAwdWwpCgovLwovLyBHSVJRMjIgQml0IFBvc2l0aW9ucyAKLy8KI2RlZmluZSBHSVJRMjJfTUFTSyAgICAgICAgICAgICAgICAgICAgICgweDAwdWwpCiNkZWZpbmUgR0lSUTIyX1dBS0VfQ0FQQUJMRV9NQVNLICAgICAgICAoMHgwMHVsKQoKLy8KLy8gR0lSUTIzIEJpdCBQb3NpdGlvbnMgCi8vCiNkZWZpbmUgR0lSUTIzX1RNUjBfQklUUE9TICAgICAgICAgICAgICAoMCkKI2RlZmluZSBHSVJRMjNfVE1SMV9CSVRQT1MgICAgICAgICAgICAgICgxKQojZGVmaW5lIEdJUlEyM19UTVIyX0JJVFBPUyAgICAgICAgICAgICAgKDIpCiNkZWZpbmUgR0lSUTIzX1RNUjNfQklUUE9TICAgICAgICAgICAgICAoMykKI2RlZmluZSBHSVJRMjNfVE1SNF9CSVRQT1MgICAgICAgICAgICAgICg0KQojZGVmaW5lIEdJUlEyM19UTVI1X0JJVFBPUyAgICAgICAgICAgICAgKDUpCi8vCiNkZWZpbmUgR0lSUTIzX01BU0sgICAgICAgICAgICAgICAgICAgICAoMHgwM0Z1bCkKI2RlZmluZSBHSVJRMjNfV0FLRV9DQVBBQkxFX01BU0sgICAgICAgICgweDAwMHVsKQovLwoKCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLyogICAgICAgICAgICAgICAgICBOVklDLEVDSUEgUm91dGluZyBQb2xpY3kgZm9yIERpcmVjdCBNb2RlICAgICAgICAgICAgICAgICAgICAgICAqLwovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi8qIEluIERpcmVjdCBNb2RlLCBzb21lIGludGVycnVwdHMgY291bGQgYmUgY29uZmlndXJlZCB0byBiZSB1c2VkIGFzIGFnZ3JlZ2F0ZWQuCiAqIENvbmZpZ3VyYXRpb246CiAqICAgICAgMS4gQWx3YXlzIHNldCBFQ1MgSW50ZXJydXB0IERpcmVjdCBlbmFibGUgYml0LiAgICAgICAgIAogKiAgICAgIDIuIElmIEdJUlFuIGFnZ3JlZ2F0ZWQgc2V0IEJsb2NrIEVuYWJsZSBiaXQuCiAqICAgICAgMy4gSWYgR0lSUW4gZGlyZWN0IHRoZW4gY2xlYXIgQmxvY2sgRW5hYmxlIGJpdCBhbmQgZW5hYmxlIGluZGl2aWR1YWwgTlZJQyBpbnB1dHMuCiAqICBTd2l0Y2hpbmcgaXNzdWVzOgogKiAgQWdncmVnYXRlIGVuYWJsZS9kaXNhYmxlIHJlcXVpcmVzIHNldC9jbGVhciBzaW5nbGUgR0lSUW4gYml0IGluIEdJUlEgQmxvY2sgRW4vQ2xyIHJlZ2lzdGVycy4KICogIEFsc28gcmVxdWlyZXMgc2V0L2NsZWFyIG9mIGluZGl2aWR1YWwgTlZJQyBFbmFibGVzLgogKiAgCiAqIE5vdGU6IGludGVycnVwdF9pc19naXJxX2RpcmVjdCgpIGludGVybmFsIGZ1bmN0aW9uIHVzZXMgdGhpcyBwb2xpY3kgdG8gZGV0ZWN0IAogKiBpZiBhbnkgaW50ZXJydXB0IGlzIGNvbmZpZ3VyZWQgYXMgZGlyZWN0IG9yIGFnZ3JlZ2F0ZWQKKi8KCi8qKiBJbml0aWFsaXplIEVDIEludGVycnVwdCBBZ2dyZWdhdG9yCiAqIEBwYXJhbSBtb2RlIDEgLSBEaXJlY3QgTWFwIG1vZGUsIDAgLSBGdWxseSBBZ2dyZWdhdGVkIE1vZGUgCiAqIEBwYXJhbSBnaXJxX2JpdG1hc2sgLSBCaXRNYXNrIG9mIEdJUlEgdG8gYmUgY29uZmlndXJlZCBhcyBhZ2dyZWdhdGVkIAogKiAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGlzIG9ubHkgYXBwbGljYWJsZSBpbiBkaXJlY3QgbW9kZS4KICogQG5vdGUgQWxsIEdQSU8ncyBhbmQgd2FrZSBjYXBhYmxlIHNvdXJjZXMgYXJlIGFsd2F5cyAKICogYWdncmVnYXRlZCEgR1BJTydzIGludGVycnVwdHMgd2lsbCBzdGlsbCB3b3JrIGluIGRpcmVjdCBtb2RlLgogKiBCbG9jayB3YWtlcyBhcmUgbm90IGJlIHJvdXRlZCB0byB0aGUgcHJvY2Vzc29yIGluIGRpcmVjdCAKICogbW9kZS4gCiAqIE5vdGUyOiBUaGlzIGZ1bmN0aW9uIGRpc2FibGVzIGFuZCBlbmFibGVzIGdsb2JhbCBpbnRlcnJ1cHQgIAogKi8Kdm9pZCBpbnRlcnJ1cHRfaW5pdCh1aW50OF90IG1vZGUsIHVpbnQzMl90IGdpcnFfYml0bWFzayk7CgovKiogU2V0IGludGVycnVwdCByb3V0aW5nIG1vZGUgdG8gYWdncmVnYXRlZCBvciBkaXJlY3QuIAogKiBAcGFyYW0gbW9kZSAxID0gRGlyZWN0IChleGNlcHQgR1BJTyAmIHdha2UpLCAwID0gQWxsIEFnZ3JlZ2F0ZWQgCiAqIEBub3RlIEluIGRpcmVjdCBtb2RlLCBvbmUgY291bGQgZW5hYmxlIGNlcnRhaW4gR0lSUXMgYXMgYWdncmVnYXRlZCB1c2luZyAKICogcF9pbnRlcnJ1cHRfZWNpYV9ibG9ja19lbmFibGVfc2V0IGZ1bmN0aW9uCiAqLwp2b2lkIGludGVycnVwdF9tb2RlX3NldCh1aW50OF90IG1vZGUpOwoKLyoqIENsZWFycyBhbGwgaW5kaXZpZHVhbCBpbnRlcnJ1cHRzIEVuYWJsZXMgYW5kIFNvdXJjZSBpbiBFQ0lBLAogKiAgYW5kIENsZWFycyBhbGwgTlZJQyBleHRlcm5hbCBlbmFibGVzIGFuZCBwZW5kaW5nIGJpdHMgIAogKi8Kdm9pZCBpbnRlcnJ1cHRfcmVzZXQodm9pZCk7CgovKiogRW5hYmxlcyBpbnRlcnJ1cHQgZm9yIGEgZGV2aWNlIAogKiBAcGFyYW0gZGV2X2lyb3V0ZSAtIHNvdXJjZSBJUk9VVElORyBpbmZvcm1hdGlvbiAKICogQG5vdGUgVGhpcyBmdW5jdGlvbiBkaXNhYmxlcyBhbmQgZW5hYmxlcyBnbG9iYWwgaW50ZXJydXB0IAogKi8Kdm9pZCBpbnRlcnJ1cHRfZGV2aWNlX2VuYWJsZSh1aW50MzJfdCBkZXZfaXJvdXRlKTsKCi8qKiBEaXNhYmxlcyBpbnRlcnJ1cHQgZm9yIGEgZGV2aWNlCiAqIEBwYXJhbSBkZXZfaXJvdXRlIC0gc291cmNlIElST1VUSU5HIGluZm9ybWF0aW9uICAKICogQG5vdGUgVGhpcyBmdW5jdGlvbiBkaXNhYmxlcyBhbmQgZW5hYmxlcyBnbG9iYWwgaW50ZXJydXB0IAogKi8Kdm9pZCBpbnRlcnJ1cHRfZGV2aWNlX2Rpc2FibGUodWludDMyX3QgZGV2X2lyb3V0ZSk7CgovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi8qICAgICAgICAgICAgICAgICAgRUNJQSBBUElzIHVzaW5nIGRldmljZSBJUk9VVEUoKSBhcyBpbnB1dCAgICAgICAgICAgICAgICAgICAgICAgKi8gCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KCi8qKiBDbGVhciBTb3VyY2UgaW4gdGhlIEVDSUEgZm9yIHRoZSBkZXZpY2UgIAogKiBAcGFyYW0gZGV2aSAtIGRldmljZSBJUk9VVElORyB2YWx1ZSAgCiAqLwp2b2lkIGludGVycnVwdF9kZXZpY2VfZWNpYV9zb3VyY2VfY2xlYXIoY29uc3QgdWludDMyX3QgZGV2X2lyb3V0ZSk7CgovKiogR2V0IHRoZSBTb3VyY2UgYml0IGluIHRoZSBFQ0lBIGZvciB0aGUgZGV2aWNlICAKICogQHBhcmFtIGRldmkgLSBkZXZpY2UgSVJPVVRJTkcgdmFsdWUgIAogKiBAcmV0dXJuIDAgaWYgc291cmNlIGJpdCBub3Qgc2V0OyBlbHNlIG5vbi16ZXJvIHZhbHVlCiAqLwp1aW50MzJfdCBpbnRlcnJ1cHRfZGV2aWNlX2VjaWFfc291cmNlX2dldChjb25zdCB1aW50MzJfdCBkZXZfaXJvdXRlKTsKCi8qKiBHZXQgdGhlIFJlc3VsdCBiaXQgaW4gdGhlIEVDSUEgZm9yIHRoZSBkZXZpY2UgIAogKiBAcGFyYW0gZGV2aSAtIGRldmljZSBJUk9VVElORyB2YWx1ZSAgCiAqIEByZXR1cm4gMCBpZiByZXN1bHQgYml0IG5vdCBzZXQ7IGVsc2Ugbm9uLXplcm8gdmFsdWUKICovCnVpbnQzMl90IGludGVycnVwdF9kZXZpY2VfZWNpYV9yZXN1bHRfZ2V0KGNvbnN0IHVpbnQzMl90IGRldl9pcm91dGUpOwoKLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwovKiAgICAgICAgICAgICAgICAgIE5WSUMgQVBJcyB1c2luZyBkZXZpY2UgSVJPVVRFKCkgYXMgaW5wdXQgICAgICAgICAgICAgICAgICAgICAgICovIAovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi8qIE5vdGUgdGhhdCBpZiB0aGUgZGV2aWNlIGludGVycnVwdCBpcyBhZ2dyZWdhdGVkLCB0aGVuIHRoZXNlIEFQSXMgd291bGQgYWZmZWN0IHRoZSAKICogTlZJQyBjb3JyZXNwb25kaW5nIHRvIHRoZSBhZ2dyZWdhdGVkIEdJUlEgCiAqLwoKLyoqICBFbmFibGUvRGlzYWJsZSB0aGUgTlZJQyAoaW4gdGhlIE5WSUMgY29udHJvbGxlcikgZm9yIHRoZSBkZXZpY2UKICogQHBhcmFtIGRldl9pcm91dGUgOiBzb3VyY2UgSVJPVVRJTkcgaW5mb3JtYXRpb24gKGVuY29kZWQgaW4gYSB1aW50MzJfdCkKICogQHBhcmFtIGVuX2ZsYWcgOiAxID0gRW5hYmxlIHRoZSBOVklDIElSUSwgMCA9IERpc2FibGUgdGhlIE5WSUMgSVJRIAogKiBAbm90ZSBSZWNvbW1lbmRlZCB0byB1c2UgaW50ZXJydXB0X2RldmljZV9lbmFibGUsIGludGVycnVwdF9kZXZpY2VfZGlzYWJsZQogKiB0byBlbmFibGUvZGlzYWJsZSBpbnRlcnJ1cHRzIGZvciB0aGUgZGV2aWNlLCBzaW5jZSB0aG9zZSBBUElzIGNvbmZpZ3VyZSBFQ0lBIGFzIHdlbGwKICovCnZvaWQgaW50ZXJydXB0X2RldmljZV9udmljX2VuYWJsZSh1aW50MzJfdCBkZXZfaXJvdXRlLCB1aW50OF90IGVuX2ZsYWcpOwoKLyoqIFNldCBOVklDIHByaW9yaXR5IGZvciBzcGVjaWZpZWQgcGVyaXBoZXJhbCBpbnRlcnJ1cHQgc291cmNlCiAqIEBwYXJhbSBkZXZfaXJvdXRlIC0gc291cmNlIElST1VUSU5HIGluZm9ybWF0aW9uIChlbmNvZGVkIGluIGEgdWludDMyX3QpCiAqIEBwYXJhbSBudmljX3ByaSAtIE5WSUMgUHJpb3JpdHkKICogQG5vdGUgMS4gSWYgRUNJQSBpcyBpbiBhZ2dyZWdhdGVkIG1vZGUsIHRoZSBwcmlvcml0eSBhZmZlY3RzIGFsbCBpbnRlcnJ1cHQgCiAqIHNvdXJjZXMgaW4gdGhlIEdJUlEuIAogKiAyLiBUaGlzIGZ1bmN0aW9uIGRpc2FibGVzIGFuZCBlbmFibGVzIGdsb2JhbCBpbnRlcnJ1cHQgICAgCiAqLwp2b2lkIGludGVycnVwdF9kZXZpY2VfbnZpY19wcmlvcml0eV9zZXQoY29uc3QgdWludDMyX3QgZGV2X2lyb3V0ZSwgY29uc3QgdWludDhfdCBudmljX3ByaSk7CgovKiogUmV0dXJuIE5WSUMgcHJpb3JpdHkgZm9yIGludGVycnVwdCBzb3VyY2UKICogQHBhcmFtIGRldl9pcm91dGUgLSBzb3VyY2UgSVJPVVRJTkcgaW5mb3JtYXRpb24gCiAqIEByZXR1cm4gdWludDMyX3QgIE5WSUMgcHJpb3JpdHkgCiAqLwp1aW50MzJfdCBpbnRlcnJ1cHRfZGV2aWNlX252aWNfcHJpb3JpdHlfZ2V0KGNvbnN0IHVpbnQzMl90IGRldl9pcm91dGUpOwoKLyoqIFJldHVybiBOVklDIHBlbmRpbmcgZm9yIGludGVycnVwdCBzb3VyY2UKICogQHBhcmFtIGRldl9pcm91dGUgLSBzb3VyY2UgSVJPVVRJTkcgaW5mb3JtYXRpb24gCiAqIEByZXR1cm4gdWludDhfdCAwKG5vdCBwZW5kaW5nKSwgMSAocGVuZGluZyBpbiBOVklDKSAKICogIAogKi8KdWludDhfdCBpbnRlcnJ1cHRfZGV2aWNlX252aWNfcGVuZGluZ19nZXQoY29uc3QgdWludDMyX3QgZGV2X2lyb3V0ZSk7CgovKiogU2V0IE5WSUMgcGVuZGluZyBmb3IgaW50ZXJydXB0IHNvdXJjZQogKiBAcGFyYW0gZGV2X2lyb3V0ZSAtIHNvdXJjZSBJUk9VVElORyBpbmZvcm1hdGlvbiAgIAogKi8Kdm9pZCBpbnRlcnJ1cHRfZGV2aWNlX252aWNfcGVuZGluZ19zZXQoY29uc3QgdWludDMyX3QgZGV2X2lyb3V0ZSk7CgovKiogQ2xlYXJzIE5WSUMgcGVuZGluZyBmb3IgaW50ZXJydXB0IHNvdXJjZQogKiBAcGFyYW0gZGV2X2lyb3V0ZSAtIHNvdXJjZSBJUk9VVElORyBpbmZvcm1hdGlvbiAKICogQHJldHVybiB1aW50OF90IDAobm90IHBlbmRpbmcpLCAxIChwZW5kaW5nIGluIE5WSUMpIC0gYmVmb3JlIGNsZWFyIAogKiBAbm90ZSBUaGlzIGZ1bmN0aW9uIGRpc2FibGVzIGFuZCBlbmFibGVzIGdsb2JhbCBpbnRlcnJ1cHQgICAgCiAqLwp1aW50OF90IGludGVycnVwdF9kZXZpY2VfbnZpY19wZW5kaW5nX2NsZWFyKGNvbnN0IHVpbnQzMl90IGRldl9pcm91dGUpOwogICAgCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLyogUGVyaXBoZXJhbCBGdW5jdGlvbnMgLSBPcGVyYXRpb25zIG9uIEdJUlEgQmxvY2sgRW5hYmxlIFNldCwgRW5hYmxlIENsZWFyICAgICAgICAqCiAqIGFuZCBTdGF0dXMgUmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwoKLyoqIEVuYWJsZSBzcGVjaWZpZWQgR0lSUSBpbiBFQ0lBIGJsb2NrCiAqIEBwYXJhbSBnaXJxX2lkIC0gZW51bSBNRUNfR0lSUV9JRFMgCiAqLwogdm9pZCBwX2ludGVycnVwdF9lY2lhX2Jsb2NrX2VuYWJsZV9zZXQodWludDhfdCBnaXJxX2lkKTsKICAKIC8qKiBFbmFibGUgR0lSUXMgaW4gRUNJQSBCbG9jayAKICogQHBhcmFtIGdpcnFfYml0bWFzayAtIEJpdG1hc2sgb2YgR0lSUXMgdG8gYmUgZW5hYmxlZCBpbiBFQ0lBIEJsb2NrICAKICovCnZvaWQgcF9pbnRlcnJ1cHRfZWNpYV9ibG9ja19lbmFibGVfYml0bWFza19zZXQodWludDMyX3QgZ2lycV9iaXRtYXNrKTsKCi8qKiBDaGVjayBpZiBzcGVjaWZpZWQgR0lSUSBibG9jayBlbmFibGVkIG9yIG5vdAogKiBAcGFyYW0gZ2lycV9pZCAtIGVudW0gTUVDX0dJUlFfSURTIAogKiBAcmV0dXJuIHJldFZhbCAtIDEgaWYgdGhlIHBhcnRpY3VsYXIgR0lSUSBibG9jayBlbmFibGVkLCBlbHNlIDAKICovCnVpbnQ4X3QgcF9pbnRlcnJ1cHRfZWNpYV9ibG9ja19lbmFibGVfZ2V0KHVpbnQ4X3QgZ2lycV9pZCk7CgovKiogU2V0IGFsbCBHSVJRIGJsb2NrIGVuYWJsZXMgKi8Kdm9pZCBwX2ludGVycnVwdF9lY2lhX2Jsb2NrX2VuYWJsZV9hbGxfc2V0KHZvaWQpOwoKLyoqIENsZWFyIHNwZWNpZmllZCBHSVJRIGluIEVDSUEgQmxvY2sgCiAqIEBwYXJhbSBnaXJxX2lkIC0gZW51bSBNRUNfR0lSUV9JRFMgCiAqLwp2b2lkIHBfaW50ZXJydXB0X2VjaWFfYmxvY2tfZW5hYmxlX2Nscih1aW50OF90IGdpcnFfaWQpOwoKLyoqIENsZWFyIEdJUlFzIGluIEVDSUEgQmxvY2sgCiAqIEBwYXJhbSBnaXJxX2JpdG1hc2sgLSBCaXRtYXNrIG9mIEdJUlFzIHRvIGJlIGNsZWFyZWQgaW4gRUNJQSBCbG9jayAgCiAqLwp2b2lkIHBfaW50ZXJydXB0X2VjaWFfYmxvY2tfZW5hYmxlX2JpdG1hc2tfY2xyKHVpbnQzMl90IGdpcnFfYml0bWFzayk7CgovKiogcF9pbnRlcnJ1cHRfZWNpYV9ibG9ja19lbmFibGVfYWxsX2NsciAtIENsZWFycyBhbGwgR0lSUSBibG9jayBlbmFibGVzICovCnZvaWQgcF9pbnRlcnJ1cHRfZWNpYV9ibG9ja19lbmFibGVfYWxsX2Nscih2b2lkKTsKIAogLyoqIEdldCBzdGF0dXMgb2YgR0lSUSBpbiBFQ0lBIEJsb2NrCiAqIEBwYXJhbSBnaXJxX2lkIC0gZW51bSBNRUNfR0lSUV9JRFMgIAogKiBAcmV0dXJuIDAgaWYgc3RhdHVzIGJpdCBub3Qgc2V0OyBlbHNlIG5vbi16ZXJvIHZhbHVlCiAqLwp1aW50MzJfdCBwX2ludGVycnVwdF9lY2lhX2Jsb2NrX2lycV9zdGF0dXNfZ2V0KHVpbnQ4X3QgZ2lycV9pZCk7CgovKiogUmVhZHMgdGhlIEJsb2NrIElSUSBWZWN0b3IgUmVnaXN0ZXIKICAqIEByZXR1cm4gMzItYml0IHZhbHVlCiAqLwp1aW50MzJfdCBwX2ludGVycnVwdF9lY2lhX2Jsb2NrX2lycV9hbGxfc3RhdHVzX2dldCh2b2lkKTsKCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLyogUGVyaXBoZXJhbCBGdW5jdGlvbnMgLSBPcGVyYXRpb25zIG9uIEdJUlF4IFNvdXJjZSwgRW5hYmxlLCBSZXN1bHQgICAgICAgICAgICAqCiAqIGFuZCBFbmFibGUgUmVnaXN0ZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwoKLyoqIENsZWFyIHNwZWNpZmllZCBpbnRlcnJ1cHQgc291cmNlIGJpdCBpbiBHSVJReAogKiBAcGFyYW0gZ2lycV9pZCAtIGVudW0gTUVDX0dJUlFfSURTCiAqIEBwYXJhbSBiaXRudW0gLVswLCAzMV0KICovCnZvaWQgcF9pbnRlcnJ1cHRfZWNpYV9naXJxX3NvdXJjZV9jbHIoaW50MTZfdCBnaXJxX2lkLCB1aW50OF90IGJpdG51bSk7CgovKiogUmVhZCB0aGUgc3BlY2lmaWVkIGludGVycnVwdCBzb3VyY2UgYml0IGluIEdJUlF4CiAqIEBwYXJhbSBnaXJxX2lkIC0gZW51bSBNRUNfR0lSUV9JRFMKICogQHBhcmFtIGJpdG51bSAtWzAsIDMxXQogKiBAcmV0dXJuIDAgaWYgc291cmNlIGJpdCBub3Qgc2V0OyBlbHNlIG5vbi16ZXJvIHZhbHVlCiAqLwp1aW50MzJfdCBwX2ludGVycnVwdF9lY2lhX2dpcnFfc291cmNlX2dldChpbnQxNl90IGdpcnFfaWQsIHVpbnQ4X3QgYml0bnVtKTsKCi8qKiBFbmFibGUgdGhlIHNwZWNpZmllZCBpbnRlcnJ1cHQgaW4gR0lSUXgKICogZ2lycV9pZCAtIGVudW0gTUVDX0dJUlFfSURTCiAqIGJpdG51bSA9IFswLCAzMV0KICovCnZvaWQgcF9pbnRlcnJ1cHRfZWNpYV9naXJxX2VuYWJsZV9zZXQodWludDE2X3QgZ2lycV9pZCwgdWludDhfdCBiaXRudW0pOwoKLyoqIERpc2FibGUgdGhlIHNwZWNpZmllZCBpbnRlcnJ1cHQgaW4gR0lSUXgKICogZ2lycV9pZCAtIGVudW0gTUVDX0dJUlFfSURTCiAqIGJpdG51bSA9IFswLCAzMV0KICovCnZvaWQgcF9pbnRlcnJ1cHRfZWNpYV9naXJxX2VuYWJsZV9jbHIodWludDE2X3QgZ2lycV9pZCwgdWludDhfdCBiaXRudW0pOwoKLyoqIFJlYWQgdGhlIHN0YXR1cyBvZiB0aGUgc3BlY2lmaWVkIGludGVycnVwdCBpbiBHSVJReAogKiBnaXJxX2lkIC0gZW51bSBNRUNfR0lSUV9JRFMKICogYml0bnVtID0gWzAsIDMxXQogKiBAcmV0dXJuIDAgaWYgZW5hYmxlIGJpdCBub3Qgc2V0OyBlbHNlIG5vbi16ZXJvIHZhbHVlCiAqLwp1aW50MzJfdCBwX2ludGVycnVwdF9lY2lhX2dpcnFfZW5hYmxlX2dldCh1aW50MTZfdCBnaXJxX2lkLCB1aW50OF90IGJpdG51bSk7CgovKiogUmVhZCB0aGUgcmVzdWx0IGJpdCBvZiB0aGUgaW50ZXJydXB0IGluIEdJUlF4CiAqIEBwYXJhbSBnaXJxX2lkIC0gZW51bSBNRUNfR0lSUV9JRFMKICogQHBhcmFtIGJpdG51bSAtWzAsIDMxXQogKiBAcmV0dXJuIDAgaWYgZW5hYmxlIGJpdCBub3Qgc2V0OyBlbHNlIG5vbi16ZXJvIHZhbHVlCiAqLwp1aW50MzJfdCBwX2ludGVycnVwdF9lY2lhX2dpcnFfcmVzdWx0X2dldChpbnQxNl90IGdpcnFfaWQsIHVpbnQ4X3QgYml0bnVtKTsKCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLyogUGVyaXBoZXJhbCBGdW5jdGlvbiAtIE9wZXJhdGlvbnMgb24gYWxsIEdJUlFzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCgovKiogQ2xlYXIgYWxsIGFnZ3JlZ2F0b3IgR0lSUW4gc3RhdHVzIHJlZ2lzdGVycyAqLwp2b2lkIHBfaW50ZXJydXB0X2VjaWFfZ2lycXNfc291cmNlX3Jlc2V0KHZvaWQpOwoKLyoqIENsZWFyIGFsbCBhZ2dyZWdhdG9yIEdJUlFuIGVuYWJsZXMgKi8KIHZvaWQgcF9pbnRlcnJ1cHRfZWNpYV9naXJxc19lbmFibGVfcmVzZXQodm9pZCk7CiAKLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwovKiBQZXJpcGhlcmFsIEZ1bmN0aW9uIC0gRnVuY3Rpb24gdG8gc2V0IGludGVycnVwdCBjb250cm9sICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KCi8qKiBTZXQgaW50ZXJydXB0IGNvbnRyb2wgCiAqIEBwYXJhbSBudmljX2VuX2ZsYWcgOiAwID0gQWx0ZXJuYXRlIE5WSUMgZGlzYWJsZWQsIDEgPSBBbHRlcm5hdGUgTlZJQyBlbmFibGVkCiAqLwp2b2lkIHBfaW50ZXJydXB0X2NvbnRyb2xfc2V0KHVpbnQ4X3QgbnZpY19lbl9mbGFnKTsKICAgICAKIC8qKiBSZWFkIGludGVycnVwdCBjb250cm9sIAogKiBAcmV0dXJuIHVpbnQ4X3QgLSAwID0gQWx0ZXJuYXRlIE5WSUMgZGlzYWJsZWQsIDEgPSBBbHRlcm5hdGUgTlZJQyBlbmFibGVkCiAqLwp1aW50OF90IHBfaW50ZXJydXB0X2NvbnRyb2xfZ2V0KHZvaWQpOwoKLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwovKiBQZXJpcGhlcmFsIEZ1bmN0aW9ucyAtIE5WSUMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KCi8qKiAgRW5hYmxlL0Rpc2FibGUgdGhlIE5WSUMgSVJRIGluIHRoZSBOVklDIGludGVycnVwdCBjb250cm9sbGVyCiAqIEBwYXJhbSBudmljX251bSA6IE5WSUMgbnVtYmVyIChzZWUgZW51bSBJUlFuX1R5cGUpCiAqIEBwYXJhbSBlbl9mbGFnIDogMSA9IEVuYWJsZSB0aGUgTlZJQyBJUlEsIDAgPSBEaXNhYmxlIHRoZSBOVklDIElSUQogKiBAbm90ZSBBcHBsaWNhdGlvbiBzaG91bGQgcGVyZm9ybSB0aGlzIG9wZXJhdGlvbgogKi8Kdm9pZCBwX2ludGVycnVwdF9udmljX2VuYWJsZShJUlFuX1R5cGUgbnZpY19udW0sIHVpbnQ4X3QgZW5fZmxhZyk7CiAgICAgCiAvKiogIGVjaWFfbnZpY19jbHJfZW4gLSBDbGVhciBhbGwgTlZJQyBleHRlcm5hbCBlbmFibGVzICovIAp2b2lkIHBfaW50ZXJydXB0X252aWNfZXh0RW5hYmxlc19jbHIodm9pZCk7CgovKiogQ2xlYXIgYWxsIE5WSUMgZXh0ZXJuYWwgZW5hYmxlcyBhbmQgcGVuZGluZyBiaXRzICovCnZvaWQgcF9pbnRlcnJ1cHRfbnZpY19lbnBlbmRfY2xyKHZvaWQpOwoKLyoqIFNldCBOVklDIGV4dGVybmFsIHByaW9yaXRpZXMgdG8gUE9SIHZhbHVlICovCnZvaWQgcF9pbnRlcnJ1cHRfbnZpY19wcmlvcml0aWVzX2RlZmF1bHRfc2V0KHZvaWQpOwoKLyoqIFNldCBOVklDIGV4dGVybmFsIHByaW9yaXRpZXMgdG8gc3BlY2lmaWVkIHByaW9yaXR5ICgwIC0gNykKICogQHBhcmFtIHplcm8tYmFzZWQgMy1iaXQgcHJpb3JpdHkgdmFsdWU6IDA9aGlnaGVzdCwgNz1sb3dlc3QuCiAqIEBub3RlIE5WSUMgaGlnaGVzdCBwcmlvcml0eSBpcyB0aGUgdmFsdWUgMCwgbG93ZXN0IGlzIGFsbCAxJ3MuCiAqIEVhY2ggZXh0ZXJuYWwgaW50ZXJydXB0IGhhcyBhbiA4LWJpdCByZWdpc3RlciBhbmQgdGhlIHByaW9yaXR5IAogKiBpcyBsZWZ0IGp1c3RpZmllZCBpbiB0aGUgcmVnaXN0ZXJzLiBNRUN4eHggaW1wbGVtZW50cyA4IHByaW9yaXR5IAogKiBsZXZlbHMgb3IgYml0cyBbNzo1XSBpbiB0aGUgcmVnaXN0ZXIuIExvd2VzdCBwcmlvcml0eSA9IDB4RTAKICovCnZvaWQgcF9pbnRlcnJ1cHRfbnZpY19wcmlvcml0aWVzX3NldCh1aW50OF90IG5ld19wcmkpOwoKI2VuZGlmIC8vICNpZm5kZWYgX0lOVEVSUlVQVF9ICi8qIGVuZCBpbnRlcnJ1cHQuaCAqLwovKiogICBAfQogKi8KCgoK