LyoKICogV2luZUNmZyByZXNvdXJjZXMKICogU3BhbmlzaCBMYW5ndWFnZSBTdXBwb3J0CiAqCiAqIENvcHlyaWdodCAyMDAzLTIwMDYgSm9z6SBNYW51ZWwgRmVycmVyIE9ydGl6CiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKgogKi8KCkxBTkdVQUdFIExBTkdfU1BBTklTSCwgU1VCTEFOR19ORVVUUkFMCgpJRFJfV0lORUNGRyBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgICBQT1BVUCAiIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiQ29uZmlndXJlIiwgSURDX0FVRElPX0NPTkZJR1VSRQogICAgRU5ECkVORAoKSUREX0FCT1VUQ0ZHIERJQUxPR0VYIDAsIDAsIDI2MCwgMjcwClNUWUxFIFdTX0NISUxECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICBQQUNLQUdFX1NUUklORyxJRENfU1RBVElDLDExOSwxNywxMjAsOAogICAgQ09OVFJPTCAgICAgICAgIElEQl9XSU5FLElEQ19TVEFUSUMsIlN0YXRpYyIsU1NfQklUTUFQICwxNSwxNywxNTcsMTExCiAgICBMVEVYVCAgICAgICAgICAgImh0dHA6Ly93d3cud2luZWhxLm9yZy8iLElEQ19TVEFUSUMsMTE5LDMxLDEwNiw4CiAgICBMVEVYVCAgICAgICAgICAgIlRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uIiwKICAgICAgICAgICAgICAgICAgICBJRENfU1RBVElDLDExOSw0NCwxMjQsNzIKRU5ECgpJRERfQVBQQ0ZHIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIkNvbmZpZ3VyYWNp824gZGUgYXBsaWNhY2lvbmVzIixJRENfU1RBVElDLCA4LDQsMjQ0LDI0MAogICAgTFRFWFQgICAgICAgICAgICJXaW5lIHB1ZWRlIGltaXRhciBkaXN0aW50YXMgdmVyc2lvbmVzIGRlIFdpbmRvd3MgcGFyYSBjYWRhIGFwbGljYWNp824uIEVzdGEgcGVzdGHxYSBlc3ThIHZpbmN1bGFkYSBhIGxhcyBkZSBMaWJyZXLtYXMgeSBHcuFmaWNvcyBwYXJhIHBvZGVyIGNhbWJpYXIgZW4gZWxsYXMgbGEgY29uZmlndXJhY2nzbiBnbG9iYWwgeS9vIGxhIGRlIHBvciBhcGxpY2FjafNuLiIsCiAgICAgICAgICAgICAgICAgICAgSURDX1NUQVRJQywxNSwyMCwyMjcsMzAKICAgIENPTlRST0wgICAgICAgICAiQXBsaWNhY2lvbmVzIixJRENfQVBQX0xJU1RWSUVXLCJTeXNMaXN0VmlldzMyIixXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgTFZTX0xJU1QgfCBMVlNfU0lOR0xFU0VMIHwgTFZTX1NIT1dTRUxBTFdBWVMsCiAgICAgICAgICAgICAgICAgICAgMTUsNTAsMjMwLDE1MAogICAgUFVTSEJVVFRPTiAgICAgICImQfFhZGlyIGFwbGljYWNp824uLi4iLElEQ19BUFBfQUREQVBQLCA5MCwyMDQsNzUsMTQKICAgIFBVU0hCVVRUT04gICAgICAiJkVsaW1pbmFyIGFwbGljYWNp824uLi4iLElEQ19BUFBfUkVNT1ZFQVBQLCAxNzAsMjA0LDc1LDE0CiAgICBMVEVYVCAgICAgICAgICAgIiZWZXJzafNuIGEgaW1pdGFyOiIsSURDX1NUQVRJQywxNywyMjYsNTgsMTYKICAgIENPTUJPQk9YICAgICAgICBJRENfV0lOVkVSLDgzLDIyNCwxNjMsNTYsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QICAgIApFTkQKCklERF9HUkFQSENGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICJDb25maWd1cmFjafNuIGRlIHZlbnRhbmFzIixJRENfU1RBVElDLDgsMjUsMjQ0LDE4MAoKICAgIENPTlRST0wgICAgICAgICJQZXJtaXRpciBhIGxvcyBwcm9ncmFtYXMgRGlyZWN0WCByZXRlbmVyIGVsIHJhdPNuIGVuIHN1cyB2ZW50YW5hcyIsSURDX0RYX01PVVNFX0dSQUIsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwzNSwyMzAsOAogICAgQ09OVFJPTCAgICAgICAgIkhhYmlsaXRhciBkb2JsZSBidWZmZXIgZGVsIGVzY3JpdG9yaW8iLElEQ19ET1VCTEVfQlVGRkVSLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTUsNDUsMjMwLDgKICAgIExURVhUICAgICAgICAgICJTaSBsYXMgdmVudGFuYXMgc29uIGdlc3Rpb25hZGFzIHBvciBzdSBnZXN0b3IgZGUgdmVudGFuYXMsIHRlbmRy4W4gbG9zIGJvcmRlcyBlc3ThbmRhciwgcmVzcGV0YXLhbiBzdSBlc2NyaXRvcmlvIHZpcnR1YWwgeSBhcGFyZWNlcuFuIGVuIHN1IGxpc3RhIGRlIHZlbnRhbmFzLlxuXG5TaSBsYXMgdmVudGFuYXMgbm8gc29uIGdlc3Rpb25hZGFzLCBlc3RhcuFuIGRlc2NvbmVjdGFkYXMgZGUgc3UgZ2VzdG9yIGRlIHZlbnRhbmFzLiBFc3RvIHNpZ25pZmljYSBxdWUgbGFzIHZlbnRhbmFzIG5vIHNlIGludGVncmFy4W4gdGFudG8gY29uIHN1IGVzY3JpdG9yaW8sIHBlcm8gbGEgZW11bGFjafNuIHNlcuEgbeFzIHByZWNpc2EgcG9yIGxvIHF1ZSBwdWVkZSBoYWNlciBxdWUgYWxndW5vcyBwcm9ncmFtYXMgZnVuY2lvbmVuIG1lam9yLiIsCiAgICAJCSAgICBJRENfU1RBVElDLDE1LDU4LDIyOCw4MAogICAgQ09OVFJPTCAgICAgICAgIlBlcm1pdGlyIGFsIGdlc3RvciBkZSB2ZW50YW5hcyBjb250cm9sYXIgbGFzIHZlbnRhbmFzIixJRENfRU5BQkxFX01BTkFHRUQsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwxMzIsMjMwLDgKCiAgICAvKiBGSVhNRTogdGhlIHdvcmRpbmcgb2YgdGhpcyBleHBsYW5hdGlvbiBjb3VsZCBiZSBhIGxvdCBiZXR0ZXIgKi8KICAgIExURVhUICAgICAgICAgICAiUHVlZGUgZWxlZ2lyIGVudHJlIGVtdWxhciB1biBlc2NyaXRvcmlvIGRlIHZlbnRhbmFzLCBkb25kZSB0b2RhcyBsYXMgdmVudGFuYXMgZXN04W4gY29uZmluYWRhcyBhIHVuYSAncGFudGFsbGEgdmlydHVhbCcsIG8gYmllbiBxdWUgbGFzIHZlbnRhbmFzIHNlIHNpdPplbiBlbiBzdSBlc2NyaXRvcmlvIGVzdOFuZGFyLiIsCiAgICAgICAgICAgICAgICAgICAgSURDX1NUQVRJQywxNSwxNDYsMjI4LDI4CiAgICBMVEVYVCAgICAgICAgICAgIkRpbWVuc2lvbmVzOiIsSURDX0RFU0tUT1BfU0laRSwxNSwxODgsNDQsOCxXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICJYIixJRENfREVTS1RPUF9CWSwxMDgsMTg4LDgsOCxXU19ESVNBQkxFRAogICAgQ09OVFJPTCAgICAgICAgICJFbXVsYXIgdW4gZXNjcml0b3JpbyB2aXJ0dWFsIixJRENfRU5BQkxFX0RFU0tUT1AsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwxNzMsMjMwLDEwCgogICAgRURJVFRFWFQgICAgICAgIElEQ19ERVNLVE9QX1dJRFRILDY0LDE4OCw0MCwxMixFU19BVVRPSFNDUk9MTCB8IEVTX05VTUJFUiB8IFdTX0RJU0FCTEVECiAgICBFRElUVEVYVCAgICAgICAgSURDX0RFU0tUT1BfSEVJR0hULDExNywxODgsNDAsMTIsRVNfQVVUT0hTQ1JPTEwgfCBFU19OVU1CRVIgfCBXU19ESVNBQkxFRAoKICAgIEdST1VQQk9YICAgICAgICAiIERpcmVjdDNEICIsSURDX1NUQVRJQyw4LDIxMCwyNDQsNTAKCiAgICBMVEVYVCAgICAgICAgICAgIlNvcG9ydGUgVmVydGV4IFNoYWRlcjogIixJRENfU1RBVElDLDE1LDIyMCw4MCwzMAogICAgQ09NQk9CT1ggICAgICAgIElEQ19EM0RfVlNIQURFUl9NT0RFLDEwMCwyMTgsMTUwLDcwLENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAoKICAgIENPTlRST0wgICAgICAgICAiUGVybWl0aXIgUGl4ZWwgU2hhZGVyIChzaSBoYXkgc29wb3J0ZSBwb3IgaGFyZHdhcmUpIixJRENfRDNEX1BTSEFERVJfTU9ERSwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDIzNywyMzAsMTAKRU5ECgpJRERfRExMQ0ZHIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIlJlZW1wbGF6b3MgZGUgRExMIixJRENfU1RBVElDLDgsNCwyNDQsMjQwCiAgICBMVEVYVCAgICAgICAgICAgIkNhZGEgbGlicmVy7WEgZGUgZW5sYWNlIGRpbuFtaWNvIHNlIHB1ZWRlIGVzcGVjaWZpY2FyIHBhcmEgcXVlIHNlYSBsYSBpbnRlcm5hIChwcm9wb3JjaW9uYWRhIHBvciBXaW5lKSBvIGxhIG5hdGl2YSAob2J0ZW5pZGEgZGUgV2luZG93cyBvIHByb3BvcmNpb25hZGEgcG9yIGxhIGFwbGljYWNp824pLiIKICAgICAgICAgICAgICAgICAgICAsSURDX1NUQVRJQywxNiwxNiwyMjAsMzIKICAgIExURVhUICAgICAgICAgICAiTnVldm8gcmVlbXBsYXpvIHBhcmEgbGlicmVy7WE6IixJRENfU1RBVElDLDE2LDU4LDEwMCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX0RMTENPTUJPLDE2LDY4LDE0MCwxNCxDQlNfRFJPUERPV04gfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUCB8IENCU19TT1JUIHwgQ0JTX0xPV0VSQ0FTRQogICAgUFVTSEJVVFRPTiAgICAgICImQfFhZGlyIixJRENfRExMU19BRERETEwsIDE2NCw2OCw4MiwxMyxCU19ERUZQVVNIQlVUVE9OCiAgICBMVEVYVCAgICAgICAgICAgIlJlZW1wbGF6b3MgZXhpc3RlbnRlczoiLElEQ19TVEFUSUMsMTYsODYsMTAwLDgKICAgIExJU1RCT1ggICAgICAgICBJRENfRExMU19MSVNULDE2LDk2LDE0MCwxNDAsV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IFdTX1ZTQ1JPTEwKICAgIFBVU0hCVVRUT04gICAgICAiJkVkaXRhciIsSURDX0RMTFNfRURJVERMTCwxNjQsOTYsODIsMTQKICAgIFBVU0hCVVRUT04gICAgICAiRSZsaW1pbmFyIixJRENfRExMU19SRU1PVkVETEwsMTY0LDExNCw4MiwxNApFTkQKCklERF9MT0FET1JERVIgRElBTE9HIERJU0NBUkRBQkxFIDgwLCA5MCwgMTEwLCA5MgpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRWRpdGFyIHJlZW1wbGF6byIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICJPcmRlbiBkZSBjYXJnYSIsSURDX1NUQVRJQyw4LDQsOTQsNjYKICAgIENPTlRST0wgICAgICAgICAiJkludGVybmEgKFdpbmUpIixJRENfUkFEX0JVSUxUSU4sIkJ1dHRvbiIsIEJTX0FVVE9SQURJT0JVVFRPTiB8IFdTX0dST1VQLDE2LDE0LDc1LDEwCiAgICBDT05UUk9MICAgICAgICAgIiZOYXRpdmEgKFdpbmRvd3MpIixJRENfUkFEX05BVElWRSwiQnV0dG9uIiwgQlNfQVVUT1JBRElPQlVUVE9OLDE2LDI0LDc1LDEwCiAgICBDT05UUk9MICAgICAgICAgIkkmbnRlcm5hIHkgZGVzcHXpcyBOYXRpdmEiLElEQ19SQURfQlVJTFRJTl9OQVRJVkUsIkJ1dHRvbiIsIEJTX0FVVE9SQURJT0JVVFRPTiwxNiwzNCw3NSwxMAogICAgQ09OVFJPTCAgICAgICAgICJOYXRpJnZhIHkgZGVzcHXpcyBJbnRlcm5hIixJRENfUkFEX05BVElWRV9CVUlMVElOLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04sMTYsNDQsNzUsMTAKICAgIENPTlRST0wgICAgICAgICAiJkRlc2hhYmlsaXRhciIsSURDX1JBRF9ESVNBQkxFLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04sMTYsNTQsNzUsMTAKICAgIERFRlBVU0hCVVRUT04gICAiQWNlcHRhciIsSURPSyw4LDc0LDQ1LDE0LFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIkNhbmNlbGFyIixJRENBTkNFTCw1Nyw3NCw0NSwxNCxXU19HUk9VUApFTkQKCklERF9EUklWRUNGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICJNYXBlb3MgZGUgdW5pZGFkIixJRENfU1RBVElDLDgsNCwyNDQsMjQwCiAgICBDT05UUk9MICAgICAgICAgIkxpc3R2aWV3IixJRENfTElTVF9EUklWRVMsIlN5c0xpc3RWaWV3MzIiLExWU19SRVBPUlQgfCBMVlNfQVVUT0FSUkFOR0UgfCBMVlNfQUxJR05MRUZUIHwKICAgICAgICAgICAgICAgICAgICBMVlNfU0lOR0xFU0VMIHwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCwgMTUsMTgsMjMyLDc2CiAgICBQVVNIQlVUVE9OICAgICAgIiZB8WFkaXIuLi4iLElEQ19CVVRUT05fQURELDE1LDk4LDM3LDE0CiAgICBQVVNIQlVUVE9OICAgICAgIiZFbGltaW5hciIsSURDX0JVVFRPTl9SRU1PVkUsNTYsOTgsMzcsMTQKICAgIFBVU0hCVVRUT04gICAgICAiQXV0byZkZXRlY3Rhci4uLiIsSURDX0JVVFRPTl9BVVRPREVURUNULDE5Nyw5OCw0OSwxNAoKICAgIC8qIGVkaXRpbmcgZHJpdmUgZGV0YWlscyAqLwogICAgTFRFWFQgICAgICAgICAgICImUnV0YToiLElEQ19TVEFUSUMsMTUsMTIzLDIwLDkKICAgIEVESVRURVhUICAgICAgICBJRENfRURJVF9QQVRILDQxLDEyMCwxNjAsMTMsRVNfQVVUT0hTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBQVVNIQlVUVE9OICAgICAgIiZFeGFtaW5hci4uLiIsSURDX0JVVFRPTl9CUk9XU0VfUEFUSCwyMDYsMTIwLDQwLDEzCgogICAgTFRFWFQgICAgICAgICAgICImVGlwbzoiLElEQ19TVEFUSUNfVFlQRSwxNSwxMzgsMjEsMTAKICAgIENPTUJPQk9YICAgICAgICBJRENfQ09NQk9fVFlQRSw0MSwxMzUsNzcsNjAsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCgogICAgTFRFWFQgICAgICAgICAgICJFdGlxdWV0YSB5IG76bS4gZGUgc2VyaWUiLElEQ19MQUJFTFNFUklBTF9TVEFUSUMsMTUsMTU1LDk1LDEwCgogICAgUFVTSEJVVFRPTiAgICAgICImTW9zdHJhciBhdmFuemFkbyIsSURDX0JVVFRPTl9TSE9XX0hJREVfQURWQU5DRUQsMTg2LDEzNiw2MCwxMwogICAgQ09OVFJPTCAgICAgICAgICJBdXRvZGV0ZWN0YXIgJmRlc2RlIGRpc3Bvc2l0aXZvOiIsSURDX1JBRElPX0FVVE9ERVRFQ1QsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT1JBRElPQlVUVE9OLDE1LDE2Niw5MywxMAogICAgRURJVFRFWFQgICAgICAgIElEQ19FRElUX0RFVklDRSwyNywxNzYsMTc0LDEzLEVTX0FVVE9IU0NST0xMCiAgICBQVVNIQlVUVE9OICAgICAgIkUmeGFtaW5hci4uLiIsSURDX0JVVFRPTl9CUk9XU0VfREVWSUNFLDIwNiwxNzYsNDAsMTMKICAgIENPTlRST0wgICAgICAgICAiQSZzaWduYXIgbWFudWFsbWVudGU6IixJRENfUkFESU9fQVNTSUdOLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9SQURJT0JVVFRPTiwxNSwxOTUsNjksMTAKCiAgICBMVEVYVCAgICAgICAgICAgIiZFdGlxdWV0YToiLElEQ19TVEFUSUNfTEFCRUwsMzMsMjA4LDI5LDEyCiAgICBFRElUVEVYVCAgICAgICAgSURDX0VESVRfTEFCRUwsNjMsMjA1LDc4LDEzLEVTX0FVVE9IU0NST0xMIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICImTrogc2VyaWU6IixJRENfU1RBVElDX1NFUklBTCwzMywyMjUsMjksMTIKICAgIEVESVRURVhUICAgICAgICBJRENfRURJVF9TRVJJQUwsNjMsMjIxLDc4LDEzLEVTX0FVVE9IU0NST0xMIHwgV1NfVEFCU1RPUAoKICAgIENPTlRST0wgICAgICAgICAiTW9zdHJhciBmaWNoZXJvcyBwdW50byIsSURDX1NIT1dfRE9UX0ZJTEVTLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsOCwyNjAsMjMwLDgKRU5ECgpJRERfQVVESU9DRkcgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiU2VsZWNjafNuIGRlIG1hbmVqYWRvciIsSURDX1NUQVRJQyw4LDQsMjQ0LDE5NQogICAgTFRFWFQgICAgICAgICAgICJTZWxlY2Npb25lIHVuIG1hbmVqYWRvciBkZSBzb25pZG8gbWFyY2FuZG8gbGEgY2FzaWxsYSBkZWwgZGVzZWFkby4gUGFyYSBkZXNoYWJpbGl0YXIgZWwgc29uaWRvIG5vIHNlbGVjY2lvbmUgbmluZ3Vuby4gTGEgc2VsZWNjafNuIGRlIG3hcyBkZSB1biBtYW5lamFkb3Igbm8gc2UgcmVjb21pZW5kYS4gQ29uZmlndXJlIHVuIG1hbmVqYWRvciBoYWNpZW5kbyBkb2JsZSBjbGljayBzb2JyZSDpbC4iLElEQ19TVEFUSUMsMTUsMjAsMjI3LDMwCiAgICBDT05UUk9MICAgICAgICAgIkRpc3Bvc2l0aXZvcyIsSURDX0FVRElPX1RSRUUsIlN5c1RyZWVWaWV3MzIiLFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AsMTUsNTAsMTQwLDE0MAogICAgUFVTSEJVVFRPTiAgICAgICJQYW5lbCBkZSBjb250cm9sIixJRENfQVVESU9fQ09OVFJPTF9QQU5FTCwxNzAsNTAsNTksMTQKICAgIEdST1VQQk9YICAgICAgICAiIERpcmVjdFNvdW5kICIsSURDX1NUQVRJQyw4LDIwNSwyNDQsNjAKICAgIExURVhUICAgICAgICAgICAiQWNlbGVyYWNp824gSGFyZHdhcmU6ICIsSURDX1NUQVRJQywxNSwyMTUsOTAsMTAKICAgIENPTUJPQk9YCSAgICBJRENfRFNPVU5EX0hXX0FDQ0VMLDEwMCwyMTMsMTUwLDcwLENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgQ09OVFJPTCAgICAgICAgICJFbXVsYWNp824gZGVsIG1hbmVqYWRvciIsSURDX0RTT1VORF9EUlZfRU1VTCwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDIzMCwyMzAsMTAKRU5ECgpJRERfREVTS1RPUF9JTlRFR1JBVElPTiBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgQXBwZWFyYW5jZSAiLElEQ19TVEFUSUMsOCw0LDI0NCwxMDYKICAgIExURVhUICAgICAgICAgICAiVGVtYToiLElEQ19TVEFUSUMsMTUsMTYsMjMwLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfVEhFTUVfVEhFTUVDT01CTywxNSwyNCwyMzAsMTQsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBQVVNIQlVUVE9OICAgICAgIkluc3RhbGFyIHRlbWEuLi4iLElEQ19USEVNRV9JTlNUQUxMLDE1MiwzOCw5MywxNAogICAgTFRFWFQgICAgICAgICAgICJDb2xvcjoiLElEQ19USEVNRV9DT0xPUlRFWFQsMTUsNTQsMjMwLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfVEhFTUVfQ09MT1JDT01CTywxNSw2MiwyMzAsMTQsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIlRhbWHxbzoiLElEQ19USEVNRV9TSVpFVEVYVCwxNSw4MCwyMzAsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19USEVNRV9TSVpFQ09NQk8sMTUsODgsMjMwLDE0LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgR1JPVVBCT1ggICAgICAgICIgU2hlbGwgRm9sZGVyICIsSURDX1NUQVRJQyw4LDExNCwyNDQsMTAwCiAgICBDT05UUk9MICAgICAgICAgIkxpc3R2aWV3IixJRENfTElTVF9TRlBBVEhTLCJTeXNMaXN0VmlldzMyIixMVlNfUkVQT1JUIHwgTFZTX0FVVE9BUlJBTkdFIHwgTFZTX0FMSUdOTEVGVCB8CiAgICAgICAgICAgICAgICAgICAgIExWU19TSU5HTEVTRUwgfCBXU19CT1JERVIgfCBXU19UQUJTVE9QLCAxNSwxMjYsMjMwLDY0CiAgICBDT05UUk9MICAgICAgICAgIkxpbmsgdG86IixJRENfTElOS19TRlBBVEgsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YfFdTX1RBQlNUT1B8V1NfRElTQUJMRUQsMTUsMTk1LDUwLDEzCiAgICBFRElUVEVYVCAgICAgICAgIElEQ19FRElUX1NGUEFUSCw2NSwxOTUsMTQ1LDEzLEVTX0FVVE9IU0NST0xMfFdTX1RBQlNUT1B8V1NfRElTQUJMRUQKICAgIFBVU0hCVVRUT04gICAgICAiQnJvd3NlIixJRENfQlJPV1NFX1NGUEFUSCwyMTUsMTk1LDMwLDEzLFdTX0RJU0FCTEVECkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19XSU5FX1ZFUlNJT04gICAgICAgICJDVlMiCiAgICBJRFNfVEFCX0FQUExJQ0FUSU9OUyAgICAiQXBsaWNhY2lvbmVzIgogICAgSURTX1RBQl9ETExTICAgICAgICAgICAgIkxpYnJlcu1hcyIKICAgIElEU19UQUJfRFJJVkVTICAgICAgICAgICJVbmlkYWRlcyIKICAgIElEU19DSE9PU0VfUEFUSCAgICAgICAgICJTZWxlY3QgdGhlIHVuaXggdGFyZ2V0IGRpcmVjdG9yeSwgcGxlYXNlLiIKICAgIElEU19ISURFX0FEVkFOQ0VEICAgICAgICJPY3VsdGFyIGF2YW56YWRvIgogICAgSURTX1NIT1dfQURWQU5DRUQgICAgICAgIk1vc3RyYXIgYXZhbnphZG8iCiAgICBJRFNfTk9USEVNRSAgICAgICAgICAgICAiKE5pbmf6biB0ZW1hKSIKICAgIElEU19UQUJfR1JBUEhJQ1MgICAgICAgICJHcuFmaWNvcyIKICAgIElEU19UQUJfREVTS1RPUF9JTlRFR1JBVElPTiAiRGVza3RvcCBJbnRlZ3JhdGlvbiIKICAgIElEU19UQUJfQVVESU8gICAgICAgICAgICJBdWRpbyIKICAgIElEU19UQUJfQUJPVVQgICAgICAgICAgICJBY2VyY2EgZGUiCiAgICBJRFNfV0lORUNGR19USVRMRSAgICAgICAiQ29uZmlndXJhY2nzbiBkZSBXaW5lIgogICAgSURTX1dJTkVDRkdfVElUTEVfQVBQICAgIldpbmUgY29uZmlndXJhdGlvbiBmb3IgJXMiCiAgICBJRFNfVEhFTUVGSUxFICAgICAgICAgICAiRmljaGVyb3MgZGUgdGVtYSIKICAgIElEU19USEVNRUZJTEVfU0VMRUNUICAgICJTZWxlY2Npb25lIHVuIGZpY2hlcm8gZGUgdGVtYSIKICAgIElEU19BVURJT19NSVNTSU5HICAgICAgICJBY3R1YWxtZW50ZSBubyBoYXkgbmluZ/puIG1hbmVqYWRvciBkZSBhdWRpbyBlc3BlY2lmaWNhZG8gZW4gZWwgcmVnaXN0cm8uXG5cblNlIGhhIHNlbGVjY2lvbmFkbyB1biBtYW5lamFkb3IgcmVjb21lbmRhZG8gcGFyYSB1c3RlZC4gUHVlZGUgdXNhciBlc3RlIG1hbmVqYWRvciBvIHNlbGVjY2lvbmFyIG90cm8gbWFuZWphZG9yIGRpc3BvbmlibGUuXG5cbkRlYmUgcHVsc2FyIEFwbGljYXIgcGFyYSBxdWUgbGEgc2VsZWNjafNuIHN1cmphIGVmZWN0by4iCiAgICBJRFNfU0hFTExfRk9MREVSICAgICAgICAiU2hlbGwgRm9sZGVyIgogICAgSURTX0xJTktTX1RPICAgICAgICAgICAgIkxpbmtzIHRvIgpFTkQK