LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBCdWxnYXJpYW4KICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjUxKQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19CVUxHQVJJQU4sIFNVQkxBTkdfREVGQVVMVAp7CiAgTE9DQUxFX0ZPTlRTSUdOQVRVUkUgTCJceDAyMDNceDgwMDBceDM4NDhceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDRceDAwMDBceDAwMDBceDAwMDJceDAwMDRceDAwMDBceDAwMDBceDAyMDIiCiAgTE9DQUxFX0lDQUxFTkRBUlRZUEUgIjEiCiAgTE9DQUxFX0lDRU5UVVJZICIxIgogIExPQ0FMRV9JQ09VTlRSWSAiMzU5IgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIzIgogIExPQ0FMRV9JREFURSAiMSIKICBMT0NBTEVfSURBWUxaRVJPICIxIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiMTI1MSIKICBMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSAiODY2IgogIExPQ0FMRV9JREVGQVVMVENPVU5UUlkgIjM1OSIKICBMT0NBTEVfSURFRkFVTFRFQkNESUNDT0RFUEFHRSAiMjA0MjAiCiAgTE9DQUxFX0lERUZBVUxUTEFOR1VBR0UgIjA0MDIiCiAgTE9DQUxFX0lERUZBVUxUTUFDQ09ERVBBR0UgIjEwMDA3IgogIExPQ0FMRV9JREVGQVVMVFVOSVhDT0RFUEFHRSAiMTI1MSIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjAiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwNDAyIgogIExPQ0FMRV9JTERBVEUgIjEiCiAgTE9DQUxFX0lMWkVSTyAiMSIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMCIKICBMT0NBTEVfSU5FR0NVUlIgIjgiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIgIjAiCiAgTE9DQUxFX0lQQVBFUlNJWkUgIjkiCiAgTE9DQUxFX0lQT1NTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JUE9TU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lQT1NTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSVRJTUUgIjEiCiAgTE9DQUxFX0lUSU1FTUFSS1BPU04gIjAiCiAgTE9DQUxFX0lUTFpFUk8gIjEiCiAgTE9DQUxFX1MxMTU5ICIiCiAgTE9DQUxFX1MyMzU5ICIiCiAgTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSAiQkdSIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTEgIu/u7eXk5evt6OoiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAi4vLu8O3o6iIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICLx8P/k4CIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU0ICL35fLi+vDy+uoiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSAi7+Xy+uoiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAi8frh7vLgIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTcgIu3l5OXr/yIKICBMT0NBTEVfU0FCQlJFVkxBTkdOQU1FICJCR1IiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxICLf7fPg8OgiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyICLU5eLw8+Dw6CIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgIszg8PIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0ICLA7/Do6yIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIszg6SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYgIt7t6CIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgIt7r6CIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggIsDi4/Px8iIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTkgItHl7/Ll7OLw6CIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwICLO6vLu7OLw6CIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExICLN7uXs4vDoIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgIsTl6uXs4vDoIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIkJ1bGdhcmlhIgogIExPQ0FMRV9TQ1VSUkVOQ1kgIuviIgogIExPQ0FMRV9TREFURSAiLiIKICBMT0NBTEVfU0RBWU5BTUUxICLv7u3l5OXr7ejqIgogIExPQ0FMRV9TREFZTkFNRTIgIuLy7vDt6OoiCiAgTE9DQUxFX1NEQVlOQU1FMyAi8fD/5OAiCiAgTE9DQUxFX1NEQVlOQU1FNCAi9+Xy4vrw8vrqIgogIExPQ0FMRV9TREFZTkFNRTUgIu/l8vrqIgogIExPQ0FMRV9TREFZTkFNRTYgIvH64e7y4CIKICBMT0NBTEVfU0RBWU5BTUU3ICLt5eTl6/8iCiAgTE9DQUxFX1NERUNJTUFMICIsIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiQnVsZ2FyaWEiCiAgTE9DQUxFX1NFTkdDVVJSTkFNRSAiQnVsZ2FyaWFuIExldiIKICBMT0NBTEVfU0VOR0xBTkdVQUdFICJCdWxnYXJpYW4iCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiQkdMIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJCRyIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJiZyIKICBMT0NBTEVfU0xBTkdVQUdFICJCdWxnYXJpYW4iCiAgTE9DQUxFX1NMSVNUICI7IgogIExPQ0FMRV9TTE9OR0RBVEUgImRkIE1NTU0geXl5eSAn4y4nIgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLCIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NNT05USE5BTUUxICLf7fPg8OgiCiAgTE9DQUxFX1NNT05USE5BTUUyICLU5eLw8+Dw6CIKICBMT0NBTEVfU01PTlRITkFNRTMgIszg8PIiCiAgTE9DQUxFX1NNT05USE5BTUU0ICLA7/Do6yIKICBMT0NBTEVfU01PTlRITkFNRTUgIszg6SIKICBMT0NBTEVfU01PTlRITkFNRTYgIt7t6CIKICBMT0NBTEVfU01PTlRITkFNRTcgIt7r6CIKICBMT0NBTEVfU01PTlRITkFNRTggIsDi4/Px8iIKICBMT0NBTEVfU01PTlRITkFNRTkgItHl7/Ll7OLw6CIKICBMT0NBTEVfU01PTlRITkFNRTEwICLO6vLu7OLw6CIKICBMT0NBTEVfU01PTlRITkFNRTExICLN7uXs4vDoIgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgIsTl6uXs4vDoIgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICKgIgogIExPQ0FMRV9TTkFNRSAiYmctQkciCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAiwfrr4+Dw6P8iCiAgTE9DQUxFX1NOQVRJVkVDVVJSTkFNRSAi6+IuIgogIExPQ0FMRV9TTkFUSVZFRElHSVRTICIwMTIzNDU2Nzg5IgogIExPQ0FMRV9TTkFUSVZFTEFOR05BTUUgIuH66+Pg8PHq6CIKICBMT0NBTEVfU05FR0FUSVZFU0lHTiAiLSIKICBMT0NBTEVfU1BPU0lUSVZFU0lHTiAiIgogIExPQ0FMRV9TU0NSSVBUUyAiQ3lybDsiCiAgTE9DQUxFX1NTSE9SVERBVEUgImRkLk0ueXl5eSAn4y4nIgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAioCIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJISDptbTpzcyIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTSB5eXl5ICfjLiciCgogIExHUlBJRF9XRVNURVJOX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIldlc3Rlcm4gRXVyb3BlIGFuZCBVbml0ZWQgU3RhdGVzIgogIExHUlBJRF9DRU5UUkFMX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIkNlbnRyYWwgRXVyb3BlIgogIExHUlBJRF9CQUxUSUMrTEdSUElEX1JFU19CQVNFICJCYWx0aWMiCiAgTEdSUElEX0dSRUVLK0xHUlBJRF9SRVNfQkFTRSAiR3JlZWsiCiAgTEdSUElEX0NZUklMTElDK0xHUlBJRF9SRVNfQkFTRSAiQ3lyaWxsaWMiCiAgTEdSUElEX1RVUktJU0grTEdSUElEX1JFU19CQVNFICJUdXJraWMiCiAgTEdSUElEX0pBUEFORVNFK0xHUlBJRF9SRVNfQkFTRSAiSmFwYW5lc2UiCiAgTEdSUElEX0tPUkVBTitMR1JQSURfUkVTX0JBU0UgIktvcmVhbiIKICBMR1JQSURfVFJBRElUSU9OQUxfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlRyYWRpdGlvbmFsIENoaW5lc2UiCiAgTEdSUElEX1NJTVBMSUZJRURfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlNpbXBsaWZpZWQgQ2hpbmVzZSIKICBMR1JQSURfVEhBSStMR1JQSURfUkVTX0JBU0UgIlRoYWkiCiAgTEdSUElEX0hFQlJFVytMR1JQSURfUkVTX0JBU0UgIkhlYnJldyIKICBMR1JQSURfQVJBQklDK0xHUlBJRF9SRVNfQkFTRSAiQXJhYmljIiAKICBMR1JQSURfVklFVE5BTUVTRStMR1JQSURfUkVTX0JBU0UgIlZpZXRuYW1lc2UiCiAgTEdSUElEX0lORElDK0xHUlBJRF9SRVNfQkFTRSAiSW5kaWMiCiAgTEdSUElEX0dFT1JHSUFOK0xHUlBJRF9SRVNfQkFTRSAiR2VvcmdpYW4iCiAgTEdSUElEX0FSTUVOSUFOK0xHUlBJRF9SRVNfQkFTRSAiQXJtZW5pYW4iCn0K