LyoKICogV2luZUZpbGUKICogUG9ydHVndWVzZSBMYW5ndWFnZSBTdXBwb3J0CiAqCiAqIENvcHlyaWdodCAyMDAzIE1hcmNlbG8gRHVhcnRlCiAqIENvcHlyaWdodCAyMDA0IEFt6XJpY28gSm9z6SBNZWxvCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKi8KCgovKiBNZW51ICovCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRV9CUkFaSUxJQU4KCklETV9XSU5FRklMRSBNRU5VIEZJWEVEIElNUFVSRQp7CglQT1BVUCAiJkFycXVpdm8iICB7CgkJTUVOVUlURU0gIkEmYnJpclx0RW50ZXIiICwJCQkxMDEKCQlNRU5VSVRFTSAiJk1vdmVyLi4uXHRGNyIgLCAJCQlJRF9GSUxFX01PVkUKCQlNRU5VSVRFTSAiJkNvcGlhci4uLlx0RjgiICwJCQkxMDcKCQlNRU5VSVRFTSAiJkluIENsaXBib2FyZC4uLlx0RjkiICwJCTExOAoJCU1FTlVJVEVNICJFJnhjbHVpclx0RGVsIiAsCQkJMTA4CgkJTUVOVUlURU0gIlJlJm5vbWVhci4uLiIgLAkJCTEwOQoJCU1FTlVJVEVNICImUHJvcHJpZWRhZGVzLi4uXHRBbHQrRW50ZXIiICwgSURfRURJVF9QUk9QRVJUSUVTCgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIkMmb21wcmltaXIuLi4iICwJCTExOQoJCU1FTlVJVEVNICJEZXNjb21wcmltaXIuLi4iICwJCTEyMAoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICJFeGVjdSZ0YXIuLi4iICwJCQlJRF9FWEVDVVRFCgkJTUVOVUlURU0gIiZJbXByaW1pci4uLiIgLCAJCQkxMDIKCQlNRU5VSVRFTSAiQSZzc29jaWFyLi4uIiAsCQkxMDMKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiQ3JpJmFyIHBhc3RhLi4uIiAsCQkJMTExCgkJTUVOVUlURU0gIlAmZXNxdWlzYXIuLi4iICwJCQkxMDQKCQlNRU5VSVRFTSAiU2VsZWNpb25hciBhcnF1aSZ2b3MuLi4iICwJCQkxMTYKCQlNRU5VSVRFTSBTRVBBUkFUT1IKI2lmbmRlZiBfTk9fRVhURU5TSU9OUwoJCU1FTlVJVEVNICJTYWkmclx0QWx0K1giICwgCQkJSURfRklMRV9FWElUCiNlbHNlCgkJTUVOVUlURU0gIlNhaSZyIiwgCQkJCUlEX0ZJTEVfRVhJVAojZW5kaWYKCX0KCglQT1BVUCAiJkRpc2NvIiAgewoJCU1FTlVJVEVNICImQ29waWFyIGRpc2NvLi4uIiAsCQkJMjAxCgkJTUVOVUlURU0gIiZOb21lYXIgZGlzY28uLi4iICwJCQkyMDIKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiJkZvcm1hdGFyIGRpc2NvLi4uIiAsCQkJMjAzCiNpZmRlZiBfV0lOOTUKCQlNRU5VSVRFTSAiJkdlcmFyIGRpc2NvIGRlIHNpc3RlbWEuLi4iLCAtMQkvKkBAICovCiNlbmRpZgoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICJDb25lY3RhJnIgdW5pZGFkZSBkZSByZWRlIiAsCQkJMjUyCgkJTUVOVUlURU0gIiZEZXNjb25lY3RhciB1bmlkYWRlIGRlIHJlZGUiICwJCTI1MwoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICJDJm9tcGFydGlsaGFyIGNvbW8uLi4iICwJCQkyNTQKCQlNRU5VSVRFTSAiJlJlbW92ZXIgY29tcGFydGlsaGFtZW50by4uLiIgLAkJCTI1NQoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICJTZWxlY2lvbmFyICZ1bmlkYWRlLi4uIiAsCQkJMjUxCgl9CgoJUE9QVVAgIsEmcnZvcmUiICB7CgkJTUVOVUlURU0gIiZQcvN4aW1vIG7tdmVsXHQrIiAsCQkJMzAxCgkJTUVOVUlURU0gIkV4cGFuZGkmciBwYXN0YVx0KiIgLAkJMzAyCgkJTUVOVUlURU0gIkV4cGFuZGlyICZ0dWRvXHRTdHJnKyoiICwJCTMwMwoJCU1FTlVJVEVNICJSZWNvbGhlciBwJmFzdGFcdC0iICwJCQkzMDQKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiJkluZGljYXIgc3Vibu12ZWlzIiAsCQkJCTUwNQoJfQoKCVBPUFVQICImRXhpYmlyIiAgewoJCU1FTlVJVEVNICLBJnJ2b3JlIGUgcGFzdGEiICwJCQk0MTMKCQlNRU5VSVRFTSAiUyZvbWVudGUg4XJ2b3JlIiAsCQkJNDExCgkJTUVOVUlURU0gIlNvJm1lbnRlIHBhc3RhIiAsCQkJNDEyCgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIiZEaXZpZGlyIiAsCQkJNDE0CgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIiZOb21lIiAsCQkJSURfVklFV19OQU1FCgkJTUVOVUlURU0gIiZUb2RvcyBvcyBkZWxhbGhlcyIgLAkJCQlJRF9WSUVXX0FMTF9BVFRSSUJVVEVTLCBDSEVDS0VECgkJTUVOVUlURU0gIkQmZXRhbGhlcyBwYXJjaWFpcy4uLiIgLAkJCUlEX1ZJRVdfU0VMRUNURURfQVRUUklCVVRFUwoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICImQ2xhc3NpZmljYXIgcG9yIG5vbWUiICwJCTQwNAoJCU1FTlVJVEVNICJDJmxhc3NpZmljYXIgcG9yIHRpcG8iICwJCTQwNQoJCU1FTlVJVEVNICJDbCZhc3NpZmljYXIgcG9yIHRhbWFuaG8iICwgCQk0MDYKCQlNRU5VSVRFTSAiQ2xhJnNzaWZpY2FyIHBvciAmZGF0YSIgLCAJCTQwNwoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICJDbGFzc2lmaWNhciAmcG9yLi4uIiAsCQkJNDA5Cgl9CgoJUE9QVVAgIiZPcOf1ZXMiICB7CgkJTUVOVUlURU0gIiZDb25maXJtYefjby4uLiIgLAkJLTEKCQlNRU5VSVRFTSAiJkZvbnRlLi4uIiAsCQkJSURfU0VMRUNUX0ZPTlQKCQlNRU5VSVRFTSAiJlBlcnNvbmFsaXphciBiYXJyYSBkZSBmZXJyYW1lbnRhcy4uLiIgLCAtMQoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICJCYXJyYSBkJmUgZmVycmFtZW50YXMiICwJCUlEX1ZJRVdfVE9PTF9CQVIsIENIRUNLRUQKCQlNRU5VSVRFTSAiJkJhcnJhIGRlIHVuaWRhZGVzIiAsCQlJRF9WSUVXX0RSSVZFX0JBUiwgQ0hFQ0tFRAoJCU1FTlVJVEVNICJCJmFycmEgZGUgJnN0YXR1cyIgLAlJRF9WSUVXX1NUQVRVU0JBUiwgQ0hFQ0tFRAojaWZuZGVmIF9OT19FWFRFTlNJT05TCgkJTUVOVUlURU0gIlRlbGEgQ2hlaWFcdEN0cmwrU2hpZnQrUyIgLCAJSURfVklFV19GVUxMU0NSRUVOCiNlbmRpZgoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICImTWluaW1pemFyIGR1cmFudGUgbyB1c28iICwJCS0xCgkJTUVOVUlURU0gIiZTYWx2YXIgY29uZmlndXJh5/VlcyBhbyBzYWlyIiAsCQkJNTExCgl9CgoKCVBPUFVQICImU2VndXJhbudhIiAgewoJCU1FTlVJVEVNICImQWNlc3NvLi4uIiAsCQk2MDUKCQlNRU5VSVRFTSAiJkxvZ2dpbmcuLi4iICwJCQk2MDYKCQlNRU5VSVRFTSAiJk93bmVyLi4uIiAsCQk2MDcKCX0KCglQT1BVUCAiJkphbmVsYSIgIHsKCQlNRU5VSVRFTSAiJk5vdmEgamFuZWxhIiAsCQkJSURfV0lORE9XX05FVwoJCU1FTlVJVEVNICImRW0gY2FzY2F0YVx0Q3RybCtGNSIgLAkJSURfV0lORE9XX0NBU0NBREUKCQlNRU5VSVRFTSAiTGFkbyBhIGxhZG8gJmhvcml6b250YWxtZW50ZSIgLAkJSURfV0lORE9XX1RJTEVfSE9SWgoJCU1FTlVJVEVNICJMYWRvIGEgbGFkbyAmdmVydGljYWxtZW50ZVx0Q3RybCtGNCIgLAkJSURfV0lORE9XX1RJTEVfVkVSVAojaWZuZGVmIF9OT19FWFRFTlNJT05TCgkJTUVOVUlURU0gIk9yZ2FuaXphciBhdXRvbWF0aWNhbWVudGUiICwJCUlEX1dJTkRPV19BVVRPU09SVAojZW5kaWYKCQlNRU5VSVRFTSAiJk9yZ2FuaXphciDtY29uZXMiICwJCUlEX1dJTkRPV19BUlJBTkdFCgkJTUVOVUlURU0gIiZBdHVhbGl6YXJcdEY1IiAsCQlJRF9SRUZSRVNICgl9CgoJUE9QVVAgIkFqJnVkYSIgIHsKCQlNRU5VSVRFTSAiJlTzcGljb3MgZGEgYWp1ZGFcdEYxIiAsCQkJSURfSEVMUAoJCU1FTlVJVEVNICJQZXNxdWlzYXIuLi4iICwJCQlJRF9IRUxQCgkJTUVOVUlURU0gIiZVc2FuZG8gYSBhanVkYSIgLAkJCUlEX0hFTFBfVVNJTkcKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlQT1BVUCAiJkluZm9ybWHn9WVzLi4uIiAgewoJCSAgTUVOVUlURU0gIlNvYnJlIG8gJldpbmUuLi4iICwJCQlJRF9BQk9VVF9XSU5FCi8qCiAqCQkgIE1FTlVJVEVNICImTGljZW5zZS4uLiIJCUlEX0xJQ0VOU0UKICoJCSAgTUVOVUlURU0gIiZOTyBXQVJSQU5UWSIJCUlEX05PX1dBUlJBTlRZCiAqLwoJCX0KCX0KfQoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0UKCklETV9XSU5FRklMRSBNRU5VIEZJWEVEIElNUFVSRQp7CglQT1BVUCAiJkZpY2hlaXJvIiAgewoJCU1FTlVJVEVNICJBJmJyaXJcdEVudGVyIiAsCQkJMTAxCgkJTUVOVUlURU0gIiZNb3Zlci4uLlx0RjciICwgCQkJSURfRklMRV9NT1ZFCgkJTUVOVUlURU0gIiZDb3BpYXIuLi5cdEY4IiAsCQkJMTA3CgkJTUVOVUlURU0gIiZOYSBBcmVhIGRlIFRyYW5zZmVyZW5jaWEuLi5cdEY5IiAsCQkxMTgKCQlNRU5VSVRFTSAiRSZ4Y2x1aXJcdERlbCIgLAkJCTEwOAoJCU1FTlVJVEVNICJSZSZub21lYXIuLi4iICwJCQkxMDkKCQlNRU5VSVRFTSAiJlByb3ByaWVkYWRlcy4uLlx0QWx0K0VudGVyIiAsIElEX0VESVRfUFJPUEVSVElFUwoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICJDJm9tcHJpbWlyLi4uIiAsCQkxMTkKCQlNRU5VSVRFTSAiJkRlc2NvbXByaW1pci4uLiIgLAkJMTIwCgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIkV4ZWN1JnRhci4uLiIgLAkJCUlEX0VYRUNVVEUKCQlNRU5VSVRFTSAiJkltcHJpbWlyLi4uIiAsIAkJCTEwMgoJCU1FTlVJVEVNICJBJnNzb2NpYXIuLi4iICwJCTEwMwoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICJDcmkmYXIgcGFzdGEuLi4iICwJCQkxMTEKCQlNRU5VSVRFTSAiUCZlc3F1aXNhci4uLiIgLAkJCTEwNAoJCU1FTlVJVEVNICJTZWxlY2lvbmFyIGZpY2hlaSZyb3MuLi4iICwJCQkxMTYKCQlNRU5VSVRFTSBTRVBBUkFUT1IKI2lmbmRlZiBfTk9fRVhURU5TSU9OUwoJCU1FTlVJVEVNICJTYWkmclx0QWx0K1giICwgCQkJSURfRklMRV9FWElUCiNlbHNlCgkJTUVOVUlURU0gIlNhaSZyIiwgCQkJCUlEX0ZJTEVfRVhJVAojZW5kaWYKCX0KCglQT1BVUCAiJkRpc2NvIiAgewoJCU1FTlVJVEVNICImQ29waWFyIGRpc2NvLi4uIiAsCQkJMjAxCgkJTUVOVUlURU0gIiZOb21lYXIgZGlzY28uLi4iICwJCQkyMDIKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiJkZvcm1hdGFyIGRpc2NvLi4uIiAsCQkJMjAzCiNpZmRlZiBfV0lOOTUKCQlNRU5VSVRFTSAiJkdlcmFyIGRpc2NvIGRlIHNpc3RlbWEuLi4iLCAtMQkvKkBAICovCiNlbmRpZgoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICJDb25lY3RhJnIgdW5pZGFkZSBkZSByZWRlIiAsCQkJMjUyCgkJTUVOVUlURU0gIiZEZXNjb25lY3RhciB1bmlkYWRlIGRlIHJlZGUiICwJCTI1MwoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICImUGFydGlsaGFyIGNvbW8uLi4iICwJCQkyNTQKCQlNRU5VSVRFTSAiJlJlbW92ZXIgcGFydGlsaGEuLi4iICwJCQkyNTUKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiU2VsZWNjaW9uYXIgJnVuaWRhZGUuLi4iICwJCQkyNTEKCX0KCglQT1BVUCAiwSZydm9yZSIgIHsKCQlNRU5VSVRFTSAiJlBy83hpbW8gbu12ZWxcdCsiICwJCQkzMDEKCQlNRU5VSVRFTSAiRXhwYW5kaSZyIHBhc3RhXHQqIiAsCQkzMDIKCQlNRU5VSVRFTSAiRXhwYW5kaXIgJnR1ZG9cdFN0cmcrKiIgLAkJMzAzCgkJTUVOVUlURU0gIlJlY29saGVyIHAmYXN0YVx0LSIgLAkJCTMwNAoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICImSW5kaWNhciBzdWJu7XZlaXMiICwJCQkJNTA1Cgl9CgoJUE9QVVAgIiZFeGliaXIiICB7CgkJTUVOVUlURU0gIsEmcnZvcmUgZSBwYXN0YSIgLAkJCTQxMwoJCU1FTlVJVEVNICJTJm9tZW50ZSDhcnZvcmUiICwJCQk0MTEKCQlNRU5VSVRFTSAiU28mbWVudGUgcGFzdGEiICwJCQk0MTIKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiJkRpdmlkaXIiICwJCQk0MTQKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiJk5vbWUiICwJCQlJRF9WSUVXX05BTUUKCQlNRU5VSVRFTSAiJlRvZG9zIG9zIGRlbGFsaGVzIiAsCQkJCUlEX1ZJRVdfQUxMX0FUVFJJQlVURVMsIENIRUNLRUQKCQlNRU5VSVRFTSAiRCZldGFsaGVzIHBhcmNpYWlzLi4uIiAsCQkJSURfVklFV19TRUxFQ1RFRF9BVFRSSUJVVEVTCgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIiZDbGFzc2lmaWNhciBwb3Igbm9tZSIgLAkJNDA0CgkJTUVOVUlURU0gIkMmbGFzc2lmaWNhciBwb3IgdGlwbyIgLAkJNDA1CgkJTUVOVUlURU0gIkNsJmFzc2lmaWNhciBwb3IgdGFtYW5obyIgLCAJCTQwNgoJCU1FTlVJVEVNICJDbGEmc3NpZmljYXIgcG9yICZkYXRhIiAsIAkJNDA3CgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIkNsYXNzaWZpY2FyICZwb3IuLi4iICwJCQk0MDkKCX0KCglQT1BVUCAiJk9w5/VlcyIgIHsKCQlNRU5VSVRFTSAiJkNvbmZpcm1h5+NvLi4uIiAsCQktMQoJCU1FTlVJVEVNICImRm9udGUuLi4iICwJCQlJRF9TRUxFQ1RfRk9OVAoJCU1FTlVJVEVNICImUGVyc29uYWxpemFyIGJhcnJhIGRlIGZlcnJhbWVudGFzLi4uIiAsIC0xCgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIkJhcnJhIGQmZSBmZXJyYW1lbnRhcyIgLAkJSURfVklFV19UT09MX0JBUiwgQ0hFQ0tFRAoJCU1FTlVJVEVNICImQmFycmEgZGUgdW5pZGFkZXMiICwJCUlEX1ZJRVdfRFJJVkVfQkFSLCBDSEVDS0VECgkJTUVOVUlURU0gIkImYXJyYSBkZSBlJnN0YWRvIiAsCUlEX1ZJRVdfU1RBVFVTQkFSLCBDSEVDS0VECiNpZm5kZWYgX05PX0VYVEVOU0lPTlMKCQlNRU5VSVRFTSAiRWNy4yBDb21wbGVjdG9cdEN0cmwrU2hpZnQrUyIgLCAJSURfVklFV19GVUxMU0NSRUVOCiNlbmRpZgoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICImTWluaW1pemFyIGR1cmFudGUgbyB1c28iICwJCS0xCgkJTUVOVUlURU0gIiZHcmF2YXIgY29uZmlndXJh5/VlcyBhbyBzYWlyIiAsCQkJNTExCgl9CgoKCVBPUFVQICImU2VndXJhbudhIiAgewoJCU1FTlVJVEVNICImQWNlc3NvLi4uIiAsCQk2MDUKCQlNRU5VSVRFTSAiJkxvZ2dpbmcuLi4iICwJCQk2MDYKCQlNRU5VSVRFTSAiJkRvbm8uLi4iICwJCTYwNwoJfQoKCVBPUFVQICImSmFuZWxhIiAgewoJCU1FTlVJVEVNICImTm92YSBqYW5lbGEiICwJCQlJRF9XSU5ET1dfTkVXCgkJTUVOVUlURU0gIiZFbSBjYXNjYXRhXHRDdHJsK0Y1IiAsCQlJRF9XSU5ET1dfQ0FTQ0FERQoJCU1FTlVJVEVNICJMYWRvIGEgbGFkbyAmaG9yaXpvbnRhbG1lbnRlIiAsCQlJRF9XSU5ET1dfVElMRV9IT1JaCgkJTUVOVUlURU0gIkxhZG8gYSBsYWRvICZ2ZXJ0aWNhbG1lbnRlXHRDdHJsK0Y0IiAsCQlJRF9XSU5ET1dfVElMRV9WRVJUCiNpZm5kZWYgX05PX0VYVEVOU0lPTlMKCQlNRU5VSVRFTSAiT3JnYW5pemFyIGF1dG9tYXRpY2FtZW50ZSIgLAkJSURfV0lORE9XX0FVVE9TT1JUCiNlbmRpZgoJCU1FTlVJVEVNICImT3JnYW5pemFyIO1jb25lcyIgLAkJSURfV0lORE9XX0FSUkFOR0UKCQlNRU5VSVRFTSAiJkFjdHVhbGl6YXJcdEY1IiAsCQlJRF9SRUZSRVNICgl9CgoJUE9QVVAgIkFqJnVkYSIgIHsKCQlNRU5VSVRFTSAiJlTzcGljb3MgZGEgYWp1ZGFcdEYxIiAsCQkJSURfSEVMUAoJCU1FTlVJVEVNICJQZXNxdWlzYXIuLi4iICwJCQlJRF9IRUxQCgkJTUVOVUlURU0gIiZVc2FuZG8gYSBhanVkYSIgLAkJCUlEX0hFTFBfVVNJTkcKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlQT1BVUCAiJkluZm9ybWHn9WVzLi4uIiAgewoJCSAgTUVOVUlURU0gIkFjZXJjYSBkbyAmV2luZS4uLiIgLAkJCUlEX0FCT1VUX1dJTkUKLyoKICoJCSAgTUVOVUlURU0gIiZMaWNlbudhLi4uIgkJSURfTElDRU5TRQogKgkJICBNRU5VSVRFTSAiJlNFTSBHQVJBTlRJQSIJCUlEX05PX1dBUlJBTlRZCiAqLwoJCX0KCX0KfQoKCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19ORVVUUkFMCgpJRERfRVhFQ1VURSBESUFMT0cgRklYRUQgSU1QVVJFIDE1LCAxMywgMjEwLCA2MwpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJFeGVjdXRhciIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CglDT05UUk9MIAkJIiIsIDEwMSwgIlN0YXRpYyIsIFNTX1NJTVBMRXxTU19OT1BSRUZJWCwgMywgNiwgMTYyLCAxMAoJQ09OVFJPTCAJCSImQ29tYW5kbzoiICwgLTEsICJTdGF0aWMiLCBTU19MRUZUTk9XT1JEV1JBUHxXU19HUk9VUCwgMywgMTgsIDYwLCAxMAoJRURJVFRFWFQJCTIwMSwgMywgMjksIDEzNCwgMTIsIEVTX0FVVE9IU0NST0xMCglDT05UUk9MIAkJIiZNaW5pbWl6YWRvIiAsIDIxNCwgIkJ1dHRvbiIsIEJTX0FVVE9DSEVDS0JPWHxXU19UQUJTVE9QLDMsIDQ1LCA3MSwgMTIKCURFRlBVU0hCVVRUT04JIk9LIiAsIDEsIDE1OCwgNiwgNDcsIDE0CglQVVNIQlVUVE9OCQkiQ2FuY2VsYXIiICwgMiwgMTU4LCAyMywgNDcsIDE0CglQVVNIQlVUVE9OCQkiJkFqdWRhIiAsIDI1NCwgMTU4LCA0MywgNDcsIDE0Cn0KCklERF9TRUxFQ1RfREVTVElOQVRJT04gRElBTE9HIEZJWEVEIElNUFVSRSAxNSwgMTMsIDIxMCwgNjMKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiU2VsZWNpb25hciBkZXN0aW5vIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCnsKCUNPTlRST0wgCSIiLCAxMDEsICJTdGF0aWMiLCBTU19TSU1QTEV8U1NfTk9QUkVGSVgsIDMsIDYsIDE2MiwgMTAKCUNPTlRST0wgCSImQ2FtaW5obzoiICwgLTEsICJTdGF0aWMiLCBTU19MRUZUTk9XT1JEV1JBUHxXU19HUk9VUCwgMywgMTgsIDYwLCAxMAoJRURJVFRFWFQJMjAxLCAzLCAyOSwgMTM0LCAxMiwgRVNfQVVUT0hTQ1JPTEwKCURFRlBVU0hCVVRUT04JIk9LIiAsIDEsIDE1OCwgNiwgNDcsIDE0CglQVVNIQlVUVE9OCSJDYW5jZWxhciIgLCAyLCAxNTgsIDIzLCA0NywgMTQKCVBVU0hCVVRUT04JIiZQcm9jdXJhciIgLCAyNTQsIDE1OCwgNDMsIDQ3LCAxNAp9CgpTVFJJTkdUQUJMRQp7CglJRFNfRk9OVF9TRUxfRExHX05BTUUJIkFwbGljYW5kbyBjb25maWd1cmHn9WVzIGRlIGZvbnRlIgoJSURTX0ZPTlRfU0VMX0VSUk9SCSJFcnJvIGVucXVhbnRvIHNlbGVjaW9uYSBub3ZhIGZvbnRlLiIKfQoKU1RSSU5HVEFCTEUKewogSURTX1dJTkVGSUxFICJXaW5lZmlsZSIKIElEU19FUlJPUiAgIkVycm8iCiBJRFNfUk9PVF9GUyAgInJvb3QgZnMiCiBJRFNfVU5JWEZTICAidW5peGZzIgogSURTX0RFU0tUT1AgICLBcmVhIGRlIHRyYWJhbGhvIgogSURTX1NIRUxMICAiU2hlbGwiCiBJRFNfVElUTEVGTVQgIiVzIC0gJXMiCiBJRFNfTk9fSU1QTCAgIkFpbmRhIG7jbyBpbXBsZW1lbnRhZG8iCiBJRFNfV0lORSAgIldJTkUiCiBJRFNfV0lORV9GSUxFICJXaW5lIEZpbGUiCn0KClNUUklOR1RBQkxFCnsKIElEU19DT0xfTkFNRSAiTm9tZSIKIElEU19DT0xfU0laRSAiVGFtYW5obyIKIElEU19DT0xfQ0RBVEUgIkNEYXRhIgogSURTX0NPTF9BREFURSAiQURhdGEiCiBJRFNfQ09MX01EQVRFICJNRGF0YSIKIElEU19DT0xfSURYICAiSW5kZXgvSW5vZGUiCiBJRFNfQ09MX0xJTktTICJMaWdh5/VlcyIKIElEU19DT0xfQVRUUiAiQXRyaWJ1dG9zIgogSURTX0NPTF9TRUMgICJTZWd1cmFu52EiCn0K