LyoKICogV2luZUZpbGUKICogUG9ydHVndWVzZSBMYW5ndWFnZSBTdXBwb3J0CiAqCiAqIENvcHlyaWdodCAyMDAzIE1hcmNlbG8gRHVhcnRlCiAqIENvcHlyaWdodCAyMDA0IEFt6XJpY28gSm9z6SBNZWxvCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCgovKiBNZW51ICovCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRV9CUkFaSUxJQU4KCklETV9XSU5FRklMRSBNRU5VIEZJWEVEIElNUFVSRQp7CiAgICBQT1BVUCAiJkFycXVpdm8iICB7CiAgICAgICAgTUVOVUlURU0gIkEmYnJpclx0RW50ZXIiLCAgICAgICAgICAgICAgIElEX0FDVElWQVRFCiAgICAgICAgTUVOVUlURU0gIiZNb3Zlci4uLlx0RjciLCAgICAgICAgICAgICAgIElEX0ZJTEVfTU9WRQogICAgICAgIE1FTlVJVEVNICImQ29waWFyLi4uXHRGOCIsICAgICAgICAgICAgICBJRF9GSUxFX0NPUFkKICAgICAgICBNRU5VSVRFTSAiJkluIENsaXBib2FyZC4uLlx0RjkiLCAgICAgICAgMTE4CiAgICAgICAgTUVOVUlURU0gIkUmeGNsdWlyXHREZWwiLCAgICAgICAgICAgICAgIElEX0ZJTEVfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIlJlJm5vbWVhci4uLiIsICAgICAgICAgICAgICAgIDEwOQogICAgICAgIE1FTlVJVEVNICImUHJvcHJpZWRhZGVzLi4uXHRBbHQrRW50ZXIiLCBJRF9FRElUX1BST1BFUlRJRVMKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiQyZvbXByaW1pci4uLiIsICAgICAgICAgICAgICAgMTE5CiAgICAgICAgTUVOVUlURU0gIkRlc2NvbXByaW1pci4uLiIsICAgICAgICAgICAgIDEyMAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJFeGVjdSZ0YXIuLi4iLCAgICAgICAgICAgICAgICBJRF9FWEVDVVRFCiAgICAgICAgTUVOVUlURU0gIiZJbXByaW1pci4uLiIsICAgICAgICAgICAgICAgIDEwMgogICAgICAgIE1FTlVJVEVNICJBJnNzb2NpYXIuLi4iLCAgICAgICAgICAgICAgICAxMDMKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiQ3JpJmFyIHBhc3RhLi4uIiwgICAgICAgICAgICAgMTExCiAgICAgICAgTUVOVUlURU0gIlAmZXNxdWlzYXIuLi4iLCAgICAgICAgICAgICAgIDEwNAogICAgICAgIE1FTlVJVEVNICJTZWxlY2lvbmFyIGFycXVpJnZvcy4uLiIsICAgICAxMTYKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKI2lmbmRlZiBfTk9fRVhURU5TSU9OUwogICAgICAgIE1FTlVJVEVNICJTYWkmclx0QWx0K1giLCAgICAgICAgICAgICAgICBJRF9GSUxFX0VYSVQKI2Vsc2UKICAgICAgICBNRU5VSVRFTSAiU2FpJnIiLCAgICAgICAgICAgICAgICAgICAgICAgSURfRklMRV9FWElUCiNlbmRpZgogICAgfQoKICAgIFBPUFVQICImRGlzY28iICB7CiAgICAgICAgTUVOVUlURU0gIiZDb3BpYXIgZGlzY28uLi4iLCAgICAgICAgICAgIDIwMQogICAgICAgIE1FTlVJVEVNICImTm9tZWFyIGRpc2NvLi4uIiwgICAgICAgICAgICAyMDIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkZvcm1hdGFyIGRpc2NvLi4uIiwgICAgICAgICAgSURfRk9STUFUX0RJU0sKI2lmZGVmIF9XSU45NQogICAgICAgIE1FTlVJVEVNICImR2VyYXIgZGlzY28gZGUgc2lzdGVtYS4uLiIsIC0xICAgLypUT0RPKi8KI2VuZGlmCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkNvbmVjdGEmciB1bmlkYWRlIGRlIHJlZGUiLCAgIElEX0NPTk5FQ1RfTkVUV09SS19EUklWRQogICAgICAgIE1FTlVJVEVNICImRGVzY29uZWN0YXIgdW5pZGFkZSBkZSByZWRlIixJRF9ESVNDT05ORUNUX05FVFdPUktfRFJJVkUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiQyZvbXBhcnRpbGhhciBjb21vLi4uIiwgICAgICAgMjU0CiAgICAgICAgTUVOVUlURU0gIiZSZW1vdmVyIGNvbXBhcnRpbGhhbWVudG8uLi4iLDI1NQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJTZWxlY2lvbmFyICZ1bmlkYWRlLi4uIiwgICAgICAyNTEKICAgIH0KCiAgICBQT1BVUCAiwSZydm9yZSIgIHsKICAgICAgICBNRU5VSVRFTSAiJlBy83hpbW8gbu12ZWxcdCsiLCAgICAgICAgICAgMzAxCiAgICAgICAgTUVOVUlURU0gIkV4cGFuZGkmciBwYXN0YVx0KiIsICAgICAgICAgIDMwMgogICAgICAgIE1FTlVJVEVNICJFeHBhbmRpciAmdHVkb1x0U3RyZysqIiwgICAgICAzMDMKICAgICAgICBNRU5VSVRFTSAiUmVjb2xoZXIgcCZhc3RhXHQtIiwgICAgICAgICAgMzA0CiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZJbmRpY2FyIHN1Ym7tdmVpcyIsICAgICAgICAgIDUwNQogICAgfQoKICAgIFBPUFVQICImRXhpYmlyIiAgewogICAgICAgIE1FTlVJVEVNICLBJnJ2b3JlIGUgcGFzdGEiLCAgICAgICAgICAgICA0MTMKICAgICAgICBNRU5VSVRFTSAiUyZvbWVudGUg4XJ2b3JlIiwgICAgICAgICAgICAgNDExCiAgICAgICAgTUVOVUlURU0gIlNvJm1lbnRlIHBhc3RhIiwgICAgICAgICAgICAgIDQxMgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRGl2aWRpciIsICAgICAgICAgICAgICAgICAgICBJRF9WSUVXX1NQTElUCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZOb21lIiwgICAgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfTkFNRQogICAgICAgIE1FTlVJVEVNICImVG9kb3Mgb3MgZGVsYWxoZXMiLCAgICAgICAgICBJRF9WSUVXX0FMTF9BVFRSSUJVVEVTLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIkQmZXRhbGhlcyBwYXJjaWFpcy4uLiIsICAgICAgIElEX1ZJRVdfU0VMRUNURURfQVRUUklCVVRFUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQ2xhc3NpZmljYXIgcG9yIG5vbWUiLCAgICAgICBJRF9WSUVXX1NPUlRfTkFNRQogICAgICAgIE1FTlVJVEVNICJDJmxhc3NpZmljYXIgcG9yIHRpcG8iLCAgICAgICBJRF9WSUVXX1NPUlRfVFlQRQogICAgICAgIE1FTlVJVEVNICJDbCZhc3NpZmljYXIgcG9yIHRhbWFuaG8iLCAgICBJRF9WSUVXX1NPUlRfU0laRQogICAgICAgIE1FTlVJVEVNICJDbGEmc3NpZmljYXIgcG9yICZkYXRhIiwgICAgICBJRF9WSUVXX1NPUlRfREFURQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJDbGFzc2lmaWNhciAmcG9yLi4uIiwgICAgICAgICBJRF9WSUVXX0ZJTFRFUgogICAgfQoKICAgIFBPUFVQICImT3Dn9WVzIiAgewogICAgICAgIE1FTlVJVEVNICImQ29uZmlybWHn428uLi4iLCAgICAgICAgICAgICA1MDEKICAgICAgICBNRU5VSVRFTSAiJkZvbnRlLi4uIiwgICAgICAgICAgICAgICAgICAgSURfU0VMRUNUX0ZPTlQKICAgICAgICBNRU5VSVRFTSAiJlBlcnNvbmFsaXphciBiYXJyYSBkZSBmZXJyYW1lbnRhcy4uLiIsIDUxMgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJCYXJyYSBkJmUgZmVycmFtZW50YXMiLCAgICAgICBJRF9WSUVXX1RPT0xfQkFSLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIiZCYXJyYSBkZSB1bmlkYWRlcyIsICAgICAgICAgIElEX1ZJRVdfRFJJVkVfQkFSLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIkImYXJyYSBkZSAmc3RhdHVzIiwgICAgICAgICAgIElEX1ZJRVdfU1RBVFVTQkFSLCBDSEVDS0VECiNpZm5kZWYgX05PX0VYVEVOU0lPTlMKICAgICAgICBNRU5VSVRFTSAiVGVsYSBDaGVpYVx0Q3RybCtTaGlmdCtTIiwgICAgSURfVklFV19GVUxMU0NSRUVOCiNlbmRpZgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImTWluaW1pemFyIGR1cmFudGUgbyB1c28iLCAgICA1MDQKICAgICAgICBNRU5VSVRFTSAiJlNhbHZhciBjb25maWd1cmHn9WVzIGFvIHNhaXIiLDUxMQogICAgfQoKCiAgICBQT1BVUCAiJlNlZ3VyYW7nYSIgIHsKICAgICAgICBNRU5VSVRFTSAiJkFjZXNzby4uLiIsICAgICAgICAgICAgICAgICAgNjA1CiAgICAgICAgTUVOVUlURU0gIiZMb2dnaW5nLi4uIiwgICAgICAgICAgICAgICAgIDYwNgogICAgICAgIE1FTlVJVEVNICImT3duZXIuLi4iLCAgICAgICAgICAgICAgICAgICA2MDcKICAgIH0KCiAgICBQT1BVUCAiJkphbmVsYSIgIHsKICAgICAgICBNRU5VSVRFTSAiJk5vdmEgamFuZWxhIiwgICAgICAgICAgICAgICAgSURfV0lORE9XX05FVwogICAgICAgIE1FTlVJVEVNICImRW0gY2FzY2F0YVx0Q3RybCtGNSIsICAgICAgICBJRF9XSU5ET1dfQ0FTQ0FERQogICAgICAgIE1FTlVJVEVNICJMYWRvIGEgbGFkbyAmaG9yaXpvbnRhbG1lbnRlIixJRF9XSU5ET1dfVElMRV9IT1JaCiAgICAgICAgTUVOVUlURU0gIkxhZG8gYSBsYWRvICZ2ZXJ0aWNhbG1lbnRlXHRDdHJsK0Y0IixJRF9XSU5ET1dfVElMRV9WRVJUCiNpZm5kZWYgX05PX0VYVEVOU0lPTlMKICAgICAgICBNRU5VSVRFTSAiT3JnYW5pemFyIGF1dG9tYXRpY2FtZW50ZSIsICAgSURfV0lORE9XX0FVVE9TT1JUCiNlbmRpZgogICAgICAgIE1FTlVJVEVNICImT3JnYW5pemFyIO1jb25lcyIsICAgICAgICAgICBJRF9XSU5ET1dfQVJSQU5HRQogICAgICAgIE1FTlVJVEVNICImQXR1YWxpemFyXHRGNSIsICAgICAgICAgICAgICBJRF9SRUZSRVNICiAgICB9CgogICAgUE9QVVAgIkFqJnVkYSIgIHsKICAgICAgICBNRU5VSVRFTSAiJlTzcGljb3MgZGEgYWp1ZGFcdEYxIiwgICAgICAgSURfSEVMUAogICAgICAgIE1FTlVJVEVNICJQZXNxdWlzYXIuLi4iLCAgICAgICAgICAgICAgICBJRF9IRUxQCiAgICAgICAgTUVOVUlURU0gIiZVc2FuZG8gYSBhanVkYSIsICAgICAgICAgICAgIElEX0hFTFBfVVNJTkcKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlNvYnJlIG8gV2luZWZpbGUuLi4iLCAgICAgICAgSURfQUJPVVQKI2lmZGVmIF9fV0lORV9fCiAgICAgICAgTUVOVUlURU0gIlNvYnJlIG8gJldpbmUuLi4iLCAgICAgICAgICAgIElEX0FCT1VUX1dJTkUKI2VuZGlmCiAgICB9Cn0KCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFCgpJRE1fV0lORUZJTEUgTUVOVSBGSVhFRCBJTVBVUkUKewogICAgUE9QVVAgIiZGaWNoZWlybyIgIHsKICAgICAgICBNRU5VSVRFTSAiQSZicmlyXHRFbnRlciIsICAgICAgICAgICAgICAgSURfQUNUSVZBVEUKICAgICAgICBNRU5VSVRFTSAiJk1vdmVyLi4uXHRGNyIsICAgICAgICAgICAgICAgSURfRklMRV9NT1ZFCiAgICAgICAgTUVOVUlURU0gIiZDb3BpYXIuLi5cdEY4IiwgICAgICAgICAgICAgIElEX0ZJTEVfQ09QWQogICAgICAgIE1FTlVJVEVNICImTmEgQXJlYSBkZSBUcmFuc2ZlcupuY2lhLi4uXHRGOSIsICAgICAgICAxMTgKICAgICAgICBNRU5VSVRFTSAiRSZ4Y2x1aXJcdERlbCIsICAgICAgICAgICAgICAgSURfRklMRV9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiUmUmbm9tZWFyLi4uIiwgICAgICAgICAgICAgICAgMTA5CiAgICAgICAgTUVOVUlURU0gIiZQcm9wcmllZGFkZXMuLi5cdEFsdCtFbnRlciIsIElEX0VESVRfUFJPUEVSVElFUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJDJm9tcHJpbWlyLi4uIiwgICAgICAgICAgICAgICAxMTkKICAgICAgICBNRU5VSVRFTSAiJkRlc2NvbXByaW1pci4uLiIsICAgICAgICAgICAgMTIwCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkV4ZWN1JnRhci4uLiIsICAgICAgICAgICAgICAgIElEX0VYRUNVVEUKICAgICAgICBNRU5VSVRFTSAiJkltcHJpbWlyLi4uIiwgICAgICAgICAgICAgICAgMTAyCiAgICAgICAgTUVOVUlURU0gIkEmc3NvY2lhci4uLiIsICAgICAgICAgICAgICAgIDEwMwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJDcmkmYXIgcGFzdGEuLi4iLCAgICAgICAgICAgICAxMTEKICAgICAgICBNRU5VSVRFTSAiUCZlc3F1aXNhci4uLiIsICAgICAgICAgICAgICAgMTA0CiAgICAgICAgTUVOVUlURU0gIlNlbGVjY2lvbmFyIGZpY2hlaSZyb3MuLi4iLCAgICAxMTYKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKI2lmbmRlZiBfTk9fRVhURU5TSU9OUwogICAgICAgIE1FTlVJVEVNICJTYWkmclx0QWx0K1giLCAgICAgICAgICAgICAgICBJRF9GSUxFX0VYSVQKI2Vsc2UKICAgICAgICBNRU5VSVRFTSAiU2FpJnIiLCAgICAgICAgICAgICAgICAgICAgICAgSURfRklMRV9FWElUCiNlbmRpZgogICAgfQoKICAgIFBPUFVQICImRGlzY28iICB7CiAgICAgICAgTUVOVUlURU0gIiZDb3BpYXIgZGlzY28uLi4iLCAgICAgICAgICAgIDIwMQogICAgICAgIE1FTlVJVEVNICImTm9tZWFyIGRpc2NvLi4uIiwgICAgICAgICAgICAyMDIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkZvcm1hdGFyIGRpc2NvLi4uIiwgICAgICAgICAgSURfRk9STUFUX0RJU0sKI2lmZGVmIF9XSU45NQogICAgICAgIE1FTlVJVEVNICImR2VyYXIgZGlzY28gZGUgc2lzdGVtYS4uLiIsIC0xICAgLypUT0RPKi8KI2VuZGlmCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkNvbmVjdGEmciB1bmlkYWRlIGRlIHJlZGUiLCAgIElEX0NPTk5FQ1RfTkVUV09SS19EUklWRQogICAgICAgIE1FTlVJVEVNICImRGVzY29uZWN0YXIgdW5pZGFkZSBkZSByZWRlIixJRF9ESVNDT05ORUNUX05FVFdPUktfRFJJVkUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlBhcnRpbGhhciBjb21vLi4uIiwgICAgICAgICAgMjU0CiAgICAgICAgTUVOVUlURU0gIiZSZW1vdmVyIHBhcnRpbGhhLi4uIiwgICAgICAgIDI1NQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJTZWxlY2Npb25hciAmdW5pZGFkZS4uLiIsICAgICAyNTEKICAgIH0KCiAgICBQT1BVUCAiwSZydm9yZSIgIHsKICAgICAgICBNRU5VSVRFTSAiJlBy83hpbW8gbu12ZWxcdCsiLCAgICAgICAgICAgMzAxCiAgICAgICAgTUVOVUlURU0gIkV4cGFuZGkmciBwYXN0YVx0KiIsICAgICAgICAgIDMwMgogICAgICAgIE1FTlVJVEVNICJFeHBhbmRpciAmdHVkb1x0U3RyZysqIiwgICAgICAzMDMKICAgICAgICBNRU5VSVRFTSAiUmVjb2xoZXIgcCZhc3RhXHQtIiwgICAgICAgICAgMzA0CiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZJbmRpY2FyIHN1Ym7tdmVpcyIsICAgICAgICAgIDUwNQogICAgfQoKICAgIFBPUFVQICImRXhpYmlyIiAgewogICAgICAgIE1FTlVJVEVNICLBJnJ2b3JlIGUgcGFzdGEiLCAgICAgICAgICAgICA0MTMKICAgICAgICBNRU5VSVRFTSAiQSZwZW5hcyDhcnZvcmUiLCAgICAgICAgICAgICA0MTEKICAgICAgICBNRU5VSVRFTSAiQXAmZW5hcyBwYXN0YSIsICAgICAgICAgICAgICA0MTIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkRpdmlkaXIiLCAgICAgICAgICAgICAgICAgICAgSURfVklFV19TUExJVAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImTm9tZSIsICAgICAgICAgICAgICAgICAgICAgICBJRF9WSUVXX05BTUUKICAgICAgICBNRU5VSVRFTSAiJlRvZG9zIG9zIGRlbGFsaGVzIiwgICAgICAgICAgSURfVklFV19BTExfQVRUUklCVVRFUywgQ0hFQ0tFRAogICAgICAgIE1FTlVJVEVNICJEJmV0YWxoZXMgcGFyY2lhaXMuLi4iLCAgICAgICBJRF9WSUVXX1NFTEVDVEVEX0FUVFJJQlVURVMKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkNsYXNzaWZpY2FyIHBvciBub21lIiwgICAgICAgSURfVklFV19TT1JUX05BTUUKICAgICAgICBNRU5VSVRFTSAiQyZsYXNzaWZpY2FyIHBvciB0aXBvIiwgICAgICAgSURfVklFV19TT1JUX1RZUEUKICAgICAgICBNRU5VSVRFTSAiQ2wmYXNzaWZpY2FyIHBvciB0YW1hbmhvIiwgICAgSURfVklFV19TT1JUX1NJWkUKICAgICAgICBNRU5VSVRFTSAiQ2xhJnNzaWZpY2FyIHBvciAmZGF0YSIsICAgICAgSURfVklFV19TT1JUX0RBVEUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiQ2xhc3NpZmljYXIgJnBvci4uLiIsICAgICAgICAgSURfVklFV19GSUxURVIKICAgIH0KCiAgICBQT1BVUCAiJk9w5/VlcyIgIHsKICAgICAgICBNRU5VSVRFTSAiJkNvbmZpcm1h5+NvLi4uIiwgICAgICAgICAgICAgNTAxCiAgICAgICAgTUVOVUlURU0gIiZUaXBvIGRlIExldHJhLi4uIiwgICAgICAgICAgICAgICAgICAgSURfU0VMRUNUX0ZPTlQKICAgICAgICBNRU5VSVRFTSAiJlBlcnNvbmFsaXphciBiYXJyYSBkZSBmZXJyYW1lbnRhcy4uLiIsIDUxMgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJCYXJyYSBkJmUgZmVycmFtZW50YXMiLCAgICAgICBJRF9WSUVXX1RPT0xfQkFSLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIiZCYXJyYSBkZSB1bmlkYWRlcyIsICAgICAgICAgIElEX1ZJRVdfRFJJVkVfQkFSLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIkImYXJyYSBkZSBlJnN0YWRvIiwgICAgICAgICAgIElEX1ZJRVdfU1RBVFVTQkFSLCBDSEVDS0VECiNpZm5kZWYgX05PX0VYVEVOU0lPTlMKICAgICAgICBNRU5VSVRFTSAiRWNy4yBDb21wbGV0b1x0Q3RybCtTaGlmdCtTIiwgICAgSURfVklFV19GVUxMU0NSRUVOCiNlbmRpZgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImTWluaW1pemFyIGR1cmFudGUgbyB1c28iLCAgICA1MDQKICAgICAgICBNRU5VSVRFTSAiJkdyYXZhciBjb25maWd1cmHn9WVzIGFvIHNhaXIiLDUxMQogICAgfQoKCiAgICBQT1BVUCAiJlNlZ3VyYW7nYSIgIHsKICAgICAgICBNRU5VSVRFTSAiJkFjZXNzby4uLiIsICAgICAgICAgICAgICAgICAgNjA1CiAgICAgICAgTUVOVUlURU0gIiZBdXRlbnRpY2Hn428uLi4iLCAgICAgICAgICAgICAgICAgNjA2CiAgICAgICAgTUVOVUlURU0gIiZEb25vLi4uIiwgICAgICAgICAgICAgICAgICAgIDYwNwogICAgfQoKICAgIFBPUFVQICImSmFuZWxhIiAgewogICAgICAgIE1FTlVJVEVNICImTm92YSBqYW5lbGEiLCAgICAgICAgICAgICAgICBJRF9XSU5ET1dfTkVXCiAgICAgICAgTUVOVUlURU0gIiZFbSBjYXNjYXRhXHRDdHJsK0Y1IiwgICAgICAgIElEX1dJTkRPV19DQVNDQURFCiAgICAgICAgTUVOVUlURU0gIkxhZG8gYSBsYWRvICZob3Jpem9udGFsbWVudGUiLElEX1dJTkRPV19USUxFX0hPUloKICAgICAgICBNRU5VSVRFTSAiTGFkbyBhIGxhZG8gJnZlcnRpY2FsbWVudGVcdEN0cmwrRjQiLElEX1dJTkRPV19USUxFX1ZFUlQKI2lmbmRlZiBfTk9fRVhURU5TSU9OUwogICAgICAgIE1FTlVJVEVNICJPcmdhbml6YXIgYXV0b21hdGljYW1lbnRlIiwgICBJRF9XSU5ET1dfQVVUT1NPUlQKI2VuZGlmCiAgICAgICAgTUVOVUlURU0gIiZPcmdhbml6YXIg7WNvbmVzIiwgICAgICAgICAgIElEX1dJTkRPV19BUlJBTkdFCiAgICAgICAgTUVOVUlURU0gIiZBY3R1YWxpemFyXHRGNSIsICAgICAgICAgICAgIElEX1JFRlJFU0gKICAgIH0KCiAgICBQT1BVUCAiQWomdWRhIiAgewogICAgICAgIE1FTlVJVEVNICImVPNwaWNvcyBkYSBhanVkYVx0RjEiLCAgICAgICBJRF9IRUxQCiAgICAgICAgTUVOVUlURU0gIlBlc3F1aXNhci4uLiIsICAgICAgICAgICAgICAgIElEX0hFTFAKICAgICAgICBNRU5VSVRFTSAiJlVzYXIgYSBhanVkYSIsICAgICAgICAgICAgIElEX0hFTFBfVVNJTkcKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKI2lmZGVmIF9fV0lORV9fCiAgICAgICAgTUVOVUlURU0gIkFjZXJjYSBkbyAmV2luZS4uLiIsICAgICAgICAgIElEX0FCT1VUX1dJTkUKI2VuZGlmCiAgICB9Cn0KCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfTkVVVFJBTAoKSUREX0VYRUNVVEUgRElBTE9HIEZJWEVEIElNUFVSRSAxNSwgMTMsIDIxMCwgNjMKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRXhlY3V0YXIiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKewogICAgQ09OVFJPTCAgICAgICAgICIiLCAxMDEsICJTdGF0aWMiLCBTU19TSU1QTEV8U1NfTk9QUkVGSVgsIDMsIDYsIDE2MiwgMTAKICAgIENPTlRST0wgICAgICAgICAiJkNvbWFuZG86IiwgLTEsICJTdGF0aWMiLCBTU19MRUZUTk9XT1JEV1JBUHxXU19HUk9VUCwgMywgMTgsIDYwLCAxMAogICAgRURJVFRFWFQgICAgICAgIDIwMSwgMywgMjksIDEzNCwgMTIsIEVTX0FVVE9IU0NST0xMCiAgICBDT05UUk9MICAgICAgICAgIiZNaW5pbWl6YWRvIiwgMjE0LCAiQnV0dG9uIiwgQlNfQVVUT0NIRUNLQk9YfFdTX1RBQlNUT1AsMywgNDUsIDcxLCAxMgogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsIDEsIDE1OCwgNiwgNDcsIDE0CiAgICBQVVNIQlVUVE9OICAgICAgIkNhbmNlbGFyIiwgMiwgMTU4LCAyMywgNDcsIDE0CiAgICBQVVNIQlVUVE9OICAgICAgIiZBanVkYSIsIDI1NCwgMTU4LCA0MywgNDcsIDE0Cn0KCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRV9CUkFaSUxJQU4KCklERF9TRUxFQ1RfREVTVElOQVRJT04gRElBTE9HIEZJWEVEIElNUFVSRSAxNSwgMTMsIDIxMCwgNjMKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiU2VsZWNpb25hciBkZXN0aW5vIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCnsKICAgIENPTlRST0wgICAgICAgICAiIiwgMTAxLCAiU3RhdGljIiwgU1NfU0lNUExFfFNTX05PUFJFRklYLCAzLCA2LCAxNjIsIDEwCiAgICBDT05UUk9MICAgICAgICAgIiZDYW1pbmhvOiIsIC0xLCAiU3RhdGljIiwgU1NfTEVGVE5PV09SRFdSQVB8V1NfR1JPVVAsIDMsIDE4LCA2MCwgMTAKICAgIEVESVRURVhUICAgICAgICAyMDEsIDMsIDI5LCAxMzQsIDEyLCBFU19BVVRPSFNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsIDEsIDE1OCwgNiwgNDcsIDE0CiAgICBQVVNIQlVUVE9OICAgICAgIkNhbmNlbGFyIiwgMiwgMTU4LCAyMywgNDcsIDE0CiAgICBQVVNIQlVUVE9OICAgICAgIiZQcm9jdXJhciIsIDI1NCwgMTU4LCA0MywgNDcsIDE0Cn0KCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFCgpJRERfU0VMRUNUX0RFU1RJTkFUSU9OIERJQUxPRyBGSVhFRCBJTVBVUkUgMTUsIDEzLCAyMTAsIDYzClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlNlbGVjaW9uYXIgZGVzdGlubyIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CiAgICBDT05UUk9MICAgICAgICAgIiIsIDEwMSwgIlN0YXRpYyIsIFNTX1NJTVBMRXxTU19OT1BSRUZJWCwgMywgNiwgMTYyLCAxMAogICAgQ09OVFJPTCAgICAgICAgICImTG9jYWxpemHn4286IiwgLTEsICJTdGF0aWMiLCBTU19MRUZUTk9XT1JEV1JBUHxXU19HUk9VUCwgMywgMTgsIDYwLCAxMAogICAgRURJVFRFWFQgICAgICAgIDIwMSwgMywgMjksIDEzNCwgMTIsIEVTX0FVVE9IU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIiwgMSwgMTU4LCA2LCA0NywgMTQKICAgIFBVU0hCVVRUT04gICAgICAiQ2FuY2VsYXIiLCAyLCAxNTgsIDIzLCA0NywgMTQKICAgIFBVU0hCVVRUT04gICAgICAiJlByb2N1cmFyIiwgMjU0LCAxNTgsIDQzLCA0NywgMTQKfQoKCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFX0JSQVpJTElBTgoKU1RSSU5HVEFCTEUKewogICAgSURTX0ZPTlRfU0VMX0RMR19OQU1FICAgIkFwbGljYW5kbyBjb25maWd1cmHn9WVzIGRlIGZvbnRlIgogICAgSURTX0ZPTlRfU0VMX0VSUk9SICAgICAgIkVycm8gZW5xdWFudG8gc2VsZWNpb25hIG5vdmEgZm9udGUuIgp9CgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRQoKU1RSSU5HVEFCTEUKewogICAgSURTX0ZPTlRfU0VMX0RMR19OQU1FICAgIkEgYXBsaWNhciBjb25maWd1cmHn9WVzIGRvIHRpcG8gZGUgbGV0cmEiCiAgICBJRFNfRk9OVF9TRUxfRVJST1IgICAgICAiRXJybyBhbyBzZWxlY2Npb25hIG5vdm8gdGlwbyBkZSBsZXRyYS4iCn0KCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfTkVVVFJBTAoKU1RSSU5HVEFCTEUKewogSURTX1dJTkVGSUxFICAgICAgICAgICAgICAgIldpbmVmaWxlIgogSURTX0VSUk9SICAgICAgICAgICAgICAgICAgIkVycm8iCiBJRFNfUk9PVF9GUyAgICAgICAgICAgICAgICAicm9vdCBmcyIKIElEU19VTklYRlMgICAgICAgICAgICAgICAgICJ1bml4ZnMiCiBJRFNfREVTS1RPUCAgICAgICAgICAgICAgICAiwXJlYSBkZSB0cmFiYWxobyIKIElEU19TSEVMTCAgICAgICAgICAgICAgICAgICJTaGVsbCIKIElEU19USVRMRUZNVCAgICAgICAgICAgICAgICIlcyAtICVzIgogSURTX05PX0lNUEwgICAgICAgICAgICAgICAgIkFpbmRhIG7jbyBpbXBsZW1lbnRhZG8iCiBJRFNfV0lORSAgICAgICAgICAgICAgICAgICAiV0lORSIKIElEU19XSU5FX0ZJTEUgICAgICAgICAgICAgICJXaW5lIEZpbGUiCn0KCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfTkVVVFJBTAoKU1RSSU5HVEFCTEUKewogSURTX0NPTF9OQU1FICAgICAgICAgICAgICAgIk5vbWUiCiBJRFNfQ09MX1NJWkUgICAgICAgICAgICAgICAiVGFtYW5obyIKIElEU19DT0xfQ0RBVEUgICAgICAgICAgICAgICJDRGF0YSIKIElEU19DT0xfQURBVEUgICAgICAgICAgICAgICJBRGF0YSIKIElEU19DT0xfTURBVEUgICAgICAgICAgICAgICJNRGF0YSIKIElEU19DT0xfSURYICAgICAgICAgICAgICAgICJJbmRleC9Jbm9kZSIKIElEU19DT0xfTElOS1MgICAgICAgICAgICAgICJMaWdh5/VlcyIKIElEU19DT0xfQVRUUiAgICAgICAgICAgICAgICJBdHJpYnV0b3MiCiBJRFNfQ09MX1NFQyAgICAgICAgICAgICAgICAiU2VndXJhbudhIgp9Cg==