LyoKICogRnJlbmNoIHJlc291cmNlcyBmb3IgV0xEQVAzMgogKgogKiBDb3B5cmlnaHQgMjAwNSBKb25hdGhhbiBFcm5zdAogKiBDb3B5cmlnaHQgMjAwOSBGculk6XJpYyBEZWxhbm95CiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNpbmNsdWRlICJ3aW5kZWYuaCIKCkxBTkdVQUdFIExBTkdfRlJFTkNILCBTVUJMQU5HX05FVVRSQUwKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCnsKICAgIDAgIlN1Y2PocyIKICAgIDEgIkVycmV1ciBkJ29w6XJhdGlvbiIKICAgIDIgIkVycmV1ciBkZSBwcm90b2NvbGUiCiAgICAzICJMaW1pdGUgZGUgdGVtcHMgZOlwYXNz6WUiCiAgICA0ICJMaW1pdGUgZGUgdGFpbGxlIGTpcGFzc+llIgogICAgNSAiQ29tcGFyYWlzb24gZmF1c3NlIgogICAgNiAiQ29tcGFyYWlzb24gdnJhaWUiCiAgICA3ICJN6XRob2RlIGQnYXV0aGVudGlmaWNhdGlvbiBub24gc3VwcG9ydOllIgogICAgOCAiQXV0aGVudGlmaWNhdGlvbiBmb3J0ZSByZXF1aXNlIgogICAgOSAiUulm6XJhbnQgKHYyKSIKICAgIDEwICJS6WbpcmFudCIKICAgIDExICJMaW1pdGUgYWRtaW5pc3RyYXRpdmUgZOlwYXNz6WUiCiAgICAxMiAiRXh0ZW5zaW9uIGNyaXRpcXVlIGluZGlzcG9uaWJsZSIKICAgIDEzICJDb25maWRlbnRpYWxpdOkgcmVxdWlzZSIKICAgIDE0ICIiCiAgICAxNSAiIgogICAgMTYgIkF0dHJpYnV0IGluY29ubnUiCiAgICAxNyAiVHlwZSBpbmTpZmluaSIKICAgIDE4ICJDb3JyZXNwb25kYW5jZSBpbmFwcHJvcHJp6WUiCiAgICAxOSAiVmlvbGF0aW9uIGRlIGNvbnRyYWludGUiCiAgICAyMCAiQXR0cmlidXQgb3UgdmFsZXVyIGV4aXN0YW50IgogICAgMjEgIlN5bnRheGUgaW52YWxpZGUiCiAgICAyMiAiIgogICAgMjMgIiIKICAgIDI0ICIiCiAgICAyNSAiIgogICAgMjYgIiIKICAgIDI3ICIiCiAgICAyOCAiIgogICAgMjkgIiIKICAgIDMwICIiCiAgICAzMSAiIgogICAgMzIgIk9iamV0IGluY29ubnUiCiAgICAzMyAiUHJvYmzobWUgZCdhbGlhcyIKICAgIDM0ICJTeW50YXhlIEROIGludmFsaWRlIgogICAgMzUgIkVzdCB1bmUgZmV1aWxsZSIKICAgIDM2ICJQcm9ibOhtZSBkZSBk6XLpZulyZW5jZW1lbnQgZCdhbGlhcyIKICAgIDM3ICIiCiAgICAzOCAiIgogICAgMzkgIiIKICAgIDQwICIiCiAgICA0MSAiIgogICAgNDIgIiIKICAgIDQzICIiCiAgICA0NCAiIgogICAgNDUgIiIKICAgIDQ2ICIiCiAgICA0NyAiIgogICAgNDggIkF1dGhlbnRpZmljYXRpb24gaW5hcHByb3ByaellIgogICAgNDkgIkF1dG9yaXNhdGlvbnMgaW52YWxpZGVzIgogICAgNTAgIkRyb2l0cyBpbnN1ZmZpc2FudHMiCiAgICA1MSAiT2NjdXDpIgogICAgNTIgIkluZGlzcG9uaWJsZSIKICAgIDUzICJOZSBzb3VoYWl0ZSBwYXMgcydleOljdXRlciIKICAgIDU0ICJCb3VjbGUgZOl0ZWN06WUiCiAgICA1NSAiIgogICAgNTYgIiIKICAgIDU3ICIiCiAgICA1OCAiIgogICAgNTkgIiIKICAgIDYwICJDb250cvRsZSBkZSB0cmkgbWFucXVhbnQiCiAgICA2MSAiRXJyZXVyIGQnaW50ZXJ2YWxsZSBkJ2luZGV4IgogICAgNjIgIiIKICAgIDYzICIiCiAgICA2NCAiVmlvbGF0aW9uIGRlIG5vbWVuY2xhdHVyZSIKICAgIDY1ICJWaW9sYXRpb24gZGUgY2xhc3NlIGQnb2JqZXQiCiAgICA2NiAiSW50ZXJkaXQgc3VyIGRlcyBub24tZmV1aWxsZXMiCiAgICA2NyAiSW50ZXJkaXQgc3VyIFJETiIKICAgIDY4ICJFeGlzdGUgZOlq4CIKICAgIDY5ICJQYXMgZGUgTW9kcyBkZSBjbGFzc2UgZCdvYmpldCIKICAgIDcwICJS6XN1bHRhdHMgdHJvcCBncmFuZHMiCiAgICA3MSAiQWZmZWN0ZSBkZSBtdWx0aXBsZXMgRFNBIgogICAgNzIgIiIKICAgIDczICIiCiAgICA3NCAiIgogICAgNzUgIiIKICAgIDc2ICIiCiAgICA3NyAiIgogICAgNzggIiIKICAgIDc5ICIiCiAgICA4MCAiQXV0cmUiCiAgICA4MSAiU2VydmV1ciBpbmRpc3BvbmlibGUiCiAgICA4MiAiRXJyZXVyIGxvY2FsZSIKICAgIDgzICJFcnJldXIgZCdlbmNvZGFnZSIKICAgIDg0ICJFcnJldXIgZGUgZOljb2RhZ2UiCiAgICA4NSAiROlsYWkgZCdhdHRlbnRlIGTpcGFzc+kiCiAgICA4NiAiQXV0aC4gaW5jb25udWUiCiAgICA4NyAiRXJyZXVyIGRlIGZpbHRyZSIKICAgIDg4ICJBbm51bGF0aW9uIHBhciBsJ3V0aWxpc2F0ZXVyIgogICAgODkgIkVycmV1ciBkZSBwYXJhbeh0cmUiCiAgICA5MCAiUGFzIGRlIG3pbW9pcmUiCiAgICA5MSAiSW1wb3NzaWJsZSBkZSBzZSBjb25uZWN0ZXIgYXUgc2VydmV1ciBMREFQIgogICAgOTIgIk9w6XJhdGlvbiBub24gc3VwcG9ydOllIHBhciBjZXR0ZSB2ZXJzaW9uIGR1IHByb3RvY29sZSBMREFQIgogICAgOTMgIkxlIGNvbnRy9GxlIHNw6WNpZmnpIG4nYSBwYXMg6XTpIHRyb3V26SBkYW5zIGxlIG1lc3NhZ2UiCiAgICA5NCAiUGFzIGRlIHLpc3VsdGF0IGRhbnMgbGUgbWVzc2FnZSIKICAgIDk1ICJQbHVzIGRlIHLpc3VsdGF0cyByZXRvdXJu6XMiCiAgICA5NiAiQm91Y2xlIGxvcnMgZHUgdHJhaXRlbWVudCBkZXMgculm6XJhbnRzIgogICAgOTcgIkxpbWl0ZSBkdSBub21icmUgZGUgculm6XJhbnRzIGTpcGFzc+llIgp9Cg==