LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBQb2xpc2gKICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjUwKQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19QT0xJU0gsIFNVQkxBTkdfREVGQVVMVAp7CiAgTE9DQUxFX0ZPTlRTSUdOQVRVUkUgTCJceDAwMjdceDgwMDBceDM4MDhceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDJceDAwMDBceDAwMDBceDA0MDBceDAwMTJceDAwMDBceDAwMDBceGM1ZDQiCiAgTE9DQUxFX0lDQUxFTkRBUlRZUEUgIjEiCiAgTE9DQUxFX0lDRU5UVVJZICIxIgogIExPQ0FMRV9JQ09VTlRSWSAiNDgiCiAgTE9DQUxFX0lDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JQ1VSUkVOQ1kgIjMiCiAgTE9DQUxFX0lEQVRFICIyIgogIExPQ0FMRV9JREFZTFpFUk8gIjEiCiAgTE9DQUxFX0lERUZBVUxUQU5TSUNPREVQQUdFICIxMjUwIgogIExPQ0FMRV9JREVGQVVMVENPREVQQUdFICI4NTIiCiAgTE9DQUxFX0lERUZBVUxUQ09VTlRSWSAiNDgiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIwODgwIgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwNDE1IgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAyOSIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjI4NTkyIgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjEiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiMCIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMiIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjA0MTUiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiOCIKICBMT0NBTEVfSU5FR05VTUJFUiAiMSIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiMSIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JTkVVVFJBTCAiMCIKICBMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIgIjAiCiAgTE9DQUxFX0lQQVBFUlNJWkUgIjkiCiAgTE9DQUxFX0lQT1NTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JUE9TU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lQT1NTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSVJFQURJTkdMQVlPVVQgIjAiCiAgTE9DQUxFX0lUSU1FICIxIgogIExPQ0FMRV9JVElNRU1BUktQT1NOICIwIgogIExPQ0FMRV9JVExaRVJPICIxIgogIExPQ0FMRV9TMTE1OSAiIgogIExPQ0FMRV9TMjM1OSAiIgogIExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUgIlBPTCIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUxICJQbiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUyICJXdCIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICKcciIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU0ICJDeiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU1ICJQdCIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICJTbyIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU3ICJOIgogIExPQ0FMRV9TQUJCUkVWTEFOR05BTUUgIlBMSyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEgInN0eSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgImx1dCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgIm1hciIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQgImt3aSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIm1haiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYgImN6ZSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgImxpcCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggInNpZSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTkgIndyeiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwICJwYZ8iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAibGlzIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgImdydSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NDT1VOVFJZICJQb2xhbmQiCiAgTE9DQUxFX1NDVVJSRU5DWSAierMiCiAgTE9DQUxFX1NEQVRFICItIgogIExPQ0FMRV9TREFZTkFNRTEgInBvbmllZHppYbNlayIKICBMT0NBTEVfU0RBWU5BTUUyICJ3dG9yZWsiCiAgTE9DQUxFX1NEQVlOQU1FMyAinHJvZGEiCiAgTE9DQUxFX1NEQVlOQU1FNCAiY3p3YXJ0ZWsiCiAgTE9DQUxFX1NEQVlOQU1FNSAicGm5dGVrIgogIExPQ0FMRV9TREFZTkFNRTYgInNvYm90YSIKICBMT0NBTEVfU0RBWU5BTUU3ICJuaWVkemllbGEiCiAgTE9DQUxFX1NERUNJTUFMICIsIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiUG9sYW5kIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIlBvbGlzaCBabG90eSIKICBMT0NBTEVfU0VOR0xBTkdVQUdFICJQb2xpc2giCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiUExOIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJQTCIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJwbCIKICBMT0NBTEVfU0xBTkdVQUdFICJQb2xpc2giCiAgTE9DQUxFX1NMSVNUICI7IgogIExPQ0FMRV9TTE9OR0RBVEUgImQgTU1NTSB5eXl5IgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLCIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NNT05USE5BTUUxICJzdHljemXxIgogIExPQ0FMRV9TTU9OVEhOQU1FMiAibHV0eSIKICBMT0NBTEVfU01PTlRITkFNRTMgIm1hcnplYyIKICBMT0NBTEVfU01PTlRITkFNRTQgImt3aWVjaWXxIgogIExPQ0FMRV9TTU9OVEhOQU1FNSAibWFqIgogIExPQ0FMRV9TTU9OVEhOQU1FNiAiY3plcndpZWMiCiAgTE9DQUxFX1NNT05USE5BTUU3ICJsaXBpZWMiCiAgTE9DQUxFX1NNT05USE5BTUU4ICJzaWVycGll8SIKICBMT0NBTEVfU01PTlRITkFNRTkgIndyemVzaWXxIgogIExPQ0FMRV9TTU9OVEhOQU1FMTAgInBhn2R6aWVybmlrIgogIExPQ0FMRV9TTU9OVEhOQU1FMTEgImxpc3RvcGFkIgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgImdydWR6aWXxIgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICKgIgogIExPQ0FMRV9TTkFNRSAicGwtUEwiCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAiUG9sc2thIgogIExPQ0FMRV9TTkFUSVZFQ1VSUk5BTUUgIlqzb3R5IgogIExPQ0FMRV9TTkFUSVZFRElHSVRTICIwMTIzNDU2Nzg5IgogIExPQ0FMRV9TTkFUSVZFRElTUExBWU5BTUUgInBvbHNraSAoUG9sc2thKSIKICBMT0NBTEVfU05BVElWRUxBTkdOQU1FICJwb2xza2kiCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NPUEVOVFlQRUxBTkdVQUdFVEFHICJQTEsgIgogIExPQ0FMRV9TUE9TSVRJVkVTSUdOICIiCiAgTE9DQUxFX1NTQ1JJUFRTICJMYXRuOyIKICBMT0NBTEVfU1NIT1JUREFURSAieXl5eS1NTS1kZCIKICBMT0NBTEVfU1NIT1JUVElNRSAiSEg6bW0iCiAgTE9DQUxFX1NTT1JUTkFNRSAiRGVmYXVsdCIKICBMT0NBTEVfU1RIT1VTQU5EICKgIgogIExPQ0FMRV9TVElNRSAiOiIKICBMT0NBTEVfU1RJTUVGT1JNQVQgIkhIOm1tOnNzIgogIExPQ0FMRV9TWUVBUk1PTlRIICJNTU1NIHl5eXkiCgogIExHUlBJRF9XRVNURVJOX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIkV1cm9wYSB6YWNob2RuaWEgaSBTdGFueSBaamVkbm9jem9uZSIKICBMR1JQSURfQ0VOVFJBTF9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJFdXJvcGEgY2VudHJhbG5hIgogIExHUlBJRF9CQUxUSUMrTEdSUElEX1JFU19CQVNFICJCYbN0eWNraWUiCiAgTEdSUElEX0dSRUVLK0xHUlBJRF9SRVNfQkFTRSAiR3JlY2tpIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIkN5cnlsaWNhIgogIExHUlBJRF9UVVJLSVNIK0xHUlBJRF9SRVNfQkFTRSAiVHVyZWNraSIKICBMR1JQSURfSkFQQU5FU0UrTEdSUElEX1JFU19CQVNFICJKYXBv8XNraSIKICBMR1JQSURfS09SRUFOK0xHUlBJRF9SRVNfQkFTRSAiS29yZWHxc2tpIgogIExHUlBJRF9UUkFESVRJT05BTF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiQ2hp8XNraSB0cmFkeWN5am55IgogIExHUlBJRF9TSU1QTElGSUVEX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJDaGnxc2tpIHVwcm9zemN6b255IgogIExHUlBJRF9USEFJK0xHUlBJRF9SRVNfQkFTRSAiVGFqc2tpIgogIExHUlBJRF9IRUJSRVcrTEdSUElEX1JFU19CQVNFICJIZWJyYWpza2kiCiAgTEdSUElEX0FSQUJJQytMR1JQSURfUkVTX0JBU0UgIkFyYWJza2kiCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJXaWV0bmFtc2tpIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZHlqc2tpIgogIExHUlBJRF9HRU9SR0lBTitMR1JQSURfUkVTX0JBU0UgIkdydXpp8XNraSIKICBMR1JQSURfQVJNRU5JQU4rTEdSUElEX1JFU19CQVNFICJBcm1l8XNraSIKfQo=