LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBTZXJiaWFuIChDeXJpbGxpYykKICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjUxKQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19TRVJCSUFOLCBTVUJMQU5HX1NFUkJJQU5fQ1lSSUxMSUMKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMjAzXHg4MDAwXHgzODQ4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDA0XHgwMDAwXHgwMDAwXHgwMDAyXHgwMDA0XHgwMDAwXHgwMDAwXHgwMjAyIgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjM4MSIKICBMT0NBTEVfSUNVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lDVVJSRU5DWSAiMyIKICBMT0NBTEVfSURBVEUgIjEiCiAgTE9DQUxFX0lEQVlMWkVSTyAiMCIKICBMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UgIjEyNTEiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjg1NSIKICBMT0NBTEVfSURFRkFVTFRDT1VOVFJZICIzODEiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIxMDI1IgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwYzFhIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAwNyIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjI4NTk1IgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjEiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiMCIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMCIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjBjMWEiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIwIgogIExPQ0FMRV9JTkVHQ1VSUiAiOCIKICBMT0NBTEVfSU5FR05VTUJFUiAiMSIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiMSIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JTkVVVFJBTCAiMCIKICBMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIgIjAiCiAgTE9DQUxFX0lQQVBFUlNJWkUgIjkiCiAgTE9DQUxFX0lQT1NTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JUE9TU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lQT1NTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSVJFQURJTkdMQVlPVVQgIjAiCiAgTE9DQUxFX0lUSU1FICIxIgogIExPQ0FMRV9JVElNRU1BUktQT1NOICIwIgogIExPQ0FMRV9JVExaRVJPICIwIgogIExPQ0FMRV9TMTE1OSAiIgogIExPQ0FMRV9TMjM1OSAiIgogIExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUgIlNQQiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUxICLv7u0iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAi8/LuIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTMgIvHw5SIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU0ICL35fIiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSAi7+XyIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTYgIvHz4SIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU3ICLt5eQiCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiU1JCIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSAivODtIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiAi9OXhIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMyAi7ODwIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCAi4O/wIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSAi7OC8IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiAivPPtIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNyAivPPrIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCAi4OLjIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSAi8eXvIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAgIu7q8iIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExICLt7uIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiAi5OX2IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIlNlcmJpYSIKICBMT0NBTEVfU0NVUlJFTkNZICLE6O0uIgogIExPQ0FMRV9TREFURSAiLiIKICBMT0NBTEVfU0RBWU5BTUUxICLv7u3l5OWa4OoiCiAgTE9DQUxFX1NEQVlOQU1FMiAi8/Lu8ODqIgogIExPQ0FMRV9TREFZTkFNRTMgIvHw5eTgIgogIExPQ0FMRV9TREFZTkFNRTQgIvfl8uLw8uDqIgogIExPQ0FMRV9TREFZTkFNRTUgIu/l8uDqIgogIExPQ0FMRV9TREFZTkFNRTYgIvHz4e7y4CIKICBMT0NBTEVfU0RBWU5BTUU3ICLt5eTlmuAiCiAgTE9DQUxFX1NERUNJTUFMICIsIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiU2VyYmlhIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIlNlcmJpYW4gRGluYXIiCiAgTE9DQUxFX1NFTkdMQU5HVUFHRSAiU2VyYmlhbiAoQ3lyaWxsaWMpIgogIExPQ0FMRV9TR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU0lOVExTWU1CT0wgIlJTRCIKICBMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSAiUlMiCiAgTE9DQUxFX1NJU082MzlMQU5HTkFNRSAic3IiCiAgTE9DQUxFX1NMQU5HVUFHRSAiU2VyYmlhbiAoQ3lyaWxsaWMpIgogIExPQ0FMRV9TTElTVCAiOyIKICBMT0NBTEVfU0xPTkdEQVRFICJkLiBNTU1NIHl5eXkiCiAgTE9DQUxFX1NNT05ERUNJTUFMU0VQICIsIgogIExPQ0FMRV9TTU9OR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU01PTlRITkFNRTEgIrzg7fPg8CIKICBMT0NBTEVfU01PTlRITkFNRTIgIvTl4fDz4PAiCiAgTE9DQUxFX1NNT05USE5BTUUzICLs4PDyIgogIExPQ0FMRV9TTU9OVEhOQU1FNCAi4O/w6OsiCiAgTE9DQUxFX1NNT05USE5BTUU1ICLs4LwiCiAgTE9DQUxFX1NNT05USE5BTUU2ICK88+0iCiAgTE9DQUxFX1NNT05USE5BTUU3ICK88+siCiAgTE9DQUxFX1NNT05USE5BTUU4ICLg4uPz8fIiCiAgTE9DQUxFX1NNT05USE5BTUU5ICLx5e/y5ezh4PAiCiAgTE9DQUxFX1NNT05USE5BTUUxMCAi7ury7uHg8CIKICBMT0NBTEVfU01PTlRITkFNRTExICLt7uLl7OHg8CIKICBMT0NBTEVfU01PTlRITkFNRTEyICLk5fbl7OHg8CIKICBMT0NBTEVfU01PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NNT05USE9VU0FORFNFUCAiLiIKICBMT0NBTEVfU05BTUUgInNyLVJTIgogIExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUgIqPz4+7x6+Di6LzgIgogIExPQ0FMRV9TTkFUSVZFQ1VSUk5BTUUgIuTo7eDwIgogIExPQ0FMRV9TTkFUSVZFRElHSVRTICIwMTIzNDU2Nzg5IgogIExPQ0FMRV9TTkFUSVZFRElTUExBWU5BTUUgIvHw7/Hq6CAoo/Pj7vHr4OLovOApIgogIExPQ0FMRV9TTkFUSVZFTEFOR05BTUUgIvHw7/Hq6CIKICBMT0NBTEVfU05FR0FUSVZFU0lHTiAiLSIKICBMT0NBTEVfU09QRU5UWVBFTEFOR1VBR0VUQUcgIlNSQiAiCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NDUklQVFMgIkN5cmw7IgogIExPQ0FMRV9TU0hPUlREQVRFICJkLk0ueXl5eSIKICBMT0NBTEVfU1NIT1JUVElNRSAiSDptbSIKICBMT0NBTEVfU1NPUlROQU1FICJEZWZhdWx0IgogIExPQ0FMRV9TVEhPVVNBTkQgIi4iCiAgTE9DQUxFX1NUSU1FICI6IgogIExPQ0FMRV9TVElNRUZPUk1BVCAiSDptbTpzcyIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTSB5eXl5IgoKICBMR1JQSURfV0VTVEVSTl9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJXZXN0ZXJuIEV1cm9wZSBhbmQgVW5pdGVkIFN0YXRlcyIKICBMR1JQSURfQ0VOVFJBTF9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJDZW50cmFsIEV1cm9wZSIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiQmFsdGljIgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIkdyZWVrIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIkN5cmlsbGljIgogIExHUlBJRF9UVVJLSVNIK0xHUlBJRF9SRVNfQkFTRSAiVHVya2ljIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcGFuZXNlIgogIExHUlBJRF9LT1JFQU4rTEdSUElEX1JFU19CQVNFICJLb3JlYW4iCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJUcmFkaXRpb25hbCBDaGluZXNlIgogIExHUlBJRF9TSU1QTElGSUVEX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJTaW1wbGlmaWVkIENoaW5lc2UiCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJUaGFpIgogIExHUlBJRF9IRUJSRVcrTEdSUElEX1JFU19CQVNFICJIZWJyZXciCiAgTEdSUElEX0FSQUJJQytMR1JQSURfUkVTX0JBU0UgIkFyYWJpYyIgCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJWaWV0bmFtZXNlIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZGljIgogIExHUlBJRF9HRU9SR0lBTitMR1JQSURfUkVTX0JBU0UgIkdlb3JnaWFuIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIkFybWVuaWFuIgp9Cg==