LyoKICogV2luZUNmZyByZXNvdXJjZXMKICogRmlubmlzaCBMYW5ndWFnZSBTdXBwb3J0CiAqCiAqIENvcHlyaWdodCAyMDA1IEtpbW1vIE15bGx5dmlydGEKICogQ29weXJpZ2h0IDIwMDYgQW5zc2kgSGFubnVsYQogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICoKICovCgojaW5jbHVkZSAiY29uZmlnLmgiICAgLyogTmVlZGVkIGZvciB0aGUgUEFDS0FHRV9TVFJJTkcgZGVmaW5pdGlvbiAqLwojaW5jbHVkZSAicmVzb3VyY2UuaCIKCkxBTkdVQUdFIExBTkdfRklOTklTSCwgU1VCTEFOR19ERUZBVUxUCgpJRFJfV0lORUNGRyBNRU5VCkJFR0lOCiAgICBQT1BVUCAiIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiQXNldHVrc2V0IiwgSURDX0FVRElPX0NPTkZJR1VSRQogICAgRU5ECkVORAoKSUREX0FCT1VUQ0ZHIERJQUxPR0VYIDAsIDAsIDI2MCwgMjIwClNUWUxFIFdTX0NISUxECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIENPTlRST0wgICAgICAgICAiIiwgSURDX0FCVF9QQU5FTCwgIlNUQVRJQyIsIFNTX09XTkVSRFJBVywgMCwgMCwgMjYwLCAxNDAKICAgIExURVhUICAgICAgICAgICBQQUNLQUdFX05BTUUsSURDX0FCVF9USVRMRV9URVhULDEwNSwzMCw1NSwzMAogICAgTFRFWFQgICAgICAgICAgIFBBQ0tBR0VfVkVSU0lPTixJRENfQUJUX1BBTkVMX1RFWFQsMTYwLDQzLDE0MCw4CiAgICBDT05UUk9MICAgICAgICAgIiIsSURDX0FCVF9XRUJfTElOSywiU3lzTGluayIsIExXU19UUkFOU1BBUkVOVCwgMTA1LDUzLDEwNiw4CiAgICBMVEVYVCAgICAgICAgICAgIlRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uIiwKICAgICAgICAgICAgICAgICAgICBJRENfQUJUX0xJQ0VOU0VfVEVYVCwxMDUsNjQsMTQ1LDYwCiAgICBHUk9VUEJPWCAgICAgICAgIiBXaW5kb3dzIFJlZ2lzdHJhdGlvbiBJbmZvcm1hdGlvbiAiLCBJRENfU1RBVElDLCAxNSwgMTU1LCAyMzAsIDU1CiAgICBMVEVYVCAgICAgICAgICAgIk9taXN0YWphOiIsIElEQ19TVEFUSUMsIDIyLCAxNzEsIDQwLCAyMAogICAgRURJVFRFWFQgICAgICAgIElEQ19BQlRfT1dORVIsIDc1LCAxNzEsIDE2MCwgMTMsIEVTX0FVVE9IU0NST0xMIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJPcmdhbmlzYWF0aW86IiwgSURDX1NUQVRJQywgMjIsIDE4NSwgNTAsIDIwCiAgICBFRElUVEVYVCAgICAgICAgSURDX0FCVF9PUkcsIDc1LCAxODUsIDE2MCwgMTMsIEVTX0FVVE9IU0NST0xMIHwgV1NfVEFCU1RPUApFTkQKCklERF9BUFBDRkcgRElBTE9HICAwLCAwLCAyNjAsIDIyMApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIFNvdmVsbHVzdGVuIGFzZXR1a3NldCAiLElEQ19TVEFUSUMsIDgsNCwyNDQsMjEwCiAgICBMVEVYVCAgICAgICAgICAgIldpbmUgdm9pIGrkbGppdGVsbOQgV2luZG93c2luIGVyaSB2ZXJzaW9pdGEgZXJpIHNvdmVsbHVrc2lsbGUuIFTkbeQgduRsaWxlaHRpIHRvaW1paSB5aGRlc3PkIEtpcmphc3RvdC0gamEgR3JhZmlpa2thLXbkbGlsZWh0aWVuIGthbnNzYSBzYWxsaWVuIHNvdmVsbHVza29odGFpc2V0IGFzZXR1a3NldC4iLAogICAgICAgICAgICAgICAgICAgIElEQ19TVEFUSUMsMTUsMjAsMjI3LDMwCiAgICBDT05UUk9MICAgICAgICAgIlNvdmVsbHVrc2V0IixJRENfQVBQX0xJU1RWSUVXLCJTeXNMaXN0VmlldzMyIixXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgTFZTX0xJU1QgfCBMVlNfU0lOR0xFU0VMIHwgTFZTX1NIT1dTRUxBTFdBWVMsCiAgICAgICAgICAgICAgICAgICAgMTUsNTAsMjMwLDEyMAogICAgUFVTSEJVVFRPTgkgICAgIiZMaXPk5CBzb3ZlbGx1cy4uLiIsSURDX0FQUF9BRERBUFAsIDkwLDE3NCw3NSwxNAogICAgUFVTSEJVVFRPTgkgICAgIiZQb2lzdGEgc292ZWxsdXMiLElEQ19BUFBfUkVNT1ZFQVBQLCAxNzAsMTc0LDc1LDE0CiAgICBMVEVYVCAgICAgICAgICAgIiZXaW5kb3dzaW4gdmVyc2lvOiIsSURDX1NUQVRJQywxNywxOTYsNTgsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19XSU5WRVIsODMsMTk0LDE2Myw1NixDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AgICAgCkVORAoKSUREX0dSQVBIQ0ZHIERJQUxPRyAgMCwgMCwgMjYwLCAyMjAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAiIElra3VuYS1hc2V0dWtzZXQgIixJRENfU1RBVElDLDgsNCwyNDQsODQKICAgIENPTlRST0wgICAgICImU2FsbGkgRGlyZWN0WCAtc292ZWxsdXN0ZW4gZXN05OQga3Vyc29yaW4gcG9pc3R1bWluZW4gaWtrdW5hc3RhIixJRENfRFhfTU9VU0VfR1JBQiwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDIwLDIzMCw4CiAgICBDT05UUk9MICAgICAiQWxsb3cgdGhlIHdpbmRvdyBtYW5hZ2VyIHRvICZkZWNvcmF0ZSB0aGUgd2luZG93cyIsSURDX0VOQUJMRV9ERUNPUkFURUQsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwzMiwyMzAsOAogICAgQ09OVFJPTCAgICAgIlNhbGxpIGlra3VuYW9oamVsbWFuIGhhbGxpdGEgaWtrdW5vaXRhIixJRENfRU5BQkxFX01BTkFHRUQsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSw0NCwyMzAsOAogICAgQ09OVFJPTCAgICAgIiZFbXVsb2kgdmlydHVhYWxpc3RhIHT2eXD2eXTk5CIsSURDX0VOQUJMRV9ERVNLVE9QLCJCdXR0b24iLAogICAgICAgICAgICAgICAgQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSw1NiwyMzAsOAogICAgTFRFWFQgICAgICAgIlR59nD2eWTkbiBrb2tvOiIsSURDX0RFU0tUT1BfU0laRSwxNSw3MCw0NCw4LFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAiWCIsSURDX0RFU0tUT1BfQlksMTA5LDcwLDgsOCxXU19ESVNBQkxFRAogICAgRURJVFRFWFQgICAgSURDX0RFU0tUT1BfV0lEVEgsNjQsNjgsNDAsMTIsRVNfQVVUT0hTQ1JPTEwgfCBFU19OVU1CRVIgfCBXU19ESVNBQkxFRAogICAgRURJVFRFWFQgICAgSURDX0RFU0tUT1BfSEVJR0hULDExNyw2OCw0MCwxMixFU19BVVRPSFNDUk9MTCB8IEVTX05VTUJFUiB8IFdTX0RJU0FCTEVECgogICAgR1JPVVBCT1ggICAgIiBEaXJlY3QzRCAiLElEQ19TVEFUSUMsOCw5NSwyNDQsNDkKICAgIExURVhUICAgICAgICJWZXJ0ZXggU2hhZGVyIC10dWtpOiAiLElEQ19TVEFUSUMsMTUsMTEwLDgwLDMyCiAgICBDT01CT0JPWCAgICBJRENfRDNEX1ZTSEFERVJfTU9ERSwxMDAsMTA4LDE0NSw3MCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIENPTlRST0wgICAgICJTYWxsaSAmUGl4ZWwgU2hhZGVyOm4ga+R5dHT2IGxhaXR0ZWlzdG9uIHR1a2llc3NhIixJRENfRDNEX1BTSEFERVJfTU9ERSwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDEyNiwyMzAsMTAKCiAgICBHUk9VUEJPWCAgICAiIFNjcmVlbiAmUmVzb2x1dGlvbiAiLElEQ19TVEFUSUMsOCwxNTEsMjQ0LDYzCiAgICBDT05UUk9MICAgICAiIiwgSURDX1JFU19UUkFDS0JBUiwgIm1zY3Rsc190cmFja2JhcjMyIixXU19UQUJTVE9QLDEyLDE2MSwxODcsMTUKICAgIEVESVRURVhUICAgIElEQ19SRVNfRFBJRURJVCwyMDQsMTYxLDIzLDEzLEVTX05VTUJFUnxXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAiZHBpIixJRENfU1RBVElDLDIzNSwxNjMsMTAsOAogICAgTFRFWFQgICAgICAgIlRoaXMgaXMgYSBzYW1wbGUgdGV4dCB1c2luZyAxMCBwb2ludCBUYWhvbWEiLElEQ19SRVNfRk9OVF9QUkVWSUVXLDE1LDE4MSwyMzAsMjgKRU5ECgpJRERfRExMQ0ZHIERJQUxPRyAgMCwgMCwgMjYwLCAyMjAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIiBETEwta2lyamFzdG9qZW4gbeTkcml0eWtzZXQgIixJRENfU1RBVElDLDgsNCwyNDQsMjEwCiAgICBMVEVYVCAgICAgICAgICAgIkR5bmFhbWlzZXN0aSBsYWRhdHRhdmF0IGtpcmphc3RvdCAoRExMKSB2b2lkYWFuIG3k5HJpdGVsbOQgeWtzaXRlbGxlbiBvbGVtYWFuIGpva28gV2luZW4gdGFyam9hbWlhIChzaXPk5G5yYWtlbm5ldHR1amEpIHRhaSBXaW5kb3dzaW4gbmF0aWl2ZWphIGtpcmphc3RvamEgKFdpbmRvd3MtYXNlbm51a3Nlc3RhLCB0YWkgc292ZWxsdXN0ZW4gdGFyam9hbWlhKS4iCiAgICAgICAgICAgICAgICAgICAgLElEQ19TVEFUSUMsMTYsMTYsMjIwLDMyCiAgICBMVEVYVCAgICAgICAgICAgIlV1c2kgbeTkcml0eXMga2lyamFzdG9sbGU6IixJRENfU1RBVElDLDE2LDU4LDEwMCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX0RMTENPTUJPLDE2LDY4LDE0MCwxNCxDQlNfRFJPUERPV04gfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUCB8IENCU19TT1JUIHwgQ0JTX0xPV0VSQ0FTRQogICAgUFVTSEJVVFRPTiAgICAgICImTGlz5OQiLElEQ19ETExTX0FERERMTCwgMTY0LDY4LDgyLDEzCiAgICBMVEVYVCAgICAgICAgICAgIk9sZW1hc3Nhb2xldmF0IG3k5HJpdHlrc2V0OiIsSURDX1NUQVRJQywxNiw4NiwxMDAsOAogICAgTElTVEJPWCAgICAgICAgIElEQ19ETExTX0xJU1QsMTYsOTYsMTQwLDExMixXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgV1NfVlNDUk9MTAogICAgUFVTSEJVVFRPTiAgICAgICImTXVva2thYSIsSURDX0RMTFNfRURJVERMTCwxNjQsOTYsODIsMTQKICAgIFBVU0hCVVRUT04gICAgICAiJlBvaXN0YSIsSURDX0RMTFNfUkVNT1ZFRExMLDE2NCwxMTQsODIsMTQgCkVORAoKSUREX0xPQURPUkRFUiBESUFMT0cgODAsIDkwLCAxMTAsIDkyClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJFZGl0IE92ZXJyaWRlIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIiBMYXRhYW1pc2rkcmplc3R5cyAiLElEQ19TVEFUSUMsOCw0LDk0LDY2CiAgICBDT05UUk9MICAgICAgICAgIiZTaXPkaW5lbiAoV2luZSkiLElEQ19SQURfQlVJTFRJTiwiQnV0dG9uIiwgQlNfQVVUT1JBRElPQlVUVE9OIHwgV1NfR1JPVVAsMTYsMTQsNzUsMTAKICAgIENPTlRST0wgICAgICAgICAiJk5hdGlpdmkgKFdpbmRvd3MpIixJRENfUkFEX05BVElWRSwiQnV0dG9uIiwgQlNfQVVUT1JBRElPQlVUVE9OLDE2LDI0LDc1LDEwCiAgICBDT05UUk9MICAgICAgICAgIlMmaXPkaW5lbiwgc2l0dGVuIG5hdGlpdmkiLElEQ19SQURfQlVJTFRJTl9OQVRJVkUsIkJ1dHRvbiIsIEJTX0FVVE9SQURJT0JVVFRPTiwxNiwzNCw3NSwxMAogICAgQ09OVFJPTCAgICAgICAgICJOYXRpaXZpLCBzaXR0ZW4gc2lz5GluZW4iLElEQ19SQURfTkFUSVZFX0JVSUxUSU4sIkJ1dHRvbiIsIEJTX0FVVE9SQURJT0JVVFRPTiwxNiw0NCw3NSwxMAogICAgQ09OVFJPTCAgICAgICAgICImUG9pc3RhIGvkeXT2c3TkIixJRENfUkFEX0RJU0FCTEUsIkJ1dHRvbiIsIEJTX0FVVE9SQURJT0JVVFRPTiwxNiw1NCw3NSwxMAogICAgREVGUFVTSEJVVFRPTiAgICJIeXbka3N5IixJRE9LLDgsNzQsNDUsMTQsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiUGVydXV0YSIsSURDQU5DRUwsNTcsNzQsNDUsMTQsV1NfR1JPVVAKRU5ECgpJRERfRFJJVkVDRkcgRElBTE9HICAwLCAwLCAyNjAsIDIyMApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIEFzZW1pZW4gbWFwcGF1a3NldCAiLElEQ19TVEFUSUMsOCw0LDI0NCwxOTUKICAgIExURVhUICAgICAgICAgICAiRmFpbGVkIHRvIGNvbm5lY3QgdG8gdGhlIG1vdW50IG1hbmFnZXIsIHRoZSBkcml2ZSBjb25maWd1cmF0aW9uIGNhbm5vdCBiZSBlZGl0ZWQuIiwgSURDX1NUQVRJQ19NT1VOVE1HUl9FUlJPUiwgMTUsMzAsMTkwLDc2CiAgICBDT05UUk9MICAgICAgICAgIkxpc3R2aWV3IixJRENfTElTVF9EUklWRVMsIlN5c0xpc3RWaWV3MzIiLExWU19SRVBPUlQgfCBMVlNfQVVUT0FSUkFOR0UgfCBMVlNfQUxJR05MRUZUIHwKICAgICAgICAgICAgICAgICAgICBMVlNfU0lOR0xFU0VMIHwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCwgMTUsMTgsMjMyLDc2CiAgICBQVVNIQlVUVE9OICAgICAgIiZMaXPk5C4uLiIsSURDX0JVVFRPTl9BREQsMTUsOTgsMzcsMTQKICAgIFBVU0hCVVRUT04gICAgICAiJlBvaXN0YSIsSURDX0JVVFRPTl9SRU1PVkUsNTYsOTgsMzcsMTQKICAgIFBVU0hCVVRUT04gICAgICAiJkhhZSBhdXRvbWFhdHRpc2VzdGkiLElEQ19CVVRUT05fQVVUT0RFVEVDVCwxNzcsOTgsNjksMTQKCiAgICAvKiBlZGl0aW5nIGRyaXZlIGRldGFpbHMgKi8KICAgIExURVhUICAgICAgICAgICAiJlBvbGt1OiIsSURDX1NUQVRJQ19QQVRILDE1LDEyMywyNSw5CiAgICBFRElUVEVYVCAgICAgICAgSURDX0VESVRfUEFUSCw0MSwxMjAsMTYwLDEzLEVTX0FVVE9IU0NST0xMIHwgV1NfVEFCU1RPUAogICAgUFVTSEJVVFRPTiAgICAgICImU2VsYWEuLi4iLElEQ19CVVRUT05fQlJPV1NFX1BBVEgsMjA2LDEyMCw0MCwxMwogICAgCiAgICBMVEVYVCAgICAgICAgICAgIiZUeXlwcGk6IixJRENfU1RBVElDX1RZUEUsMTUsMTM4LDI1LDEwCiAgICBDT01CT0JPWCAgICAgICAgSURDX0NPTUJPX1RZUEUsNDEsMTM1LDc3LDYwLENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgCiAgICBQVVNIQlVUVE9OICAgICAgIiZO5Hl05CBsaXPkYXNldHVrc2V0IixJRENfQlVUVE9OX1NIT1dfSElERV9BRFZBTkNFRCwxNzcsMTM1LDY5LDEzCiAgICBMVEVYVCAgICAgICAgICAgIkRlJnZpY2U6IixJRENfU1RBVElDX0RFVklDRSwxNSwxNTMsMjYsOQogICAgRURJVFRFWFQgICAgICAgIElEQ19FRElUX0RFVklDRSw0MSwxNTAsMTYwLDEzLEVTX0FVVE9IU0NST0xMIHwgV1NfVEFCU1RPUAogICAgUFVTSEJVVFRPTiAgICAgICImU2VsYWEuLi4iLElEQ19CVVRUT05fQlJPV1NFX0RFVklDRSwyMDYsMTUwLDQwLDEzCgogICAgTFRFWFQgICAgICAgICAgICImTmltaToiLElEQ19TVEFUSUNfTEFCRUwsMTUsMTY4LDQ5LDEyCiAgICBFRElUVEVYVCAgICAgICAgSURDX0VESVRfTEFCRUwsNjUsMTY1LDc4LDEzLEVTX0FVVE9IU0NST0xMIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICImU2FyamFudW1lcm86IixJRENfU1RBVElDX1NFUklBTCwxNSwxODMsNDksMTIKICAgIEVESVRURVhUICAgICAgICBJRENfRURJVF9TRVJJQUwsNjUsMTgwLDc4LDEzLEVTX0FVVE9IU0NST0xMIHwgV1NfVEFCU1RPUAoKICAgIENPTlRST0wgICAgICAgICAiTuR5dOQgcCZpc3RldGllZG9zdG90IixJRENfU0hPV19ET1RfRklMRVMsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCw4LDIwNSwyMzAsOApFTkQKCklERF9BVURJT0NGRyBESUFMT0cgIDAsIDAsIDI2MCwgMjIwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgQWp1cmluIHZhbGludGEgIixJRENfU1RBVElDLDgsNCwyNDQsMTYwCiAgICBMVEVYVAkgICAgIsTkbmlhanVyaTogIixJRENfU1RBVElDLDE1LDIwLDIyNywzMAogICAgQ09OVFJPTCAgICAgICAgICJEZXZpY2VzIixJRENfQVVESU9fVFJFRSwiU3lzVHJlZVZpZXczMiIsV1NfQk9SREVSIHwgV1NfVEFCU1RPUCwxNSw1MCwxNDAsMTA1CiAgICBQVVNIQlVUVE9OICAgICAgIiZUZXN0IFNvdW5kIixJRENfQVVESU9fVEVTVCwxNzAsNTAsNTksMTQKICAgIFBVU0hCVVRUT04JICAgICImSGFsbGludGFwYW5lZWxpIixJRENfQVVESU9fQ09OVFJPTF9QQU5FTCwxNzAsNzAsNzksMTQKICAgIEdST1VQQk9YICAgICAgICAiIERpcmVjdFNvdW5kICIsSURDX1NUQVRJQyw4LDE2OCwyNDQsNDcKICAgIExURVhUCSAgICAiTGFpdHRlaXN0b3BvaGphaW5lbiBraWloZHl0eXM6IixJRENfU1RBVElDLDE1LDE3OCw5MCwxNgogICAgQ09NQk9CT1gJICAgIElEQ19EU09VTkRfSFdfQUNDRUwsMTAwLDE3OCwxNTAsNzAsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIk9sZXR1c27keXRldGFhanV1czoiLElEQ19TVEFUSUMsMTUsMTk3LDcwLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfRFNPVU5EX1JBVEVTLDg2LDE5NSwzNiw3NixDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiTuR5dHRlaWRlbiBvbGV0dXNiaXR0aW3k5HLkOiIsSURDX1NUQVRJQywxMjYsMTk3LDk0LDgKICAgIENPTUJPQk9YICAgICAgICBJRENfRFNPVU5EX0JJVFMsMjIwLDE5NSwzMCw1NixDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKRU5ECgpJRERfREVTS1RPUF9JTlRFR1JBVElPTiBESUFMT0cgIDAsIDAsIDI2MCwgMjIwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgVWxrb27ka/YgIixJRENfU1RBVElDLDgsNCwyNDQsMTA2CiAgICBMVEVYVCAgICAgICAgICAgIlRlZW1hOiIsSURDX1NUQVRJQywxNSwxNiwxMzAsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19USEVNRV9USEVNRUNPTUJPLDE1LDI0LDEzMCwxNCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIFBVU0hCVVRUT04gICAgICAiQXNlbm5hICZ0ZWVtYS4uLiIsSURDX1RIRU1FX0lOU1RBTEwsMTUyLDIzLDkzLDE0CiAgICBMVEVYVCAgICAgICAgICAgIlbkcmk6IixJRENfVEhFTUVfQ09MT1JURVhULDE1LDQwLDExMiw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX1RIRU1FX0NPTE9SQ09NQk8sMTUsNDgsMTEyLDE0LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJLb2tvOiIsSURDX1RIRU1FX1NJWkVURVhULDEzNSw0MCwxMTAsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19USEVNRV9TSVpFQ09NQk8sMTM1LDQ4LDExMCwxNCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiSXRlbToiLElEQ19TVEFUSUMsMTUsNjQsMTEyLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfU1lTUEFSQU1fQ09NQk8sMTUsNzQsMTEyLDEyMCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AgfCBDQlNfU09SVAogICAgTFRFWFQgICAgICAgICAgICJDb2xvcjoiLElEQ19TWVNQQVJBTV9DT0xPUl9URVhULDEzNSw2NCwyNSw4LFdTX0RJU0FCTEVECiAgICBQVVNIQlVUVE9OICAgICAgIiIsSURDX1NZU1BBUkFNX0NPTE9SLDEzNSw3NCwyNSwxMyxXU19ESVNBQkxFRCB8IEJTX09XTkVSRFJBVwogICAgTFRFWFQgICAgICAgICAgICJTaXplOiIsSURDX1NZU1BBUkFNX1NJWkVfVEVYVCwxNjYsNjQsMzAsOCxXU19ESVNBQkxFRAogICAgRURJVFRFWFQgICAgICAgIElEQ19TWVNQQVJBTV9TSVpFLDE2Niw3NCwyMywxMyxFU19BVVRPSFNDUk9MTCB8IFdTX1RBQlNUT1AgfCBXU19ESVNBQkxFRAogICAgQ09OVFJPTCAgICAgICAgICIiLElEQ19TWVNQQVJBTV9TSVpFX1VELFVQRE9XTl9DTEFTUyxVRFNfU0VUQlVERFlJTlQgfCBXU19ESVNBQkxFRCwxODcsNzQsMTUsMTMKICAgIFBVU0hCVVRUT04gICAgICAiRm9udCIsSURDX1NZU1BBUkFNX0ZPTlQsMjA4LDc0LDM3LDEzLFdTX0RJU0FCTEVECiAgICBHUk9VUEJPWCAgICAgICAgIiBTaGVsbCBGb2xkZXIgIixJRENfU1RBVElDLDgsMTE0LDI0NCwxMDAKICAgIENPTlRST0wgICAgICAgICAiTGlzdHZpZXciLElEQ19MSVNUX1NGUEFUSFMsIlN5c0xpc3RWaWV3MzIiLExWU19SRVBPUlQgfCBMVlNfQVVUT0FSUkFOR0UgfCBMVlNfQUxJR05MRUZUIHwKICAgICAgICAgICAgICAgICAgICAgTFZTX1NJTkdMRVNFTCB8IFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AsIDE1LDEyNiwyMzAsNjQKICAgIENPTlRST0wgICAgICAgICAiTGluayB0bzoiLElEQ19MSU5LX1NGUEFUSCwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1h8V1NfVEFCU1RPUHxXU19ESVNBQkxFRCwxNSwxOTUsNTAsMTMKICAgIEVESVRURVhUICAgICAgICAgSURDX0VESVRfU0ZQQVRILDY1LDE5NSwxNDUsMTMsRVNfQVVUT0hTQ1JPTEx8V1NfVEFCU1RPUHxXU19ESVNBQkxFRAogICAgUFVTSEJVVFRPTiAgICAgICJCcm93c2UiLElEQ19CUk9XU0VfU0ZQQVRILDIxNSwxOTUsMzAsMTMsV1NfRElTQUJMRUQKRU5ECgpTVFJJTkdUQUJMRQpCRUdJTgogICAgSURTX1RBQl9BUFBMSUNBVElPTlMgICAgIlNvdmVsbHVrc2V0IgogICAgSURTX1RBQl9ETExTICAgICAgICAgICAgIktpcmphc3RvdCIKICAgIElEU19UQUJfRFJJVkVTICAgICAgICAgICJBc2VtYXQiCiAgICBJRFNfQ0hPT1NFX1BBVEggICAgICAgICAiVmFsaXRzZSB1bml4LWtvaGRla2Fuc2lvLiIKICAgIElEU19ISURFX0FEVkFOQ0VEICAgICAgICJQaWlsb3RhIGxpc+Rhc2V0dWtzZXQiCiAgICBJRFNfU0hPV19BRFZBTkNFRCAgICAgICAiTuR5dOQgbGlz5GFzZXR1a3NldCIKICAgIElEU19OT1RIRU1FICAgICAgICAgICAgICIoRWkgdGVlbWFhKSIKICAgIElEU19UQUJfR1JBUEhJQ1MgICAgICAgICJHcmFmaWlra2EiCiAgICBJRFNfVEFCX0RFU0tUT1BfSU5URUdSQVRJT04gIlR59nD2eXTkaW50ZWdyYWF0aW8iCiAgICBJRFNfVEFCX0FVRElPICAgICAgICAgICAixORuaSIKICAgIElEU19UQUJfQUJPVVQgICAgICAgICAgICJUaWV0b2phIgogICAgSURTX1dJTkVDRkdfVElUTEUgICAgICAgIldpbmVuIGFzZXR1a3NldCIKICAgIElEU19XSU5FQ0ZHX1RJVExFX0FQUCAgICJXaW5lIGNvbmZpZ3VyYXRpb24gZm9yICVzIgogICAgSURTX1RIRU1FRklMRSAgICAgICAgICAgIlRlZW1hdGllZG9zdG90ICgqLm1zc3R5bGVzOyAqLnRoZW1lKSIKICAgIElEU19USEVNRUZJTEVfU0VMRUNUICAgICJWYWxpdHNlIHRlZW1hdGllZG9zdG8iCiAgICBJRFNfU0hFTExfRk9MREVSICAgICAgICAiU2hlbGwgRm9sZGVyIgogICAgSURTX0xJTktTX1RPICAgICAgICAgICAgIkxpbmtzIHRvIgpFTkQKClNUUklOR1RBQkxFCkJFR0lOCiAgICBJRFNfRExMX1dBUk5JTkcgICAgICAgICAiVORt5G4ga2lyamFzdG9uIGxhdGFhbWlzauRyamVzdHlrc2VuIG11dXR0YW1pc3RhIGVpIHN1b3NpdGVsbGEuXG5IYWx1YXRrbyBzaWx0aSBqYXRrYWE/IgogICAgSURTX0RMTF9XQVJOSU5HX0NBUFRJT04gIlZhcm9pdHVzOiBq5HJqZXN0ZWxt5Gtpcmphc3RvIgogICAgSURTX0RMTF9OQVRJVkUgICAgICAgICAgIm5hdGlpdmkiCiAgICBJRFNfRExMX0JVSUxUSU4gICAgICAgICAic2lz5GluZW4iCiAgICBJRFNfRExMX05BVElWRV9CVUlMVElOICAibmF0aWl2aSwgc2lz5GluZW4iCiAgICBJRFNfRExMX0JVSUxUSU5fTkFUSVZFICAic2lz5GluZW4sIG5hdGlpdmkiCiAgICBJRFNfRExMX0RJU0FCTEVEICAgICAgICAiZWkga+R5dPZzc+QiCiAgICBJRFNfREVGQVVMVF9TRVRUSU5HUyAgICAiRGVmYXVsdCBTZXR0aW5ncyIKICAgIElEU19FWEVDVVRBQkxFX0ZJTFRFUiAgICJXaW5lIFByb2dyYW1zICgqLmV4ZSwqLmV4ZS5zbylcMCouZXhlOyouZXhlLnNvXDAiCiAgICBJRFNfVVNFX0dMT0JBTF9TRVRUSU5HUyAiVXNlIGdsb2JhbCBzZXR0aW5ncyIKICAgIElEU19TRUxFQ1RfRVhFQ1VUQUJMRSAgICJTZWxlY3QgYW4gZXhlY3V0YWJsZSBmaWxlIgpFTkQKClNUUklOR1RBQkxFCkJFR0lOCiAgICBJRFNfU0hBREVSX01PREVfSEFSRFdBUkUgICAgIkhhcmR3YXJlIgogICAgSURTX1NIQURFUl9NT0RFX05PTkUgICAgICAgICJOb25lIgpFTkQKClNUUklOR1RBQkxFCkJFR0lOCiAgICBJRFNfRFJJVkVfVU5LTk9XTiAgICAgICAgICAgIkF1dG9kZXRlY3QiCiAgICBJRFNfRFJJVkVfRklYRUQgICAgICAgICAgICAgIkxvY2FsIGhhcmQgZGlzayIKICAgIElEU19EUklWRV9SRU1PVEUgICAgICAgICAgICAiTmV0d29yayBzaGFyZSIKICAgIElEU19EUklWRV9SRU1PVkFCTEUgICAgICAgICAiRmxvcHB5IGRpc2siCiAgICBJRFNfRFJJVkVfQ0RST00gICAgICAgICAgICAgIkNELVJPTSIKICAgIElEU19EUklWRV9MRVRURVJTX0VYQ0VFREVEICAiWW91IGNhbm5vdCBhZGQgYW55IG1vcmUgZHJpdmVzLlxuXG5FYWNoIGRyaXZlIG11c3QgaGF2ZSBhIGxldHRlciwgZnJvbSBBIHRvIFosIHNvIHlvdSBjYW5ub3QgaGF2ZSBtb3JlIHRoYW4gMjYiCiAgICBJRFNfU1lTVEVNX0RSSVZFX0xBQkVMICAgICAgIlN5c3RlbSBkcml2ZSIKICAgIElEU19DT05GSVJNX0RFTEVURV9DICAgICAgICAiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSBkcml2ZSBDP1xuXG5Nb3N0IFdpbmRvd3MgYXBwbGljYXRpb25zIGV4cGVjdCBkcml2ZSBDIHRvIGV4aXN0LCBhbmQgd2lsbCBkaWUgbWVzc2lseSBpZiBpdCBkb2Vzbid0LiBJZiB5b3UgcHJvY2VlZCByZW1lbWJlciB0byByZWNyZWF0ZSBpdCEiCiAgICBJRFNfQ09MX0RSSVZFTEVUVEVSICAgICAgICAgIkxldHRlciIKICAgIElEU19DT0xfRFJJVkVNQVBQSU5HICAgICAgICAiRHJpdmUgTWFwcGluZyIKICAgIElEU19OT19EUklWRV9DICAgICAgICAgICAgICAiWW91IGRvbid0IGhhdmUgYSBkcml2ZSBDLiBUaGlzIGlzIG5vdCBzbyBncmVhdC5cblxuUmVtZW1iZXIgdG8gY2xpY2sgJ0FkZCcgaW4gdGhlIERyaXZlcyB0YWIgdG8gY3JlYXRlIG9uZSFcbiIKRU5ECgpTVFJJTkdUQUJMRQpCRUdJTgogICAgSURTX0FDQ0VMX0ZVTEwgICAgICAgICAgICAgICJGdWxsIgogICAgSURTX0FDQ0VMX1NUQU5EQVJEICAgICAgICAgICJTdGFuZGFyZCIKICAgIElEU19BQ0NFTF9CQVNJQyAgICAgICAgICAgICAiQmFzaWMiCiAgICBJRFNfQUNDRUxfRU1VTEFUSU9OICAgICAgICAgIkVtdWxhdGlvbiIKICAgIElEU19EUklWRVJfQUxTQSAgICAgICAgICAgICAiQUxTQSBEcml2ZXIiCiAgICBJRFNfRFJJVkVSX0VTT1VORCAgICAgICAgICAgIkVzb3VuRCBEcml2ZXIiCiAgICBJRFNfRFJJVkVSX09TUyAgICAgICAgICAgICAgIk9TUyBEcml2ZXIiCiAgICBJRFNfRFJJVkVSX0pBQ0sgICAgICAgICAgICAgIkpBQ0sgRHJpdmVyIgogICAgSURTX0RSSVZFUl9OQVMgICAgICAgICAgICAgICJOQVMgRHJpdmVyIgogICAgSURTX0RSSVZFUl9DT1JFQVVESU8gICAgICAgICJDb3JlQXVkaW8gRHJpdmVyIgogICAgSURTX09QRU5fRFJJVkVSX0VSUk9SICAgICAgICJDb3VsZG4ndCBvcGVuICVzISIKICAgIElEU19TT1VORERSSVZFUlMgICAgICAgICAgICAiU291bmQgRHJpdmVycyIKICAgIElEU19ERVZJQ0VTX1dBVkVPVVQgICAgICAgICAiV2F2ZSBPdXQgRGV2aWNlcyIKICAgIElEU19ERVZJQ0VTX1dBVkVJTiAgICAgICAgICAiV2F2ZSBJbiBEZXZpY2VzIgogICAgSURTX0RFVklDRVNfTUlESU9VVCAgICAgICAgICJNSURJIE91dCBEZXZpY2VzIgogICAgSURTX0RFVklDRVNfTUlESUlOICAgICAgICAgICJNSURJIEluIERldmljZXMiCiAgICBJRFNfREVWSUNFU19BVVggICAgICAgICAgICAgIkF1eCBEZXZpY2VzIgogICAgSURTX0RFVklDRVNfTUlYRVIgICAgICAgICAgICJNaXhlciBEZXZpY2VzIgogICAgSURTX1VOQVZBSUxBQkxFX0RSSVZFUiAgICAgICJGb3VuZCBkcml2ZXIgaW4gcmVnaXN0cnkgdGhhdCBpcyBub3QgYXZhaWxhYmxlIVxuXG5SZW1vdmUgXCIlc1wiIGZyb20gcmVnaXN0cnk/IgogICAgSURTX1dBUk5JTkcgICAgICAgICAgICAgICAgICJXYXJuaW5nIgpFTkQK