LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKgogKiBDb3B5cmlnaHQoYykgMjAwOS0yMDEwICBSZWFsdGVrIENvcnBvcmF0aW9uLgogKgogKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAogKiB1bmRlciB0aGUgdGVybXMgb2YgdmVyc2lvbiAyIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwogKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KICoKICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiAqIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvcgogKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCiAqIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aAogKiB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKICogNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMCwgVVNBCiAqCiAqIFRoZSBmdWxsIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIGluY2x1ZGVkIGluIHRoaXMgZGlzdHJpYnV0aW9uIGluIHRoZQogKiBmaWxlIGNhbGxlZCBMSUNFTlNFLgogKgogKiBDb250YWN0IEluZm9ybWF0aW9uOgogKiB3bGFuZmFlIDx3bGFuZmFlQHJlYWx0ZWsuY29tPgogKiBSZWFsdGVrIENvcnBvcmF0aW9uLCBOby4gMiwgSW5ub3ZhdGlvbiBSb2FkIElJLCBIc2luY2h1IFNjaWVuY2UgUGFyaywKICogSHNpbmNodSAzMDAsIFRhaXdhbi4KICoKICogTGFycnkgRmluZ2VyIDxMYXJyeS5GaW5nZXJAbHdmaW5nZXIubmV0PgogKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgojaWZuZGVmIF9fUlRMODgyMUFFX1BXUlNFUV9IX18KI2RlZmluZSBfX1JUTDg4MjFBRV9QV1JTRVFfSF9fCgojaW5jbHVkZSAicHdyc2VxY21kLmgiCiNpbmNsdWRlICIuLi9idGNvZXhpc3QvaGFsYnRfcHJlY29tcC5oIgoKI2RlZmluZQlSVEw4ODEyX1RSQU5TX0NBUkRFTVVfVE9fQUNUX1NURVBTCTE1CiNkZWZpbmUJUlRMODgxMl9UUkFOU19BQ1RfVE9fQ0FSREVNVV9TVEVQUwkxNQojZGVmaW5lCVJUTDg4MTJfVFJBTlNfQ0FSREVNVV9UT19TVVNfU1RFUFMJMTUKI2RlZmluZQlSVEw4ODEyX1RSQU5TX1NVU19UT19DQVJERU1VX1NURVBTCTE1CiNkZWZpbmUJUlRMODgxMl9UUkFOU19DQVJERU1VX1RPX1BETl9TVEVQUwkyNQojZGVmaW5lCVJUTDg4MTJfVFJBTlNfUEROX1RPX0NBUkRFTVVfU1RFUFMJMTUKI2RlZmluZQlSVEw4ODEyX1RSQU5TX0FDVF9UT19MUFNfU1RFUFMJMTUKI2RlZmluZQlSVEw4ODEyX1RSQU5TX0xQU19UT19BQ1RfU1RFUFMJMTUKI2RlZmluZQlSVEw4ODEyX1RSQU5TX0VORF9TVEVQUwkxCgoKI2RlZmluZSBSVEw4ODEyX1RSQU5TX0NBUkRFTVVfVE9fQUNUIAkJCQkJCQkJCQkJCQkJXAoJLyogZm9ybWF0ICovCQkJCQkJCQkJCQkJCQkJCVwKCS8qIHsgb2Zmc2V0LCBjdXRfbXNrLCBmYWJfbXNrfGludGVyZmFjZV9tc2ssIGJhc2V8Y21kLCBtc2ssIHZhbHVlIH0sIC8vIGNvbW1lbnRzIGhlcmUqLwkJCQkJCQkJXAoJezB4MDAwNSwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCBCSVQyLCAwfSwvKiBkaXNhYmxlIFNXIExQUyAweDA0WzEwXT0wKi8JXAoJezB4MDAwNiwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1BPTExJTkcsIEJJVDEsIEJJVDF9LC8qIHdhaXQgdGlsbCAweDA0WzE3XSA9IDEgICAgcG93ZXIgcmVhZHkqLwlcCgl7MHgwMDA1LCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIEJJVDcsIDB9LC8qIGRpc2FibGUgSFdQRE4gMHgwNFsxNV09MCovIFwKCXsweDAwMDUsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgQklUMywgMH0sLyogZGlzYWJsZSBXTCBzdXNwZW5kKi8JXAoJezB4MDAwNSwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCBCSVQwLCBCSVQwfSwvKiBwb2xsaW5nIHVudGlsIHJldHVybiAwKi8JXAoJezB4MDAwNSwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1BPTExJTkcsIEJJVDAsIDB9LC8qKi8KCiNkZWZpbmUgUlRMODgxMl9UUkFOU19BQ1RfVE9fQ0FSREVNVQkJCQkJCQkJCQkJCQlcCgkvKiBmb3JtYXQgKi8JCQkJCQkJCQkJCQkJCQkJXAoJLyogeyBvZmZzZXQsIGN1dF9tc2ssIGZhYl9tc2t8aW50ZXJmYWNlX21zaywgYmFzZXxjbWQsIG1zaywgdmFsdWUgfSwgLy8gY29tbWVudHMgaGVyZSovCQkJCQkJCQlcCgl7MHgwYzAwLCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIDB4RkYsIDB4MDR9LCAvKiAweGMwMFs3OjBdID0gNAl0dXJuIG9mZiAzLXdpcmUgKi8JXAoJezB4MGUwMCwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCAweEZGLCAweDA0fSwgLyogMHhlMDBbNzowXSA9IDQJdHVybiBvZmYgMy13aXJlICovCVwKCXsweDAwMDIsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgQklUMCwgMH0sIC8qIDB4MlswXSA9IDAJIFJFU0VUIEJCLCBDTE9TRSBSRiAqLwlcCgl7MHgwMDAyLCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfREVMQVksIDAsIFBXUlNFUV9ERUxBWV9VU30sLypEZWxheSAxdXMqLwlcCgl7MHgwMDAyLCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfUENJX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIEJJVDEsIDB9LCAgLyogV2hvbGUgQkIgaXMgcmVzZXQqLwkJCVwKCS8qezB4MDAxRiwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCAweEZGLCAwfSwvLzB4MUZbNzowXSA9IDAgdHVybiBvZmYgUkYqLwlcCgkvKnsweDAwNEUsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgQklUNywgMH0sLy8weDRDWzIzXSA9IDB4NEVbN10gPSAwLCBzd2l0Y2ggRFBEVF9TRUxfUCBvdXRwdXQgZnJvbSByZWdpc3RlciAweDY1WzJdICovCVwKCXsweDAwMDcsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgMHhGRiwgMHgyQX0sIC8qIDB4MDdbNzowXSA9IDB4Mjggc3BzIHB3bSBtb2RlIDB4MmEgZm9yIEJUIGNvZXgqLwlcCgl7MHgwMDA4LCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfVVNCX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIDB4MDIsIDB9LC8qMHg4WzFdID0gMCBBTkEgY2xrID01MDBrICovCVwKCS8qezB4MDAwMiwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCBCSVQwfEJJVDEsIDB9LCAvLyAgMHgwMlsxOjBdID0gMAlyZXNldCBCQiAqLwlcCgl7MHgwMDA1LCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIEJJVDEsIEJJVDF9LCAvKjB4MDRbOV0gPSAxIHR1cm4gb2ZmIE1BQyBieSBIVyBzdGF0ZSBtYWNoaW5lKi8JXAoJezB4MDAwNSwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1BPTExJTkcsIEJJVDEsIDB9LCAvKndhaXQgdGlsbCAweDA0WzldID0gMCBwb2xsaW5nIHVudGlsIHJldHVybiAwIHRvIGRpc2FibGUqLwoKI2RlZmluZSBSVEw4ODEyX1RSQU5TX0NBUkRFTVVfVE9fU1VTCQkJCQkJCQkJCQkJCVwKCS8qIGZvcm1hdCAqLwkJCQkJCQkJXAoJLyogeyBvZmZzZXQsIGN1dF9tc2ssIGZhYl9tc2t8aW50ZXJmYWNlX21zaywgYmFzZXxjbWQsIG1zaywgdmFsdWUgfSwgLy8gY29tbWVudHMgaGVyZSovCQkJCQkJCQlcCgl7MHgwMDQyLCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfVVNCX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIDB4RjAsIDB4Y2N9LFwKCXsweDAwNDIsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9QQ0lfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgMHhGMCwgMHhFQ30sXAoJezB4MDA0MywgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCAweEZGLCAweDA3fSwvKiBncGlvMTEgaW5wdXQgbW9kZSwgZ3BpbzEwfjggb3V0cHV0IG1vZGUgKi8JXAoJezB4MDA0NSwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCAweEZGLCAweDAwfSwvKiBncGlvIDB+NyBvdXRwdXQgc2FtZSB2YWx1ZSBhcyBpbnB1dCA/PyAqLwlcCgl7MHgwMDQ2LCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIDB4RkYsIDB4ZmZ9LC8qIGdwaW8wfjcgb3V0cHV0IG1vZGUgKi8JXAoJezB4MDA0NywgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCAweEZGLCAwfSwvKiAweDQ3Wzc6MF0gPSAwMCBncGlvIG1vZGUgKi8JXAoJezB4MDAwNywgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX1VTQl9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCAweEZGLCAwfSwvKiBzdXNwZW5kIG9wdGlvbiBhbGwgb2ZmICovCVwKCXsweDAwMTQsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgMHg4MCwgQklUN30sLyoweDE0WzddID0gMSB0dXJuIG9uIFpDRCAqLwlcCgl7MHgwMDE1LCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIDB4MDEsIEJJVDB9LC8qIDB4MTVbMF0gPTEgdHJ1biBvbiBaQ0QgKi8JXAoJezB4MDAyMywgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCAweDEwLCBCSVQ0fSwvKjB4MjNbNF0gPSAxIGhwb24gTERPIHNsZWVwIG1vZGUgKi8JXAoJezB4MDAwOCwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX1VTQl9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCAweDAyLCAwfSwvKjB4OFsxXSA9IDAgQU5BIGNsayA9NTAwayAqLwlcCgl7MHgwMDA1LCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIEJJVDMsIEJJVDN9LCAvKjB4MDRbMTFdID0gMmInMTEgZW5hYmxlIFdMIHN1c3BlbmQgZm9yIFBDSWUqLwoKI2RlZmluZSBSVEw4ODEyX1RSQU5TX1NVU19UT19DQVJERU1VCQkJCQkJCQkJCQkJCVwKCS8qIGZvcm1hdCAqLwkJCQkJCQkJXAoJLyogeyBvZmZzZXQsIGN1dF9tc2ssIGZhYl9tc2t8aW50ZXJmYWNlX21zaywgYmFzZXxjbWQsIG1zaywgdmFsdWUgfSwgLy8gY29tbWVudHMgaGVyZSovCQkJCQkJCQlcCgl7MHgwMDA1LCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIEJJVDMsIDB9LCAvKjB4MDRbMTFdID0gMmInMDFlbmFibGUgV0wgc3VzcGVuZCovICAgXAoJezB4MDAyMywgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCAweDEwLCAwfSwvKjB4MjNbNF0gPSAwIGhwb24gTERPIHNsZWVwIG1vZGUgbGVhdmUgKi8JXAoJezB4MDAxNSwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCAweDAxLCAwfSwvKiAweDE1WzBdID0wIHRydW4gb2ZmIFpDRCAqLwlcCgl7MHgwMDE0LCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIDB4ODAsIDB9LC8qMHgxNFs3XSA9IDAgdHVybiBvZmYgWkNEICovCVwKCXsweDAwNDYsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgMHhGRiwgMHgwMH0sLyogZ3BpbzB+NyBpbnB1dCBtb2RlICovCVwKCXsweDAwNDMsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgMHhGRiwgMHgwMH0sLyogZ3BpbzExIGlucHV0IG1vZGUsIGdwaW8xMH44IGlucHV0IG1vZGUgKi8KCiNkZWZpbmUgUlRMODgxMl9UUkFOU19DQVJERU1VX1RPX0NBUkRESVMJCQkJCQkJCQkJCQkJXAoJLyogZm9ybWF0ICovCQkJCQkJCQkJCQkJCQkJCVwKCS8qIHsgb2Zmc2V0LCBjdXRfbXNrLCBmYWJfbXNrfGludGVyZmFjZV9tc2ssIGJhc2V8Y21kLCBtc2ssIHZhbHVlIH0sIC8vIGNvbW1lbnRzIGhlcmUqLwkJCQkJCQkJXAoJLyoqezB4MDE5NCwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX1BDSV9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCBCSVQwLCAwfSwgLy8weDE5NFswXT0wICwgZGlzYWJsZSAzMksgY2xvY2sqLwlcCgkvKip7MHgwMDkzLCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfUENJX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIDB4RkYsIDB4OTR9LCAvLzB4OTM9MHg5NCAsIDkwWzMwXSA9MCBlbmFibGUgNTAwayBBTkEgY2xvY2sgLnN3aXRjaCBjbG9jayBmcm9tIDEyTSB0byA1MDBLICwgOTAgWzI2XSA9MCBkaXNhYmxlIEVFcHJvbSBsb2FkZXIgY2xvY2sqLwlcCgl7MHgwMDAzLCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIEJJVDIsIDB9LCAvKjB4MDNbMl0gPSAwLCByZXNldCA4MDUxKi8JXAoJezB4MDA4MCwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCAweEZGLCAweDA1fSwgLyoweDgwPTA1aCBpZiByZWxvYWQgZncsIGZpbGwgdGhlIGRlZmF1bHQgdmFsdWUgb2YgaG9zdF9DUFUgaGFuZHNoYWtlIGZpZWxkKi8JXAoJezB4MDA0MiwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX1VTQl9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCAweEYwLCAweGNjfSxcCgl7MHgwMDQyLCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfUENJX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIDB4RjAsIDB4RUN9LFwKCXsweDAwNDMsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgMHhGRiwgMHgwN30sLyogZ3BpbzExIGlucHV0IG1vZGUsIGdwaW8xMH44IG91dHB1dCBtb2RlICovCVwKCXsweDAwNDUsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgMHhGRiwgMHgwMH0sLyogZ3BpbyAwfjcgb3V0cHV0IHNhbWUgdmFsdWUgYXMgaW5wdXQgPz8gKi8JXAoJezB4MDA0NiwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCAweEZGLCAweGZmfSwvKiBncGlvMH43IG91dHB1dCBtb2RlICovCVwKCXsweDAwNDcsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgMHhGRiwgMH0sLyogMHg0N1s3OjBdID0gMDAgZ3BpbyBtb2RlICovCVwKCXsweDAwMTQsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgMHg4MCwgQklUN30sLyoweDE0WzddID0gMSB0dXJuIG9uIFpDRCAqLwlcCgl7MHgwMDE1LCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIDB4MDEsIEJJVDB9LC8qIDB4MTVbMF0gPTEgdHJ1biBvbiBaQ0QgKi8JXAoJezB4MDAxMiwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCAweDAxLCAwfSwvKjB4MTJbMF0gPSAwIGZvcmNlIFBGTSBtb2RlICovCVwKCXsweDAwMjMsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgMHgxMCwgQklUNH0sLyoweDIzWzRdID0gMSBocG9uIExETyBzbGVlcCBtb2RlICovCVwKCXsweDAwMDgsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9VU0JfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgMHgwMiwgMH0sLyoweDhbMV0gPSAwIEFOQSBjbGsgPTUwMGsgKi8JXAoJezB4MDAwNywgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX1VTQl9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCAweEZGLCAweDIwfSwgLyoweDA3PTB4MjAgLCBTT1Agb3B0aW9uIHRvIGRpc2FibGUgQkcvTUIqLwlcCgl7MHgwMDFmLCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfVVNCX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIEJJVDEsIDB9LCAvKjB4MDFmWzFdPTAgLCBkaXNhYmxlIFJGQ18wICBjb250cm9sICBSRUdfUkZfQ1RSTF84ODEyICovCVwKCXsweDAwNzYsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9VU0JfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgQklUMSwgMH0sIC8qMHgwNzZbMV09MCAsIGRpc2FibGUgUkZDXzEgIGNvbnRyb2wgUkVHX09QVF9DVFJMXzg4MTIgKzIgKi8JXAoJezB4MDAwNSwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCBCSVQzLCBCSVQzfSwgLyoweDA0WzExXSA9IDJiJzAxIGVuYWJsZSBXTCBzdXNwZW5kKi8KCiNkZWZpbmUgUlRMODgxMl9UUkFOU19DQVJERElTX1RPX0NBUkRFTVUJCQkJCQkJCQkJCQkJXAoJLyogZm9ybWF0ICovCQkJCQkJCQkJCQkJCQkJCVwKCS8qIHsgb2Zmc2V0LCBjdXRfbXNrLCBmYWJfbXNrfGludGVyZmFjZV9tc2ssIGJhc2V8Y21kLCBtc2ssIHZhbHVlIH0sIC8vIGNvbW1lbnRzIGhlcmUqLyAgICAgICAgICAgICAgICAgICAgICAgXAoJezB4MDAxMiwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCBCSVQwLCBCSVQwfSwvKjB4MTJbMF0gPSAxIGZvcmNlIFBXTSBtb2RlICovCVwKCXsweDAwMTQsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgMHg4MCwgMH0sLyoweDE0WzddID0gMCB0dXJuIG9mZiBaQ0QgKi8JXAoJezB4MDAxNSwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCAweDAxLCAwfSwvKiAweDE1WzBdID0wIHRydW4gb2ZmIFpDRCAqLwlcCgl7MHgwMDIzLCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIDB4MTAsIDB9LC8qMHgyM1s0XSA9IDAgaHBvbiBMRE8gbGVhdmUgc2xlZXAgbW9kZSAqLwlcCgl7MHgwMDQ2LCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIDB4RkYsIDB4MDB9LC8qIGdwaW8wfjcgaW5wdXQgbW9kZSAqLwlcCgl7MHgwMDQzLCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIDB4RkYsIDB4MDB9LC8qIGdwaW8xMSBpbnB1dCBtb2RlLCBncGlvMTB+OCBpbnB1dCBtb2RlICovIFwKCXsweDAwMDUsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9QQ0lfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgQklUMiwgMH0sIC8qMHgwNFsxMF0gPSAwLCBlbmFibGUgU1cgTFBTIFBDSUUgb25seSovCVwKCXsweDAwMDUsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgQklUMywgMH0sIC8qMHgwNFsxMV0gPSAyYicwMWVuYWJsZSBXTCBzdXNwZW5kKi8JXAoJezB4MDAwMywgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCBCSVQyLCBCSVQyfSwgLyoweDAzWzJdID0gMSwgZW5hYmxlIDgwNTEqLwlcCgl7MHgwMzAxLCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfUENJX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIDB4RkYsIDB9LC8qUENJZSBETUEgc3RhcnQqLwoKCiNkZWZpbmUgUlRMODgxMl9UUkFOU19DQVJERU1VX1RPX1BETgkJCQkJCQkJCQkJCVwKCS8qIGZvcm1hdCAqLwkJCQkJCQkJCQkJCQkJCQlcCgkvKiB7IG9mZnNldCwgY3V0X21zaywgZmFiX21za3xpbnRlcmZhY2VfbXNrLCBiYXNlfGNtZCwgbXNrLCB2YWx1ZSB9LCAvLyBjb21tZW50cyBoZXJlKi8JXAoJezB4MDAwNSwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCBCSVQ3LCBCSVQ3fSwvKiAweDA0WzE1XSA9IDEqLwoKI2RlZmluZSBSVEw4ODEyX1RSQU5TX1BETl9UT19DQVJERU1VCQkJCQkJCQkJCQkJXAoJLyogZm9ybWF0ICovCQkJCQkJCQkJCQkJCQkJCVwKCS8qIHsgb2Zmc2V0LCBjdXRfbXNrLCBmYWJfbXNrfGludGVyZmFjZV9tc2ssIGJhc2V8Y21kLCBtc2ssIHZhbHVlIH0sIC8vIGNvbW1lbnRzIGhlcmUqLwlcCgl7MHgwMDA1LCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIEJJVDcsIDB9LC8qIDB4MDRbMTVdID0gMCovCgojZGVmaW5lIFJUTDg4MTJfVFJBTlNfQUNUX1RPX0xQUwkJCQkJCQkJCQkJCQkJXAoJLyogZm9ybWF0ICovCQkJCQkJCQkJCQkJCQkJCVwKCS8qIHsgb2Zmc2V0LCBjdXRfbXNrLCBmYWJfbXNrfGludGVyZmFjZV9tc2ssIGJhc2V8Y21kLCBtc2ssIHZhbHVlIH0sIC8vIGNvbW1lbnRzIGhlcmUqLwkJCQkJCQkJXAoJezB4MDMwMSwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX1BDSV9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCAweEZGLCAweEZGfSwvKlBDSWUgRE1BIHN0b3AqLwlcCgl7MHgwNTIyLCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIDB4RkYsIDB4N0Z9LC8qVHggUGF1c2UqLwkJXAoJezB4MDVGOCwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1BPTExJTkcsIDB4RkYsIDB9LC8qU2hvdWxkIGJlIHplcm8gaWYgbm8gcGFja2V0IGlzIHRyYW5zbWl0dGluZyovCVwKCXsweDA1RjksIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9QT0xMSU5HLCAweEZGLCAwfSwvKlNob3VsZCBiZSB6ZXJvIGlmIG5vIHBhY2tldCBpcyB0cmFuc21pdHRpbmcqLwlcCgl7MHgwNUZBLCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfUE9MTElORywgMHhGRiwgMH0sLypTaG91bGQgYmUgemVybyBpZiBubyBwYWNrZXQgaXMgdHJhbnNtaXR0aW5nKi8JXAoJezB4MDVGQiwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1BPTExJTkcsIDB4RkYsIDB9LC8qU2hvdWxkIGJlIHplcm8gaWYgbm8gcGFja2V0IGlzIHRyYW5zbWl0dGluZyovCVwKCXsweDBjMDAsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgMHhGRiwgMHgwNH0sIC8qIDB4YzAwWzc6MF0gPSA0CXR1cm4gb2ZmIDMtd2lyZSAqLwlcCgl7MHgwZTAwLCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIDB4RkYsIDB4MDR9LCAvKiAweGUwMFs3OjBdID0gNAl0dXJuIG9mZiAzLXdpcmUgKi8JXAoJezB4MDAwMiwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCBCSVQwLCAwfSwvKkNDSyBhbmQgT0ZETSBhcmUgZGlzYWJsZWQsYW5kIGNsb2NrIGFyZSBnYXRlZCxhbmQgUkYgY2xvc2VkKi8JXAoJezB4MDAwMiwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX0RFTEFZLCAwLCBQV1JTRVFfREVMQVlfVVN9LC8qRGVsYXkgMXVzKi8JXAoJezB4MDAwMiwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX1VTQl9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCBCSVQxLCAwfSwgIC8qIFdob2xlIEJCIGlzIHJlc2V0Ki8JCQlcCgl7MHgwMTAwLCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIDB4RkYsIDB4MDN9LC8qUmVzZXQgTUFDIFRSWCovCQkJXAoJezB4MDEwMSwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCBCSVQxLCAwfSwvKmNoZWNrIGlmIHJlbW92ZWQgbGF0ZXIqLwkJXAoJezB4MDU1MywgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCBCSVQ1LCBCSVQ1fSwvKlJlc3BvbmQgVHhPSyB0byBzY2hlZHVsZXIqLwoKCiNkZWZpbmUgUlRMODgxMl9UUkFOU19MUFNfVE9fQUNUCQkJCQkJCQkJCQkJCQkJXAoJLyogZm9ybWF0ICovCQkJCQkJCQkJCQkJCQkJCVwKCS8qIHsgb2Zmc2V0LCBjdXRfbXNrLCBmYWJfbXNrfGludGVyZmFjZV9tc2ssIGJhc2V8Y21kLCBtc2ssIHZhbHVlIH0sIC8vIGNvbW1lbnRzIGhlcmUqLwlcCgl7MHgwMDgwLCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfU0RJT19NU0ssUFdSX0JBU0VBRERSX1NESU8sUFdSX0NNRF9XUklURSwgMHhGRiwgMHg4NH0sIC8qU0RJTyBSUFdNKi8JXAoJezB4RkU1OCwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX1VTQl9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCAweEZGLCAweDg0fSwgLypVU0IgUlBXTSovCVwKCXsweDAzNjEsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9QQ0lfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgMHhGRiwgMHg4NH0sIC8qUENJZSBSUFdNKi8JXAoJezB4MDAwMiwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX0RFTEFZLCAwLCBQV1JTRVFfREVMQVlfTVN9LCAvKkRlbGF5Ki8JXAoJezB4MDAwOCwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCBCSVQ0LCAwfSwgLyouCTB4MDhbNF0gPSAwCQkgc3dpdGNoIFRTRiB0byA0ME0qLwlcCgl7MHgwMTA5LCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfUE9MTElORywgQklUNywgMH0sIC8qUG9sbGluZyAweDEwOVs3XT0wICBUU0YgaW4gNDBNKi8JCQlcCgl7MHgwMDI5LCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIEJJVDZ8QklUNywgMH0sIC8qLgkweDI5Wzc6Nl0gPSAyYicwMAkgZW5hYmxlIEJCIGNsb2NrKi8JXAoJezB4MDEwMSwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCBCSVQxLCBCSVQxfSwgLyouCTB4MTAxWzFdID0gMSovCQkJCQlcCgl7MHgwMTAwLCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIDB4RkYsIDB4RkZ9LCAvKi4JMHgxMDBbNzowXSA9IDB4RkYJIGVuYWJsZSBXTUFDIFRSWCovCVwKCXsweDAwMDIsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgQklUMXxCSVQwLCBCSVQxfEJJVDB9LCAvKi4JMHgwMlsxOjBdID0gMmInMTEJIGVuYWJsZSBCQiBtYWNybyovCVwKCXsweDA1MjIsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgMHhGRiwgMH0sIC8qLgkweDUyMiA9IDAqLwoKI2RlZmluZSBSVEw4ODEyX1RSQU5TX0VORAkJCQkJCQkJCQkJCQkJCQlcCgkvKiBmb3JtYXQgKi8JCQkJCQkJCQkJCQkJCQkJXAoJLyogeyBvZmZzZXQsIGN1dF9tc2ssIGZhYl9tc2t8aW50ZXJmYWNlX21zaywgYmFzZXxjbWQsIG1zaywgdmFsdWUgfSwgLy8gY29tbWVudHMgaGVyZSovCQlcCgl7MHhGRkZGLCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSywwLFBXUl9DTURfRU5ELCAwLCAwfSwgLy8KCgpleHRlcm4gc3RydWN0IHdsYW5fcHdyX2NmZyAgcnRsODgxMl9wb3dlcl9vbl9mbG93W1JUTDg4MTJfVFJBTlNfQ0FSREVNVV9UT19BQ1RfU1RFUFMrUlRMODgxMl9UUkFOU19FTkRfU1RFUFNdOwpleHRlcm4gc3RydWN0IHdsYW5fcHdyX2NmZyAgcnRsODgxMl9yYWRpb19vZmZfZmxvd1tSVEw4ODEyX1RSQU5TX0FDVF9UT19DQVJERU1VX1NURVBTK1JUTDg4MTJfVFJBTlNfRU5EX1NURVBTXTsKZXh0ZXJuIHN0cnVjdCB3bGFuX3B3cl9jZmcgIHJ0bDg4MTJfY2FyZF9kaXNhYmxlX2Zsb3dbUlRMODgxMl9UUkFOU19BQ1RfVE9fQ0FSREVNVV9TVEVQUytSVEw4ODEyX1RSQU5TX0NBUkRFTVVfVE9fUEROX1NURVBTK1JUTDg4MTJfVFJBTlNfRU5EX1NURVBTXTsKZXh0ZXJuIHN0cnVjdCB3bGFuX3B3cl9jZmcgIHJ0bDg4MTJfY2FyZF9lbmFibGVfZmxvd1tSVEw4ODEyX1RSQU5TX0FDVF9UT19DQVJERU1VX1NURVBTK1JUTDg4MTJfVFJBTlNfQ0FSREVNVV9UT19QRE5fU1RFUFMrUlRMODgxMl9UUkFOU19FTkRfU1RFUFNdOwpleHRlcm4gc3RydWN0IHdsYW5fcHdyX2NmZyAgcnRsODgxMl9zdXNwZW5kX2Zsb3dbUlRMODgxMl9UUkFOU19BQ1RfVE9fQ0FSREVNVV9TVEVQUytSVEw4ODEyX1RSQU5TX0NBUkRFTVVfVE9fU1VTX1NURVBTK1JUTDg4MTJfVFJBTlNfRU5EX1NURVBTXTsKZXh0ZXJuIHN0cnVjdCB3bGFuX3B3cl9jZmcgIHJ0bDg4MTJfcmVzdW1lX2Zsb3dbUlRMODgxMl9UUkFOU19BQ1RfVE9fQ0FSREVNVV9TVEVQUytSVEw4ODEyX1RSQU5TX0NBUkRFTVVfVE9fU1VTX1NURVBTK1JUTDg4MTJfVFJBTlNfRU5EX1NURVBTXTsKZXh0ZXJuIHN0cnVjdCB3bGFuX3B3cl9jZmcgIHJ0bDg4MTJfaHdwZG5fZmxvd1tSVEw4ODEyX1RSQU5TX0FDVF9UT19DQVJERU1VX1NURVBTK1JUTDg4MTJfVFJBTlNfQ0FSREVNVV9UT19QRE5fU1RFUFMrUlRMODgxMl9UUkFOU19FTkRfU1RFUFNdOwpleHRlcm4gc3RydWN0IHdsYW5fcHdyX2NmZyAgcnRsODgxMl9lbnRlcl9scHNfZmxvd1tSVEw4ODEyX1RSQU5TX0FDVF9UT19MUFNfU1RFUFMrUlRMODgxMl9UUkFOU19FTkRfU1RFUFNdOwpleHRlcm4gc3RydWN0IHdsYW5fcHdyX2NmZyAgcnRsODgxMl9sZWF2ZV9scHNfZmxvd1tSVEw4ODEyX1RSQU5TX0xQU19UT19BQ1RfU1RFUFMrUlRMODgxMl9UUkFOU19FTkRfU1RFUFNdOwoKLyoKCUNoZWNrIGRvY3VtZW50IFdNLTIwMTMwNTE2LUphY2tpZUxhdS1SVEw4ODIxQV9Qb3dlcl9BcmNoaXRlY3R1cmUtUjEwLnZzZAoJVGhlcmUgYXJlIDYgSFcgUG93ZXIgU3RhdGVzOgoJMDogUE9GRi0tUG93ZXIgT2ZmCgkxOiBQRE4tLVBvd2VyIERvd24KCTI6IENBUkRFTVUtLUNhcmQgRW11bGF0aW9uCgkzOiBBQ1QtLUFjdGl2ZSBNb2RlCgk0OiBMUFMtLUxvdyBQb3dlciBTdGF0ZQoJNTogU1VTLS1TdXNwZW5kCgoJVGhlIHRyYW5zaXNpb24gZnJvbSBkaWZmZXJlbnQgc3RhdGVzIGFyZSBkZWZpbmVkIGJlbG93CglUUkFOU19DQVJERU1VX1RPX0FDVAoJVFJBTlNfQUNUX1RPX0NBUkRFTVUKCVRSQU5TX0NBUkRFTVVfVE9fU1VTCglUUkFOU19TVVNfVE9fQ0FSREVNVQoJVFJBTlNfQ0FSREVNVV9UT19QRE4KCVRSQU5TX0FDVF9UT19MUFMKCVRSQU5TX0xQU19UT19BQ1QKCglUUkFOU19FTkQKKi8KI2RlZmluZQlSVEw4ODIxQV9UUkFOU19DQVJERU1VX1RPX0FDVF9TVEVQUwkyNQojZGVmaW5lCVJUTDg4MjFBX1RSQU5TX0FDVF9UT19DQVJERU1VX1NURVBTCTE1CiNkZWZpbmUJUlRMODgyMUFfVFJBTlNfQ0FSREVNVV9UT19TVVNfU1RFUFMJMTUKI2RlZmluZQlSVEw4ODIxQV9UUkFOU19TVVNfVE9fQ0FSREVNVV9TVEVQUwkxNQojZGVmaW5lIFJUTDg4MjFBX1RSQU5TX0NBUkRESVNfVE9fQ0FSREVNVV9TVEVQUwkxNQojZGVmaW5lCVJUTDg4MjFBX1RSQU5TX0NBUkRFTVVfVE9fUEROX1NURVBTCTE1CiNkZWZpbmUJUlRMODgyMUFfVFJBTlNfUEROX1RPX0NBUkRFTVVfU1RFUFMJMTUKI2RlZmluZQlSVEw4ODIxQV9UUkFOU19BQ1RfVE9fTFBTX1NURVBTCTE1CiNkZWZpbmUJUlRMODgyMUFfVFJBTlNfTFBTX1RPX0FDVF9TVEVQUwkxNQojZGVmaW5lCVJUTDg4MjFBX1RSQU5TX0VORF9TVEVQUwkxCgoKI2RlZmluZSBSVEw4ODIxQV9UUkFOU19DQVJERU1VX1RPX0FDVCAJCQkJCQkJCQkJCQkJCVwKCS8qIGZvcm1hdCAqLwkJCQkJCQkJCQkJCQkJCQlcCgkvKiB7IG9mZnNldCwgY3V0X21zaywgZmFiX21za3xpbnRlcmZhY2VfbXNrLCBiYXNlfGNtZCwgbXNrLCB2YWx1ZSB9LCAvLyBjb21tZW50cyBoZXJlKi8JCQkJCQkJCVwKCXsweDAwMjAsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9VU0JfTVNLfFBXUl9JTlRGX1NESU9fTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgQklUMCwgQklUMH0sIC8qMHgyMFswXSA9IDFiJzEgZW5hYmxlIExET0ExMiBNQUNSTyBibG9jayBmb3IgYWxsIGludGVyZmFjZSovICAgXAoJezB4MDA2NywgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX1VTQl9NU0t8UFdSX0lOVEZfU0RJT19NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCBCSVQ0LCAwfSwgLyoweDY3WzBdID0gMCB0byBkaXNhYmxlIEJUX0dQU19TRUwgcGlucyovCVwKCXsweDAwMDEsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9VU0JfTVNLfFBXUl9JTlRGX1NESU9fTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9ERUxBWSwgMSwgUFdSU0VRX0RFTEFZX01TfSwvKkRlbGF5IDFtcyovICAgXAoJezB4MDAwMCwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX1VTQl9NU0t8UFdSX0lOVEZfU0RJT19NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCBCSVQ1LCAwfSwgLyoweDAwWzVdID0gMWInMCByZWxlYXNlIGFuYWxvZyBJcHMgdG8gZGlnaXRhbCAsMTppc29sYXRpb24qLyAgIFwKCXsweDAwMDUsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgKEJJVDR8QklUM3xCSVQyKSwgMH0sLyogZGlzYWJsZSBTVyBMUFMgMHgwNFsxMF09MCBhbmQgV0xTVVNfRU4gMHgwNFsxMjoxMV09MCovCVwKCXsweDAwNzUsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9QQ0lfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgQklUMCAsIEJJVDB9LC8qIERpc2FibGUgVVNCIHN1c3BlbmQgKi8JXAoJezB4MDAwNiwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1BPTExJTkcsIEJJVDEsIEJJVDF9LC8qIHdhaXQgdGlsbCAweDA0WzE3XSA9IDEgICAgcG93ZXIgcmVhZHkqLwlcCgl7MHgwMDc1LCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfUENJX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIEJJVDAgLCAwfSwvKiBFbmFibGUgVVNCIHN1c3BlbmQgKi8JXAoJezB4MDAwNiwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCBCSVQwLCBCSVQwfSwvKiByZWxlYXNlIFdMT04gcmVzZXQgIDB4MDRbMTZdPTEqLwlcCgl7MHgwMDA1LCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIEJJVDcsIDB9LC8qIGRpc2FibGUgSFdQRE4gMHgwNFsxNV09MCovCVwKCXsweDAwMDUsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgKEJJVDR8QklUMyksIDB9LC8qIGRpc2FibGUgV0wgc3VzcGVuZCovCVwKCXsweDAwMDUsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgQklUMCwgQklUMH0sLyogcG9sbGluZyB1bnRpbCByZXR1cm4gMCovCVwKCXsweDAwMDUsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9QT0xMSU5HLCBCSVQwLCAwfSwvKiovCVwKCXsweDAwNEYsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgQklUMCwgQklUMH0sLyoweDRDWzI0XSA9IDB4NEZbMF0gPSAxLCBzd2l0Y2ggRFBEVF9TRUxfUCBvdXRwdXQgZnJvbSBXTCBCQiAqL1wKCXsweDAwNjcsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgKEJJVDV8QklUNCksIChCSVQ1fEJJVDQpfSwvKjB4NjZbMTNdID0gMHg2N1s1XSA9IDEsIHN3aXRjaCBmb3IgUEFQRV9HL1BBUEVfQSBmcm9tIFdMIEJCIDsgMHg2NlsxMl0gPSAweDY3WzRdID0gMSwgc3dpdGNoIExOQU9OIGZyb20gV0wgQkIgKi9cCgl7MHgwMDI1LCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIEJJVDYsIDB9LC8qYW5hcGFyX21hYzwxMTg+ICwgMHgyNVs2XT0wIGJ5IHdsYW4gc2luZ2xlIGZ1bmN0aW9uKi9cCgl7MHgwMDQ5LCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIEJJVDEsIEJJVDF9LC8qRW5hYmxlIGZhbGxpbmcgZWRnZSB0cmlnZ2VyaW5nIGludGVycnVwdCovXAoJezB4MDA2MywgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCBCSVQxLCBCSVQxfSwvKkVuYWJsZSBHUElPOSBpbnRlcnJ1cHQgbW9kZSovXAoJezB4MDA2MiwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCBCSVQxLCAwfSwvKkVuYWJsZSBHUElPOSBpbnB1dCBtb2RlKi9cCgl7MHgwMDU4LCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIEJJVDAsIEJJVDB9LC8qRW5hYmxlIEhTSVNSIEdQSU9bQzowXSBpbnRlcnJ1cHQqL1wKCXsweDAwNUEsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgQklUMSwgQklUMX0sLypFbmFibGUgSFNJU1IgR1BJTzkgaW50ZXJydXB0Ki9cCgl7MHgwMDdBLCBQV1JfQ1VUX1RFU1RDSElQX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgMHhGRiwgMHgzQX0sLyoweDdBID0gMHgzQSBzdGFydCBCVCovXAoJezB4MDAyRSwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCAweEZGICwgMHg4MiB9LC8qIDB4MkNbMjM6MTJdPTB4ODIwIDsgWFRBTCB0cmltICovIFwKCXsweDAwMTAsIFBXUl9DVVRfQV9NU0sgLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCBCSVQ2ICwgQklUNiB9LC8qIDB4MTBbNl09MSA7IE1Qt3O8V7nvqfMweDJDqrqxsajuxXahQba3p+IweDEwWzZds12ssDGkfq/gxf1XTEFOsbGo7iAqLyBcCgoKI2RlZmluZSBSVEw4ODIxQV9UUkFOU19BQ1RfVE9fQ0FSREVNVQkJCQkJCQkJCQkJCQlcCgkvKiBmb3JtYXQgKi8JCQkJCQkJCQkJCQkJCQkJXAoJLyogeyBvZmZzZXQsIGN1dF9tc2ssIGZhYl9tc2t8aW50ZXJmYWNlX21zaywgYmFzZXxjbWQsIG1zaywgdmFsdWUgfSwgLy8gY29tbWVudHMgaGVyZSovCQkJCQkJCQlcCgl7MHgwMDFGLCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIDB4RkYsIDB9LC8qMHgxRls3OjBdID0gMCB0dXJuIG9mZiBSRiovCVwKCXsweDAwNEYsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgQklUMCwgMH0sLyoweDRDWzI0XSA9IDB4NEZbMF0gPSAwLCBzd2l0Y2ggRFBEVF9TRUxfUCBvdXRwdXQgZnJvbSByZWdpc3RlciAweDY1WzJdICovXAoJezB4MDA0OSwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCBCSVQxLCAwfSwvKkVuYWJsZSByaXNpbmcgZWRnZSB0cmlnZ2VyaW5nIGludGVycnVwdCovIFwKCXsweDAwMDUsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgQklUMSwgQklUMX0sIC8qMHgwNFs5XSA9IDEgdHVybiBvZmYgTUFDIGJ5IEhXIHN0YXRlIG1hY2hpbmUqLwlcCgl7MHgwMDA1LCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfUE9MTElORywgQklUMSwgMH0sIC8qd2FpdCB0aWxsIDB4MDRbOV0gPSAwIHBvbGxpbmcgdW50aWwgcmV0dXJuIDAgdG8gZGlzYWJsZSovCVwKCXsweDAwMDAsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9VU0JfTVNLfFBXUl9JTlRGX1NESU9fTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgQklUNSwgQklUNX0sIC8qMHgwMFs1XSA9IDFiJzEgYW5hbG9nIElwcyB0byBkaWdpdGFsICwxOmlzb2xhdGlvbiovICAgXAoJezB4MDAyMCwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX1VTQl9NU0t8UFdSX0lOVEZfU0RJT19NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCBCSVQwLCAwfSwgLyoweDIwWzBdID0gMWInMCBkaXNhYmxlIExET0ExMiBNQUNSTyBibG9jayovICAgXAoKCiNkZWZpbmUgUlRMODgyMUFfVFJBTlNfQ0FSREVNVV9UT19TVVMJCQkJCQkJCQkJCQkJXAoJLyogZm9ybWF0ICovCQkJCQkJCQkJCQkJCQkJCVwKCS8qIHsgb2Zmc2V0LCBjdXRfbXNrLCBmYWJfbXNrfGludGVyZmFjZV9tc2ssIGJhc2V8Y21kLCBtc2ssIHZhbHVlIH0sIC8vIGNvbW1lbnRzIGhlcmUqLwkJCQkJCQkJXAoJezB4MDAwNSwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX1BDSV9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCBCSVQ0fEJJVDMsIChCSVQ0fEJJVDMpfSwgLyoweDA0WzEyOjExXSA9IDJiJzExIGVuYWJsZSBXTCBzdXNwZW5kIGZvciBQQ0llKi8JXAoJezB4MDAwNSwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX1VTQl9NU0t8UFdSX0lOVEZfU0RJT19NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCBCSVQzfEJJVDQsIEJJVDN9LCAvKjB4MDRbMTI6MTFdID0gMmInMDEgZW5hYmxlIFdMIHN1c3BlbmQqLwlcCgl7MHgwMDIzLCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfU0RJT19NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCBCSVQ0LCBCSVQ0fSwgLyoweDIzWzRdID0gMWInMSAxMkggTERPIGVudGVyIHNsZWVwIG1vZGUqLyAgIFwKCXsweDAwMDcsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9TRElPX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIDB4RkYsIDB4MjB9LCAvKjB4MDdbNzowXSA9IDB4MjAgU0RJTyBTT1Agb3B0aW9uIHRvIGRpc2FibGUgQkcvTUIvQUNLL1NXUiovICAgXAoJezB4MDAwNSwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX1BDSV9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCBCSVQzfEJJVDQsIEJJVDN8QklUNH0sIC8qMHgwNFsxMjoxMV0gPSAyYicxMSBlbmFibGUgV0wgc3VzcGVuZCBmb3IgUENJZSovCVwKCXsweDAwODYsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9TRElPX01TSyxQV1JfQkFTRUFERFJfU0RJTyxQV1JfQ01EX1dSSVRFLCBCSVQwLCBCSVQwfSwgLypTZXQgU0RJTyBzdXNwZW5kIGxvY2FsIHJlZ2lzdGVyKi8JXAoJezB4MDA4NiwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX1NESU9fTVNLLFBXUl9CQVNFQUREUl9TRElPLFBXUl9DTURfUE9MTElORywgQklUMSwgMH0sIC8qd2FpdCBwb3dlciBzdGF0ZSB0byBzdXNwZW5kKi8KCiNkZWZpbmUgUlRMODgyMUFfVFJBTlNfU1VTX1RPX0NBUkRFTVUJCQkJCQkJCQkJCQkJXAoJLyogZm9ybWF0ICovCQkJCQkJCQkJCQkJCQkJCVwKCS8qIHsgb2Zmc2V0LCBjdXRfbXNrLCBmYWJfbXNrfGludGVyZmFjZV9tc2ssIGJhc2V8Y21kLCBtc2ssIHZhbHVlIH0sIC8vIGNvbW1lbnRzIGhlcmUqLwkJCQkJCQkJXAoJezB4MDAwNSwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCBCSVQzIHwgQklUNywgMH0sIC8qY2xlYXIgc3VzcGVuZCBlbmFibGUgYW5kIHBvd2VyIGRvd24gZW5hYmxlKi8JXAoJezB4MDA4NiwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX1NESU9fTVNLLFBXUl9CQVNFQUREUl9TRElPLFBXUl9DTURfV1JJVEUsIEJJVDAsIDB9LCAvKlNldCBTRElPIHN1c3BlbmQgbG9jYWwgcmVnaXN0ZXIqLwlcCgl7MHgwMDg2LCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfU0RJT19NU0ssUFdSX0JBU0VBRERSX1NESU8sUFdSX0NNRF9QT0xMSU5HLCBCSVQxLCBCSVQxfSwgLyp3YWl0IHBvd2VyIHN0YXRlIHRvIHN1c3BlbmQqL1wKCXsweDAwMjMsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9TRElPX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIEJJVDQsIDB9LCAvKjB4MjNbNF0gPSAxYicwIDEySCBMRE8gZW50ZXIgbm9ybWFsIG1vZGUqLyAgIFwKCXsweDAwMDUsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgQklUM3xCSVQ0LCAwfSwgLyoweDA0WzEyOjExXSA9IDJiJzAxZW5hYmxlIFdMIHN1c3BlbmQqLwoKI2RlZmluZSBSVEw4ODIxQV9UUkFOU19DQVJERU1VX1RPX0NBUkRESVMJCQkJCQkJCQkJCQkJXAoJLyogZm9ybWF0ICovCQkJCQkJCQkJCQkJCQkJCVwKCS8qIHsgb2Zmc2V0LCBjdXRfbXNrLCBmYWJfbXNrfGludGVyZmFjZV9tc2ssIGJhc2V8Y21kLCBtc2ssIHZhbHVlIH0sIC8vIGNvbW1lbnRzIGhlcmUqLwkJCQkJCQkJXAoJezB4MDAwNywgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX1NESU9fTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgMHhGRiwgMHgyMH0sIC8qMHgwNz0weDIwICwgU09QIG9wdGlvbiB0byBkaXNhYmxlIEJHL01CKi8JXAoJezB4MDAwNSwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX1VTQl9NU0t8UFdSX0lOVEZfU0RJT19NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCBCSVQzfEJJVDQsIEJJVDN9LCAvKjB4MDRbMTI6MTFdID0gMmInMDEgZW5hYmxlIFdMIHN1c3BlbmQqLwlcCgl7MHgwMDA1LCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfUENJX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIEJJVDIsIEJJVDJ9LCAvKjB4MDRbMTBdID0gMSwgZW5hYmxlIFNXIExQUyovCVwKICAgICAgICB7MHgwMDRBLCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfVVNCX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIEJJVDAsIDF9LCAvKjB4NDhbMTZdID0gMSB0byBlbmFibGUgR1BJTzkgYXMgRVhUIFdBS0VVUCovICAgXAoJezB4MDAyMywgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX1NESU9fTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgQklUNCwgQklUNH0sIC8qMHgyM1s0XSA9IDFiJzEgMTJIIExETyBlbnRlciBzbGVlcCBtb2RlKi8gICBcCgl7MHgwMDg2LCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfU0RJT19NU0ssUFdSX0JBU0VBRERSX1NESU8sUFdSX0NNRF9XUklURSwgQklUMCwgQklUMH0sIC8qU2V0IFNESU8gc3VzcGVuZCBsb2NhbCByZWdpc3RlciovCVwKCXsweDAwODYsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9TRElPX01TSyxQV1JfQkFTRUFERFJfU0RJTyxQV1JfQ01EX1BPTExJTkcsIEJJVDEsIDB9LCAvKndhaXQgcG93ZXIgc3RhdGUgdG8gc3VzcGVuZCovCgojZGVmaW5lIFJUTDg4MjFBX1RSQU5TX0NBUkRESVNfVE9fQ0FSREVNVQkJCQkJCQkJCQkJCQlcCgkvKiBmb3JtYXQgKi8JCQkJCQkJCQkJCQkJCQkJXAoJLyogeyBvZmZzZXQsIGN1dF9tc2ssIGZhYl9tc2t8aW50ZXJmYWNlX21zaywgYmFzZXxjbWQsIG1zaywgdmFsdWUgfSwgLy8gY29tbWVudHMgaGVyZSovCQkJCQkJCQlcCgl7MHgwMDA1LCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIEJJVDMgfCBCSVQ3LCAwfSwgLypjbGVhciBzdXNwZW5kIGVuYWJsZSBhbmQgcG93ZXIgZG93biBlbmFibGUqLwlcCgl7MHgwMDg2LCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfU0RJT19NU0ssUFdSX0JBU0VBRERSX1NESU8sUFdSX0NNRF9XUklURSwgQklUMCwgMH0sIC8qU2V0IFNESU8gc3VzcGVuZCBsb2NhbCByZWdpc3RlciovCVwKCXsweDAwODYsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9TRElPX01TSyxQV1JfQkFTRUFERFJfU0RJTyxQV1JfQ01EX1BPTExJTkcsIEJJVDEsIEJJVDF9LCAvKndhaXQgcG93ZXIgc3RhdGUgdG8gc3VzcGVuZCovXAoJezB4MDA0QSwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX1VTQl9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCBCSVQwLCAwfSwgLyoweDQ4WzE2XSA9IDAgdG8gZGlzYWJsZSBHUElPOSBhcyBFWFQgV0FLRVVQKi8gICBcCgl7MHgwMDA1LCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIEJJVDN8QklUNCwgMH0sIC8qMHgwNFsxMjoxMV0gPSAyYicwMWVuYWJsZSBXTCBzdXNwZW5kKi9cCgl7MHgwMDIzLCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfU0RJT19NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCBCSVQ0LCAwfSwgLyoweDIzWzRdID0gMWInMCAxMkggTERPIGVudGVyIG5vcm1hbCBtb2RlKi8gICBcCgl7MHgwMzAxLCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfUENJX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIDB4RkYsIDB9LC8qUENJZSBETUEgc3RhcnQqLwoKCiNkZWZpbmUgUlRMODgyMUFfVFJBTlNfQ0FSREVNVV9UT19QRE4JCQkJCQkJCQkJCQlcCgkvKiBmb3JtYXQgKi8JCQkJCQkJCQkJCQkJCQkJXAoJLyogeyBvZmZzZXQsIGN1dF9tc2ssIGZhYl9tc2t8aW50ZXJmYWNlX21zaywgYmFzZXxjbWQsIG1zaywgdmFsdWUgfSwgLy8gY29tbWVudHMgaGVyZSovCQkJCQkJCQlcCgl7MHgwMDIzLCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfU0RJT19NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCBCSVQ0LCBCSVQ0fSwgLyoweDIzWzRdID0gMWInMSAxMkggTERPIGVudGVyIHNsZWVwIG1vZGUqLyAgIFwKCXsweDAwMDcsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9TRElPX01TS3xQV1JfSU5URl9VU0JfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgMHhGRiwgMHgyMH0sIC8qMHgwN1s3OjBdID0gMHgyMCBTT1Agb3B0aW9uIHRvIGRpc2FibGUgQkcvTUIvQUNLL1NXUiovICAgXAoJezB4MDAwNiwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCBCSVQwLCAwfSwvKiAweDA0WzE2XSA9IDAqL1wKCXsweDAwMDUsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgQklUNywgQklUN30sLyogMHgwNFsxNV0gPSAxKi8KCiNkZWZpbmUgUlRMODgyMUFfVFJBTlNfUEROX1RPX0NBUkRFTVUJCQkJCQkJCQkJCQlcCgkvKiBmb3JtYXQgKi8JCQkJCQkJCQkJCQkJCQkJXAoJLyogeyBvZmZzZXQsIGN1dF9tc2ssIGZhYl9tc2t8aW50ZXJmYWNlX21zaywgYmFzZXxjbWQsIG1zaywgdmFsdWUgfSwgLy8gY29tbWVudHMgaGVyZSovCQkJCQkJCQlcCgl7MHgwMDA1LCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIEJJVDcsIDB9LC8qIDB4MDRbMTVdID0gMCovCgojZGVmaW5lIFJUTDg4MjFBX1RSQU5TX0FDVF9UT19MUFMJCQkJCQkJCQkJCQkJCVwKCS8qIGZvcm1hdCAqLwkJCQkJCQkJCQkJCQkJCQlcCgkvKiB7IG9mZnNldCwgY3V0X21zaywgZmFiX21za3xpbnRlcmZhY2VfbXNrLCBiYXNlfGNtZCwgbXNrLCB2YWx1ZSB9LCAvLyBjb21tZW50cyBoZXJlKi8JCQkJCQkJCVwKCXsweDAzMDEsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9QQ0lfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgMHhGRiwgMHhGRn0sLypQQ0llIERNQSBzdG9wKi8JXAoJezB4MDUyMiwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCAweEZGLCAweEZGfSwvKlR4IFBhdXNlKi8JXAoJezB4MDVGOCwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1BPTExJTkcsIDB4RkYsIDB9LC8qU2hvdWxkIGJlIHplcm8gaWYgbm8gcGFja2V0IGlzIHRyYW5zbWl0dGluZyovCVwKCXsweDA1RjksIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9QT0xMSU5HLCAweEZGLCAwfSwvKlNob3VsZCBiZSB6ZXJvIGlmIG5vIHBhY2tldCBpcyB0cmFuc21pdHRpbmcqLwlcCgl7MHgwNUZBLCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfUE9MTElORywgMHhGRiwgMH0sLypTaG91bGQgYmUgemVybyBpZiBubyBwYWNrZXQgaXMgdHJhbnNtaXR0aW5nKi8JXAoJezB4MDVGQiwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1BPTExJTkcsIDB4RkYsIDB9LC8qU2hvdWxkIGJlIHplcm8gaWYgbm8gcGFja2V0IGlzIHRyYW5zbWl0dGluZyovCVwKCXsweDAwMDIsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgQklUMCwgMH0sLypDQ0sgYW5kIE9GRE0gYXJlIGRpc2FibGVkLGFuZCBjbG9jayBhcmUgZ2F0ZWQqLwlcCgl7MHgwMDAyLCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfREVMQVksIDAsIFBXUlNFUV9ERUxBWV9VU30sLypEZWxheSAxdXMqLwlcCgl7MHgwMDAyLCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIEJJVDEsIDB9LC8qV2hvbGUgQkIgaXMgcmVzZXQqLwlcCgl7MHgwMTAwLCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIDB4RkYsIDB4MDN9LC8qUmVzZXQgTUFDIFRSWCovCVwKCXsweDAxMDEsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgQklUMSwgMH0sLypjaGVjayBpZiByZW1vdmVkIGxhdGVyKi8JXAoJezB4MDA5MywgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX1NESU9fTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgMHhGRiwgMHgwMH0sLypXaGVuIGRyaXZlciBlbnRlciBTdXMvIERpc2FibGUsIGVuYWJsZSBMT1AgZm9yIEJUKi8JXAoJezB4MDU1MywgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCBCSVQ1LCBCSVQ1fSwvKlJlc3BvbmQgVHhPSyB0byBzY2hlZHVsZXIqLwlcCgoKI2RlZmluZSBSVEw4ODIxQV9UUkFOU19MUFNfVE9fQUNUCQkJCQkJCQkJCQkJCQkJXAoJLyogZm9ybWF0ICovCQkJCQkJCQkJCQkJCQkJCVwKCS8qIHsgb2Zmc2V0LCBjdXRfbXNrLCBmYWJfbXNrfGludGVyZmFjZV9tc2ssIGJhc2V8Y21kLCBtc2ssIHZhbHVlIH0sIC8vIGNvbW1lbnRzIGhlcmUqLwkJCQkJCQkJXAoJezB4MDA4MCwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX1NESU9fTVNLLFBXUl9CQVNFQUREUl9TRElPLFBXUl9DTURfV1JJVEUsIDB4RkYsIDB4ODR9LCAvKlNESU8gUlBXTSovXAoJezB4RkU1OCwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX1VTQl9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCAweEZGLCAweDg0fSwgLypVU0IgUlBXTSovXAoJezB4MDM2MSwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX1BDSV9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCAweEZGLCAweDg0fSwgLypQQ0llIFJQV00qL1wKCXsweDAwMDIsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9ERUxBWSwgMCwgUFdSU0VRX0RFTEFZX01TfSwgLypEZWxheSovXAoJezB4MDAwOCwgUFdSX0NVVF9BTExfTVNLLCBQV1JfRkFCX0FMTF9NU0ssIFBXUl9JTlRGX0FMTF9NU0ssUFdSX0JBU0VBRERSX01BQyxQV1JfQ01EX1dSSVRFLCBCSVQ0LCAwfSwgLyouCTB4MDhbNF0gPSAwCQkgc3dpdGNoIFRTRiB0byA0ME0qL1wKCXsweDAxMDksIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9QT0xMSU5HLCBCSVQ3LCAwfSwgLypQb2xsaW5nIDB4MTA5WzddPTAgIFRTRiBpbiA0ME0qL1wKCXsweDAwMjksIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgQklUNnxCSVQ3LCAwfSwgLyouCTB4MjlbNzo2XSA9IDJiJzAwCSBlbmFibGUgQkIgY2xvY2sqL1wKCXsweDAxMDEsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgQklUMSwgQklUMX0sIC8qLgkweDEwMVsxXSA9IDEqL1wKCXsweDAxMDAsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgMHhGRiwgMHhGRn0sIC8qLgkweDEwMFs3OjBdID0gMHhGRgkgZW5hYmxlIFdNQUMgVFJYKi9cCgl7MHgwMDAyLCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSyxQV1JfQkFTRUFERFJfTUFDLFBXUl9DTURfV1JJVEUsIEJJVDF8QklUMCwgQklUMXxCSVQwfSwgLyouCTB4MDJbMTowXSA9IDJiJzExCSBlbmFibGUgQkIgbWFjcm8qL1wKCXsweDA1MjIsIFBXUl9DVVRfQUxMX01TSywgUFdSX0ZBQl9BTExfTVNLLCBQV1JfSU5URl9BTExfTVNLLFBXUl9CQVNFQUREUl9NQUMsUFdSX0NNRF9XUklURSwgMHhGRiwgMH0sIC8qLgkweDUyMiA9IDAqLwoKI2RlZmluZSBSVEw4ODIxQV9UUkFOU19FTkQJCQkJCQkJCQkJCQkJCQlcCgkvKiBmb3JtYXQgKi8JCQkJCQkJCQkJCQkJCQkJXAoJLyogeyBvZmZzZXQsIGN1dF9tc2ssIGZhYl9tc2t8aW50ZXJmYWNlX21zaywgYmFzZXxjbWQsIG1zaywgdmFsdWUgfSwgLy8gY29tbWVudHMgaGVyZSovCQkJCQkJCQlcCgl7MHhGRkZGLCBQV1JfQ1VUX0FMTF9NU0ssIFBXUl9GQUJfQUxMX01TSywgUFdSX0lOVEZfQUxMX01TSywwLFBXUl9DTURfRU5ELCAwLCAwfSwgLy8KCmV4dGVybiBzdHJ1Y3Qgd2xhbl9wd3JfY2ZnIHJ0bDg4MjFBX3Bvd2VyX29uX2Zsb3dbUlRMODgyMUFfVFJBTlNfQ0FSREVNVV9UT19BQ1RfU1RFUFMKCQkJCQkJKyBSVEw4ODIxQV9UUkFOU19FTkRfU1RFUFNdOwpleHRlcm4gc3RydWN0IHdsYW5fcHdyX2NmZyBydGw4ODIxQV9yYWRpb19vZmZfZmxvd1tSVEw4ODIxQV9UUkFOU19BQ1RfVE9fQ0FSREVNVV9TVEVQUwoJCQkJCQkrIFJUTDg4MjFBX1RSQU5TX0VORF9TVEVQU107CmV4dGVybiBzdHJ1Y3Qgd2xhbl9wd3JfY2ZnIHJ0bDg4MjFBX2NhcmRfZGlzYWJsZV9mbG93W1JUTDg4MjFBX1RSQU5TX0FDVF9UT19DQVJERU1VX1NURVBTCgkJCQkJCSsgUlRMODgyMUFfVFJBTlNfQ0FSREVNVV9UT19QRE5fU1RFUFMKCQkJCQkJKyBSVEw4ODIxQV9UUkFOU19FTkRfU1RFUFNdOwpleHRlcm4gc3RydWN0IHdsYW5fcHdyX2NmZyBydGw4ODIxQV9jYXJkX2VuYWJsZV9mbG93W1JUTDg4MjFBX1RSQU5TX0FDVF9UT19DQVJERU1VX1NURVBTCgkJCQkJCSsgUlRMODgyMUFfVFJBTlNfQ0FSREVNVV9UT19BQ1RfU1RFUFMvKlJUTDg4MjFBX1RSQU5TX0NBUkRFTVVfVE9fUEROX1NURVBTKi8KCQkJCQkJKyBSVEw4ODIxQV9UUkFOU19FTkRfU1RFUFNdOwpleHRlcm4gc3RydWN0IHdsYW5fcHdyX2NmZyBydGw4ODIxQV9zdXNwZW5kX2Zsb3dbUlRMODgyMUFfVFJBTlNfQUNUX1RPX0NBUkRFTVVfU1RFUFMKCQkJCQkJKyBSVEw4ODIxQV9UUkFOU19DQVJERU1VX1RPX1NVU19TVEVQUwoJCQkJCQkrIFJUTDg4MjFBX1RSQU5TX0VORF9TVEVQU107CmV4dGVybiBzdHJ1Y3Qgd2xhbl9wd3JfY2ZnIHJ0bDg4MjFBX3Jlc3VtZV9mbG93W1JUTDg4MjFBX1RSQU5TX0FDVF9UT19DQVJERU1VX1NURVBTCgkJCQkJCSsgUlRMODgyMUFfVFJBTlNfQ0FSREVNVV9UT19TVVNfU1RFUFMKCQkJCQkJKyBSVEw4ODIxQV9UUkFOU19FTkRfU1RFUFNdOwpleHRlcm4gc3RydWN0IHdsYW5fcHdyX2NmZyBydGw4ODIxQV9od3Bkbl9mbG93W1JUTDg4MjFBX1RSQU5TX0FDVF9UT19DQVJERU1VX1NURVBTCgkJCQkJCSsgUlRMODgyMUFfVFJBTlNfQ0FSREVNVV9UT19QRE5fU1RFUFMKCQkJCQkJKyBSVEw4ODIxQV9UUkFOU19FTkRfU1RFUFNdOwpleHRlcm4gc3RydWN0IHdsYW5fcHdyX2NmZyBydGw4ODIxQV9lbnRlcl9scHNfZmxvd1tSVEw4ODIxQV9UUkFOU19BQ1RfVE9fTFBTX1NURVBTCgkJCQkJCSsgUlRMODgyMUFfVFJBTlNfRU5EX1NURVBTXTsKZXh0ZXJuIHN0cnVjdCB3bGFuX3B3cl9jZmcgcnRsODgyMUFfbGVhdmVfbHBzX2Zsb3dbUlRMODgyMUFfVFJBTlNfTFBTX1RPX0FDVF9TVEVQUwoJCQkJCQkrIFJUTDg4MjFBX1RSQU5TX0VORF9TVEVQU107CgovKlJUTDg4MTIgUG93ZXIgQ29uZmlndXJhdGlvbiBDTURzIGZvciBQQ0llIGludGVyZmFjZSovCiNkZWZpbmUgUlRMODgxMl9OSUNfUFdSX09OX0ZMT1cJCQkJcnRsODgxMl9wb3dlcl9vbl9mbG93CiNkZWZpbmUgUlRMODgxMl9OSUNfUkZfT0ZGX0ZMT1cJCQkJcnRsODgxMl9yYWRpb19vZmZfZmxvdwojZGVmaW5lIFJUTDg4MTJfTklDX0RJU0FCTEVfRkxPVyAJCQlydGw4ODEyX2NhcmRfZGlzYWJsZV9mbG93CiNkZWZpbmUgUlRMODgxMl9OSUNfRU5BQkxFX0ZMT1cJCQkJcnRsODgxMl9jYXJkX2VuYWJsZV9mbG93CiNkZWZpbmUgUlRMODgxMl9OSUNfU1VTUEVORF9GTE9XCQkJcnRsODgxMl9zdXNwZW5kX2Zsb3cKI2RlZmluZSBSVEw4ODEyX05JQ19SRVNVTUVfRkxPVwkJCQlydGw4ODEyX3Jlc3VtZV9mbG93CiNkZWZpbmUgUlRMODgxMl9OSUNfUEROX0ZMT1cJCQkJCXJ0bDg4MTJfaHdwZG5fZmxvdwojZGVmaW5lIFJUTDg4MTJfTklDX0xQU19FTlRFUl9GTE9XCQkJcnRsODgxMl9lbnRlcl9scHNfZmxvdwojZGVmaW5lIFJUTDg4MTJfTklDX0xQU19MRUFWRV9GTE9XCQkJcnRsODgxMl9sZWF2ZV9scHNfZmxvdwoKLyogUlRMODgyMSBQb3dlciBDb25maWd1cmF0aW9uIENNRHMgZm9yIFBDSWUgaW50ZXJmYWNlICovCiNkZWZpbmUgUlRMODgyMUFfTklDX1BXUl9PTl9GTE9XCQkJcnRsODgyMUFfcG93ZXJfb25fZmxvdwojZGVmaW5lIFJUTDg4MjFBX05JQ19SRl9PRkZfRkxPVwkJCXJ0bDg4MjFBX3JhZGlvX29mZl9mbG93CiNkZWZpbmUgUlRMODgyMUFfTklDX0RJU0FCTEVfRkxPVwkJCXJ0bDg4MjFBX2NhcmRfZGlzYWJsZV9mbG93CiNkZWZpbmUgUlRMODgyMUFfTklDX0VOQUJMRV9GTE9XCQkJcnRsODgyMUFfY2FyZF9lbmFibGVfZmxvdwojZGVmaW5lIFJUTDg4MjFBX05JQ19TVVNQRU5EX0ZMT1cJCQlydGw4ODIxQV9zdXNwZW5kX2Zsb3cKI2RlZmluZSBSVEw4ODIxQV9OSUNfUkVTVU1FX0ZMT1cJCQlydGw4ODIxQV9yZXN1bWVfZmxvdwojZGVmaW5lIFJUTDg4MjFBX05JQ19QRE5fRkxPVwkJCQlydGw4ODIxQV9od3Bkbl9mbG93CiNkZWZpbmUgUlRMODgyMUFfTklDX0xQU19FTlRFUl9GTE9XCQkJcnRsODgyMUFfZW50ZXJfbHBzX2Zsb3cKI2RlZmluZSBSVEw4ODIxQV9OSUNfTFBTX0xFQVZFX0ZMT1cJCQlydGw4ODIxQV9sZWF2ZV9scHNfZmxvdwoKCiNlbmRpZgoK