LyoKICogIFRhc2sgTWFuYWdlcgogKiAgRnJlbmNoIExhbmd1YWdlIFN1cHBvcnQKICoKICogIENvcHlyaWdodCAyMDA1IEpvbmF0aGFuIEVybnN0CiAqCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKi8KCkxBTkdVQUdFIExBTkdfRlJFTkNILCBTVUJMQU5HX05FVVRSQUwKCi8qCiBNZW51CiovCgpJRFJfVEFTS01BTkFHRVIgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogICAgUE9QVVAgIiZGaWNoaWVyIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJk5vdXZlbGxlIHTiY2hlIChFeOljdXRlci4uLikiLCAgICAgICAgICBJRF9GSUxFX05FVwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImUXVpdHRlciBsZSBnZXN0aW9ubmFpcmUgZGVzIHTiY2hlcyIsICAgICAgICAgIElEX0ZJTEVfRVhJVAogICAgRU5ECiAgICBQT1BVUCAiJk9wdGlvbnMiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImQWx3YXlzIE9uIFRvcCIsICAgICAgICAgICAgICBJRF9PUFRJT05TX0FMV0FZU09OVE9QCiAgICAgICAgLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIlLpZCZ1aXJlIOAgbCdleOljdXRpb24iLCAgICAgIElEX09QVElPTlNfTUlOSU1JWkVPTlVTRQogICAgICAgICwgQ0hFQ0tFRAogICAgICAgIE1FTlVJVEVNICImTWFzcXVlciBsJ2lj9G5lIHLpZHVpdGUiLCAgICBJRF9PUFRJT05TX0hJREVXSEVOTUlOSU1JWkVECiAgICAgICAgLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIiZNb250cmVyIGxlcyB04mNoZXMgMTYtYml0IiwgIElEX09QVElPTlNfU0hPVzE2QklUVEFTS1MKICAgICAgICAsIENIRUNLRUQKICAgIEVORAogICAgUE9QVVAgIiZBZmZpY2hhZ2UiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImQWN0dWFsaXNlciBtYWludGVuYW50IiwgICAgICAgICAgICAgICAgSURfVklFV19SRUZSRVNICiAgICAgICAgUE9QVVAgIiZGculxdWVuY2UgZCdhY3R1YWxpc2F0aW9uIgogICAgICAgIEJFR0lOCiAgICAgICAgICAgIE1FTlVJVEVNICImSGF1dGUiLCAgICAgICAgICAgICAgICAgICAgICAgSURfVklFV19VUERBVEVTUEVFRF9ISUdICiAgICAgICAgICAgIE1FTlVJVEVNICImTm9ybWFsZSIsICAgICAgICAgICAgICAgICAgICAgSURfVklFV19VUERBVEVTUEVFRF9OT1JNQUwKICAgICAgICAgICAgLCBDSEVDS0VECiAgICAgICAgICAgIE1FTlVJVEVNICImQmFzc2UiLCAgICAgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfVVBEQVRFU1BFRURfTE9XCiAgICAgICAgICAgIE1FTlVJVEVNICJFbiBwYXUmc2UiLCAgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfVVBEQVRFU1BFRURfUEFVU0VECgogICAgICAgIEVORAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJHJnJhbmRlcyBJY/RuZXMiLCAgICAgICAgICAgICAgICBJRF9WSUVXX0xBUkdFCiAgICAgICAgTUVOVUlURU0gIlAmZXRpdGVzIElj9G5lcyIsICAgICAgICAgICAgICAgIElEX1ZJRVdfU01BTEwKICAgICAgICBNRU5VSVRFTSAiJkTpdGFpbHMiLCAgICAgICAgICAgICAgICAgICAgICAgSURfVklFV19ERVRBSUxTLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIiZT6WxlY3Rpb25uZXIgbGVzIGNvbG9ubmVzLi4uIiwgICAgICAgICAgIElEX1ZJRVdfU0VMRUNUQ09MVU1OUwogICAgICAgIFBPUFVQICImSGlzdG9yaXF1ZSBkdSBwcm9jZXNzZXVyIgogICAgICAgIEJFR0lOCiAgICAgICAgICAgIE1FTlVJVEVNICJVbiBzZXVsIGdyYXBoaXF1ZSwgJnRvdXRlcyBsZXMgVUNzIiwgICAgICAgIElEX1ZJRVdfQ1BVSElTVE9SWV9PTkVHUkFQSEFMTAoKICAgICAgICAgICAgTUVOVUlURU0gIlVuIGdyYXBoaXF1ZSAmcGFyIFVDIiwgICAgICAgICAgSURfVklFV19DUFVISVNUT1JZX09ORUdSQVBIUEVSQ1BVCiAgICAgICAgICAgICwgQ0hFQ0tFRAogICAgICAgIEVORAogICAgICAgIE1FTlVJVEVNICJBZmYmaWNoZXIgbGVzIHRlbXBzIGR1IG5veWF1IiwgICAgICAgICAgSURfVklFV19TSE9XS0VSTkVMVElNRVMKICAgIEVORAogICAgUE9QVVAgIiZGZW7qdHJlcyIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIkFycmFuZ2VyICZIb3Jpem9udGFsbGVtZW50IiwgICAgICAgICAgSURfV0lORE9XU19USUxFSE9SSVpPTlRBTExZCiAgICAgICAgTUVOVUlURU0gIkFycmFuZ2VyICZWZXJ0aWNhbGxlbWVudCIsICAgICAgICAgICAgSURfV0lORE9XU19USUxFVkVSVElDQUxMWQogICAgICAgIE1FTlVJVEVNICImUulkdWlyZSIsICAgICAgICAgICAgICAgICAgIElEX1dJTkRPV1NfTUlOSU1JWkUKICAgICAgICBNRU5VSVRFTSAiJkFncmFuZGlyIiwgICAgICAgICAgICAgICAgICAgSURfV0lORE9XU19NQVhJTUlaRQogICAgICAgIE1FTlVJVEVNICImQ2FzY2FkZSIsICAgICAgICAgICAgICAgICAgICBJRF9XSU5ET1dTX0NBU0NBREUKICAgICAgICBNRU5VSVRFTSAiVG91am91cnMgJnZpc2libGUiLCAgICAgICAgICAgICBJRF9XSU5ET1dTX0JSSU5HVE9GUk9OVAogICAgRU5ECiAgICBQT1BVUCAiJkFpZGUiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICJSdWJyaXF1ZXMgZCdhaWRlIGR1IEdlc3Rpb25uYWlyZSBkZXMgdOJjaGVzIiwgICBJRF9IRUxQX1RPUElDUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQSBwcm9wb3MgZHUgR2VzdGlvbm5haXJlIGRlcyB04mNoZXMiLCAgICAgICAgIElEX0hFTFBfQUJPVVQKICAgIEVORApFTkQKCklEUl9XSU5ET1dTTUVOVSBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgICBNRU5VSVRFTSAiQXJyYW5nZXIgJkhvcml6b250YWxsZW1lbnQiLCAgICAgICAgICBJRF9XSU5ET1dTX1RJTEVIT1JJWk9OVEFMTFkKICAgIE1FTlVJVEVNICJBcnJhbmdlciAmVmVydGljYWxsZW1lbnQiLCAgICAgICAgICAgIElEX1dJTkRPV1NfVElMRVZFUlRJQ0FMTFkKICAgIE1FTlVJVEVNICImUulkdWlyZSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEX1dJTkRPV1NfTUlOSU1JWkUKICAgIE1FTlVJVEVNICImQWdyYW5kaXIiLCAgICAgICAgICAgICAgICAgICAgICAgICAgIElEX1dJTkRPV1NfTUFYSU1JWkUKICAgIE1FTlVJVEVNICImQ2FzY2FkZSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEX1dJTkRPV1NfQ0FTQ0FERQogICAgTUVOVUlURU0gIlRvdWpvdXJzICZ2aXNpYmxlIiwgICAgICAgICAgICAgICAgICAgSURfV0lORE9XU19CUklOR1RPRlJPTlQKRU5ECgpJRFJfQVBQTElDQVRJT05fUEFHRV9DT05URVhUMSBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgICBQT1BVUCAiRFVNTVkiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImTm91dmVsbGUgVOJjaGUgKEV46WN1dGVyLi4uKSIsICAgSURfRklMRV9ORVcKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiRyZyYW5kZXMgSWP0bmVzIiwgICAgICAgICAgICAgICAgIElEX1ZJRVdfTEFSR0UKICAgICAgICBNRU5VSVRFTSAiUCZldGl0ZXMgSWP0bmVzIiwgICAgICAgICAgICAgICAgIElEX1ZJRVdfU01BTEwKICAgICAgICBNRU5VSVRFTSAiJkTpdGFpbHMiLCAgICAgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfREVUQUlMUywgQ0hFQ0tFRAogICAgRU5ECkVORAoKSURSX0FQUExJQ0FUSU9OX1BBR0VfQ09OVEVYVDIgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogICAgUE9QVVAgIkRVTU1ZIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkJhc2N1bGVyIHZlcnMiLCAgICAgICAgICAgICAgICBJRF9BUFBMSUNBVElPTl9QQUdFX1NXSVRDSFRPCiAgICAgICAgTUVOVUlURU0gIlRvdWpvdXJzICZ2aXNpYmxlIiwgICAgICAgICAgICAgSURfV0lORE9XU19CUklOR1RPRlJPTlQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiQXJyYW5nZXIgJkhvcml6b250YWxsZW1lbnQiLCAgICBJRF9XSU5ET1dTX1RJTEVIT1JJWk9OVEFMTFkKICAgICAgICBNRU5VSVRFTSAiQXJyYW5nZXIgJlZlcnRpY2FsbGVtZW50IiwgICAgICBJRF9XSU5ET1dTX1RJTEVWRVJUSUNBTExZCiAgICAgICAgTUVOVUlURU0gIiZS6WR1aXJlIiwgICAgICAgICAgICAgICAgICAgICAgSURfV0lORE9XU19NSU5JTUlaRQogICAgICAgIE1FTlVJVEVNICImQWdyYW5kaXIiLCAgICAgICAgICAgICAgICAgICAgIElEX1dJTkRPV1NfTUFYSU1JWkUKICAgICAgICBNRU5VSVRFTSAiJkNhc2NhZGUiLCAgICAgICAgICAgICAgICAgICAgICBJRF9XSU5ET1dTX0NBU0NBREUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiRiZpbiBkZSB04mNoZSIsICAgICAgICAgICAgICAgICBJRF9BUFBMSUNBVElPTl9QQUdFX0VORFRBU0sKICAgICAgICBNRU5VSVRFTSAiJkJhc2N1bGVyIHZlcnMiLCAgICAgICAgICAgICAgICBJRF9BUFBMSUNBVElPTl9QQUdFX0dPVE9QUk9DRVNTCiAgICBFTkQKRU5ECgpJRFJfVFJBWV9QT1BVUCBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgICBNRU5VSVRFTSAiJlJlc3RhdXJlciIsICAgICAgICAgICAgICAgICAgICAgSURfUkVTVE9SRQogICAgTUVOVUlURU0gIiZGZXJtZXIiLCAgICAgICAgICAgICAgICAgICAgICAgIElEX0ZJTEVfRVhJVAogICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICBNRU5VSVRFTSAiVG91am91cnMgJnZpc2libGUiLCAgICAgICAgICAgICAgSURfT1BUSU9OU19BTFdBWVNPTlRPUCwgQ0hFQ0tFRApFTkQKCklEUl9QUk9DRVNTX1BBR0VfQ09OVEVYVCBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgICBQT1BVUCAiRFVNTVkiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImVGVybWluZXIgbGUgcHJvY2Vzc3VzIiwgICAgICAgICAgICAgICAgSURfUFJPQ0VTU19QQUdFX0VORFBST0NFU1MKICAgICAgICBNRU5VSVRFTSAiVGVybWluZXIgbCcmYXJib3Jlc2NlbmNlIGR1IHByb2Nlc3N1cyIsIElEX1BST0NFU1NfUEFHRV9FTkRQUk9DRVNTVFJFRQoKICAgICAgICBNRU5VSVRFTSAiJkTpYnVnZ3VlciIsICAgICAgICAgICAgICAgICAgICAgIElEX1BST0NFU1NfUEFHRV9ERUJVRwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIFBPUFVQICJE6WZpbmlyIGxhICZwcmlvcml06SIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiVGVtcHMgJnLpZWwiLCAgICAgICAgICAgICAgICAgICBJRF9QUk9DRVNTX1BBR0VfU0VUUFJJT1JJVFlfUkVBTFRJTUUKCiAgICAgICAgICAgIE1FTlVJVEVNICImSGF1dGUiLCAgICAgICAgICAgICAgICAgICAgICAgIElEX1BST0NFU1NfUEFHRV9TRVRQUklPUklUWV9ISUdICgogICAgICAgICAgICBNRU5VSVRFTSAiJlN1cOlyaWV1cmUg4CBsYSBub3JtYWxlIiwgICAgICBJRF9QUk9DRVNTX1BBR0VfU0VUUFJJT1JJVFlfQUJPVkVOT1JNQUwKCiAgICAgICAgICAgIE1FTlVJVEVNICImTm9ybWFsZSIsICAgICAgICAgICAgICAgICAgICAgIElEX1BST0NFU1NfUEFHRV9TRVRQUklPUklUWV9OT1JNQUwKCiAgICAgICAgICAgIE1FTlVJVEVNICImSW5m6XJpZXVyZSDgIGxhIG5vcm1hbGUiLCAgICAgIElEX1BST0NFU1NfUEFHRV9TRVRQUklPUklUWV9CRUxPV05PUk1BTAoKICAgICAgICAgICAgTUVOVUlURU0gIiZCYXNzZSIsICAgICAgICAgICAgICAgICAgICAgICAgSURfUFJPQ0VTU19QQUdFX1NFVFBSSU9SSVRZX0xPVwoKICAgICAgICBFTkQKICAgICAgICBNRU5VSVRFTSAiROlmaW5pciBsJyZhZmZpbml06S4uLiIsICAgICAgICAgICAgSURfUFJPQ0VTU19QQUdFX1NFVEFGRklOSVRZCglNRU5VSVRFTSAiTW9kaWZpZXIgbGVzICZjYW5hdXggZGUgZOlidWdnYWdlLi4uIiwJSURfUFJPQ0VTU19QQUdFX0RFQlVHQ0hBTk5FTFMKICAgIEVORApFTkQKCi8qCiBEaWFsb2cKKi8KCklERF9BQk9VVEJPWCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjU5LCAyMTAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkFib3V0IFRhc2sgTWFuYWdlciIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgQ09OVFJPTCAgICAgICAgICJHZXN0aW9ubmFpcmUgZGVzIHTiY2hlcyB2MS4wXG5Db3B5cmlnaHQgKEMpIDE5OTkgLSAyMDAxXG5ieSBCcmlhbiBQYWxtZXIgKGJyaWFucEByZWFjdG9zLm9yZykiLAogICAgICAgICAgICAgICAgICAgIElEQ19TVEFUSUMsIlN0YXRpYyIsU1NfTEVGVE5PV09SRFdSQVAgfCBXU19HUk9VUCw1MywyOCwKICAgICAgICAgICAgICAgICAgICAxMjIsMjYKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTgzLDE4OSw0NCwxNCxXU19HUk9VUAogICAgSUNPTiAgICAgICAgICAgIElESV9UQVNLTUFOQUdFUixJRENfU1RBVElDLDE5LDMwLDIwLDIwCiAgICBFRElUVEVYVCAgICAgICAgSURDX0xJQ0VOU0VfRURJVCw1Myw2MywxNzQsMTA3LEVTX01VTFRJTElORSB8CiAgICAgICAgICAgICAgICAgICAgRVNfUkVBRE9OTFkgfCBXU19WU0NST0xMCkVORAoKSUREX1RBU0tNR1JfRElBTE9HIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjY0LCAyNDYKU1RZTEUgRFNfQ0VOVEVSIHwgV1NfTUlOSU1JWkVCT1ggfCBXU19NQVhJTUlaRUJPWCB8IFdTX1BPUFVQIHwKICAgIFdTX0NMSVBTSUJMSU5HUyB8IFdTX0NMSVBDSElMRFJFTiB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VIHwKICAgIFdTX1RISUNLRlJBTUUKQ0FQVElPTiAiR2VzdGlvbm5haXJlIGRlcyB04mNoZXMiCk1FTlUgSURSX1RBU0tNQU5BR0VSCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIENPTlRST0wgICAgICAgICAiVGFiMSIsSURDX1RBQiwiU3lzVGFiQ29udHJvbDMyIixXU19UQUJTVE9QLDMsMywyNTcsMjI4CkVORAoKSUREX0FQUExJQ0FUSU9OX1BBR0UgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNDcsIDIxMApTVFlMRSBEU19DT05UUk9MIHwgV1NfQ0hJTEQgfCBXU19DTElQQ0hJTERSRU4KRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgQ09OVFJPTCAgICAgICAgICJMaXN0MiIsSURDX0FQUExJU1QsIlN5c0xpc3RWaWV3MzIiLExWU19SRVBPUlQgfAogICAgICAgICAgICAgICAgICAgIExWU19TSE9XU0VMQUxXQVlTIHwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCw3LDcsMjMzLDE3NwogICAgUFVTSEJVVFRPTiAgICAgICImTm91dmVsbGUgdOJjaGUuLi4iLElEQ19ORVdUQVNLLDE4NywxODksNTMsMTQKICAgIFBVU0hCVVRUT04gICAgICAiJkJhc2N1bGVyIHZlcnMiLElEQ19TV0lUQ0hUTywxMzEsMTg5LDUzLDE0LFdTX0RJU0FCTEVECiAgICBQVVNIQlVUVE9OICAgICAgIiZGaW4gZGUgdOJjaGUiLElEQ19FTkRUQVNLLDc1LDE4OSw1MywxNCxXU19ESVNBQkxFRApFTkQKCklERF9QUk9DRVNTX1BBR0UgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNDcsIDIxMApTVFlMRSBEU19DT05UUk9MIHwgV1NfQ0hJTEQgfCBXU19DTElQQ0hJTERSRU4KRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgQ09OVFJPTCAgICAgICAgICJMaXN0MiIsSURDX1BST0NFU1NMSVNULCJTeXNMaXN0VmlldzMyIixMVlNfUkVQT1JUIHwKICAgICAgICAgICAgICAgICAgICBMVlNfU0lOR0xFU0VMIHwgTFZTX1NIT1dTRUxBTFdBWVMgfCBMVlNfT1dORVJEQVRBIHwKICAgICAgICAgICAgICAgICAgICBXU19CT1JERVIgfCBXU19UQUJTVE9QLDcsNywyMzMsMTc3CiAgICBQVVNIQlVUVE9OICAgICAgIiZUZXJtaW5lciBsZSBwcm9jZXNzdXMiLElEQ19FTkRQUk9DRVNTLDE3MSwxODksNjksMTQKICAgIENPTlRST0wgICAgICAgICAiQWZmJmljaGVyIGxlcyBwcm9jZXNzdXMgZGUgdG91cyBsZXMgdXRpbGlzYXRldXJzIixJRENfU0hPV0FMTFBST0NFU1NFUywKICAgICAgICAgICAgICAgICAgICAiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDcsMTkxLDExMSwxMApFTkQKCi8qSUREX1BFUkZPUk1BTkNFX1BBR0UgRElBTE9HRVggMCwgMCwgMjQ3LCAyMTAqLwpJRERfUEVSRk9STUFOQ0VfUEFHRSBESUFMT0dFWCBESVNDQVJEQUJMRSAgMCwgMCwgMjQ3LCAyMTAKU1RZTEUgRFNfQ09OVFJPTCB8IFdTX0NISUxEIHwgV1NfQ0xJUENISUxEUkVOCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiVXRpbC4gZGUgbCdVQyIsSURDX0NQVV9VU0FHRV9GUkFNRSw1LDUsNjAsNTQsV1NfVEFCU1RPUCwgV1NfRVhfVFJBTlNQQVJFTlQKICAgIEdST1VQQk9YICAgICAgICAiVXRpbC4gZHUgZmljaGllciIsSURDX01FTV9VU0FHRV9GUkFNRSw1LDYzLDYwLDU0LEJTX0xFRlRURVhULCBXU19FWF9UUkFOU1BBUkVOVAogICAgR1JPVVBCT1ggICAgICAgICJUb3RhdXgiLElEQ19UT1RBTFNfRlJBTUUsNSwxMjIsMTExLDM5LDAsV1NfRVhfVFJBTlNQQVJFTlQKICAgIEdST1VQQk9YICAgICAgICAiQ2hhcmdlIGTpZGnpZSAoS28pIixJRENfQ09NTUlUX0NIQVJHRV9GUkFNRSw1LDE2NiwxMTEsMzksMCxXU19FWF9UUkFOU1BBUkVOVAogICAgR1JPVVBCT1ggICAgICAgICJN6W1vaXJlIHBoeXNpcXVlIChLbykiLElEQ19QSFlTSUNBTF9NRU1PUllfRlJBTUUsMTMxLDEyMiwxMTEsMzksMCxXU19FWF9UUkFOU1BBUkVOVAogICAgR1JPVVBCT1ggICAgICAgICJN6W1vaXJlIHBvdXIgbGUgbm95YXUgKEtvKSIsSURDX0tFUk5FTF9NRU1PUllfRlJBTUUsMTMxLDE2NiwxMTEsMzksMCxXU19FWF9UUkFOU1BBUkVOVAogICAgTFRFWFQgICAgICAgICAgICJIYW5kbGVzIixJRFNfVE9UQUxTX0hBTkRMRV9DT1VOVCwxMiwxMzEsMjcsOAogICAgTFRFWFQgICAgICAgICAgICJUaHJlYWRzIixJRFNfVE9UQUxTX1RIUkVBRF9DT1VOVCwxMiwxNDAsMjcsOAogICAgTFRFWFQgICAgICAgICAgICJQcm9jZXNzdXMiLElEU19UT1RBTFNfUFJPQ0VTU19DT1VOVCwxMiwxNDksMzQsOAogICAgRURJVFRFWFQgICAgICAgIElEQ19UT1RBTFNfSEFORExFX0NPVU5ULDY1LDEzMSw0NSw4LEVTX1JJR0hUIHwKICAgICAgICAgICAgICAgICAgICBFU19SRUFET05MWSB8IEVTX05VTUJFUiB8IE5PVCBXU19CT1JERVIKICAgIEVESVRURVhUICAgICAgICBJRENfVE9UQUxTX1RIUkVBRF9DT1VOVCw2NSwxNDAsNDUsOCxFU19SSUdIVCB8CiAgICAgICAgICAgICAgICAgICAgRVNfUkVBRE9OTFkgfCBFU19OVU1CRVIgfCBOT1QgV1NfQk9SREVSCiAgICBFRElUVEVYVCAgICAgICAgSURDX1RPVEFMU19QUk9DRVNTX0NPVU5ULDY1LDE0OSw0NSw4LEVTX1JJR0hUIHwKICAgICAgICAgICAgICAgICAgICBFU19SRUFET05MWSB8IEVTX05VTUJFUiB8IE5PVCBXU19CT1JERVIKICAgIExURVhUICAgICAgICAgICAiVG90YWwiLElEU19DT01NSVRfQ0hBUkdFX1RPVEFMLDEyLDE3NSwyNyw4CiAgICBMVEVYVCAgICAgICAgICAgIkxpbWl0ZSIsSURTX0NPTU1JVF9DSEFSR0VfTElNSVQsMTIsMTg0LDE1LDgKICAgIExURVhUICAgICAgICAgICAiUGljIixJRFNfQ09NTUlUX0NIQVJHRV9QRUFLLDEyLDE5MywzNCw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX0NPTU1JVF9DSEFSR0VfVE9UQUwsNjUsMTc0LDQ1LDgsRVNfUklHSFQgfAogICAgICAgICAgICAgICAgICAgIEVTX1JFQURPTkxZIHwgRVNfTlVNQkVSIHwgTk9UIFdTX0JPUkRFUgogICAgRURJVFRFWFQgICAgICAgIElEQ19DT01NSVRfQ0hBUkdFX0xJTUlULDY1LDE4NCw0NSw4LEVTX1JJR0hUIHwKICAgICAgICAgICAgICAgICAgICBFU19SRUFET05MWSB8IEVTX05VTUJFUiB8IE5PVCBXU19CT1JERVIKICAgIEVESVRURVhUICAgICAgICBJRENfQ09NTUlUX0NIQVJHRV9QRUFLLDY1LDE5Myw0NSw4LEVTX1JJR0hUIHwKICAgICAgICAgICAgICAgICAgICBFU19SRUFET05MWSB8IEVTX05VTUJFUiB8IE5PVCBXU19CT1JERVIKICAgIExURVhUICAgICAgICAgICAiVG90YWwiLElEU19QSFlTSUNBTF9NRU1PUllfVE9UQUwsMTM3LDEzMSwyNyw4CiAgICBMVEVYVCAgICAgICAgICAgIkRpc3BvbmlibGUiLElEU19QSFlTSUNBTF9NRU1PUllfQVZBSUxBQkxFLDEzNywxNDAsMzAsOAogICAgTFRFWFQgICAgICAgICAgICJDYWNoZSBzeXN06G1lIixJRFNfUEhZU0lDQUxfTUVNT1JZX1NZU1RFTV9DQUNIRSwxMzcsMTQ5LDQ2LDgKICAgIEVESVRURVhUICAgICAgICBJRENfUEhZU0lDQUxfTUVNT1JZX1RPVEFMLDE4NSwxMzEsNDgsOCxFU19SSUdIVCB8CiAgICAgICAgICAgICAgICAgICAgRVNfUkVBRE9OTFkgfCBFU19OVU1CRVIgfCBOT1QgV1NfQk9SREVSCiAgICBFRElUVEVYVCAgICAgICAgSURDX1BIWVNJQ0FMX01FTU9SWV9BVkFJTEFCTEUsMTg1LDE0MCw0OCw4LEVTX1JJR0hUIHwKICAgICAgICAgICAgICAgICAgICBFU19SRUFET05MWSB8IEVTX05VTUJFUiB8IE5PVCBXU19CT1JERVIKICAgIEVESVRURVhUICAgICAgICBJRENfUEhZU0lDQUxfTUVNT1JZX1NZU1RFTV9DQUNIRSwxODUsMTQ5LDQ4LDgsRVNfUklHSFQgfAogICAgICAgICAgICAgICAgICAgIEVTX1JFQURPTkxZIHwgRVNfTlVNQkVSIHwgTk9UIFdTX0JPUkRFUgogICAgTFRFWFQgICAgICAgICAgICJUb3RhbCIsSURTX0tFUk5FTF9NRU1PUllfVE9UQUwsMTM3LDE3NCwyNyw4CiAgICBMVEVYVCAgICAgICAgICAgIlBhZ2lu6WUiLElEU19LRVJORUxfTUVNT1JZX1BBR0VELDEzNywxODQsMjEsOAogICAgTFRFWFQgICAgICAgICAgICJOb24gcGFnaW7pZSIsSURTX0tFUk5FTF9NRU1PUllfTk9OUEFHRUQsMTM3LDE5MywzNCw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX0tFUk5FTF9NRU1PUllfVE9UQUwsMTg1LDE3NCw0OCw4LEVTX1JJR0hUIHwKICAgICAgICAgICAgICAgICAgICBFU19SRUFET05MWSB8IEVTX05VTUJFUiB8IE5PVCBXU19CT1JERVIKICAgIEVESVRURVhUICAgICAgICBJRENfS0VSTkVMX01FTU9SWV9QQUdFRCwxODUsMTg0LDQ4LDgsRVNfUklHSFQgfAogICAgICAgICAgICAgICAgICAgIEVTX1JFQURPTkxZIHwgRVNfTlVNQkVSIHwgTk9UIFdTX0JPUkRFUgogICAgRURJVFRFWFQgICAgICAgIElEQ19LRVJORUxfTUVNT1JZX05PTlBBR0VELDE4NSwxOTMsNDgsOCxFU19SSUdIVCB8CiAgICAgICAgICAgICAgICAgICAgRVNfUkVBRE9OTFkgfCBFU19OVU1CRVIgfCBOT1QgV1NfQk9SREVSCiAgICBHUk9VUEJPWCAgICAgICAgIkhpc3RvcmlxdWUgZGUgbCd1dGlsaXNhdGlvbiBkZSBsJ1VDIixJRENfQ1BVX1VTQUdFX0hJU1RPUllfRlJBTUUsNzQsNSwxNjgsNTQsMCxXU19FWF9UUkFOU1BBUkVOVAogICAgR1JPVVBCT1ggICAgICAgICJIaXN0b3JpcXVlIGQndXRpbGlzYXRpb24gZHUgZmljaGllciBkJ+ljaGFuZ2UiLElEQ19NRU1PUllfVVNBR0VfSElTVE9SWV9GUkFNRSw3NCw2MywxNjgsNTQsMCxXU19FWF9UUkFOU1BBUkVOVAogICAgUFVTSEJVVFRPTiAgICAgICJBZmZpY2hhZ2UgdXRpbGlzYXRpb24gVUMiLElEQ19DUFVfVVNBR0VfR1JBUEgsMTIsMTcsNDcsMzcsMCwKCQkgICAgV1NfRVhfQ0xJRU5URURHRQogICAgUFVTSEJVVFRPTiAgICAgICJBZmZpY2hhZ2UgdXRpbGlzYXRpb24gZmljaGllciIsSURDX01FTV9VU0FHRV9HUkFQSCwxMiw3NSw0NywzNywwLAogICAgICAgICAgICAgICAgICAgIFdTX0VYX0NMSUVOVEVER0UKICAgIFBVU0hCVVRUT04gICAgICAiSGlzdG9yaXF1ZSBkZSBsJ3V0aWxpc2F0aW9uIGRlIGwnVUMiLElEQ19DUFVfVVNBR0VfSElTVE9SWV9HUkFQSCw4MSwxNywKICAgICAgICAgICAgICAgICAgICAxNTMsMzcsMCxXU19FWF9DTElFTlRFREdFCiAgICBQVVNIQlVUVE9OICAgICAgIkhpc3RvcmlxdWUgZCd1dGlsaXNhdGlvbiBkdSBmaWNoaWVyIGQn6WNoYW5nZSIsSURDX01FTV9VU0FHRV9ISVNUT1JZX0dSQVBILDgxLDc1LAogICAgICAgICAgICAgICAgICAgIDE1MywzNywwLFdTX0VYX0NMSUVOVEVER0UKRU5ECgpJRERfREVCVUdfQ0hBTk5FTFNfRElBTE9HIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjQ3LCAyMTAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRGVidWcgQ2hhbm5lbHMiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIENPTlRST0wgICAgICAgICAiTGlzdDIiLElEQ19ERUJVR19DSEFOTkVMU19MSVNULCJTeXNMaXN0VmlldzMyIixMVlNfUkVQT1JUIHwKICAgICAgICAgICAgICAgICAgICBMVlNfU0lOR0xFU0VMIHwgTFZTX1NIT1dTRUxBTFdBWVMgfCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwKCQkgICAgTFZTX1NPUlRBU0NFTkRJTkcsNyw3LDIzMywxNzcKICAgIFBVU0hCVVRUT04gICAgICAiRmVybWVyIixJRE9LLDE3MSwxODksNjksMTQKRU5ECgpJRERfQUZGSU5JVFlfRElBTE9HIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjMxLCAxNTQKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiUHJvY2Vzc29yIEFmZmluaXR5IgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDEyMCwxMzMsNTAsMTQKICAgIFBVU0hCVVRUT04gICAgICAiQW5udWxlciIsSURDQU5DRUwsMTc0LDEzMyw1MCwxNAogICAgTFRFWFQgICAgICAgICAgICJMZSBwYXJhbeh0cmUgQWZmaW5pdOkgZHUgcHJvY2Vzc2V1ciBjb250cvRsZSBzdXIgcXVlbGxlcyBVQyBsZSBwcm9jZXNzdXMgc2VyYSBhdXRvcmlz6SDgIHMnZXjpY3V0ZXIuIiwKICAgICAgICAgICAgICAgICAgICBJRENfU1RBVElDLDUsNSwyMjAsMTYKICAgIENPTlRST0wgICAgICAgICAiQ1BVIDAiLElEQ19DUFUwLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsCiAgICAgICAgICAgICAgICAgICAgMTEsMjgsMzcsMTAKICAgIENPTlRST0wgICAgICAgICAiQ1BVIDEiLElEQ19DUFUxLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX0RJU0FCTEVEIHwKICAgICAgICAgICAgICAgICAgICBXU19UQUJTVE9QLDExLDQxLDM3LDEwCiAgICBDT05UUk9MICAgICAgICAgIkNQVSAyIixJRENfQ1BVMiwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19ESVNBQkxFRCB8CiAgICAgICAgICAgICAgICAgICAgV1NfVEFCU1RPUCwxMSw1NCwzNywxMAogICAgQ09OVFJPTCAgICAgICAgICJDUFUgMyIsSURDX0NQVTMsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfRElTQUJMRUQgfAogICAgICAgICAgICAgICAgICAgIFdTX1RBQlNUT1AsMTEsNjcsMzcsMTAKICAgIENPTlRST0wgICAgICAgICAiQ1BVIDQiLElEQ19DUFU0LCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX0RJU0FCTEVEIHwKICAgICAgICAgICAgICAgICAgICBXU19UQUJTVE9QLDExLDgwLDM3LDEwCiAgICBDT05UUk9MICAgICAgICAgIkNQVSA1IixJRENfQ1BVNSwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19ESVNBQkxFRCB8CiAgICAgICAgICAgICAgICAgICAgV1NfVEFCU1RPUCwxMSw5MywzNywxMAogICAgQ09OVFJPTCAgICAgICAgICJDUFUgNiIsSURDX0NQVTYsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfRElTQUJMRUQgfAogICAgICAgICAgICAgICAgICAgIFdTX1RBQlNUT1AsMTEsMTA2LDM3LDEwCiAgICBDT05UUk9MICAgICAgICAgIkNQVSA3IixJRENfQ1BVNywiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19ESVNBQkxFRCB8CiAgICAgICAgICAgICAgICAgICAgV1NfVEFCU1RPUCwxMSwxMTksMzcsMTAKICAgIENPTlRST0wgICAgICAgICAiQ1BVIDgiLElEQ19DUFU4LCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX0RJU0FCTEVEIHwKICAgICAgICAgICAgICAgICAgICBXU19UQUJTVE9QLDYxLDI4LDM3LDEwCiAgICBDT05UUk9MICAgICAgICAgIkNQVSA5IixJRENfQ1BVOSwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19ESVNBQkxFRCB8CiAgICAgICAgICAgICAgICAgICAgV1NfVEFCU1RPUCw2MSw0MSwzNywxMAogICAgQ09OVFJPTCAgICAgICAgICJDUFUgMTAiLElEQ19DUFUxMCwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfAogICAgICAgICAgICAgICAgICAgIFdTX0RJU0FCTEVEIHwgV1NfVEFCU1RPUCw2MSw1NCw0MSwxMAogICAgQ09OVFJPTCAgICAgICAgICJDUFUgMTEiLElEQ19DUFUxMSwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfAogICAgICAgICAgICAgICAgICAgIFdTX0RJU0FCTEVEIHwgV1NfVEFCU1RPUCw2MSw2Nyw0MSwxMAogICAgQ09OVFJPTCAgICAgICAgICJDUFUgMTIiLElEQ19DUFUxMiwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfAogICAgICAgICAgICAgICAgICAgIFdTX0RJU0FCTEVEIHwgV1NfVEFCU1RPUCw2MSw4MCw0MSwxMAogICAgQ09OVFJPTCAgICAgICAgICJDUFUgMTMiLElEQ19DUFUxMywiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfAogICAgICAgICAgICAgICAgICAgIFdTX0RJU0FCTEVEIHwgV1NfVEFCU1RPUCw2MSw5Myw0MSwxMAogICAgQ09OVFJPTCAgICAgICAgICJDUFUgMTQiLElEQ19DUFUxNCwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfAogICAgICAgICAgICAgICAgICAgIFdTX0RJU0FCTEVEIHwgV1NfVEFCU1RPUCw2MSwxMDYsNDEsMTAKICAgIENPTlRST0wgICAgICAgICAiQ1BVIDE1IixJRENfQ1BVMTUsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwKICAgICAgICAgICAgICAgICAgICBXU19ESVNBQkxFRCB8IFdTX1RBQlNUT1AsNjEsMTE5LDQxLDEwCiAgICBDT05UUk9MICAgICAgICAgIkNQVSAxNiIsSURDX0NQVTE2LCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8CiAgICAgICAgICAgICAgICAgICAgV1NfRElTQUJMRUQgfCBXU19UQUJTVE9QLDExNiwyOCw0MSwxMAogICAgQ09OVFJPTCAgICAgICAgICJDUFUgMTciLElEQ19DUFUxNywiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfAogICAgICAgICAgICAgICAgICAgIFdTX0RJU0FCTEVEIHwgV1NfVEFCU1RPUCwxMTYsNDEsNDEsMTAKICAgIENPTlRST0wgICAgICAgICAiQ1BVIDE4IixJRENfQ1BVMTgsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwKICAgICAgICAgICAgICAgICAgICBXU19ESVNBQkxFRCB8IFdTX1RBQlNUT1AsMTE2LDU0LDQxLDEwCiAgICBDT05UUk9MICAgICAgICAgIkNQVSAxOSIsSURDX0NQVTE5LCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8CiAgICAgICAgICAgICAgICAgICAgV1NfRElTQUJMRUQgfCBXU19UQUJTVE9QLDExNiw2Nyw0MSwxMAogICAgQ09OVFJPTCAgICAgICAgICJDUFUgMjAiLElEQ19DUFUyMCwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfAogICAgICAgICAgICAgICAgICAgIFdTX0RJU0FCTEVEIHwgV1NfVEFCU1RPUCwxMTYsODAsNDEsMTAKICAgIENPTlRST0wgICAgICAgICAiQ1BVIDIxIixJRENfQ1BVMjEsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwKICAgICAgICAgICAgICAgICAgICBXU19ESVNBQkxFRCB8IFdTX1RBQlNUT1AsMTE2LDkzLDQxLDEwCiAgICBDT05UUk9MICAgICAgICAgIkNQVSAyMiIsSURDX0NQVTIyLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8CiAgICAgICAgICAgICAgICAgICAgV1NfRElTQUJMRUQgfCBXU19UQUJTVE9QLDExNiwxMDYsNDEsMTAKICAgIENPTlRST0wgICAgICAgICAiQ1BVIDIzIixJRENfQ1BVMjMsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwKICAgICAgICAgICAgICAgICAgICBXU19ESVNBQkxFRCB8IFdTX1RBQlNUT1AsMTE2LDExOSw0MSwxMAogICAgQ09OVFJPTCAgICAgICAgICJDUFUgMjQiLElEQ19DUFUyNCwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfAogICAgICAgICAgICAgICAgICAgIFdTX0RJU0FCTEVEIHwgV1NfVEFCU1RPUCwxNzUsMjgsNDEsMTAKICAgIENPTlRST0wgICAgICAgICAiQ1BVIDI1IixJRENfQ1BVMjUsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwKICAgICAgICAgICAgICAgICAgICBXU19ESVNBQkxFRCB8IFdTX1RBQlNUT1AsMTc1LDQxLDQxLDEwCiAgICBDT05UUk9MICAgICAgICAgIkNQVSAyNiIsSURDX0NQVTI2LCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8CiAgICAgICAgICAgICAgICAgICAgV1NfRElTQUJMRUQgfCBXU19UQUJTVE9QLDE3NSw1NCw0MSwxMAogICAgQ09OVFJPTCAgICAgICAgICJDUFUgMjciLElEQ19DUFUyNywiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfAogICAgICAgICAgICAgICAgICAgIFdTX0RJU0FCTEVEIHwgV1NfVEFCU1RPUCwxNzUsNjcsNDEsMTAKICAgIENPTlRST0wgICAgICAgICAiQ1BVIDI4IixJRENfQ1BVMjgsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwKICAgICAgICAgICAgICAgICAgICBXU19ESVNBQkxFRCB8IFdTX1RBQlNUT1AsMTc1LDgwLDQxLDEwCiAgICBDT05UUk9MICAgICAgICAgIkNQVSAyOSIsSURDX0NQVTI5LCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8CiAgICAgICAgICAgICAgICAgICAgV1NfRElTQUJMRUQgfCBXU19UQUJTVE9QLDE3NSw5Myw0MSwxMAogICAgQ09OVFJPTCAgICAgICAgICJDUFUgMzAiLElEQ19DUFUzMCwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfAogICAgICAgICAgICAgICAgICAgIFdTX0RJU0FCTEVEIHwgV1NfVEFCU1RPUCwxNzUsMTA2LDQxLDEwCiAgICBDT05UUk9MICAgICAgICAgIkNQVSAzMSIsSURDX0NQVTMxLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8CiAgICAgICAgICAgICAgICAgICAgV1NfRElTQUJMRUQgfCBXU19UQUJTVE9QLDE3NSwxMTksNDEsMTAKRU5ECgpJRERfQ09MVU1OU19ESUFMT0cgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAxOTUsIDE5OQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJTZWxlY3QgQ29sdW1ucyIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSyw4NCwxNzgsNTAsMTQKICAgIFBVU0hCVVRUT04gICAgICAiQW5udWxlciIsSURDQU5DRUwsMTM4LDE3OCw1MCwxNAogICAgTFRFWFQgICAgICAgICAgICJT6WxlY3Rpb25uZXogbGVzIGNvbG9ubmVzIHF1aSBhcHBhcmHudHJvbnQgZGFucyBsYSBwYWdlIFByb2Nlc3N1cyBkdSBHZXN0aW9ubmFpcmUgZGVzIHTiY2hlcy4iLAogICAgICAgICAgICAgICAgICAgIElEQ19TVEFUSUMsNyw3LDE4MSwxNwogICAgQ09OVFJPTCAgICAgICAgICJOb20gZGUgbCcmaW1hZ2UiLElEQ19JTUFHRU5BTUUsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwKICAgICAgICAgICAgICAgICAgICBXU19ESVNBQkxFRCB8IFdTX1RBQlNUT1AsNywyOCw1NiwxMAogICAgQ09OVFJPTCAgICAgICAgICImUElEIChQcm9jZXNzIElkZW50aWZpZXIpIixJRENfUElELCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsNywzOSw4OCwxMAogICAgQ09OVFJPTCAgICAgICAgICJVdGkmbGlzYXRpb24gZHUgcHJvY2Vzc2V1ciIsSURDX0NQVVVTQUdFLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8CiAgICAgICAgICAgICAgICAgICAgV1NfVEFCU1RPUCw3LDUwLDUzLDEwCiAgICBDT05UUk9MICAgICAgICAgIlQmZW1wcyBDUFUiLElEQ19DUFVUSU1FLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8CiAgICAgICAgICAgICAgICAgICAgV1NfVEFCU1RPUCw3LDYxLDQ4LDEwCiAgICBDT05UUk9MICAgICAgICAgIlV0aWxpc2F0aW9uIGRlIGxhICZt6W1vaXJlIixJRENfTUVNT1JZVVNBR0UsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwKICAgICAgICAgICAgICAgICAgICBXU19UQUJTVE9QLDcsNzIsNjMsMTAKICAgIENPTlRST0wgICAgICAgICAiyWNhcnQgJmQndXRpbGlzYXRpb24gZGUgbGEgbeltb2lyZSIsSURDX01FTU9SWVVTQUdFREVMVEEsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCw3LDgzLDgyLDEwCiAgICBDT05UUk9MICAgICAgICAgIlV0aWxpc2F0aW9uIG1hJnhpbWFsZSBkZSBsYSBt6W1vaXJlIixJRENfUEVBS01FTU9SWVVTQUdFLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsNyw5NCw4MiwxMAogICAgQ09OVFJPTCAgICAgICAgICJFcnJldXImcyBkZSBwYWdlIixJRENfUEFHRUZBVUxUUywiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfAogICAgICAgICAgICAgICAgICAgIFdTX1RBQlNUT1AsNywxMDUsNTMsMTAKICAgIENPTlRST0wgICAgICAgICAiT2JqZXRzICZVU0VSIixJRENfVVNFUk9CSkVDVFMsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwKICAgICAgICAgICAgICAgICAgICBXU19UQUJTVE9QLDcsMTE2LDYyLDEwCiAgICBDT05UUk9MICAgICAgICAgIkxlY3R1cmVzIEUvUyIsSURDX0lPUkVBRFMsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwKICAgICAgICAgICAgICAgICAgICBXU19UQUJTVE9QLDcsMTI3LDQ5LDEwCiAgICBDT05UUk9MICAgICAgICAgIk9jdGV0cyBkZSBsZWN0dXJlIEUvUyIsSURDX0lPUkVBREJZVEVTLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsNywxMzgsNjUsMTAKICAgIENPTlRST0wgICAgICAgICAiSWRlbnRpJmZpY2F0ZXVyIGRlIHNlc3Npb24iLElEQ19TRVNTSU9OSUQsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwKICAgICAgICAgICAgICAgICAgICBXU19UQUJTVE9QLDcsMTQ5LDUwLDEwCiAgICBDT05UUk9MICAgICAgICAgIiZOb20gZGUgbCd1dGlsaXNhdGV1ciIsSURDX1VTRVJOQU1FLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8CiAgICAgICAgICAgICAgICAgICAgV1NfVEFCU1RPUCw3LDE2MCw1MSwxMAogICAgQ09OVFJPTCAgICAgICAgICLJJmNhcnQgZCdlcnJldXJzIGRlIHBhZ2luYXRpb24iLElEQ19QQUdFRkFVTFRTREVMVEEsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxMDcsMjgsNzIsMTAKICAgIENPTlRST0wgICAgICAgICAiVGFpbGxlIGRlIGxhIG3pbW9pcmUgJnZpcnR1ZWxsZSIsSURDX1ZJUlRVQUxNRU1PUllTSVpFLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTA3LDM5LDc3LDEwCiAgICBDT05UUk9MICAgICAgICAgIlLpc2VydmUgcGEmZ2lu6WUiLElEQ19QQUdFRFBPT0wsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwKICAgICAgICAgICAgICAgICAgICBXU19UQUJTVE9QLDEwNyw1MCw1MywxMAogICAgQ09OVFJPTCAgICAgICAgICJS6XNlcnZlIG4mb24gcGFnaW7pZSIsSURDX05PTlBBR0VEUE9PTCwiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDEwNyw2MSw2NywxMAogICAgQ09OVFJPTCAgICAgICAgICJQJnJpb3JpdOkgZGUgYmFzZSIsSURDX0JBU0VQUklPUklUWSwiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDEwNyw3Miw1NSwxMAogICAgQ09OVFJPTCAgICAgICAgICJOb21icmUgZGUgJmhhbmRsZXMiLElEQ19IQU5ETEVDT1VOVCwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfAogICAgICAgICAgICAgICAgICAgIFdTX1RBQlNUT1AsMTA3LDgzLDU5LDEwCiAgICBDT05UUk9MICAgICAgICAgIk5vbWJyZSBkZSAmdGhyZWFkcyIsSURDX1RIUkVBRENPVU5ULCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8CiAgICAgICAgICAgICAgICAgICAgV1NfVEFCU1RPUCwxMDcsOTQsNTksMTAKICAgIENPTlRST0wgICAgICAgICAiT2ImamV0cyBHREkiLElEQ19HRElPQkpFQ1RTLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8CiAgICAgICAgICAgICAgICAgICAgV1NfVEFCU1RPUCwxMDcsMTA1LDU1LDEwCiAgICBDT05UUk9MICAgICAgICAgIkVjcml0dXJlcyBFL1MiLElEQ19JT1dSSVRFUywiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfAogICAgICAgICAgICAgICAgICAgIFdTX1RBQlNUT1AsMTA3LDExNiw0OSwxMAogICAgQ09OVFJPTCAgICAgICAgICJPY3RldHMgZCfpY3JpdHVyZSBFL1MiLElEQ19JT1dSSVRFQllURVMsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxMDcsMTI3LDY1LDEwCiAgICBDT05UUk9MICAgICAgICAgIkF1dHJlcyBFL1MiLElEQ19JT09USEVSLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8CiAgICAgICAgICAgICAgICAgICAgV1NfVEFCU1RPUCwxMDcsMTM4LDQ2LDEwCiAgICBDT05UUk9MICAgICAgICAgIk9jdGV0cyBkJ2F1dHJlcyBFL1MiLElEQ19JT09USEVSQllURVMsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxMDcsMTQ5LDY1LDEwCkVORAoKLyoKIFN0cmluZyBUYWJsZQoqLwoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19BUFBfVElUTEUgICAgICAgICAgICJHZXN0aW9ubmFpcmUgZGVzIHTiY2hlcyIKICAgIElEQ19UQVNLTUdSICAgICAgICAgICAgICJHZXN0aW9ubmFpcmUgZGVzIHTiY2hlcyIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfRklMRV9ORVcgICAgICAgICAgICAgIkV46WN1dGUgdW4gbm91dmVhdSBwcm9ncmFtbWUiCiAgICBJRF9PUFRJT05TX0FMV0FZU09OVE9QICAiTGUgZ2VzdGlvbm5haXJlIGRlcyB04mNoZXMgcmVzdGUgYXUgcHJlbWllciBwbGFuIGRlIHRvdXRlcyBsZXMgYXV0cmVzIGZlbup0cmVzIHNhdWYgcydpbCBlc3QgculkdWl0IgogICAgSURfT1BUSU9OU19NSU5JTUlaRU9OVVNFCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTGUgZ2VzdGlvbm5haXJlIGRlcyB04mNoZXMgZXN0IG1pbmltaXPpIHF1YW5kIHVuZSBvcOlyYXRpb24gQmFzY3VsZXIgdmVycyBlc3QgZWZmZWN0dellIgogICAgSURfT1BUSU9OU19ISURFV0hFTk1JTklNSVpFRCAiQ2FjaGUgbGUgZ2VzdGlvbm5haXJlIGRlcyB04mNoZXMgbG9yc3F1J2lsIGVzdCBy6WR1aXQiCiAgICBJRF9WSUVXX1JFRlJFU0ggICAgICAgICAiRm9yY2UgbGUgZ2VzdGlvbm5haXJlIGRlcyB04mNoZXMg4CBzJ2FjdHVhbGlzZXIgbWFpbnRlbmFudCBzYW5zIHRlbmlyIGNvbXB0ZSBkdSBwYXJhbeh0cmUgZGUgZnLpcXVlbmNlIGQnYWN0dWFsaXNhdGlvbiIKICAgIElEX1ZJRVdfTEFSR0UgICAgICAgICAgICJBZmZpY2hlIGxlcyB04mNoZXMgZW4gdXRpbGlzYW50IGRlIGdyYW5kZXMgaWP0bmVzIgogICAgSURfVklFV19TTUFMTCAgICAgICAgICAgIkFmZmljaGUgbGVzIHTiY2hlcyBlbiB1dGlsaXNhbnQgZGUgcGV0aXRlcyBpY/RuZXMiCiAgICBJRF9WSUVXX0RFVEFJTFMgICAgICAgICAiQWZmaWNoZSBkZXMgaW5mb3JtYXRpb25zIHN1ciBjaGFjdW5lIGRlcyB04mNoZXMiCiAgICBJRF9WSUVXX1VQREFURVNQRUVEX0hJR0ggIkFjdHVhbGlzZSBsJ2FmZmljaGFnZSBkZXV4IGZvaXMgcGFyIHNlY29uZGUiCiAgICBJRF9WSUVXX1VQREFURVNQRUVEX05PUk1BTCAiQWN0dWFsaXNlIGwnYWZmaWNoYWdlIHRvdXRlcyBsZXMgZGV1eCBzZWNvbmRlcyIKICAgIElEX1ZJRVdfVVBEQVRFU1BFRURfTE9XICJBY3R1YWxpc2UgbCdhZmZpY2hhZ2UgdG91dGVzIGxlcyBxdWF0cmUgc2Vjb25kZXMiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX1ZJRVdfVVBEQVRFU1BFRURfUEFVU0VEICJOJ2FjdHVhbGlzZSBwYXMgbCdhZmZpY2hhZ2UgYXV0b21hdGlxdWVtZW50IgogICAgSURfV0lORE9XU19USUxFSE9SSVpPTlRBTExZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQXJyYW5nZSBsZXMgZmVu6nRyZXMgaG9yaXpvbnRhbGVtZW50IHN1ciBsZSBidXJlYXUiCiAgICBJRF9XSU5ET1dTX1RJTEVWRVJUSUNBTExZICJBcnJhbmdlIGxlcyBmZW7qdHJlcyB2ZXJ0aWNhbGVtZW50IHN1ciBsZSBidXJlYXUiCiAgICBJRF9XSU5ET1dTX01JTklNSVpFICAgICAiUulkdWl0IGxlcyBmZW7qdHJlcyIKICAgIElEX1dJTkRPV1NfTUFYSU1JWkUgICAgICJBZ2dyYW5kaXQgbGVzIGZlbup0cmVzIgogICAgSURfV0lORE9XU19DQVNDQURFICAgICAgIlBsYWNlIGxlcyBmZW7qdHJlcyBlbiBjYXNjYWRlIHN1ciBsZSBidXJlYXUiCiAgICBJRF9XSU5ET1dTX0JSSU5HVE9GUk9OVCAiQWZmaWNoZSBsYSBmZW7qdHJlIGF1IHByZW1pZXIgcGxhbiwgbWFpcyBuZSBiYXNjdWxlIHBhcyB2ZXJzIGNlbGxlLWNpIgogICAgSURfSEVMUF9UT1BJQ1MgICAgICAgICAgIkFmZmljaGUgbGVzIHJ1YnJpcXVlcyBkJ2FpZGUgZHUgZ2VzdGlvbm5haXJlIGRlcyB04mNoZXMiCiAgICBJRF9IRUxQX0FCT1VUICAgICAgICAgICAiQWZmaWNoZSBsZSBpbmZvcm1hdGlvbnMgc3VyIGxlIHByb2dyYW1tZSwgbGEgdmVyc2lvbiBldCBsZSBjb3B5cmlnaHQiCiAgICBJRF9GSUxFX0VYSVQgICAgICAgICAgICAiUXVpdHRlIGxlIGdlc3Rpb25uYWlyZSBkZXMgdOJjaGVzIgogICAgSURfT1BUSU9OU19TSE9XMTZCSVRUQVNLUwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFmZmljaGUgbGVzIHTiY2hlcyAxNi1iaXQgc291cyBsZSBudHZkbS5leGUgYXNzb2Np6SIKICAgIElEX1ZJRVdfU0VMRUNUQ09MVU1OUyAgICJT6WxlY3Rpb25uZSBxdWVsbGVzIGNvbG9ubmVzIHNlcm9udCBhZmZpY2jpZXMgZGFucyBsYSBwYWdlIGRlcyBwcm9jZXNzdXMiCiAgICBJRF9WSUVXX1NIT1dLRVJORUxUSU1FUyAiQWZmaWNoZSBsZSB0ZW1wcyBub3lhdSBkYW5zIGxlcyBncmFwaGlxdWVzIGRlIHBlcmZvcm1hbmNlcyIKICAgIElEX1ZJRVdfQ1BVSElTVE9SWV9PTkVHUkFQSEFMTAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkwndXRpbGlzYXRpb24gZGVzIFVDcyBlc3QgYWZmaWNo6WUgc3VyIHVuIHNldWwgZ3JhcGhpcXVlIgogICAgSURfVklFV19DUFVISVNUT1JZX09ORUdSQVBIUEVSQ1BVICJDaGFxdWUgVUMg4CBzb24gcHJvcGVyIGdyYXBoaXF1ZSIKICAgIElEX0FQUExJQ0FUSU9OX1BBR0VfU1dJVENIVE8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBbehuZSBsYSB04mNoZSBhdXByZW1pZXIgcGxhbiBldCBiYXNjdWxlIHZlcnMgY2VsbGUtY2kiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX0VORFRBU0sgICAgICAgICAgICAgICJEZW1hbmRlIOAgbGEgdOJjaGUgc+lsZWN0aW9ubmVyIGRlIHNlIHRlcm1pbmVyIgogICAgSURfR09UT1BST0NFU1MgICAgICAgICAgIkJhc2N1bGUgdmVycyBsZSBwcm9jZXNzdXMgZGUgbGEgdOJjaGUgc+lsZWN0aW9ubullIgogICAgSURfUkVTVE9SRSAgICAgICAgICAgICAgIlJlc3RhdXJlIGxlIGdlc3Rpb25uYWlyZSBkZXMgdOJjaGVzIgogICAgSURfUFJPQ0VTU19QQUdFX0VORFBST0NFU1MgIlJldGlyZSBsZSBwcm9jZXNzdXMgZHUgc3lzdOhtZSIKICAgIElEX1BST0NFU1NfUEFHRV9FTkRQUk9DRVNTVFJFRQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJldGlyZSBjZSBwcm9jZXNzdXMgZXQgdG91cyBjZXMgZmlscyBkdSBzeXN06G1lIgogICAgSURfUFJPQ0VTU19QQUdFX0RFQlVHICAgIkF0dGFjaGUgbGUgZOlidWdnZXVyIOAgY2UgcHJvY2Vzc3VzIgogICAgSURfUFJPQ0VTU19QQUdFX1NFVEFGRklOSVRZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29udHL0bGUgc3VyIHF1ZWwgcHJvY2Vzc2V1ciBsZSBwcm9jZXNzdXMgc2VyYSBhdXRvcmlz6SDgIHMnZXjpY3V0ZXIiCiAgICBJRF9QUk9DRVNTX1BBR0VfU0VUUFJJT1JJVFlfUkVBTFRJTUUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQbGFjZSBsZSBwcm9jZXNzdXMgZGFucyBsYSBjbGFzc2UgZGUgcHJpb3JpdOkgVEVNUFMgUkVFTCIKICAgIElEX1BST0NFU1NfUEFHRV9TRVRQUklPUklUWV9ISUdIICJQbGFjZSBsZSBwcm9jZXNzdXMgZGFucyBsYSBjbGFzc2UgZGUgcHJpb3JpdOkgSEFVVEUiCiAgICBJRF9QUk9DRVNTX1BBR0VfU0VUUFJJT1JJVFlfQUJPVkVOT1JNQUwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQbGFjZSBsZSBwcm9jZXNzdXMgZGFucyBsYSBjbGFzc2UgZGUgcHJpb3JpdOkgU1VQRVJJRVVSRSBBIExBIE5PUk1BTEUiCiAgICBJRF9QUk9DRVNTX1BBR0VfU0VUUFJJT1JJVFlfTk9STUFMCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGxhY2UgbGUgcHJvY2Vzc3VzIGRhbnMgbGEgY2xhc3NlIGRlIHByaW9yaXTpIE5PUk1BTEUiCiAgICBJRF9QUk9DRVNTX1BBR0VfU0VUUFJJT1JJVFlfQkVMT1dOT1JNQUwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQbGFjZSBsZSBwcm9jZXNzdXMgZGFucyBsYSBjbGFzc2UgZGUgcHJpb3JpdOkgSU5GRVJJRVVSRSBBIExBIE5PUk1BTEUiCiAgICBJRF9QUk9DRVNTX1BBR0VfU0VUUFJJT1JJVFlfTE9XICJQbGFjZSBsZSBwcm9jZXNzdXMgZGFucyBsYSBjbGFzc2UgZGUgcHJpb3JpdOkgQkFTU0UiCiAgICBJRFNfTElDRU5TRSAgICAgICAgICAgICAiVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuXHJcblRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXHJcblxyXG5Zb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcsIFVTQS4iCkVORAo=