LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBKYXBhbmVzZQogKgogKiBDb3B5cmlnaHQgMjAwMiBBbGV4YW5kcmUgSnVsbGlhcmQgZm9yIENvZGVXZWF2ZXJzCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNwcmFnbWEgY29kZV9wYWdlKDkzMikKClNUUklOR1RBQkxFIExBTkdVQUdFIExBTkdfSkFQQU5FU0UsIFNVQkxBTkdfREVGQVVMVAp7CiAgTE9DQUxFX0ZPTlRTSUdOQVRVUkUgTCJceDAyODNceDgwMDBceDZjZjhceDM4YzdceDAwMTBceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDJceDAwMDBceDAwMDBceDAwMDBceDAwMDJceDAwMDBceDAwMDAiCiAgTE9DQUxFX0lDQUxFTkRBUlRZUEUgIjEiCiAgTE9DQUxFX0lDRU5UVVJZICIxIgogIExPQ0FMRV9JQ09VTlRSWSAiODEiCiAgTE9DQUxFX0lDVVJSRElHSVRTICIwIgogIExPQ0FMRV9JQ1VSUkVOQ1kgIjAiCiAgTE9DQUxFX0lEQVRFICIyIgogIExPQ0FMRV9JREFZTFpFUk8gIjEiCiAgTE9DQUxFX0lERUZBVUxUQU5TSUNPREVQQUdFICI5MzIiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjkzMiIKICBMT0NBTEVfSURFRkFVTFRDT1VOVFJZICI4MSIKICBMT0NBTEVfSURFRkFVTFRFQkNESUNDT0RFUEFHRSAiMjAyOTAiCiAgTE9DQUxFX0lERUZBVUxUTEFOR1VBR0UgIjA0MTEiCiAgTE9DQUxFX0lERUZBVUxUTUFDQ09ERVBBR0UgIjEwMDAxIgogIExPQ0FMRV9JREVGQVVMVFVOSVhDT0RFUEFHRSAiMjA5MzIiCiAgTE9DQUxFX0lESUdJVFMgIjIiCiAgTE9DQUxFX0lESUdJVFNVQlNUSVRVVElPTiAiMSIKICBMT0NBTEVfSUZJUlNUREFZT0ZXRUVLICI2IgogIExPQ0FMRV9JRklSU1RXRUVLT0ZZRUFSICIwIgogIExPQ0FMRV9JSU5UTENVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lMQU5HVUFHRSAiMDQxMSIKICBMT0NBTEVfSUxEQVRFICIyIgogIExPQ0FMRV9JTFpFUk8gIjEiCiAgTE9DQUxFX0lNRUFTVVJFICIwIgogIExPQ0FMRV9JTU9OTFpFUk8gIjEiCiAgTE9DQUxFX0lORUdDVVJSICIxIgogIExPQ0FMRV9JTkVHTlVNQkVSICIxIgogIExPQ0FMRV9JTkVHU0VQQllTUEFDRSAiMCIKICBMT0NBTEVfSU5FR1NJR05QT1NOICIzIgogIExPQ0FMRV9JTkVHU1lNUFJFQ0VERVMgIjEiCiAgTE9DQUxFX0lORVVUUkFMICIwIgogIExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUiAiMyIKICBMT0NBTEVfSVBBUEVSU0laRSAiOSIKICBMT0NBTEVfSVBPU1NFUEJZU1BBQ0UgIjAiCiAgTE9DQUxFX0lQT1NTSUdOUE9TTiAiMyIKICBMT0NBTEVfSVBPU1NZTVBSRUNFREVTICIxIgogIExPQ0FMRV9JUkVBRElOR0xBWU9VVCAiMiIKICBMT0NBTEVfSVRJTUUgIjEiCiAgTE9DQUxFX0lUSU1FTUFSS1BPU04gIjAiCiAgTE9DQUxFX0lUTFpFUk8gIjAiCiAgTE9DQUxFX1MxMTU5ICKM35FPIgogIExPQ0FMRV9TMjM1OSAijN+M4yIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJKUE4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAijI4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAiic4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMyAikIUiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAiltgiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSAii+AiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAik3kiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAik/oiCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiSlBOIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSAiMSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgIjIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzICIzIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCAiNCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIjUiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2ICI2IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNyAiNyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggIjgiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5ICI5IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAgIjEwIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEgIjExIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgIjEyIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIkphcGFuIgogIExPQ0FMRV9TQ1VSUkVOQ1kgTCJceDAwYTUiCiAgTE9DQUxFX1NEQVRFICIvIgogIExPQ0FMRV9TREFZTkFNRTEgIoyOl2qT+iIKICBMT0NBTEVfU0RBWU5BTUUyICKJzpdqk/oiCiAgTE9DQUxFX1NEQVlOQU1FMyAikIWXapP6IgogIExPQ0FMRV9TREFZTkFNRTQgIpbYl2qT+iIKICBMT0NBTEVfU0RBWU5BTUU1ICKL4Jdqk/oiCiAgTE9DQUxFX1NEQVlOQU1FNiAik3mXapP6IgogIExPQ0FMRV9TREFZTkFNRTcgIpP6l2qT+iIKICBMT0NBTEVfU0RFQ0lNQUwgIi4iCiAgTE9DQUxFX1NFTkdDT1VOVFJZICJKYXBhbiIKICBMT0NBTEVfU0VOR0NVUlJOQU1FICJKYXBhbmVzZSBZZW4iCiAgTE9DQUxFX1NFTkdMQU5HVUFHRSAiSmFwYW5lc2UiCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiSlBZIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJKUCIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJqYSIKICBMT0NBTEVfU0xBTkdVQUdFICJKYXBhbmVzZSIKICBMT0NBTEVfU0xJU1QgIiwiCiAgTE9DQUxFX1NMT05HREFURSAieXl5eSeUTidNJ4yOJ2Qnk/onIgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLiIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NNT05USE5BTUUxICIxjI4iCiAgTE9DQUxFX1NNT05USE5BTUUyICIyjI4iCiAgTE9DQUxFX1NNT05USE5BTUUzICIzjI4iCiAgTE9DQUxFX1NNT05USE5BTUU0ICI0jI4iCiAgTE9DQUxFX1NNT05USE5BTUU1ICI1jI4iCiAgTE9DQUxFX1NNT05USE5BTUU2ICI2jI4iCiAgTE9DQUxFX1NNT05USE5BTUU3ICI3jI4iCiAgTE9DQUxFX1NNT05USE5BTUU4ICI4jI4iCiAgTE9DQUxFX1NNT05USE5BTUU5ICI5jI4iCiAgTE9DQUxFX1NNT05USE5BTUUxMCAiMTCMjiIKICBMT0NBTEVfU01PTlRITkFNRTExICIxMYyOIgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgIjEyjI4iCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIiwiCiAgTE9DQUxFX1NOQU1FICJqYS1KUCIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FICKT+pZ7IgogIExPQ0FMRV9TTkFUSVZFQ1VSUk5BTUUgIol+IgogIExPQ0FMRV9TTkFUSVZFRElHSVRTICIwMTIzNDU2Nzg5IgogIExPQ0FMRV9TTkFUSVZFRElTUExBWU5BTUUgIpP6lnuM6iAok/qWeykiCiAgTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSAik/qWe4zqIgogIExPQ0FMRV9TTkVHQVRJVkVTSUdOICItIgogIExPQ0FMRV9TUE9TSVRJVkVTSUdOICIiCiAgTE9DQUxFX1NTQ1JJUFRTICJIYW5pO0hpcmE7S2FuYTsiCiAgTE9DQUxFX1NTSE9SVERBVEUgInl5eXkvTU0vZGQiCiAgTE9DQUxFX1NTT1JUTkFNRSAiWEpJUyIKICBMT0NBTEVfU1RIT1VTQU5EICIsIgogIExPQ0FMRV9TVElNRSAiOiIKICBMT0NBTEVfU1RJTUVGT1JNQVQgIkg6bW06c3MiCiAgTE9DQUxFX1NZRUFSTU9OVEggInl5eXknlE4nTSeMjiciCgogIExHUlBJRF9XRVNURVJOX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIldlc3Rlcm4gRXVyb3BlIGFuZCBVbml0ZWQgU3RhdGVzIgogIExHUlBJRF9DRU5UUkFMX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIkNlbnRyYWwgRXVyb3BlIgogIExHUlBJRF9CQUxUSUMrTEdSUElEX1JFU19CQVNFICJCYWx0aWMiCiAgTEdSUElEX0dSRUVLK0xHUlBJRF9SRVNfQkFTRSAiR3JlZWsiCiAgTEdSUElEX0NZUklMTElDK0xHUlBJRF9SRVNfQkFTRSAiQ3lyaWxsaWMiCiAgTEdSUElEX1RVUktJU0grTEdSUElEX1JFU19CQVNFICJUdXJraWMiCiAgTEdSUElEX0pBUEFORVNFK0xHUlBJRF9SRVNfQkFTRSAiSmFwYW5lc2UiCiAgTEdSUElEX0tPUkVBTitMR1JQSURfUkVTX0JBU0UgIktvcmVhbiIKICBMR1JQSURfVFJBRElUSU9OQUxfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlRyYWRpdGlvbmFsIENoaW5lc2UiCiAgTEdSUElEX1NJTVBMSUZJRURfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlNpbXBsaWZpZWQgQ2hpbmVzZSIKICBMR1JQSURfVEhBSStMR1JQSURfUkVTX0JBU0UgIlRoYWkiCiAgTEdSUElEX0hFQlJFVytMR1JQSURfUkVTX0JBU0UgIkhlYnJldyIKICBMR1JQSURfQVJBQklDK0xHUlBJRF9SRVNfQkFTRSAiQXJhYmljIiAKICBMR1JQSURfVklFVE5BTUVTRStMR1JQSURfUkVTX0JBU0UgIlZpZXRuYW1lc2UiCiAgTEdSUElEX0lORElDK0xHUlBJRF9SRVNfQkFTRSAiSW5kaWMiCiAgTEdSUElEX0dFT1JHSUFOK0xHUlBJRF9SRVNfQkFTRSAiR2VvcmdpYW4iCiAgTEdSUElEX0FSTUVOSUFOK0xHUlBJRF9SRVNfQkFTRSAiQXJtZW5pYW4iCn0K