LyoKICogV2luZUZpbGUgKER1dGNoIHJlc291cmNlcykKICoKICogQ29weXJpZ2h0IDIwMDMgSGFucyBMZWlkZWtrZXIKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI2luY2x1ZGUgInJlc291cmNlLmgiCgpMQU5HVUFHRSBMQU5HX0RVVENILCBTVUJMQU5HX05FVVRSQUwKCi8qIE1lbnUgKi8KCklETV9XSU5FRklMRSBNRU5VIEZJWEVEIElNUFVSRQp7CiAgICBQT1BVUCAiJkJlc3RhbmQiICB7CiAgICAgICAgTUVOVUlURU0gIiZPcGVuZW5cdEVudGVyIiwgICAgICAgICAgICAgIElEX0FDVElWQVRFCiAgICAgICAgTUVOVUlURU0gIiZWZXJwbGFhdHNlbi4uLlx0RjciLCAgICAgICAgIElEX0ZJTEVfTU9WRQogICAgICAgIE1FTlVJVEVNICImS29waetyZW4uLi5cdEY4IiwgICAgICAgICAgICBJRF9GSUxFX0NPUFkKICAgICAgICBNRU5VSVRFTSAiTmFhciAma2xlbWJvcmQuLi5cdEY5IiwgICAgICAgMTE4CiAgICAgICAgTUVOVUlURU0gIlZlciZ3aWpkZXJlblx0RGVsIiwgICAgICAgICAgIElEX0ZJTEVfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIiZOYWFtIHdpanppZ2VuLi4uIiwgICAgICAgICAgIDEwOQogICAgICAgIE1FTlVJVEVNICImRWlnZW5zY2hhcHBlbi4uLlx0QWx0K0VudGVyIixJRF9FRElUX1BST1BFUlRJRVMKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkNvbXByaW1lcmVuLi4uIiwgICAgICAgICAgICAgMTE5CiAgICAgICAgTUVOVUlURU0gIiZEZWMmb21wcmltZXJlbi4uLiIsICAgICAgICAgIDEyMAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImU3RhcnRlbi4uLiIsICAgICAgICAgICAgICAgICBJRF9SVU4KICAgICAgICBNRU5VSVRFTSAiQWYmZHJ1a2tlbi4uLiIsICAgICAgICAgICAgICAgMTAyCiAgICAgICAgTUVOVUlURU0gIktvcHBlbGVuLi4uIiwgICAgICAgICAgICAgICAgIDEwMwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJOaWV1d2UgJm1hcC4uLiIsICAgICAgICAgICAgICAxMTEKICAgICAgICBNRU5VSVRFTSAiJlpvZWtlbi4uLiIsICAgICAgICAgICAgICAgICAgMTA0CiAgICAgICAgTUVOVUlURU0gIkJlc3RhbmRlbiAmc2VsZWN0ZXJlbi4uLiIsICAgIDExNgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgojaWZuZGVmIF9OT19FWFRFTlNJT05TCiAgICAgICAgTUVOVUlURU0gIkEmZnNsdWl0ZW5cdEFsdCtYIiwgICAgICAgICAgIElEX0ZJTEVfRVhJVAojZWxzZQogICAgICAgIE1FTlVJVEVNICJBJmZzbHVpdGVuIiwgICAgICAgICAgICAgICAgICBJRF9GSUxFX0VYSVQKI2VuZGlmCiAgICB9CgogICAgUE9QVVAgIiZEaXNrIiAgewogICAgICAgIE1FTlVJVEVNICJEaXNrICZrb3Bp63Jlbi4uLiIsICAgICAgICAgICAyMDEKICAgICAgICBNRU5VSVRFTSAiRGlza2xhYmVsIG1ha2VuLi4uIiwgICAgICAgICAgMjAyCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkRpc2sgJmZvcm1hdHRlcmVuLi4uIiwgICAgICAgIElEX0ZPUk1BVF9ESVNLCiNpZmRlZiBfV0lOOTUKICAgICAgICBNRU5VSVRFTSAiU3lzdGVlbWRpc2sgbWFrZW4uLi4iLCAtMSAvKlRPRE8qLwojZW5kaWYKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiVmVyYmluZGluZyAmbWFrZW4gbWV0IG5ldHdlcmtjaGlqZiIsSURfQ09OTkVDVF9ORVRXT1JLX0RSSVZFCiAgICAgICAgTUVOVUlURU0gIlZlcmJpbmRpbmcgJnZlcmJyZWtlbiBtZXQgbmV0d2Vya3NjaGlqZiIsSURfRElTQ09OTkVDVF9ORVRXT1JLX0RSSVZFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlNjaGlqZiAmZGVsZW4uLi4iLCAgICAgICAgICAgIDI1NAogICAgICAgIE1FTlVJVEVNICJEZWxlbiAmb25nZWRhYW4gbWFrZW4uLi4iLCAgICAyNTUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiU2NoaWpmICZzZWxlY3RlcmVuLi4uIiwgICAgICAgMjUxCiAgICB9CgogICAgUE9QVVAgIiZNYXBwZW4iICB7CiAgICAgICAgTUVOVUlURU0gIiZWb2xnZW5kZSBuaXZlYXVcdCsiLCAgICAgICAgIDMwMQogICAgICAgIE1FTlVJVEVNICImVWl0a2xhcHBlblx0KiIsICAgICAgICAgICAgICAzMDIKICAgICAgICBNRU5VSVRFTSAiJkFsbGVzIHVpdGtsYXBwZW5cdEN0cmwrKiIsICAgMzAzCiAgICAgICAgTUVOVUlURU0gIiZJbmtsYXBwZW5cdC0iLCAgICAgICAgICAgICAgIDMwNAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImTWFya2VlciBtYXBwZW4iLCAgICAgICAgICAgICA1MDUKICAgIH0KCiAgICBQT1BVUCAiJkJlZWxkIiAgewogICAgICAgIE1FTlVJVEVNICImSGllcmFyY2hpZSBlbiBtYXBpbmhvdWQiLCAgICA0MTMKICAgICAgICBNRU5VSVRFTSAiJkFsbGVlbiBoaWVyYXJjaGllIiwgICAgICAgICAgNDExCiAgICAgICAgTUVOVUlURU0gIkFsbGVlbiAmbWFwaW5ob3VkIiwgICAgICAgICAgIDQxMgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJTcCZsaXRzZW4iLCAgICAgICAgICAgICAgICAgICBJRF9WSUVXX1NQTElUCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZOYWFtIiwgICAgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfTkFNRQogICAgICAgIE1FTlVJVEVNICImQWxsZSBkZXRhaWxzIiwgICAgICAgICAgICAgICBJRF9WSUVXX0FMTF9BVFRSSUJVVEVTLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIiZHZWRlZWx0ZWxpamtlIGRldGFpbHMuLi4iLCAgIElEX1ZJRVdfU0VMRUNURURfQVRUUklCVVRFUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJTb3J0ZWVyIG9wICZuYWFtIiwgICAgICAgICAgICBJRF9WSUVXX1NPUlRfTkFNRQogICAgICAgIE1FTlVJVEVNICJTb3J0ZWVyIG9wICZ0eXBlIiwgICAgICAgICAgICBJRF9WSUVXX1NPUlRfVFlQRQogICAgICAgIE1FTlVJVEVNICJTb3J0ZWVyIG9wICZncm9vdHRlIiwgICAgICAgICBJRF9WSUVXX1NPUlRfU0laRQogICAgICAgIE1FTlVJVEVNICJTb3J0ZWVyIG9wICZkYXR1bSIsICAgICAgICAgICBJRF9WSUVXX1NPUlRfREFURQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJTb3J0ZWVyIG9wICYuLi4iLCAgICAgICAgICAgICBJRF9WSUVXX0ZJTFRFUgogICAgfQoKICAgIFBPUFVQICImT3B0aWVzIiAgewogICAgICAgIE1FTlVJVEVNICImQmV2ZXN0aWdpbmcuLi4iLCAgICAgICAgICAgICA1MDEKICAgICAgICBNRU5VSVRFTSAiJkxldHRlcnR5cGUuLi4iLCAgICAgICAgICAgICAgSURfU0VMRUNUX0ZPTlQKICAgICAgICBNRU5VSVRFTSAiR2VyZWVkc2NoYXBwZW5iYWxrICZhYW5wYXNzZW4uLi4iLCA1MTIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkdlcmVlZHNjaGFwcGVuYmFsayIsICAgICAgICAgSURfVklFV19UT09MX0JBUiwgQ0hFQ0tFRAogICAgICAgIE1FTlVJVEVNICImU2NoaWp2ZW5iYWxrIiwgICAgICAgICAgICAgICBJRF9WSUVXX0RSSVZFX0JBUiwgQ0hFQ0tFRAogICAgICAgIE1FTlVJVEVNICJTJnRhdHVzYmFsayIsICAgICAgICAgICAgICAgICBJRF9WSUVXX1NUQVRVU0JBUiwgQ0hFQ0tFRAojaWZuZGVmIF9OT19FWFRFTlNJT05TCiAgICAgICAgTUVOVUlURU0gIiZWb2xsZWRpZyBzY2hlcm1cdEN0cmwrU2hpZnQrUyIsIElEX1ZJRVdfRlVMTFNDUkVFTgojZW5kaWYKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiR2UmbWluaW1hbGlzZWVyZCBzdGFydGVuIiwgICAgNTA0CiAgICAgICAgTUVOVUlURU0gIiZJbnN0ZWxsaW5nZW4gb3BzbGFhbiBiaWogYWZzbHVpdGVuIiwgNTExCiAgICB9CgoKICAgIFBPUFVQICImQmV2ZWlsaWdpbmciICB7CiAgICAgICAgTUVOVUlURU0gIiZUb2VnYW5nLi4uIiwgICAgICAgICAgICAgICAgIDYwNQogICAgICAgIE1FTlVJVEVNICImTG9nZ2VuLi4uIiwgICAgICAgICAgICAgICAgICA2MDYKICAgICAgICBNRU5VSVRFTSAiJkVpZ2VuYWFyLi4uIiwgICAgICAgICAgICAgICAgNjA3CiAgICB9CgogICAgUE9QVVAgIiZWZW5zdGVyIiAgewogICAgICAgIE1FTlVJVEVNICJOaWV1dyAmdmVuc3RlciIsICAgICAgICAgICAgICBJRF9XSU5ET1dfTkVXCiAgICAgICAgTUVOVUlURU0gIlRyYXBzZ2V3aWpzXHRDdHJsK0Y1IiwgICAgICAgIElEX1dJTkRPV19DQVNDQURFCiAgICAgICAgTUVOVUlURU0gIiZCb3ZlbiBlbGthYXIiLCAgICAgICAgICAgICAgIElEX1dJTkRPV19USUxFX0hPUloKICAgICAgICBNRU5VSVRFTSAiJk5hYXN0IGVsa2Fhclx0Q3RybCtGNCIsICAgICAgSURfV0lORE9XX1RJTEVfVkVSVAojaWZuZGVmIF9OT19FWFRFTlNJT05TCiAgICAgICAgTUVOVUlURU0gIkF1dG9tYXRpc2NoIHNjaGlra2VuIiwgICAgICAgIElEX1dJTkRPV19BVVRPU09SVAojZW5kaWYKICAgICAgICBNRU5VSVRFTSAiJlBpY3RvZ3JhbW1lbiBzY2hpa2tlbiIsICAgICAgSURfV0lORE9XX0FSUkFOR0UKICAgICAgICBNRU5VSVRFTSAiJlZlcm5pZXV3ZW5cdEY1IiwgICAgICAgICAgICAgSURfUkVGUkVTSAogICAgfQoKICAgIFBPUFVQICImPyIgIHsKICAgICAgICBNRU5VSVRFTSAiJkhlbHAtb25kZXJ3ZXJwZW5cdEYxIiwgICAgICAgSURfSEVMUAogICAgICAgIE1FTlVJVEVNICImWm9la2VuLi4uXHRGMSIsICAgICAgICAgICAgICBJRF9IRUxQCiAgICAgICAgTUVOVUlURU0gIiZJbnN0cnVjdGllXHRGMSIsICAgICAgICAgICAgIElEX0hFTFBfVVNJTkcKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJk92ZXIgV2luZWZpbGUuLi4iLCAgICAgICAgICAgSURfQUJPVVQKICAgIH0KfQoKSUREX1NFTEVDVF9ERVNUSU5BVElPTiBESUFMT0cgRklYRUQgSU1QVVJFIDE1LCAxMywgMjEwLCA2MwpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJTZWxlY3RlZXIgYmVzdGVtbWluZyIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CiAgICBDT05UUk9MICAgICAgICAgIiIsIDEwMSwgIlN0YXRpYyIsIFNTX1NJTVBMRXxTU19OT1BSRUZJWCwgMywgNiwgMTYyLCAxMAogICAgQ09OVFJPTCAgICAgICAgICImTG9jYXRpZToiLCAtMSwgIlN0YXRpYyIsIFNTX0xFRlROT1dPUkRXUkFQfFdTX0dST1VQLCAzLCAxOCwgNjAsIDEwCiAgICBFRElUVEVYVCAgICAgICAgMjAxLCAzLCAyOSwgMTM0LCAxMiwgRVNfQVVUT0hTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICAiT0siLCAxLCAxNTgsIDYsIDQ3LCAxNAogICAgUFVTSEJVVFRPTiAgICAgICJBbm51bGVyZW4iLCAyLCAxNTgsIDIzLCA0NywgMTQKICAgIFBVU0hCVVRUT04gICAgICAiJkJsYWRlcmVuIiwgMjU0LCAxNTgsIDQzLCA0NywgMTQKfQoKSUREX0RJQUxPR19WSUVXX1RZUEUgRElBTE9HIERJU0NBUkRBQkxFIDE1LCAxMywgMTYxLCA5NwpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJQZXIgQmVzdGFuZHN0eXBlIgpGT05UIDgsICJNUyBTYW5zIFNlcmlmIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICImTmFhbToiLC0xLDcsOCwyMiwxMAogICAgRURJVFRFWFQgICAgICAgIElEQ19WSUVXX1BBVFRFUk4sMzEsNyw2MywxMixFU19BVVRPSFNDUk9MTAogICAgR1JPVVBCT1ggICAgICAgICJCZXN0YW5kc3R5cGUiLC0xLDcsMjMsODcsNTYKICAgIENPTlRST0wgICAgICAgICAiJkRpcmVjdG9yaWVzIixJRENfVklFV19UWVBFX0RJUkVDVE9SSUVTLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTMsMzIsNzAsMTAKICAgIENPTlRST0wgICAgICAgICAiJlByb2dyYW1tYSdzIixJRENfVklFV19UWVBFX1BST0dSQU1TLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTMsNDMsNzAsMTAKICAgIENPTlRST0wgICAgICAgICAiRG9jdSZtZW50ZW4iLElEQ19WSUVXX1RZUEVfRE9DVU1FTlRTLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTMsNTQsNzAsMTAKICAgIENPTlRST0wgICAgICAgICAiJk92ZXJpZ2UgYmVzdGFuZGVuIixJRENfVklFV19UWVBFX09USEVSUywiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDEzLDY1LDcwLDEwCiAgICBDT05UUk9MICAgICAgICAgIlRvb24gVmVyYm9yZ2VuLyZTeXN0ZWVtIEJlc3RhbmRlbiIsSURDX1ZJRVdfVFlQRV9ISURERU4sCiAgICAgICAgICAgICAgICAgICAgIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCw3LDgxLDEwNiw5CiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDEwNCw3LDUwLDE0CiAgICBQVVNIQlVUVE9OICAgICAgIkFubnVsZXJlbiIsSURDQU5DRUwsMTA0LDI0LDUwLDE0CkVORAoKSUREX0RJQUxPR19QUk9QRVJUSUVTIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjQ4LCAyMTUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRWlnZW5zY2hhcHBlbiB2b29yICVzIgpGT05UIDgsICJNUyBTYW5zIFNlcmlmIgpCRUdJTgogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxOTEsNyw1MCwxNAogICAgUFVTSEJVVFRPTiAgICAgICJBbm51bGVyZW4iLElEQ0FOQ0VMLDE5MSwyOSw1MCwxNAogICAgTFRFWFQgICAgICAgICAgICImQmVzdGFuZHNuYWFtOiIsLTEsNyw3LDU5LDkKICAgIEVESVRURVhUICAgICAgICBJRENfU1RBVElDX1BST1BfRklMRU5BTUUsNzEsNywxMjAsOSxFU19SRUFET05MWSB8IE5PVCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIlZvbGxlZGlnICZQYWQ6IiwtMSw3LDE4LDU5LDkKICAgIEVESVRURVhUICAgICAgICBJRENfU1RBVElDX1BST1BfUEFUSCw3MSwxOCwxMjAsOSwgRVNfUkVBRE9OTFkgfCBOT1QgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJMYWF0c3RlIFdpanppZ2luZzoiLC0xLDcsMjksNTksOQogICAgRURJVFRFWFQgICAgICAgIElEQ19TVEFUSUNfUFJPUF9MQVNUQ0hBTkdFLDcxLDI5LDEyMCw5LEVTX1JFQURPTkxZIHwgTk9UIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiVmVyc2llOiIsLTEsNyw0MCw1OSw5CiAgICBFRElUVEVYVCAgICAgICAgSURDX1NUQVRJQ19QUk9QX1ZFUlNJT04sNzEsNDAsMTIwLDksRVNfUkVBRE9OTFkgfCBOT1QgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJDb3AmeXJpZ2h0OiIsLTEsNyw1MSw1OSw5CiAgICBFRElUVEVYVCAgICAgICAgSURDX1NUQVRJQ19QUk9QX0NPUFlSSUdIVCw3MSw1MSwxMjAsOSxFU19SRUFET05MWSB8IE5PVCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIkdyb290dGU6IiwtMSw3LDYyLDU5LDkKICAgIEVESVRURVhUICAgICAgICBJRENfU1RBVElDX1BST1BfU0laRSw3MSw2MiwxMjAsOSxFU19SRUFET05MWSB8IE5PVCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBHUk9VUEJPWCAgICAgICAgIkF0dHJpYnV0ZW4iLC0xLDcsNzksMTU4LDQ2CiAgICBDT05UUk9MICAgICAgICAgIkEmbGxlZW4gTGV6ZW4iLElEQ19DSEVDS19SRUFET05MWSwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE3LDkxLDY4LDkKICAgIENPTlRST0wgICAgICAgICAiViZlcmJvcmdlbiIsSURDX0NIRUNLX0hJRERFTiwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDkyLDkxLDY4LDkKICAgIENPTlRST0wgICAgICAgICAiJkFyY2hpdmVyZW4iLElEQ19DSEVDS19BUkNISVZFLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTcsMTAxLDY4LDkKICAgIENPTlRST0wgICAgICAgICAiJlN5c3RlZW0iLElEQ19DSEVDS19TWVNURU0sIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCw5MiwxMDEsNjgsOQogICAgQ09OVFJPTCAgICAgICAgICJHZSZjb21wcmltZWVyZCIsSURDX0NIRUNLX0NPTVBSRVNTRUQsIkJ1dHRvbiIsIEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTcsMTExLDY4LDkKICAgIEdST1VQQk9YICAgICAgICAiJlZlcnNpZSBJbmZvcm1hdGllIiwtMSw3LDEyOSwyMzQsNzkKICAgIExJU1RCT1ggICAgICAgICBJRENfTElTVF9QUk9QX1ZFUlNJT05fVFlQRVMsMTMsMTM5LDEwNyw2MyxMQlNfU09SVCB8IExCU19OT0lOVEVHUkFMSEVJR0hUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIEVESVRURVhUICAgICAgICBJRENfTElTVF9QUk9QX1ZFUlNJT05fVkFMVUVTLDEyMywxMzksMTExLDYzLEVTX01VTFRJTElORSB8IEVTX1JFQURPTkxZIHwgV1NfVlNDUk9MTApFTkQKCgpTVFJJTkdUQUJMRQp7CiAgICBJRFNfRk9OVF9TRUxfRExHX05BTUUgICAiTGV0dGVydHlwZSB3b3JkdCB0b2VnZXBhc3QiCiAgICBJRFNfRk9OVF9TRUxfRVJST1IgICAgICAiUHJvYmxlZW0gdGlqZGVucyBoZXQgc2VsZWN0ZXJlbiB2YW4gaGV0IG5pZXV3ZSBsZXR0ZXJ0eXBlLiIKfQoKU1RSSU5HVEFCTEUKewogICAgSURTX1dJTkVGSUxFICAgICAgICAgICAgIldpbmVmaWxlIgogICAgSURTX0VSUk9SICAgICAgICAgICAgICAgIkZvdXQiCiAgICBJRFNfUk9PVF9GUyAgICAgICAgICAgICAicm9vdCBmcyIKICAgIElEU19VTklYRlMgICAgICAgICAgICAgICJ1bml4ZnMiCiAgICBJRFNfREVTS1RPUCAgICAgICAgICAgICAiQnVyZWF1YmxhZCIKICAgIElEU19TSEVMTCAgICAgICAgICAgICAgICJTaGVsbCIKICAgIElEU19USVRMRUZNVCAgICAgICAgICAgICIlcyAtICVzIgogICAgSURTX05PX0lNUEwgICAgICAgICAgICAgIk5vZyBuaWV0IGdlaW1wbGVtZW50ZWVyZCIKICAgIElEU19XSU5FX0ZJTEUgICAgICAgICAgICJXaW5lIEZpbGUiCn0KClNUUklOR1RBQkxFCnsKICAgIElEU19DT0xfTkFNRSAgICAgICAgICAgICJOYWFtIgogICAgSURTX0NPTF9TSVpFICAgICAgICAgICAgIkdyb290dGUiCiAgICBJRFNfQ09MX0NEQVRFICAgICAgICAgICAiQ0RhdHVtIgogICAgSURTX0NPTF9BREFURSAgICAgICAgICAgIkFEYXR1bSIKICAgIElEU19DT0xfTURBVEUgICAgICAgICAgICJNRGF0dW0iCiAgICBJRFNfQ09MX0lEWCAgICAgICAgICAgICAiSW5kZXgvSW5vZGUiCiAgICBJRFNfQ09MX0xJTktTICAgICAgICAgICAiTGlua3MiCiAgICBJRFNfQ09MX0FUVFIgICAgICAgICAgICAiQXR0cmlidXRlbiIKICAgIElEU19DT0xfU0VDICAgICAgICAgICAgICJCZXZlaWxpZ2luZyIKCiAgICBJRFNfRlJFRV9TUEFDRV9GTVQgICAgICAiJXMgdmFuICVzIHZyaWoiCn0K