LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBUaGFpCiAqCiAqIENvcHlyaWdodCAyMDAyIEFsZXhhbmRyZSBKdWxsaWFyZCBmb3IgQ29kZVdlYXZlcnMKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI3ByYWdtYSBjb2RlX3BhZ2UoODc0KQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19USEFJLCBTVUJMQU5HX0RFRkFVTFQKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMDAzXHg4MTAwXHgwMDAwXHgxMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAxXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAxXHgwMDAwXHgwMDAwIgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICI3IgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjY2IgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIwIgogIExPQ0FMRV9JREFURSAiMSIKICBMT0NBTEVfSURBWUxaRVJPICIwIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiODc0IgogIExPQ0FMRV9JREVGQVVMVENPREVQQUdFICI4NzQiCiAgTE9DQUxFX0lERUZBVUxUQ09VTlRSWSAiNjYiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIwODM4IgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwNDFlIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAyMSIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjg3NCIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjAiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwNDFlIgogIExPQ0FMRV9JTERBVEUgIjEiCiAgTE9DQUxFX0lMWkVSTyAiMCIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMCIKICBMT0NBTEVfSU5FR0NVUlIgIjEiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIwIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjMiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIgIjciCiAgTE9DQUxFX0lQQVBFUlNJWkUgIjkiCiAgTE9DQUxFX0lQT1NTRVBCWVNQQUNFICIwIgogIExPQ0FMRV9JUE9TU0lHTlBPU04gIjMiCiAgTE9DQUxFX0lQT1NTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSVRJTUUgIjEiCiAgTE9DQUxFX0lUSU1FTUFSS1BPU04gIjAiCiAgTE9DQUxFX0lUTFpFUk8gIjAiCiAgTE9DQUxFX1MxMTU5ICJBTSIKICBMT0NBTEVfUzIzNTkgIlBNIgogIExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUgIlRIQSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUxICKoLiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUyICLNLiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICK+LiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU0ICK+xC4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSAiyC4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAiyi4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAizdIuIgogIExPQ0FMRV9TQUJCUkVWTEFOR05BTUUgIlRIQSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEgIsEupC4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyICKhLr4uIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMyAiwdUupC4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0ICLgwS7CLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIr4upC4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2ICLB1C7CLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgIqEupC4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4ICLKLqQuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSAioS7CLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwICK1LqQuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEgIr4uwi4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiAiuC6kLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NDT1VOVFJZICJUaGFpbGFuZCIKICBMT0NBTEVfU0NVUlJFTkNZICLfIgogIExPQ0FMRV9TREFURSAiLyIKICBMT0NBTEVfU0RBWU5BTUUxICKo0bm3w+wiCiAgTE9DQUxFX1NEQVlOQU1FMiAizdGnpNLDIgogIExPQ0FMRV9TREFZTkFNRTMgIr7YuCIKICBMT0NBTEVfU0RBWU5BTUU0ICK+xMvRyrq01SIKICBMT0NBTEVfU0RBWU5BTUU1ICLI2KHD7CIKICBMT0NBTEVfU0RBWU5BTUU2ICLgytLD7CIKICBMT0NBTEVfU0RBWU5BTUU3ICLN0rfUtcLsIgogIExPQ0FMRV9TREVDSU1BTCAiLiIKICBMT0NBTEVfU0VOR0NPVU5UUlkgIlRoYWlsYW5kIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIlRoYWkgQmFodCIKICBMT0NBTEVfU0VOR0xBTkdVQUdFICJUaGFpIgogIExPQ0FMRV9TR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU0lOVExTWU1CT0wgIlRIQiIKICBMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSAiVEgiCiAgTE9DQUxFX1NJU082MzlMQU5HTkFNRSAidGgiCiAgTE9DQUxFX1NMQU5HVUFHRSAiVGhhaSIKICBMT0NBTEVfU0xJU1QgIiwiCiAgTE9DQUxFX1NMT05HREFURSAiZCBNTU1NIHl5eXkiCiAgTE9DQUxFX1NNT05ERUNJTUFMU0VQICIuIgogIExPQ0FMRV9TTU9OR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU01PTlRITkFNRTEgIsGhw9KkwSIKICBMT0NBTEVfU01PTlRITkFNRTIgIqHYwcDSvtG5uOwiCiAgTE9DQUxFX1NNT05USE5BTUUzICLB1bnSpMEiCiAgTE9DQUxFX1NNT05USE5BTUU0ICLgwcnSwrkiCiAgTE9DQUxFX1NNT05USE5BTUU1ICK+xMnA0qTBIgogIExPQ0FMRV9TTU9OVEhOQU1FNiAiwdS22LnSwrkiCiAgTE9DQUxFX1NNT05USE5BTUU3ICKhw6Gu0qTBIgogIExPQ0FMRV9TTU9OVEhOQU1FOCAiytSny9KkwSIKICBMT0NBTEVfU01PTlRITkFNRTkgIqHRucLSwrkiCiAgTE9DQUxFX1NNT05USE5BTUUxMCAitdjF0qTBIgogIExPQ0FMRV9TTU9OVEhOQU1FMTEgIr7EyKjUodLCuSIKICBMT0NBTEVfU01PTlRITkFNRTEyICK40bnH0qTBIgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICIsIgogIExPQ0FMRV9TTkFNRSAidGgtVEgiCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAi5LfCIgogIExPQ0FMRV9TTkFUSVZFQ1VSUk5BTUUgIrrStyIKICBMT0NBTEVfU05BVElWRURJR0lUUyAi8PHy8/T19vf4+SIKICBMT0NBTEVfU05BVElWRUxBTkdOQU1FICLkt8IiCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NDUklQVFMgIlRoYWk7IgogIExPQ0FMRV9TU0hPUlREQVRFICJkL00veXl5eSIKICBMT0NBTEVfU1NPUlROQU1FICJEZWZhdWx0IgogIExPQ0FMRV9TVEhPVVNBTkQgIiwiCiAgTE9DQUxFX1NUSU1FICI6IgogIExPQ0FMRV9TVElNRUZPUk1BVCAiSDptbTpzcyIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTSB5eXl5IgoKICBMR1JQSURfV0VTVEVSTl9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJXZXN0ZXJuIEV1cm9wZSBhbmQgVW5pdGVkIFN0YXRlcyIKICBMR1JQSURfQ0VOVFJBTF9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJDZW50cmFsIEV1cm9wZSIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiQmFsdGljIgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIkdyZWVrIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIkN5cmlsbGljIgogIExHUlBJRF9UVVJLSVNIK0xHUlBJRF9SRVNfQkFTRSAiVHVya2ljIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcGFuZXNlIgogIExHUlBJRF9LT1JFQU4rTEdSUElEX1JFU19CQVNFICJLb3JlYW4iCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJUcmFkaXRpb25hbCBDaGluZXNlIgogIExHUlBJRF9TSU1QTElGSUVEX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJTaW1wbGlmaWVkIENoaW5lc2UiCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJUaGFpIgogIExHUlBJRF9IRUJSRVcrTEdSUElEX1JFU19CQVNFICJIZWJyZXciCiAgTEdSUElEX0FSQUJJQytMR1JQSURfUkVTX0JBU0UgIkFyYWJpYyIgCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJWaWV0bmFtZXNlIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZGljIgogIExHUlBJRF9HRU9SR0lBTitMR1JQSURfUkVTX0JBU0UgIkdlb3JnaWFuIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIkFybWVuaWFuIgp9Cg==