LyoKICogV2luZUNmZyByZXNvdXJjZXMKICogTm9yd2VnaWFuIEJva23lbCBMYW5ndWFnZSBTdXBwb3J0CiAqCiAqIENvcHlyaWdodCAyMDA1LTIwMDcgQWxleGFuZGVyIE4uIFP4cm5lcyA8YWxleEB0aGVoYW5kb2ZhZ29ueS5jb20+CiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKgogKi8KCkxBTkdVQUdFIExBTkdfTk9SV0VHSUFOLCBTVUJMQU5HX05PUldFR0lBTl9CT0tNQUwKCklEUl9XSU5FQ0ZHIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICAgIFBPUFVQICIiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICJPcHBzZXR0IiwgSURDX0FVRElPX0NPTkZJR1VSRQogICAgRU5ECkVORAoKSUREX0FCT1VUQ0ZHIERJQUxPR0VYIDAsIDAsIDI2MCwgMjcwClNUWUxFIFdTX0NISUxECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICBQQUNLQUdFX1NUUklORyxJRENfU1RBVElDLDExOSwxNywxMjAsOAogICAgQ09OVFJPTCAgICAgICAgIElEQl9XSU5FLElEQ19TVEFUSUMsIlN0YXRpYyIsU1NfQklUTUFQICwxNSwxNywxNTcsMTExCiAgICBMVEVYVCAgICAgICAgICAgImh0dHA6Ly93d3cud2luZWhxLm9yZy8iLElEQ19TVEFUSUMsMTE5LDMxLDEwNiw4CiAgICBMVEVYVCAgICAgICAgICAgIkRldHRlIGJpYmxpb3Rla2V0IGVyIGZyaSBwcm9ncmFtdmFyZXI7IGRldCBrYW4gcmVkaXN0cmlidWVyZXMgaSBoZW5ob2xkIHRpbCB2aWxr5XJlbmUgaSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdXRnaXR0IGF2IKt0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uuywgZW50ZW4gdmVyc2pvbiAyLjEgYXYgZGVubmUgTGlzZW5zZW4sIGVsbGVyIChodmlzIGR1IPhuc2tlciBkZXQpIGVuIG55ZXJlIHZlcnNqb24uIiwKICAgICAgICAgICAgICAgICAgICBJRENfU1RBVElDLDExOSw0NCwxMjQsNzIKRU5ECgpJRERfQVBQQ0ZHIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIiBQcm9ncmFtbWlubnN0aWxsaW5nZXIgIixJRENfU1RBVElDLCA4LDQsMjQ0LDI0MAogICAgTFRFWFQgICAgICAgICAgICJXaW5lIGthbiBldHRlcmxpZ25lIGZvcnNramVsbGlnZSBXaW5kb3dzLXZlcnNqb25lciBmb3IgaHZlcnQgcHJvZ3JhbS4gRGVubmUgZmFuZW4gZXIga29ibGV0IG1lZCBiaWJsaW90ZWstIG9nIGdyYWZpa2tmYW5lbmUsIHPlbm4gYXQgZHUga2FuIGVuZHJlIGlubnN0aWxsaW5nZXIgZm9yIGhlbGUgc3lzdGVtZXQgZWxsZXIgZW5rZWx0ZSBwcm9ncmFtIGRlciBvZ3PlLiIsCiAgICAgICAgICAgICAgICAgICAgSURDX1NUQVRJQywxNSwyMCwyMjcsMzAKICAgIENPTlRST0wgICAgICAgICAiUHJvZ3JhbW1lciIsSURDX0FQUF9MSVNUVklFVywiU3lzTGlzdFZpZXczMiIsV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IExWU19MSVNUIHwgTFZTX1NJTkdMRVNFTCB8IExWU19TSE9XU0VMQUxXQVlTLAogICAgICAgICAgICAgICAgICAgIDE1LDUwLDIzMCwxNTAKICAgIFBVU0hCVVRUT04JICAgICJMZWdnIHRpbCBwcm9nciZhbSAuIC4gLiIsSURDX0FQUF9BRERBUFAsIDkwLDIwNCw3NSwxNAogICAgUFVTSEJVVFRPTgkgICAgIkZqZSZybiBwcm9ncmFtIixJRENfQVBQX1JFTU9WRUFQUCwgMTcwLDIwNCw3NSwxNAogICAgTFRFWFQgICAgICAgICAgICImV2luZG93cy12ZXJzam9uOiIsSURDX1NUQVRJQywxNywyMjYsNTgsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19XSU5WRVIsODMsMjI0LDE2Myw1NixDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AgICAgCkVORAoKSUREX0dSQVBIQ0ZHIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIiBWaW5kdWlubnN0aWxsaW5nZXIgIixJRENfU1RBVElDLDgsNSwyNDQsMTgwCgogICAgQ09OVFJPTAkgICAgIlRpbGxhdCBEaXJlY3RYLXByb2dyYW1tZXIg5SBoaW5kcmUgbXVzZW4gZnJhIOUgZm9ybGF0ZSB2aW5kdWV0IixJRENfRFhfTU9VU0VfR1JBQiwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDE1LDIzMCw4CiAgICBMVEVYVCAJICAgICJIdmlzIHZpbmR1ZXIga29udHJvbGxlcmVzIGF2IGRpbiBzdGFuZGFyZHZpbmR1c2JlaGFuZGxlciwgZuVyIGRlIHZhbmxpZ2UgcmFtbWVyLCBvZyByZXNwZWt0ZXJlciBkZXQgdmlydHVlbGxlIHNrcml2ZWJvcmRldCBkaXR0IG9nIHZpc2VzIGkgdmluZHVzbGlzdGVuLlxuXG5IdmlzIGRlIGVyIHVrb250cm9sbGVydGUgZXIgZGUga29ibGV0IGZyYSB2aW5kdXNiZWhhbmRsZXJlbi4gRGV0dGUgYmV0eXIgYXQgZGUgaWtrZSBpbnRlZ3JlcmVzIGxpa2UgZ29kdCBtZWQgc2tyaXZlYm9yZGV0IGRpdHQsIG1lbiBlbXVsZXJpbmdlbiBibGlyIG1lciBwcmVzaXMgc+VubiBhdCBub2VuIHByb2dyYW1tZXIgdmlya2VyIGJlZHJlLiIsCgkJICAgIElEQ19TVEFUSUMsMTUsMzgsMjI4LDgwCiAgICBDT05UUk9MCSAgICAiVGlsbGF0IHZpbmR1c2JlaGFuZGxlcmVuIOUga29udHJvbGxlcmUgdmluZHVlbmUiLElEQ19FTkFCTEVfTUFOQUdFRCwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDExMiwyMzAsOAogICAgCiAgICBMVEVYVCAgICAgICAgICAgIkR1IGthbiB2ZWxnZSDlIGVtdWxlcmUgZXQgV2luZG93cy1za3JpdmVib3JkLCBkZXIgYWxsZSB2aW5kdWVuZSBlciBidW5kZXQgaSBlbiB2aXJ0dWVsbCBza2plcm0sIGVsbGVyIGR1IGthbiBm5SB2aW5kdWVuZSB0aWwg5SBvcHBm+HJlIHNlZyBzb20gYW5kcmUgcHJvZ3JhbW1lciBw5SBza3JpdmVib3JkZXQuIiwKICAgICAgICAgICAgICAgICAgICBJRENfU1RBVElDLDE1LDEyNiwyMjgsMjgKICAgIExURVhUICAgICAgICAgICAiU3T4cnJlbHNlOiIsSURDX0RFU0tUT1BfU0laRSwxNSwxNjgsNDQsOCxXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICJYIixJRENfREVTS1RPUF9CWSwxMDgsMTY4LDgsOCxXU19ESVNBQkxFRAogICAgQ09OVFJPTCAgICAgICAgICJWaXMgZXQgdmlydHVlbHQgc2tyaXZlYm9yZCIsSURDX0VOQUJMRV9ERVNLVE9QLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTUsMTUzLDIzMCwxMAoJCSAgICAKICAgIEVESVRURVhUICAgICAgICBJRENfREVTS1RPUF9XSURUSCw2NCwxNjgsNDAsMTIsRVNfQVVUT0hTQ1JPTEwgfCBFU19OVU1CRVIgfCBXU19ESVNBQkxFRAogICAgRURJVFRFWFQgICAgICAgIElEQ19ERVNLVE9QX0hFSUdIVCwxMTcsMTY4LDQwLDEyLEVTX0FVVE9IU0NST0xMIHwgRVNfTlVNQkVSIHwgV1NfRElTQUJMRUQKCiAgICBHUk9VUEJPWCAgICAgICAgIiBEaXJlY3QzRCAiLElEQ19TVEFUSUMsOCwxOTAsMjQ0LDUwCgogICAgTFRFWFQJICAgICJWZXJ0ZWtzLXNreWdnZWxlZ2dpbmc6ICIsSURDX1NUQVRJQywxNSwyMDAsODAsMzAKICAgIENPTUJPQk9YCSAgICBJRENfRDNEX1ZTSEFERVJfTU9ERSwxMDAsMTk4LDE1MCw3MCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKCiAgICBDT05UUk9MICAgICAgICAgIlRpbGxhdCBwaWtzZWwtc2t5Z2dlbGVnZ2VyIChodmlzIG1hc2tpbnZhcmVuIHN0+HR0ZXIgZGV0KSIsSURDX0QzRF9QU0hBREVSX01PREUsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwyMTcsMjMwLDEwCiAgICBHUk9VUEJPWCAgICAgICAgIiBTa2plcm1vcHBs+HNuaW5nIChzdHlyZXIgc2tyaWZ0c3T4cnJlbHNlKSAiLElEQ19TVEFUSUMsOCwyNDIsMjQ0LDI1CiAgICBDT05UUk9MICAgICAgICAgIiIsIElEQ19SRVNfVFJBQ0tCQVIsICJtc2N0bHNfdHJhY2tiYXIzMiIsV1NfVEFCU1RPUCwxMiwyNTAsMTg3LDE1CiAgICBFRElUVEVYVCAgICAgICAgSURDX1JFU19EUElFRElULDIwNCwyNTAsMjMsMTMsRVNfTlVNQkVSfFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiZHBpIixJRENfU1RBVElDLDIzNSwyNTIsMTAsOApFTkQKCklERF9ETExDRkcgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIERMTC1vdmVyc3R5cmluZyAiLElEQ19TVEFUSUMsOCw0LDI0NCwyNDAKICAgIExURVhUICAgICAgICAgICAiRHluYW1pc2sga29ibGVkZSBiaWJsaW90ZWtlciBrYW4gb3BwZ2lzIGluZGl2aWR1ZWx0IHRpbCDlIHbmcmUgZW50ZW4gaW5uZWJ5Z2dldCAoZnJhIFdpbmUpIGVsbGVyIGlubmb4ZHQgKHRhdHQgZnJhIFdpbmRvd3MgZWxsZXIgZ2l0dCBhdiBldCBwcm9ncmFtKS4iCiAgICAgICAgICAgICAgICAgICAgLElEQ19TVEFUSUMsMTYsMTYsMjIwLDMyCiAgICBMVEVYVCAgICAgICAgICAgIk55IG92ZXJzdHlyaW5nIGZvciBiaWJsaW90ZWs6IixJRENfU1RBVElDLDE2LDU4LDEwMCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX0RMTENPTUJPLDE2LDY4LDE0MCwxNCxDQlNfRFJPUERPV04gfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUCB8IENCU19TT1JUIHwgQ0JTX0xPV0VSQ0FTRQogICAgUFVTSEJVVFRPTiAgICAgICImTGVnZyB0aWwiLElEQ19ETExTX0FERERMTCwgMTY0LDY4LDgyLDEzLEJTX0RFRlBVU0hCVVRUT04gCiAgICBMVEVYVCAgICAgICAgICAgIkdqZWxkZW5kZSBvdmVyc3R5cmluZ2VyOiIsSURDX1NUQVRJQywxNiw4NiwxMDAsOAogICAgTElTVEJPWCAgICAgICAgIElEQ19ETExTX0xJU1QsMTYsOTYsMTQwLDE0MCxXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgV1NfVlNDUk9MTAogICAgUFVTSEJVVFRPTiAgICAgICJSJmVkaWdlciIsSURDX0RMTFNfRURJVERMTCwxNjQsOTYsODIsMTQKICAgIFBVU0hCVVRUT04gICAgICAiRmplJnJuIixJRENfRExMU19SRU1PVkVETEwsMTY0LDExNCw4MiwxNCAKRU5ECgpJRERfTE9BRE9SREVSIERJQUxPRyBESVNDQVJEQUJMRSA4MCwgOTAsIDExMCwgOTIKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlJlZGlnZXIgb3ZlcnN0eXJpbmciCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIExhc3RpbmdzcmVra2Vm+GxnZSAiLElEQ19TVEFUSUMsOCw0LDk0LDY2CiAgICBDT05UUk9MICAgICAgICAgIklubmUmYnlnZ2V0IChXaW5lKSIsSURDX1JBRF9CVUlMVElOLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04gfCBXU19HUk9VUCwxNiwxNCw3NSwxMAogICAgQ09OVFJPTCAgICAgICAgICJJJm5uZvhkdCAoV2luZG93cykiLElEQ19SQURfTkFUSVZFLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04sMTYsMjQsNzUsMTAKICAgIENPTlRST0wgICAgICAgICAiJklubmVieWdnZXQgc+UgaW5uZvhkdCIsSURDX1JBRF9CVUlMVElOX05BVElWRSwiQnV0dG9uIiwgQlNfQVVUT1JBRElPQlVUVE9OLDE2LDM0LDc1LDEwCiAgICBDT05UUk9MICAgICAgICAgIklubmZk+CZkdCBz5SBpbm5lYnlnZ2V0IixJRENfUkFEX05BVElWRV9CVUlMVElOLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04sMTYsNDQsNzUsMTAKICAgIENPTlRST0wgICAgICAgICAiJkRlYWt0aXZlciIsSURDX1JBRF9ESVNBQkxFLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04sMTYsNTQsNzUsMTAKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssOCw3NCw0NSwxNCxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICJBdmJyeXQiLElEQ0FOQ0VMLDU3LDc0LDQ1LDE0LFdTX0dST1VQCkVORAoKSUREX0RSSVZFQ0ZHIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIiBTdGFzam9ua2FydGxlZ2dpbmcgIixJRENfU1RBVElDLDgsNCwyNDQsMjQwCiAgICBDT05UUk9MICAgICAgICAgIkxpc3RldmlzbmluZyIsSURDX0xJU1RfRFJJVkVTLCJTeXNMaXN0VmlldzMyIixMVlNfUkVQT1JUIHwgTFZTX0FVVE9BUlJBTkdFIHwgTFZTX0FMSUdOTEVGVCB8CiAgICAgICAgICAgICAgICAgICAgTFZTX1NJTkdMRVNFTCB8IFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AsIDE1LDE4LDIzMiw3NgogICAgUFVTSEJVVFRPTiAgICAgICImTGVnZyB0aWwgLiAuIC4iLElEQ19CVVRUT05fQURELDE1LDk4LDQ1LDE0CiAgICBQVVNIQlVUVE9OICAgICAgIkZqZSZybiIsSURDX0JVVFRPTl9SRU1PVkUsNjMsOTgsMzcsMTQKICAgIFBVU0hCVVRUT04gICAgICAiJkF1dG9tYXRpc2sgLiAuIC4iLElEQ19CVVRUT05fQVVUT0RFVEVDVCwxOTAsOTgsNTYsMTQKCiAgICAvKiBlZGl0aW5nIGRyaXZlIGRldGFpbHMgKi8KICAgIExURVhUICAgICAgICAgICAiJlN0aToiLElEQ19TVEFUSUMsMTUsMTIzLDIwLDkgICAgCiAgICBFRElUVEVYVCAgICAgICAgSURDX0VESVRfUEFUSCw0MSwxMjAsMTYwLDEzLEVTX0FVVE9IU0NST0xMIHwgV1NfVEFCU1RPUAogICAgUFVTSEJVVFRPTiAgICAgICImQmxhIC4gLiAuIixJRENfQlVUVE9OX0JST1dTRV9QQVRILDIwNiwxMjAsNDAsMTMKCiAgICBMVEVYVCAgICAgICAgICAgIiZUeXBlOiIsSURDX1NUQVRJQ19UWVBFLDE1LDEzOCwyMSwxMAogICAgQ09NQk9CT1ggICAgICAgIElEQ19DT01CT19UWVBFLDQxLDEzNSw3Nyw2MCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKCiAgICBMVEVYVCAgICAgICAgICAgIlZvbHVtbmF2biBvZyBzZXJpZW51bW1lciIsSURDX0xBQkVMU0VSSUFMX1NUQVRJQywxNSwxNTUsOTUsMTAKCiAgICBQVVNIQlVUVE9OICAgICAgIkF2YW4mc2VydCB2aXNuaW5nIixJRENfQlVUVE9OX1NIT1dfSElERV9BRFZBTkNFRCwxODYsMTM2LDYwLDEzCiAgICBDT05UUk9MICAgICAgICAgIiZGaW5uIGF1dG9tYXRpc2sgZnJhIGVuaGV0OiIsSURDX1JBRElPX0FVVE9ERVRFQ1QsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT1JBRElPQlVUVE9OLDE1LDE2Niw5MywxMAogICAgRURJVFRFWFQgICAgICAgIElEQ19FRElUX0RFVklDRSwyNywxNzYsMTc0LDEzLEVTX0FVVE9IU0NST0xMCiAgICBQVVNIQlVUVE9OICAgICAgIiZCbGEgLiAuIC4iLElEQ19CVVRUT05fQlJPV1NFX0RFVklDRSwyMDYsMTc2LDQwLDEzCiAgICBDT05UUk9MICAgICAgICAgIk9wcG5ldm4gJm1hbnVlbHQ6IixJRENfUkFESU9fQVNTSUdOLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9SQURJT0JVVFRPTiwxNSwxOTUsNjksMTAKCiAgICBMVEVYVCAgICAgICAgICAgIlZvJmx1bW5hdm46IixJRENfU1RBVElDX0xBQkVMLDMzLDIwOCwyOSwxMgogICAgRURJVFRFWFQgICAgICAgIElEQ19FRElUX0xBQkVMLDYzLDIwNSw3OCwxMyxFU19BVVRPSFNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiUyZlcmllbnVtbWVyOiIsSURDX1NUQVRJQ19TRVJJQUwsMzMsMjI1LDI5LDEyCiAgICBFRElUVEVYVCAgICAgICAgSURDX0VESVRfU0VSSUFMLDYzLDIyMSw3OCwxMyxFU19BVVRPSFNDUk9MTCB8IFdTX1RBQlNUT1AKCiAgICBDT05UUk9MICAgICAgICAgIlZpcyAuLWZpbGVyIixJRENfU0hPV19ET1RfRklMRVMsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCw4LDI2MCwyMzAsOApFTkQKCklERF9BVURJT0NGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgVmFsZyBhdiBkcml2ZXIgIixJRENfU1RBVElDLDgsNCwyNDQsMTk1CiAgICBMVEVYVCAgICAgICAgICAgIlZlbGcgZW4gbHlkZHJpdmVyIHZlZCDlIGtyeXNzZSBhdiBpIGJva3NlbiB2ZWQgc2lkZW4gYXYgZGVuIGR1IHZpbCBicnVrZS4gRGVha3RpdmVyIGx5ZCB2ZWQg5SBpa2tlIHZlbGdlIG5vZW4uIERldCBhbmJlZmFsZXMgaWtrZSDlIHZlbGdlIGZsZXJlIGRyaXZlcmUuIERyaXZlcmVucyBvcHBzZXR0IGthbiBlbmRyZXMgdmVkIOUgaPh5cmVrbGlra2UgcOUgZGVuLiIsSURDX1NUQVRJQywxNSwyMCwyMjcsMzAKICAgIENPTlRST0wgICAgICAgICAiRW5oZXRlciIsSURDX0FVRElPX1RSRUUsIlN5c1RyZWVWaWV3MzIiLFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AsMTUsNTAsMTQwLDE0MAogICAgUFVTSEJVVFRPTiAgICAgICImVGVzdCIsSURDX0FVRElPX1RFU1QsMTcwLDUwLDU5LDE0CiAgICBQVVNIQlVUVE9OCSAgICAiS29udHJvbGxwYW5lbCIsSURDX0FVRElPX0NPTlRST0xfUEFORUwsMTcwLDcwLDU5LDE0CiAgICBHUk9VUEJPWCAgICAgICAgIiBEaXJlY3RTb3VuZCAiLElEQ19TVEFUSUMsOCwyMDUsMjQ0LDYwCiAgICBMVEVYVAkgIk1hc2tpbnZhcmVha3NlbGVyYXNqb246ICIsSURDX1NUQVRJQywxNSwyMTUsOTAsMTAKICAgIENPTUJPQk9YCSAgICBJRENfRFNPVU5EX0hXX0FDQ0VMLDEwMCwyMTMsMTUwLDcwLENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJTdGQuIHNhbXBsaW5nc3JhdGU6IixJRENfU1RBVElDLDE1LDIzMiw3MCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX0RTT1VORF9SQVRFUyw5MCwyMzAsNDIsNzYsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIlN0ZC4gYml0ZXIgcGVyIHBy+HZlOiIsSURDX1NUQVRJQywxMzcsMjMyLDgwLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfRFNPVU5EX0JJVFMsMjIwLDIzMCwzMCw1NixDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIENPTlRST0wgICAgICAgICAiRHJpdmVyZW11bGVyaW5nIixJRENfRFNPVU5EX0RSVl9FTVVMLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTUsMjUwLDIzMCwxMApFTkQKCklERF9ERVNLVE9QX0lOVEVHUkFUSU9OIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIiBVdHNlZW5kZSAiLElEQ19TVEFUSUMsOCw0LDI0NCwxMDYKICAgIExURVhUICAgICAgICAgICAiVGVtYToiLElEQ19TVEFUSUMsMTUsMTYsMTMwLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfVEhFTUVfVEhFTUVDT01CTywxNSwyNCwxMzAsMTQsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBQVVNIQlVUVE9OICAgICAgIkluc3RhbGxlciB0ZW1hIC4gLiAuIixJRENfVEhFTUVfSU5TVEFMTCwxNTIsMjMsOTMsMTQKICAgIExURVhUICAgICAgICAgICAiRmFyZ2U6IixJRENfVEhFTUVfQ09MT1JURVhULDE1LDQwLDExMiw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX1RIRU1FX0NPTE9SQ09NQk8sMTUsNDgsMTEyLDE0LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJTdPhycmVsc2U6IixJRENfVEhFTUVfU0laRVRFWFQsMTM1LDQwLDExMCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX1RIRU1FX1NJWkVDT01CTywxMzUsNDgsMTEwLDE0LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJFbGVtZW50OiIsSURDX1NUQVRJQywxNSw2NCwxMTIsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19TWVNQQVJBTV9DT01CTywxNSw3NCwxMTIsMTIwLENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUCB8IENCU19TT1JUCiAgICBMVEVYVCAgICAgICAgICAgIkZhcmdlOiIsSURDX1NZU1BBUkFNX0NPTE9SX1RFWFQsMTM1LDY0LDI1LDgsV1NfRElTQUJMRUQKICAgIFBVU0hCVVRUT04gICAgICAiIixJRENfU1lTUEFSQU1fQ09MT1IsMTM1LDc0LDI1LDEzLFdTX0RJU0FCTEVEIHwgQlNfT1dORVJEUkFXCiAgICBMVEVYVCAgICAgICAgICAgIlN0+HJyZWxzZToiLElEQ19TWVNQQVJBTV9TSVpFX1RFWFQsMTY2LDY0LDMwLDgsV1NfRElTQUJMRUQKICAgIEVESVRURVhUICAgICAgICBJRENfU1lTUEFSQU1fU0laRSwxNjYsNzQsMjMsMTMsRVNfQVVUT0hTQ1JPTEwgfCBXU19UQUJTVE9QIHwgV1NfRElTQUJMRUQKICAgIENPTlRST0wgICAgICAgICAiIixJRENfU1lTUEFSQU1fU0laRV9VRCxVUERPV05fQ0xBU1MsVURTX1NFVEJVRERZSU5UIHwgV1NfRElTQUJMRUQsMTg3LDc0LDE1LDEzCiAgICBQVVNIQlVUVE9OICAgICAgIlNrcmlmdCIsSURDX1NZU1BBUkFNX0ZPTlQsMjA4LDc0LDM3LDEzLFdTX0RJU0FCTEVECiAgICBHUk9VUEJPWCAgICAgICAgIiBTa2FsbGthdGFsb2cgIixJRENfU1RBVElDLDgsMTE0LDI0NCwxMDAKICAgIENPTlRST0wgICAgICAgICAiTGlzdGV2aXNuaW5nIixJRENfTElTVF9TRlBBVEhTLCJTeXNMaXN0VmlldzMyIixMVlNfUkVQT1JUIHwgTFZTX0FVVE9BUlJBTkdFIHwgTFZTX0FMSUdOTEVGVCB8CiAgICAgICAgICAgICAgICAgICAgIExWU19TSU5HTEVTRUwgfCBXU19CT1JERVIgfCBXU19UQUJTVE9QLCAxNSwxMjYsMjMwLDY0CiAgICBDT05UUk9MICAgICAgICAgIlBlayB0aWw6IixJRENfTElOS19TRlBBVEgsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YfFdTX1RBQlNUT1B8V1NfRElTQUJMRUQsMTUsMTk1LDUwLDEzCiAgICBFRElUVEVYVCAgICAgICAgIElEQ19FRElUX1NGUEFUSCw2NSwxOTUsMTQ1LDEzLEVTX0FVVE9IU0NST0xMfFdTX1RBQlNUT1B8V1NfRElTQUJMRUQKICAgIFBVU0hCVVRUT04gICAgICAiQmxhIixJRENfQlJPV1NFX1NGUEFUSCwyMTUsMTk1LDMwLDEzLFdTX0RJU0FCTEVECkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19XSU5FX1ZFUlNJT04gICAgICAgICJDVlMiCiAgICBJRFNfVEFCX0FQUExJQ0FUSU9OUyAgICAiUHJvZ3JhbW1lciIKICAgIElEU19UQUJfRExMUyAgICAgICAgICAgICJCaWJsaW90ZWtlciIKICAgIElEU19UQUJfRFJJVkVTICAgICAgICAgICJTdGFzam9uZXIiCiAgICBJRFNfQ0hPT1NFX1BBVEggICAgICAgICAiVmVsZyBVbml4LW3lbGthdGFsb2dlbi4iCiAgICBJRFNfSElERV9BRFZBTkNFRCAgICAgICAiRW5rZWwgdmlzbmluZyIKICAgIElEU19TSE9XX0FEVkFOQ0VEICAgICAgICJBdmFuc2VydCB2aXNuaW5nIgogICAgSURTX05PVEhFTUUgICAgICAgICAgICAgIihJbnRldCB0ZW1hKSIKICAgIElEU19UQUJfR1JBUEhJQ1MgICAgICAgICJHcmFmaWtrIgogICAgSURTX1RBQl9ERVNLVE9QX0lOVEVHUkFUSU9OICJTa3JpdmVib3Jkc2ludGVncmVyaW5nIgogICAgSURTX1RBQl9BVURJTyAgICAgICAgICAgIkx5ZCIKICAgIElEU19UQUJfQUJPVVQgICAgICAgICAgICJPbSIKICAgIElEU19XSU5FQ0ZHX1RJVExFICAgICAgICJPcHBzZXR0IGF2IFdpbmUiCiAgICBJRFNfV0lORUNGR19USVRMRV9BUFAgICAiV2luZSBjb25maWd1cmF0aW9uIGZvciAlcyIKICAgIElEU19USEVNRUZJTEUgICAgICAgICAgICJUZW1hZmlsZXIiCiAgICBJRFNfVEhFTUVGSUxFX1NFTEVDVCAgICAiVmVsZyBlbiB0ZW1hZmlsIgogICAgSURTX0FVRElPX01JU1NJTkcgICAgICAgIkluZ2VuIGx5ZGRyaXZlciBlciBvcHBnaXR0IGkgcmVnaXN0ZXJldC5cblxuRW4gYW5iZWZhbHQgZHJpdmVyIGVyIHZhbGd0IGZvciBkZWc7XG5icnVrIGRlbiBlbGxlciB2ZWxnIGVuIGFubmVuLFxuXG5vZyB0cnlrayCrQnJ1a7sgZm9yIGF0IGVuZHJpbmdlbmUgc2thbCB0cmUgaSBrcmFmdC4iCiAgICBJRFNfU0hFTExfRk9MREVSICAgICAgICAiU2thbGxrYXRhbG9nIgogICAgSURTX0xJTktTX1RPICAgICAgICAgICAgIlBla2VyIHRpbCIKRU5ECiAgICAKICAgIFNUUklOR1RBQkxFIERJU0NBUkRBQkxFCiAgICBCRUdJTgogICAgSURTX0RMTF9XQVJOSU5HICAgICAgICAgIkVuZHJpbmcgYXYgbGFzdGluZ3NyZWtrZWb4bGdlbiBmb3IgZGV0dGUgYmlibGlvdGVrZXQgYW5iZWZhbGVzIGlra2UuXG5FciBkdSBzaWtrZXIgcOUgYXQgZHUgdmlsIGdq+HJlIGRldD8iCiAgICBJRFNfRExMX1dBUk5JTkdfQ0FQVElPTiAiQWR2YXJzZWw6IHN5c3RlbWJpYmxpb3RlayIKICAgIElEU19ETExfTkFUSVZFICAgICAgICAgICJpbm5m+GR0IgogICAgSURTX0RMTF9CVUlMVElOICAgICAgICAgImlubmVieWdnZXQiCiAgICBJRFNfRExMX05BVElWRV9CVUlMVElOICAiaW5uZvhkdCwgaW5uZWJ5Z2dldCIKICAgIElEU19ETExfQlVJTFRJTl9OQVRJVkUgICJpbm5lYnlnZ2V0LCBpbm5m+GR0IgogICAgSURTX0RMTF9ESVNBQkxFRCAgICAgICAgInNs5XR0IGF2IgogICAgSURTX0RFRkFVTFRfU0VUVElOR1MgICAgIkdsb2JhbGUgaW5uc3RpbGxpbmdlciIKICAgIElEU19FWEVDVVRBQkxFX0ZJTFRFUiAgICJXaW5lLXByb2dyYW1tZXIgKCouZXhlLCouZXhlLnNvKVwwKi5leGU7Ki5leGUuc29cMCIKICAgIElEU19VU0VfR0xPQkFMX1NFVFRJTkdTICJCcnVrIGdsb2JhbGUgaW5uc3RpbGxpbmdlciIKICAgIElEU19TRUxFQ1RfRVhFQ1VUQUJMRSAgICJWZWxnIGVuIHByb2dyYW1maWwiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19TSEFERVJfTU9ERV9IQVJEV0FSRSAgICAiTWFza2ludmFyZSIKICAgIElEU19TSEFERVJfTU9ERV9OT05FICAgICAgICAiSW5nZW4iCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19EUklWRV9VTktOT1dOICAgICAgICAgICAiQXV0b21hdGlzayIKICAgIElEU19EUklWRV9GSVhFRCAgICAgICAgICAgICAiTG9rYWwgaGFyZGRpc2siCiAgICBJRFNfRFJJVkVfUkVNT1RFICAgICAgICAgICAgIk5ldHR2ZXJrc3Jlc3N1cnMiCiAgICBJRFNfRFJJVkVfUkVNT1ZBQkxFICAgICAgICAgIkRpc2tldHQiCiAgICBJRFNfRFJJVkVfQ0RST00gICAgICAgICAgICAgIkNELVJPTSIKICAgIElEU19EUklWRV9MRVRURVJTX0VYQ0VFREVEICAiRHUga2FuIGlra2UgbGVnZ2UgdGlsIGZsZXJlIHN0YXNqb25lci5cblxuSHZlciBzdGFzam9uIG3lIGhhIGVuIGJva3N0YXYgZnJhIEEgdGlsIFosIHPlIDI2IHN0YXNqb25lciBlciBkZXQgbWVzdGUiCiAgICBJRFNfU1lTVEVNX0RSSVZFX0xBQkVMICAgICAgIlN5c3RlbXN0YXNqb24iCiAgICBJRFNfQ09ORklSTV9ERUxFVEVfQyAgICAgICAgIlZpbCBkdSB2aXJrZWxpZyBmamVybmUgc3Rhc2pvbiBDP1xuXG5EZSBmbGVzdGUgV2luZG93cy1wcm9ncmFtbWVyIGZvcnZlbnRlciBhdCBDIGZpbm5lcywgb2cgbGFnZXIgYnLlayBodmlzIGRlbiBpa2tlIGVyIGRlci4gSHVzayDlIGxhZ2UgZGVuIHDlIG55dHQgaHZpcyBkdSBmb3J0c2V0dGVyLiIKICAgIElEU19DT0xfRFJJVkVMRVRURVIgICAgICAgICAiQm9rc3RhdiIKICAgIElEU19DT0xfRFJJVkVNQVBQSU5HICAgICAgICAiUGVrZXIgdGlsIgogICAgSURTX05PX0RSSVZFX0MgICAgICAgICAgICAgICJEdSBoYXIgaWtrZSBlbiBDLXN0YXNqb24uIERldCBlciBpa2tlIHPlIGJyYS4uXG5cbkh1c2sg5SB0cnlra2Ugq0xlZ2cgdGlsuyBpIHN0YXNqb25zZmFuZW4gZm9yIOUgbGFnZSBlbi5cbiIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0FDQ0VMX0ZVTEwgICAgICAgICAgICAgICJGdWxsIgogICAgSURTX0FDQ0VMX1NUQU5EQVJEICAgICAgICAgICJTdGFuZGFyZCIKICAgIElEU19BQ0NFTF9CQVNJQyAgICAgICAgICAgICAiR3J1bm5sZWdnZW5kZSIKICAgIElEU19BQ0NFTF9FTVVMQVRJT04gICAgICAgICAiRW11bGVyaW5nIgogICAgSURTX0RSSVZFUl9BTFNBICAgICAgICAgICAgICJBTFNBLWRyaXZlciIKICAgIElEU19EUklWRVJfRVNPVU5EICAgICAgICAgICAiRXNvdW5ELWRyaXZlciIKICAgIElEU19EUklWRVJfT1NTICAgICAgICAgICAgICAiT1NTLWRyaXZlciIKICAgIElEU19EUklWRVJfSkFDSyAgICAgICAgICAgICAiSkFDSy1kcml2ZXIiCiAgICBJRFNfRFJJVkVSX05BUyAgICAgICAgICAgICAgIk5BUy1kcml2ZXIiCiAgICBJRFNfRFJJVkVSX0FVRElPSU8gICAgICAgICAgIkF1ZGlvIElPIChTb2xhcmlzKS1kcml2ZXIiCiAgICBJRFNfRFJJVkVSX0NPUkVBVURJTyAgICAgICAgIkNvcmVBdWRpby1kcml2ZXIiCiAgICBJRFNfT1BFTl9EUklWRVJfRVJST1IgICAgICAgIktsYXJ0ZSBpa2tlIOVwbmUgJXMuIgogICAgSURTX1NPVU5ERFJJVkVSUyAgICAgICAgICAgICJMeWRkcml2ZXJlIgogICAgSURTX0RFVklDRVNfV0FWRU9VVCAgICAgICAgICJMeWQgdXQtZW5oZXRlciIKICAgIElEU19ERVZJQ0VTX1dBVkVJTiAgICAgICAgICAiTHlkIGlubi1lbmhldGVyIgogICAgSURTX0RFVklDRVNfTUlESU9VVCAgICAgICAgICJNSURJIHV0LWVuaGV0ZXIiCiAgICBJRFNfREVWSUNFU19NSURJSU4gICAgICAgICAgIk1JREkgaW5uLWVuaGV0ZXIiCiAgICBJRFNfREVWSUNFU19BVVggICAgICAgICAgICAgIkF1eC1lbmhldGVyIgogICAgSURTX0RFVklDRVNfTUlYRVIgICAgICAgICAgICJNaWtzZXJlbmhldGVyIgogICAgSURTX1VOQVZBSUxBQkxFX0RSSVZFUiAgICAgICJGYW50IGRyaXZlciBpIHJlZ2lzdGVyZXQgc29tIGlra2UgZXIgdGlsZ2plbmdlbGlnLlxuXG5GamVybmUgqyVzuyBmcmEgcmVnaXN0ZXJldD8iCiAgICBJRFNfV0FSTklORyAgICAgICAgICAgICAgICAgIkFkdmFyc2VsIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRENfU1lTUEFSQU1TX0JVVFRPTiAgICAgICAgICAgICJLb250cm9sbGVyYmFrZ3J1bm4iCiAgICBJRENfU1lTUEFSQU1TX0JVVFRPTl9URVhUICAgICAgICJLb250cm9sbGVydGVrc3QiCiAgICBJRENfU1lTUEFSQU1TX0RFU0tUT1AgICAgICAgICAgICJTa3JpdmVib3JkIgogICAgSURDX1NZU1BBUkFNU19NRU5VICAgICAgICAgICAgICAiTWVueWJha2dydW5uIgogICAgSURDX1NZU1BBUkFNU19NRU5VX1RFWFQgICAgICAgICAiTWVueXRla3N0IgogICAgSURDX1NZU1BBUkFNU19TQ1JPTExCQVIgICAgICAgICAiUnVsbGVmZWx0IgogICAgSURDX1NZU1BBUkFNU19TRUxFQ1RJT04gICAgICAgICAiQmFrZ3J1bm4gZm9yIG1lcmtpbmciCiAgICBJRENfU1lTUEFSQU1TX1NFTEVDVElPTl9URVhUICAgICJNZXJrZXQgdGVrc3QiCiAgICBJRENfU1lTUEFSQU1TX1RPT0xUSVAgICAgICAgICAgICJCYWtncnVubiBmb3IgdmVya3T4eXRpcHMiCiAgICBJRENfU1lTUEFSQU1TX1RPT0xUSVBfVEVYVCAgICAgICJUZWtzdCBpIHZlcmt0+Hl0aXBzIgogICAgSURDX1NZU1BBUkFNU19XSU5ET1cgICAgICAgICAgICAiVmluZHViYWtncnVubiIKICAgIElEQ19TWVNQQVJBTVNfV0lORE9XX1RFWFQgICAgICAgIlZpbmR1dGVrc3RzIgogICAgSURDX1NZU1BBUkFNU19BQ1RJVkVfVElUTEUgICAgICAiQWt0aXYgdGl0dGVsbGluamUiCiAgICBJRENfU1lTUEFSQU1TX0FDVElWRV9USVRMRV9URVhUICJBa3RpdiB0aXR0ZWx0ZWtzdCIKICAgIElEQ19TWVNQQVJBTVNfSU5BQ1RJVkVfVElUTEUgICAgIkluYWt0aXYgdGl0dGVsbGluamUiCiAgICBJRENfU1lTUEFSQU1TX0lOQUNUSVZFX1RJVExFX1RFWFQgIkluYWt0aXYgdGl0dGVsdGVrc3QiCiAgICBJRENfU1lTUEFSQU1TX01TR0JPWF9URVhUICAgICAgICJNZWxkaW5nc3ZpbmR1dGVrc3QiCkVORAo=