LyoKICogUHJvZ3JhbSBNYW5hZ2VyCiAqCiAqIENvcHlyaWdodCAxOTk2IFVscmljaCBTY2htaWQKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI2RlZmluZSBMQU5HVUFHRV9JRCAgICAgICAgICAgICAgICAgIFNrCiNkZWZpbmUgTEFOR1VBR0VfTlVNQkVSICAgICAgICAgICAgICAxMAojZGVmaW5lIExBTkdVQUdFX01FTlVfSVRFTSAgICAgICAgICAgIiZTbG92ZW5za3kiCgovKiBNZW51ICovCgojZGVmaW5lIE1FTlVfRklMRSAgICAgICAgICAgICAgICAgICAgIiZT+mJvciIKI2RlZmluZSBNRU5VX0ZJTEVfTkVXICAgICAgICAgICAgICAgICImTm92/S4uLiIKI2RlZmluZSBNRU5VX0ZJTEVfT1BFTiAgICAgICAgICAgICAgICJPJnR2b3JpnVx0RW50ZXIiCiNkZWZpbmUgTUVOVV9GSUxFX01PVkUgICAgICAgICAgICAgICAiJlByZXN1bvqdLi4uXHRGNyIKI2RlZmluZSBNRU5VX0ZJTEVfQ09QWSAgICAgICAgICAgICAgICImS29w7XJvdmGdLi4uXHRGOCIKI2RlZmluZSBNRU5VX0ZJTEVfREVMRVRFICAgICAgICAgICAgICImWm1hemGdXHRFbnRmIgojZGVmaW5lIE1FTlVfRklMRV9BVFRSSUJVVEVTICAgICAgICAgIiZBdHRyaWL6dHkuLi5cdEFsdCtFbnRlciIKI2RlZmluZSBNRU5VX0ZJTEVfRVhFQ1VURSAgICAgICAgICAgICImVnlrb25hnS4uLiIKI2RlZmluZSBNRU5VX0ZJTEVfRVhJVCAgICAgICAgICAgICAgICJPJnB1c3RpnSBXaW5kb3dzLi4uIgoKI2RlZmluZSBNRU5VX09QVElPTlMgICAgICAgICAgICAgICAgICJWJm++YnkiCiNkZWZpbmUgTUVOVV9PUFRJT05TX0FVVE9fQVJSQU5HRSAgICAiJkFyYW6eb3ZhnSBhdXRvbWF0aWNreSIKI2RlZmluZSBNRU5VX09QVElPTlNfTUlOX09OX1JVTiAgICAgICImTWluaW1hbGl6b3ZhnSBwcmkgYmVodSIKI2RlZmluZSBNRU5VX09QVElPTlNfU0FWRV9TRVRUSU5HUyAgICJVbG+eaZ0gbmEmc3RhdmVuaWUgcHJpIHVrb27oZW7tIgoKI2RlZmluZSBNRU5VX1dJTkRPV1MgICAgICAgICAgICAgICAgICImV2luZG93cyIKI2RlZmluZSBNRU5VX1dJTkRPV1NfT1ZFUkxBUCAgICAgICAgICImUHJla3J5dOlcdFNoaWZ0K0Y1IgojZGVmaW5lIE1FTlVfV0lORE9XU19TSURFX0JZX1NJREUgICAgIlZlZL5hICZzZWJhXHRTaGlmdCtGNCIKI2RlZmluZSBNRU5VX1dJTkRPV1NfQVJSQU5HRSAgICAgICAgICImQXJhbp5vdmGdIHN5bWJvbHkiCgojZGVmaW5lIE1FTlVfTEFOR1VBR0UgICAgICAgICAgICAgICAgIiZKYXp5ayIKCiNkZWZpbmUgTUVOVV9IRUxQICAgICAgICAgICAgICAgICAgICAiJlBvbW9jIgojZGVmaW5lIE1FTlVfSEVMUF9DT05URU5UUyAgICAgICAgICAgIksmb21lbnThcmUiCiNkZWZpbmUgTUVOVV9IRUxQX1NFQVJDSCAgICAgICAgICAgICAiJki+YWRhnS4uLiIKI2RlZmluZSBNRU5VX0hFTFBfSEVMUF9PTl9IRUxQICAgICAgICImUG9tb2MgbmEgcG9tb2NpIgojZGVmaW5lIE1FTlVfSEVMUF9UVVRPUklBTCAgICAgICAgICAgIiZUdXRvcmlhbCIKCiNkZWZpbmUgTUVOVV9JTkZPICAgICAgICAgICAgICAgICAgICAiJkluZm8uLi4iCiNkZWZpbmUgTUVOVV9JTkZPX0xJQ0VOU0UgICAgICAgICAgICAiJkxpY2VuY2lhIgojZGVmaW5lIE1FTlVfSU5GT19OT19XQVJSQU5UWSAgICAgICAgIiZCRVogWsFSVUtZIgojZGVmaW5lIE1FTlVfSU5GT19BQk9VVF9XSU5FICAgICAgICAgIk8gJldJTkUiCgovKiBEaWFsb2dzICovCgojZGVmaW5lIERJQUxPR19PSyAgICAgICAgICAgICAgICAgICAgIk9LIgojZGVmaW5lIERJQUxPR19DQU5DRUwgICAgICAgICAgICAgICAgIlpydZppnSIKI2RlZmluZSBESUFMT0dfQlJPV1NFICAgICAgICAgICAgICAgICImTGlzdG92YZ0iCiNkZWZpbmUgRElBTE9HX0hFTFAgICAgICAgICAgICAgICAgICAiJlBvbW9jIgoKI2RlZmluZSBESUFMT0dfTkVXX0NBUFRJT04gICAgICAgICAgICJOb3b9IHByb2dyYW1vdv0gb2JqZWt0IgojZGVmaW5lIERJQUxPR19ORVdfTkVXICAgICAgICAgICAgICAgIk5vdv0iCiNkZWZpbmUgRElBTE9HX05FV19HUk9VUCAgICAgICAgICAgICAiUHJvZ3JhbW924SAmc2t1cGluYSIKI2RlZmluZSBESUFMT0dfTkVXX1BST0dSQU0gICAgICAgICAgICImUHJvZ3JhbSIKCiNkZWZpbmUgRElBTE9HX01PVkVfQ0FQVElPTiAgICAgICAgICAiUHJlc3VuIHByb2dyYW11IgojZGVmaW5lIERJQUxPR19NT1ZFX1BST0dSQU0gICAgICAgICAgIlByZXN1bvqdIHByb2dyYW06IgojZGVmaW5lIERJQUxPR19NT1ZFX0ZST01fR1JPVVAgICAgICAgIlpvIHNrdXBpbnk6IgojZGVmaW5lIERJQUxPR19NT1ZFX1RPX0dST1VQICAgICAgICAgIiZEbyBza3VwaW55OiIKCiNkZWZpbmUgRElBTE9HX0NPUFlfQ0FQVElPTiAgICAgICAgICAiS29w7XJvdmFuaWUgcHJvZ3JhbXUiCiNkZWZpbmUgRElBTE9HX0NPUFlfUFJPR1JBTSAgICAgICAgICAiS29w7XJvdmGdIHByb2dyYW06IgojZGVmaW5lIERJQUxPR19DT1BZX0ZST01fR1JPVVAgICAgICAgRElBTE9HX01PVkVfRlJPTV9HUk9VUAojZGVmaW5lIERJQUxPR19DT1BZX1RPX0dST1VQICAgICAgICAgRElBTE9HX01PVkVfVE9fR1JPVVAKCiNkZWZpbmUgRElBTE9HX0dST1VQX0NBUFRJT04gICAgICAgICAiQXRyaWL6dHkgc2t1cGlueSBwcm9ncmFtb3YiCiNkZWZpbmUgRElBTE9HX0dST1VQX0RFU0NSSVBUSU9OICAgICAiJlBvcGlzOiIKI2RlZmluZSBESUFMT0dfR1JPVVBfRklMRSAgICAgICAgICAgICImU/pib3Igc2t1cGlueToiCgojZGVmaW5lIERJQUxPR19QUk9HUkFNX0NBUFRJT04gICAgICAgIkF0cmli+nR5IHByb2dyYW11IgojZGVmaW5lIERJQUxPR19QUk9HUkFNX0RFU0NSSVBUSU9OICAgRElBTE9HX0dST1VQX0RFU0NSSVBUSU9OCiNkZWZpbmUgRElBTE9HX1BST0dSQU1fQ09NTUFORF9MSU5FICAiJlBy7Wthem92/SByaWFkb2s6IgojZGVmaW5lIERJQUxPR19QUk9HUkFNX0RJUkVDVE9SWSAgICAgIlAmcmFjb3Zu/SBhZHJlc+FyOiIKI2RlZmluZSBESUFMT0dfUFJPR1JBTV9IT1RfS0VZICAgICAgICImS2zhdmVzb3bhIGtvbWJpbuFjaWE6IgojZGVmaW5lIERJQUxPR19QUk9HUkFNX1NZTUJPTCAgICAgICAgIkFrbyAmc3ltYm9sIgojZGVmaW5lIERJQUxPR19QUk9HUkFNX09USEVSX1NZTUJPTCAgIs9hvpomaWUgc3ltYm9seS4uLiIKCiNkZWZpbmUgRElBTE9HX1NZTUJPTF9DQVBUSU9OICAgICAgICAiVv1iZXIgc3ltYm9sdSIKI2RlZmluZSBESUFMT0dfU1lNQk9MX0ZJTEUgICAgICAgICAgICImTWVubyBz+mJvcnU6IgojZGVmaW5lIERJQUxPR19TWU1CT0xfQ1VSUkVOVCAgICAgICAgIkFrJnR14WxueSBzeW1ib2w6IgoKI2RlZmluZSBESUFMT0dfRVhFQ1VURV9DQVBUSU9OICAgICAgICJWeWtvbmFuaWUgcHJvZ3JhbXUiCiNkZWZpbmUgRElBTE9HX0VYRUNVVEVfQ09NTUFORF9MSU5FICBESUFMT0dfUFJPR1JBTV9DT01NQU5EX0xJTkUKI2RlZmluZSBESUFMT0dfRVhFQ1VURV9TWU1CT0wgICAgICAgIERJQUxPR19QUk9HUkFNX1NZTUJPTAoKLyogU3RyaW5ncyAqLwoKI2RlZmluZSBTVFJJTkdfUFJPR1JBTV9NQU5BR0VSICAgICAgICAgICAgIlByb2dyYW0gTWFuYWdlciIKI2RlZmluZSBTVFJJTkdfRVJST1IgICAgICAgICAgICAgICAgICAgICAgIkNIWUJBIgojZGVmaW5lIFNUUklOR19XQVJOSU5HICAgICAgICAgICAgICAgICAgICAiVkFST1ZBTklFIgojZGVmaW5lIFNUUklOR19JTkZPICAgICAgICAgICAgICAgICAgICAgICAiSW5mb3Jt4WNpZSIKI2RlZmluZSBTVFJJTkdfREVMRVRFICAgICAgICAgICAgICAgICAgICAgIlptYXphnSIKI2RlZmluZSBTVFJJTkdfREVMRVRFX0dST1VQX3MgICAgICAgICAgICAgIlptYXphnSBza3VwaW51IGAlcycgPyIKI2RlZmluZSBTVFJJTkdfREVMRVRFX1BST0dSQU1fcyAgICAgICAgICAgIlptYXphnSBwcm9ncmFtIGAlcycgPyIKI2RlZmluZSBTVFJJTkdfTk9UX0lNUExFTUVOVEVEICAgICAgICAgICAgIk5laW1wbGVtZW50b3ZhbukiCiNkZWZpbmUgU1RSSU5HX0ZJTEVfUkVBRF9FUlJPUl9zICAgICAgICAgICJDaHliYSBwcmkg6O10YW7tIGAlcyciCiNkZWZpbmUgU1RSSU5HX0ZJTEVfV1JJVEVfRVJST1JfcyAgICAgICAgICJDaHliYSBwcmkgeuFwaXNlIGAlcyciCgojZGVmaW5lIFNUUklOR19HUlBGSUxFX1JFQURfRVJST1JfcyAgICAgICAiXApT+mJvciBza3VwaW55IGAlcycgbmVt9J5lIGJ5nSBvdHZvcmVu/S5cblwKTeEgc2Eg72FsZWogcG9rcmHob3ZhnSB2IHBva3Vzb2NoIG8gb3R2b3JlbmllPyIKCiNkZWZpbmUgU1RSSU5HX09VVF9PRl9NRU1PUlkgICAgICAgICAgICAgICJOZWRvc3RhdG9rIHBhbeR0ZSIKI2RlZmluZSBTVFJJTkdfV0lOSEVMUF9FUlJPUiAgICAgICAgICAgICAgIlBvbW9jIG5pZSBqZSBrIGRpc3Bveu1jaWkiCiNkZWZpbmUgU1RSSU5HX1VOS05PV05fRkVBVFVSRV9zICAgICAgICAgICJOZXpu4W1hIHZsYXN0bm9znSB2ICVzIgojZGVmaW5lIFNUUklOR19GSUxFX05PVF9PVkVSV1JJVFRFTl9zICAgICAiU/pib3IgYCVzJyBleGlzdHVqZS4gTmVwcmVw7XNhbv0uIgojZGVmaW5lIFNUUklOR19TQVZFX0dST1VQX0FTX3MgICAgICAgICAgICAiU2F2ZSBncm91cCBhcyBgJXMnIHRvIHByZXZlbnQgb3ZlcndyaXRpbmcgb3JpZ2luYWwgZmlsZXMiCgojZGVmaW5lIFNUUklOR19OT19IT1RfS0VZICAgICAgICAgICAgICAgICAijmlhZG55IgoKI2RlZmluZSBTVFJJTkdfQUxMX0ZJTEVTICAgICAgICAgICAgICAgICAgIlaaZXRreSBz+mJvcnkgKCouKikiCiNkZWZpbmUgU1RSSU5HX1BST0dSQU1TICAgICAgICAgICAgICAgICAgICJQcm9ncmFteSIKI2RlZmluZSBTVFJJTkdfTElCUkFSSUVTX0RMTCAgICAgICAgICAgICAgIktuaZ5uaWNlICgqLmRsbCkiCiNkZWZpbmUgU1RSSU5HX1NZTUJPTF9GSUxFUyAgICAgICAgICAgICAgICJT+mJvcnkgc3ltYm9sb3YiCiNkZWZpbmUgU1RSSU5HX1NZTUJPTFNfSUNPICAgICAgICAgICAgICAgICJTeW1ib2x5ICgqLmljbykiCgojaW5jbHVkZSAiWHgucmMiCg==