LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBLeXJneXogKEN5cmlsbGljKQogKgogKiBDb3B5cmlnaHQgMjAwMiBBbGV4YW5kcmUgSnVsbGlhcmQgZm9yIENvZGVXZWF2ZXJzCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNwcmFnbWEgY29kZV9wYWdlKDEyNTEpCgpTVFJJTkdUQUJMRSBMQU5HVUFHRSBMQU5HX0tZUkdZWiwgU1VCTEFOR19ERUZBVUxUCnsKICBMT0NBTEVfRk9OVFNJR05BVFVSRSBMIlx4MDIwM1x4ODAwMFx4Mzg0OFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwNFx4MDAwMFx4MDAwMFx4MDAwMlx4MDAwNFx4MDAwMFx4MDAwMFx4MDIwMiIKICBMT0NBTEVfSUNBTEVOREFSVFlQRSAiMSIKICBMT0NBTEVfSUNFTlRVUlkgIjAiCiAgTE9DQUxFX0lDT1VOVFJZICI5OTYiCiAgTE9DQUxFX0lDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JQ1VSUkVOQ1kgIjMiCiAgTE9DQUxFX0lEQVRFICIxIgogIExPQ0FMRV9JREFZTFpFUk8gIjEiCiAgTE9DQUxFX0lERUZBVUxUQU5TSUNPREVQQUdFICIxMjUxIgogIExPQ0FMRV9JREVGQVVMVENPREVQQUdFICI4NjYiCiAgTE9DQUxFX0lERUZBVUxUQ09VTlRSWSAiOTk2IgogIExPQ0FMRV9JREVGQVVMVEVCQ0RJQ0NPREVQQUdFICIyMDg4MCIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiNDQwIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAwNyIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjI4NTk1IgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjAiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiMCIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMCIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjA0NDAiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiOCIKICBMT0NBTEVfSU5FR05VTUJFUiAiMSIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiMSIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUiAiMCIKICBMT0NBTEVfSVBBUEVSU0laRSAiOSIKICBMT0NBTEVfSVBPU1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lQT1NTSUdOUE9TTiAiMSIKICBMT0NBTEVfSVBPU1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMCIKICBMT0NBTEVfUzExNTkgIiIKICBMT0NBTEVfUzIzNTkgIiIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJLR1oiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAixPgiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAi2PgiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMyAi2PAiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAiwfgiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSAixuwiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAiyPgiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAixvgiCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiS1lSIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSAi3+3iIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiAi1OXiIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMyAizODwIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCAiwO/wIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSAizODpIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiAiyP7tIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNyAiyP7rIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCAiwOLjIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSAi0eXtIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAgIs7q8iIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExICLN7v8iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiAixOXqIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIkt5cmd5enN0YW4iCiAgTE9DQUxFX1NDVVJSRU5DWSAi8e7sIgogIExPQ0FMRV9TREFURSAiLiIKICBMT0NBTEVfU0RBWU5BTUUxIEwiXHgwNDE0XHgwNGFmXHgwNDM5XHgwNDQ4XHgwNGU5XHgwNDNjXHgwNDMxXHgwNGFmIgogIExPQ0FMRV9TREFZTkFNRTIgItjl6fjl7OHoIgogIExPQ0FMRV9TREFZTkFNRTMgItjg8Pjl7OHoIgogIExPQ0FMRV9TREFZTkFNRTQgIsHl6fjl7OHoIgogIExPQ0FMRV9TREFZTkFNRTUgIsbz7OAiCiAgTE9DQUxFX1NEQVlOQU1FNiAiyPjl7OHoIgogIExPQ0FMRV9TREFZTkFNRTcgIsbl6vjl7OHoIgogIExPQ0FMRV9TREVDSU1BTCAiLCIKICBMT0NBTEVfU0VOR0NPVU5UUlkgIkt5cmd5enN0YW4iCiAgTE9DQUxFX1NFTkdDVVJSTkFNRSAic29tIgogIExPQ0FMRV9TRU5HTEFOR1VBR0UgIkt5cmd5eiIKICBMT0NBTEVfU0dST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NJTlRMU1lNQk9MICJLR1MiCiAgTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUgIktHIgogIExPQ0FMRV9TSVNPNjM5TEFOR05BTUUgImt5IgogIExPQ0FMRV9TTEFOR1VBR0UgIkt5cmd5eiAoQ3lyaWxsaWMpIgogIExPQ0FMRV9TTElTVCAiOyIKICBMT0NBTEVfU0xPTkdEQVRFICJkJy0nTU1NTSB5eXl5Jy3mLiciCiAgTE9DQUxFX1NNT05ERUNJTUFMU0VQICItIgogIExPQ0FMRV9TTU9OR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU01PTlRITkFNRTEgIt/t4uDw/CIKICBMT0NBTEVfU01PTlRITkFNRTIgItTl4vDg6/wiCiAgTE9DQUxFX1NNT05USE5BTUUzICLM4PDyIgogIExPQ0FMRV9TTU9OVEhOQU1FNCAiwO/w5ev8IgogIExPQ0FMRV9TTU9OVEhOQU1FNSAizODpIgogIExPQ0FMRV9TTU9OVEhOQU1FNiAiyP7t/CIKICBMT0NBTEVfU01PTlRITkFNRTcgIsj+6/wiCiAgTE9DQUxFX1NNT05USE5BTUU4ICLA4uPz8fIiCiAgTE9DQUxFX1NNT05USE5BTUU5ICLR5e3y/+Hw/CIKICBMT0NBTEVfU01PTlRITkFNRTEwICLO6vL/4fD8IgogIExPQ0FMRV9TTU9OVEhOQU1FMTEgIs3u/+Hw/CIKICBMT0NBTEVfU01PTlRITkFNRTEyICLE5erg4fD8IgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICKgIgogIExPQ0FMRV9TTkFNRSAia3ktS0ciCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAiyvvw4/vn8fLg7SIKICBMT0NBTEVfU05BVElWRUNVUlJOQU1FICLx7uwiCiAgTE9DQUxFX1NOQVRJVkVESUdJVFMgIjAxMjM0NTY3ODkiCiAgTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSAiyvvw4/vnIgogIExPQ0FMRV9TTkVHQVRJVkVTSUdOICItIgogIExPQ0FMRV9TUE9TSVRJVkVTSUdOICIiCiAgTE9DQUxFX1NTQ1JJUFRTICJDeXJsOyIKICBMT0NBTEVfU1NIT1JUREFURSAiZGQuTU0ueXkiCiAgTE9DQUxFX1NTT1JUTkFNRSAiRGVmYXVsdCIKICBMT0NBTEVfU1RIT1VTQU5EICKgIgogIExPQ0FMRV9TVElNRSAiOiIKICBMT0NBTEVfU1RJTUVGT1JNQVQgIkg6bW06c3MiCiAgTE9DQUxFX1NZRUFSTU9OVEggIk1NTU0geXl5eSct5i4nIgoKICBMR1JQSURfV0VTVEVSTl9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJXZXN0ZXJuIEV1cm9wZSBhbmQgVW5pdGVkIFN0YXRlcyIKICBMR1JQSURfQ0VOVFJBTF9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJDZW50cmFsIEV1cm9wZSIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiQmFsdGljIgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIkdyZWVrIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIkN5cmlsbGljIgogIExHUlBJRF9UVVJLSVNIK0xHUlBJRF9SRVNfQkFTRSAiVHVya2ljIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcGFuZXNlIgogIExHUlBJRF9LT1JFQU4rTEdSUElEX1JFU19CQVNFICJLb3JlYW4iCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJUcmFkaXRpb25hbCBDaGluZXNlIgogIExHUlBJRF9TSU1QTElGSUVEX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJTaW1wbGlmaWVkIENoaW5lc2UiCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJUaGFpIgogIExHUlBJRF9IRUJSRVcrTEdSUElEX1JFU19CQVNFICJIZWJyZXciCiAgTEdSUElEX0FSQUJJQytMR1JQSURfUkVTX0JBU0UgIkFyYWJpYyIgCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJWaWV0bmFtZXNlIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZGljIgogIExHUlBJRF9HRU9SR0lBTitMR1JQSURfUkVTX0JBU0UgIkdlb3JnaWFuIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIkFybWVuaWFuIgp9Cg==