LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBBcmFiaWMgKFNhdWRpIEFyYWJpYSkKICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjU2KQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19BUkFCSUMsIFNVQkxBTkdfQVJBQklDX1NBVURJX0FSQUJJQQp7CiAgTE9DQUxFX0ZPTlRTSUdOQVRVUkUgTCJceDYwYWZceDgwMDBceDM4NDhceDEwMDBceDAwMDhceDAwMDBceDAwMDBceDA4MDBceDAwNDBceDAwMDBceDAwMDBceDIwMDBceDAwNDBceDAwMDBceDAwMDBceDIwMDgiCiAgTE9DQUxFX0lDQUxFTkRBUlRZUEUgIjYiCiAgTE9DQUxFX0lDRU5UVVJZICIxIgogIExPQ0FMRV9JQ09VTlRSWSAiOTY2IgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIyIgogIExPQ0FMRV9JREFURSAiMSIKICBMT0NBTEVfSURBWUxaRVJPICIxIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiMTI1NiIKICBMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSAiNzIwIgogIExPQ0FMRV9JREVGQVVMVENPVU5UUlkgIjk2NiIKICBMT0NBTEVfSURFRkFVTFRFQkNESUNDT0RFUEFHRSAiMjA0MjAiCiAgTE9DQUxFX0lERUZBVUxUTEFOR1VBR0UgIjA0MDEiCiAgTE9DQUxFX0lERUZBVUxUTUFDQ09ERVBBR0UgIjEwMDA0IgogIExPQ0FMRV9JREVGQVVMVFVOSVhDT0RFUEFHRSAiMjg1OTYiCiAgTE9DQUxFX0lESUdJVFMgIjIiCiAgTE9DQUxFX0lESUdJVFNVQlNUSVRVVElPTiAiMCIKICBMT0NBTEVfSUZJUlNUREFZT0ZXRUVLICI1IgogIExPQ0FMRV9JRklSU1RXRUVLT0ZZRUFSICIwIgogIExPQ0FMRV9JSU5UTENVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lMQU5HVUFHRSAiMDQwMSIKICBMT0NBTEVfSUxEQVRFICIxIgogIExPQ0FMRV9JTFpFUk8gIjEiCiAgTE9DQUxFX0lNRUFTVVJFICIwIgogIExPQ0FMRV9JTU9OTFpFUk8gIjEiCiAgTE9DQUxFX0lORUdDVVJSICIzIgogIExPQ0FMRV9JTkVHTlVNQkVSICIzIgogIExPQ0FMRV9JTkVHU0VQQllTUEFDRSAiMCIKICBMT0NBTEVfSU5FR1NJR05QT1NOICIyIgogIExPQ0FMRV9JTkVHU1lNUFJFQ0VERVMgIjEiCiAgTE9DQUxFX0lPUFRJT05BTENBTEVOREFSICI2IgogIExPQ0FMRV9JUEFQRVJTSVpFICI5IgogIExPQ0FMRV9JUE9TU0VQQllTUEFDRSAiMSIKICBMT0NBTEVfSVBPU1NJR05QT1NOICIyIgogIExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMgIjEiCiAgTE9DQUxFX0lUSU1FICIwIgogIExPQ0FMRV9JVElNRU1BUktQT1NOICIwIgogIExPQ0FMRV9JVExaRVJPICIxIgogIExPQ0FMRV9TMTE1OSAi1SIKICBMT0NBTEVfUzIzNTkgIuMiCiAgTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSAiU0FVIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTEgIsfhx8vk7eQiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAix+HL4cfLx8EiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMyAix+HH0cjax8EiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAix+HO4+3TIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTUgIsfhzOPaySIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICLH4dPIyiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU3ICLH4cfNzyIKICBMT0NBTEVfU0FCQlJFVkxBTkdOQU1FICJBUkEiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxICLt5Mft0SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgIt3I0cft0SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgIuPH0dMiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0ICLHyNHt4SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIuPH7eYiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2ICLt5uTt5iIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgIu3m4e3mIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCAix9vT2NMiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5ICLTyMrjyNEiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCAix9/K5sjRIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEgIuTm3ePI0SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyICLP7dPjyNEiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TQ09VTlRSWSAiU2F1ZGkgQXJhYmlhIgogIExPQ0FMRV9TQ1VSUkVOQ1kgItEu0y7+IgogIExPQ0FMRV9TREFURSAiLyIKICBMT0NBTEVfU0RBWU5BTUUxICLH4cfL5O3kIgogIExPQ0FMRV9TREFZTkFNRTIgIsfhy+HHy8fBIgogIExPQ0FMRV9TREFZTkFNRTMgIsfhx9HI2sfBIgogIExPQ0FMRV9TREFZTkFNRTQgIsfhzuPt0yIKICBMT0NBTEVfU0RBWU5BTUU1ICLH4czj2skiCiAgTE9DQUxFX1NEQVlOQU1FNiAix+HTyMoiCiAgTE9DQUxFX1NEQVlOQU1FNyAix+HHzc8iCiAgTE9DQUxFX1NERUNJTUFMICIuIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiU2F1ZGkgQXJhYmlhIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIlNhdWRpIFJpeWFsIgogIExPQ0FMRV9TRU5HTEFOR1VBR0UgIkFyYWJpYyIKICBMT0NBTEVfU0dST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NJTlRMU1lNQk9MICJTQVIiCiAgTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUgIlNBIgogIExPQ0FMRV9TSVNPNjM5TEFOR05BTUUgImFyIgogIExPQ0FMRV9TTEFOR1VBR0UgIkFyYWJpYyAoU2F1ZGkgQXJhYmlhKSIKICBMT0NBTEVfU0xJU1QgIjsiCiAgTE9DQUxFX1NMT05HREFURSAiZGQgTU1NTSwgeXl5eSIKICBMT0NBTEVfU01PTkRFQ0lNQUxTRVAgIi4iCiAgTE9DQUxFX1NNT05HUk9VUElORyAiMzswIgogIExPQ0FMRV9TTU9OVEhOQU1FMSAi7eTH7dEiCiAgTE9DQUxFX1NNT05USE5BTUUyICLdyNHH7dEiCiAgTE9DQUxFX1NNT05USE5BTUUzICLjx9HTIgogIExPQ0FMRV9TTU9OVEhOQU1FNCAix8jR7eEiCiAgTE9DQUxFX1NNT05USE5BTUU1ICLjx+3mIgogIExPQ0FMRV9TTU9OVEhOQU1FNiAi7ebk7eYiCiAgTE9DQUxFX1NNT05USE5BTUU3ICLt5uHt5iIKICBMT0NBTEVfU01PTlRITkFNRTggIsfb09jTIgogIExPQ0FMRV9TTU9OVEhOQU1FOSAi08jK48jRIgogIExPQ0FMRV9TTU9OVEhOQU1FMTAgIsffyubI0SIKICBMT0NBTEVfU01PTlRITkFNRTExICLk5t3jyNEiCiAgTE9DQUxFX1NNT05USE5BTUUxMiAiz+3T48jRIgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICIsIgogIExPQ0FMRV9TTkFNRSAiYXItU0EiCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAix+Hj4+HfySDH4drRyO3JIMfh09rmz+3JIgogIExPQ0FMRV9TTkFUSVZFQ1VSUk5BTUUgItHtx+Gg09rmz+0iCiAgTE9DQUxFX1NOQVRJVkVESUdJVFMgTCJceDA2NjBceDA2NjFceDA2NjJceDA2NjNceDA2NjRceDA2NjVceDA2NjZceDA2NjdceDA2NjhceDA2NjkiCiAgTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSAix+Ha0cjtySIKICBMT0NBTEVfU05FR0FUSVZFU0lHTiAiLSIKICBMT0NBTEVfU1BPU0lUSVZFU0lHTiAiIgogIExPQ0FMRV9TU0NSSVBUUyAiQXJhYjsiCiAgTE9DQUxFX1NTSE9SVERBVEUgImRkL01NL3l5eXkiCiAgTE9DQUxFX1NTT1JUTkFNRSAiRGVmYXVsdCIKICBMT0NBTEVfU1RIT1VTQU5EICIsIgogIExPQ0FMRV9TVElNRSAiOiIKICBMT0NBTEVfU1RJTUVGT1JNQVQgImhoOm1tOnNzIHR0IgogIExPQ0FMRV9TWUVBUk1PTlRIICJNTU1NLCB5eXl5IgoKICBMR1JQSURfV0VTVEVSTl9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJXZXN0ZXJuIEV1cm9wZSBhbmQgVW5pdGVkIFN0YXRlcyIKICBMR1JQSURfQ0VOVFJBTF9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJDZW50cmFsIEV1cm9wZSIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiQmFsdGljIgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIkdyZWVrIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIkN5cmlsbGljIgogIExHUlBJRF9UVVJLSVNIK0xHUlBJRF9SRVNfQkFTRSAiVHVya2ljIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcGFuZXNlIgogIExHUlBJRF9LT1JFQU4rTEdSUElEX1JFU19CQVNFICJLb3JlYW4iCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJUcmFkaXRpb25hbCBDaGluZXNlIgogIExHUlBJRF9TSU1QTElGSUVEX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJTaW1wbGlmaWVkIENoaW5lc2UiCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJUaGFpIgogIExHUlBJRF9IRUJSRVcrTEdSUElEX1JFU19CQVNFICJIZWJyZXciCiAgTEdSUElEX0FSQUJJQytMR1JQSURfUkVTX0JBU0UgIkFyYWJpYyIgCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJWaWV0bmFtZXNlIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZGljIgogIExHUlBJRF9HRU9SR0lBTitMR1JQSURfUkVTX0JBU0UgIkdlb3JnaWFuIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIkFybWVuaWFuIgp9Cg==