LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBWaWV0bmFtZXNlCiAqCiAqIENvcHlyaWdodCAyMDAyIEFsZXhhbmRyZSBKdWxsaWFyZCBmb3IgQ29kZVdlYXZlcnMKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI3ByYWdtYSBjb2RlX3BhZ2UoMTI1OCkKClNUUklOR1RBQkxFIExBTkdVQUdFIExBTkdfVklFVE5BTUVTRSwgU1VCTEFOR19ERUZBVUxUCnsKICBMT0NBTEVfRk9OVFNJR05BVFVSRSBMIlx4MDAyZlx4ODAwMFx4MDAwYVx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDEwMFx4MDAwMFx4ODAwMFx4MDAwMFx4MDExM1x4MDAwMFx4ODAwMFx4YzVkNCIKICBMT0NBTEVfSUNBTEVOREFSVFlQRSAiMSIKICBMT0NBTEVfSUNFTlRVUlkgIjEiCiAgTE9DQUxFX0lDT1VOVFJZICI4NCIKICBMT0NBTEVfSUNVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lDVVJSRU5DWSAiMyIKICBMT0NBTEVfSURBVEUgIjEiCiAgTE9DQUxFX0lEQVlMWkVSTyAiMSIKICBMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UgIjEyNTgiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjEyNTgiCiAgTE9DQUxFX0lERUZBVUxUQ09VTlRSWSAiODQiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjUwMCIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiMDQyYSIKICBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSAiMTAwMDAiCiAgTE9DQUxFX0lERUZBVUxUVU5JWENPREVQQUdFICIxMjU4IgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjEiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiMCIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMCIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjA0MmEiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIwIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiOCIKICBMT0NBTEVfSU5FR05VTUJFUiAiMSIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiMSIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JTkVVVFJBTCAiMCIKICBMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIgIjAiCiAgTE9DQUxFX0lQQVBFUlNJWkUgIjkiCiAgTE9DQUxFX0lQT1NTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JUE9TU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lQT1NTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSVJFQURJTkdMQVlPVVQgIjAiCiAgTE9DQUxFX0lUSU1FICIwIgogIExPQ0FMRV9JVElNRU1BUktQT1NOICIwIgogIExPQ0FMRV9JVExaRVJPICIwIgogIExPQ0FMRV9TMTE1OSAiU0EiCiAgTE9DQUxFX1MyMzU5ICJDSCIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJWTk0iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAiaGFpIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTIgImJhIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTMgInT9IgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTQgIm7jbSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU1ICJzYex1IgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTYgImJh0nkiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAiY24iCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiVklUIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSAidGgxIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiAidGgyIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMyAidGgzIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCAidGg0IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSAidGg1IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiAidGg2IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNyAidGg3IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCAidGg4IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSAidGg5IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAgInRoMTAiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAidGgxMSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyICJ0aDEyIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIlZpZXQgTmFtIgogIExPQ0FMRV9TQ1VSUkVOQ1kgIv4iCiAgTE9DQUxFX1NEQVRFICIvIgogIExPQ0FMRV9TREFZTkFNRTEgInRo/ewgaGFpIgogIExPQ0FMRV9TREFZTkFNRTIgInRo/ewgYmEiCiAgTE9DQUxFX1NEQVlOQU1FMyAidGj97CB0/SIKICBMT0NBTEVfU0RBWU5BTUU0ICJ0aP3sIG7jbSIKICBMT0NBTEVfU0RBWU5BTUU1ICJ0aP3sIHNh7HUiCiAgTE9DQUxFX1NEQVlOQU1FNiAidGj97CBiYdJ5IgogIExPQ0FMRV9TREFZTkFNRTcgImNoddIgbmji8nQiCiAgTE9DQUxFX1NERUNJTUFMICIsIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiVmlldCBOYW0iCiAgTE9DQUxFX1NFTkdDVVJSTkFNRSAiVmlldG5hbWVzZSBEb25nIgogIExPQ0FMRV9TRU5HTEFOR1VBR0UgIlZpZXRuYW1lc2UiCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiVk5EIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJWTiIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJ2aSIKICBMT0NBTEVfU0xBTkdVQUdFICJWaWV0bmFtZXNlIgogIExPQ0FMRV9TTElTVCAiLCIKICBMT0NBTEVfU0xPTkdEQVRFICJkZCBNTU1NIHl5eXkiCiAgTE9DQUxFX1NNT05ERUNJTUFMU0VQICIsIgogIExPQ0FMRV9TTU9OR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU01PTlRITkFNRTEgInRoYexuZyBt9PJ0IgogIExPQ0FMRV9TTU9OVEhOQU1FMiAidGhh7G5nIGhhaSIKICBMT0NBTEVfU01PTlRITkFNRTMgInRoYexuZyBiYSIKICBMT0NBTEVfU01PTlRITkFNRTQgInRoYexuZyB0/SIKICBMT0NBTEVfU01PTlRITkFNRTUgInRoYexuZyBu420iCiAgTE9DQUxFX1NNT05USE5BTUU2ICJ0aGHsbmcgc2HsdSIKICBMT0NBTEVfU01PTlRITkFNRTcgInRoYexuZyBiYdJ5IgogIExPQ0FMRV9TTU9OVEhOQU1FOCAidGhh7G5nIHRh7G0iCiAgTE9DQUxFX1NNT05USE5BTUU5ICJ0aGHsbmcgY2hp7G4iCiAgTE9DQUxFX1NNT05USE5BTUUxMCAidGhh7G5nIG399cxpIgogIExPQ0FMRV9TTU9OVEhOQU1FMTEgInRoYexuZyBt/fXMaSBt9PJ0IgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgInRoYexuZyBt/fXMaSBoYWkiCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIi4iCiAgTE9DQUxFX1NOQU1FICJ2aS1WTiIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FICJWaerydCBOYW0iCiAgTE9DQUxFX1NOQVRJVkVDVVJSTkFNRSBMIkRvXHgwMzAyXHgwMzAwbmciCiAgTE9DQUxFX1NOQVRJVkVESUdJVFMgIjAxMjM0NTY3ODkiCiAgTE9DQUxFX1NOQVRJVkVESVNQTEFZTkFNRSAiVGnq7G5nIFZp6vJ0IE5hbSAoVmnq8nQgTmFtKSIKICBMT0NBTEVfU05BVElWRUxBTkdOQU1FICJUaersbmcgVmnq8nQgTmFtIgogIExPQ0FMRV9TTkVHQVRJVkVTSUdOICItIgogIExPQ0FMRV9TUE9TSVRJVkVTSUdOICIiCiAgTE9DQUxFX1NTQ1JJUFRTICJMYXRuOyIKICBMT0NBTEVfU1NIT1JUREFURSAiZGQvTU0veXl5eSIKICBMT0NBTEVfU1NPUlROQU1FICJEZWZhdWx0IgogIExPQ0FMRV9TVEhPVVNBTkQgIi4iCiAgTE9DQUxFX1NUSU1FICI6IgogIExPQ0FMRV9TVElNRUZPUk1BVCAiaDptbTpzcyB0dCIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTSB5eXl5IgoKICBMR1JQSURfV0VTVEVSTl9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJXZXN0ZXJuIEV1cm9wZSBhbmQgVW5pdGVkIFN0YXRlcyIKICBMR1JQSURfQ0VOVFJBTF9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJDZW50cmFsIEV1cm9wZSIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiQmFsdGljIgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIkdyZWVrIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIkN5cmlsbGljIgogIExHUlBJRF9UVVJLSVNIK0xHUlBJRF9SRVNfQkFTRSAiVHVya2ljIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcGFuZXNlIgogIExHUlBJRF9LT1JFQU4rTEdSUElEX1JFU19CQVNFICJLb3JlYW4iCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJUcmFkaXRpb25hbCBDaGluZXNlIgogIExHUlBJRF9TSU1QTElGSUVEX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJTaW1wbGlmaWVkIENoaW5lc2UiCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJUaGFpIgogIExHUlBJRF9IRUJSRVcrTEdSUElEX1JFU19CQVNFICJIZWJyZXciCiAgTEdSUElEX0FSQUJJQytMR1JQSURfUkVTX0JBU0UgIkFyYWJpYyIgCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJWaWV0bmFtZXNlIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZGljIgogIExHUlBJRF9HRU9SR0lBTitMR1JQSURfUkVTX0JBU0UgIkdlb3JnaWFuIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIkFybWVuaWFuIgp9Cg==