LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBDb3JuaXNoIChVbml0ZWQgS2luZ2RvbSkKICoKICogQ29weXJpZ2h0IDE5OTggTWFyY2VsIEJhdXIKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjUyKQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19DT1JOSVNILCBTVUJMQU5HX0RFRkFVTFQKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMDJmXHg4MDAwXHgzODA4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAxXHgwMDAwXHgwMDAwXHg0MDAwXHgwMWZmXHgwMDNmXHg4MDAwXHhmZmZmIgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMCIKICBMT0NBTEVfSUNPVU5UUlkgIjQ0IgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIwIgogIExPQ0FMRV9JREFURSAiMSIKICBMT0NBTEVfSURBWUxaRVJPICIxIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiMTI1MiIKICBMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSAiODUwIgogIExPQ0FMRV9JREVGQVVMVENPVU5UUlkgIjQ0IgogIExPQ0FMRV9JREVGQVVMVEVCQ0RJQ0NPREVQQUdFICIyMDI4NSIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiMDQwOSIKICBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSAiMTAwMDAiCiAgTE9DQUxFX0lERUZBVUxUVU5JWENPREVQQUdFICIyODYwNSIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjAiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwNDg5MSIKICBMT0NBTEVfSUxEQVRFICIxIgogIExPQ0FMRV9JTFpFUk8gIjEiCiAgTE9DQUxFX0lNRUFTVVJFICIwIgogIExPQ0FMRV9JTU9OTFpFUk8gIjEiCiAgTE9DQUxFX0lORUdDVVJSICIxIgogIExPQ0FMRV9JTkVHTlVNQkVSICIxIgogIExPQ0FMRV9JTkVHU0VQQllTUEFDRSAiMCIKICBMT0NBTEVfSU5FR1NJR05QT1NOICIzIgogIExPQ0FMRV9JTkVHU1lNUFJFQ0VERVMgIjEiCiAgTE9DQUxFX0lORVVUUkFMICIwIgogIExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUiAiMCIKICBMT0NBTEVfSVBBUEVSU0laRSAiOSIKICBMT0NBTEVfSVBPU1NFUEJZU1BBQ0UgIjAiCiAgTE9DQUxFX0lQT1NTSUdOUE9TTiAiMyIKICBMT0NBTEVfSVBPU1NZTVBSRUNFREVTICIxIgogIExPQ0FMRV9JUkVBRElOR0xBWU9VVCAiMCIKICBMT0NBTEVfSVRJTUUgIjEiCiAgTE9DQUxFX0lUSU1FTUFSS1BPU04gIjAiCiAgTE9DQUxFX0lUTFpFUk8gIjEiCiAgTE9DQUxFX1MxMTU5ICJBTSIKICBMT0NBTEVfUzIzNTkgIlBNIgogIExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUgIkdCUiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUxICJMdW4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAiTXRoIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTMgIk1ociIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU0ICJZb3ciCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSAiR3dlIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTYgIlNhZCIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU3ICJTdWwiCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiQ09SIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSAiR2VuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiAiV2hlIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMyAiTWVyIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCAiRWJyIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSAiTWUiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2ICJFdm4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3ICJHb3IiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4ICJFc3QiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5ICJHd24iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCAiSGVkIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEgIkR1IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgIktldiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NDT1VOVFJZICJVbml0ZWQgS2luZ2RvbSIKICBMT0NBTEVfU0NVUlJFTkNZICKjIgogIExPQ0FMRV9TREFURSAiLyIKICBMT0NBTEVfU0RBWU5BTUUxICJEZSBMdW4iCiAgTE9DQUxFX1NEQVlOQU1FMiAiRGUgTWVydGgiCiAgTE9DQUxFX1NEQVlOQU1FMyAiRGUgTWVyaGVyIgogIExPQ0FMRV9TREFZTkFNRTQgIkRlIFlvdyIKICBMT0NBTEVfU0RBWU5BTUU1ICJEZSBHd2VuZXIiCiAgTE9DQUxFX1NEQVlOQU1FNiAiRGUgU2Fkb3JuIgogIExPQ0FMRV9TREFZTkFNRTcgIkRlIFN1bCIKICBMT0NBTEVfU0RFQ0lNQUwgIi4iCiAgTE9DQUxFX1NFTkdDT1VOVFJZICJVbml0ZWQgS2luZ2RvbSIKICBMT0NBTEVfU0VOR0NVUlJOQU1FICJVSyBQb3VuZCBTdGVybGluZyIKICBMT0NBTEVfU0VOR0xBTkdVQUdFICJDb3JuaXNoIgogIExPQ0FMRV9TR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU0lOVExTWU1CT0wgIkdCUCIKICBMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSAiR0IiCiAgTE9DQUxFX1NJU082MzlMQU5HTkFNRSAia3ciCiAgTE9DQUxFX1NMQU5HVUFHRSAiQ29ybmlzaCAoVW5pdGVkIEtpbmdkb20pIgogIExPQ0FMRV9TTElTVCAiLCIKICBMT0NBTEVfU0xPTkdEQVRFICJkZCBNTU1NIHl5eXkiCiAgTE9DQUxFX1NNT05ERUNJTUFMU0VQICIuIgogIExPQ0FMRV9TTU9OR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU01PTlRITkFNRTEgIk15cyBHZW52ZXIiCiAgTE9DQUxFX1NNT05USE5BTUUyICJNeXMgV2hldnJlbCIKICBMT0NBTEVfU01PTlRITkFNRTMgIk15cyBNZXJ0aCIKICBMT0NBTEVfU01PTlRITkFNRTQgIk15cyBFYnJlbCIKICBMT0NBTEVfU01PTlRITkFNRTUgIk15cyBNZSIKICBMT0NBTEVfU01PTlRITkFNRTYgIk15cyBFdmFuIgogIExPQ0FMRV9TTU9OVEhOQU1FNyAiTXlzIEdvcnRoZXJlbiIKICBMT0NBTEVfU01PTlRITkFNRTggIk15cyBFc3QiCiAgTE9DQUxFX1NNT05USE5BTUU5ICJNeXMgR3d5bmdhbGEiCiAgTE9DQUxFX1NNT05USE5BTUUxMCAiTXlzIEhlZHJhIgogIExPQ0FMRV9TTU9OVEhOQU1FMTEgIk15cyBEdSIKICBMT0NBTEVfU01PTlRITkFNRTEyICJNeXMgS2V2YXJkaHUiCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIiwiCiAgTE9DQUxFX1NOQU1FICJrdy1HQiIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FICJSdXd2YW5ldGggVW55cyIKICBMT0NBTEVfU05BVElWRUNVUlJOQU1FICJQZXVucyBTdGVybGluZyIKICBMT0NBTEVfU05BVElWRURJR0lUUyAiMDEyMzQ1Njc4OSIKICBMT0NBTEVfU05BVElWRURJU1BMQVlOQU1FICJLZXJuZXdlayAoUnV3dmFuZXRoIFVueXMpIgogIExPQ0FMRV9TTkFUSVZFTEFOR05BTUUgIktlcm5ld2VrIgogIExPQ0FMRV9TTkVHQVRJVkVTSUdOICItIgogIExPQ0FMRV9TUE9TSVRJVkVTSUdOICIiCiAgTE9DQUxFX1NTQ1JJUFRTICJMYXRuOyIKICBMT0NBTEVfU1NIT1JUREFURSAiZGQvTU0veXl5eSIKICBMT0NBTEVfU1NPUlROQU1FICJEZWZhdWx0IgogIExPQ0FMRV9TVEhPVVNBTkQgIiwiCiAgTE9DQUxFX1NUSU1FICI6IgogIExPQ0FMRV9TVElNRUZPUk1BVCAiSEg6bW06c3MiCiAgTE9DQUxFX1NZRUFSTU9OVEggIk1NTU0geXl5eSIKICAKICBMR1JQSURfV0VTVEVSTl9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJXZXN0ZXJuIEV1cm9wZSBhbmQgVW5pdGVkIFN0YXRlcyIKICBMR1JQSURfQ0VOVFJBTF9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJDZW50cmFsIEV1cm9wZSIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiQmFsdGljIgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIkdyZWVrIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIkN5cmlsbGljIgogIExHUlBJRF9UVVJLSVNIK0xHUlBJRF9SRVNfQkFTRSAiVHVya2ljIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcGFuZXNlIgogIExHUlBJRF9LT1JFQU4rTEdSUElEX1JFU19CQVNFICJLb3JlYW4iCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJUcmFkaXRpb25hbCBDaGluZXNlIgogIExHUlBJRF9TSU1QTElGSUVEX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJTaW1wbGlmaWVkIENoaW5lc2UiCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJUaGFpIgogIExHUlBJRF9IRUJSRVcrTEdSUElEX1JFU19CQVNFICJIZWJyZXciCiAgTEdSUElEX0FSQUJJQytMR1JQSURfUkVTX0JBU0UgIkFyYWJpYyIgCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJWaWV0bmFtZXNlIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZGljIgogIExHUlBJRF9HRU9SR0lBTitMR1JQSURfUkVTX0JBU0UgIkdlb3JnaWFuIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIkFybWVuaWFuIgp9Cg==