LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBUaGFpCiAqCiAqIENvcHlyaWdodCAyMDAyIEFsZXhhbmRyZSBKdWxsaWFyZCBmb3IgQ29kZVdlYXZlcnMKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI3ByYWdtYSBjb2RlX3BhZ2UoODc0KQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19USEFJLCBTVUJMQU5HX0RFRkFVTFQKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMDAzXHg4MTAwXHgwMDAwXHgxMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAxXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAxXHgwMDAwXHgwMDAwIgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICI3IgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjY2IgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIwIgogIExPQ0FMRV9JREFURSAiMSIKICBMT0NBTEVfSURBWUxaRVJPICIwIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiODc0IgogIExPQ0FMRV9JREVGQVVMVENPREVQQUdFICI4NzQiCiAgTE9DQUxFX0lERUZBVUxUQ09VTlRSWSAiNjYiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIwODM4IgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwNDFlIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAyMSIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjg3NCIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjAiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwNDFlIgogIExPQ0FMRV9JTERBVEUgIjEiCiAgTE9DQUxFX0lMWkVSTyAiMCIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMCIKICBMT0NBTEVfSU5FR0NVUlIgIjEiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIwIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjMiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSU5FVVRSQUwgIjAiCiAgTE9DQUxFX0lPUFRJT05BTENBTEVOREFSICI3IgogIExPQ0FMRV9JUEFQRVJTSVpFICI5IgogIExPQ0FMRV9JUE9TU0VQQllTUEFDRSAiMCIKICBMT0NBTEVfSVBPU1NJR05QT1NOICIzIgogIExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMgIjEiCiAgTE9DQUxFX0lSRUFESU5HTEFZT1VUICIwIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMCIKICBMT0NBTEVfUzExNTkgIkFNIgogIExPQ0FMRV9TMjM1OSAiUE0iCiAgTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSAiVEhBIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTEgIqguIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTIgIs0uIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTMgIr4uIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTQgIr7ELiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU1ICLILiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICLKLiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU3ICLN0i4iCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiVEhBIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSAiwS6kLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgIqEuvi4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzICLB1S6kLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQgIuDBLsIuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSAivi6kLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYgIsHULsIuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNyAioS6kLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggIsoupC4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5ICKhLsIuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAgIrUupC4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAivi7CLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyICK4LqQuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIlRoYWlsYW5kIgogIExPQ0FMRV9TQ1VSUkVOQ1kgIt8iCiAgTE9DQUxFX1NEQVRFICIvIgogIExPQ0FMRV9TREFZTkFNRTEgIqjRubfD7CIKICBMT0NBTEVfU0RBWU5BTUUyICLN0aek0sMiCiAgTE9DQUxFX1NEQVlOQU1FMyAivti4IgogIExPQ0FMRV9TREFZTkFNRTQgIr7Ey9HKurTVIgogIExPQ0FMRV9TREFZTkFNRTUgIsjYocPsIgogIExPQ0FMRV9TREFZTkFNRTYgIuDK0sPsIgogIExPQ0FMRV9TREFZTkFNRTcgIs3St9S1wuwiCiAgTE9DQUxFX1NERUNJTUFMICIuIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiVGhhaWxhbmQiCiAgTE9DQUxFX1NFTkdDVVJSTkFNRSAiVGhhaSBCYWh0IgogIExPQ0FMRV9TRU5HTEFOR1VBR0UgIlRoYWkiCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiVEhCIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJUSCIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJ0aCIKICBMT0NBTEVfU0xBTkdVQUdFICJUaGFpIgogIExPQ0FMRV9TTElTVCAiLCIKICBMT0NBTEVfU0xPTkdEQVRFICJkIE1NTU0geXl5eSIKICBMT0NBTEVfU01PTkRFQ0lNQUxTRVAgIi4iCiAgTE9DQUxFX1NNT05HUk9VUElORyAiMzswIgogIExPQ0FMRV9TTU9OVEhOQU1FMSAiwaHD0qTBIgogIExPQ0FMRV9TTU9OVEhOQU1FMiAiodjBwNK+0bm47CIKICBMT0NBTEVfU01PTlRITkFNRTMgIsHVudKkwSIKICBMT0NBTEVfU01PTlRITkFNRTQgIuDBydLCuSIKICBMT0NBTEVfU01PTlRITkFNRTUgIr7EycDSpMEiCiAgTE9DQUxFX1NNT05USE5BTUU2ICLB1LbYudLCuSIKICBMT0NBTEVfU01PTlRITkFNRTcgIqHDoa7SpMEiCiAgTE9DQUxFX1NNT05USE5BTUU4ICLK1KfL0qTBIgogIExPQ0FMRV9TTU9OVEhOQU1FOSAiodG5wtLCuSIKICBMT0NBTEVfU01PTlRITkFNRTEwICK12MXSpMEiCiAgTE9DQUxFX1NNT05USE5BTUUxMSAivsTIqNSh0sK5IgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgIrjRucfSpMEiCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIiwiCiAgTE9DQUxFX1NOQU1FICJ0aC1USCIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FICLkt8IiCiAgTE9DQUxFX1NOQVRJVkVDVVJSTkFNRSAiutK3IgogIExPQ0FMRV9TTkFUSVZFRElHSVRTICLw8fLz9PX29/j5IgogIExPQ0FMRV9TTkFUSVZFRElTUExBWU5BTUUgIuS3wiAo5LfCKSIKICBMT0NBTEVfU05BVElWRUxBTkdOQU1FICLkt8IiCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NDUklQVFMgIlRoYWk7IgogIExPQ0FMRV9TU0hPUlREQVRFICJkL00veXl5eSIKICBMT0NBTEVfU1NPUlROQU1FICJEZWZhdWx0IgogIExPQ0FMRV9TVEhPVVNBTkQgIiwiCiAgTE9DQUxFX1NUSU1FICI6IgogIExPQ0FMRV9TVElNRUZPUk1BVCAiSDptbTpzcyIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTSB5eXl5IgoKICBMR1JQSURfV0VTVEVSTl9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJXZXN0ZXJuIEV1cm9wZSBhbmQgVW5pdGVkIFN0YXRlcyIKICBMR1JQSURfQ0VOVFJBTF9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJDZW50cmFsIEV1cm9wZSIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiQmFsdGljIgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIkdyZWVrIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIkN5cmlsbGljIgogIExHUlBJRF9UVVJLSVNIK0xHUlBJRF9SRVNfQkFTRSAiVHVya2ljIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcGFuZXNlIgogIExHUlBJRF9LT1JFQU4rTEdSUElEX1JFU19CQVNFICJLb3JlYW4iCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJUcmFkaXRpb25hbCBDaGluZXNlIgogIExHUlBJRF9TSU1QTElGSUVEX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJTaW1wbGlmaWVkIENoaW5lc2UiCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJUaGFpIgogIExHUlBJRF9IRUJSRVcrTEdSUElEX1JFU19CQVNFICJIZWJyZXciCiAgTEdSUElEX0FSQUJJQytMR1JQSURfUkVTX0JBU0UgIkFyYWJpYyIgCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJWaWV0bmFtZXNlIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZGljIgogIExHUlBJRF9HRU9SR0lBTitMR1JQSURfUkVTX0JBU0UgIkdlb3JnaWFuIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIkFybWVuaWFuIgp9Cg==