LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBEYW5pc2gKICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjUyKQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19EQU5JU0gsIFNVQkxBTkdfREVGQVVMVAp7CiAgTE9DQUxFX0ZPTlRTSUdOQVRVUkUgTCJceDAwMmZceDgwMDBceDM4MDhceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDFceDAwMDBceDAwMDBceDQwMDBceDAwMTNceDAwMDBceDAwMDBceGM1ZDQiCiAgTE9DQUxFX0lDQUxFTkRBUlRZUEUgIjEiCiAgTE9DQUxFX0lDRU5UVVJZICIxIgogIExPQ0FMRV9JQ09VTlRSWSAiNDUiCiAgTE9DQUxFX0lDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JQ1VSUkVOQ1kgIjIiCiAgTE9DQUxFX0lEQVRFICIxIgogIExPQ0FMRV9JREFZTFpFUk8gIjEiCiAgTE9DQUxFX0lERUZBVUxUQU5TSUNPREVQQUdFICIxMjUyIgogIExPQ0FMRV9JREVGQVVMVENPREVQQUdFICI4NTAiCiAgTE9DQUxFX0lERUZBVUxUQ09VTlRSWSAiNDUiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIwMjc3IgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwNDA2IgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAwMCIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjI4NjA1IgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjEiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiMCIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMiIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjA0MDYiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiMTIiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjQiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIgIjAiCiAgTE9DQUxFX0lQQVBFUlNJWkUgIjkiCiAgTE9DQUxFX0lQT1NTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JUE9TU0lHTlBPU04gIjQiCiAgTE9DQUxFX0lQT1NTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSVRJTUUgIjEiCiAgTE9DQUxFX0lUSU1FTUFSS1BPU04gIjAiCiAgTE9DQUxFX0lUTFpFUk8gIjEiCiAgTE9DQUxFX1MxMTU5ICIiCiAgTE9DQUxFX1MyMzU5ICIiCiAgTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSAiRE5LIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTEgIm1hIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTIgInRpIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTMgIm9uIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTQgInRvIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTUgImZyIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTYgImz4IgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTcgInP4IgogIExPQ0FMRV9TQUJCUkVWTEFOR05BTUUgIkRBTiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEgImphbiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgImZlYiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgIm1hciIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQgImFwciIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIm1haiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYgImp1biIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgImp1bCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggImF1ZyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTkgInNlcCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwICJva3QiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAibm92IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgImRlYyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NDT1VOVFJZICJEZW5tYXJrIgogIExPQ0FMRV9TQ1VSUkVOQ1kgImtyIgogIExPQ0FMRV9TREFURSAiLSIKICBMT0NBTEVfU0RBWU5BTUUxICJtYW5kYWciCiAgTE9DQUxFX1NEQVlOQU1FMiAidGlyc2RhZyIKICBMT0NBTEVfU0RBWU5BTUUzICJvbnNkYWciCiAgTE9DQUxFX1NEQVlOQU1FNCAidG9yc2RhZyIKICBMT0NBTEVfU0RBWU5BTUU1ICJmcmVkYWciCiAgTE9DQUxFX1NEQVlOQU1FNiAibPhyZGFnIgogIExPQ0FMRV9TREFZTkFNRTcgInP4bmRhZyIKICBMT0NBTEVfU0RFQ0lNQUwgIiwiCiAgTE9DQUxFX1NFTkdDT1VOVFJZICJEZW5tYXJrIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIkRhbmlzaCBLcm9uZSIKICBMT0NBTEVfU0VOR0xBTkdVQUdFICJEYW5pc2giCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiREtLIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJESyIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJkYSIKICBMT0NBTEVfU0xBTkdVQUdFICJEYW5pc2giCiAgTE9DQUxFX1NMSVNUICI7IgogIExPQ0FMRV9TTE9OR0RBVEUgImQuIE1NTU0geXl5eSIKICBMT0NBTEVfU01PTkRFQ0lNQUxTRVAgIiwiCiAgTE9DQUxFX1NNT05HUk9VUElORyAiMzswIgogIExPQ0FMRV9TTU9OVEhOQU1FMSAiamFudWFyIgogIExPQ0FMRV9TTU9OVEhOQU1FMiAiZmVicnVhciIKICBMT0NBTEVfU01PTlRITkFNRTMgIm1hcnRzIgogIExPQ0FMRV9TTU9OVEhOQU1FNCAiYXByaWwiCiAgTE9DQUxFX1NNT05USE5BTUU1ICJtYWoiCiAgTE9DQUxFX1NNT05USE5BTUU2ICJqdW5pIgogIExPQ0FMRV9TTU9OVEhOQU1FNyAianVsaSIKICBMT0NBTEVfU01PTlRITkFNRTggImF1Z3VzdCIKICBMT0NBTEVfU01PTlRITkFNRTkgInNlcHRlbWJlciIKICBMT0NBTEVfU01PTlRITkFNRTEwICJva3RvYmVyIgogIExPQ0FMRV9TTU9OVEhOQU1FMTEgIm5vdmVtYmVyIgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgImRlY2VtYmVyIgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICIuIgogIExPQ0FMRV9TTkFNRSAiZGEtREsiCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAiRGFubWFyayIKICBMT0NBTEVfU05BVElWRUNVUlJOQU1FICJEYW5zayBrcm9uZSIKICBMT0NBTEVfU05BVElWRURJR0lUUyAiMDEyMzQ1Njc4OSIKICBMT0NBTEVfU05BVElWRUxBTkdOQU1FICJkYW5zayIKICBMT0NBTEVfU05FR0FUSVZFU0lHTiAiLSIKICBMT0NBTEVfU1BPU0lUSVZFU0lHTiAiIgogIExPQ0FMRV9TU0hPUlREQVRFICJkZC1NTS15eXl5IgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAiLiIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJISDptbTpzcyIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTSB5eXl5IgoKICBMR1JQSURfV0VTVEVSTl9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJXZXN0ZXJuIEV1cm9wZSBhbmQgVW5pdGVkIFN0YXRlcyIKICBMR1JQSURfQ0VOVFJBTF9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJDZW50cmFsIEV1cm9wZSIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiQmFsdGljIgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIkdyZWVrIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIkN5cmlsbGljIgogIExHUlBJRF9UVVJLSVNIK0xHUlBJRF9SRVNfQkFTRSAiVHVya2ljIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcGFuZXNlIgogIExHUlBJRF9LT1JFQU4rTEdSUElEX1JFU19CQVNFICJLb3JlYW4iCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJUcmFkaXRpb25hbCBDaGluZXNlIgogIExHUlBJRF9TSU1QTElGSUVEX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJTaW1wbGlmaWVkIENoaW5lc2UiCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJUaGFpIgogIExHUlBJRF9IRUJSRVcrTEdSUElEX1JFU19CQVNFICJIZWJyZXciCiAgTEdSUElEX0FSQUJJQytMR1JQSURfUkVTX0JBU0UgIkFyYWJpYyIgCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJWaWV0bmFtZXNlIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZGljIgogIExHUlBJRF9HRU9SR0lBTitMR1JQSURfUkVTX0JBU0UgIkdlb3JnaWFuIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIkFybWVuaWFuIgp9Cg==