LyoKICogV2luZUZpbGUKICogUG9ydHVndWVzZSBMYW5ndWFnZSBTdXBwb3J0CiAqCiAqIENvcHlyaWdodCAyMDAzIE1hcmNlbG8gRHVhcnRlCiAqIENvcHlyaWdodCAyMDA0LDIwMDcgQW3pcmljbyBKb3PpIE1lbG8KICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKCi8qIE1lbnUgKi8KCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFX0JSQVpJTElBTgoKSURNX1dJTkVGSUxFIE1FTlUgRklYRUQgSU1QVVJFCnsKICAgIFBPUFVQICImQXJxdWl2byIgIHsKICAgICAgICBNRU5VSVRFTSAiQSZicmlyXHRFbnRlciIsICAgICAgICAgICAgICAgSURfQUNUSVZBVEUKICAgICAgICBNRU5VSVRFTSAiJk1vdmVyLi4uXHRGNyIsICAgICAgICAgICAgICAgSURfRklMRV9NT1ZFCiAgICAgICAgTUVOVUlURU0gIiZDb3BpYXIuLi5cdEY4IiwgICAgICAgICAgICAgIElEX0ZJTEVfQ09QWQogICAgICAgIE1FTlVJVEVNICImSW4gQ2xpcGJvYXJkLi4uXHRGOSIsICAgICAgICAxMTgKICAgICAgICBNRU5VSVRFTSAiRSZ4Y2x1aXJcdERlbCIsICAgICAgICAgICAgICAgSURfRklMRV9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiUmUmbm9tZWFyLi4uIiwgICAgICAgICAgICAgICAgMTA5CiAgICAgICAgTUVOVUlURU0gIiZQcm9wcmllZGFkZXMuLi5cdEFsdCtFbnRlciIsIElEX0VESVRfUFJPUEVSVElFUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJDJm9tcHJpbWlyLi4uIiwgICAgICAgICAgICAgICAxMTkKICAgICAgICBNRU5VSVRFTSAiRGVzY29tcHJpbWlyLi4uIiwgICAgICAgICAgICAgMTIwCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkV4ZWN1JnRhci4uLiIsICAgICAgICAgICAgICAgIElEX0VYRUNVVEUKICAgICAgICBNRU5VSVRFTSAiJkltcHJpbWlyLi4uIiwgICAgICAgICAgICAgICAgMTAyCiAgICAgICAgTUVOVUlURU0gIkEmc3NvY2lhci4uLiIsICAgICAgICAgICAgICAgIDEwMwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJDcmkmYXIgcGFzdGEuLi4iLCAgICAgICAgICAgICAxMTEKICAgICAgICBNRU5VSVRFTSAiUCZlc3F1aXNhci4uLiIsICAgICAgICAgICAgICAgMTA0CiAgICAgICAgTUVOVUlURU0gIlNlbGVjaW9uYXIgYXJxdWkmdm9zLi4uIiwgICAgIDExNgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgojaWZuZGVmIF9OT19FWFRFTlNJT05TCiAgICAgICAgTUVOVUlURU0gIlNhaSZyXHRBbHQrWCIsICAgICAgICAgICAgICAgIElEX0ZJTEVfRVhJVAojZWxzZQogICAgICAgIE1FTlVJVEVNICJTYWkmciIsICAgICAgICAgICAgICAgICAgICAgICBJRF9GSUxFX0VYSVQKI2VuZGlmCiAgICB9CgogICAgUE9QVVAgIiZEaXNjbyIgIHsKICAgICAgICBNRU5VSVRFTSAiJkNvcGlhciBkaXNjby4uLiIsICAgICAgICAgICAgMjAxCiAgICAgICAgTUVOVUlURU0gIiZOb21lYXIgZGlzY28uLi4iLCAgICAgICAgICAgIDIwMgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRm9ybWF0YXIgZGlzY28uLi4iLCAgICAgICAgICBJRF9GT1JNQVRfRElTSwojaWZkZWYgX1dJTjk1CiAgICAgICAgTUVOVUlURU0gIiZHZXJhciBkaXNjbyBkZSBzaXN0ZW1hLi4uIiwgLTEgICAvKlRPRE8qLwojZW5kaWYKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiQ29uZWN0YSZyIHVuaWRhZGUgZGUgcmVkZSIsICAgSURfQ09OTkVDVF9ORVRXT1JLX0RSSVZFCiAgICAgICAgTUVOVUlURU0gIiZEZXNjb25lY3RhciB1bmlkYWRlIGRlIHJlZGUiLElEX0RJU0NPTk5FQ1RfTkVUV09SS19EUklWRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJDJm9tcGFydGlsaGFyIGNvbW8uLi4iLCAgICAgICAyNTQKICAgICAgICBNRU5VSVRFTSAiJlJlbW92ZXIgY29tcGFydGlsaGFtZW50by4uLiIsMjU1CiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlNlbGVjaW9uYXIgJnVuaWRhZGUuLi4iLCAgICAgIDI1MQogICAgfQoKICAgIFBPUFVQICLBJnJ2b3JlIiAgewogICAgICAgIE1FTlVJVEVNICImUHLzeGltbyBu7XZlbFx0KyIsICAgICAgICAgICAzMDEKICAgICAgICBNRU5VSVRFTSAiRXhwYW5kaSZyIHBhc3RhXHQqIiwgICAgICAgICAgMzAyCiAgICAgICAgTUVOVUlURU0gIkV4cGFuZGlyICZ0dWRvXHRTdHJnKyoiLCAgICAgIDMwMwogICAgICAgIE1FTlVJVEVNICJSZWNvbGhlciBwJmFzdGFcdC0iLCAgICAgICAgICAzMDQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkluZGljYXIgc3Vibu12ZWlzIiwgICAgICAgICAgNTA1CiAgICB9CgogICAgUE9QVVAgIiZFeGliaXIiICB7CiAgICAgICAgTUVOVUlURU0gIsEmcnZvcmUgZSBwYXN0YSIsICAgICAgICAgICAgIDQxMwogICAgICAgIE1FTlVJVEVNICJTJm9tZW50ZSDhcnZvcmUiLCAgICAgICAgICAgICA0MTEKICAgICAgICBNRU5VSVRFTSAiU28mbWVudGUgcGFzdGEiLCAgICAgICAgICAgICAgNDEyCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZEaXZpZGlyIiwgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1BMSVQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJk5vbWUiLCAgICAgICAgICAgICAgICAgICAgICAgSURfVklFV19OQU1FCiAgICAgICAgTUVOVUlURU0gIiZUb2RvcyBvcyBkZWxhbGhlcyIsICAgICAgICAgIElEX1ZJRVdfQUxMX0FUVFJJQlVURVMsIENIRUNLRUQKICAgICAgICBNRU5VSVRFTSAiRCZldGFsaGVzIHBhcmNpYWlzLi4uIiwgICAgICAgSURfVklFV19TRUxFQ1RFRF9BVFRSSUJVVEVTCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZDbGFzc2lmaWNhciBwb3Igbm9tZSIsICAgICAgIElEX1ZJRVdfU09SVF9OQU1FCiAgICAgICAgTUVOVUlURU0gIkMmbGFzc2lmaWNhciBwb3IgdGlwbyIsICAgICAgIElEX1ZJRVdfU09SVF9UWVBFCiAgICAgICAgTUVOVUlURU0gIkNsJmFzc2lmaWNhciBwb3IgdGFtYW5obyIsICAgIElEX1ZJRVdfU09SVF9TSVpFCiAgICAgICAgTUVOVUlURU0gIkNsYSZzc2lmaWNhciBwb3IgJmRhdGEiLCAgICAgIElEX1ZJRVdfU09SVF9EQVRFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkNsYXNzaWZpY2FyICZwb3IuLi4iLCAgICAgICAgIElEX1ZJRVdfRklMVEVSCiAgICB9CgogICAgUE9QVVAgIiZPcOf1ZXMiICB7CiAgICAgICAgTUVOVUlURU0gIiZDb25maXJtYefjby4uLiIsICAgICAgICAgICAgIDUwMQogICAgICAgIE1FTlVJVEVNICImRm9udGUuLi4iLCAgICAgICAgICAgICAgICAgICBJRF9TRUxFQ1RfRk9OVAogICAgICAgIE1FTlVJVEVNICImUGVyc29uYWxpemFyIGJhcnJhIGRlIGZlcnJhbWVudGFzLi4uIiwgNTEyCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkJhcnJhIGQmZSBmZXJyYW1lbnRhcyIsICAgICAgIElEX1ZJRVdfVE9PTF9CQVIsIENIRUNLRUQKICAgICAgICBNRU5VSVRFTSAiJkJhcnJhIGRlIHVuaWRhZGVzIiwgICAgICAgICAgSURfVklFV19EUklWRV9CQVIsIENIRUNLRUQKICAgICAgICBNRU5VSVRFTSAiQiZhcnJhIGRlICZzdGF0dXMiLCAgICAgICAgICAgSURfVklFV19TVEFUVVNCQVIsIENIRUNLRUQKI2lmbmRlZiBfTk9fRVhURU5TSU9OUwogICAgICAgIE1FTlVJVEVNICJUZWxhIENoZWlhXHRDdHJsK1NoaWZ0K1MiLCAgICBJRF9WSUVXX0ZVTExTQ1JFRU4KI2VuZGlmCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZNaW5pbWl6YXIgZHVyYW50ZSBvIHVzbyIsICAgIDUwNAogICAgICAgIE1FTlVJVEVNICImU2FsdmFyIGNvbmZpZ3VyYef1ZXMgYW8gc2FpciIsNTExCiAgICB9CgoKICAgIFBPUFVQICImU2VndXJhbudhIiAgewogICAgICAgIE1FTlVJVEVNICImQWNlc3NvLi4uIiwgICAgICAgICAgICAgICAgICA2MDUKICAgICAgICBNRU5VSVRFTSAiJkxvZ2dpbmcuLi4iLCAgICAgICAgICAgICAgICAgNjA2CiAgICAgICAgTUVOVUlURU0gIiZPd25lci4uLiIsICAgICAgICAgICAgICAgICAgIDYwNwogICAgfQoKICAgIFBPUFVQICImSmFuZWxhIiAgewogICAgICAgIE1FTlVJVEVNICImTm92YSBqYW5lbGEiLCAgICAgICAgICAgICAgICBJRF9XSU5ET1dfTkVXCiAgICAgICAgTUVOVUlURU0gIiZFbSBjYXNjYXRhXHRDdHJsK0Y1IiwgICAgICAgIElEX1dJTkRPV19DQVNDQURFCiAgICAgICAgTUVOVUlURU0gIkxhZG8gYSBsYWRvICZob3Jpem9udGFsbWVudGUiLElEX1dJTkRPV19USUxFX0hPUloKICAgICAgICBNRU5VSVRFTSAiTGFkbyBhIGxhZG8gJnZlcnRpY2FsbWVudGVcdEN0cmwrRjQiLElEX1dJTkRPV19USUxFX1ZFUlQKI2lmbmRlZiBfTk9fRVhURU5TSU9OUwogICAgICAgIE1FTlVJVEVNICJPcmdhbml6YXIgYXV0b21hdGljYW1lbnRlIiwgICBJRF9XSU5ET1dfQVVUT1NPUlQKI2VuZGlmCiAgICAgICAgTUVOVUlURU0gIiZPcmdhbml6YXIg7WNvbmVzIiwgICAgICAgICAgIElEX1dJTkRPV19BUlJBTkdFCiAgICAgICAgTUVOVUlURU0gIiZBdHVhbGl6YXJcdEY1IiwgICAgICAgICAgICAgIElEX1JFRlJFU0gKICAgIH0KCiAgICBQT1BVUCAiQWomdWRhIiAgewogICAgICAgIE1FTlVJVEVNICImVPNwaWNvcyBkYSBhanVkYVx0RjEiLCAgICAgICBJRF9IRUxQCiAgICAgICAgTUVOVUlURU0gIlBlc3F1aXNhci4uLiIsICAgICAgICAgICAgICAgIElEX0hFTFAKICAgICAgICBNRU5VSVRFTSAiJlVzYW5kbyBhIGFqdWRhIiwgICAgICAgICAgICAgSURfSEVMUF9VU0lORwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImU29icmUgbyBXaW5lZmlsZS4uLiIsICAgICAgICBJRF9BQk9VVAogICAgfQp9CgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRQoKSURNX1dJTkVGSUxFIE1FTlUgRklYRUQgSU1QVVJFCnsKICAgIFBPUFVQICImRmljaGVpcm8iICB7CiAgICAgICAgTUVOVUlURU0gIkEmYnJpclx0RW50ZXIiLCAgICAgICAgICAgICAgIElEX0FDVElWQVRFCiAgICAgICAgTUVOVUlURU0gIiZNb3Zlci4uLlx0RjciLCAgICAgICAgICAgICAgIElEX0ZJTEVfTU9WRQogICAgICAgIE1FTlVJVEVNICImQ29waWFyLi4uXHRGOCIsICAgICAgICAgICAgICBJRF9GSUxFX0NPUFkKICAgICAgICBNRU5VSVRFTSAiJk5hIEFyZWEgZGUgVHJhbnNmZXLqbmNpYS4uLlx0RjkiLCAgICAgICAgMTE4CiAgICAgICAgTUVOVUlURU0gIkUmeGNsdWlyXHREZWwiLCAgICAgICAgICAgICAgIElEX0ZJTEVfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIlJlJm5vbWVhci4uLiIsICAgICAgICAgICAgICAgIDEwOQogICAgICAgIE1FTlVJVEVNICImUHJvcHJpZWRhZGVzLi4uXHRBbHQrRW50ZXIiLCBJRF9FRElUX1BST1BFUlRJRVMKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiQyZvbXByaW1pci4uLiIsICAgICAgICAgICAgICAgMTE5CiAgICAgICAgTUVOVUlURU0gIiZEZXNjb21wcmltaXIuLi4iLCAgICAgICAgICAgIDEyMAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJFeGVjdSZ0YXIuLi4iLCAgICAgICAgICAgICAgICBJRF9FWEVDVVRFCiAgICAgICAgTUVOVUlURU0gIiZJbXByaW1pci4uLiIsICAgICAgICAgICAgICAgIDEwMgogICAgICAgIE1FTlVJVEVNICJBJnNzb2NpYXIuLi4iLCAgICAgICAgICAgICAgICAxMDMKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiQ3JpJmFyIHBhc3RhLi4uIiwgICAgICAgICAgICAgMTExCiAgICAgICAgTUVOVUlURU0gIlAmZXNxdWlzYXIuLi4iLCAgICAgICAgICAgICAgIDEwNAogICAgICAgIE1FTlVJVEVNICJTZWxlY2Npb25hciBmaWNoZWkmcm9zLi4uIiwgICAgMTE2CiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiNpZm5kZWYgX05PX0VYVEVOU0lPTlMKICAgICAgICBNRU5VSVRFTSAiU2FpJnJcdEFsdCtYIiwgICAgICAgICAgICAgICAgSURfRklMRV9FWElUCiNlbHNlCiAgICAgICAgTUVOVUlURU0gIlNhaSZyIiwgICAgICAgICAgICAgICAgICAgICAgIElEX0ZJTEVfRVhJVAojZW5kaWYKICAgIH0KCiAgICBQT1BVUCAiJkRpc2NvIiAgewogICAgICAgIE1FTlVJVEVNICImQ29waWFyIGRpc2NvLi4uIiwgICAgICAgICAgICAyMDEKICAgICAgICBNRU5VSVRFTSAiJk5vbWVhciBkaXNjby4uLiIsICAgICAgICAgICAgMjAyCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZGb3JtYXRhciBkaXNjby4uLiIsICAgICAgICAgIElEX0ZPUk1BVF9ESVNLCiNpZmRlZiBfV0lOOTUKICAgICAgICBNRU5VSVRFTSAiJkdlcmFyIGRpc2NvIGRlIHNpc3RlbWEuLi4iLCAtMSAgIC8qVE9ETyovCiNlbmRpZgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJMaWdhJnIgdW5pZGFkZSBkZSByZWRlIiwgICBJRF9DT05ORUNUX05FVFdPUktfRFJJVkUKICAgICAgICBNRU5VSVRFTSAiJkRlc2xpZ2FyIHVuaWRhZGUgZGUgcmVkZSIsSURfRElTQ09OTkVDVF9ORVRXT1JLX0RSSVZFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZQYXJ0aWxoYXIgY29tby4uLiIsICAgICAgICAgIDI1NAogICAgICAgIE1FTlVJVEVNICImUmVtb3ZlciBwYXJ0aWxoYS4uLiIsICAgICAgICAyNTUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiU2VsZWNjaW9uYXIgJnVuaWRhZGUuLi4iLCAgICAgMjUxCiAgICB9CgogICAgUE9QVVAgIsEmcnZvcmUiICB7CiAgICAgICAgTUVOVUlURU0gIiZQcvN4aW1vIG7tdmVsXHQrIiwgICAgICAgICAgIDMwMQogICAgICAgIE1FTlVJVEVNICJFeHBhbmRpJnIgcGFzdGFcdCoiLCAgICAgICAgICAzMDIKICAgICAgICBNRU5VSVRFTSAiRXhwYW5kaXIgJnR1ZG9cdFN0cmcrKiIsICAgICAgMzAzCiAgICAgICAgTUVOVUlURU0gIlJlY29saGVyIHAmYXN0YVx0LSIsICAgICAgICAgIDMwNAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImSW5kaWNhciBzdWJu7XZlaXMiLCAgICAgICAgICA1MDUKICAgIH0KCiAgICBQT1BVUCAiJkV4aWJpciIgIHsKICAgICAgICBNRU5VSVRFTSAiwSZydm9yZSBlIHBhc3RhIiwgICAgICAgICAgICAgNDEzCiAgICAgICAgTUVOVUlURU0gIkEmcGVuYXMg4XJ2b3JlIiwgICAgICAgICAgICAgNDExCiAgICAgICAgTUVOVUlURU0gIkFwJmVuYXMgcGFzdGEiLCAgICAgICAgICAgICAgNDEyCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZEaXZpZGlyIiwgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1BMSVQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJk5vbWUiLCAgICAgICAgICAgICAgICAgICAgICAgSURfVklFV19OQU1FCiAgICAgICAgTUVOVUlURU0gIiZUb2RvcyBvcyBkZWxhbGhlcyIsICAgICAgICAgIElEX1ZJRVdfQUxMX0FUVFJJQlVURVMsIENIRUNLRUQKICAgICAgICBNRU5VSVRFTSAiRCZldGFsaGVzIHBhcmNpYWlzLi4uIiwgICAgICAgSURfVklFV19TRUxFQ1RFRF9BVFRSSUJVVEVTCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZDbGFzc2lmaWNhciBwb3Igbm9tZSIsICAgICAgIElEX1ZJRVdfU09SVF9OQU1FCiAgICAgICAgTUVOVUlURU0gIkMmbGFzc2lmaWNhciBwb3IgdGlwbyIsICAgICAgIElEX1ZJRVdfU09SVF9UWVBFCiAgICAgICAgTUVOVUlURU0gIkNsJmFzc2lmaWNhciBwb3IgdGFtYW5obyIsICAgIElEX1ZJRVdfU09SVF9TSVpFCiAgICAgICAgTUVOVUlURU0gIkNsYSZzc2lmaWNhciBwb3IgJmRhdGEiLCAgICAgIElEX1ZJRVdfU09SVF9EQVRFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkNsYXNzaWZpY2FyICZwb3IuLi4iLCAgICAgICAgIElEX1ZJRVdfRklMVEVSCiAgICB9CgogICAgUE9QVVAgIiZPcOf1ZXMiICB7CiAgICAgICAgTUVOVUlURU0gIiZDb25maXJtYefjby4uLiIsICAgICAgICAgICAgIDUwMQogICAgICAgIE1FTlVJVEVNICImVGlwbyBkZSBMZXRyYS4uLiIsICAgICAgICAgICAgICAgICAgIElEX1NFTEVDVF9GT05UCiAgICAgICAgTUVOVUlURU0gIiZQZXJzb25hbGl6YXIgYmFycmEgZGUgZmVycmFtZW50YXMuLi4iLCA1MTIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiQmFycmEgZCZlIGZlcnJhbWVudGFzIiwgICAgICAgSURfVklFV19UT09MX0JBUiwgQ0hFQ0tFRAogICAgICAgIE1FTlVJVEVNICImQmFycmEgZGUgdW5pZGFkZXMiLCAgICAgICAgICBJRF9WSUVXX0RSSVZFX0JBUiwgQ0hFQ0tFRAogICAgICAgIE1FTlVJVEVNICJCJmFycmEgZGUgZSZzdGFkbyIsICAgICAgICAgICBJRF9WSUVXX1NUQVRVU0JBUiwgQ0hFQ0tFRAojaWZuZGVmIF9OT19FWFRFTlNJT05TCiAgICAgICAgTUVOVUlURU0gIkVjcuMgQ29tcGxldG9cdEN0cmwrU2hpZnQrUyIsICAgIElEX1ZJRVdfRlVMTFNDUkVFTgojZW5kaWYKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJk1pbmltaXphciBkdXJhbnRlIG8gdXNvIiwgICAgNTA0CiAgICAgICAgTUVOVUlURU0gIiZHcmF2YXIgY29uZmlndXJh5/VlcyBhbyBzYWlyIiw1MTEKICAgIH0KCgogICAgUE9QVVAgIiZTZWd1cmFu52EiICB7CiAgICAgICAgTUVOVUlURU0gIiZBY2Vzc28uLi4iLCAgICAgICAgICAgICAgICAgIDYwNQogICAgICAgIE1FTlVJVEVNICImQXV0ZW50aWNh5+NvLi4uIiwgICAgICAgICAgICAgICAgIDYwNgogICAgICAgIE1FTlVJVEVNICImRG9uby4uLiIsICAgICAgICAgICAgICAgICAgICA2MDcKICAgIH0KCiAgICBQT1BVUCAiJkphbmVsYSIgIHsKICAgICAgICBNRU5VSVRFTSAiJk5vdmEgamFuZWxhIiwgICAgICAgICAgICAgICAgSURfV0lORE9XX05FVwogICAgICAgIE1FTlVJVEVNICImRW0gY2FzY2F0YVx0Q3RybCtGNSIsICAgICAgICBJRF9XSU5ET1dfQ0FTQ0FERQogICAgICAgIE1FTlVJVEVNICJMYWRvIGEgbGFkbyAmaG9yaXpvbnRhbG1lbnRlIixJRF9XSU5ET1dfVElMRV9IT1JaCiAgICAgICAgTUVOVUlURU0gIkxhZG8gYSBsYWRvICZ2ZXJ0aWNhbG1lbnRlXHRDdHJsK0Y0IixJRF9XSU5ET1dfVElMRV9WRVJUCiNpZm5kZWYgX05PX0VYVEVOU0lPTlMKICAgICAgICBNRU5VSVRFTSAiT3JnYW5pemFyIGF1dG9tYXRpY2FtZW50ZSIsICAgSURfV0lORE9XX0FVVE9TT1JUCiNlbmRpZgogICAgICAgIE1FTlVJVEVNICImT3JnYW5pemFyIO1jb25lcyIsICAgICAgICAgICBJRF9XSU5ET1dfQVJSQU5HRQogICAgICAgIE1FTlVJVEVNICImQWN0dWFsaXphclx0RjUiLCAgICAgICAgICAgICBJRF9SRUZSRVNICiAgICB9CgogICAgUE9QVVAgIkFqJnVkYSIgIHsKICAgICAgICBNRU5VSVRFTSAiJlTzcGljb3MgZGEgYWp1ZGFcdEYxIiwgICAgICAgSURfSEVMUAogICAgICAgIE1FTlVJVEVNICJQZXNxdWlzYXIuLi4iLCAgICAgICAgICAgICAgICBJRF9IRUxQCiAgICAgICAgTUVOVUlURU0gIiZVc2FyIGEgYWp1ZGEiLCAgICAgICAgICAgICBJRF9IRUxQX1VTSU5HCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZTb2JyZSBvIFdpbmVmaWxlLi4uIiwgICAgICAgIElEX0FCT1VUCiAgICB9Cn0KCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfTkVVVFJBTAoKSUREX0VYRUNVVEUgRElBTE9HIEZJWEVEIElNUFVSRSAxNSwgMTMsIDIxMCwgNjMKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRXhlY3V0YXIiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKewogICAgQ09OVFJPTCAgICAgICAgICIiLCAxMDEsICJTdGF0aWMiLCBTU19TSU1QTEV8U1NfTk9QUkVGSVgsIDMsIDYsIDE2MiwgMTAKICAgIENPTlRST0wgICAgICAgICAiJkNvbWFuZG86IiwgLTEsICJTdGF0aWMiLCBTU19MRUZUTk9XT1JEV1JBUHxXU19HUk9VUCwgMywgMTgsIDYwLCAxMAogICAgRURJVFRFWFQgICAgICAgIDIwMSwgMywgMjksIDEzNCwgMTIsIEVTX0FVVE9IU0NST0xMCiAgICBDT05UUk9MICAgICAgICAgIiZNaW5pbWl6YWRvIiwgMjE0LCAiQnV0dG9uIiwgQlNfQVVUT0NIRUNLQk9YfFdTX1RBQlNUT1AsMywgNDUsIDcxLCAxMgogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsIDEsIDE1OCwgNiwgNDcsIDE0CiAgICBQVVNIQlVUVE9OICAgICAgIkNhbmNlbGFyIiwgMiwgMTU4LCAyMywgNDcsIDE0CiAgICBQVVNIQlVUVE9OICAgICAgIiZBanVkYSIsIDI1NCwgMTU4LCA0MywgNDcsIDE0Cn0KCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRV9CUkFaSUxJQU4KCklERF9TRUxFQ1RfREVTVElOQVRJT04gRElBTE9HIEZJWEVEIElNUFVSRSAxNSwgMTMsIDIxMCwgNjMKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiU2VsZWNpb25hciBkZXN0aW5vIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCnsKICAgIENPTlRST0wgICAgICAgICAiIiwgMTAxLCAiU3RhdGljIiwgU1NfU0lNUExFfFNTX05PUFJFRklYLCAzLCA2LCAxNjIsIDEwCiAgICBDT05UUk9MICAgICAgICAgIiZDYW1pbmhvOiIsIC0xLCAiU3RhdGljIiwgU1NfTEVGVE5PV09SRFdSQVB8V1NfR1JPVVAsIDMsIDE4LCA2MCwgMTAKICAgIEVESVRURVhUICAgICAgICAyMDEsIDMsIDI5LCAxMzQsIDEyLCBFU19BVVRPSFNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsIDEsIDE1OCwgNiwgNDcsIDE0CiAgICBQVVNIQlVUVE9OICAgICAgIkNhbmNlbGFyIiwgMiwgMTU4LCAyMywgNDcsIDE0CiAgICBQVVNIQlVUVE9OICAgICAgIiZQcm9jdXJhciIsIDI1NCwgMTU4LCA0MywgNDcsIDE0Cn0KCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFCgpJRERfU0VMRUNUX0RFU1RJTkFUSU9OIERJQUxPRyBGSVhFRCBJTVBVUkUgMTUsIDEzLCAyMTAsIDYzClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlNlbGVjaW9uYXIgZGVzdGlubyIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CiAgICBDT05UUk9MICAgICAgICAgIiIsIDEwMSwgIlN0YXRpYyIsIFNTX1NJTVBMRXxTU19OT1BSRUZJWCwgMywgNiwgMTYyLCAxMAogICAgQ09OVFJPTCAgICAgICAgICImTG9jYWxpemHn4286IiwgLTEsICJTdGF0aWMiLCBTU19MRUZUTk9XT1JEV1JBUHxXU19HUk9VUCwgMywgMTgsIDYwLCAxMAogICAgRURJVFRFWFQgICAgICAgIDIwMSwgMywgMjksIDEzNCwgMTIsIEVTX0FVVE9IU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIiwgMSwgMTU4LCA2LCA0NywgMTQKICAgIFBVU0hCVVRUT04gICAgICAiQ2FuY2VsYXIiLCAyLCAxNTgsIDIzLCA0NywgMTQKICAgIFBVU0hCVVRUT04gICAgICAiJlByb2N1cmFyIiwgMjU0LCAxNTgsIDQzLCA0NywgMTQKfQoKCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFX0JSQVpJTElBTgoKU1RSSU5HVEFCTEUKewogICAgSURTX0ZPTlRfU0VMX0RMR19OQU1FICAgIkFwbGljYW5kbyBjb25maWd1cmHn9WVzIGRlIGZvbnRlIgogICAgSURTX0ZPTlRfU0VMX0VSUk9SICAgICAgIkVycm8gZW5xdWFudG8gc2VsZWNpb25hIG5vdmEgZm9udGUuIgp9CgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRQoKU1RSSU5HVEFCTEUKewogICAgSURTX0ZPTlRfU0VMX0RMR19OQU1FICAgIkEgYXBsaWNhciBjb25maWd1cmHn9WVzIGRvIHRpcG8gZGUgbGV0cmEiCiAgICBJRFNfRk9OVF9TRUxfRVJST1IgICAgICAiRXJybyBhbyBzZWxlY2Npb25hciBub3ZvIHRpcG8gZGUgbGV0cmEuIgp9CgoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0VfQlJBWklMSUFOCgpTVFJJTkdUQUJMRQp7CiBJRFNfV0lORUZJTEUgICAgICAgICAgICAgICAiV2luZWZpbGUiCiBJRFNfRVJST1IgICAgICAgICAgICAgICAgICAiRXJybyIKIElEU19ST09UX0ZTICAgICAgICAgICAgICAgICJyb290IGZzIgogSURTX1VOSVhGUyAgICAgICAgICAgICAgICAgInVuaXhmcyIKIElEU19ERVNLVE9QICAgICAgICAgICAgICAgICLBcmVhIGRlIHRyYWJhbGhvIgogSURTX1NIRUxMICAgICAgICAgICAgICAgICAgIlNoZWxsIgogSURTX1RJVExFRk1UICAgICAgICAgICAgICAgIiVzIC0gJXMiCiBJRFNfTk9fSU1QTCAgICAgICAgICAgICAgICAiQWluZGEgbuNvIGltcGxlbWVudGFkbyIKIElEU19XSU5FX0ZJTEUgICAgICAgICAgICAgICJXaW5lIEZpbGUiCiBJRFNfQ09MX05BTUUgICAgICAgICAgICAgICAiTm9tZSIKIElEU19DT0xfU0laRSAgICAgICAgICAgICAgICJUYW1hbmhvIgogSURTX0NPTF9DREFURSAgICAgICAgICAgICAgIkNEYXRhIgogSURTX0NPTF9BREFURSAgICAgICAgICAgICAgIkFEYXRhIgogSURTX0NPTF9NREFURSAgICAgICAgICAgICAgIk1EYXRhIgogSURTX0NPTF9JRFggICAgICAgICAgICAgICAgIs1uZGljZS9Jbm9kZSIKfQoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0UKClNUUklOR1RBQkxFCnsKIElEU19XSU5FRklMRSAgICAgICAgICAgICAgICJXaW5lZmlsZSIKIElEU19FUlJPUiAgICAgICAgICAgICAgICAgICJFcnJvIgogSURTX1JPT1RfRlMgICAgICAgICAgICAgICAgInJvb3QgZnMiCiBJRFNfVU5JWEZTICAgICAgICAgICAgICAgICAidW5peGZzIgogSURTX0RFU0tUT1AgICAgICAgICAgICAgICAgIkVjcuMiCiBJRFNfU0hFTEwgICAgICAgICAgICAgICAgICAiTGluaGEgZGUgQ29tYW5kb3MiCiBJRFNfVElUTEVGTVQgICAgICAgICAgICAgICAiJXMgLSAlcyIKIElEU19OT19JTVBMICAgICAgICAgICAgICAgICJBaW5kYSBu428gaW1wbGVtZW50YWRvIgogSURTX1dJTkVfRklMRSAgICAgICAgICAgICAgIkZpY2hlaXJvIFdpbmUiCiBJRFNfQ09MX05BTUUgICAgICAgICAgICAgICAiTm9tZSIKIElEU19DT0xfU0laRSAgICAgICAgICAgICAgICJUYW1hbmhvIgogSURTX0NPTF9DREFURSAgICAgICAgICAgICAgIkNEYXRhIgogSURTX0NPTF9BREFURSAgICAgICAgICAgICAgIkFEYXRhIgogSURTX0NPTF9NREFURSAgICAgICAgICAgICAgIk1EYXRhIgogSURTX0NPTF9JRFggICAgICAgICAgICAgICAgIs1uZGljZS9Jbm9kZSIKfQoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX05FVVRSQUwKClNUUklOR1RBQkxFCnsKIElEU19DT0xfTElOS1MgICAgICAgICAgICAgICJMaWdh5/VlcyIKIElEU19DT0xfQVRUUiAgICAgICAgICAgICAgICJBdHJpYnV0b3MiCiBJRFNfQ09MX1NFQyAgICAgICAgICAgICAgICAiU2VndXJhbudhIgoKIElEU19GUkVFX1NQQUNFX0ZNVCAgICAgICAgICIlcyBvZiAlcyBmcmVlIgp9Cg==