LyoKICogUmVnZWRpdCBEYW5pc2ggcmVzb3VyY2VzCiAqCiAqIENvcHlyaWdodCAyMDA4IEplbnMgQWxicmV0c2VuIDxqZW5zQGFsYnJldHNlbi5kaz4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKIExBTkdVQUdFIExBTkdfREFOSVNILCBTVUJMQU5HX0RFRkFVTFQKCi8qCiAqIE1lbnUKICovCgpJRFJfUkVHRURJVF9NRU5VIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICAgIFBPUFVQICImUmVnaXN0ZXIiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImSW1wb3J06XIgcmVnaXN0ZXJpbmdzZmlsLi4uIiwgICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRQogICAgICAgIE1FTlVJVEVNICImRWtzcG9ydOlyIHJlZ2lzdGVyaW5nc2ZpbC4uLiIsICAgIElEX1JFR0lTVFJZX0VYUE9SVFJFR0lTVFJZRklMRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImVGlsc2x1dCBuZXR25nJrc3JlZ2lzdGVyaW5nc2RhdGFiYXNlLi4uIiwgSURfUkVHSVNUUllfQ09OTkVDVE5FVFdPUktSRUdJU1RSWSwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gIiZGcmFrb2JsIG5ldHbmcmtzcmVnaXN0ZXJpbmdzZGF0YWJhc2UuLi4iLCBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlVkc2tyaXZcdEN0cmwrUCIsICAgICAgICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9QUklOVCwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZBZnNsdXQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSURfUkVHSVNUUllfRVhJVAogICAgRU5ECiAgICBQT1BVUCAiUiZlZGlnZXIiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImxm5kcmUiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTU9ESUZZCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgUE9QVVAgIiZOeSIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiTvgmZ2xlIiwgICAgICAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0tFWQogICAgICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICAgICAgTUVOVUlURU0gIiZTdHJlbmd25nJkaSIsICAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJkJpbuZyduZyZGkiLCAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImRFdPUkQgduZyZGkiLCAgICAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJkZsZXJzdHJlbmdzduZyZGkiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX01VTFRJX1NUUklOR1ZBTFVFCiAgICAgICAgRU5ECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZTbGV0XHREZWwiLCAgICAgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiJk9tZPhiXHRGMiIsICAgICAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImS29waWVyIG74Z2xlbmF2biIsICAgICAgICAgICAgICAgICAgIElEX0VESVRfQ09QWUtFWU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkZpbmRcdEN0cmwrRiIsICAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX0ZJTkQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICJGaW5kICZu5nN0ZVx0RjMiLCAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfRklORE5FWFQsIEdSQVlFRAogICAgRU5ECiAgICBQT1BVUCAiJlZpcyIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZTdGF0dXNsaW5pZSIsICAgICAgICAgICAgICAgICAgICAgICAgSURfVklFV19TVEFUVVNCQVIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlNwbGl0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRF9WSUVXX1NQTElUCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIk9wZGF0ZSZyXHRGNSIsICAgICAgICAgICAgICAgICAgICAgICAgSURfVklFV19SRUZSRVNICiAgICBFTkQKICAgIFBPUFVQICImRmF2b3JpdHRlciIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIlRpbGb4aiB0aWwgZiZhdm9yaXR0ZXIuLi4iLCAgICAgICAgICAgICAgSURfRkFWT1JJVEVTX0FERFRPRkFWT1JJVEVTCiAgICAgICAgTUVOVUlURU0gIkZqZSZybiBmYXZvcml0Li4uIiwgICAgICAgICAgICAgICAgICAgICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFCiAgICBFTkQKICAgIFBPUFVQICImSGrmbHAiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICJFbW5lciBpICZoauZscFx0RjEiLCAgICAgICAgICAgICAgICAgIElEX0hFTFBfSEVMUFRPUElDUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImT20gUmVnaXN0ZXJpbmdzZGF0YWJhc2UgZWRpdG9yIiwgICAgIElEX0hFTFBfQUJPVVQKICAgIEVORApFTkQKCklEUl9QT1BVUF9NRU5VUyBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgUE9QVVAgIiIKICBCRUdJTgoJTUVOVUlURU0gIibGbmRyZSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX01PRElGWQoJTUVOVUlURU0gIsZuZHJlIGJpbuZyZGF0YSIsICAgICAgICAgICAgICAgICAgICBJRF9FRElUX01PRElGWV9CSU4KCU1FTlVJVEVNIFNFUEFSQVRPUgoJTUVOVUlURU0gIiZTbGV0XHREZWwiLCAgICAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQoJTUVOVUlURU0gIiZPbWT4YiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogIEVORAogIFBPUFVQICIiCiAgQkVHSU4KICAgICAgICBQT1BVUCAiJk55IgogICAgICAgIEJFR0lOCiAgICAgICAgICAgIE1FTlVJVEVNICJO+CZnbGUiLCAgICAgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfS0VZCiAgICAgICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgICAgICBNRU5VSVRFTSAiJlN0cmVuZ3bmcmRpIiwgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImQmlu5nJ25nJkaSIsICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZEV09SRCB25nJkaSIsICAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImRmxlcnN0cmVuZ3N25nJkaSIsICAgICAgICAgICAgICAgSURfRURJVF9ORVdfTVVMVElfU1RSSU5HVkFMVUUKICAgICAgICBFTkQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlNsZXRcdERlbCIsICAgICAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQogICAgICAgIE1FTlVJVEVNICImT21k+GJcdEYyIiwgICAgICAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZFeHBvcnQuLi4iLCAgICAgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9FWFBPUlQKICAgICAgICBNRU5VSVRFTSAiJktvcGllciBu+GdsZW5hdm4iLCAgICAgICAgICAgICAgICAgICBJRF9FRElUX0NPUFlLRVlOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZGaW5kXHRDdHJsK0YiLCAgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9GSU5ELCBHUkFZRUQKICBFTkQKRU5ECgoKLyoKICogRGlhbG9nCiAqLwoKSUREX0VYUE9SVF9URU1QTEFURSBESUFMT0cgRElTQ0FSREFCTEUgIDUwLCA1MCwgMjc4LCA1NApTVFlMRSBEU18zRExPT0sgfCBEU19DT05UUk9MIHwgV1NfQ0hJTEQgfCBXU19WSVNJQkxFIHwgV1NfQ0xJUFNJQkxJTkdTIHwKICAgIFdTX0JPUkRFUgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAiJkVrc3BvcnRlciByZWdpc3RlcmluZ3NkYXRhYmFzZSIsIElEQ19FWFBPUlRfQkFTRSwgNiwgNiwgMjY2LCA0MiwgV1NfR1JPVVAKICAgIEFVVE9SQURJT0JVVFRPTiAiJkFsdCIsIElEQ19FWFBPUlRfQUxMLCAxMiwgMTUsIDI0NCwgMTIKICAgIEFVVE9SQURJT0JVVFRPTiAiJk1hcmtlcmV0IGRlbDoiLCBJRENfRVhQT1JUX1NFTEVDVEVELCAxMiwgMzAsIDcwLCAxMgogICAgRURJVFRFWFQgSURDX0VYUE9SVF9QQVRILCA4MiwgMzAsIDE4NCwgMTIKRU5ECgpJRERfRklORCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA4NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRmluZCIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgpMVEVYVCAgICAgICAgICAgIkZpbmQ6IixJRENfU1RBVElDLDUsNywxMTksOApFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNDAsNSwxMjUsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTApMVEVYVCAgICAgICAgICAgIkZpbmQgaToiLElEQ19TVEFUSUMsNSwgMjIsIDExOSwgOApDSEVDS0JPWCAgICAgICAgIk74Z2xlciIsIElEQ19GSU5EX0tFWVMsIDUsIDM0LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBXU19HUk9VUCB8IEJTX0FVVE9DSEVDS0JPWApDSEVDS0JPWCAgICAgICAgIlbmcmRpbmF2biIsIElEQ19GSU5EX1ZBTFVFUywgNSwgNDYsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IEJTX0FVVE9DSEVDS0JPWApDSEVDS0JPWCAgICAgICAgIlbmcmRpaW5kaG9sZCIsIElEQ19GSU5EX0NPTlRFTlQsIDUsIDU4LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKQ0hFQ0tCT1ggICAgICAgICJLdW4gaGVsZSBzdHJlbmdlIiwgSURDX0ZJTkRfV0hPTEUsIDUsIDcwLCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKREVGUFVTSEJVVFRPTiAgICJGaW5kIixJRE9LLDE3NSw1LDMwLDExLFdTX0dST1VQClBVU0hCVVRUT04gICAgICAiTHVrIixJRENBTkNFTCwxNzUsMjIsMzAsMTEsIFdTX0dST1VQCkVORAoKSUREX0FEREZBVk9SSVRFIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDU1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJUaWxm+GogdGlsIGZhdm9yaXQiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KTFRFWFQgICAgICAgICAgICJOYXZuOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwKREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsNDAsMzAsMTEsV1NfR1JPVVAKUFVTSEJVVFRPTiAgICAgICJBbm51bGxlciIsSURDQU5DRUwsMTc1LDQwLDMwLDExLCBXU19HUk9VUApFTkQKCklERF9ERUxGQVZPUklURSBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA5MApTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRmplcm4gZmF2b3JpdCIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgpMVEVYVCAgICAgICAgICAgIk5hdm46IixJRENfU1RBVElDLDUsNSwxMTksOApMSVNUQk9YICAgICAgICAgSURDX05BTUVfTElTVCw1LDE1LDIwMCw1MiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IExCU19TT1JUIHwgTEJTX05PSU5URUdSQUxIRUlHSFQgfCBXU19WU0NST0xMCkRFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDczLDMwLDExLFdTX0dST1VQClBVU0hCVVRUT04gICAgICAiQW5udWxsZXIiLElEQ0FOQ0VMLDE3NSw3MywzMCwxMSwgV1NfR1JPVVAKRU5ECgpJRERfRURJVF9TVFJJTkcgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgNzUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlJlZGlnZXIgc3RyZW5nIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIlbmcmRpbmF2bjoiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTCB8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIlbmcmRpZGF0YToiLElEQ19TVEFUSUMsNSwzMCwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDYwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgIkFubnVsbGVyIixJRENBTkNFTCwxNzUsNjAsMzAsMTEsV1NfR1JPVVAKRU5ECgpJRERfRURJVF9EV09SRCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCAxMDAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IERTX05PSURMRU1TRyB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlJlZGlnZXIgRFdPUkQiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiVuZyZGluYXZuOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMIHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiVuZyZGlkYXRhOiIsSURDX1NUQVRJQyw1LDMwLDkwLDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDkwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBHUk9VUEJPWCAgICAgICAgIkJhc2UiLCBJRENfRFdPUkRfQkFTRSwgMTIwLCAzMCwgODUsIDM3LCBCU19HUk9VUEJPWAogICAgQVVUT1JBRElPQlVUVE9OICJIZXhhZGVjaW1hbCIsIElEQ19EV09SRF9IRVgsIDEzMCwgNDAsIDYwLCAxMCwgV1NfVEFCU1RPUAogICAgQVVUT1JBRElPQlVUVE9OICJEZWNpbWFsIiwgSURDX0RXT1JEX0RFQywgMTMwLCA1MiwgNjAsIDEwLCBXU19UQUJTVE9QCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw4MCwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICJBbm51bGxlciIsSURDQU5DRUwsMTc1LDgwLDMwLDExLFdTX0dST1VQCkVORAoKSUREX0VESVRfQklOQVJZIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDEwMApTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfTk9JRExFTVNHIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiUmVkaWdlciBiaW7mciIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJW5nJkaW5hdm46IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwgfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICJW5nJkaWRhdGE6IixJRENfU1RBVElDLDUsMzAsOTAsOAogICAgQ09OVFJPTCAgICAgICAgICIiLElEQ19WQUxVRV9EQVRBLCJIZXhFZGl0IixXU19UQUJTVE9QLDQsNDAsMTYwLDQwCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw4MCwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICJBbm51bGxlciIsSURDQU5DRUwsMTc1LDgwLDMwLDExLFdTX0dST1VQCkVORAoKSUREX0VESVRfTVVMVElfU1RSSU5HIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDE3NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiUmVkaWdlciBmbGVyc3RyZW5nIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIlbmcmRpbmF2bjoiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiVuZyZGlkYXRhOiIsSURDX1NUQVRJQyw1LDMwLDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX0RBVEEsNSw0MCwyMDAsMTEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgV1NfSFNDUk9MTCB8IFdTX1ZTQ1JPTEwgfCBFU19NVUxUSUxJTkUgfCBFU19XQU5UUkVUVVJOCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCwxNjAsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAiQW5udWxsZXIiLElEQ0FOQ0VMLDE3NSwxNjAsMzAsMTEsV1NfR1JPVVAKRU5ECgovKgogKiBTdHJpbmcgVGFibGUKICovCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0xJU1RfQ09MVU1OX05BTUUgICAgIk5hdm4iCiAgICBJRFNfTElTVF9DT0xVTU5fVFlQRSAgICAiVHlwZSIKICAgIElEU19MSVNUX0NPTFVNTl9EQVRBICAgICJEYXRhIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfQVBQX1RJVExFICAgICAgICAgICAiUmVnaXN0ZXJpbmdzZGF0YWJhc2UgZWRpdG9yIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9SRUdJU1RSWV9NRU5VICAgICAgICAiSW5kZWhvbGRlciBrb21tYW5kb2VyIGZvciBhdCBhcmJlamRlIG1lZCBoZWxlIHJlZ2lzdGVyZXQiCiAgICBJRF9FRElUX01FTlUgICAgICAgICAgICAiSW5kZWhvbGRlciBrb21tYW5kb2VyIGZvciBhdCByZWRpZ2VyZSB25nJkaWVyIG9nIG74Z2xlciIKICAgIElEX1ZJRVdfTUVOVSAgICAgICAgICAgICJJbmRlaG9sZGVyIGtvbW1hbmRvZXIgZm9yIGF0IHRpbHBhc3NlIHJlZ2lzdGVydmluZHVldCIKICAgIElEX0ZBVk9SSVRFU19NRU5VICAgICAgICJJbmRlaG9sZGVyIGtvbW1hbmRvZXIgZm9yIGF0IGblIHRpbGdhbmcgdGlsIG74Z2xlciBzb20gYnJ1Z2VzIG9mdGUiCiAgICBJRF9IRUxQX01FTlUgICAgICAgICAgICAiSW5kZWhvbGRlciBrb21tYW5kb2VyIGZvciBhdCB2aXNlIGhq5mxwIG9nIGluZm9ybWF0aW9uIG9tIFJlZ2lzdGVyaW5nc2RhdGFiYXNlIGVkaXRvciIKICAgIElEX0VESVRfTkVXX01FTlUgICAgICAgICJJbmRlaG9sZGVyIGtvbW1hbmRvZXIgZm9yIGF0IG9wcmV0dGUgbnllIG74Z2xlciBlbGxlciB25nJkaWVyIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9FRElUX01PRElGWSAgICAgICAgICAixm5kcmVyIHbmcmRpZW5zIGRhdGEiCiAgICBJRF9FRElUX05FV19LRVkgICAgICAgICAiVGlsZvhqIGVuIG55IG74Z2xlIgogICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUgIlRpbGb4aiBlbiBueSBzdHJlbmd25nJkaSIKICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFICJUaWxm+GogZW4gbnkgYmlu5nJ25nJkaSIKICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUgICJUaWxm+GogZW4gbnkgRFdPUkQgduZyZGkiCiAgICBJRF9FRElUX05FV19NVUxUSV9TVFJJTkdWQUxVRSAiVGlsZvhqIGVuIG55IGZsZXJzdHJlbmdzduZyZGkiCiAgICBJRF9SRUdJU1RSWV9JTVBPUlRSRUdJU1RSWUZJTEUgIkltcG9ydGVyZXIgZW4gdGVrc3RmaWwgaW5kIGkgcmVnaXN0ZXJpbmdzZGF0YWJhc2UiCiAgICBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFa3Nwb3J0ZXJlciBoZWxlIGVsbGVyIGRlbGUgYWYgcmVnaXN0ZXJpbmdzZGF0YWJhc2UgdGlsIGVuIHRla3N0ZmlsIgogICAgSURfUkVHSVNUUllfQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRpbHNsdXQgdGlsIHJlZ2lzdGVyaW5nc2RhdGFiYXNlIHDlIGVuIGFuZGVuIG1hc2tpbmUiCiAgICBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnJha29ibCBmcmEgcmVnaXN0ZXJpbmdzZGF0YWJhc2UgcOUgZW4gYW5kZW4gbWFza2luZSIKICAgIElEX1JFR0lTVFJZX1BSSU5UICAgICAgICJTa3JpdmVyIHV0IGhlbGUgZWxsZXIgZGVsZXIgYXYgcmVnaXN0ZXJldCIKLyogICAgSURfSEVMUF9IRUxQVE9QSUNTICAgICAgIlZpc2VyIGhq5mxwIHRpbCBSZWdpc3RlcnJlZGlnZXJpbmciICovCiAgICBJRF9IRUxQX0FCT1VUICAgICAgICAgICAiVmlzZXIgcHJvZ3JhbWluZm9ybWF0aW9uLCB2ZXJzaW9ubnVtbWVyIG9nIG9waGF2c3JldCIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfRVhJVCAgICAgICAgIkFmc2x1dHRlciBSZWdpc3RlcmluZ3NkYXRhYmFzZSBlZGl0b3IiCiAgICBJRF9GQVZPUklURVNfQUREVE9GQVZPUklURVMgIlRpbGb4amVyIG74Z2xlciB0aWwgZmF2b3JpdGxpc3RlbiIKICAgIElEX0ZBVk9SSVRFU19SRU1PVkVGQVZPUklURSAiRmplcm5lciBu+GdsZXIgZnJhIGZhdm9yaXRsaXN0ZW4iCiAgICBJRF9WSUVXX1NUQVRVU0JBUiAgICAgICAiVmlzZXIgZWxsZXIgc2tqdWxlciBzdGF0dXNsaW5pZW4iCiAgICBJRF9WSUVXX1NQTElUICAgICAgICAgICAixm5kcmVyIHBvc2l0aW9uZW4gdGlsIGRlbGluZ3NsaW5pZW4gbWVsbGVtIHRvIHJ1ZGVyIgogICAgSURfVklFV19SRUZSRVNIICAgICAgICAgIk9wZGF0ZXJlciB2aW5kdWV0IgogICAgSURfRURJVF9ERUxFVEUgICAgICAgICAgIlNsZXR0ZXIgdXR2YWxnZXQiCiAgICBJRF9FRElUX1JFTkFNRSAgICAgICAgICAiT21k+GJlciBuYXZuIHRpbCB1dHZhbGdldCIKICAgIElEX0VESVRfQ09QWUtFWU5BTUUgICAgICJLb3BpZXJlciBuYXZuZXQgdGlsIGRlbiB2YWxndGUgbvhnbGUgdGlsIHV0a2xpcHBzdGF2bGVuIgogICAgSURfRURJVF9GSU5EICAgICAgICAgICAgIkZpbmRlciBlbiB0ZWtzdHN0cmVuZyBpIGVuIG74Z2xlLCB25nJkaSBlbGxlciBkYXRhIgogICAgSURfRURJVF9GSU5ETkVYVCAgICAgICAgIkZvcnPmdHRlciBz+GduaW5nZW4iCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19FUlJPUgkJICAgICJGZWpsIgogICAgSURTX0JBRF9LRVkJCSAgICAiS3VubmUgaWtrZSB0aWxn5SBu+GdsZWVuICclcyciCiAgICBJRFNfQkFEX1ZBTFVFICAgICAgICAgICAiS3VubmUgaWtrZSB0aWxn5SB25nJkaWVuICclcyciCiAgICBJRFNfVU5TVVBQT1JURURfVFlQRSAgICAiS3VubmUgaWtrZSByZWRpZ2VyZSBu+GdsZXIgYWYgdHlwZW4gJyV1JyIKICAgIElEU19UT09fQklHX1ZBTFVFICAgICAgICJW5nJkaWVuIGVyIGZvciBzdG9yICgldSkiCiAgICBJRFNfREVMRVRFX0JPWF9USVRMRSAgICAiQmVrcuZmdCBzbGV0bmluZyBhZiB25nJkaSIKICAgIElEU19ERUxFVEVfQk9YX1RFWFQgICAgICJFciBkdSBzaWtrZXIgcOUgYXQgdmlsbGUgc2xldHRlIHbmcmRpZW4gJyVzJz8iCiAgICBJRFNfREVMRVRFX0JPWF9URVhUX01VTFRJUExFICJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoZXNlIHZhbHVlcz8iCiAgICBJRFNfTkVXS0VZICAgICAgICAgICAgICAiTnkgbvhnbGUgIyVkIgogICAgSURTX05FV1ZBTFVFICAgICAgICAgICAgIk55IHbmcmRpICMlZCIKICAgIElEU19OT1RGT1VORCAgICAgICAgICAgICJGYW5kdCBpa2tlIHP4Z2VzdHJlbmdlbiCrJXO7IgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCklEU19GSUxFRElBTE9HX0lNUE9SVF9USVRMRSAgICJJbXBvcnRlciByZWdpc3RlcmluZ3NkYXRhYmFzZWZpbCIKSURTX0ZJTEVESUFMT0dfRVhQT1JUX1RJVExFICAgIkVrc3BvcnRlciByZWdpc3RlcmluZ3NkYXRhYmFzZWZpbCIKSURTX0ZJTEVESUFMT0dfRklMVEVSICAgICAgICAgIlJlZ2lzdGVyaW5nc2RhdGFiYXNlZmlsZXJcMCoucmVnXDBXaW45eC0vTlQ0LXJlZ2lzdGVyZmlsZXIgKFJFR0VESVQ0KVwwKi5yZWdcMEFsbGUgZmlsZXIgKCouKilcMCouKlwwXDAiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KSURTX1JFR0lTVFJZX1JPT1RfTkFNRSAgICAgICAgICAgIk1pbiBjb21wdXRlciIKSURTX1JFR0lTVFJZX0RFRkFVTFRfVkFMVUUgICAgICAgIihTdGFuZGFyZCkiCklEU19SRUdJU1RSWV9WQUxVRV9OT1RfU0VUICAgICAgICIoduZyZGkgaWtrZSBzYXQpIgpJRFNfUkVHSVNUUllfVkFMVUVfQ0FOVF9ESVNQTEFZICAiKGt1bm5lIGlra2UgdmlzZSB25nJkaSkiCklEU19SRUdJU1RSWV9VTktOT1dOX1RZUEUgICAgICAgICIodWtlbmR0ICVkKSIKRU5ECgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovKgogKiBURVhUSU5DTFVERQogKi8KCjEgVEVYVElOQ0xVREUgRElTQ0FSREFCTEUKQkVHSU4KICAgICJyZXNvdXJjZS5oXDAiCkVORAoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwo=