LyoKICogV2luZUNmZyByZXNvdXJjZXMKICogUG9ydHVndWVzZSBMYW5ndWFnZSBTdXBwb3J0CiAqCiAqIENvcHlyaWdodCAyMDAzIE1hcmNlbG8gRHVhcnRlCiAqIENvcHlyaWdodCAyMDA0LDIwMDcgQW3pcmljbyBKb3PpIE1lbG8KICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqCiAqLwoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0VfQlJBWklMSUFOCgpJRERfQUJPVVRDRkcgRElBTE9HRVggMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJWZXJz428gZG8gV2luZToiLElEQ19TVEFUSUMsMTE5LDE3LDU1LDgKICAgIExURVhUICAgICAgICAgICAiQ1ZTIixJRENfV0lORVZFUiwxNzksMTcsNTYsOAogICAgQ09OVFJPTCAgICAgICAgIElEQl9XSU5FLElEQ19TVEFUSUMsIlN0YXRpYyIsU1NfQklUTUFQIHwgU1NfQ0VOVEVSSU1BR0UgfCAKICAgICAgICAgICAgICAgICAgICBTU19SRUFMU0laRUlNQUdFIHwgV1NfQk9SREVSLDE1LDE3LDE1NywxMTEsIFdTX0VYX1RSQU5TUEFSRU5UCiAgICBMVEVYVCAgICAgICAgICAgImh0dHA6Ly93d3cud2luZWhxLm9yZy8iLElEQ19TVEFUSUMsMTE5LDMxLDEwNiw4CiAgICBDVEVYVCAgICAgICAgICAgIlRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uIiwKICAgICAgICAgICAgICAgICAgICBJRENfU1RBVElDLDExOSw0NCwxMjQsNzIKRU5ECgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRQoKSUREX0FCT1VUQ0ZHIERJQUxPR0VYIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiVmVyc+NvIFdpbmU6IixJRENfU1RBVElDLDExOSwxNyw1NSw4CiAgICBMVEVYVCAgICAgICAgICAgIkNWUyIsSURDX1dJTkVWRVIsMTc5LDE3LDU2LDgKICAgIENPTlRST0wgICAgICAgICBJREJfV0lORSxJRENfU1RBVElDLCJTdGF0aWMiLFNTX0JJVE1BUCB8IFNTX0NFTlRFUklNQUdFIHwKICAgICAgICAgICAgICAgICAgICBTU19SRUFMU0laRUlNQUdFIHwgV1NfQk9SREVSLDE1LDE3LDE1NywxMTEsIFdTX0VYX1RSQU5TUEFSRU5UCiAgICBMVEVYVCAgICAgICAgICAgImh0dHA6Ly93d3cud2luZWhxLm9yZy8iLElEQ19TVEFUSUMsMTE5LDMxLDEwNiw4CiAgICBDVEVYVCAgICAgICAgICAgIkVzdGEgYmlibGlvdGVjYSDpICdzb2Z0d2FyZScgbGl2cmU7IHBvZGUtYSByZWRpc3RyaWJ1aXIgZS9vdSBtb2RpZmljYXIgbm9zIHRlcm1vcyBkYSBMaWNlbudhIFD6YmxpY2EgR2VyYWwgTGVzc2VyIEdOVSBjb21vIHB1YmxpY2FkYSBwZWxhIEZ1bmRh5+NvIGRlICdTb2Z0d2FyZScgTGl2cmU7IHRhbnRvIGEgdmVyc+NvIDIuMSBkYSBsaWNlbudhLCBvdSAoY29uZm9ybWUgYSBzdWEgb3BpbmnjbykgcXVhbHF1ZXIgdmVyc+NvIHBvZXRyaW9yLiIsCiAgICAgICAgICAgICAgICAgICAgSURDX1NUQVRJQywxMTksNDQsMTI0LDcyCkVORAoKCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFX0JSQVpJTElBTgoKSUREX0FQUENGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgQ29uZmlndXJh5/VlcyBkYSBhcGxpY2Hn428gIixJRENfU1RBVElDLCA4LDQsMjQ0LDI0MAogICAgTFRFWFQgICAgICAgICAgICJXaW5lIHBvZGUgaW1pdGFyIHbhcmlvcyBlc3RpbG9zIGUgdmVyc/VlcyBkbyBXaW5kb3dzIHBhcmEgY2FkYSBhcGxpY2Hn428iLAogICAgICAgICAgICAgICAgICAgIElEQ19TVEFUSUMsMTUsMjAsMjI3LDIwCiAgICBDT05UUk9MICAgICAgICAgIkFwbGljYef1ZXMiLElEQ19BUFBfTElTVFZJRVcsIlN5c0xpc3RWaWV3MzIiLFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBMVlNfTElTVCB8IExWU19TSU5HTEVTRUwgfCBMVlNfU0hPV1NFTEFMV0FZUywKICAgICAgICAgICAgICAgICAgICAxNSw0MCwyMzAsMTQwCiAgICBQVVNIQlVUVE9OCSAgICAiQWRpY29uYXIgYXBsaWNh5+NvLi4uIixJRENfQVBQX0FEREFQUCwgOTAsMTg0LDc1LDE0CiAgICBQVVNIQlVUVE9OCSAgICAiUmVtb3ZlciBhcGxpY2Hn428iLElEQ19BUFBfUkVNT1ZFQVBQLCAxNzAsMTg0LDc1LDE0CiAgICBMVEVYVCAgICAgICAgICAgIlZlcnPjbyBkbyBXaW5kb3dzOiIsSURDX1NUQVRJQywxNywyMDQsNTgsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19XSU5WRVIsODMsMjAyLDE2Myw1NixDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AgICAgCiAgICBMVEVYVCAgICAgICAgICAgIlZlcnPjbyBkbyBET1M6IixJRENfU1RBVElDLDE3LDIyMyw1Nyw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX0RPU1ZFUiw4MywyMjQsMTYzLDU2LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUApFTkQKCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFCgpJRERfQVBQQ0ZHIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIiBDb25maWd1cmHn9WVzIGRhIGFwbGljYefjbyAiLElEQ19TVEFUSUMsIDgsNCwyNDQsMjQwCiAgICBMVEVYVCAgICAgICAgICAgIk8gV2luZSBwb2RlIGltaXRhciB24XJpb3MgZXN0aWxvcyBlIHZlcnP1ZXMgZG8gV2luZG93cyBwYXJhIGNhZGEgYXBsaWNh5+NvIiwKICAgICAgICAgICAgICAgICAgICBJRENfU1RBVElDLDE1LDIwLDIyNywyMAogICAgQ09OVFJPTCAgICAgICAgICJBcGxpY2Hn9WVzIixJRENfQVBQX0xJU1RWSUVXLCJTeXNMaXN0VmlldzMyIixXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgTFZTX0xJU1QgfCBMVlNfU0lOR0xFU0VMIHwgTFZTX1NIT1dTRUxBTFdBWVMsCiAgICAgICAgICAgICAgICAgICAgMTUsNDAsMjMwLDE0MAogICAgUFVTSEJVVFRPTgkgICAgIkFkaWNvbmFyIGFwbGljYefjby4uLiIsSURDX0FQUF9BRERBUFAsIDkwLDE4NCw3NSwxNAogICAgUFVTSEJVVFRPTgkgICAgIlJlbW92ZXIgYXBsaWNh5+NvIixJRENfQVBQX1JFTU9WRUFQUCwgMTcwLDE4NCw3NSwxNAogICAgTFRFWFQgICAgICAgICAgICJWZXJz428gV2luZG93czoiLElEQ19TVEFUSUMsMTcsMjA0LDU4LDgKICAgIENPTUJPQk9YICAgICAgICBJRENfV0lOVkVSLDgzLDIwMiwxNjMsNTYsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIlZlcnPjbyBET1M6IixJRENfU1RBVElDLDE3LDIyMyw1Nyw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX0RPU1ZFUiw4MywyMjQsMTYzLDU2LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUApFTkQKCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRV9CUkFaSUxJQU4KCklERF9HUkFQSENGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgQ09OVFJPTAkgICAgIlByb2dyYW1hcyBEaXJlY3RYIHBvZGVtIGltcGVkaXIgcXVlIG8gbW91c2UgZGVpeGUgYSBqYW5lbGE/IixJRENfRFhfTU9VU0VfR1JBQiwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDM1LDIzMCw4CiAgICAKICAgIEdST1VQQk9YICAgICAgICAiIENvbmZpZ3VyYef1ZXMgZGUgamFuZWxhICIsSURDX1NUQVRJQyw4LDI1LDI0NCwxMjAKCiAgICAvKiBGSVhNRTogdGhlIHdvcmRpbmcgb2YgdGhpcyBleHBsYW5hdGlvbiBjb3VsZCBiZSBhIGxvdCBiZXR0ZXIgKi8KICAgIExURVhUICAgICAgICAgICAiVm9j6iBwb2RlIGVzY29saGVyIGVtdWxhdGFyIHVtYSDhcmVhIGRlIHRyYWJhbGhvLCBvbmRlIHRvZGFzIGFzIGphbmVsYXMgc+NvIGNvbmZpbmFkYXMgZW0gdW1hICd0ZWxhIHZpcnR1YWwnLCBvdSBwb2RlIHRlciB1bWEgamFuZWxhIGNvbG9jYWRhIG5hIHN1YSDhcmVhIGRlIHRyYWJhbGhvIHBhZHLjby4iLAogICAgICAgICAgICAgICAgICAgIElEQ19TVEFUSUMsMTUsNzMsMjI4LDI4CiAgICBMVEVYVCAgICAgICAgICAgIlRhbWFuaG8gZGEg4XJlYSBkZSB0cmFiYWxobzoiLElEQ19ERVNLVE9QX1NJWkUsMTUsMTE1LDEwMCw4LFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIlgiLElEQ19ERVNLVE9QX0JZLDE2NCwxMTUsOCw4LFdTX0RJU0FCTEVECiAgICBDT05UUk9MICAgICAgICAgIkVtdWxhciB1bWEg4XJlYSBkZSB0cmFiYWxobyB2aXJ0dWFsIixJRENfRU5BQkxFX0RFU0tUT1AsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwxMDAsMjI4LDEwCgkJICAgIAogICAgRURJVFRFWFQgICAgICAgIElEQ19ERVNLVE9QX1dJRFRILDEyMCwxMTUsNDAsMTIsRVNfQVVUT0hTQ1JPTEwgfCBFU19OVU1CRVIgfCBXU19ESVNBQkxFRAogICAgRURJVFRFWFQgICAgICAgIElEQ19ERVNLVE9QX0hFSUdIVCwxNzMsMTE1LDQwLDEyLEVTX0FVVE9IU0NST0xMIHwgRVNfTlVNQkVSIHwgV1NfRElTQUJMRUQKICAgIEdST1VQQk9YICAgICAgICAiIFNjcmVlbiBSZXNvbHV0aW9uICIsSURDX1NUQVRJQyw4LDI0MiwyNDQsMjUKICAgIENPTlRST0wgICAgICAgICAiIiwgSURDX1JFU19UUkFDS0JBUiwgIm1zY3Rsc190cmFja2JhcjMyIixXU19UQUJTVE9QLDEyLDI1MCwxODcsMTUKICAgIEVESVRURVhUICAgICAgICBJRENfUkVTX0RQSUVESVQsMjA0LDI1MCwyMywxMyxFU19OVU1CRVJ8V1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJkcGkiLElEQ19TVEFUSUMsMjM1LDI1MiwxMCw4CgkJICAgIApFTkQKCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFCgpJRERfR1JBUEhDRkcgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIENPTlRST0wJICAgICJPcyBwcm9ncmFtYXMgRGlyZWN0WCBwb2RlbSBpbXBlZGlyIHF1ZSBvIHJhdG8gZGVpeGUgYSBqYW5lbGE/IixJRENfRFhfTU9VU0VfR1JBQiwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDM1LDIzMCw4CiAgICAKICAgIEdST1VQQk9YICAgICAgICAiIENvbmZpZ3VyYef1ZXMgZGUgamFuZWxhICIsSURDX1NUQVRJQyw4LDI1LDI0NCwxMjAKCiAgICAvKiBGSVhNRTogdGhlIHdvcmRpbmcgb2YgdGhpcyBleHBsYW5hdGlvbiBjb3VsZCBiZSBhIGxvdCBiZXR0ZXIgKi8KICAgIExURVhUICAgICAgICAgICAiUG9kZSBlc2NvbGhlciBlbXVsYXIgdW0gZWNy4ywgb25kZSB0b2RhcyBhcyBqYW5lbGFzIHPjbyBjb25maW5hZGFzIGEgdW0gJ2VjcuMgdmlydHVhbCcsIG91IHBvZGUgdGVyIHVtYSBqYW5lbGEgY29sb2NhZGEgbm8gc2V1IGVjcuMgcHJlZGVmaW5pZG8uIiwKICAgICAgICAgICAgICAgICAgICBJRENfU1RBVElDLDE1LDczLDIyOCwyOAogICAgTFRFWFQgICAgICAgICAgICJUYW1hbmhvIGRvIGVjcuM6IixJRENfREVTS1RPUF9TSVpFLDE1LDExNSwxMDAsOCxXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICJYIixJRENfREVTS1RPUF9CWSwxNjQsMTE1LDgsOCxXU19ESVNBQkxFRAogICAgQ09OVFJPTCAgICAgICAgICJFbXVsYXIgdW0gZWNy4yB2aXJ0dWFsIixJRENfRU5BQkxFX0RFU0tUT1AsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwxMDAsMjI4LDEwCgkJICAgIAogICAgRURJVFRFWFQgICAgICAgIElEQ19ERVNLVE9QX1dJRFRILDEyMCwxMTUsNDAsMTIsRVNfQVVUT0hTQ1JPTEwgfCBFU19OVU1CRVIgfCBXU19ESVNBQkxFRAogICAgRURJVFRFWFQgICAgICAgIElEQ19ERVNLVE9QX0hFSUdIVCwxNzMsMTE1LDQwLDEyLEVTX0FVVE9IU0NST0xMIHwgRVNfTlVNQkVSIHwgV1NfRElTQUJMRUQKCQkgICAgCkVORAoKCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFX0JSQVpJTElBTgoKSUREX0RMTENGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICJTb2JyZWVzY3JldmVyIERMTHMiLElEQ19TVEFUSUMsOCw0LDI0NCwyNDAKICAgIExURVhUICAgICAgICAgICAiQmlibGlvdGVjYXMgcG9kZW0gc2VyIGVzcGVjaWZpY2FkYXMgaW5kaXZpZHVhbG1lbnRlIGNvbW8gJ2J1aWx0aW4nIG91ICduYXRpdmUnLiBVbWEgZW50cmFkYSBETEwgY29tbyAiIioiIiDpIHBlcnRpbmVudGUgYSB0b2RhcyBhcyBETExzIG7jbyBlc3BlY2lmaWNhZGFzIGV4cGxpY2l0YW1lbnRlLiIKICAgICAgICAgICAgICAgICAgICAsICBJRENfU1RBVElDLDE1LDE3LDIyOCwzMgogICAgQ09OVFJPTCAgICAgICAgICJTb2JyZWVzY3JldmVyIERMTHMiLCBJRENfVFJFRV9ETExTLCAiU3lzVHJlZVZpZXczMiIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBUVlNfTElORVNBVFJPT1QgfCBUVlNfSEFTTElORVMgfCBUVlNfU0hPV1NFTEFMV0FZUyB8IFRWU19IQVNCVVRUT05TLCAxNSw1MCwxNDIsMTg3CiAgICBMVEVYVCAgICAgICAgICAgIk9yZGVtIGRlIGNhcmdhOiIsSURDX1NUQVRJQywxNjMsNTAsNjAsOAogICAgQ09OVFJPTCAgICAgICAgICJCdWlsdGluIChXaW5lKSIsSURDX1JBRF9CVUlMVElOLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04gfCBXU19HUk9VUCwxNjMsNjUsNzUsMTAKICAgIENPTlRST0wgICAgICAgICAiTmF0aXZlIChXaW5kb3dzKSIsSURDX1JBRF9OQVRJVkUsIkJ1dHRvbiIsIEJTX0FVVE9SQURJT0JVVFRPTiwxNjMsODAsNzUsMTAKICAgIENPTlRST0wgICAgICAgICAiQnVpbHRpbiwgTmF0aXZlIixJRENfUkFEX0JVSUxUSU5fTkFUSVZFLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04sMTYzLDk1LDc1LDEwCiAgICBDT05UUk9MICAgICAgICAgIk5hdGl2ZSwgQnVpbHRpbiIsSURDX1JBRF9OQVRJVkVfQlVJTFRJTiwiQnV0dG9uIiwgQlNfQVVUT1JBRElPQlVUVE9OLDE2MywxMTAsNzUsMTAKICAgIENPTlRST0wgICAgICAgICAiRGVzYWJpbGl0YWRhIixJRENfUkFEX0RJU0FCTEUsIkJ1dHRvbiIsIEJTX0FVVE9SQURJT0JVVFRPTiwxNjMsMTI1LDc1LDEwCiAgICBQVVNIQlVUVE9OCSAgICAiQWRpY2lvbmFyIGFwbGljYefjby4uLiIsSURDX0RMTFNfQUREQVBQLDE2MywxNDQsODIsMTQKICAgIFBVU0hCVVRUT04JICAgICJSZW1vdmVyIGFwbGljYefjbyIsSURDX0RMTFNfUkVNT1ZFQVBQLCAxNjMsMTY0LDgyLDE0CiAgICBQVVNIQlVUVE9OCSAgICAiQWRpY2lvbmFyIGNhcmdhIGRlIERMTDoiLElEQ19ETExTX0FERERMTCwgMTYzLDE4NCw4MiwxNAogICAgQ09NQk9CT1ggICAgICAgIElEQ19ETExMSVNULDE2MywyMDQsODIsMTQsQ0JTX0RST1BET1dOIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AgfCBDQlNfU09SVCB8IENCU19MT1dFUkNBU0UKICAgIFBVU0hCVVRUT04JICAgICJSZW1vdmVyIGNhcmdhIGRlIERMTCIsSURDX0RMTFNfUkVNT1ZFRExMLDE2MywyMjQsODIsMTQKRU5ECgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRQoKSUREX0RMTENGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICJTdWJzdGl0dWnn428gZGUgRExMcyIsSURDX1NUQVRJQyw4LDQsMjQ0LDI0MAogICAgTFRFWFQgICAgICAgICAgICJBcyBiaWJsaW90ZWNhcyBkZSBsaWdh5/VlcyBkaW7ibWljYXMgcG9kZW0gc2VyIGVzcGVjaWZpY2FkYXMgaW5kaXZpZHVhbG1lbnRlIHBhcmEgc2VyZW0gZW1idXRpZGFzIChwcm92aWRlbmNpYWRhcyBwZWxvIFdpbmUpIG91IG5hdGl2YXMgKHRpcmFkYXMgZG8gV2luZG93cyBvdSBwcm92aWRlbmNpYWRhcyBwZWxhIGFwbGljYefjbykuIgogICAgICAgICAgICAgICAgICAgICwgIElEQ19TVEFUSUMsMTUsMTcsMjI4LDMyCiAgICBDT05UUk9MICAgICAgICAgIlN1YnN0aXR1aXIgRExMcyIsIElEQ19UUkVFX0RMTFMsICJTeXNUcmVlVmlldzMyIiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IFRWU19MSU5FU0FUUk9PVCB8IFRWU19IQVNMSU5FUyB8IFRWU19TSE9XU0VMQUxXQVlTIHwgVFZTX0hBU0JVVFRPTlMsIDE1LDUwLDE0MiwxODcKICAgIExURVhUICAgICAgICAgICAiT3JkZW0gZGUgY2FyZ2E6IixJRENfU1RBVElDLDE2Myw1MCw2MCw4CiAgICBDT05UUk9MICAgICAgICAgIkJ1aWx0aW4gKFdpbmUpIixJRENfUkFEX0JVSUxUSU4sIkJ1dHRvbiIsIEJTX0FVVE9SQURJT0JVVFRPTiB8IFdTX0dST1VQLDE2Myw2NSw3NSwxMAogICAgQ09OVFJPTCAgICAgICAgICJOYXRpdmFzIChXaW5kb3dzKSIsSURDX1JBRF9OQVRJVkUsIkJ1dHRvbiIsIEJTX0FVVE9SQURJT0JVVFRPTiwxNjMsODAsNzUsMTAKICAgIENPTlRST0wgICAgICAgICAiRW1idXRpZGFzLCBOYXRpdmFzIixJRENfUkFEX0JVSUxUSU5fTkFUSVZFLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04sMTYzLDk1LDc1LDEwCiAgICBDT05UUk9MICAgICAgICAgIk5hdGl2YXMsIEVtYnV0aWRhcyIsSURDX1JBRF9OQVRJVkVfQlVJTFRJTiwiQnV0dG9uIiwgQlNfQVVUT1JBRElPQlVUVE9OLDE2MywxMTAsNzUsMTAKICAgIENPTlRST0wgICAgICAgICAiRGVzYWN0aXZhZGEiLElEQ19SQURfRElTQUJMRSwiQnV0dG9uIiwgQlNfQVVUT1JBRElPQlVUVE9OLDE2MywxMjUsNzUsMTAKICAgIFBVU0hCVVRUT04JICAgICJBZGljaW9uYXIgYXBsaWNh5+NvLi4uIixJRENfRExMU19BRERBUFAsMTYzLDE0NCw4MiwxNAogICAgUFVTSEJVVFRPTgkgICAgIlJlbW92ZXIgYXBsaWNh5+NvIixJRENfRExMU19SRU1PVkVBUFAsIDE2MywxNjQsODIsMTQKICAgIFBVU0hCVVRUT04JICAgICJBZGljaW9uYXIgY2FyZ2EgRExMOiIsSURDX0RMTFNfQURERExMLCAxNjMsMTg0LDgyLDE0CiAgICBDT01CT0JPWCAgICAgICAgSURDX0RMTExJU1QsMTYzLDIwNCw4MiwxNCxDQlNfRFJPUERPV04gfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUCB8IENCU19TT1JUIHwgQ0JTX0xPV0VSQ0FTRQogICAgUFVTSEJVVFRPTgkgICAgIlJlbW92ZXIgY2FyZ2EgZGUgRExMIixJRENfRExMU19SRU1PVkVETEwsMTYzLDIyNCw4MiwxNApFTkQKCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfTkVVVFJBTAoKSUREX1NZU1RFTUNGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiVW5pZGFkZXMiLElEQ19TVEFUSUMsOCw0LDI0NCwxMjAKICAgIExJU1RCT1ggICAgICAgICBJRENfTElTVF9EUklWRVMsMTUsMjMsMTc5LDkwLFdTX1ZTQ1JPTEwKICAgIFBVU0hCVVRUT04gICAgICAiJkFkaWNpb25hciIsSURDX0RSSVZFX0FERCwxOTcsMjIsNTAsMjIKICAgIFBVU0hCVVRUT04gICAgICAiJlJlbW92ZXIiLElEQ19EUklWRV9SRU1PVkUsMTk3LDUxLDUwLDIyCiAgICBQVVNIQlVUVE9OICAgICAgIiZFZGl0YXIiLElEQ19EUklWRV9FRElULDE5Nyw4MCw1MCwyMgpFTkQKCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRV9CUkFaSUxJQU4KCklERF9EUklWRUNGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICJPdXRyYXMgdW5pZGFkZXMiLElEQ19TVEFUSUMsNywxMDcsMjQ2LDExMgogICAgTElTVEJPWCAgICAgICAgIElEQ19MSVNUX0RSSVZFUywxNCwxMTgsMjMyLDc2LExCU19TT1JUIHwgTEJTX05PSU5URUdSQUxIRUlHSFQgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgUFVTSEJVVFRPTiAgICAgICJBZGljaW9uYXIuLi4iLElEQ19CVVRUT05fQURELDE0LDE5OSwzNywxNAogICAgUFVTSEJVVFRPTiAgICAgICJSZW1vdmVyIixJRENfQlVUVE9OX1JFTU9WRSw1NSwxOTksMzcsMTQKICAgIFBVU0hCVVRUT04gICAgICAiRWRpdGFyLi4uIixJRENfQlVUVE9OX0VESVQsOTcsMTk5LDM3LDE0CiAgICBQVVNIQlVUVE9OICAgICAgIkF1dG9kZXRlY3Rhci4uLiIsSURDX0JVVFRPTl9BVVRPREVURUNULDE5NywxOTksNDksMTQKICAgIExURVhUCSAgICAiQVZJU086IFBhcmVjZSBxdWUgdm9j6iBu428gdGVtIHVtYSB1bmlkYWRlIEMgZGVmaW5pZGEuIENsaXF1ZSBlbSAnQWRpY2lvbmFyJyBwYXJhIGFkaWNpb25hciB1bWEuIiwgSURTX0RSSVZFX05PX0MsIDcsMjIzLDI1MCwxMTAKRU5ECgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRQoKSUREX0RSSVZFQ0ZHIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIk91dHJhcyB1bmlkYWRlcyIsSURDX1NUQVRJQyw3LDEwNywyNDYsMTEyCiAgICBMSVNUQk9YICAgICAgICAgSURDX0xJU1RfRFJJVkVTLDE0LDExOCwyMzIsNzYsTEJTX1NPUlQgfCBMQlNfTk9JTlRFR1JBTEhFSUdIVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBQVVNIQlVUVE9OICAgICAgIkFkaWNpb25hci4uLiIsSURDX0JVVFRPTl9BREQsMTQsMTk5LDM3LDE0CiAgICBQVVNIQlVUVE9OICAgICAgIlJlbW92ZXIiLElEQ19CVVRUT05fUkVNT1ZFLDU1LDE5OSwzNywxNAogICAgUFVTSEJVVFRPTiAgICAgICJFZGl0YXIuLi4iLElEQ19CVVRUT05fRURJVCw5NywxOTksMzcsMTQKICAgIFBVU0hCVVRUT04gICAgICAiQXV0b2RldGVjdGFyLi4uIixJRENfQlVUVE9OX0FVVE9ERVRFQ1QsMTk3LDE5OSw0OSwxNAogICAgTFRFWFQJICAgICJBVklTTzogUGFyZWNlIHF1ZSBu428gdGVtIHVtYSB1bmlkYWRlIEMgZGVmaW5pZGEuIENsaXF1ZSBlbSAnQWRpY2lvbmFyJyBwYXJhIGFkaWNpb25hciB1bWEuIiwgSURTX0RSSVZFX05PX0MsIDcsMjIzLDI1MCwxMTAKRU5ECgoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0VfQlJBWklMSUFOCgpJRERfQVVESU9DRkcgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUCSJEcml2ZXIgZGUg4XVkaW86ICIsSURDX1NUQVRJQywxMCwyMCw2MCw4CiAgICBDT01CT0JPWAlJRENfQVVESU9fRFJJVkVSLDcwLDE4LDg1LDg1LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgUFVTSEJVVFRPTgkiQXV0b2RldGVjdGFyIixJRENfQVVESU9fQVVUT0RFVEVDVCwxNzAsMjAsNDksMTQKRU5ECgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRQoKSUREX0FVRElPQ0ZHIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIiBEcml2ZXIgU2VsZWN0aW9uICIsSURDX1NUQVRJQyw4LDQsMjQ0LDE5NQogICAgTFRFWFQgICAgICAgICAgICJTZWxlY3QgYSBzb3VuZCBkcml2ZXIgYnkgY2hlY2tpbmcgdGhlIGJveCBvZiB0aGUgZGVzaXJlZCBkcml2ZXIuICBEaXNhYmxlIHNvdW5kIGJ5IG5vdCBzZWxlY3RpbmcgYW55IGRyaXZlci4gU2VsZWN0aW9uIG9mIG11bHRpcGxlIGRyaXZlcnMgaXMgbm90IHJlY29tbWVuZGVkLiBDb25maWd1cmUgYSBkcml2ZXIgYnkgcmlnaHQtY2xpY2tpbmcgb24gaXQuIixJRENfU1RBVElDLDE1LDIwLDIyNywzMAogICAgQ09OVFJPTCAgICAgICAgICJEZXZpY2VzIixJRENfQVVESU9fVFJFRSwiU3lzVHJlZVZpZXczMiIsV1NfQk9SREVSIHwgV1NfVEFCU1RPUCwxNSw1MCwxNDAsMTQwCiAgICBQVVNIQlVUVE9OICAgICAgIiZUZXN0IFNvdW5kIixJRENfQVVESU9fVEVTVCwxNzAsNTAsNTksMTQKICAgIFBVU0hCVVRUT04JICAgICImQ29udHJvbCBQYW5lbCIsSURDX0FVRElPX0NPTlRST0xfUEFORUwsMTcwLDcwLDU5LDE0CiAgICBHUk9VUEJPWCAgICAgICAgIiBEaXJlY3RTb3VuZCAiLElEQ19TVEFUSUMsOCwyMDUsMjQ0LDYwCiAgICBMVEVYVAkgICAgIiZIYXJkd2FyZSBBY2NlbGVyYXRpb246ICIsSURDX1NUQVRJQywxNSwyMTUsOTAsMTAKICAgIENPTUJPQk9YCSAgICBJRENfRFNPVU5EX0hXX0FDQ0VMLDEwMCwyMTMsMTUwLDcwLENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJEZWZhdWx0ICZTYW1wbGUgUmF0ZToiLElEQ19TVEFUSUMsMTUsMjMyLDcwLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfRFNPVU5EX1JBVEVTLDkwLDIzMCw0Miw3NixDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiRGVmYXVsdCAmQml0cyBQZXIgU2FtcGxlOiIsSURDX1NUQVRJQywxMzcsMjMyLDgwLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfRFNPVU5EX0JJVFMsMjIwLDIzMCwzMCw1NixDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIENPTlRST0wgICAgICAgICAiRHJpdmVyICZFbXVsYXRpb24iLElEQ19EU09VTkRfRFJWX0VNVUwsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwyNTAsMjMwLDEwCkVORAoKSUREX0RFU0tUT1BfSU5URUdSQVRJT04gRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIEFwcGVhcmFuY2UgIixJRENfU1RBVElDLDgsNCwyNDQsMTA2CiAgICBMVEVYVCAgICAgICAgICAgIiZUaGVtZToiLElEQ19TVEFUSUMsMTUsMTYsMTMwLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfVEhFTUVfVEhFTUVDT01CTywxNSwyNCwxMzAsMTQsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBQVVNIQlVUVE9OICAgICAgIiZJbnN0YWxsIHRoZW1lLi4uIixJRENfVEhFTUVfSU5TVEFMTCwxNTIsMjMsOTMsMTQKICAgIExURVhUICAgICAgICAgICAiJkNvbG9yOiIsSURDX1RIRU1FX0NPTE9SVEVYVCwxNSw0MCwxMTIsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19USEVNRV9DT0xPUkNPTUJPLDE1LDQ4LDExMiwxNCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiJlNpemU6IixJRENfVEhFTUVfU0laRVRFWFQsMTM1LDQwLDExMCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX1RIRU1FX1NJWkVDT01CTywxMzUsNDgsMTEwLDE0LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJJdCZlbToiLElEQ19TVEFUSUMsMTUsNjQsMTEyLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfU1lTUEFSQU1fQ09NQk8sMTUsNzQsMTEyLDEyMCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AgfCBDQlNfU09SVAogICAgTFRFWFQgICAgICAgICAgICJDJm9sb3I6IixJRENfU1lTUEFSQU1fQ09MT1JfVEVYVCwxMzUsNjQsMjUsOCxXU19ESVNBQkxFRAogICAgUFVTSEJVVFRPTiAgICAgICIiLElEQ19TWVNQQVJBTV9DT0xPUiwxMzUsNzQsMjUsMTMsV1NfRElTQUJMRUQgfCBCU19PV05FUkRSQVcKICAgIExURVhUICAgICAgICAgICAiU2kmemU6IixJRENfU1lTUEFSQU1fU0laRV9URVhULDE2Niw2NCwzMCw4LFdTX0RJU0FCTEVECiAgICBFRElUVEVYVCAgICAgICAgSURDX1NZU1BBUkFNX1NJWkUsMTY2LDc0LDIzLDEzLEVTX0FVVE9IU0NST0xMIHwgV1NfVEFCU1RPUCB8IFdTX0RJU0FCTEVECiAgICBDT05UUk9MICAgICAgICAgIiIsSURDX1NZU1BBUkFNX1NJWkVfVUQsVVBET1dOX0NMQVNTLFVEU19TRVRCVUREWUlOVCB8IFdTX0RJU0FCTEVELDE4Nyw3NCwxNSwxMwogICAgUFVTSEJVVFRPTiAgICAgICImRm9udCIsSURDX1NZU1BBUkFNX0ZPTlQsMjA4LDc0LDM3LDEzLFdTX0RJU0FCTEVECiAgICBHUk9VUEJPWCAgICAgICAgIiBTJmhlbGwgRm9sZGVyICIsSURDX1NUQVRJQyw4LDExNCwyNDQsMTAwCiAgICBDT05UUk9MICAgICAgICAgIkxpc3R2aWV3IixJRENfTElTVF9TRlBBVEhTLCJTeXNMaXN0VmlldzMyIixMVlNfUkVQT1JUIHwgTFZTX0FVVE9BUlJBTkdFIHwgTFZTX0FMSUdOTEVGVCB8CiAgICAgICAgICAgICAgICAgICAgIExWU19TSU5HTEVTRUwgfCBXU19CT1JERVIgfCBXU19UQUJTVE9QLCAxNSwxMjYsMjMwLDY0CiAgICBDT05UUk9MICAgICAgICAgIiZMaW5rIHRvOiIsSURDX0xJTktfU0ZQQVRILCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWHxXU19UQUJTVE9QfFdTX0RJU0FCTEVELDE1LDE5NSw1MCwxMwogICAgRURJVFRFWFQgICAgICAgICBJRENfRURJVF9TRlBBVEgsNjUsMTk1LDE0NSwxMyxFU19BVVRPSFNDUk9MTHxXU19UQUJTVE9QfFdTX0RJU0FCTEVECiAgICBQVVNIQlVUVE9OICAgICAgIkImcm93c2UiLElEQ19CUk9XU0VfU0ZQQVRILDIxNSwxOTUsMzAsMTMsV1NfRElTQUJMRUQKRU5ECgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfTkVVVFJBTAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUgCkJFR0lOCiAgICBJRFNfV0lORV9WRVJTSU9OICAgICAgICAiQ1ZTIgogICAgSURTX1RBQl9HRU5FUkFMICAgICAgICAgIkdlcmFsIgogICAgSURTX1RBQl9ETExTICAgICAgICAgICAgIkJpYmxpb3RlY2FzIgogICAgSURTX1RBQl9EUklWRVMgICAgICAgICAgIlVuaWRhZGVzIgpFTkQK