LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBFc3RvbmlhbgogKgogKiBDb3B5cmlnaHQgMjAwMiBBbGV4YW5kcmUgSnVsbGlhcmQgZm9yIENvZGVXZWF2ZXJzCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKi8KCiNwcmFnbWEgY29kZV9wYWdlKDEyNTcpCgpTVFJJTkdUQUJMRSBMQU5HVUFHRSBMQU5HX0VTVE9OSUFOLCBTVUJMQU5HX0RFRkFVTFQKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMDA3XHg4MDAwXHgzODQ4XHgxMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDgwXHgwMDAwXHgwMDAwXHgwODAwXHgwMDkyXHgwMDAwXHgwMDAwXHhjZGQ0IgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjM3MiIKICBMT0NBTEVfSUNVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lDVVJSRU5DWSAiMyIKICBMT0NBTEVfSURBVEUgIjEiCiAgTE9DQUxFX0lEQVlMWkVSTyAiMCIKICBMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UgIjEyNTciCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjc3NSIKICBMT0NBTEVfSURFRkFVTFRDT1VOVFJZICIzNzIiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjUwMCIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiMDQyNSIKICBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSAiMTAwMjkiCiAgTE9DQUxFX0lERUZBVUxUVU5JWENPREVQQUdFICIyODYwNSIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjAiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjIiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwNDI1IgogIExPQ0FMRV9JTERBVEUgIjEiCiAgTE9DQUxFX0lMWkVSTyAiMSIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMSIKICBMT0NBTEVfSU5FR0NVUlIgIjgiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIgIjAiCiAgTE9DQUxFX0lQQVBFUlNJWkUgIjkiCiAgTE9DQUxFX0lQT1NTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JUE9TU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lQT1NTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSVRJTUUgIjEiCiAgTE9DQUxFX0lUSU1FTUFSS1BPU04gIjAiCiAgTE9DQUxFX0lUTFpFUk8gIjAiCiAgTE9DQUxFX1MxMTU5ICJFTCIKICBMT0NBTEVfUzIzNTkgIlBMIgogIExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUgIkVTVCIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUxICJFIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTIgIlQiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMyAiSyIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU0ICJOIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTUgIlIiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAiTCIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU3ICJQIgogIExPQ0FMRV9TQUJCUkVWTEFOR05BTUUgIkVUSSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEgImphYW4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyICJ2ZWViciIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgIm3kcnRzIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCAiYXByIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSAibWFpIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiAianV1bmkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3ICJqdXVsaSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggImF1ZyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTkgInNlcHQiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCAib2t0IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEgIm5vdiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyICJkZXRzIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIkVzdG9uaWEiCiAgTE9DQUxFX1NDVVJSRU5DWSAia3IiCiAgTE9DQUxFX1NEQVRFICIuIgogIExPQ0FMRV9TREFZTkFNRTEgImVzbWFzcORldiIKICBMT0NBTEVfU0RBWU5BTUUyICJ0ZWlzaXDkZXYiCiAgTE9DQUxFX1NEQVlOQU1FMyAia29sbWFw5GV2IgogIExPQ0FMRV9TREFZTkFNRTQgIm5lbGphcORldiIKICBMT0NBTEVfU0RBWU5BTUU1ICJyZWVkZSIKICBMT0NBTEVfU0RBWU5BTUU2ICJsYXVw5GV2IgogIExPQ0FMRV9TREFZTkFNRTcgInD8aGFw5GV2IgogIExPQ0FMRV9TREVDSU1BTCAiLCIKICBMT0NBTEVfU0VOR0NPVU5UUlkgIkVzdG9uaWEiCiAgTE9DQUxFX1NFTkdDVVJSTkFNRSAiRXN0b25pYW4gS3Jvb24iCiAgTE9DQUxFX1NFTkdMQU5HVUFHRSAiRXN0b25pYW4iCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiRUVLIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJFRSIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJldCIKICBMT0NBTEVfU0xBTkdVQUdFICJFc3RvbmlhbiIKICBMT0NBTEVfU0xJU1QgIjsiCiAgTE9DQUxFX1NMT05HREFURSAiZC4gTU1NTSB5eXl5Jy4gYS4nIgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLiIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NNT05USE5BTUUxICJqYWFudWFyIgogIExPQ0FMRV9TTU9OVEhOQU1FMiAidmVlYnJ1YXIiCiAgTE9DQUxFX1NNT05USE5BTUUzICJt5HJ0cyIKICBMT0NBTEVfU01PTlRITkFNRTQgImFwcmlsbCIKICBMT0NBTEVfU01PTlRITkFNRTUgIm1haSIKICBMT0NBTEVfU01PTlRITkFNRTYgImp1dW5pIgogIExPQ0FMRV9TTU9OVEhOQU1FNyAianV1bGkiCiAgTE9DQUxFX1NNT05USE5BTUU4ICJhdWd1c3QiCiAgTE9DQUxFX1NNT05USE5BTUU5ICJzZXB0ZW1iZXIiCiAgTE9DQUxFX1NNT05USE5BTUUxMCAib2t0b29iZXIiCiAgTE9DQUxFX1NNT05USE5BTUUxMSAibm92ZW1iZXIiCiAgTE9DQUxFX1NNT05USE5BTUUxMiAiZGV0c2VtYmVyIgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICKgIgogIExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUgIkVlc3RpIgogIExPQ0FMRV9TTkFUSVZFQ1VSUk5BTUUgIktyb29uIgogIExPQ0FMRV9TTkFUSVZFRElHSVRTICIwMTIzNDU2Nzg5IgogIExPQ0FMRV9TTkFUSVZFTEFOR05BTUUgImVlc3RpIgogIExPQ0FMRV9TTkVHQVRJVkVTSUdOICItIgogIExPQ0FMRV9TUE9TSVRJVkVTSUdOICIiCiAgTE9DQUxFX1NTSE9SVERBVEUgImQuTU0ueXl5eSIKICBMT0NBTEVfU1NPUlROQU1FICJEZWZhdWx0IgogIExPQ0FMRV9TVEhPVVNBTkQgIqAiCiAgTE9DQUxFX1NUSU1FICI6IgogIExPQ0FMRV9TVElNRUZPUk1BVCAiSDptbTpzcyIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTSB5eXl5Jy4gYS4nIgoKICBMR1JQSURfV0VTVEVSTl9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJXZXN0ZXJuIEV1cm9wZSBhbmQgVW5pdGVkIFN0YXRlcyIKICBMR1JQSURfQ0VOVFJBTF9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJDZW50cmFsIEV1cm9wZSIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiQmFsdGljIgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIkdyZWVrIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIkN5cmlsbGljIgogIExHUlBJRF9UVVJLSVNIK0xHUlBJRF9SRVNfQkFTRSAiVHVya2ljIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcGFuZXNlIgogIExHUlBJRF9LT1JFQU4rTEdSUElEX1JFU19CQVNFICJLb3JlYW4iCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJUcmFkaXRpb25hbCBDaGluZXNlIgogIExHUlBJRF9TSU1QTElGSUVEX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJTaW1wbGlmaWVkIENoaW5lc2UiCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJUaGFpIgogIExHUlBJRF9IRUJSRVcrTEdSUElEX1JFU19CQVNFICJIZWJyZXciCiAgTEdSUElEX0FSQUJJQytMR1JQSURfUkVTX0JBU0UgIkFyYWJpYyIgCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJWaWV0bmFtZXNlIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZGljIgogIExHUlBJRF9HRU9SR0lBTitMR1JQSURfUkVTX0JBU0UgIkdlb3JnaWFuIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIkFybWVuaWFuIgp9Cg==