LyoKICogUmVnZWRpdCAoRHV0Y2ggcmVzb3VyY2VzKQogKgogKiBDb3B5cmlnaHQgMjAwMyBIYW5zIExlaWRla2tlcgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgpMQU5HVUFHRSBMQU5HX0RVVENILCBTVUJMQU5HX05FVVRSQUwKCgovKgogKiBNZW51CiAqLwoKSURSX1JFR0VESVRfTUVOVSBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgICBQT1BVUCAiJlJlZ2lzdGVyYmVzdGFuZCIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIlJlZ2lzdGVyYmVzdGFuZCAmaW1wb3J0ZXJlbi4uLiIsICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRQogICAgICAgIE1FTlVJVEVNICJSZWdpc3RlcmJlc3RhbmQgJmV4cG9ydGVyZW4uLi4iLCAgICBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiVmVyYmluZGluZyAmbWFrZW4gbWV0IG5ldHdlcmtyZWdpc3Rlci4uLiIsIElEX1JFR0lTVFJZX0NPTk5FQ1RORVRXT1JLUkVHSVNUUlksIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICJWZXJiaW5kaW5nICZ2ZXJicmVrZW4gbWV0IG5ldHdlcmtyZWdpc3Rlci4uLiIsIElEX1JFR0lTVFJZX0RJU0NPTk5FQ1RORVRXT1JLUkVHSVNUUlksIEdSQVlFRAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJBZiZkcnVra2VuXHRDdHJsK1AiLCAgICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9QUklOVCwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZBZnNsdWl0ZW4iLCAgICAgICAgICAgICAgICAgICAgICAgIElEX1JFR0lTVFJZX0VYSVQKICAgIEVORAogICAgUE9QVVAgIiZCZXdlcmtlbiIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZXaWp6aWdlbiIsICAgICAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTU9ESUZZCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgUE9QVVAgIiZOaWV1dyIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiJlNsZXV0ZWwiLCAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICImVGVrZW5yZWVrc3dhYXJkZSIsICAgICAgICAgICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImQmluYWlyZSB3YWFyZGUiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImRFdPUkQtd2FhcmRlIiwgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZNdWx0aS1UZWtlbnJlZWtzd2FhcmRlIiwgICAgICAgSURfRURJVF9ORVdfTVVMVElfU1RSSU5HVkFMVUUKICAgICAgICBFTkQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlZlcndpamRlcmVuXHREZWwiLCAgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiJk5hYW0gd2lqemlnZW5cdEYyIiAgICAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlNsZXV0ZWxuYWFtIGtvcGnrcmVuIiwgICAgICAgICAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImWm9la2VuXHRDdHJsK0YiLCAgICAgICAgICAgICAgICAgICBJRF9FRElUX0ZJTkQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICJWb2xnZW5kZSBab2VrZW5cdEYzIiwgICAgICAgICAgICAgICBJRF9FRElUX0ZJTkRORVhULCBHUkFZRUQKICAgIEVORAogICAgUE9QVVAgIkJlZSZsZCIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZTdGF0dXNiYWxrIiwgICAgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1RBVFVTQkFSCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlMmcGxpdHNlbiIsICAgICAgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1BMSVQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlZlcm5pZXV3ZW5cdEY1IiwgICAgICAgICAgICAgICAgICAgSURfVklFV19SRUZSRVNICiAgICBFTkQKICAgIFBPUFVQICImRmF2b3JpZXRlbiIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZUb2V2b2VnZW4gYWFuIGZhdm9yaWV0ZW4uLi4iLCAgICAgICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUwogICAgICAgIE1FTlVJVEVNICImVmVyd2lqZGVyZW4gdWl0IGZhdm9yaWV0ZW4uLi4iLCAgICAgICBJRF9GQVZPUklURVNfUkVNT1ZFRkFWT1JJVEUKICAgIEVORAogICAgUE9QVVAgIiZIZWxwIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkhlbHAtb25kZXJ3ZXJwZW4iLCAgICAgICAgICAgICAgICAgSURfSEVMUF9IRUxQVE9QSUNTCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZJbmZvIiwgICAgICBJRF9IRUxQX0FCT1VUCiAgICBFTkQKRU5ECgpJRFJfUE9QVVBfTUVOVVMgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogIFBPUFVQICIiCiAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJldpanppZ2VuIiwgICAgICAgICAgICAgICAgICBJRF9FRElUX01PRElGWQogICAgICAgIE1FTlVJVEVNICImQmluYWlyZSBkYXRhIHdpanppZ2VuIiwgICAgIElEX0VESVRfTU9ESUZZX0JJTgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImVmVyd2lqZGVyZW5cdERlbCIsICAgICAgICAgIElEX0VESVRfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIiZOYWFtIHdpanppZ2VuIiwgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICBFTkQKICBQT1BVUCAiIgogIEJFR0lOCiAgICAgICAgUE9QVVAgIiZOaWV1dyIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiJlNsZXV0ZWwiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0tFWQogICAgICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICAgICAgTUVOVUlURU0gIiZUZWtlbnJlZWtzd2FhcmRlIiwgICAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJkJpbmFpcmUgd2FhcmRlIiwgICAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImRFdPUkQgd2FhcmRlIiwgICAgICAgICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJk11bHRpLVRla2VucmVla3N3YWFyZGUiLElEX0VESVRfTkVXX01VTFRJX1NUUklOR1ZBTFVFCiAgICAgICAgRU5ECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZWZXJ3aWpkZXJlblx0RGVsIiwgICAgICAgICAgSURfRURJVF9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiJk5hYW0gd2lqemlnZW5cdEYyIiwgICAgICAgICBJRF9FRElUX1JFTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRXhwb3J0ZXJlbi4uLiIsICAgICAgICAgICAgIElEX0VESVRfRVhQT1JUCiAgICAgICAgTUVOVUlURU0gIiZTbGV1dGVsbmFhbSBrb3Bp63JlbiIsICAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImWm9la2VuXHRDdHJsK0YiLCAgICAgICAgICAgIElEX0VESVRfRklORCwgR1JBWUVECiAgRU5ECkVORAoKCi8qCiAqIERpYWxvZwogKi8KCklERF9FWFBPUlRfVEVNUExBVEUgRElBTE9HIERJU0NBUkRBQkxFICA1MCwgNTAsIDI3OCwgNTQKU1RZTEUgRFNfM0RMT09LIHwgRFNfQ09OVFJPTCB8IFdTX0NISUxEIHwgV1NfVklTSUJMRSB8IFdTX0NMSVBTSUJMSU5HUyB8CiAgICBXU19CT1JERVIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggIlJlZ2lzdGVyYmVzdGFuZCAmZXhwb3J0ZXJlbiIsIElEQ19FWFBPUlRfQkFTRSwgNiwgNiwgMjY2LCA0MiwgV1NfR1JPVVAKICAgIEFVVE9SQURJT0JVVFRPTiAiJkFsbGVzIiwgSURDX0VYUE9SVF9BTEwsIDEyLCAxNSwgMjQ0LCAxMgogICAgQVVUT1JBRElPQlVUVE9OICImR2Vrb3plbiBzdWJzbGV1dGVsOiIsIElEQ19FWFBPUlRfU0VMRUNURUQsIDEyLCAzMCwgOTAsIDEyCiAgICBFRElUVEVYVCBJRENfRVhQT1JUX1BBVEgsIDEwMiwgMzAsIDE2NCwgMTIKRU5ECgpJRERfRklORCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjIwLCA4NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiWm9la2VuIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIlpvZWs6IixJRENfU1RBVElDLDUsNywxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDQwLDUsMTI1LDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwKICAgIExURVhUICAgICAgICAgICAiSW46IixJRENfU1RBVElDLDUsIDIyLCAxMTksIDgKICAgIENIRUNLQk9YICAgICAgICAiU2xldXRlbHMiLCBJRENfRklORF9LRVlTLCA1LCAzNCwgOTAsIDEwLCBXU19UQUJTVE9QIHwgV1NfR1JPVVAgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIENIRUNLQk9YICAgICAgICAiV2FhcmRlbiIsIElEQ19GSU5EX1ZBTFVFUywgNSwgNDYsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IEJTX0FVVE9DSEVDS0JPWAogICAgQ0hFQ0tCT1ggICAgICAgICJHZWdldmVucyIsIElEQ19GSU5EX0NPTlRFTlQsIDUsIDU4LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIENIRUNLQk9YICAgICAgICAiSGVsZSB0ZWtlbnJlZWtzIiwgSURDX0ZJTkRfV0hPTEUsIDUsIDcwLCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIERFRlBVU0hCVVRUT04gICAiWm9la2VuIixJRE9LLDE3NSw1LDQwLDE1LFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIlNsdWl0ZW4iLElEQ0FOQ0VMLDE3NSwyNCw0MCwxNSwgV1NfR1JPVVAKRU5ECgpJRERfQURERkFWT1JJVEUgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgNTUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlRvZXZvZWdlbiBhYW4gZmF2b3JpZXRlbiIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJOYWFtOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDEyMCwzNiw0MCwxNSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICJBbm51bGVyZW4iLElEQ0FOQ0VMLDE2NSwzNiw0MCwxNSwgV1NfR1JPVVAKRU5ECgpJRERfREVMRkFWT1JJVEUgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgOTAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkZhdm9yaWV0ZW4gdmVyd2lqZGVyZW4iCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiRmF2b3JpZXRlbjoiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBMSVNUQk9YICAgICAgICAgSURDX05BTUVfTElTVCw1LDE1LDIwMCw1MiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IExCU19TT1JUIHwgTEJTX05PSU5URUdSQUxIRUlHSFQgfCBXU19WU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDEyMCw3Miw0MCwxNSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICJBbm51bGVyZW4iLElEQ0FOQ0VMLDE2NSw3Miw0MCwxNSwgV1NfR1JPVVAKRU5ECgpJRERfRURJVF9TVFJJTkcgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgNzUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlRla2VucmVla3MgYmV3ZXJrZW4iCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiV2FhcmRlbmFhbToiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiV2FhcmRlZ2VnZXZlbnM6IixJRENfU1RBVElDLDUsMzAsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDEyMCw1Niw0MCwxNSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICJBbm51bGVyZW4iLElEQ0FOQ0VMLDE2NSw1Niw0MCwxNSxXU19HUk9VUApFTkQKCklERF9FRElUX0RXT1JEIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDEwMApTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfTk9JRExFTVNHIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRFdPUkQgd2FhcmRlIGJld2Vya2VuIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIldhYXJkZW5hYW06IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEx8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIldhYXJkZWdlZ2V2ZW5zOiIsSURDX1NUQVRJQyw1LDMwLDkwLDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDkwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBHUk9VUEJPWCAgICAgICAgIkdyb25kdGFsIiwgSURDX0RXT1JEX0JBU0UsIDEyMCwgMzAsIDg1LCAzNywgQlNfR1JPVVBCT1gKICAgIEFVVE9SQURJT0JVVFRPTiAiSGV4YWRlY2ltYWFsIiwgSURDX0RXT1JEX0hFWCwgMTMwLCA0MCwgNjAsIDEwLCBXU19UQUJTVE9QCiAgICBBVVRPUkFESU9CVVRUT04gIkRlY2ltYWFsIiwgSURDX0RXT1JEX0RFQywgMTMwLCA1MiwgNjAsIDEwLCBXU19UQUJTVE9QCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDEyMCw3OCw0MCwxNSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICJBbm51bGVyZW4iLElEQ0FOQ0VMLDE2NSw3OCw0MCwxNSxXU19HUk9VUApFTkQKCklERF9FRElUX0JJTkFSWSBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMTcwLCAxMDAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IERTX05PSURMRU1TRyB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkJpbmFpcmUgd2FhcmRlIGJld2Vya2VuIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIldhYXJkZW5hYW06IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMTYwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEx8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIldhYXJkZWdlZ2V2ZW5zOiIsSURDX1NUQVRJQyw1LDMwLDkwLDgKICAgIENPTlRST0wgICAgICAgICAiIixJRENfVkFMVUVfREFUQSwiSGV4RWRpdCIsV1NfVEFCU1RPUCw1LDQwLDE2MCw0MAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSyw4MCw4Myw0MCwxNSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICJBbm51bGVyZW4iLElEQ0FOQ0VMLDEyNSw4Myw0MCwxNSxXU19HUk9VUApFTkQKCklERF9FRElUX01VTFRJX1NUUklORyBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCAxNzUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIk11bHRpLXRla2VucmVla3MgYmV3ZXJrZW4iCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiV2FhcmRlbmFhbToiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiV2FhcmRlZ2VnZXZlbnM6IixJRENfU1RBVElDLDUsMzAsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDIwMCwxMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBXU19IU0NST0xMIHwgV1NfVlNDUk9MTCB8IEVTX01VTFRJTElORSB8IEVTX1dBTlRSRVRVUk4KICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTIwLDE1Niw0MCwxNSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICJBbm51bGVyZW4iLElEQ0FOQ0VMLDE2NSwxNTYsNDAsMTUsV1NfR1JPVVAKRU5ECgovKgogKiBTdHJpbmcgVGFibGUKICovCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0xJU1RfQ09MVU1OX05BTUUgICAgIk5hYW0iCiAgICBJRFNfTElTVF9DT0xVTU5fVFlQRSAgICAiVHlwZSIKICAgIElEU19MSVNUX0NPTFVNTl9EQVRBICAgICJHZWdldmVucyIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0FQUF9USVRMRSAgICAgICAgICAgIlJlZ2lzdGVyLWVkaXRvciIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfTUVOVSAgICAgICAgIk9wZHJhY2h0ZW4gdm9vciBoZXQgd2Vya2VuIG1ldCBoZXQgZ2VoZWxlIHJlZ2lzdGVyIgogICAgSURfRURJVF9NRU5VICAgICAgICAgICAgIk9wZHJhY2h0ZW4gdm9vciBoZXQgYmV3ZXJrZW4gdmFuIHdhYXJkZW4gb2Ygc2xldXRlbHMiCiAgICBJRF9WSUVXX01FTlUgICAgICAgICAgICAiT3BkcmFjaHRlbiB2b29yIGhldCBhYW5wYXNzZW4gdmFuIGhldCByZWdpc3RlcnZlbnN0ZXIiCiAgICBJRF9GQVZPUklURVNfTUVOVSAgICAgICAiT3BkcmFjaHRlbiB2b29yIHRvZWdhbmcgdG90IHZhYWsgZ2VicnVpa3RlIHNsZXV0ZWxzIgogICAgSURfSEVMUF9NRU5VICAgICAgICAgICAgIk9wZHJhY2h0ZW4gdm9vciBoZXQgd2VlcmdldmVuIHZhbiBIZWxwIGVuIGluZm9ybWF0aWUgb3ZlciBkZSBSZWdpc3Rlci1lZGl0b3IiCiAgICBJRF9FRElUX05FV19NRU5VICAgICAgICAiT3BkcmFjaHRlbiB2b29yIGhldCBtYWtlbiB2YW4gbmlldXdlIHNsZXV0ZWxzIG9mIHdhYXJkZW4iCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX0VESVRfTU9ESUZZICAgICAgICAgICJEZSBnZWdldmVucyB2YW4gZGUgd2FhcmRlIHdpanppZ2VuIgogICAgSURfRURJVF9ORVdfS0VZICAgICAgICAgIkVlbiBuaWV1d2Ugc2xldXRlbCB0b2V2b2VnZW4iCiAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRSAiRWVuIG5pZXV3ZSB0ZWtlbnJlZWtzd2FhcmRlIHRvZXZvZWdlbiIKICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFICJFZW4gbmlldXdlIGJpbmFpcmUgd2FhcmRlIHRvZXZvZWdlbiIKICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUgICJFZW4gbmlldXdlIERXT1JELXdhYXJkZSB0b2V2b2VnZW4iIAogICAgSURfRURJVF9ORVdfTVVMVElfU1RSSU5HVkFMVUUgIkVlbiBuaWV1d2UgbXVsdGktdGVrZW5yZWVrc3dhYXJkZSB0b2V2b2VnZW4iCiAgICBJRF9SRUdJU1RSWV9JTVBPUlRSRUdJU1RSWUZJTEUgIkVlbiB0ZWtzdGJlc3RhbmQgaW4gaGV0IHJlZ2lzdGVyIGltcG9ydGVyZW4iCiAgICBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXQgcmVnaXN0ZXIgb2YgZWVuIGdlZGVlbHRlIGVydmFuIG5hYXIgZWVuIHRla3N0YmVzdGFuZCBleHBvcnRlcmVuIgogICAgSURfUkVHSVNUUllfQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVlbiB2ZXJiaW5kaW5nIG1ha2VuIG1ldCBoZXQgcmVnaXN0ZXIgdmFuIGVlbiBleHRlcm5lIGNvbXB1dGVyIgogICAgSURfUkVHSVNUUllfRElTQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRlIHZlcmJpbmRpbmcgbWV0IGhldCByZWdpc3RlciB2YW4gZWVuIGV4dGVybmUgY29tcHV0ZXIgdmVyYnJla2VuIgogICAgSURfUkVHSVNUUllfUFJJTlQgICAgICAgIkhldCByZWdpc3RlciBvZiBlZW4gZ2VkZWVsdGUgZXJ2YW4gYWZkcnVra2VuIgovKiAgICBJRF9IRUxQX0hFTFBUT1BJQ1MgICAgICAiSGVscCB2b29yIGRlIFJlZ2lzdGVyLWVkaXRvciBvcGVuZW4iICovCiAgICBJRF9IRUxQX0FCT1VUICAgICAgICAgICAiUHJvZ3JhbW1hZ2VnZXZlbnMsIHZlcnNpZW51bW1lciBlbiBjb3B5cmlnaHRnZWdldmVucyB3ZWVyZ2V2ZW4iCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX1JFR0lTVFJZX0VYSVQgICAgICAgICJEZSBSZWdpc3Rlci1lZGl0b3IgYWZzbHVpdGVuIgogICAgSURfRkFWT1JJVEVTX0FERFRPRkFWT1JJVEVTICJTbGV1dGVscyB0b2V2b2VnZW4gYWFuIGRlIGxpanN0IG1ldCBmYXZvcmlldGVuIgogICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFICJTbGV1dGVscyB2ZXJ3aWpkZXJlbiB1aXQgZGUgbGlqc3QgbWV0IGZhdm9yaWV0ZW4iCiAgICBJRF9WSUVXX1NUQVRVU0JBUiAgICAgICAiRGUgc3RhdHVzYmFsayB3ZWVyZ2V2ZW4gb2YgdmVyYmVyZ2VuIgogICAgSURfVklFV19TUExJVCAgICAgICAgICAgIkRlIHBvc2l0aWUgdmFuIGRlIHNwbGl0c2luZyB0dXNzZW4gdHdlZSBkZWVsdmVuc3RlcnMgd2lqemlnZW4iCiAgICBJRF9WSUVXX1JFRlJFU0ggICAgICAgICAiSGV0IHZlbnN0ZXIgdmVybmlldXdlbiIKICAgIElEX0VESVRfREVMRVRFICAgICAgICAgICJEZSBzZWxlY3RpZSB2ZXJ3aWpkZXJlbiIKICAgIElEX0VESVRfUkVOQU1FICAgICAgICAgICJEZSBuYWFtIHZhbiBkZSBzZWxlY3RpZSB3aWp6aWdlbiIKICAgIElEX0VESVRfQ09QWUtFWU5BTUUgICAgICJEZSBuYWFtIHZhbiBkZSBnZXNlbGVjdGVlcmRlIHNsZXV0ZWwgbmFhciBoZXQgS2xlbWJvcmQga29waetyZW4iCiAgICBJRF9FRElUX0ZJTkQgICAgICAgICAgICAiRWVuIHRla2VucmVla3Mgem9la2VuIGluIGVlbiBzbGV1dGVsLCBlZW4gd2FhcmRlIG9mIGdlZ2V2ZW5zIgogICAgSURfRURJVF9GSU5ETkVYVCAgICAgICAgIkRlIG9wZ2VnZXZlbiB0ZWtzdCBub2dtYWFscyB6b2VrZW4iCiAgICBJRF9FRElUX0VYUE9SVCAgICAgICAgICAiRXhwb3J0ZWVydCBkZSBnZXNlbGVjdGVlcmRlIHN1YnNsZXV0ZWwgdmFuIGhldCByZWdpc3RlciBuYWFyIGVlbiB0ZWtzdCBiZXN0YW5kIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfRVJST1IgICAgICAgICAgICAgICAiRm91dCIKICAgIElEU19CQURfS0VZICAgICAgICAgICAgICJLYW4gc2xldXRlbCAnJXMnIG5pZXQgb3B2cmFnZW4iCiAgICBJRFNfQkFEX1ZBTFVFICAgICAgICAgICAiS2FuIHdhYXJkZSAnJXMnIG5pZXQgb3B2cmFnZW4iCiAgICBJRFNfVU5TVVBQT1JURURfVFlQRSAgICAiS2FuIGRpdCB0eXBlIHNsZXV0ZWwgKCV1KSBuaWV0IGJld2Vya2VuIgogICAgSURTX1RPT19CSUdfVkFMVUUgICAgICAgIldhYXJkZSB0ZSBncm9vdCAoJXUpIgogICAgSURTX0RFTEVURV9CT1hfVElUTEUgICAgIldhYXJkZSB2ZXJ3aWpkZXJlbiBiZXZlc3RpZ2VuIgogICAgSURTX0RFTEVURV9CT1hfVEVYVCAgICAgIldlZXQgdSB6ZWtlciBkYXQgdSBkZSB3YWFyZGUgJyVzJyB3aWx0IHZlcndpamRlcmVuPyIKICAgIElEU19ERUxFVEVfQk9YX1RFWFRfTVVMVElQTEUgIldlZXQgdSB6ZWtlciBkYXQgdSBkZXplIHdhYXJkZW4gd2lsdCB2ZXJ3aWpkZXJlbj8iCiAgICBJRFNfTkVXS0VZICAgICAgICAgICAgICAiTmlldXdlIHNsZXV0ZWwgIyVkIgogICAgSURTX05FV1ZBTFVFICAgICAgICAgICAgIk5pZXV3ZSB3YWFyZGUgIyVkIgogICAgSURTX05PVEZPVU5EICAgICAgICAgICAgIlRla2VucmVla3MgJyVzJyBuaWV0IGdldm9uZGVuIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfRklMRURJQUxPR19JTVBPUlRfVElUTEUgICAiUmVnaXN0ZXJiZXN0YW5kIGltcG9ydGVyZW4iCiAgICBJRFNfRklMRURJQUxPR19FWFBPUlRfVElUTEUgICAiUmVnaXN0ZXJiZXN0YW5kIGV4cG9ydGVyZW4iCiAgICBJRFNfRklMRURJQUxPR19GSUxURVIgICAgICAgICAiUmVnaXN0ZXIgQmVzdGFuZGVuXDAqLnJlZ1wwV2luOXgvTlQ0IFJlZ2lzdGVyIEJlc3RhbmRlbiAoUkVHRURJVDQpXDAqLnJlZ1wwQWxsZSBCZXN0YW5kZW4gKCouKilcMCouKlwwXDAiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19SRUdJU1RSWV9ST09UX05BTUUgICAgICAgICAgICJEZXplIENvbXB1dGVyIgogICAgSURTX1JFR0lTVFJZX0RFRkFVTFRfVkFMVUUgICAgICAgIihTdGFuZGFhcmQpIgogICAgSURTX1JFR0lTVFJZX1ZBTFVFX05PVF9TRVQgICAgICAgIihHZWVuIHdhYXJkZSBpbmdlc3RlbGQpIgogICAgSURTX1JFR0lTVFJZX1ZBTFVFX0NBTlRfRElTUExBWSAgIihrYW4gd2FhcmRlIG5pZXQgd2VlcmdldmVuKSIKICAgIElEU19SRUdJU1RSWV9VTktOT1dOX1RZUEUgICAgICAgICIob25iZWtlbmQgJWQpIgpFTkQKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8qCiAqIFRFWFRJTkNMVURFCiAqLwoKMSBURVhUSU5DTFVERSBESVNDQVJEQUJMRQpCRUdJTgogICAgInJlc291cmNlLmhcMCIKRU5ECg==