LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBBemVyaSAoTGF0aW4pCiAqCiAqIENvcHlyaWdodCAyMDAyIEFsZXhhbmRyZSBKdWxsaWFyZCBmb3IgQ29kZVdlYXZlcnMKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI3ByYWdtYSBjb2RlX3BhZ2UoMTI1NCkKClNUUklOR1RBQkxFIExBTkdVQUdFIExBTkdfQVpFUkksIFNVQkxBTkdfQVpFUklfTEFUSU4KewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMDI3XHg4MDAwXHgzODA4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAyXHgwMDAwXHgwMDAwXHgwNDAwXHgwMDEzXHgwMDAwXHgwMDAwXHhjNWQ0IgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjk5NCIKICBMT0NBTEVfSUNVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lDVVJSRU5DWSAiMyIKICBMT0NBTEVfSURBVEUgIjEiCiAgTE9DQUxFX0lEQVlMWkVSTyAiMSIKICBMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UgIjEyNTQiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjg1NyIKICBMT0NBTEVfSURFRkFVTFRDT1VOVFJZICI5OTQiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIwOTA1IgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwNDJjIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDA4MSIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjI4NTk5IgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjEiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiMCIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMCIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjA0MmMiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiOCIKICBMT0NBTEVfSU5FR05VTUJFUiAiMSIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiMSIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUiAiMCIKICBMT0NBTEVfSVBBUEVSU0laRSAiOSIKICBMT0NBTEVfSVBPU1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lQT1NTSUdOUE9TTiAiMSIKICBMT0NBTEVfSVBPU1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMCIKICBMT0NBTEVfUzExNTkgIiIKICBMT0NBTEVfUzIzNTkgIiIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJBWkUiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAiQmUiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAix2EiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMyAixyIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU0ICJDYSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU1ICJDIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTYgIt4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAiQiIKICBMT0NBTEVfU0FCQlJFVkxBTkdOQU1FICJBWkUiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxICJZYW4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyICJGZXYiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzICJNYXIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0ICJBcHIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1ICJNYXkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2ICLdeXVuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNyAi3Xl1bCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggIkF2ZyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTkgIlNlbiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwICJPa3QiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAiTm95IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgIkRlayIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NDT1VOVFJZICJBemVyYmFpamFuIgogIExPQ0FMRV9TQ1VSUkVOQ1kgIm1hbi4iCiAgTE9DQUxFX1NEQVRFICIuIgogIExPQ0FMRV9TREFZTkFNRTEgTCJCYXphclx4MDBhMGVydFx4MDI1OXNpIgogIExPQ0FMRV9TREFZTkFNRTIgTCJceDAwYzdceDAyNTlyXHgwMTVmXHgwMjU5bmJceDAyNTlceDAwYTBheFx4MDE1ZmFtXHgwMTMxIgogIExPQ0FMRV9TREFZTkFNRTMgTCJceDAwYzdceDAyNTlyXHgwMTVmXHgwMjU5bmJceDAyNTkiCiAgTE9DQUxFX1NEQVlOQU1FNCBMIkNceDAwZmNtXHgwMjU5XHgwMGEwYXhceDAxNWZhbVx4MDEzMSIKICBMT0NBTEVfU0RBWU5BTUU1IEwiQ1x4MDBmY21ceDAyNTkiCiAgTE9DQUxFX1NEQVlOQU1FNiBMIlx4MDE1ZVx4MDI1OW5iXHgwMjU5IgogIExPQ0FMRV9TREFZTkFNRTcgIkJhemFyIgogIExPQ0FMRV9TREVDSU1BTCAiLCIKICBMT0NBTEVfU0VOR0NPVU5UUlkgIkF6ZXJiYWlqYW4iCiAgTE9DQUxFX1NFTkdDVVJSTkFNRSAiQXplcmJhaWphbmlhbiBNYW5hdCIKICBMT0NBTEVfU0VOR0xBTkdVQUdFICJBemVyaSAoTGF0aW4pIgogIExPQ0FMRV9TR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU0lOVExTWU1CT0wgIkFaTSIKICBMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSAiQVoiCiAgTE9DQUxFX1NJU082MzlMQU5HTkFNRSAiYXoiCiAgTE9DQUxFX1NMQU5HVUFHRSAiQXplcmkgKExhdGluKSIKICBMT0NBTEVfU0xJU1QgIjsiCiAgTE9DQUxFX1NMT05HREFURSAiZCBNTU1NIHl5eXkiCiAgTE9DQUxFX1NNT05ERUNJTUFMU0VQICIsIgogIExPQ0FMRV9TTU9OR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU01PTlRITkFNRTEgIllhbnZhciIKICBMT0NBTEVfU01PTlRITkFNRTIgIkZldnJhbCIKICBMT0NBTEVfU01PTlRITkFNRTMgIk1hcnQiCiAgTE9DQUxFX1NNT05USE5BTUU0ICJBcHJlbCIKICBMT0NBTEVfU01PTlRITkFNRTUgIk1heSIKICBMT0NBTEVfU01PTlRITkFNRTYgIt15dW4iCiAgTE9DQUxFX1NNT05USE5BTUU3ICLdeXVsIgogIExPQ0FMRV9TTU9OVEhOQU1FOCAiQXZndXN0IgogIExPQ0FMRV9TTU9OVEhOQU1FOSAiU2VudHlhYnIiCiAgTE9DQUxFX1NNT05USE5BTUUxMCAiT2t0eWFiciIKICBMT0NBTEVfU01PTlRITkFNRTExICJOb3lhYnIiCiAgTE9DQUxFX1NNT05USE5BTUUxMiAiRGVrYWJyIgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICKgIgogIExPQ0FMRV9TTkFNRSAiYXotTGF0bi1BWiIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FIEwiQXpceDAyNTlyYmF5Y2FuY2EiCiAgTE9DQUxFX1NOQVRJVkVDVVJSTkFNRSAibWFuYXQiCiAgTE9DQUxFX1NOQVRJVkVESUdJVFMgIjAxMjM0NTY3ODkiCiAgTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSBMIkF6XHgwMjU5cmJheWNhblx4MDBhZFx4MDEzMWxceDAxMzEiCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NIT1JUREFURSAiZGQuTU0ueXl5eSIKICBMT0NBTEVfU1NPUlROQU1FICJEZWZhdWx0IgogIExPQ0FMRV9TVEhPVVNBTkQgIqAiCiAgTE9DQUxFX1NUSU1FICI6IgogIExPQ0FMRV9TVElNRUZPUk1BVCAiSDptbTpzcyIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTSB5eXl5IgoKICBMR1JQSURfV0VTVEVSTl9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJXZXN0ZXJuIEV1cm9wZSBhbmQgVW5pdGVkIFN0YXRlcyIKICBMR1JQSURfQ0VOVFJBTF9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJDZW50cmFsIEV1cm9wZSIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiQmFsdGljIgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIkdyZWVrIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIkN5cmlsbGljIgogIExHUlBJRF9UVVJLSVNIK0xHUlBJRF9SRVNfQkFTRSAiVHVya2ljIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcGFuZXNlIgogIExHUlBJRF9LT1JFQU4rTEdSUElEX1JFU19CQVNFICJLb3JlYW4iCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJUcmFkaXRpb25hbCBDaGluZXNlIgogIExHUlBJRF9TSU1QTElGSUVEX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJTaW1wbGlmaWVkIENoaW5lc2UiCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJUaGFpIgogIExHUlBJRF9IRUJSRVcrTEdSUElEX1JFU19CQVNFICJIZWJyZXciCiAgTEdSUElEX0FSQUJJQytMR1JQSURfUkVTX0JBU0UgIkFyYWJpYyIgCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJWaWV0bmFtZXNlIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZGljIgogIExHUlBJRF9HRU9SR0lBTitMR1JQSURfUkVTX0JBU0UgIkdlb3JnaWFuIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIkFybWVuaWFuIgp9Cg==