LyoKICogUmVnZWRpdCAoRHV0Y2ggcmVzb3VyY2VzKQogKgogKiBDb3B5cmlnaHQgMjAwMyBIYW5zIExlaWRla2tlcgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgpMQU5HVUFHRSBMQU5HX0RVVENILCBTVUJMQU5HX05FVVRSQUwKCgovKgogKiBNZW51CiAqLwoKSURSX1JFR0VESVRfTUVOVSBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgICBQT1BVUCAiJlJlZ2lzdGVyYmVzdGFuZCIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIlJlZ2lzdGVyYmVzdGFuZCAmaW1wb3J0ZXJlbi4uLiIsICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRQogICAgICAgIE1FTlVJVEVNICJSZWdpc3RlcmJlc3RhbmQgJmV4cG9ydGVyZW4uLi4iLCAgICBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiVmVyYmluZGluZyAmbWFrZW4gbWV0IG5ldHdlcmtyZWdpc3Rlci4uLiIsIElEX1JFR0lTVFJZX0NPTk5FQ1RORVRXT1JLUkVHSVNUUlksIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICJWZXJiaW5kaW5nICZ2ZXJicmVrZW4gbWV0IG5ldHdlcmtyZWdpc3Rlci4uLiIsIElEX1JFR0lTVFJZX0RJU0NPTk5FQ1RORVRXT1JLUkVHSVNUUlksIEdSQVlFRAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJBZiZkcnVra2VuXHRDdHJsK1AiLCAgICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9QUklOVCwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZBZnNsdWl0ZW4iLCAgICAgICAgICAgICAgICAgICAgICAgIElEX1JFR0lTVFJZX0VYSVQKICAgIEVORAogICAgUE9QVVAgIiZCZXdlcmtlbiIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZXaWp6aWdlbiIsICAgICAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTU9ESUZZCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgUE9QVVAgIiZOaWV1dyIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiJlNsZXV0ZWwiLCAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICImVGVrZW5yZWVrc3dhYXJkZSIsICAgICAgICAgICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImQmluYWlyZSB3YWFyZGUiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImRFdPUkQtd2FhcmRlIiwgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZNdWx0aS1UZWtlbnJlZWtzd2FhcmRlIiwgICAgICAgSURfRURJVF9ORVdfTVVMVElfU1RSSU5HVkFMVUUKICAgICAgICBFTkQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlZlcndpamRlcmVuXHREZWwiLCAgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiJk5hYW0gd2lqemlnZW5cdEYyIiAgICAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlNsZXV0ZWxuYWFtIGtvcGnrcmVuIiwgICAgICAgICAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImWm9la2VuXHRDdHJsK0YiLCAgICAgICAgICAgICAgICAgICBJRF9FRElUX0ZJTkQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICJWb2xnZW5kZSBab2VrZW5cdEYzIiwgICAgICAgICAgICAgICBJRF9FRElUX0ZJTkRORVhULCBHUkFZRUQKICAgIEVORAogICAgUE9QVVAgIkJlZSZsZCIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZTdGF0dXNiYWxrIiwgICAgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1RBVFVTQkFSCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlMmcGxpdHNlbiIsICAgICAgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1BMSVQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlZlcm5pZXV3ZW5cdEY1IiwgICAgICAgICAgICAgICAgICAgSURfVklFV19SRUZSRVNICiAgICBFTkQKICAgIFBPUFVQICImRmF2b3JpZXRlbiIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZUb2V2b2VnZW4gYWFuIGZhdm9yaWV0ZW4iLCAgICAgICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUwogICAgICAgIE1FTlVJVEVNICImVmVyd2lqZGVyZW4gdWl0IGZhdm9yaWV0ZW4iLCAgICAgICBJRF9GQVZPUklURVNfUkVNT1ZFRkFWT1JJVEUKICAgIEVORAogICAgUE9QVVAgIiZIZWxwIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkhlbHAtb25kZXJ3ZXJwZW4iLCAgICAgICAgICAgICAgICAgSURfSEVMUF9IRUxQVE9QSUNTCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZJbmZvIiwgICAgICBJRF9IRUxQX0FCT1VUCiAgICBFTkQKRU5ECgpJRFJfUE9QVVBfTUVOVVMgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogIFBPUFVQICIiCiAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJldpanppZ2VuIiwgICAgICAgICAgICAgICAgICBJRF9FRElUX01PRElGWQogICAgICAgIE1FTlVJVEVNICImQmluYWlyZSBkYXRhIHdpanppZ2VuIiwgICAgIElEX0VESVRfTU9ESUZZX0JJTgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImVmVyd2lqZGVyZW5cdERlbCIsICAgICAgICAgIElEX0VESVRfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIiZOYWFtIHdpanppZ2VuIiwgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICBFTkQKICBQT1BVUCAiIgogIEJFR0lOCiAgICAgICAgUE9QVVAgIiZOaWV1dyIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiJlNsZXV0ZWwiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0tFWQogICAgICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICAgICAgTUVOVUlURU0gIiZUZWtlbnJlZWtzd2FhcmRlIiwgICAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJkJpbmFpcmUgd2FhcmRlIiwgICAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImRFdPUkQgd2FhcmRlIiwgICAgICAgICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJk11bHRpLVRla2VucmVla3N3YWFyZGUiLElEX0VESVRfTkVXX01VTFRJX1NUUklOR1ZBTFVFCiAgICAgICAgRU5ECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZWZXJ3aWpkZXJlblx0RGVsIiwgICAgICAgICAgSURfRURJVF9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiJk5hYW0gd2lqemlnZW5cdEYyIiwgICAgICAgICBJRF9FRElUX1JFTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImU2xldXRlbG5hYW0ga29waetyZW4iLCAgICAgIElEX0VESVRfQ09QWUtFWU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlpvZWtlblx0Q3RybCtGIiwgICAgICAgICAgICBJRF9FRElUX0ZJTkQsIEdSQVlFRAogIEVORApFTkQKCgovKgogKiBEaWFsb2cKICovCgpJRERfRVhQT1JUX1RFTVBMQVRFIERJQUxPRyBESVNDQVJEQUJMRSAgNTAsIDUwLCAyNzgsIDU0ClNUWUxFIERTXzNETE9PSyB8IERTX0NPTlRST0wgfCBXU19DSElMRCB8IFdTX1ZJU0lCTEUgfCBXU19DTElQU0lCTElOR1MgfAogICAgV1NfQk9SREVSCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICJSZWdpc3RlcmJlc3RhbmQgJmV4cG9ydGVyZW4iLCBJRENfRVhQT1JUX0JBU0UsIDYsIDYsIDI2NiwgNDIsIFdTX0dST1VQCiAgICBBVVRPUkFESU9CVVRUT04gIiZBbGxlcyIsIElEQ19FWFBPUlRfQUxMLCAxMiwgMTUsIDI0NCwgMTIKICAgIEFVVE9SQURJT0JVVFRPTiAiJkdla296ZW4gc3Vic2xldXRlbDoiLCBJRENfRVhQT1JUX1NFTEVDVEVELCAxMiwgMzAsIDkwLCAxMgogICAgRURJVFRFWFQgSURDX0VYUE9SVF9QQVRILCAxMDIsIDMwLCAxNjQsIDEyCkVORAoKSUREX0ZJTkQgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgODUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlpvZWtlbiIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJab2VrOiIsSURDX1NUQVRJQyw1LDcsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw0MCw1LDEyNSwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCiAgICBMVEVYVCAgICAgICAgICAgIkluOiIsSURDX1NUQVRJQyw1LCAyMiwgMTE5LCA4CiAgICBDSEVDS0JPWCAgICAgICAgIlNsZXV0ZWxzIiwgSURDX0ZJTkRfS0VZUywgNSwgMzQsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IFdTX0dST1VQIHwgQlNfQVVUT0NIRUNLQk9YCiAgICBDSEVDS0JPWCAgICAgICAgIldhYXJkZW4iLCBJRENfRklORF9WQUxVRVMsIDUsIDQ2LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIENIRUNLQk9YICAgICAgICAiR2VnZXZlbnMiLCBJRENfRklORF9DT05URU5ULCA1LCA1OCwgOTAsIDEwLCBXU19UQUJTVE9QIHwgQlNfQVVUT0NIRUNLQk9YCiAgICBDSEVDS0JPWCAgICAgICAgIkhlbGUgdGVrZW5yZWVrcyIsIElEQ19GSU5EX1dIT0xFLCA1LCA3MCwgOTAsIDEwLCBXU19UQUJTVE9QIHwgQlNfQVVUT0NIRUNLQk9YCiAgICBERUZQVVNIQlVUVE9OICAgIlpvZWtlbiIsSURPSywxNzUsNSwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICJTbHVpdGVuIixJRENBTkNFTCwxNzUsMjIsMzAsMTEsIFdTX0dST1VQCkVORAoKSUREX0FEREZBVk9SSVRFIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDU1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJUb2V2b2VnZW4gYWFuIGZhdm9yaWV0ZW4iCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiTmFhbToiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxMjAsNDAsNDAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiQW5udWxlcmVuIixJRENBTkNFTCwxNjUsNDAsNDAsMTEsIFdTX0dST1VQCkVORAoKSUREX0RFTEZBVk9SSVRFIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDkwClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJGYXZvcmlldGVuIHZlcndpamRlcmVuIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIkZhdm9yaWV0ZW46IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgTElTVEJPWCAgICAgICAgIElEQ19OQU1FX0xJU1QsNSwxNSwyMDAsNTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBMQlNfU09SVCB8IExCU19OT0lOVEVHUkFMSEVJR0hUIHwgV1NfVlNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxMjAsNzMsNDAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiQW5udWxlcmVuIixJRENBTkNFTCwxNjUsNzMsNDAsMTEsIFdTX0dST1VQCkVORAoKSUREX0VESVRfU1RSSU5HIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDc1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJUZWtlbnJlZWtzIGJld2Vya2VuIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIldhYXJkZW5hYW06IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEx8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIldhYXJkZWdlZ2V2ZW5zOiIsSURDX1NUQVRJQyw1LDMwLDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX0RBVEEsNSw0MCwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxMjAsNjAsNDAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAiQW5udWxlcmVuIixJRENBTkNFTCwxNjUsNjAsNDAsMTEsV1NfR1JPVVAKRU5ECgpJRERfRURJVF9EV09SRCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCAxMDAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IERTX05PSURMRU1TRyB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkRXT1JEIHdhYXJkZSBiZXdlcmtlbiIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJXYWFyZGVuYWFtOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICJXYWFyZGVnZWdldmVuczoiLElEQ19TVEFUSUMsNSwzMCw5MCw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX0RBVEEsNSw0MCw5MCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgR1JPVVBCT1ggICAgICAgICJHcm9uZHRhbCIsIElEQ19EV09SRF9CQVNFLCAxMjAsIDMwLCA4NSwgMzcsIEJTX0dST1VQQk9YCiAgICBBVVRPUkFESU9CVVRUT04gIkhleGFkZWNpbWFhbCIsIElEQ19EV09SRF9IRVgsIDEzMCwgNDAsIDYwLCAxMCwgV1NfVEFCU1RPUAogICAgQVVUT1JBRElPQlVUVE9OICJEZWNpbWFhbCIsIElEQ19EV09SRF9ERUMsIDEzMCwgNTIsIDYwLCAxMCwgV1NfVEFCU1RPUAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxMjAsODAsNDAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAiQW5udWxlcmVuIixJRENBTkNFTCwxNjUsODAsNDAsMTEsV1NfR1JPVVAKRU5ECgpJRERfRURJVF9CSU5BUlkgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgMTAwClNUWUxFIERTX01PREFMRlJBTUUgfCBEU19OT0lETEVNU0cgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJCaW5haXJlIHdhYXJkZSBiZXdlcmtlbiIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJXYWFyZGVuYWFtOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICJXYWFyZGVnZWdldmVuczoiLElEQ19TVEFUSUMsNSwzMCw5MCw4CiAgICBDT05UUk9MICAgICAgICAgIiIsSURDX1ZBTFVFX0RBVEEsIkhleEVkaXQiLFdTX1RBQlNUT1AsNCw0MCwxNjAsNDAKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTIwLDgwLDQwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgIkFubnVsZXJlbiIsSURDQU5DRUwsMTY1LDgwLDQwLDExLFdTX0dST1VQCkVORAoKSUREX0VESVRfTVVMVElfU1RSSU5HIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDE3NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiTXVsdGktdGVrZW5yZWVrcyBiZXdlcmtlbiIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJ3YWFyZGVuYW1lOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICJ3YWFyZGVnZWdldmVuczoiLElEQ19TVEFUSUMsNSwzMCwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsMjAwLDExMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IFdTX0hTQ1JPTEwgfCBXU19WU0NST0xMIHwgRVNfTVVMVElMSU5FIHwgRVNfV0FOVFJFVFVSTgogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsMTYwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgIkFubnVsZXJlbiIsSURDQU5DRUwsMTc1LDE2MCwzMCwxMSxXU19HUk9VUApFTkQKCi8qCiAqIFN0cmluZyBUYWJsZQogKi8KClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfTElTVF9DT0xVTU5fTkFNRSAgICAiTmFhbSIKICAgIElEU19MSVNUX0NPTFVNTl9UWVBFICAgICJUeXBlIgogICAgSURTX0xJU1RfQ09MVU1OX0RBVEEgICAgIkdlZ2V2ZW5zIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfQVBQX1RJVExFICAgICAgICAgICAiUmVnaXN0ZXItZWRpdG9yIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9SRUdJU1RSWV9NRU5VICAgICAgICAiT3BkcmFjaHRlbiB2b29yIGhldCB3ZXJrZW4gbWV0IGhldCBnZWhlbGUgcmVnaXN0ZXIiCiAgICBJRF9FRElUX01FTlUgICAgICAgICAgICAiT3BkcmFjaHRlbiB2b29yIGhldCBiZXdlcmtlbiB2YW4gd2FhcmRlbiBvZiBzbGV1dGVscyIKICAgIElEX1ZJRVdfTUVOVSAgICAgICAgICAgICJPcGRyYWNodGVuIHZvb3IgaGV0IGFhbnBhc3NlbiB2YW4gaGV0IHJlZ2lzdGVydmVuc3RlciIKICAgIElEX0ZBVk9SSVRFU19NRU5VICAgICAgICJPcGRyYWNodGVuIHZvb3IgdG9lZ2FuZyB0b3QgdmFhayBnZWJydWlrdGUgc2xldXRlbHMiCiAgICBJRF9IRUxQX01FTlUgICAgICAgICAgICAiT3BkcmFjaHRlbiB2b29yIGhldCB3ZWVyZ2V2ZW4gdmFuIEhlbHAgZW4gaW5mb3JtYXRpZSBvdmVyIGRlIFJlZ2lzdGVyLWVkaXRvciIKICAgIElEX0VESVRfTkVXX01FTlUgICAgICAgICJPcGRyYWNodGVuIHZvb3IgaGV0IG1ha2VuIHZhbiBuaWV1d2Ugc2xldXRlbHMgb2Ygd2FhcmRlbiIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfRURJVF9NT0RJRlkgICAgICAgICAgIkRlIGdlZ2V2ZW5zIHZhbiBkZSB3YWFyZGUgd2lqemlnZW4iCiAgICBJRF9FRElUX05FV19LRVkgICAgICAgICAiRWVuIG5pZXV3ZSBzbGV1dGVsIHRvZXZvZWdlbiIKICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFICJFZW4gbmlldXdlIHRla2VucmVla3N3YWFyZGUgdG9ldm9lZ2VuIgogICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUgIkVlbiBuaWV1d2UgYmluYWlyZSB3YWFyZGUgdG9ldm9lZ2VuIgogICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRSAgIkVlbiBuaWV1d2UgRFdPUkQtd2FhcmRlIHRvZXZvZWdlbiIgCiAgICBJRF9FRElUX05FV19NVUxUSV9TVFJJTkdWQUxVRSAiRWVuIG5pZXV3ZSBtdWx0aS10ZWtlbnJlZWtzd2FhcmRlIHRvZXZvZWdlbiIKICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRSAiRWVuIHRla3N0YmVzdGFuZCBpbiBoZXQgcmVnaXN0ZXIgaW1wb3J0ZXJlbiIKICAgIElEX1JFR0lTVFJZX0VYUE9SVFJFR0lTVFJZRklMRQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldCByZWdpc3RlciBvZiBlZW4gZ2VkZWVsdGUgZXJ2YW4gbmFhciBlZW4gdGVrc3RiZXN0YW5kIGV4cG9ydGVyZW4iCiAgICBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRWVuIHZlcmJpbmRpbmcgbWFrZW4gbWV0IGhldCByZWdpc3RlciB2YW4gZWVuIGV4dGVybmUgY29tcHV0ZXIiCiAgICBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGUgdmVyYmluZGluZyBtZXQgaGV0IHJlZ2lzdGVyIHZhbiBlZW4gZXh0ZXJuZSBjb21wdXRlciB2ZXJicmVrZW4iCiAgICBJRF9SRUdJU1RSWV9QUklOVCAgICAgICAiSGV0IHJlZ2lzdGVyIG9mIGVlbiBnZWRlZWx0ZSBlcnZhbiBhZmRydWtrZW4iCi8qICAgIElEX0hFTFBfSEVMUFRPUElDUyAgICAgICJIZWxwIHZvb3IgZGUgUmVnaXN0ZXItZWRpdG9yIG9wZW5lbiIgKi8KICAgIElEX0hFTFBfQUJPVVQgICAgICAgICAgICJQcm9ncmFtbWFnZWdldmVucywgdmVyc2llbnVtbWVyIGVuIGNvcHlyaWdodGdlZ2V2ZW5zIHdlZXJnZXZlbiIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfRVhJVCAgICAgICAgIkRlIFJlZ2lzdGVyLWVkaXRvciBhZnNsdWl0ZW4iCiAgICBJRF9GQVZPUklURVNfQUREVE9GQVZPUklURVMgIlNsZXV0ZWxzIHRvZXZvZWdlbiBhYW4gZGUgbGlqc3QgbWV0IGZhdm9yaWV0ZW4iCiAgICBJRF9GQVZPUklURVNfUkVNT1ZFRkFWT1JJVEUgIlNsZXV0ZWxzIHZlcndpamRlcmVuIHVpdCBkZSBsaWpzdCBtZXQgZmF2b3JpZXRlbiIKICAgIElEX1ZJRVdfU1RBVFVTQkFSICAgICAgICJEZSBzdGF0dXNiYWxrIHdlZXJnZXZlbiBvZiB2ZXJiZXJnZW4iCiAgICBJRF9WSUVXX1NQTElUICAgICAgICAgICAiRGUgcG9zaXRpZSB2YW4gZGUgc3BsaXRzaW5nIHR1c3NlbiB0d2VlIGRlZWx2ZW5zdGVycyB3aWp6aWdlbiIKICAgIElEX1ZJRVdfUkVGUkVTSCAgICAgICAgICJIZXQgdmVuc3RlciB2ZXJuaWV1d2VuIgogICAgSURfRURJVF9ERUxFVEUgICAgICAgICAgIkRlIHNlbGVjdGllIHZlcndpamRlcmVuIgogICAgSURfRURJVF9SRU5BTUUgICAgICAgICAgIkRlIG5hYW0gdmFuIGRlIHNlbGVjdGllIHdpanppZ2VuIgogICAgSURfRURJVF9DT1BZS0VZTkFNRSAgICAgIkRlIG5hYW0gdmFuIGRlIGdlc2VsZWN0ZWVyZGUgc2xldXRlbCBuYWFyIGhldCBLbGVtYm9yZCBrb3Bp63JlbiIKICAgIElEX0VESVRfRklORCAgICAgICAgICAgICJFZW4gdGVrZW5yZWVrcyB6b2VrZW4gaW4gZWVuIHNsZXV0ZWwsIGVlbiB3YWFyZGUgb2YgZ2VnZXZlbnMiCiAgICBJRF9FRElUX0ZJTkRORVhUICAgICAgICAiRGUgb3BnZWdldmVuIHRla3N0IG5vZ21hYWxzIHpvZWtlbiIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0VSUk9SICAgICAgICAgICAgICAgIkZvdXQiCiAgICBJRFNfQkFEX0tFWSAgICAgICAgICAgICAiS2FuIHNsZXV0ZWwgJyVzJyBuaWV0IG9wdnJhZ2VuIgogICAgSURTX0JBRF9WQUxVRSAgICAgICAgICAgIkthbiB3YWFyZGUgJyVzJyBuaWV0IG9wdnJhZ2VuIgogICAgSURTX1VOU1VQUE9SVEVEX1RZUEUgICAgIkthbiBkaXQgdHlwZSBzbGV1dGVsICglbGQpIG5pZXQgYmV3ZXJrZW4iCiAgICBJRFNfVE9PX0JJR19WQUxVRSAgICAgICAiV2FhcmRlIHRlIGdyb290ICglbGQpIgogICAgSURTX0RFTEVURV9CT1hfVElUTEUgICAgIldhYXJkZSB2ZXJ3aWpkZXJlbiBiZXZlc3RpZ2VuIgogICAgSURTX0RFTEVURV9CT1hfVEVYVCAgICAgIldlZXQgdSB6ZWtlciBkYXQgdSBkZSB3YWFyZGUgJyVzJyB3aWx0IHZlcndpamRlcmVuPyIKICAgIElEU19ORVdLRVkgICAgICAgICAgICAgICJOaWV1d2Ugc2xldXRlbCAjJWQiCiAgICBJRFNfTkVXVkFMVUUgICAgICAgICAgICAiTmlldXdlIHdhYXJkZSAjJWQiCiAgICBJRFNfTk9URk9VTkQgICAgICAgICAgICAiVGVrZW5yZWVrcyAnJXMnIG5pZXQgZ2V2b25kZW4iCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19GSUxFRElBTE9HX0lNUE9SVF9USVRMRSAgICJSZWdpc3RlcmJlc3RhbmQgaW1wb3J0ZXJlbiIKICAgIElEU19GSUxFRElBTE9HX0VYUE9SVF9USVRMRSAgICJSZWdpc3RlcmJlc3RhbmQgZXhwb3J0ZXJlbiIKICAgIElEU19GSUxFRElBTE9HX0ZJTFRFUiAgICAgICAgICJSZWdpc3RlciBCZXN0YW5kZW5cMCoucmVnXDBXaW45eC9OVDQgUmVnaXN0ZXIgQmVzdGFuZGVuIChSRUdFRElUNClcMCoucmVnXDBBbGxlIEJlc3RhbmRlbiAoKi4qKVwwKi4qXDBcMCIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX1JFR0lTVFJZX1JPT1RfTkFNRSAgICAgICAgICAgIkRlemUgQ29tcHV0ZXIiCiAgICBJRFNfUkVHSVNUUllfREVGQVVMVF9WQUxVRSAgICAgICAiKFN0YW5kYWFyZCkiCiAgICBJRFNfUkVHSVNUUllfVkFMVUVfTk9UX1NFVCAgICAgICAiKEdlZW4gd2FhcmRlIGluZ2VzdGVsZCkiCiAgICBJRFNfUkVHSVNUUllfVkFMVUVfQ0FOVF9ESVNQTEFZICAiKGthbiB3YWFyZGUgbmlldCB3ZWVyZ2V2ZW4pIgogICAgSURTX1JFR0lTVFJZX1VOS05PV05fVFlQRSAgICAgICAgIihvbmJla2VuZCAlZCkiCkVORAoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLyoKICogVEVYVElOQ0xVREUKICovCgoxIFRFWFRJTkNMVURFIERJU0NBUkRBQkxFCkJFR0lOCiAgICAicmVzb3VyY2UuaFwwIgpFTkQK