LyoKICogUHJvZ3JhbSBNYW5hZ2VyCiAqCiAqIENvcHlyaWdodCAxOTk2IFVscmljaCBTY2htaWQKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiAqLwoKI2RlZmluZSBMQU5HVUFHRV9JRCAgICAgICAgICAgICAgICAgIEh1CiNkZWZpbmUgTEFOR1VBR0VfTlVNQkVSICAgICAgICAgICAgICA3CiNkZWZpbmUgTEFOR1VBR0VfTUVOVV9JVEVNICAgICAgICAgICAiJk1hZ3lhciIKCi8qIE1lbnUgKi8KCiNkZWZpbmUgTUVOVV9GSUxFICAgICAgICAgICAgICAgICAgICAiJkZpbGUiCiNkZWZpbmUgTUVOVV9GSUxFX05FVyAgICAgICAgICAgICAgICAiJtpqLi4uIgojZGVmaW5lIE1FTlVfRklMRV9PUEVOICAgICAgICAgICAgICAgIiZNZWdueWl04XNcdEVudGVyIgojZGVmaW5lIE1FTlVfRklMRV9NT1ZFICAgICAgICAgICAgICAgIk0mb3pnYXThcy4uLlx0RjciCiNkZWZpbmUgTUVOVV9GSUxFX0NPUFkgICAgICAgICAgICAgICAiTeEmc29s4XMuLi5cdEY4IgojZGVmaW5lIE1FTlVfRklMRV9ERUxFVEUgICAgICAgICAgICAgIiZU9nJs6XNcdERlbCIKI2RlZmluZSBNRU5VX0ZJTEVfQVRUUklCVVRFUyAgICAgICAgICImSmVsbGVtevVrLi4uXHRBbHQrRW50ZXIiCiNkZWZpbmUgTUVOVV9GSUxFX0VYRUNVVEUgICAgICAgICAgICAiJkZ1dHRhdOFzLi4uIgojZGVmaW5lIE1FTlVfRklMRV9FWElUICAgICAgICAgICAgICAgIiZLaWzpcOlzIGEgV2luZG93cy1i82wuLi4iCgojZGVmaW5lIE1FTlVfT1BUSU9OUyAgICAgICAgICAgICAgICAgIiZCZeFsbO104XNvayIKI2RlZmluZSBNRU5VX09QVElPTlNfQVVUT19BUlJBTkdFICAgICImQXV0b21hdGlrdXMgZWxyZW5kZXrpcyIKI2RlZmluZSBNRU5VX09QVElPTlNfTUlOX09OX1JVTiAgICAgICImTWluaW1hbGl64WzhcyBmdXR0YXThc2tvciIKI2RlZmluZSBNRU5VX09QVElPTlNfU0FWRV9TRVRUSU5HUyAgICImQmXhbGztdOFzb2sgbWVudOlzZSBraWzpcOlza29yIgoKI2RlZmluZSBNRU5VX1dJTkRPV1MgICAgICAgICAgICAgICAgICImQWJsYWtvayIKI2RlZmluZSBNRU5VX1dJTkRPV1NfT1ZFUkxBUCAgICAgICAgICLBJnRsYXBvbOFzXHRTaGlmdCtGNSIKI2RlZmluZSBNRU5VX1dJTkRPV1NfU0lERV9CWV9TSURFICAgICImRWd5beFzIG1lbGzpIHJha+FzXHRTaGlmdCtGNCIKI2RlZmluZSBNRU5VX1dJTkRPV1NfQVJSQU5HRSAgICAgICAgICImSWtvbm9rIHJlbmRleulzZSIKCiNkZWZpbmUgTUVOVV9MQU5HVUFHRSAgICAgICAgICAgICAgICAiJk55ZWx2IgoKI2RlZmluZSBNRU5VX0hFTFAgICAgICAgICAgICAgICAgICAgICImU2Vn7XRz6WciCiNkZWZpbmUgTUVOVV9IRUxQX0NPTlRFTlRTICAgICAgICAgICAiJlRhcnRhbG9tIgojZGVmaW5lIE1FTlVfSEVMUF9TRUFSQ0ggICAgICAgICAgICAgIiZLZXJlc+lzLi4uIgojZGVmaW5lIE1FTlVfSEVMUF9IRUxQX09OX0hFTFAgICAgICAgIiZTZWftdHPpZyBhIFNlZ+10c+lncvVsIgojZGVmaW5lIE1FTlVfSEVMUF9UVVRPUklBTCAgICAgICAgICAgIlQmYW7tdPMiCgojZGVmaW5lIE1FTlVfSU5GTyAgICAgICAgICAgICAgICAgICAgIiZJbmZvcm3hY2nzLi4uIgojZGVmaW5lIE1FTlVfSU5GT19MSUNFTlNFICAgICAgICAgICAgIiZMaWNlbnN6IgojZGVmaW5lIE1FTlVfSU5GT19OT19XQVJSQU5UWSAgICAgICAgIiZTRU1NSSBHQVJBTkNJQSIKI2RlZmluZSBNRU5VX0lORk9fQUJPVVRfV0lORSAgICAgICAgICImQSBXSU5FLXLzbCIKCi8qIERpYWxvZ3MgKi8KCiNkZWZpbmUgRElBTE9HX09LICAgICAgICAgICAgICAgICAgICAiT0siCiNkZWZpbmUgRElBTE9HX0NBTkNFTCAgICAgICAgICAgICAgICAiTelnc2VtIgojZGVmaW5lIERJQUxPR19CUk9XU0UgICAgICAgICAgICAgICAgIiZW4WxvZ2F04XMiCiNkZWZpbmUgRElBTE9HX0hFTFAgICAgICAgICAgICAgICAgICAiJlNlZ+10c+lnIgoKI2RlZmluZSBESUFMT0dfTkVXX0NBUFRJT04gICAgICAgICAgICLaaiBwcm9ncmFtIG9iamVrdHVtIgojZGVmaW5lIERJQUxPR19ORVdfTkVXICAgICAgICAgICAgICAgItpqIgojZGVmaW5lIERJQUxPR19ORVdfR1JPVVAgICAgICAgICAgICAgIlByb2dyYW0gJmNzb3BvcnQiCiNkZWZpbmUgRElBTE9HX05FV19QUk9HUkFNICAgICAgICAgICAiJlByb2dyYW0iCgojZGVmaW5lIERJQUxPR19NT1ZFX0NBUFRJT04gICAgICAgICAgIlByb2dyYW0gbW96Z2F04XNhIgojZGVmaW5lIERJQUxPR19NT1ZFX1BST0dSQU0gICAgICAgICAgIk1vemdhdGFuZPMgJnByb2dyYW06IgojZGVmaW5lIERJQUxPR19NT1ZFX0ZST01fR1JPVVAgICAgICAgIiZNZWx5aWsgY3NvcG9ydGLzbDoiCiNkZWZpbmUgRElBTE9HX01PVkVfVE9fR1JPVVAgICAgICAgICAiTSZlbHlpayBjc29wb3J0YmE6IgoKI2RlZmluZSBESUFMT0dfQ09QWV9DQVBUSU9OICAgICAgICAgICJQcm9ncmFtIG3hc29s4XNhIgojZGVmaW5lIERJQUxPR19DT1BZX1BST0dSQU0gICAgICAgICAgIk3hc29sYW5k8yBwcm9ncmFtOiIKI2RlZmluZSBESUFMT0dfQ09QWV9GUk9NX0dST1VQICAgICAgIERJQUxPR19NT1ZFX0ZST01fR1JPVVAKI2RlZmluZSBESUFMT0dfQ09QWV9UT19HUk9VUCAgICAgICAgIERJQUxPR19NT1ZFX1RPX0dST1VQCgojZGVmaW5lIERJQUxPR19HUk9VUF9DQVBUSU9OICAgICAgICAgIlByb2dyYW0gY3NvcG9ydCBqZWxsZW169WkiCiNkZWZpbmUgRElBTE9HX0dST1VQX0RFU0NSSVBUSU9OICAgICAiJkxl7XLhczoiCiNkZWZpbmUgRElBTE9HX0dST1VQX0ZJTEUgICAgICAgICAgICAiJkNzb3BvcnQgZmlsZToiCgojZGVmaW5lIERJQUxPR19QUk9HUkFNX0NBUFRJT04gICAgICAgIlByb2dyYW0gamVsbGVtevVpIgojZGVmaW5lIERJQUxPR19QUk9HUkFNX0RFU0NSSVBUSU9OICAgRElBTE9HX0dST1VQX0RFU0NSSVBUSU9OCiNkZWZpbmUgRElBTE9HX1BST0dSQU1fQ09NTUFORF9MSU5FICAiJlBhcmFuY3Nzb3I6IgojZGVmaW5lIERJQUxPR19QUk9HUkFNX0RJUkVDVE9SWSAgICAgIiZN+2v2ZOlzaSBr9m55dnThcjoiCiNkZWZpbmUgRElBTE9HX1BST0dSQU1fSE9UX0tFWSAgICAgICAiJkJpbGxlbnR5+yBrb21iaW7hY2nzOiIKI2RlZmluZSBESUFMT0dfUFJPR1JBTV9TWU1CT0wgICAgICAgICImSWtvbmvpbnQgZnV0dGF0IgojZGVmaW5lIERJQUxPR19QUk9HUkFNX09USEVSX1NZTUJPTCAgIiZN4XMgaWtvbi4uLiIKCiNkZWZpbmUgRElBTE9HX1NZTUJPTF9DQVBUSU9OICAgICAgICAiSWtvbiBraXbhbGFzenThc2EiCiNkZWZpbmUgRElBTE9HX1NZTUJPTF9GSUxFICAgICAgICAgICAiJkZpbGVu6XY6IgojZGVmaW5lIERJQUxPR19TWU1CT0xfQ1VSUkVOVCAgICAgICAgIiZKZWxlbmxlZ2kgaWtvbjoiCgojZGVmaW5lIERJQUxPR19FWEVDVVRFX0NBUFRJT04gICAgICAgIlByb2dyYW0gdulncmVoYWp04XNhIgojZGVmaW5lIERJQUxPR19FWEVDVVRFX0NPTU1BTkRfTElORSAgRElBTE9HX1BST0dSQU1fQ09NTUFORF9MSU5FCiNkZWZpbmUgRElBTE9HX0VYRUNVVEVfU1lNQk9MICAgICAgICBESUFMT0dfUFJPR1JBTV9TWU1CT0wKCi8qIFN0cmluZ3MgKi8KCiNkZWZpbmUgU1RSSU5HX1BST0dSQU1fTUFOQUdFUiAgICAgICAgICAgICJQcm9ncmFta2V6ZWz1IgojZGVmaW5lIFNUUklOR19FUlJPUiAgICAgICAgICAgICAgICAgICAgICAiSElCQSIKI2RlZmluZSBTVFJJTkdfV0FSTklORyAgICAgICAgICAgICAgICAgICAgIkZJR1lFTE1FWlRFVMlTIgojZGVmaW5lIFNUUklOR19JTkZPICAgICAgICAgICAgICAgICAgICAgICAiSW5mb3Jt4WNp8yIKI2RlZmluZSBTVFJJTkdfREVMRVRFICAgICAgICAgICAgICAgICAgICAgIlT2cmzpcyIKI2RlZmluZSBTVFJJTkdfREVMRVRFX0dST1VQX3MgICAgICAgICAgICAgIlT2cvZsamVtIGEgYCVzJyBjc29wb3J0b3QgPyIKI2RlZmluZSBTVFJJTkdfREVMRVRFX1BST0dSQU1fcyAgICAgICAgICAgIlT2cvZsamVtIGEgYCVzJyBwcm9ncmFtb3QgPyIKI2RlZmluZSBTVFJJTkdfTk9UX0lNUExFTUVOVEVEICAgICAgICAgICAgIk5pbmNzIGltcGxlbWVudOFsdmEiCiNkZWZpbmUgU1RSSU5HX0ZJTEVfUkVBRF9FUlJPUl9zICAgICAgICAgICJIaWJhIGEgYCVzJyBvbHZhc+Fz4W7hbCIKI2RlZmluZSBTVFJJTkdfRklMRV9XUklURV9FUlJPUl9zICAgICAgICAgIkhpYmEgYSBgJXMnIO1y4XPhbuFsIgoKI2RlZmluZSBTVFJJTkdfR1JQRklMRV9SRUFEX0VSUk9SX3MgICAgICAgIlwKTmVtIHR1ZG9tIG1lZ255aXRuaSBhIGAlcycgY3NvcG9ydCBmaWxlLXQuXG5cClRvduFiYuEgaXMgbWVncHLzYuFsamFtIG1hamQ/IgoKI2RlZmluZSBTVFJJTkdfT1VUX09GX01FTU9SWSAgICAgICAgICAgICAgIk5pbmNzIGVs6WcgbWVt83JpYSIKI2RlZmluZSBTVFJJTkdfV0lOSEVMUF9FUlJPUiAgICAgICAgICAgICAgIlNlZ+10c+lnIG5lbSBlbOlyaGV09SIKI2RlZmluZSBTVFJJTkdfVU5LTk9XTl9GRUFUVVJFX3MgICAgICAgICAgIklzbWVyZXRsZW4gZmVhdHVyZSAlcy1iZW4iCiNkZWZpbmUgU1RSSU5HX0ZJTEVfTk9UX09WRVJXUklUVEVOX3MgICAgICJBIGAlcycgbeFyIGzpdGV6aWsuIE5lbSDtcnRhbSBmZWz8bC4iCiNkZWZpbmUgU1RSSU5HX1NBVkVfR1JPVVBfQVNfcyAgICAgICAgICAgICJgJXMnLWvpbnQgbWVudHMgZWwgYSBjc29wb3J0b3QsIGhvZ3kgbWVnZWz1emQgYSBmaWxlIGZlbPxs7XLhc+F0IgoKI2RlZmluZSBTVFJJTkdfTk9fSE9UX0tFWSAgICAgICAgICAgICAgICAgIk5vbmUiCgojZGVmaW5lIFNUUklOR19BTExfRklMRVMgICAgICAgICAgICAgICAgICAiTWluZGVuIGZpbGUgKCouKikiCiNkZWZpbmUgU1RSSU5HX1BST0dSQU1TICAgICAgICAgICAgICAgICAgICJQcm9ncmFtb2siCiNkZWZpbmUgU1RSSU5HX0xJQlJBUklFU19ETEwgICAgICAgICAgICAgICJMaWJyYXJ5LWsgKCouZGxsKSIKI2RlZmluZSBTVFJJTkdfU1lNQk9MX0ZJTEVTICAgICAgICAgICAgICAgIklrb24gZmlsZS1vayIKI2RlZmluZSBTVFJJTkdfU1lNQk9MU19JQ08gICAgICAgICAgICAgICAgIklrb25vayAoKi5pY28pIgoKI2luY2x1ZGUgIlh4LnJjIgo=