LyoKICogKEdlcm1hbikgUmVnZWRpdCByZXNvdXJjZXMKICoKICogQ29weXJpZ2h0IDIwMDQgTWljaGFlbCBGcml0c2NoZXIKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKTEFOR1VBR0UgTEFOR19HRVJNQU4sIFNVQkxBTkdfTkVVVFJBTAoKLyoKICogTWVudQogKi8KCgpJRFJfUkVHRURJVF9NRU5VIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICAgIFBPUFVQICImUmVnaXN0cnkiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICJSZWdpc3RyeSAmaW1wb3J0aWVyZW4uLi4iLCAgICBJRF9SRUdJU1RSWV9JTVBPUlRSRUdJU1RSWUZJTEUKCiAgICAgICAgTUVOVUlURU0gIlJlZ2lzdHJ5ICZleHBvcnRpZXJlbi4uLiIsICAgIElEX1JFR0lTVFJZX0VYUE9SVFJFR0lTVFJZRklMRQoKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJk1pdCBOZXR6d2Vya3JlZ2lzdHJ5IHZlcmJpbmRlbi4uLiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEX1JFR0lTVFJZX0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICImVm9uIE5ldHp3ZXJrcmVnaXN0cnkgdHJlbm5lbi4uLiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEX1JFR0lTVFJZX0RJU0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRHJ1Y2tlblx0U3RyZytQIiwgICAgICAgICAgICAgIElEX1JFR0lTVFJZX1BSSU5ULCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkJlZW5kZW4iLCAgICAgICAgICAgICAgICAgICAgICAgSURfUkVHSVNUUllfRVhJVAogICAgRU5ECiAgICBQT1BVUCAiJkJlYXJiZWl0ZW4iCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImxG5kZXJuIiwgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX01PRElGWQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIFBPUFVQICImTmV1IgogICAgICAgIEJFR0lOCiAgICAgICAgICAgIE1FTlVJVEVNICImU2NobPxzc2VsIiwgICAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICImWmVpY2hlbmZvbGdlIiwgICAgICAgICAgICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImQmlu5HJ3ZXJ0IiwgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImRFdPUkQgV2VydCIsICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZNZWhydGVpbGlnZSBaZWljaGVuZm9sZ2UiLCAgSURfRURJVF9ORVdfTVVMVElfU1RSSU5HVkFMVUUKICAgICAgICBFTkQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkz2c2NoZW5cdEVudGYiLCAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQogICAgICAgIE1FTlVJVEVNICImVW1iZW5lbm5lbiIsICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiU2NobPxzc2VsbmFtZSAma29waWVyZW4iLCAgICAgICAgICAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImU3VjaGVuXHRTdHJnK0YiLCAgICAgICAgICAgICAgIElEX0VESVRfRklORCwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gIiZO5GNoc3RlcyBmaW5kZW5cdEYzIiwgICAgICAgICAgICAgIElEX0VESVRfRklORE5FWFQsIEdSQVlFRAogICAgRU5ECiAgICBQT1BVUCAiJkFuc2ljaHQiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICJTdGF0dXMmbGVpc3RlIiwgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1RBVFVTQkFSCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZUcmVubmVuIiwgICAgICAgICAgICAgICAgICAgICAgSURfVklFV19TUExJVAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQWt0dWFsaXNpZXJlblx0RjUiLCAgICAgICAgICAgICAgICBJRF9WSUVXX1JFRlJFU0gKICAgIEVORAogICAgUE9QVVAgIiZGYXZvcml0ZW4iCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICJadSBkZW4gRmF2b3JpdGVuICZoaW56dWb8Z2VuIiwgICAgICAgICAgSURfRkFWT1JJVEVTX0FERFRPRkFWT1JJVEVTCiAgICAgICAgTUVOVUlURU0gIlZvbiBkZW4gRmF2b3JpdGVuICZs9nNjaGVuIiwgICAgICAgICAgIElEX0ZBVk9SSVRFU19SRU1PVkVGQVZPUklURQogICAgRU5ECiAgICBQT1BVUCAiJkhpbGZlIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkhpbGZldGhlbWVuXHRGMSIsICAgICAgICAgICAgSURfSEVMUF9IRUxQVE9QSUNTCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIibcYmVyIFJlZ2lzdHJ5IEVkaXRvciIsICAgICAgSURfSEVMUF9BQk9VVAogICAgRU5ECkVORAoKSURSX1BPUFVQX01FTlVTIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICBQT1BVUCAiIgogIEJFR0lOCglNRU5VSVRFTSAiJsRuZGVybiIsICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKCU1FTlVJVEVNICJCaW7kcmUgRGF0ZW4g5G5kZXJuIiwgICAgICAgICAgSURfRURJVF9NT0RJRllfQklOCglNRU5VSVRFTSBTRVBBUkFUT1IKCU1FTlVJVEVNICImTPZzY2hlblx0RW50ZiIsICAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCglNRU5VSVRFTSAiJlVtYmVubmVuZW4iLCAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgRU5ECiAgUE9QVVAgIiIKICBCRUdJTgogICAgICAgIFBPUFVQICImTmV1IgogICAgICAgIEJFR0lOCiAgICAgICAgICAgIE1FTlVJVEVNICImU2NobPxzc2VsIiwgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICImWmVpY2hlbmZvbGdlIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJkJpbuRyd2VydCIsICAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZEV09SRCBXZXJ0IiwgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZNZWhydGVpbGlnZSBaZWljaGVuZm9sZ2UiLCAgIElEX0VESVRfTkVXX01VTFRJX1NUUklOR1ZBTFVFCiAgICAgICAgRU5ECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZM9nNjaGVuXHRFbnRmIiwgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiJlVtYmVuZW5uZW4iLCAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlNjaGz8c3NlbG5hbWUgJmtvcGllcmVuIiwgICAgICAgICAgICAgIElEX0VESVRfQ09QWUtFWU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlN1Y2hlblx0U3RyZytGIiwgICAgICAgICAgICAgICBJRF9FRElUX0ZJTkQsIEdSQVlFRAogIEVORApFTkQKCgovKgogKiBEaWFsb2cKICovCgpJRERfRVhQT1JUX1RFTVBMQVRFIERJQUxPRyBESVNDQVJEQUJMRSAgNTAsIDUwLCAyNzgsIDU0ClNUWUxFIERTXzNETE9PSyB8IERTX0NPTlRST0wgfCBXU19DSElMRCB8IFdTX1ZJU0lCTEUgfCBXU19DTElQU0lCTElOR1MgfAogICAgV1NfQk9SREVSCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICJSZWdpc3RyeSAmZXhwb3J0aWVyZW4iLCBJRENfRVhQT1JUX0JBU0UsIDYsIDYsIDI2NiwgNDIsIFdTX0dST1VQCiAgICBBVVRPUkFESU9CVVRUT04gIiZBbGxlcyIsIElEQ19FWFBPUlRfQUxMLCAxMiwgMTUsIDI0NCwgMTIKICAgIEFVVE9SQURJT0JVVFRPTiAiQXVzZ2V35GhsdGVyICZad2VpZzoiLCBJRENfRVhQT1JUX1NFTEVDVEVELCAxMiwgMzAsIDkwLCAxMgogICAgRURJVFRFWFQgSURDX0VYUE9SVF9QQVRILCAxMDIsIDMwLCAxNjQsIDEyCkVORAoKSUREX0ZJTkQgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgODUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlN1Y2hlbiIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJTdWNoZW46IixJRENfU1RBVElDLDUsNywxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDQwLDUsMTEwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwKICAgIExURVhUICAgICAgICAgICAiU3VjaGVuIG5hY2g6IixJRENfU1RBVElDLDUsIDIyLCAxMTksIDgKICAgIENIRUNLQk9YICAgICAgICAiU2NobPxzc2VsbiIsIElEQ19GSU5EX0tFWVMsIDUsIDM0LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBXU19HUk9VUCB8IEJTX0FVVE9DSEVDS0JPWAogICAgQ0hFQ0tCT1ggICAgICAgICJXZXJ0ZW4iLCBJRENfRklORF9WQUxVRVMsIDUsIDQ2LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIENIRUNLQk9YICAgICAgICAiRGF0ZW4iLCBJRENfRklORF9DT05URU5ULCA1LCA1OCwgOTAsIDEwLCBXU19UQUJTVE9QIHwgQlNfQVVUT0NIRUNLQk9YCiAgICBDSEVDS0JPWCAgICAgICAgIktvbXBsZXR0ZSBaZWljaGVuZm9sZ2UgdmVyZ2xlaWNoZW4iLCBJRENfRklORF9XSE9MRSwgNSwgNzAsIDE1MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIERFRlBVU0hCVVRUT04gICAiU3VjaGVuIixJRE9LLDE2MCw1LDQ1LDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIkFiYnJlY2hlbiIsSURDQU5DRUwsMTYwLDIyLDQ1LDExLCBXU19HUk9VUApFTkQKCklERF9BRERGQVZPUklURSBESUFMT0cgRElTQ0FSREFCTEUgIDIyLDE3LCAyMTAsIDU1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJadSBkZW4gRmF2b3JpdGVuIGhpbnp1ZvxnZW4iCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICJOQU1FOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICJPSyIsSURPSywxMTAsNDAsNDUsMTEsIFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAiQWJicmVjaGVuIixJRENBTkNFTCwxNjAsNDAsNDUsMTEsIFdTX0dST1VQCkVORAoKSUREX0RFTEZBVk9SSVRFIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsMTcsIDIxMCwgOTAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlZvbiBkZW4gRmF2b3JpdGVuIGVudGZlcm5lbiIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgIk5hbWU6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgTElTVEJPWCAgICAgICAgSURDX05BTUVfTElTVCw1LDE1LDIwMCw1MiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IExCU19TT1JUIHwgTEJTX05PSU5URUdSQUxIRUlHSFQgfCBXU19WU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAiT0siLElET0ssMTEwLDczLDQ1LDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAiQWJicmVjaGVuIixJRENBTkNFTCwxNjAsNzMsNDUsMTEsV1NfR1JPVVAKRU5ECgpJRERfRURJVF9TVFJJTkcgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgNzUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlplaWNoZW5mb2xnZSDkbmRlcm4iCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiTmFtZToiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTCB8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIkRhdGVuOiIsSURDX1NUQVRJQyw1LDMwLDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX0RBVEEsNSw0MCwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxMTAsNjAsNDUsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiQWJicmVjaGVuIixJRENBTkNFTCwxNjAsNjAsNDUsMTEsV1NfR1JPVVAKRU5ECgpJRERfRURJVF9EV09SRCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCAxMDAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IERTX05PSURMRU1TRyB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkRXT1JEIFdlcnQgZWRpdGllcmVuIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIk5hbWU6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwgfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICJEYXRlbjoiLElEQ19TVEFUSUMsNSwzMCw5MCw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX0RBVEEsNSw0MCw5MCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgR1JPVVBCT1ggICAgICAgICJCYXNpcyIsIElEQ19EV09SRF9CQVNFLCAxMjAsIDMwLCA4NSwgMzcsIEJTX0dST1VQQk9YCiAgICBBVVRPUkFESU9CVVRUT04gIkhleGFkZXppbWFsIiwgSURDX0RXT1JEX0hFWCwgMTMwLCA0MCwgNjAsIDEwLCBXU19UQUJTVE9QCiAgICBBVVRPUkFESU9CVVRUT04gIkRlemltYWwiLCBJRENfRFdPUkRfREVDLCAxMzAsIDUyLCA2MCwgMTAsIFdTX1RBQlNUT1AKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTEwLDgwLDQ1LDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIkFiYnJlY2hlbiIsSURDQU5DRUwsMTYwLDgwLDQ1LDExLFdTX0dST1VQCkVORAoKSUREX0VESVRfQklOQVJZIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDEwMApTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfTk9JRExFTVNHIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiQmlu5HJlbiBXZXJ0IGVkaXRpZXJlbiIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJOYW1lOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMIHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiRGF0ZW46IixJRENfU1RBVElDLDUsMzAsOTAsOAogICAgQ09OVFJPTCAgICAgICAgICIiLElEQ19WQUxVRV9EQVRBLCJIZXhFZGl0IixXU19UQUJTVE9QLDQsNDAsMTYwLDQwCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDExMCw4NSw0NSwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICJBYmJyZWNoZW4iLElEQ0FOQ0VMLDE2MCw4NSw0NSwxMSxXU19HUk9VUApFTkQKCklERF9FRElUX01VTFRJX1NUUklORyBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCAxNzUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIk1laHJ0ZWlsaWdlIFplaWNoZW5mb2xnZSBlZGl0aWVyZW4iCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiTmFtZToiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiRGF0ZW46IixJRENfU1RBVElDLDUsMzAsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDIwMCwxMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBXU19IU0NST0xMIHwgV1NfVlNDUk9MTCB8IEVTX01VTFRJTElORSB8IEVTX1dBTlRSRVRVUk4KICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTEwLDE2MCw0NSwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICJBYmJyZWNoZW4iLElEQ0FOQ0VMLDE2MCwxNjAsNDUsMTEsV1NfR1JPVVAKRU5ECgovKgogKiBTdHJpbmcgVGFibGUKICovCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0xJU1RfQ09MVU1OX05BTUUgICAgIk5hbWUiCiAgICBJRFNfTElTVF9DT0xVTU5fVFlQRSAgICAiVHlwIgogICAgSURTX0xJU1RfQ09MVU1OX0RBVEEgICAgIkRhdGVuIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfQVBQX1RJVExFICAgICAgICAgICAiUmVnaXN0cnkgRWRpdG9yIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9SRUdJU1RSWV9NRU5VICAgICAgICAiQmVmZWhsZSBm/HIgZGFzIEJlYXJiZWl0ZW4gZGVyIGdhbnplbiBSZWdpc3RyeSIKICAgIElEX0VESVRfTUVOVSAgICAgICAgICAgICJCZWZlaGxlIGb8ciB1bSBTY2hs/HNzZWwgb2RlciBXZXJ0ZSB6dSDkbmRlcm4iCiAgICBJRF9WSUVXX01FTlUgICAgICAgICAgICAiQmVmZWhsZSB1bSBkYXMgRmVuc3RlciBhbnp1cGFzc2VuIgogICAgSURfRkFWT1JJVEVTX01FTlUgICAgICAgIkJlZmVobGUgZvxyIGRpZSBGYXZvcml0ZW4iCiAgICBJRF9IRUxQX01FTlUgICAgICAgICAgICAiQmVmZWhsZSB1bSBkaWUgSGlsZmUgb2RlciBJbmZvcm1hdGlvbmVuIPxiZXIgZGFzIFByb2dyYW1tIGFuenV6ZWlnZW4iCiAgICBJRF9FRElUX05FV19NRU5VICAgICAgICAiQmVmZWhsZSBm/HIgZGFzIEVyc3RlbGxlbiB2b24gbmV1ZW4gU2NobPxzc2VsbiBvZGVyIERhdGVuIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9FRElUX01PRElGWSAgICAgICAgICAixG5kZXJ0IGRpZSBEYXRlbiBlaW5lcyBXZXJ0ZXMiCiAgICBJRF9FRElUX05FV19LRVkgICAgICAgICAiRvxndCBlaW5lbiBuZXVlbiBTY2hs/HNzZWwgaGluenUiCiAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRSAiRvxndCBlaW5lIG5ldWUgWmVpY2hlbmZvbGdlIGhpbnp1ICIKICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFICJG/Gd0IGVpbmVuIG5ldWVuIEJpbuRyd2VydCBoaW56dSIKICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUgICJG/Gd0IGVpbmVuIG5ldWVuIERXT1JEIFdlcnQgaGluenUiCiAgICBJRF9FRElUX05FV19NVUxUSV9TVFJJTkdWQUxVRSAiRvxndCBlaW5lIG5ldWUgbWVocnRlaWxpZ2UgWmVpY2hlbmZvbGdlIGhpbnp1IgogICAgSURfUkVHSVNUUllfSU1QT1JUUkVHSVNUUllGSUxFICJJbXBvcnRpZXJ0IGVpbmUgVGV4dGRhdGVpIGluIGRpZSBSZWdpc3RyeSIKICAgIElEX1JFR0lTVFJZX0VYUE9SVFJFR0lTVFJZRklMRQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cG9ydGllcnQgVGVpbGUgb2RlciBkaWUgZ2FuemUgUmVnaXN0cnkgaW4gZWluZSBUZXh0ZGF0ZWkiCiAgICBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVmVyYmluZGV0IHp1IGVpbmVyIFJlZ2lzdHJ5IGVpbmVzIEZyZW1kY29tcHV0ZXJzIgogICAgSURfUkVHSVNUUllfRElTQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRyZW5udCBkaWUgVmVyYmluZHVuZyB6dSBkZXIgUmVnaXN0cnkgZWluZXMgRnJlbWRjb21wdXRlcnMiCiAgICBJRF9SRUdJU1RSWV9QUklOVCAgICAgICAiRHJ1Y2t0IFRlaWxlIG9kZXIgZGllIGdlc2FtdGUgUmVnaXN0cnkgYXVzIgovKiAgICBJRF9IRUxQX0hFTFBUT1BJQ1MgICAgICAi1mZmbmV0IGRpZSBIaWxmZSIgKi8KICAgIElEX0hFTFBfQUJPVVQgICAgICAgICAgICJaZWlndCBQcm9ncmFtbW5hbWUsIFZlcnNpb24gdW5kIENvcHlyaWdodCBhbiIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfRVhJVCAgICAgICAgIkJlZW5kZXQgZGVuIFJlZ2lzdHJ5IEVkaXRvciIKICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUyAiRvxndCBTY2hs/HNzZWwgenUgZGVuIEZhdm9yaXRlbiBoaW56dSIKICAgIElEX0ZBVk9SSVRFU19SRU1PVkVGQVZPUklURSAiTPZzY2h0IFNjaGz8c3NlbCB2b24gZGVuIEZhdm9yaXRlbiIKICAgIElEX1ZJRVdfU1RBVFVTQkFSICAgICAgICJaZWlndCBvZGVyIHZlcnN0ZWNrdCBkaWUgU3RhdHVzbGVpc3RlIgogICAgSURfVklFV19TUExJVCAgICAgICAgICAgIsRuZGVydCBkaWUgUG9zaXRpb24gZGFzIEZlbnN0ZXJ0ZWlsZXJzIgogICAgSURfVklFV19SRUZSRVNIICAgICAgICAgIkFrdHVhbGlzaWVydCBkYXMgRmVuc3RlciIKICAgIElEX0VESVRfREVMRVRFICAgICAgICAgICJM9nNjaHQgZGllIEF1c3dhaGwiCiAgICBJRF9FRElUX1JFTkFNRSAgICAgICAgICAiQmVuZW5udCBkaWUgQXVzd2FobCB1bSIKICAgIElEX0VESVRfQ09QWUtFWU5BTUUgICAgICJLb3BpZXJ0IGRlbiBTY2hs/HNzZWxuYW1lbiBpbiBkaWUgWndpc2NoZW5hYmxhZ2UiCiAgICBJRF9FRElUX0ZJTkQgICAgICAgICAgICAiRmluZGV0IGVpbmUgWmVpY2hlbmZvbGdlIGluIGVpbmVtIFNjaGz8c3NlbCwgZWluZW0gTmFtZW4gb2RlciBpbiBEYXRlbiIKICAgIElEX0VESVRfRklORE5FWFQgICAgICAgICJGaW5kZXQgZGllIG7kY2hzdGUgWmVpY2hlbmZvbGdlIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfRVJST1IgICAgICAgICAgICAgICAiRmVobGVyIgogICAgSURTX0JBRF9LRVkgICAgICAgICAgICAgIkthbm4gZGVuIFNjaGz8c3NlbCAnJXMnIG5pY2h0IGxlc2VuIgogICAgSURTX0JBRF9WQUxVRSAgICAgICAgICAgIkthbm4gZGVuIFdlcnQgJyVzJyBuaWNodCBsZXNlbiIKICAgIElEU19VTlNVUFBPUlRFRF9UWVBFICAgICJLYW5uIFNjaGz8c3NlbCB2b24gZGllc2VtIFR5cCAoJWxkKSBuaWNodCDkbmRlcm4iCiAgICBJRFNfVE9PX0JJR19WQUxVRSAgICAgICAiRGVyIFdlcnQgaXN0IHp1IGdyb98gKCVsZCkiCiAgICBJRFNfREVMRVRFX0JPWF9USVRMRSAgICAiQml0dGUgYmVzdOR0aWdlbiIKICAgIElEU19ERUxFVEVfQk9YX1RFWFQgICAgICJXb2xsZW4gU2llICclcycgd2lya2xpY2ggbPZzY2hlbj8iCiAgICBJRFNfTkVXS0VZICAgICAgICAgICAgICAiTmV1ZXIgU2NobPxzc2VsICMlZCIKICAgIElEU19ORVdWQUxVRSAgICAgICAgICAgICJOZXVlciBXZXJ0ICMlZCIKICAgIElEU19OT1RGT1VORCAgICAgICAgICAgICJTdWNoZm9sZ2UgJyVzJyB3dXJkZSBuaWNodCBnZWZ1bmRlbi4iCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19GSUxFRElBTE9HX0lNUE9SVF9USVRMRSAgICJSZWdpc3RyeS1EYXRlaSBpbXBvcnRpZXJlbiIKICAgIElEU19GSUxFRElBTE9HX0VYUE9SVF9USVRMRSAgICJSZWdpc3RyeS1EYXRlaSBleHBvcnRpZXJlbiIKICAgIElEU19GSUxFRElBTE9HX0ZJTFRFUiAgICAgICAgICJSZWdpc3RyeS1EYXRlaWVuXDAqLnJlZ1wwV2luOXgvTlQ0IFJlZ2lzdHJ5LURhdGVpZW4gKFJFR0VESVQ0KVwwKi5yZWdcMEFsbGUgRGF0ZWllbiAoKi4qKVwwKi4qXDBcMCIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX1JFR0lTVFJZX1JPT1RfTkFNRSAgICAgICAgICAgIkFyYmVpdHNwbGF0eiIKICAgIElEU19SRUdJU1RSWV9ERUZBVUxUX1ZBTFVFICAgICAgICIoU3RhbmRhcmQpIgogICAgSURTX1JFR0lTVFJZX1ZBTFVFX05PVF9TRVQgICAgICAgIihXZXJ0IG5pY2h0IGdlc2V0enQpIgogICAgSURTX1JFR0lTVFJZX1ZBTFVFX0NBTlRfRElTUExBWSAgIihrYW5uIFdlcnQgbmljaHQgZGFyc3RlbGxlbikiCiAgICBJRFNfUkVHSVNUUllfVU5LTk9XTl9UWVBFICAgICAgICAiKHVuYmVrYW5udCAlZCkiCkVORAoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLyoKICogVEVYVElOQ0xVREUKICovCgoxIFRFWFRJTkNMVURFIERJU0NBUkRBQkxFCkJFR0lOCiAgICAicmVzb3VyY2UuaFwwIgpFTkQKCgoKLyoKICogU3RyaW5nIFRhYmxlCiAqLwoKLyoKICpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQogKkJFR0lOCiAqICAgIElEX0hFTFBfSEVMUFRPUElDUyAgICAgICLWZmZuZXQgZGllIEhpbGZlLiIKICogICAgSURfSEVMUF9BQk9VVCAgICAgICAgICAgIlplaWd0IFByb2dyYW1tbmFtZSwgVmVyc2lvbiB1bmQgQ29weXJpZ2h0IGFuIgogKkVORAogKi8KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K