LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBBemVyaSAoQ3lyaWxsaWMpCiAqCiAqIENvcHlyaWdodCAyMDAyIEFsZXhhbmRyZSBKdWxsaWFyZCBmb3IgQ29kZVdlYXZlcnMKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiAqLwoKI3ByYWdtYSBjb2RlX3BhZ2UoMTI1MSkKClNUUklOR1RBQkxFIExBTkdVQUdFIExBTkdfQVpFUkksIFNVQkxBTkdfQVpFUklfQ1lSSUxMSUMKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMjAzXHg4MDAwXHgzODQ4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDA0XHgwMDAwXHgwMDAwXHgwMDAyXHgwMDA0XHgwMDAwXHgwMDAwXHgwMjAyIgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjk5NCIKICBMT0NBTEVfSUNVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lDVVJSRU5DWSAiMyIKICBMT0NBTEVfSURBVEUgIjEiCiAgTE9DQUxFX0lEQVlMWkVSTyAiMSIKICBMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UgIjEyNTEiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjg2NiIKICBMT0NBTEVfSURFRkFVTFRDT1VOVFJZICI5OTQiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIwODgwIgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwODJjIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAwNyIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjI4NTk1IgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjEiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiMCIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMCIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjA4MmMiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiOCIKICBMT0NBTEVfSU5FR05VTUJFUiAiMSIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiMSIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUiAiMCIKICBMT0NBTEVfSVBBUEVSU0laRSAiOSIKICBMT0NBTEVfSVBPU1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lQT1NTSUdOUE9TTiAiMSIKICBMT0NBTEVfSVBPU1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMCIKICBMT0NBTEVfUzExNTkgIiIKICBMT0NBTEVfUzIzNTkgIiIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJBWkUiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAiweUiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAi1+AiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMyAi1yIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU0IEwiXHgwNGI4XHgwNDMwIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTUgTCJceDA0YjgiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAi2CIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU3ICLBIgogIExPQ0FMRV9TQUJCUkVWTEFOR05BTUUgIkFaRSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEgIqPg7SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgItTl4iIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgIszg8CIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQgIsDv8CIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIszgvCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYgIsi88+0iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3ICLIvPPrIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCAiwOLjIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSAi0eXtIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAgIs7q8iIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExICLN7v8iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiAixOXqIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIkF6ZXJiYWlqYW4iCiAgTE9DQUxFX1NDVVJSRU5DWSAi7ODtLiIKICBMT0NBTEVfU0RBVEUgIi4iCiAgTE9DQUxFX1NEQVlOQU1FMSBMIlx4MDQxMVx4MDQzMFx4MDQzN1x4MDQzMFx4MDQ0MFx4MDBhMFx4MDQzNVx4MDQ0MFx4MDQ0Mlx4MDRkOVx4MDQ0MVx4MDQzOCIKICBMT0NBTEVfU0RBWU5BTUUyIEwiXHgwNDI3XHgwNGQ5XHgwNDQwXHgwNDQ4XHgwNGQ5XHgwNDNkXHgwNDMxXHgwNGQ5XHgwMGEwXHgwNDMwXHgwNDQ1XHgwNDQ4XHgwNDMwXHgwNDNjXHgwNDRiIgogIExPQ0FMRV9TREFZTkFNRTMgTCJceDA0MjdceDA0ZDlceDA0NDBceDA0NDhceDA0ZDlceDA0M2RceDA0MzFceDA0ZDkiCiAgTE9DQUxFX1NEQVlOQU1FNCBMIlx4MDRiOFx4MDRhZlx4MDQzY1x4MDRkOVx4MDBhMFx4MDQzMFx4MDQ0NVx4MDQ0OFx4MDQzMFx4MDQzY1x4MDQ0YiIKICBMT0NBTEVfU0RBWU5BTUU1IEwiXHgwNGI4XHgwNGFmXHgwNDNjXHgwNGQ5IgogIExPQ0FMRV9TREFZTkFNRTYgTCJceDA0MjhceDA0ZDlceDA0M2RceDA0MzFceDA0ZDkiCiAgTE9DQUxFX1NEQVlOQU1FNyAiweDn4PAiCiAgTE9DQUxFX1NERUNJTUFMICIsIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiQXplcmJhaWphbiIKICBMT0NBTEVfU0VOR0NVUlJOQU1FICJBemVyYmFpamFuaWFuIE1hbmF0IgogIExPQ0FMRV9TRU5HTEFOR1VBR0UgIkF6ZXJpIChDeXJpbGxpYykiCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiQVpNIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJBWiIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJheiIKICBMT0NBTEVfU0xBTkdVQUdFICJBemVyaSAoQ3lyaWxsaWMpIgogIExPQ0FMRV9TTElTVCAiOyIKICBMT0NBTEVfU0xPTkdEQVRFICJkIE1NTU0geXl5eSIKICBMT0NBTEVfU01PTkRFQ0lNQUxTRVAgIiwiCiAgTE9DQUxFX1NNT05HUk9VUElORyAiMzswIgogIExPQ0FMRV9TTU9OVEhOQU1FMSAio+Dt4uDwIgogIExPQ0FMRV9TTU9OVEhOQU1FMiAi1OXi8ODrIgogIExPQ0FMRV9TTU9OVEhOQU1FMyAizODw8iIKICBMT0NBTEVfU01PTlRITkFNRTQgIsDv8OXrIgogIExPQ0FMRV9TTU9OVEhOQU1FNSAizOC8IgogIExPQ0FMRV9TTU9OVEhOQU1FNiAiyLzz7SIKICBMT0NBTEVfU01PTlRITkFNRTcgIsi88+siCiAgTE9DQUxFX1NNT05USE5BTUU4ICLA4uPz8fIiCiAgTE9DQUxFX1NNT05USE5BTUU5ICLR5e3yvODh8CIKICBMT0NBTEVfU01PTlRITkFNRTEwICLO6vK84OHwIgogIExPQ0FMRV9TTU9OVEhOQU1FMTEgIs3uvODh8CIKICBMT0NBTEVfU01PTlRITkFNRTEyICLE5erg4fAiCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIqAiCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSBMIlx4MDQxMFx4MDQzN1x4MDRkOVx4MDQ0MFx4MDQzMVx4MDQzMFx4MDQ1OFx4MDRiOVx4MDQzMFx4MDQzZCIKICBMT0NBTEVfU05BVElWRUNVUlJOQU1FICLw8+Hr/CIKICBMT0NBTEVfU05BVElWRURJR0lUUyAiMDEyMzQ1Njc4OSIKICBMT0NBTEVfU05BVElWRUxBTkdOQU1FIEwiXHgwNDEwXHgwNDM3XHgwNGQ5XHgwNDQwXHgwNDMxXHgwNDMwXHgwNDU4XHgwNGI5XHgwNDMwXHgwNDNkIgogIExPQ0FMRV9TTkVHQVRJVkVTSUdOICItIgogIExPQ0FMRV9TUE9TSVRJVkVTSUdOICIiCiAgTE9DQUxFX1NTSE9SVERBVEUgImRkLk1NLnl5eXkiCiAgTE9DQUxFX1NTT1JUTkFNRSAiRGVmYXVsdCIKICBMT0NBTEVfU1RIT1VTQU5EICKgIgogIExPQ0FMRV9TVElNRSAiOiIKICBMT0NBTEVfU1RJTUVGT1JNQVQgIkg6bW06c3MiCiAgTE9DQUxFX1NZRUFSTU9OVEggIk1NTU0geXl5eSIKCiAgTEdSUElEX1dFU1RFUk5fRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiV2VzdGVybiBFdXJvcGUgYW5kIFVuaXRlZCBTdGF0ZXMiCiAgTEdSUElEX0NFTlRSQUxfRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiQ2VudHJhbCBFdXJvcGUiCiAgTEdSUElEX0JBTFRJQytMR1JQSURfUkVTX0JBU0UgIkJhbHRpYyIKICBMR1JQSURfR1JFRUsrTEdSUElEX1JFU19CQVNFICJHcmVlayIKICBMR1JQSURfQ1lSSUxMSUMrTEdSUElEX1JFU19CQVNFICJDeXJpbGxpYyIKICBMR1JQSURfVFVSS0lTSCtMR1JQSURfUkVTX0JBU0UgIlR1cmtpYyIKICBMR1JQSURfSkFQQU5FU0UrTEdSUElEX1JFU19CQVNFICJKYXBhbmVzZSIKICBMR1JQSURfS09SRUFOK0xHUlBJRF9SRVNfQkFTRSAiS29yZWFuIgogIExHUlBJRF9UUkFESVRJT05BTF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiVHJhZGl0aW9uYWwgQ2hpbmVzZSIKICBMR1JQSURfU0lNUExJRklFRF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiU2ltcGxpZmllZCBDaGluZXNlIgogIExHUlBJRF9USEFJK0xHUlBJRF9SRVNfQkFTRSAiVGhhaSIKICBMR1JQSURfSEVCUkVXK0xHUlBJRF9SRVNfQkFTRSAiSGVicmV3IgogIExHUlBJRF9BUkFCSUMrTEdSUElEX1JFU19CQVNFICJBcmFiaWMiIAogIExHUlBJRF9WSUVUTkFNRVNFK0xHUlBJRF9SRVNfQkFTRSAiVmlldG5hbWVzZSIKICBMR1JQSURfSU5ESUMrTEdSUElEX1JFU19CQVNFICJJbmRpYyIKICBMR1JQSURfR0VPUkdJQU4rTEdSUElEX1JFU19CQVNFICJHZW9yZ2lhbiIKICBMR1JQSURfQVJNRU5JQU4rTEdSUElEX1JFU19CQVNFICJBcm1lbmlhbiIgCn0K