LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBGcmVuY2ggKEx1eGVtYm91cmcpCiAqCiAqIENvcHlyaWdodCAyMDAyIEFsZXhhbmRyZSBKdWxsaWFyZCBmb3IgQ29kZVdlYXZlcnMKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI3ByYWdtYSBjb2RlX3BhZ2UoMTI1MikKClNUUklOR1RBQkxFIExBTkdVQUdFIExBTkdfRlJFTkNILCBTVUJMQU5HX0ZSRU5DSF9MVVhFTUJPVVJHCnsKICBMT0NBTEVfRk9OVFNJR05BVFVSRSBMIlx4MDAyZlx4ODAwMFx4MzgwOFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMVx4MDAwMFx4MDAwMFx4NDAwMFx4MDAxM1x4MDAwMFx4MDAwMFx4YzVkNCIKICBMT0NBTEVfSUNBTEVOREFSVFlQRSAiMSIKICBMT0NBTEVfSUNFTlRVUlkgIjEiCiAgTE9DQUxFX0lDT1VOVFJZICIzNTIiCiAgTE9DQUxFX0lDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JQ1VSUkVOQ1kgIjMiCiAgTE9DQUxFX0lEQVRFICIxIgogIExPQ0FMRV9JREFZTFpFUk8gIjEiCiAgTE9DQUxFX0lERUZBVUxUQU5TSUNPREVQQUdFICIxMjUyIgogIExPQ0FMRV9JREVGQVVMVENPREVQQUdFICI4NTAiCiAgTE9DQUxFX0lERUZBVUxUQ09VTlRSWSAiMzUyIgogIExPQ0FMRV9JREVGQVVMVEVCQ0RJQ0NPREVQQUdFICIyMDI5NyIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiMTQwYyIKICBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSAiMTAwMDAiCiAgTE9DQUxFX0lERUZBVUxUVU5JWENPREVQQUdFICIyODYwNSIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjAiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIxNDBjIgogIExPQ0FMRV9JTERBVEUgIjEiCiAgTE9DQUxFX0lMWkVSTyAiMSIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMSIKICBMT0NBTEVfSU5FR0NVUlIgIjgiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSU5FVVRSQUwgIjAiCiAgTE9DQUxFX0lPUFRJT05BTENBTEVOREFSICIwIgogIExPQ0FMRV9JUEFQRVJTSVpFICI5IgogIExPQ0FMRV9JUE9TU0VQQllTUEFDRSAiMSIKICBMT0NBTEVfSVBPU1NJR05QT1NOICIxIgogIExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMgIjAiCiAgTE9DQUxFX0lSRUFESU5HTEFZT1VUICIwIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMSIKICBMT0NBTEVfUzExNTkgIiIKICBMT0NBTEVfUzIzNTkgIiIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJMVVgiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAibHVuLiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUyICJtYXIuIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTMgIm1lci4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAiamV1LiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU1ICJ2ZW4uIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTYgInNhbS4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAiZGltLiIKICBMT0NBTEVfU0FCQlJFVkxBTkdOQU1FICJGUkwiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxICJqYW52LiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgImbpdnIuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMyAibWFycyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQgImF2ci4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1ICJtYWkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2ICJqdWluIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNyAianVpbC4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4ICJhb/t0IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSAic2VwdC4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCAib2N0LiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExICJub3YuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgImTpYy4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TQ09VTlRSWSAiTHV4ZW1ib3VyZyIKICBMT0NBTEVfU0NVUlJFTkNZICKAIgogIExPQ0FMRV9TREFURSAiLyIKICBMT0NBTEVfU0RBWU5BTUUxICJsdW5kaSIKICBMT0NBTEVfU0RBWU5BTUUyICJtYXJkaSIKICBMT0NBTEVfU0RBWU5BTUUzICJtZXJjcmVkaSIKICBMT0NBTEVfU0RBWU5BTUU0ICJqZXVkaSIKICBMT0NBTEVfU0RBWU5BTUU1ICJ2ZW5kcmVkaSIKICBMT0NBTEVfU0RBWU5BTUU2ICJzYW1lZGkiCiAgTE9DQUxFX1NEQVlOQU1FNyAiZGltYW5jaGUiCiAgTE9DQUxFX1NERUNJTUFMICIsIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiTHV4ZW1ib3VyZyIKICBMT0NBTEVfU0VOR0NVUlJOQU1FICJFdXJvIgogIExPQ0FMRV9TRU5HTEFOR1VBR0UgIkZyZW5jaCIKICBMT0NBTEVfU0dST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NJTlRMU1lNQk9MICJFVVIiCiAgTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUgIkxVIgogIExPQ0FMRV9TSVNPNjM5TEFOR05BTUUgImZyIgogIExPQ0FMRV9TTEFOR1VBR0UgIkZyZW5jaCAoTHV4ZW1ib3VyZykiCiAgTE9DQUxFX1NMSVNUICI7IgogIExPQ0FMRV9TTE9OR0RBVEUgImRkZGQgZCBNTU1NIHl5eXkiCiAgTE9DQUxFX1NNT05ERUNJTUFMU0VQICIsIgogIExPQ0FMRV9TTU9OR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU01PTlRITkFNRTEgImphbnZpZXIiCiAgTE9DQUxFX1NNT05USE5BTUUyICJm6XZyaWVyIgogIExPQ0FMRV9TTU9OVEhOQU1FMyAibWFycyIKICBMT0NBTEVfU01PTlRITkFNRTQgImF2cmlsIgogIExPQ0FMRV9TTU9OVEhOQU1FNSAibWFpIgogIExPQ0FMRV9TTU9OVEhOQU1FNiAianVpbiIKICBMT0NBTEVfU01PTlRITkFNRTcgImp1aWxsZXQiCiAgTE9DQUxFX1NNT05USE5BTUU4ICJhb/t0IgogIExPQ0FMRV9TTU9OVEhOQU1FOSAic2VwdGVtYnJlIgogIExPQ0FMRV9TTU9OVEhOQU1FMTAgIm9jdG9icmUiCiAgTE9DQUxFX1NNT05USE5BTUUxMSAibm92ZW1icmUiCiAgTE9DQUxFX1NNT05USE5BTUUxMiAiZOljZW1icmUiCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIqAiCiAgTE9DQUxFX1NOQU1FICJmci1MVSIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FICJMdXhlbWJvdXJnIgogIExPQ0FMRV9TTkFUSVZFQ1VSUk5BTUUgImV1cm8iCiAgTE9DQUxFX1NOQVRJVkVESUdJVFMgIjAxMjM0NTY3ODkiCiAgTE9DQUxFX1NOQVRJVkVESVNQTEFZTkFNRSAiZnJhbudhaXMgKEx1eGVtYm91cmcpIgogIExPQ0FMRV9TTkFUSVZFTEFOR05BTUUgImZyYW7nYWlzIgogIExPQ0FMRV9TTkVHQVRJVkVTSUdOICItIgogIExPQ0FMRV9TT1BFTlRZUEVMQU5HVUFHRVRBRyAiRlJBICIKICBMT0NBTEVfU1BPU0lUSVZFU0lHTiAiIgogIExPQ0FMRV9TU0NSSVBUUyAiTGF0bjsiCiAgTE9DQUxFX1NTSE9SVERBVEUgImRkL01NL3l5eXkiCiAgTE9DQUxFX1NTSE9SVFRJTUUgIkhIOm1tIgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAioCIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJISDptbTpzcyIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTSB5eXl5IgoKICBMR1JQSURfV0VTVEVSTl9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJFdXJvcGUgb2NjaWRlbnRhbGUgZXQgyXRhdHMtVW5pcyBkJ0Ft6XJpcXVlIgogIExHUlBJRF9DRU5UUkFMX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIkV1cm9wZSBjZW50cmFsZSIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiQmFsdGlxdWUiCiAgTEdSUElEX0dSRUVLK0xHUlBJRF9SRVNfQkFTRSAiR3JlYyIKICBMR1JQSURfQ1lSSUxMSUMrTEdSUElEX1JFU19CQVNFICJDeXJpbGxpcXVlIgogIExHUlBJRF9UVVJLSVNIK0xHUlBJRF9SRVNfQkFTRSAiVHVyYyIKICBMR1JQSURfSkFQQU5FU0UrTEdSUElEX1JFU19CQVNFICJKYXBvbmFpcyIKICBMR1JQSURfS09SRUFOK0xHUlBJRF9SRVNfQkFTRSAiQ29y6WVuIgogIExHUlBJRF9UUkFESVRJT05BTF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiQ2hpbm9pcyB0cmFkaXRpb25uZWwiCiAgTEdSUElEX1NJTVBMSUZJRURfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIkNoaW5vaXMgc2ltcGxpZmnpIgogIExHUlBJRF9USEFJK0xHUlBJRF9SRVNfQkFTRSAiVGhh7yIKICBMR1JQSURfSEVCUkVXK0xHUlBJRF9SRVNfQkFTRSAiSOlicmV1IgogIExHUlBJRF9BUkFCSUMrTEdSUElEX1JFU19CQVNFICJBcmFiZSIgCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJWaWV0bmFtaWVuIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZGllbiIKICBMR1JQSURfR0VPUkdJQU4rTEdSUElEX1JFU19CQVNFICJH6W9yZ2llbiIKICBMR1JQSURfQVJNRU5JQU4rTEdSUElEX1JFU19CQVNFICJBcm3pbmllbiIKfQo=