|
|
|
|
@@ -48,91 +48,368 @@ private:
|
|
|
|
|
jv[jss::Flags] = hsfOVERRIDE | hsfCOLLECT;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const std::vector<uint8_t> CallbackHook = {
|
|
|
|
|
0x00U, 0x61U, 0x73U, 0x6DU, 0x01U, 0x00U, 0x00U, 0x00U, 0x01U, 0x35U,
|
|
|
|
|
0x08U, 0x60U, 0x03U, 0x7FU, 0x7FU, 0x7EU, 0x01U, 0x7EU, 0x60U, 0x05U,
|
|
|
|
|
0x7FU, 0x7FU, 0x7FU, 0x7FU, 0x7FU, 0x01U, 0x7EU, 0x60U, 0x02U, 0x7FU,
|
|
|
|
|
0x7FU, 0x01U, 0x7EU, 0x60U, 0x04U, 0x7FU, 0x7FU, 0x7FU, 0x7FU, 0x01U,
|
|
|
|
|
0x7EU, 0x60U, 0x01U, 0x7FU, 0x01U, 0x7EU, 0x60U, 0x00U, 0x01U, 0x7EU,
|
|
|
|
|
0x60U, 0x03U, 0x7FU, 0x7FU, 0x7FU, 0x01U, 0x7EU, 0x60U, 0x02U, 0x7FU,
|
|
|
|
|
0x7FU, 0x01U, 0x7FU, 0x02U, 0xAEU, 0x01U, 0x0BU, 0x03U, 0x65U, 0x6EU,
|
|
|
|
|
0x76U, 0x06U, 0x61U, 0x63U, 0x63U, 0x65U, 0x70U, 0x74U, 0x00U, 0x00U,
|
|
|
|
|
0x03U, 0x65U, 0x6EU, 0x76U, 0x05U, 0x74U, 0x72U, 0x61U, 0x63U, 0x65U,
|
|
|
|
|
0x00U, 0x01U, 0x03U, 0x65U, 0x6EU, 0x76U, 0x0CU, 0x68U, 0x6FU, 0x6FU,
|
|
|
|
|
0x6BU, 0x5FU, 0x61U, 0x63U, 0x63U, 0x6FU, 0x75U, 0x6EU, 0x74U, 0x00U,
|
|
|
|
|
0x02U, 0x03U, 0x65U, 0x6EU, 0x76U, 0x0AU, 0x75U, 0x74U, 0x69U, 0x6CU,
|
|
|
|
|
0x5FU, 0x61U, 0x63U, 0x63U, 0x69U, 0x64U, 0x00U, 0x03U, 0x03U, 0x65U,
|
|
|
|
|
0x6EU, 0x76U, 0x0CU, 0x65U, 0x74U, 0x78U, 0x6EU, 0x5FU, 0x72U, 0x65U,
|
|
|
|
|
0x73U, 0x65U, 0x72U, 0x76U, 0x65U, 0x00U, 0x04U, 0x03U, 0x65U, 0x6EU,
|
|
|
|
|
0x76U, 0x0AU, 0x6CU, 0x65U, 0x64U, 0x67U, 0x65U, 0x72U, 0x5FU, 0x73U,
|
|
|
|
|
0x65U, 0x71U, 0x00U, 0x05U, 0x03U, 0x65U, 0x6EU, 0x76U, 0x0AU, 0x6FU,
|
|
|
|
|
0x74U, 0x78U, 0x6EU, 0x5FU, 0x66U, 0x69U, 0x65U, 0x6CU, 0x64U, 0x00U,
|
|
|
|
|
0x06U, 0x03U, 0x65U, 0x6EU, 0x76U, 0x0CU, 0x65U, 0x74U, 0x78U, 0x6EU,
|
|
|
|
|
0x5FU, 0x64U, 0x65U, 0x74U, 0x61U, 0x69U, 0x6CU, 0x73U, 0x00U, 0x02U,
|
|
|
|
|
0x03U, 0x65U, 0x6EU, 0x76U, 0x0DU, 0x65U, 0x74U, 0x78U, 0x6EU, 0x5FU,
|
|
|
|
|
0x66U, 0x65U, 0x65U, 0x5FU, 0x62U, 0x61U, 0x73U, 0x65U, 0x00U, 0x02U,
|
|
|
|
|
0x03U, 0x65U, 0x6EU, 0x76U, 0x04U, 0x65U, 0x6DU, 0x69U, 0x74U, 0x00U,
|
|
|
|
|
0x03U, 0x03U, 0x65U, 0x6EU, 0x76U, 0x02U, 0x5FU, 0x67U, 0x00U, 0x07U,
|
|
|
|
|
0x03U, 0x03U, 0x02U, 0x04U, 0x04U, 0x05U, 0x03U, 0x01U, 0x00U, 0x02U,
|
|
|
|
|
0x06U, 0x31U, 0x08U, 0x7FU, 0x01U, 0x41U, 0xE0U, 0x8BU, 0x04U, 0x0BU,
|
|
|
|
|
0x7FU, 0x00U, 0x41U, 0xA0U, 0x09U, 0x0BU, 0x7FU, 0x00U, 0x41U, 0x80U,
|
|
|
|
|
0x08U, 0x0BU, 0x7FU, 0x00U, 0x41U, 0xD1U, 0x0BU, 0x0BU, 0x7FU, 0x00U,
|
|
|
|
|
0x41U, 0x80U, 0x08U, 0x0BU, 0x7FU, 0x00U, 0x41U, 0xE0U, 0x8BU, 0x04U,
|
|
|
|
|
0x0BU, 0x7FU, 0x00U, 0x41U, 0x00U, 0x0BU, 0x7FU, 0x00U, 0x41U, 0x01U,
|
|
|
|
|
0x0BU, 0x07U, 0x0FU, 0x02U, 0x04U, 0x63U, 0x62U, 0x61U, 0x6BU, 0x00U,
|
|
|
|
|
0x0BU, 0x04U, 0x68U, 0x6FU, 0x6FU, 0x6BU, 0x00U, 0x0CU, 0x0AU, 0xA6U,
|
|
|
|
|
0x8EU, 0x00U, 0x02U, 0x8BU, 0x82U, 0x00U, 0x02U, 0x03U, 0x7EU, 0x04U,
|
|
|
|
|
0x7FU, 0x02U, 0x7EU, 0x23U, 0x00U, 0x21U, 0x04U, 0x20U, 0x04U, 0x41U,
|
|
|
|
|
0x10U, 0x6BU, 0x21U, 0x04U, 0x20U, 0x04U, 0x24U, 0x00U, 0x20U, 0x04U,
|
|
|
|
|
0x20U, 0x00U, 0x36U, 0x02U, 0x0CU, 0x20U, 0x04U, 0x41U, 0x08U, 0x6AU,
|
|
|
|
|
0x21U, 0x06U, 0x20U, 0x06U, 0x21U, 0x00U, 0x20U, 0x04U, 0x20U, 0x00U,
|
|
|
|
|
0x36U, 0x02U, 0x04U, 0x20U, 0x04U, 0x28U, 0x02U, 0x0CU, 0x21U, 0x00U,
|
|
|
|
|
0x20U, 0x00U, 0xADU, 0x21U, 0x01U, 0x20U, 0x01U, 0x42U, 0x18U, 0x88U,
|
|
|
|
|
0x21U, 0x01U, 0x20U, 0x01U, 0x42U, 0xFFU, 0x01U, 0x83U, 0x21U, 0x01U,
|
|
|
|
|
0x20U, 0x01U, 0xA7U, 0x21U, 0x00U, 0x20U, 0x04U, 0x28U, 0x02U, 0x04U,
|
|
|
|
|
0x21U, 0x05U, 0x20U, 0x05U, 0x20U, 0x00U, 0x3AU, 0x00U, 0x00U, 0x20U,
|
|
|
|
|
0x04U, 0x28U, 0x02U, 0x0CU, 0x21U, 0x00U, 0x20U, 0x00U, 0xADU, 0x21U,
|
|
|
|
|
0x01U, 0x20U, 0x01U, 0x42U, 0x10U, 0x88U, 0x21U, 0x01U, 0x20U, 0x01U,
|
|
|
|
|
0x42U, 0xFFU, 0x01U, 0x83U, 0x21U, 0x01U, 0x20U, 0x01U, 0xA7U, 0x21U,
|
|
|
|
|
0x00U, 0x20U, 0x04U, 0x28U, 0x02U, 0x04U, 0x21U, 0x05U, 0x20U, 0x05U,
|
|
|
|
|
0x20U, 0x00U, 0x3AU, 0x00U, 0x01U, 0x20U, 0x04U, 0x28U, 0x02U, 0x0CU,
|
|
|
|
|
0x21U, 0x00U, 0x20U, 0x00U, 0xADU, 0x21U, 0x01U, 0x20U, 0x01U, 0x42U,
|
|
|
|
|
0x08U, 0x88U, 0x21U, 0x01U, 0x20U, 0x01U, 0x42U, 0xFFU, 0x01U, 0x83U,
|
|
|
|
|
0x21U, 0x01U, 0x20U, 0x01U, 0xA7U, 0x21U, 0x00U, 0x20U, 0x04U, 0x28U,
|
|
|
|
|
0x02U, 0x04U, 0x21U, 0x05U, 0x20U, 0x05U, 0x20U, 0x00U, 0x3AU, 0x00U,
|
|
|
|
|
0x02U, 0x20U, 0x04U, 0x28U, 0x02U, 0x0CU, 0x21U, 0x00U, 0x20U, 0x00U,
|
|
|
|
|
0xADU, 0x21U, 0x01U, 0x20U, 0x01U, 0x42U, 0x00U, 0x88U, 0x21U, 0x01U,
|
|
|
|
|
0x20U, 0x01U, 0x42U, 0xFFU, 0x01U, 0x83U, 0x21U, 0x01U, 0x20U, 0x01U,
|
|
|
|
|
0xA7U, 0x21U, 0x00U, 0x20U, 0x04U, 0x28U, 0x02U, 0x04U, 0x21U, 0x05U,
|
|
|
|
|
0x20U, 0x05U, 0x20U, 0x00U, 0x3AU, 0x00U, 0x03U, 0x20U, 0x06U, 0x21U,
|
|
|
|
|
0x00U, 0x20U, 0x00U, 0x41U, 0x04U, 0x42U, 0x32U, 0x10U, 0x00U, 0x21U,
|
|
|
|
|
0x02U, 0x20U, 0x02U, 0x1AU, 0x20U, 0x04U, 0x41U, 0x10U, 0x6AU, 0x21U,
|
|
|
|
|
0x00U, 0x20U, 0x00U, 0x24U, 0x00U, 0x42U, 0x00U, 0x21U, 0x03U, 0x42U,
|
|
|
|
|
0x00U, 0x0BU, 0x0BU, 0x94U, 0x8CU, 0x00U, 0x02U, 0x09U, 0x7EU, 0x05U,
|
|
|
|
|
0x7FU, 0x02U, 0x40U, 0x02U, 0x40U, 0x23U, 0x00U, 0x21U, 0x0BU, 0x20U,
|
|
|
|
|
0x0BU, 0x41U, 0x80U, 0x01U, 0x6BU, 0x21U, 0x0BU, 0x20U, 0x0BU, 0x24U,
|
|
|
|
|
0x00U, 0x20U, 0x0BU, 0x20U, 0x00U, 0x36U, 0x02U, 0x7CU, 0x41U, 0xFBU,
|
|
|
|
|
0x08U, 0x41U, 0x15U, 0x41U, 0xE7U, 0x08U, 0x41U, 0x14U, 0x41U, 0x00U,
|
|
|
|
|
0x10U, 0x01U, 0x21U, 0x02U, 0x20U, 0x02U, 0x1AU, 0x41U, 0x9DU, 0x0AU,
|
|
|
|
|
0x41U, 0x14U, 0x10U, 0x02U, 0x21U, 0x03U, 0x20U, 0x03U, 0x1AU, 0x41U,
|
|
|
|
|
0xB3U, 0x0AU, 0x41U, 0x14U, 0x41U, 0x84U, 0x08U, 0x41U, 0x23U, 0x10U,
|
|
|
|
|
0x03U, 0x21U, 0x01U, 0x20U, 0x0BU, 0x20U, 0x01U, 0x37U, 0x03U, 0x58U,
|
|
|
|
|
0x41U, 0x01U, 0x10U, 0x04U, 0x21U, 0x04U, 0x20U, 0x04U, 0x1AU, 0x10U,
|
|
|
|
|
0x05U, 0x21U, 0x01U, 0x20U, 0x01U, 0xA7U, 0x21U, 0x00U, 0x20U, 0x00U,
|
|
|
|
|
0x41U, 0x01U, 0x6AU, 0x21U, 0x00U, 0x20U, 0x0BU, 0x20U, 0x00U, 0x36U,
|
|
|
|
|
0x02U, 0x54U, 0x20U, 0x0BU, 0x28U, 0x02U, 0x54U, 0x21U, 0x00U, 0x20U,
|
|
|
|
|
0x00U, 0x41U, 0xFFU, 0x01U, 0x71U, 0x21U, 0x00U, 0x20U, 0x00U, 0x41U,
|
|
|
|
|
0x18U, 0x74U, 0x21U, 0x00U, 0x20U, 0x0BU, 0x28U, 0x02U, 0x54U, 0x21U,
|
|
|
|
|
0x0AU, 0x20U, 0x0AU, 0x41U, 0x80U, 0xFEU, 0x03U, 0x71U, 0x21U, 0x0AU,
|
|
|
|
|
0x20U, 0x0AU, 0x41U, 0x08U, 0x74U, 0x21U, 0x0AU, 0x20U, 0x00U, 0x20U,
|
|
|
|
|
0x0AU, 0x72U, 0x21U, 0x00U, 0x20U, 0x0BU, 0x28U, 0x02U, 0x54U, 0x21U,
|
|
|
|
|
0x0AU, 0x20U, 0x0AU, 0x41U, 0x80U, 0x80U, 0xFCU, 0x07U, 0x71U, 0x21U,
|
|
|
|
|
0x0AU, 0x20U, 0x0AU, 0x41U, 0x08U, 0x76U, 0x21U, 0x0AU, 0x20U, 0x00U,
|
|
|
|
|
0x20U, 0x0AU, 0x72U, 0x21U, 0x00U, 0x20U, 0x0BU, 0x28U, 0x02U, 0x54U,
|
|
|
|
|
0x21U, 0x0AU, 0x20U, 0x0AU, 0x41U, 0x80U, 0x80U, 0x80U, 0x78U, 0x71U,
|
|
|
|
|
0x21U, 0x0AU, 0x20U, 0x0AU, 0x41U, 0x18U, 0x76U, 0x21U, 0x0AU, 0x20U,
|
|
|
|
|
0x00U, 0x20U, 0x0AU, 0x72U, 0x21U, 0x00U, 0x41U, 0x00U, 0x20U, 0x00U,
|
|
|
|
|
0x36U, 0x02U, 0xB4U, 0x09U, 0x20U, 0x0BU, 0x28U, 0x02U, 0x54U, 0x21U,
|
|
|
|
|
0x00U, 0x20U, 0x00U, 0x41U, 0x04U, 0x6AU, 0x21U, 0x00U, 0x20U, 0x0BU,
|
|
|
|
|
0x20U, 0x00U, 0x36U, 0x02U, 0x50U, 0x20U, 0x0BU, 0x28U, 0x02U, 0x50U,
|
|
|
|
|
0x21U, 0x00U, 0x20U, 0x00U, 0x41U, 0xFFU, 0x01U, 0x71U, 0x21U, 0x00U,
|
|
|
|
|
0x20U, 0x00U, 0x41U, 0x18U, 0x74U, 0x21U, 0x00U, 0x20U, 0x0BU, 0x28U,
|
|
|
|
|
0x02U, 0x50U, 0x21U, 0x0AU, 0x20U, 0x0AU, 0x41U, 0x80U, 0xFEU, 0x03U,
|
|
|
|
|
0x71U, 0x21U, 0x0AU, 0x20U, 0x0AU, 0x41U, 0x08U, 0x74U, 0x21U, 0x0AU,
|
|
|
|
|
0x20U, 0x00U, 0x20U, 0x0AU, 0x72U, 0x21U, 0x00U, 0x20U, 0x0BU, 0x28U,
|
|
|
|
|
0x02U, 0x50U, 0x21U, 0x0AU, 0x20U, 0x0AU, 0x41U, 0x80U, 0x80U, 0xFCU,
|
|
|
|
|
0x07U, 0x71U, 0x21U, 0x0AU, 0x20U, 0x0AU, 0x41U, 0x08U, 0x76U, 0x21U,
|
|
|
|
|
0x0AU, 0x20U, 0x00U, 0x20U, 0x0AU, 0x72U, 0x21U, 0x00U, 0x20U, 0x0BU,
|
|
|
|
|
0x28U, 0x02U, 0x50U, 0x21U, 0x0AU, 0x20U, 0x0AU, 0x41U, 0x80U, 0x80U,
|
|
|
|
|
0x80U, 0x78U, 0x71U, 0x21U, 0x0AU, 0x20U, 0x0AU, 0x41U, 0x18U, 0x76U,
|
|
|
|
|
0x21U, 0x0AU, 0x20U, 0x00U, 0x20U, 0x0AU, 0x72U, 0x21U, 0x00U, 0x41U,
|
|
|
|
|
0x00U, 0x20U, 0x00U, 0x36U, 0x02U, 0xBAU, 0x09U, 0x20U, 0x0BU, 0x42U,
|
|
|
|
|
0xC0U, 0x84U, 0x3DU, 0x37U, 0x03U, 0x48U, 0x20U, 0x0BU, 0x41U, 0xBFU,
|
|
|
|
|
0x09U, 0x36U, 0x02U, 0x44U, 0x20U, 0x0BU, 0x29U, 0x03U, 0x48U, 0x21U,
|
|
|
|
|
0x01U, 0x20U, 0x01U, 0x42U, 0x38U, 0x88U, 0x21U, 0x01U, 0x20U, 0x01U,
|
|
|
|
|
0x42U, 0x3FU, 0x83U, 0x21U, 0x01U, 0x20U, 0x01U, 0x42U, 0xC0U, 0x00U,
|
|
|
|
|
0x7CU, 0x21U, 0x01U, 0x20U, 0x01U, 0xA7U, 0x21U, 0x00U, 0x20U, 0x0BU,
|
|
|
|
|
0x28U, 0x02U, 0x44U, 0x21U, 0x0AU, 0x20U, 0x0AU, 0x41U, 0x01U, 0x6AU,
|
|
|
|
|
0x21U, 0x0CU, 0x20U, 0x0BU, 0x20U, 0x0CU, 0x36U, 0x02U, 0x44U, 0x20U,
|
|
|
|
|
0x0AU, 0x20U, 0x00U, 0x3AU, 0x00U, 0x00U, 0x20U, 0x0BU, 0x29U, 0x03U,
|
|
|
|
|
0x48U, 0x21U, 0x01U, 0x20U, 0x01U, 0x42U, 0x30U, 0x88U, 0x21U, 0x01U,
|
|
|
|
|
0x20U, 0x01U, 0x42U, 0xFFU, 0x01U, 0x83U, 0x21U, 0x01U, 0x20U, 0x01U,
|
|
|
|
|
0xA7U, 0x21U, 0x00U, 0x20U, 0x0BU, 0x28U, 0x02U, 0x44U, 0x21U, 0x0AU,
|
|
|
|
|
0x20U, 0x0AU, 0x41U, 0x01U, 0x6AU, 0x21U, 0x0CU, 0x20U, 0x0BU, 0x20U,
|
|
|
|
|
0x0CU, 0x36U, 0x02U, 0x44U, 0x20U, 0x0AU, 0x20U, 0x00U, 0x3AU, 0x00U,
|
|
|
|
|
0x00U, 0x20U, 0x0BU, 0x29U, 0x03U, 0x48U, 0x21U, 0x01U, 0x20U, 0x01U,
|
|
|
|
|
0x42U, 0x28U, 0x88U, 0x21U, 0x01U, 0x20U, 0x01U, 0x42U, 0xFFU, 0x01U,
|
|
|
|
|
0x83U, 0x21U, 0x01U, 0x20U, 0x01U, 0xA7U, 0x21U, 0x00U, 0x20U, 0x0BU,
|
|
|
|
|
0x28U, 0x02U, 0x44U, 0x21U, 0x0AU, 0x20U, 0x0AU, 0x41U, 0x01U, 0x6AU,
|
|
|
|
|
0x21U, 0x0CU, 0x20U, 0x0BU, 0x20U, 0x0CU, 0x36U, 0x02U, 0x44U, 0x20U,
|
|
|
|
|
0x0AU, 0x20U, 0x00U, 0x3AU, 0x00U, 0x00U, 0x20U, 0x0BU, 0x29U, 0x03U,
|
|
|
|
|
0x48U, 0x21U, 0x01U, 0x20U, 0x01U, 0x42U, 0x20U, 0x88U, 0x21U, 0x01U,
|
|
|
|
|
0x20U, 0x01U, 0x42U, 0xFFU, 0x01U, 0x83U, 0x21U, 0x01U, 0x20U, 0x01U,
|
|
|
|
|
0xA7U, 0x21U, 0x00U, 0x20U, 0x0BU, 0x28U, 0x02U, 0x44U, 0x21U, 0x0AU,
|
|
|
|
|
0x20U, 0x0AU, 0x41U, 0x01U, 0x6AU, 0x21U, 0x0CU, 0x20U, 0x0BU, 0x20U,
|
|
|
|
|
0x0CU, 0x36U, 0x02U, 0x44U, 0x20U, 0x0AU, 0x20U, 0x00U, 0x3AU, 0x00U,
|
|
|
|
|
0x00U, 0x20U, 0x0BU, 0x29U, 0x03U, 0x48U, 0x21U, 0x01U, 0x20U, 0x01U,
|
|
|
|
|
0x42U, 0x18U, 0x88U, 0x21U, 0x01U, 0x20U, 0x01U, 0x42U, 0xFFU, 0x01U,
|
|
|
|
|
0x83U, 0x21U, 0x01U, 0x20U, 0x01U, 0xA7U, 0x21U, 0x00U, 0x20U, 0x0BU,
|
|
|
|
|
0x28U, 0x02U, 0x44U, 0x21U, 0x0AU, 0x20U, 0x0AU, 0x41U, 0x01U, 0x6AU,
|
|
|
|
|
0x21U, 0x0CU, 0x20U, 0x0BU, 0x20U, 0x0CU, 0x36U, 0x02U, 0x44U, 0x20U,
|
|
|
|
|
0x0AU, 0x20U, 0x00U, 0x3AU, 0x00U, 0x00U, 0x20U, 0x0BU, 0x29U, 0x03U,
|
|
|
|
|
0x48U, 0x21U, 0x01U, 0x20U, 0x01U, 0x42U, 0x10U, 0x88U, 0x21U, 0x01U,
|
|
|
|
|
0x20U, 0x01U, 0x42U, 0xFFU, 0x01U, 0x83U, 0x21U, 0x01U, 0x20U, 0x01U,
|
|
|
|
|
0xA7U, 0x21U, 0x00U, 0x20U, 0x0BU, 0x28U, 0x02U, 0x44U, 0x21U, 0x0AU,
|
|
|
|
|
0x20U, 0x0AU, 0x41U, 0x01U, 0x6AU, 0x21U, 0x0CU, 0x20U, 0x0BU, 0x20U,
|
|
|
|
|
0x0CU, 0x36U, 0x02U, 0x44U, 0x20U, 0x0AU, 0x20U, 0x00U, 0x3AU, 0x00U,
|
|
|
|
|
0x00U, 0x20U, 0x0BU, 0x29U, 0x03U, 0x48U, 0x21U, 0x01U, 0x20U, 0x01U,
|
|
|
|
|
0x42U, 0x08U, 0x88U, 0x21U, 0x01U, 0x20U, 0x01U, 0x42U, 0xFFU, 0x01U,
|
|
|
|
|
0x83U, 0x21U, 0x01U, 0x20U, 0x01U, 0xA7U, 0x21U, 0x00U, 0x20U, 0x0BU,
|
|
|
|
|
0x28U, 0x02U, 0x44U, 0x21U, 0x0AU, 0x20U, 0x0AU, 0x41U, 0x01U, 0x6AU,
|
|
|
|
|
0x21U, 0x0CU, 0x20U, 0x0BU, 0x20U, 0x0CU, 0x36U, 0x02U, 0x44U, 0x20U,
|
|
|
|
|
0x0AU, 0x20U, 0x00U, 0x3AU, 0x00U, 0x00U, 0x20U, 0x0BU, 0x29U, 0x03U,
|
|
|
|
|
0x48U, 0x21U, 0x01U, 0x20U, 0x01U, 0x42U, 0x00U, 0x88U, 0x21U, 0x01U,
|
|
|
|
|
0x20U, 0x01U, 0x42U, 0xFFU, 0x01U, 0x83U, 0x21U, 0x01U, 0x20U, 0x01U,
|
|
|
|
|
0xA7U, 0x21U, 0x00U, 0x20U, 0x0BU, 0x28U, 0x02U, 0x44U, 0x21U, 0x0AU,
|
|
|
|
|
0x20U, 0x0AU, 0x41U, 0x01U, 0x6AU, 0x21U, 0x0CU, 0x20U, 0x0BU, 0x20U,
|
|
|
|
|
0x0CU, 0x36U, 0x02U, 0x44U, 0x20U, 0x0AU, 0x20U, 0x00U, 0x3AU, 0x00U,
|
|
|
|
|
0x00U, 0x41U, 0xAEU, 0x09U, 0x41U, 0x04U, 0x41U, 0x83U, 0x80U, 0x08U,
|
|
|
|
|
0x10U, 0x06U, 0x21U, 0x01U, 0x20U, 0x01U, 0x42U, 0x04U, 0x51U, 0x21U,
|
|
|
|
|
0x00U, 0x20U, 0x00U, 0x41U, 0x01U, 0x71U, 0x21U, 0x00U, 0x20U, 0x00U,
|
|
|
|
|
0x45U, 0x21U, 0x00U, 0x20U, 0x00U, 0x45U, 0x21U, 0x00U, 0x0BU, 0x20U,
|
|
|
|
|
0x00U, 0x04U, 0x40U, 0x02U, 0x40U, 0x41U, 0x00U, 0x41U, 0x2EU, 0x3AU,
|
|
|
|
|
0x00U, 0xADU, 0x09U, 0x01U, 0x0BU, 0x05U, 0x01U, 0x0BU, 0x0BU, 0x02U,
|
|
|
|
|
0x7EU, 0x02U, 0x40U, 0x02U, 0x40U, 0x41U, 0xC7U, 0x0AU, 0x41U, 0x8AU,
|
|
|
|
|
0x01U, 0x10U, 0x07U, 0x21U, 0x05U, 0x20U, 0x05U, 0x1AU, 0x41U, 0xA0U,
|
|
|
|
|
0x09U, 0x41U, 0xB1U, 0x02U, 0x10U, 0x08U, 0x21U, 0x01U, 0x20U, 0x0BU,
|
|
|
|
|
0x20U, 0x01U, 0x37U, 0x03U, 0x38U, 0x20U, 0x0BU, 0x41U, 0xF0U, 0x09U,
|
|
|
|
|
0x36U, 0x02U, 0x34U, 0x20U, 0x0BU, 0x29U, 0x03U, 0x38U, 0x21U, 0x01U,
|
|
|
|
|
0x20U, 0x01U, 0x42U, 0x38U, 0x87U, 0x21U, 0x01U, 0x20U, 0x01U, 0x42U,
|
|
|
|
|
0x3FU, 0x83U, 0x21U, 0x01U, 0x20U, 0x01U, 0x42U, 0xC0U, 0x00U, 0x7CU,
|
|
|
|
|
0x21U, 0x01U, 0x20U, 0x01U, 0xA7U, 0x21U, 0x00U, 0x20U, 0x0BU, 0x28U,
|
|
|
|
|
0x02U, 0x34U, 0x21U, 0x0AU, 0x20U, 0x0AU, 0x41U, 0x01U, 0x6AU, 0x21U,
|
|
|
|
|
0x0CU, 0x20U, 0x0BU, 0x20U, 0x0CU, 0x36U, 0x02U, 0x34U, 0x20U, 0x0AU,
|
|
|
|
|
0x20U, 0x00U, 0x3AU, 0x00U, 0x00U, 0x20U, 0x0BU, 0x29U, 0x03U, 0x38U,
|
|
|
|
|
0x21U, 0x01U, 0x20U, 0x01U, 0x42U, 0x30U, 0x87U, 0x21U, 0x01U, 0x20U,
|
|
|
|
|
0x01U, 0x42U, 0xFFU, 0x01U, 0x83U, 0x21U, 0x01U, 0x20U, 0x01U, 0xA7U,
|
|
|
|
|
0x21U, 0x00U, 0x20U, 0x0BU, 0x28U, 0x02U, 0x34U, 0x21U, 0x0AU, 0x20U,
|
|
|
|
|
0x0AU, 0x41U, 0x01U, 0x6AU, 0x21U, 0x0CU, 0x20U, 0x0BU, 0x20U, 0x0CU,
|
|
|
|
|
0x36U, 0x02U, 0x34U, 0x20U, 0x0AU, 0x20U, 0x00U, 0x3AU, 0x00U, 0x00U,
|
|
|
|
|
0x20U, 0x0BU, 0x29U, 0x03U, 0x38U, 0x21U, 0x01U, 0x20U, 0x01U, 0x42U,
|
|
|
|
|
0x28U, 0x87U, 0x21U, 0x01U, 0x20U, 0x01U, 0x42U, 0xFFU, 0x01U, 0x83U,
|
|
|
|
|
0x21U, 0x01U, 0x20U, 0x01U, 0xA7U, 0x21U, 0x00U, 0x20U, 0x0BU, 0x28U,
|
|
|
|
|
0x02U, 0x34U, 0x21U, 0x0AU, 0x20U, 0x0AU, 0x41U, 0x01U, 0x6AU, 0x21U,
|
|
|
|
|
0x0CU, 0x20U, 0x0BU, 0x20U, 0x0CU, 0x36U, 0x02U, 0x34U, 0x20U, 0x0AU,
|
|
|
|
|
0x20U, 0x00U, 0x3AU, 0x00U, 0x00U, 0x20U, 0x0BU, 0x29U, 0x03U, 0x38U,
|
|
|
|
|
0x21U, 0x01U, 0x20U, 0x01U, 0x42U, 0x20U, 0x87U, 0x21U, 0x01U, 0x20U,
|
|
|
|
|
0x01U, 0x42U, 0xFFU, 0x01U, 0x83U, 0x21U, 0x01U, 0x20U, 0x01U, 0xA7U,
|
|
|
|
|
0x21U, 0x00U, 0x20U, 0x0BU, 0x28U, 0x02U, 0x34U, 0x21U, 0x0AU, 0x20U,
|
|
|
|
|
0x0AU, 0x41U, 0x01U, 0x6AU, 0x21U, 0x0CU, 0x20U, 0x0BU, 0x20U, 0x0CU,
|
|
|
|
|
0x36U, 0x02U, 0x34U, 0x20U, 0x0AU, 0x20U, 0x00U, 0x3AU, 0x00U, 0x00U,
|
|
|
|
|
0x20U, 0x0BU, 0x29U, 0x03U, 0x38U, 0x21U, 0x01U, 0x20U, 0x01U, 0x42U,
|
|
|
|
|
0x18U, 0x87U, 0x21U, 0x01U, 0x20U, 0x01U, 0x42U, 0xFFU, 0x01U, 0x83U,
|
|
|
|
|
0x21U, 0x01U, 0x20U, 0x01U, 0xA7U, 0x21U, 0x00U, 0x20U, 0x0BU, 0x28U,
|
|
|
|
|
0x02U, 0x34U, 0x21U, 0x0AU, 0x20U, 0x0AU, 0x41U, 0x01U, 0x6AU, 0x21U,
|
|
|
|
|
0x0CU, 0x20U, 0x0BU, 0x20U, 0x0CU, 0x36U, 0x02U, 0x34U, 0x20U, 0x0AU,
|
|
|
|
|
0x20U, 0x00U, 0x3AU, 0x00U, 0x00U, 0x20U, 0x0BU, 0x29U, 0x03U, 0x38U,
|
|
|
|
|
0x21U, 0x01U, 0x20U, 0x01U, 0x42U, 0x10U, 0x87U, 0x21U, 0x01U, 0x20U,
|
|
|
|
|
0x01U, 0x42U, 0xFFU, 0x01U, 0x83U, 0x21U, 0x01U, 0x20U, 0x01U, 0xA7U,
|
|
|
|
|
0x21U, 0x00U, 0x20U, 0x0BU, 0x28U, 0x02U, 0x34U, 0x21U, 0x0AU, 0x20U,
|
|
|
|
|
0x0AU, 0x41U, 0x01U, 0x6AU, 0x21U, 0x0CU, 0x20U, 0x0BU, 0x20U, 0x0CU,
|
|
|
|
|
0x36U, 0x02U, 0x34U, 0x20U, 0x0AU, 0x20U, 0x00U, 0x3AU, 0x00U, 0x00U,
|
|
|
|
|
0x20U, 0x0BU, 0x29U, 0x03U, 0x38U, 0x21U, 0x01U, 0x20U, 0x01U, 0x42U,
|
|
|
|
|
0x08U, 0x87U, 0x21U, 0x01U, 0x20U, 0x01U, 0x42U, 0xFFU, 0x01U, 0x83U,
|
|
|
|
|
0x21U, 0x01U, 0x20U, 0x01U, 0xA7U, 0x21U, 0x00U, 0x20U, 0x0BU, 0x28U,
|
|
|
|
|
0x02U, 0x34U, 0x21U, 0x0AU, 0x20U, 0x0AU, 0x41U, 0x01U, 0x6AU, 0x21U,
|
|
|
|
|
0x0CU, 0x20U, 0x0BU, 0x20U, 0x0CU, 0x36U, 0x02U, 0x34U, 0x20U, 0x0AU,
|
|
|
|
|
0x20U, 0x00U, 0x3AU, 0x00U, 0x00U, 0x20U, 0x0BU, 0x29U, 0x03U, 0x38U,
|
|
|
|
|
0x21U, 0x01U, 0x20U, 0x01U, 0x42U, 0x00U, 0x87U, 0x21U, 0x01U, 0x20U,
|
|
|
|
|
0x01U, 0x42U, 0xFFU, 0x01U, 0x83U, 0x21U, 0x01U, 0x20U, 0x01U, 0xA7U,
|
|
|
|
|
0x21U, 0x00U, 0x20U, 0x0BU, 0x28U, 0x02U, 0x34U, 0x21U, 0x0AU, 0x20U,
|
|
|
|
|
0x0AU, 0x41U, 0x01U, 0x6AU, 0x21U, 0x0CU, 0x20U, 0x0BU, 0x20U, 0x0CU,
|
|
|
|
|
0x36U, 0x02U, 0x34U, 0x20U, 0x0AU, 0x20U, 0x00U, 0x3AU, 0x00U, 0x00U,
|
|
|
|
|
0x41U, 0x80U, 0x08U, 0x41U, 0x03U, 0x41U, 0xA0U, 0x09U, 0x41U, 0xB1U,
|
|
|
|
|
0x02U, 0x41U, 0x01U, 0x10U, 0x01U, 0x21U, 0x06U, 0x20U, 0x06U, 0x1AU,
|
|
|
|
|
0x20U, 0x0BU, 0x41U, 0x10U, 0x6AU, 0x21U, 0x00U, 0x20U, 0x00U, 0x41U,
|
|
|
|
|
0x20U, 0x41U, 0xA0U, 0x09U, 0x41U, 0xB1U, 0x02U, 0x10U, 0x09U, 0x21U,
|
|
|
|
|
0x01U, 0x20U, 0x0BU, 0x20U, 0x01U, 0x37U, 0x03U, 0x08U, 0x20U, 0x0BU,
|
|
|
|
|
0x29U, 0x03U, 0x08U, 0x21U, 0x01U, 0x20U, 0x01U, 0x42U, 0x00U, 0x55U,
|
|
|
|
|
0x21U, 0x00U, 0x20U, 0x00U, 0x41U, 0x01U, 0x71U, 0x21U, 0x00U, 0x20U,
|
|
|
|
|
0x00U, 0x45U, 0x21U, 0x00U, 0x20U, 0x00U, 0x45U, 0x21U, 0x00U, 0x0BU,
|
|
|
|
|
0x20U, 0x00U, 0x04U, 0x40U, 0x02U, 0x40U, 0x02U, 0x40U, 0x41U, 0xA7U,
|
|
|
|
|
0x08U, 0x41U, 0x20U, 0x42U, 0xF5U, 0x00U, 0x10U, 0x00U, 0x21U, 0x07U,
|
|
|
|
|
0x20U, 0x07U, 0x1AU, 0x0BU, 0x01U, 0x0BU, 0x05U, 0x01U, 0x0BU, 0x0BU,
|
|
|
|
|
0x02U, 0x7EU, 0x02U, 0x7EU, 0x41U, 0xC7U, 0x08U, 0x41U, 0x20U, 0x42U,
|
|
|
|
|
0xF7U, 0x00U, 0x10U, 0x00U, 0x21U, 0x08U, 0x20U, 0x08U, 0x1AU, 0x41U,
|
|
|
|
|
0x01U, 0x41U, 0x01U, 0x10U, 0x0AU, 0x21U, 0x0DU, 0x20U, 0x0DU, 0x1AU,
|
|
|
|
|
0x20U, 0x0BU, 0x41U, 0x80U, 0x01U, 0x6AU, 0x21U, 0x00U, 0x20U, 0x00U,
|
|
|
|
|
0x24U, 0x00U, 0x42U, 0x00U, 0x21U, 0x09U, 0x42U, 0x00U, 0x0BU, 0x0BU,
|
|
|
|
|
0x0BU, 0x0BU, 0x0BU, 0x88U, 0x02U, 0x04U, 0x00U, 0x41U, 0x80U, 0x08U,
|
|
|
|
|
0x0BU, 0x90U, 0x01U, 0x74U, 0x78U, 0x6EU, 0x00U, 0x72U, 0x50U, 0x4DU,
|
|
|
|
|
0x68U, 0x37U, 0x50U, 0x69U, 0x39U, 0x63U, 0x74U, 0x36U, 0x39U, 0x39U,
|
|
|
|
|
0x69U, 0x5AU, 0x55U, 0x54U, 0x57U, 0x61U, 0x79U, 0x74U, 0x4AU, 0x55U,
|
|
|
|
|
0x6FU, 0x48U, 0x63U, 0x4AU, 0x37U, 0x63U, 0x67U, 0x79U, 0x7AU, 0x69U,
|
|
|
|
|
0x4BU, 0x00U, 0x63U, 0x61U, 0x6CU, 0x6CU, 0x62U, 0x61U, 0x63U, 0x6BU,
|
|
|
|
|
0x2EU, 0x63U, 0x3AU, 0x20U, 0x54U, 0x78U, 0x20U, 0x65U, 0x6DU, 0x69U,
|
|
|
|
|
0x74U, 0x74U, 0x65U, 0x64U, 0x20U, 0x73U, 0x75U, 0x63U, 0x63U, 0x65U,
|
|
|
|
|
0x73U, 0x73U, 0x2EU, 0x00U, 0x63U, 0x61U, 0x6CU, 0x6CU, 0x62U, 0x61U,
|
|
|
|
|
0x63U, 0x6BU, 0x2EU, 0x63U, 0x3AU, 0x20U, 0x54U, 0x78U, 0x20U, 0x65U,
|
|
|
|
|
0x6DU, 0x69U, 0x74U, 0x74U, 0x65U, 0x64U, 0x20U, 0x66U, 0x61U, 0x69U,
|
|
|
|
|
0x6CU, 0x75U, 0x72U, 0x65U, 0x2EU, 0x00U, 0x63U, 0x61U, 0x6CU, 0x6CU,
|
|
|
|
|
0x62U, 0x61U, 0x63U, 0x6BU, 0x2EU, 0x63U, 0x3AU, 0x20U, 0x43U, 0x61U,
|
|
|
|
|
0x6CU, 0x6CU, 0x65U, 0x64U, 0x2EU, 0x00U, 0x22U, 0x63U, 0x61U, 0x6CU,
|
|
|
|
|
0x6CU, 0x62U, 0x61U, 0x63U, 0x6BU, 0x2EU, 0x63U, 0x3AU, 0x20U, 0x43U,
|
|
|
|
|
0x61U, 0x6CU, 0x6CU, 0x65U, 0x64U, 0x2EU, 0x22U, 0x00U, 0x41U, 0xA0U,
|
|
|
|
|
0x09U, 0x0BU, 0x5AU, 0x12U, 0x00U, 0x00U, 0x22U, 0x80U, 0x00U, 0x00U,
|
|
|
|
|
0x00U, 0x24U, 0x00U, 0x00U, 0x00U, 0x00U, 0x99U, 0x99U, 0x99U, 0x99U,
|
|
|
|
|
0x99U, 0x20U, 0x1AU, 0x00U, 0x00U, 0x00U, 0x00U, 0x20U, 0x1BU, 0x00U,
|
|
|
|
|
0x00U, 0x00U, 0x00U, 0x61U, 0x99U, 0x99U, 0x99U, 0x99U, 0x99U, 0x99U,
|
|
|
|
|
0x99U, 0x99U, 0x99U, 0x99U, 0x99U, 0x99U, 0x99U, 0x99U, 0x99U, 0x99U,
|
|
|
|
|
0x99U, 0x99U, 0x99U, 0x99U, 0x99U, 0x99U, 0x99U, 0x99U, 0x99U, 0x99U,
|
|
|
|
|
0x99U, 0x99U, 0x99U, 0x99U, 0x99U, 0x99U, 0x99U, 0x99U, 0x99U, 0x99U,
|
|
|
|
|
0x99U, 0x99U, 0x99U, 0x99U, 0x99U, 0x99U, 0x99U, 0x99U, 0x99U, 0x99U,
|
|
|
|
|
0x99U, 0x99U, 0x68U, 0x40U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U,
|
|
|
|
|
0x00U, 0x73U, 0x21U, 0x00U, 0x41U, 0x9BU, 0x0AU, 0x0BU, 0x02U, 0x81U,
|
|
|
|
|
0x14U, 0x00U, 0x41U, 0xB1U, 0x0AU, 0x0BU, 0x02U, 0x83U, 0x14U};
|
|
|
|
|
|
|
|
|
|
const std::vector<uint8_t> TshHook = {
|
|
|
|
|
0x00U, 0x61U, 0x73U, 0x6dU, 0x01U, 0x00U, 0x00U, 0x00U, 0x01U, 0x1cU,
|
|
|
|
|
0x04U, 0x60U, 0x05U, 0x7fU, 0x7fU, 0x7fU, 0x7fU, 0x7fU, 0x01U, 0x7eU,
|
|
|
|
|
0x60U, 0x03U, 0x7fU, 0x7fU, 0x7eU, 0x01U, 0x7eU, 0x60U, 0x02U, 0x7fU,
|
|
|
|
|
0x7fU, 0x01U, 0x7fU, 0x60U, 0x01U, 0x7fU, 0x01U, 0x7eU, 0x02U, 0x23U,
|
|
|
|
|
0x03U, 0x03U, 0x65U, 0x6eU, 0x76U, 0x05U, 0x74U, 0x72U, 0x61U, 0x63U,
|
|
|
|
|
0x65U, 0x00U, 0x00U, 0x03U, 0x65U, 0x6eU, 0x76U, 0x06U, 0x61U, 0x63U,
|
|
|
|
|
0x63U, 0x65U, 0x70U, 0x74U, 0x00U, 0x01U, 0x03U, 0x65U, 0x6eU, 0x76U,
|
|
|
|
|
0x02U, 0x5fU, 0x67U, 0x00U, 0x02U, 0x03U, 0x02U, 0x01U, 0x03U, 0x05U,
|
|
|
|
|
0x03U, 0x01U, 0x00U, 0x02U, 0x06U, 0x2bU, 0x07U, 0x7fU, 0x01U, 0x41U,
|
|
|
|
|
0xc0U, 0x8bU, 0x04U, 0x0bU, 0x7fU, 0x00U, 0x41U, 0x80U, 0x08U, 0x0bU,
|
|
|
|
|
0x7fU, 0x00U, 0x41U, 0xb8U, 0x0bU, 0x0bU, 0x7fU, 0x00U, 0x41U, 0x80U,
|
|
|
|
|
0x08U, 0x0bU, 0x7fU, 0x00U, 0x41U, 0xc0U, 0x8bU, 0x04U, 0x0bU, 0x7fU,
|
|
|
|
|
0x00U, 0x41U, 0x00U, 0x0bU, 0x7fU, 0x00U, 0x41U, 0x01U, 0x0bU, 0x07U,
|
|
|
|
|
0x08U, 0x01U, 0x04U, 0x68U, 0x6fU, 0x6fU, 0x6bU, 0x00U, 0x03U, 0x0aU,
|
|
|
|
|
0xf3U, 0x81U, 0x00U, 0x01U, 0xefU, 0x81U, 0x00U, 0x01U, 0x01U, 0x7fU,
|
|
|
|
|
0x23U, 0x00U, 0x41U, 0x10U, 0x6bU, 0x22U, 0x01U, 0x24U, 0x00U, 0x20U,
|
|
|
|
|
0x01U, 0x20U, 0x00U, 0x36U, 0x02U, 0x0cU, 0x41U, 0x9aU, 0x0bU, 0x41U,
|
|
|
|
|
0x0fU, 0x41U, 0xbdU, 0x09U, 0x41U, 0x0eU, 0x41U, 0x00U, 0x10U, 0x00U,
|
|
|
|
|
0x1aU, 0x02U, 0x40U, 0x02U, 0x40U, 0x02U, 0x40U, 0x02U, 0x40U, 0x20U,
|
|
|
|
|
0x01U, 0x28U, 0x02U, 0x0cU, 0x0eU, 0x03U, 0x00U, 0x01U, 0x02U, 0x03U,
|
|
|
|
|
0x0bU, 0x41U, 0xd9U, 0x0aU, 0x41U, 0xc0U, 0x00U, 0x41U, 0xfeU, 0x08U,
|
|
|
|
|
0x41U, 0x3fU, 0x41U, 0x00U, 0x10U, 0x00U, 0x1aU, 0x0cU, 0x02U, 0x0bU,
|
|
|
|
|
0x41U, 0x9bU, 0x0aU, 0x41U, 0x3dU, 0x41U, 0xc2U, 0x08U, 0x41U, 0x3cU,
|
|
|
|
|
0x41U, 0x00U, 0x10U, 0x00U, 0x1aU, 0x0cU, 0x01U, 0x0bU, 0x41U, 0xd7U,
|
|
|
|
|
0x09U, 0x41U, 0xc3U, 0x00U, 0x41U, 0x80U, 0x08U, 0x41U, 0xc2U, 0x00U,
|
|
|
|
|
0x41U, 0x00U, 0x10U, 0x00U, 0x1aU, 0x0bU, 0x41U, 0xaaU, 0x0bU, 0x41U,
|
|
|
|
|
0x0dU, 0x41U, 0xcbU, 0x09U, 0x41U, 0x0cU, 0x41U, 0x00U, 0x10U, 0x00U,
|
|
|
|
|
0x1aU, 0x20U, 0x01U, 0x20U, 0x01U, 0x41U, 0x08U, 0x6aU, 0x22U, 0x00U,
|
|
|
|
|
0x36U, 0x02U, 0x04U, 0x20U, 0x01U, 0x28U, 0x02U, 0x04U, 0x20U, 0x01U,
|
|
|
|
|
0x35U, 0x02U, 0x0cU, 0x42U, 0x18U, 0x88U, 0x42U, 0xffU, 0x01U, 0x83U,
|
|
|
|
|
0x3cU, 0x00U, 0x00U, 0x20U, 0x01U, 0x28U, 0x02U, 0x04U, 0x20U, 0x01U,
|
|
|
|
|
0x35U, 0x02U, 0x0cU, 0x42U, 0x10U, 0x88U, 0x42U, 0xffU, 0x01U, 0x83U,
|
|
|
|
|
0x3cU, 0x00U, 0x01U, 0x20U, 0x01U, 0x28U, 0x02U, 0x04U, 0x20U, 0x01U,
|
|
|
|
|
0x35U, 0x02U, 0x0cU, 0x42U, 0x08U, 0x88U, 0x42U, 0xffU, 0x01U, 0x83U,
|
|
|
|
|
0x3cU, 0x00U, 0x02U, 0x20U, 0x01U, 0x28U, 0x02U, 0x04U, 0x20U, 0x01U,
|
|
|
|
|
0x35U, 0x02U, 0x0cU, 0x42U, 0xffU, 0x01U, 0x83U, 0x3cU, 0x00U, 0x03U,
|
|
|
|
|
0x20U, 0x00U, 0x41U, 0x04U, 0x42U, 0x18U, 0x10U, 0x01U, 0x1aU, 0x41U,
|
|
|
|
|
0x01U, 0x41U, 0x01U, 0x10U, 0x02U, 0x1aU, 0x20U, 0x01U, 0x41U, 0x10U,
|
|
|
|
|
0x6aU, 0x24U, 0x00U, 0x42U, 0x00U, 0x0bU, 0x0bU, 0xbfU, 0x03U, 0x01U,
|
|
|
|
|
0x00U, 0x41U, 0x80U, 0x08U, 0x0bU, 0xb7U, 0x03U, 0x74U, 0x73U, 0x68U,
|
|
|
|
|
0x2eU, 0x63U, 0x3aU, 0x20U, 0x57U, 0x65U, 0x61U, 0x6bU, 0x20U, 0x41U,
|
|
|
|
|
0x67U, 0x61U, 0x69U, 0x6eU, 0x2eU, 0x20U, 0x45U, 0x78U, 0x65U, 0x63U,
|
|
|
|
|
0x75U, 0x74U, 0x65U, 0x20U, 0x41U, 0x46U, 0x54U, 0x45U, 0x52U, 0x20U,
|
|
|
|
|
0x74U, 0x72U, 0x61U, 0x6eU, 0x73U, 0x61U, 0x63U, 0x74U, 0x69U, 0x6fU,
|
|
|
|
|
0x6eU, 0x20U, 0x69U, 0x73U, 0x20U, 0x61U, 0x70U, 0x70U, 0x6cU, 0x69U,
|
|
|
|
|
0x65U, 0x64U, 0x20U, 0x74U, 0x6fU, 0x20U, 0x6cU, 0x65U, 0x64U, 0x67U,
|
|
|
|
|
0x65U, 0x72U, 0x00U, 0x74U, 0x73U, 0x68U, 0x2eU, 0x63U, 0x3aU, 0x20U,
|
|
|
|
|
0x57U, 0x65U, 0x61U, 0x6bU, 0x2eU, 0x20U, 0x45U, 0x78U, 0x65U, 0x63U,
|
|
|
|
|
0x75U, 0x74U, 0x65U, 0x20U, 0x41U, 0x46U, 0x54U, 0x45U, 0x52U, 0x20U,
|
|
|
|
|
0x74U, 0x72U, 0x61U, 0x6eU, 0x73U, 0x61U, 0x63U, 0x74U, 0x69U, 0x6fU,
|
|
|
|
|
0x6eU, 0x20U, 0x69U, 0x73U, 0x20U, 0x61U, 0x70U, 0x70U, 0x6cU, 0x69U,
|
|
|
|
|
0x65U, 0x64U, 0x20U, 0x74U, 0x6fU, 0x20U, 0x6cU, 0x65U, 0x64U, 0x67U,
|
|
|
|
|
0x65U, 0x72U, 0x00U, 0x74U, 0x73U, 0x68U, 0x2eU, 0x63U, 0x3aU, 0x20U,
|
|
|
|
|
0x53U, 0x74U, 0x72U, 0x6fU, 0x6eU, 0x67U, 0x2eU, 0x20U, 0x45U, 0x78U,
|
|
|
|
|
0x65U, 0x63U, 0x75U, 0x74U, 0x65U, 0x20U, 0x42U, 0x45U, 0x46U, 0x4fU,
|
|
|
|
|
0x52U, 0x45U, 0x20U, 0x74U, 0x72U, 0x61U, 0x6eU, 0x73U, 0x61U, 0x63U,
|
|
|
|
|
0x74U, 0x69U, 0x6fU, 0x6eU, 0x20U, 0x69U, 0x73U, 0x20U, 0x61U, 0x70U,
|
|
|
|
|
0x70U, 0x6cU, 0x69U, 0x65U, 0x64U, 0x20U, 0x74U, 0x6fU, 0x20U, 0x6cU,
|
|
|
|
|
0x65U, 0x64U, 0x67U, 0x65U, 0x72U, 0x00U, 0x74U, 0x73U, 0x68U, 0x2eU,
|
|
|
|
|
0x63U, 0x3aU, 0x20U, 0x53U, 0x74U, 0x61U, 0x72U, 0x74U, 0x2eU, 0x00U,
|
|
|
|
|
0x74U, 0x73U, 0x68U, 0x2eU, 0x63U, 0x3aU, 0x20U, 0x45U, 0x6eU, 0x64U,
|
|
|
|
|
0x2eU, 0x00U, 0x22U, 0x74U, 0x73U, 0x68U, 0x2eU, 0x63U, 0x3aU, 0x20U,
|
|
|
|
|
0x57U, 0x65U, 0x61U, 0x6bU, 0x20U, 0x41U, 0x67U, 0x61U, 0x69U, 0x6eU,
|
|
|
|
|
0x2eU, 0x20U, 0x45U, 0x78U, 0x65U, 0x63U, 0x75U, 0x74U, 0x65U, 0x20U,
|
|
|
|
|
0x41U, 0x46U, 0x54U, 0x45U, 0x52U, 0x20U, 0x74U, 0x72U, 0x61U, 0x6eU,
|
|
|
|
|
0x73U, 0x61U, 0x63U, 0x74U, 0x69U, 0x6fU, 0x6eU, 0x20U, 0x69U, 0x73U,
|
|
|
|
|
0x20U, 0x61U, 0x70U, 0x70U, 0x6cU, 0x69U, 0x65U, 0x64U, 0x20U, 0x74U,
|
|
|
|
|
0x6fU, 0x20U, 0x6cU, 0x65U, 0x64U, 0x67U, 0x65U, 0x72U, 0x22U, 0x00U,
|
|
|
|
|
0x22U, 0x74U, 0x73U, 0x68U, 0x2eU, 0x63U, 0x3aU, 0x20U, 0x57U, 0x65U,
|
|
|
|
|
0x61U, 0x6bU, 0x2eU, 0x20U, 0x45U, 0x78U, 0x65U, 0x63U, 0x75U, 0x74U,
|
|
|
|
|
0x65U, 0x20U, 0x41U, 0x46U, 0x54U, 0x45U, 0x52U, 0x20U, 0x74U, 0x72U,
|
|
|
|
|
0x61U, 0x6eU, 0x73U, 0x61U, 0x63U, 0x74U, 0x69U, 0x6fU, 0x6eU, 0x20U,
|
|
|
|
|
0x69U, 0x73U, 0x20U, 0x61U, 0x70U, 0x70U, 0x6cU, 0x69U, 0x65U, 0x64U,
|
|
|
|
|
0x20U, 0x74U, 0x6fU, 0x20U, 0x6cU, 0x65U, 0x64U, 0x67U, 0x65U, 0x72U,
|
|
|
|
|
0x22U, 0x00U, 0x22U, 0x74U, 0x73U, 0x68U, 0x2eU, 0x63U, 0x3aU, 0x20U,
|
|
|
|
|
0x53U, 0x74U, 0x72U, 0x6fU, 0x6eU, 0x67U, 0x2eU, 0x20U, 0x45U, 0x78U,
|
|
|
|
|
0x65U, 0x63U, 0x75U, 0x74U, 0x65U, 0x20U, 0x42U, 0x45U, 0x46U, 0x4fU,
|
|
|
|
|
0x52U, 0x45U, 0x20U, 0x74U, 0x72U, 0x61U, 0x6eU, 0x73U, 0x61U, 0x63U,
|
|
|
|
|
0x74U, 0x69U, 0x6fU, 0x6eU, 0x20U, 0x69U, 0x73U, 0x20U, 0x61U, 0x70U,
|
|
|
|
|
0x70U, 0x6cU, 0x69U, 0x65U, 0x64U, 0x20U, 0x74U, 0x6fU, 0x20U, 0x6cU,
|
|
|
|
|
0x65U, 0x64U, 0x67U, 0x65U, 0x72U, 0x22U, 0x00U, 0x22U, 0x74U, 0x73U,
|
|
|
|
|
0x68U, 0x2eU, 0x63U, 0x3aU, 0x20U, 0x53U, 0x74U, 0x61U, 0x72U, 0x74U,
|
|
|
|
|
0x2eU, 0x22U, 0x00U, 0x22U, 0x74U, 0x73U, 0x68U, 0x2eU, 0x63U, 0x3aU,
|
|
|
|
|
0x20U, 0x45U, 0x6eU, 0x64U, 0x2eU, 0x22U};
|
|
|
|
|
0x00U, 0x61U, 0x73U, 0x6DU, 0x01U, 0x00U, 0x00U, 0x00U, 0x01U, 0x28U,
|
|
|
|
|
0x06U, 0x60U, 0x05U, 0x7FU, 0x7FU, 0x7FU, 0x7FU, 0x7FU, 0x01U, 0x7EU,
|
|
|
|
|
0x60U, 0x04U, 0x7FU, 0x7FU, 0x7FU, 0x7FU, 0x01U, 0x7EU, 0x60U, 0x00U,
|
|
|
|
|
0x01U, 0x7EU, 0x60U, 0x03U, 0x7FU, 0x7FU, 0x7EU, 0x01U, 0x7EU, 0x60U,
|
|
|
|
|
0x02U, 0x7FU, 0x7FU, 0x01U, 0x7FU, 0x60U, 0x01U, 0x7FU, 0x01U, 0x7EU,
|
|
|
|
|
0x02U, 0x45U, 0x05U, 0x03U, 0x65U, 0x6EU, 0x76U, 0x05U, 0x74U, 0x72U,
|
|
|
|
|
0x61U, 0x63U, 0x65U, 0x00U, 0x00U, 0x03U, 0x65U, 0x6EU, 0x76U, 0x0AU,
|
|
|
|
|
0x6FU, 0x74U, 0x78U, 0x6EU, 0x5FU, 0x70U, 0x61U, 0x72U, 0x61U, 0x6DU,
|
|
|
|
|
0x00U, 0x01U, 0x03U, 0x65U, 0x6EU, 0x76U, 0x0AU, 0x68U, 0x6FU, 0x6FU,
|
|
|
|
|
0x6BU, 0x5FU, 0x61U, 0x67U, 0x61U, 0x69U, 0x6EU, 0x00U, 0x02U, 0x03U,
|
|
|
|
|
0x65U, 0x6EU, 0x76U, 0x06U, 0x61U, 0x63U, 0x63U, 0x65U, 0x70U, 0x74U,
|
|
|
|
|
0x00U, 0x03U, 0x03U, 0x65U, 0x6EU, 0x76U, 0x02U, 0x5FU, 0x67U, 0x00U,
|
|
|
|
|
0x04U, 0x03U, 0x02U, 0x01U, 0x05U, 0x05U, 0x03U, 0x01U, 0x00U, 0x02U,
|
|
|
|
|
0x06U, 0x2BU, 0x07U, 0x7FU, 0x01U, 0x41U, 0xC0U, 0x8BU, 0x04U, 0x0BU,
|
|
|
|
|
0x7FU, 0x00U, 0x41U, 0x80U, 0x08U, 0x0BU, 0x7FU, 0x00U, 0x41U, 0xBCU,
|
|
|
|
|
0x0BU, 0x0BU, 0x7FU, 0x00U, 0x41U, 0x80U, 0x08U, 0x0BU, 0x7FU, 0x00U,
|
|
|
|
|
0x41U, 0xC0U, 0x8BU, 0x04U, 0x0BU, 0x7FU, 0x00U, 0x41U, 0x00U, 0x0BU,
|
|
|
|
|
0x7FU, 0x00U, 0x41U, 0x01U, 0x0BU, 0x07U, 0x08U, 0x01U, 0x04U, 0x68U,
|
|
|
|
|
0x6FU, 0x6FU, 0x6BU, 0x00U, 0x05U, 0x0AU, 0x8EU, 0x84U, 0x00U, 0x01U,
|
|
|
|
|
0x8AU, 0x84U, 0x00U, 0x02U, 0x09U, 0x7EU, 0x05U, 0x7FU, 0x02U, 0x40U,
|
|
|
|
|
0x02U, 0x40U, 0x23U, 0x00U, 0x21U, 0x0AU, 0x20U, 0x0AU, 0x41U, 0x10U,
|
|
|
|
|
0x6BU, 0x21U, 0x0AU, 0x20U, 0x0AU, 0x24U, 0x00U, 0x20U, 0x0AU, 0x20U,
|
|
|
|
|
0x00U, 0x36U, 0x02U, 0x0CU, 0x41U, 0x9EU, 0x0BU, 0x41U, 0x0FU, 0x41U,
|
|
|
|
|
0xC1U, 0x09U, 0x41U, 0x0EU, 0x41U, 0x00U, 0x10U, 0x00U, 0x21U, 0x02U,
|
|
|
|
|
0x20U, 0x02U, 0x1AU, 0x20U, 0x0AU, 0x41U, 0x0BU, 0x6AU, 0x21U, 0x00U,
|
|
|
|
|
0x20U, 0x00U, 0x41U, 0x01U, 0x41U, 0xBDU, 0x09U, 0x41U, 0x03U, 0x10U,
|
|
|
|
|
0x01U, 0x21U, 0x01U, 0x20U, 0x01U, 0x42U, 0x01U, 0x51U, 0x21U, 0x00U,
|
|
|
|
|
0x20U, 0x00U, 0x41U, 0x01U, 0x71U, 0x21U, 0x00U, 0x20U, 0x00U, 0x45U,
|
|
|
|
|
0x21U, 0x00U, 0x20U, 0x00U, 0x45U, 0x21U, 0x00U, 0x0BU, 0x20U, 0x00U,
|
|
|
|
|
0x04U, 0x40U, 0x02U, 0x40U, 0x02U, 0x40U, 0x10U, 0x02U, 0x21U, 0x03U,
|
|
|
|
|
0x20U, 0x03U, 0x1AU, 0x0BU, 0x01U, 0x0BU, 0x05U, 0x01U, 0x0BU, 0x0BU,
|
|
|
|
|
0x02U, 0x7EU, 0x02U, 0x40U, 0x20U, 0x0AU, 0x28U, 0x02U, 0x0CU, 0x21U,
|
|
|
|
|
0x00U, 0x02U, 0x40U, 0x02U, 0x40U, 0x02U, 0x40U, 0x02U, 0x40U, 0x02U,
|
|
|
|
|
0x40U, 0x20U, 0x00U, 0x0EU, 0x03U, 0x02U, 0x01U, 0x00U, 0x04U, 0x0BU,
|
|
|
|
|
0x02U, 0x40U, 0x02U, 0x40U, 0x02U, 0x40U, 0x41U, 0xDBU, 0x09U, 0x41U,
|
|
|
|
|
0xC3U, 0x00U, 0x41U, 0x80U, 0x08U, 0x41U, 0xC2U, 0x00U, 0x41U, 0x00U,
|
|
|
|
|
0x10U, 0x00U, 0x21U, 0x04U, 0x20U, 0x04U, 0x1AU, 0x0BU, 0x0CU, 0x06U,
|
|
|
|
|
0x0BU, 0x00U, 0x0BU, 0x00U, 0x0BU, 0x02U, 0x40U, 0x02U, 0x40U, 0x02U,
|
|
|
|
|
0x40U, 0x41U, 0x9FU, 0x0AU, 0x41U, 0x3DU, 0x41U, 0xC2U, 0x08U, 0x41U,
|
|
|
|
|
0x3CU, 0x41U, 0x00U, 0x10U, 0x00U, 0x21U, 0x05U, 0x20U, 0x05U, 0x1AU,
|
|
|
|
|
0x0BU, 0x0CU, 0x05U, 0x0BU, 0x00U, 0x0BU, 0x00U, 0x0BU, 0x02U, 0x40U,
|
|
|
|
|
0x02U, 0x40U, 0x02U, 0x40U, 0x41U, 0xDDU, 0x0AU, 0x41U, 0xC0U, 0x00U,
|
|
|
|
|
0x41U, 0xFEU, 0x08U, 0x41U, 0x3FU, 0x41U, 0x00U, 0x10U, 0x00U, 0x21U,
|
|
|
|
|
0x06U, 0x20U, 0x06U, 0x1AU, 0x0BU, 0x01U, 0x0BU, 0x0BU, 0x0BU, 0x0BU,
|
|
|
|
|
0x0BU, 0x02U, 0x7EU, 0x02U, 0x7EU, 0x41U, 0xAEU, 0x0BU, 0x41U, 0x0DU,
|
|
|
|
|
0x41U, 0xCFU, 0x09U, 0x41U, 0x0CU, 0x41U, 0x00U, 0x10U, 0x00U, 0x21U,
|
|
|
|
|
0x07U, 0x20U, 0x07U, 0x1AU, 0x20U, 0x0AU, 0x41U, 0x07U, 0x6AU, 0x21U,
|
|
|
|
|
0x0CU, 0x20U, 0x0CU, 0x21U, 0x00U, 0x20U, 0x0AU, 0x20U, 0x00U, 0x36U,
|
|
|
|
|
0x02U, 0x00U, 0x20U, 0x0AU, 0x28U, 0x02U, 0x0CU, 0x21U, 0x00U, 0x20U,
|
|
|
|
|
0x00U, 0xADU, 0x21U, 0x01U, 0x20U, 0x01U, 0x42U, 0x18U, 0x88U, 0x21U,
|
|
|
|
|
0x01U, 0x20U, 0x01U, 0x42U, 0xFFU, 0x01U, 0x83U, 0x21U, 0x01U, 0x20U,
|
|
|
|
|
0x01U, 0xA7U, 0x21U, 0x00U, 0x20U, 0x0AU, 0x28U, 0x02U, 0x00U, 0x21U,
|
|
|
|
|
0x0BU, 0x20U, 0x0BU, 0x20U, 0x00U, 0x3AU, 0x00U, 0x00U, 0x20U, 0x0AU,
|
|
|
|
|
0x28U, 0x02U, 0x0CU, 0x21U, 0x00U, 0x20U, 0x00U, 0xADU, 0x21U, 0x01U,
|
|
|
|
|
0x20U, 0x01U, 0x42U, 0x10U, 0x88U, 0x21U, 0x01U, 0x20U, 0x01U, 0x42U,
|
|
|
|
|
0xFFU, 0x01U, 0x83U, 0x21U, 0x01U, 0x20U, 0x01U, 0xA7U, 0x21U, 0x00U,
|
|
|
|
|
0x20U, 0x0AU, 0x28U, 0x02U, 0x00U, 0x21U, 0x0BU, 0x20U, 0x0BU, 0x20U,
|
|
|
|
|
0x00U, 0x3AU, 0x00U, 0x01U, 0x20U, 0x0AU, 0x28U, 0x02U, 0x0CU, 0x21U,
|
|
|
|
|
0x00U, 0x20U, 0x00U, 0xADU, 0x21U, 0x01U, 0x20U, 0x01U, 0x42U, 0x08U,
|
|
|
|
|
0x88U, 0x21U, 0x01U, 0x20U, 0x01U, 0x42U, 0xFFU, 0x01U, 0x83U, 0x21U,
|
|
|
|
|
0x01U, 0x20U, 0x01U, 0xA7U, 0x21U, 0x00U, 0x20U, 0x0AU, 0x28U, 0x02U,
|
|
|
|
|
0x00U, 0x21U, 0x0BU, 0x20U, 0x0BU, 0x20U, 0x00U, 0x3AU, 0x00U, 0x02U,
|
|
|
|
|
0x20U, 0x0AU, 0x28U, 0x02U, 0x0CU, 0x21U, 0x00U, 0x20U, 0x00U, 0xADU,
|
|
|
|
|
0x21U, 0x01U, 0x20U, 0x01U, 0x42U, 0x00U, 0x88U, 0x21U, 0x01U, 0x20U,
|
|
|
|
|
0x01U, 0x42U, 0xFFU, 0x01U, 0x83U, 0x21U, 0x01U, 0x20U, 0x01U, 0xA7U,
|
|
|
|
|
0x21U, 0x00U, 0x20U, 0x0AU, 0x28U, 0x02U, 0x00U, 0x21U, 0x0BU, 0x20U,
|
|
|
|
|
0x0BU, 0x20U, 0x00U, 0x3AU, 0x00U, 0x03U, 0x20U, 0x0CU, 0x21U, 0x00U,
|
|
|
|
|
0x20U, 0x00U, 0x41U, 0x04U, 0x42U, 0x1CU, 0x10U, 0x03U, 0x21U, 0x08U,
|
|
|
|
|
0x20U, 0x08U, 0x1AU, 0x41U, 0x01U, 0x41U, 0x01U, 0x10U, 0x04U, 0x21U,
|
|
|
|
|
0x0DU, 0x20U, 0x0DU, 0x1AU, 0x20U, 0x0AU, 0x41U, 0x10U, 0x6AU, 0x21U,
|
|
|
|
|
0x00U, 0x20U, 0x00U, 0x24U, 0x00U, 0x42U, 0x00U, 0x21U, 0x09U, 0x42U,
|
|
|
|
|
0x00U, 0x0BU, 0x0BU, 0x0BU, 0x0BU, 0x0BU, 0xC3U, 0x03U, 0x01U, 0x00U,
|
|
|
|
|
0x41U, 0x80U, 0x08U, 0x0BU, 0xBBU, 0x03U, 0x74U, 0x73U, 0x68U, 0x2EU,
|
|
|
|
|
0x63U, 0x3AU, 0x20U, 0x57U, 0x65U, 0x61U, 0x6BU, 0x20U, 0x41U, 0x67U,
|
|
|
|
|
0x61U, 0x69U, 0x6EU, 0x2EU, 0x20U, 0x45U, 0x78U, 0x65U, 0x63U, 0x75U,
|
|
|
|
|
0x74U, 0x65U, 0x20U, 0x41U, 0x46U, 0x54U, 0x45U, 0x52U, 0x20U, 0x74U,
|
|
|
|
|
0x72U, 0x61U, 0x6EU, 0x73U, 0x61U, 0x63U, 0x74U, 0x69U, 0x6FU, 0x6EU,
|
|
|
|
|
0x20U, 0x69U, 0x73U, 0x20U, 0x61U, 0x70U, 0x70U, 0x6CU, 0x69U, 0x65U,
|
|
|
|
|
0x64U, 0x20U, 0x74U, 0x6FU, 0x20U, 0x6CU, 0x65U, 0x64U, 0x67U, 0x65U,
|
|
|
|
|
0x72U, 0x00U, 0x74U, 0x73U, 0x68U, 0x2EU, 0x63U, 0x3AU, 0x20U, 0x57U,
|
|
|
|
|
0x65U, 0x61U, 0x6BU, 0x2EU, 0x20U, 0x45U, 0x78U, 0x65U, 0x63U, 0x75U,
|
|
|
|
|
0x74U, 0x65U, 0x20U, 0x41U, 0x46U, 0x54U, 0x45U, 0x52U, 0x20U, 0x74U,
|
|
|
|
|
0x72U, 0x61U, 0x6EU, 0x73U, 0x61U, 0x63U, 0x74U, 0x69U, 0x6FU, 0x6EU,
|
|
|
|
|
0x20U, 0x69U, 0x73U, 0x20U, 0x61U, 0x70U, 0x70U, 0x6CU, 0x69U, 0x65U,
|
|
|
|
|
0x64U, 0x20U, 0x74U, 0x6FU, 0x20U, 0x6CU, 0x65U, 0x64U, 0x67U, 0x65U,
|
|
|
|
|
0x72U, 0x00U, 0x74U, 0x73U, 0x68U, 0x2EU, 0x63U, 0x3AU, 0x20U, 0x53U,
|
|
|
|
|
0x74U, 0x72U, 0x6FU, 0x6EU, 0x67U, 0x2EU, 0x20U, 0x45U, 0x78U, 0x65U,
|
|
|
|
|
0x63U, 0x75U, 0x74U, 0x65U, 0x20U, 0x42U, 0x45U, 0x46U, 0x4FU, 0x52U,
|
|
|
|
|
0x45U, 0x20U, 0x74U, 0x72U, 0x61U, 0x6EU, 0x73U, 0x61U, 0x63U, 0x74U,
|
|
|
|
|
0x69U, 0x6FU, 0x6EU, 0x20U, 0x69U, 0x73U, 0x20U, 0x61U, 0x70U, 0x70U,
|
|
|
|
|
0x6CU, 0x69U, 0x65U, 0x64U, 0x20U, 0x74U, 0x6FU, 0x20U, 0x6CU, 0x65U,
|
|
|
|
|
0x64U, 0x67U, 0x65U, 0x72U, 0x00U, 0x41U, 0x41U, 0x57U, 0x00U, 0x74U,
|
|
|
|
|
0x73U, 0x68U, 0x2EU, 0x63U, 0x3AU, 0x20U, 0x53U, 0x74U, 0x61U, 0x72U,
|
|
|
|
|
0x74U, 0x2EU, 0x00U, 0x74U, 0x73U, 0x68U, 0x2EU, 0x63U, 0x3AU, 0x20U,
|
|
|
|
|
0x45U, 0x6EU, 0x64U, 0x2EU, 0x00U, 0x22U, 0x74U, 0x73U, 0x68U, 0x2EU,
|
|
|
|
|
0x63U, 0x3AU, 0x20U, 0x57U, 0x65U, 0x61U, 0x6BU, 0x20U, 0x41U, 0x67U,
|
|
|
|
|
0x61U, 0x69U, 0x6EU, 0x2EU, 0x20U, 0x45U, 0x78U, 0x65U, 0x63U, 0x75U,
|
|
|
|
|
0x74U, 0x65U, 0x20U, 0x41U, 0x46U, 0x54U, 0x45U, 0x52U, 0x20U, 0x74U,
|
|
|
|
|
0x72U, 0x61U, 0x6EU, 0x73U, 0x61U, 0x63U, 0x74U, 0x69U, 0x6FU, 0x6EU,
|
|
|
|
|
0x20U, 0x69U, 0x73U, 0x20U, 0x61U, 0x70U, 0x70U, 0x6CU, 0x69U, 0x65U,
|
|
|
|
|
0x64U, 0x20U, 0x74U, 0x6FU, 0x20U, 0x6CU, 0x65U, 0x64U, 0x67U, 0x65U,
|
|
|
|
|
0x72U, 0x22U, 0x00U, 0x22U, 0x74U, 0x73U, 0x68U, 0x2EU, 0x63U, 0x3AU,
|
|
|
|
|
0x20U, 0x57U, 0x65U, 0x61U, 0x6BU, 0x2EU, 0x20U, 0x45U, 0x78U, 0x65U,
|
|
|
|
|
0x63U, 0x75U, 0x74U, 0x65U, 0x20U, 0x41U, 0x46U, 0x54U, 0x45U, 0x52U,
|
|
|
|
|
0x20U, 0x74U, 0x72U, 0x61U, 0x6EU, 0x73U, 0x61U, 0x63U, 0x74U, 0x69U,
|
|
|
|
|
0x6FU, 0x6EU, 0x20U, 0x69U, 0x73U, 0x20U, 0x61U, 0x70U, 0x70U, 0x6CU,
|
|
|
|
|
0x69U, 0x65U, 0x64U, 0x20U, 0x74U, 0x6FU, 0x20U, 0x6CU, 0x65U, 0x64U,
|
|
|
|
|
0x67U, 0x65U, 0x72U, 0x22U, 0x00U, 0x22U, 0x74U, 0x73U, 0x68U, 0x2EU,
|
|
|
|
|
0x63U, 0x3AU, 0x20U, 0x53U, 0x74U, 0x72U, 0x6FU, 0x6EU, 0x67U, 0x2EU,
|
|
|
|
|
0x20U, 0x45U, 0x78U, 0x65U, 0x63U, 0x75U, 0x74U, 0x65U, 0x20U, 0x42U,
|
|
|
|
|
0x45U, 0x46U, 0x4FU, 0x52U, 0x45U, 0x20U, 0x74U, 0x72U, 0x61U, 0x6EU,
|
|
|
|
|
0x73U, 0x61U, 0x63U, 0x74U, 0x69U, 0x6FU, 0x6EU, 0x20U, 0x69U, 0x73U,
|
|
|
|
|
0x20U, 0x61U, 0x70U, 0x70U, 0x6CU, 0x69U, 0x65U, 0x64U, 0x20U, 0x74U,
|
|
|
|
|
0x6FU, 0x20U, 0x6CU, 0x65U, 0x64U, 0x67U, 0x65U, 0x72U, 0x22U, 0x00U,
|
|
|
|
|
0x22U, 0x74U, 0x73U, 0x68U, 0x2EU, 0x63U, 0x3AU, 0x20U, 0x53U, 0x74U,
|
|
|
|
|
0x61U, 0x72U, 0x74U, 0x2EU, 0x22U, 0x00U, 0x22U, 0x74U, 0x73U, 0x68U,
|
|
|
|
|
0x2EU, 0x63U, 0x3AU, 0x20U, 0x45U, 0x6EU, 0x64U, 0x2EU, 0x22U};
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
addWeakTSH(jtx::Env& env, jtx::Account const& account)
|
|
|
|
|
@@ -151,7 +428,21 @@ private:
|
|
|
|
|
using namespace test::jtx;
|
|
|
|
|
auto const tshFlag = testStrong ? overrideFlag : collectFlag;
|
|
|
|
|
env(hook(account, {{hso(TshHook, tshFlag)}}, 0),
|
|
|
|
|
fee(XRP(1)),
|
|
|
|
|
fee(XRP(2)),
|
|
|
|
|
ter(tesSUCCESS));
|
|
|
|
|
env.close();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
setCallbackHook(
|
|
|
|
|
jtx::Env& env,
|
|
|
|
|
jtx::Account const& account,
|
|
|
|
|
bool const& testStrong)
|
|
|
|
|
{
|
|
|
|
|
using namespace test::jtx;
|
|
|
|
|
auto const tshFlag = testStrong ? overrideFlag : collectFlag;
|
|
|
|
|
env(hook(account, {{hso(CallbackHook, tshFlag)}}, 0),
|
|
|
|
|
fee(XRP(2)),
|
|
|
|
|
ter(tesSUCCESS));
|
|
|
|
|
env.close();
|
|
|
|
|
}
|
|
|
|
|
@@ -219,6 +510,22 @@ private:
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
validateTSHFlags(jtx::Env& env, Json::Value meta, uint32_t const& expected)
|
|
|
|
|
{
|
|
|
|
|
auto const executions = meta[sfHookExecutions.jsonName];
|
|
|
|
|
auto const execution = executions[0u][sfHookExecution.jsonName];
|
|
|
|
|
bool const fixV2 = env.current()->rules().enabled(fixXahauV2);
|
|
|
|
|
if (fixV2)
|
|
|
|
|
{
|
|
|
|
|
BEAST_EXPECT(execution[sfFlags.jsonName] == expected);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
BEAST_REQUIRE(!execution[sfFlags.jsonName]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
testTSHStrongWeak(
|
|
|
|
|
jtx::Env& env,
|
|
|
|
|
@@ -1776,7 +2083,7 @@ private:
|
|
|
|
|
{{hso(TshHook, overrideFlag),
|
|
|
|
|
hso(genesis::MintTestHook, overrideFlag)}},
|
|
|
|
|
0),
|
|
|
|
|
fee(XRP(1)),
|
|
|
|
|
fee(XRP(2)),
|
|
|
|
|
ter(tesSUCCESS));
|
|
|
|
|
env.close();
|
|
|
|
|
|
|
|
|
|
@@ -1960,7 +2267,11 @@ private:
|
|
|
|
|
env.close();
|
|
|
|
|
|
|
|
|
|
// verify tsh hook triggered
|
|
|
|
|
testTSHStrongWeak(env, tshSTRONG, __LINE__);
|
|
|
|
|
bool const fixV2 = env.current()->rules().enabled(fixXahauV2);
|
|
|
|
|
auto const expected =
|
|
|
|
|
(fixV2 ? (testStrong ? tshNONE : tshWEAK)
|
|
|
|
|
: (testStrong ? tshSTRONG : tshSTRONG));
|
|
|
|
|
testTSHStrongWeak(env, expected, __LINE__);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -2159,9 +2470,14 @@ private:
|
|
|
|
|
auto const USD = gw["USD"];
|
|
|
|
|
env.fund(XRP(1000), account, cross, gw);
|
|
|
|
|
env.close();
|
|
|
|
|
env.trust(USD(100000), account);
|
|
|
|
|
env.trust(USD(100000), cross);
|
|
|
|
|
env.close();
|
|
|
|
|
env(pay(gw, cross, USD(10000)));
|
|
|
|
|
env.close();
|
|
|
|
|
|
|
|
|
|
// gw create offer
|
|
|
|
|
env(offer(gw, USD(1000), XRP(1000)));
|
|
|
|
|
env(offer(cross, XRP(1000), USD(1000)));
|
|
|
|
|
env.close();
|
|
|
|
|
|
|
|
|
|
// set tsh collect
|
|
|
|
|
@@ -2178,7 +2494,8 @@ private:
|
|
|
|
|
env.close();
|
|
|
|
|
|
|
|
|
|
// verify tsh hook triggered
|
|
|
|
|
testTSHStrongWeak(env, tshNONE, __LINE__);
|
|
|
|
|
auto const expected = testStrong ? tshNONE : tshWEAK;
|
|
|
|
|
testTSHStrongWeak(env, expected, __LINE__);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -3024,16 +3341,16 @@ private:
|
|
|
|
|
// | otxn | tfBurnable | tsh | mint | burn | buy | sell | cancel
|
|
|
|
|
// | O | false | O | N/A | S | N/A | S | S
|
|
|
|
|
// | O | false | I | N/A | N | N/A | W | N/A
|
|
|
|
|
// | O | false | B | N/A | N/A | N/A | N | N/A
|
|
|
|
|
// | O | true | B | N/A | N/A | N/A | N | N/A
|
|
|
|
|
// | O | false | B | N/A | N/A | N/A | N | N
|
|
|
|
|
// | O | true | B | N/A | N/A | N/A | N | N
|
|
|
|
|
// | O | true | O | N/A | S | N/A | S | S
|
|
|
|
|
// | O | true | I | N/A | N | N/A | S | N/A
|
|
|
|
|
// | I | false | O | N/A | N/A | N/A | N/A | N/A
|
|
|
|
|
// | I | false | I | S | N/A | N/A | N/A | N/A
|
|
|
|
|
// | I | false | B | N | N/A | N/A | N/A | N/A
|
|
|
|
|
// | I | false | B | S | N/A | N/A | N/A | N/A
|
|
|
|
|
// | I | true | O | N/A | N | N/A | N/A | N/A
|
|
|
|
|
// | I | true | I | S | S | N/A | N/A | N/A
|
|
|
|
|
// | I | true | B | N | N/A | N/A | N/A | N/A
|
|
|
|
|
// | I | true | B | S | N/A | N/A | N/A | N/A
|
|
|
|
|
// | B | true | O | N/A | N/A | S | N/A | N/A
|
|
|
|
|
// | B | true | B | N/A | N/A | S | N/A | N/A
|
|
|
|
|
// | B | false | I | N/A | N/A | W | N/A | N/A
|
|
|
|
|
@@ -3089,7 +3406,7 @@ private:
|
|
|
|
|
// otxn: issuer
|
|
|
|
|
// flag: not burnable
|
|
|
|
|
// tsh buyer
|
|
|
|
|
// w/s: none
|
|
|
|
|
// w/s: strong
|
|
|
|
|
for (bool const testStrong : {true, false})
|
|
|
|
|
{
|
|
|
|
|
test::jtx::Env env{
|
|
|
|
|
@@ -3122,7 +3439,11 @@ private:
|
|
|
|
|
env.close();
|
|
|
|
|
|
|
|
|
|
// verify tsh hook triggered
|
|
|
|
|
testTSHStrongWeak(env, tshNONE, __LINE__);
|
|
|
|
|
bool const fixV2 = env.current()->rules().enabled(fixXahauV2);
|
|
|
|
|
auto const expected =
|
|
|
|
|
(fixV2 ? (testStrong ? tshSTRONG : tshSTRONG)
|
|
|
|
|
: (testStrong ? tshNONE : tshNONE));
|
|
|
|
|
testTSHStrongWeak(env, expected, __LINE__);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// otxn: issuer
|
|
|
|
|
@@ -3168,7 +3489,7 @@ private:
|
|
|
|
|
// otxn: issuer
|
|
|
|
|
// flag: burnable
|
|
|
|
|
// tsh buyer
|
|
|
|
|
// w/s: none
|
|
|
|
|
// w/s: strong
|
|
|
|
|
for (bool const testStrong : {true, false})
|
|
|
|
|
{
|
|
|
|
|
test::jtx::Env env{
|
|
|
|
|
@@ -3202,7 +3523,11 @@ private:
|
|
|
|
|
env.close();
|
|
|
|
|
|
|
|
|
|
// verify tsh hook triggered
|
|
|
|
|
testTSHStrongWeak(env, tshNONE, __LINE__);
|
|
|
|
|
bool const fixV2 = env.current()->rules().enabled(fixXahauV2);
|
|
|
|
|
auto const expected =
|
|
|
|
|
(fixV2 ? (testStrong ? tshSTRONG : tshSTRONG)
|
|
|
|
|
: (testStrong ? tshNONE : tshNONE));
|
|
|
|
|
testTSHStrongWeak(env, expected, __LINE__);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -4351,133 +4676,11 @@ private:
|
|
|
|
|
env.fund(XRP(1000), account, dest);
|
|
|
|
|
env.close();
|
|
|
|
|
|
|
|
|
|
auto setHook = [](test::jtx::Account const& account) {
|
|
|
|
|
std::string const createCodeHex =
|
|
|
|
|
"0061736D0100000001350860057F7F7F7F7F017E60017F017E60047F7F7F7F"
|
|
|
|
|
"017E60037F7F7E017E60027F7F017E60037F7F7F017E60027F7F017F600001"
|
|
|
|
|
"7E02CD010D03656E76057472616365000003656E760C6574786E5F72657365"
|
|
|
|
|
"727665000103656E760A7574696C5F6163636964000203656E760974726163"
|
|
|
|
|
"655F6E756D000303656E760C686F6F6B5F6163636F756E74000403656E760A"
|
|
|
|
|
"6F74786E5F6669656C64000503656E7608726F6C6C6261636B000303656E76"
|
|
|
|
|
"025F67000603656E7606616363657074000303656E760A6C65646765725F73"
|
|
|
|
|
"6571000703656E760C6574786E5F64657461696C73000403656E760D657478"
|
|
|
|
|
"6E5F6665655F62617365000403656E7604656D697400020303020101050301"
|
|
|
|
|
"0002062B077F0141C08C040B7F004180080B7F0041B40C0B7F004180080B7F"
|
|
|
|
|
"0041C08C040B7F0041000B7F0041010B070F02046362616B000D04686F6F6B"
|
|
|
|
|
"000E0AE1930002AC800001017F230041106B220124002001200036020C41F6"
|
|
|
|
|
"0B411A41B70A4119410010001A200141106A240042000BAE930002017F017C"
|
|
|
|
|
"230041B0056B22012400200120003602AC0541E40B411141840A4110410010"
|
|
|
|
|
"001A410110011A200120014190056A411441940A4123100237038805418C08"
|
|
|
|
|
"410320012903880510031A200141F0046A411410041A2001200141D0046A41"
|
|
|
|
|
"144181802010053E02CC0441E409411120013402CC0410031A20012802CC04"
|
|
|
|
|
"411448044041910C4123420110061A0B200141003602C804200141013602C8"
|
|
|
|
|
"04200141003602C4040340418180B48178411510071A4100210020012802C8"
|
|
|
|
|
"04047F20012802C4044114480520000B4101710440200120012802C4042001"
|
|
|
|
|
"41F0046A6A2D000020012802C404200141D0046A6A2D0000463602C8042001"
|
|
|
|
|
"20012802C40441016A3602C4040C010B0B20012802C804450440419B08411D"
|
|
|
|
|
"420210081A0B200120014190046A413041818018100537038804200142C084"
|
|
|
|
|
"3D370380040240200129038804420852044041D00A41CE0041D40841CD0041"
|
|
|
|
|
"0010001A0C010B419F0B41C40041A10941C300410010001A200120012D0090"
|
|
|
|
|
"04410776047E427E052001310097042001310090044291A2C480B001834238"
|
|
|
|
|
"862001310091044230867C2001310092044228867C2001310093044220867C"
|
|
|
|
|
"2001310094044218867C2001310095044210867C2001310096044208867C7C"
|
|
|
|
|
"0B3703F803419008410A20012903F80310031A20012903F80342A08D065504"
|
|
|
|
|
"402001027E20012903F803B94400000040E17A843FA2220299440000000000"
|
|
|
|
|
"00E0436304402002B00C010B428080808080808080807F0B370380040B0B41"
|
|
|
|
|
"F609410D20012903800410031A2001200141E0016A3602DC01200120012903"
|
|
|
|
|
"80043703B801200141003602B401200141003602B001200110093E02AC0120"
|
|
|
|
|
"0141C0016A411410041A200141003A00AB0120012802DC0141123A00002001"
|
|
|
|
|
"2802DC0120012D00AB014108763A000120012802DC0120012D00AB013A0002"
|
|
|
|
|
"200120012802DC0141036A3602DC0120014180808080783602A40120014102"
|
|
|
|
|
"3A00A30120012802DC0120012D00A301410F7141206A3A000020012802DC01"
|
|
|
|
|
"20012802A4014118763A000120012802DC0120012802A4014110763A000220"
|
|
|
|
|
"012802DC0120012802A4014108763A000320012802DC0120012802A4013A00"
|
|
|
|
|
"04200120012802DC0141056A3602DC01200120012802B00136029C01200141"
|
|
|
|
|
"033A009B0120012802DC0120012D009B01410F7141206A3A000020012802DC"
|
|
|
|
|
"01200128029C014118763A000120012802DC01200128029C014110763A0002"
|
|
|
|
|
"20012802DC01200128029C014108763A000320012802DC01200128029C013A"
|
|
|
|
|
"0004200120012802DC0141056A3602DC012001410036029401200141043A00"
|
|
|
|
|
"930120012802DC0120012D009301410F7141206A3A000020012802DC012001"
|
|
|
|
|
"280294014118763A000120012802DC012001280294014110763A0002200128"
|
|
|
|
|
"02DC012001280294014108763A000320012802DC012001280294013A000420"
|
|
|
|
|
"0120012802DC0141056A3602DC01200120012802B40136028C012001410E3A"
|
|
|
|
|
"008B0120012802DC0120012D008B01410F7141206A3A000020012802DC0120"
|
|
|
|
|
"0128028C014118763A000120012802DC01200128028C014110763A00022001"
|
|
|
|
|
"2802DC01200128028C014108763A000320012802DC01200128028C013A0004"
|
|
|
|
|
"200120012802DC0141056A3602DC01200120012802AC0141016A3602840120"
|
|
|
|
|
"01411A3A00830120012802DC0141203A000020012802DC0120012D0083013A"
|
|
|
|
|
"000120012802DC012001280284014118763A000220012802DC012001280284"
|
|
|
|
|
"014110763A000320012802DC012001280284014108763A000420012802DC01"
|
|
|
|
|
"2001280284013A0005200120012802DC0141066A3602DC01200120012802AC"
|
|
|
|
|
"0141056A36027C2001411B3A007B20012802DC0141203A000020012802DC01"
|
|
|
|
|
"20012D007B3A000120012802DC01200128027C4118763A000220012802DC01"
|
|
|
|
|
"200128027C4110763A000320012802DC01200128027C4108763A0004200128"
|
|
|
|
|
"02DC01200128027C3A0005200120012802DC0141066A3602DC01200141013A"
|
|
|
|
|
"007A200120012903B80137037020012802DC0120012D007A410F7141E0006A"
|
|
|
|
|
"3A000020012802DC012001290370423888423F8342407D3C000120012802DC"
|
|
|
|
|
"01200129037042308842FF01833C000220012802DC01200129037042288842"
|
|
|
|
|
"FF01833C000320012802DC01200129037042208842FF01833C000420012802"
|
|
|
|
|
"DC01200129037042188842FF01833C000520012802DC012001290370421088"
|
|
|
|
|
"42FF01833C000620012802DC01200129037042088842FF01833C0007200128"
|
|
|
|
|
"02DC01200129037042FF01833C0008200120012802DC0141096A3602DC0120"
|
|
|
|
|
"0120012802DC0136026C200141083A006B2001420037036020012802DC0120"
|
|
|
|
|
"012D006B410F7141E0006A3A000020012802DC012001290360423888423F83"
|
|
|
|
|
"42407D3C000120012802DC01200129036042308842FF01833C000220012802"
|
|
|
|
|
"DC01200129036042288842FF01833C000320012802DC012001290360422088"
|
|
|
|
|
"42FF01833C000420012802DC01200129036042188842FF01833C0005200128"
|
|
|
|
|
"02DC01200129036042108842FF01833C000620012802DC0120012903604208"
|
|
|
|
|
"8842FF01833C000720012802DC01200129036042FF01833C00082001200128"
|
|
|
|
|
"02DC0141096A3602DC0120012802DC0141F3003A000020012802DC0141213A"
|
|
|
|
|
"000120012802DC01420037030220012802DC01420037030A20012802DC0142"
|
|
|
|
|
"0037031220012802DC014200370319200120012802DC0141236A3602DC0120"
|
|
|
|
|
"0141013A005F20012802DC0120012D005F4180016A3A000020012802DC0141"
|
|
|
|
|
"143A000120012802DC0120012903C00137030220012802DC0120012903C801"
|
|
|
|
|
"37030A20012802DC0120012802D001360212200120012802DC0141166A3602"
|
|
|
|
|
"DC01200141033A005E20012802DC0120012D005E4180016A3A000020012802"
|
|
|
|
|
"DC0141143A000120012802DC0120012903900537030220012802DC01200129"
|
|
|
|
|
"03980537030A20012802DC0120012802A005360212200120012802DC014116"
|
|
|
|
|
"6A3602DC01200120012802DC01418E02100A3703502001200141E0016A418E"
|
|
|
|
|
"02100B370348200141083A004720012001290348370338200128026C20012D"
|
|
|
|
|
"0047410F7141E0006A3A0000200128026C2001290338423888423F8342407D"
|
|
|
|
|
"3C0001200128026C200129033842308842FF01833C0002200128026C200129"
|
|
|
|
|
"033842288842FF01833C0003200128026C200129033842208842FF01833C00"
|
|
|
|
|
"04200128026C200129033842188842FF01833C0005200128026C2001290338"
|
|
|
|
|
"42108842FF01833C0006200128026C200129033842088842FF01833C000720"
|
|
|
|
|
"0128026C200129033842FF01833C00082001200128026C41096A36026C2001"
|
|
|
|
|
"200141106A4120200141E0016A418E02100C370308418008410B2001290308"
|
|
|
|
|
"10031A41B808411C420010081A200141B0056A240042000B0BBB0401004180"
|
|
|
|
|
"080BB304656D69745F726573756C7400726574006F74786E5F64726F707300"
|
|
|
|
|
"436172626F6E3A20496E636F6D696E67207472616E73616374696F6E004361"
|
|
|
|
|
"72626F6E3A20456D6974746564207472616E73616374696F6E00436172626F"
|
|
|
|
|
"6E3A204E6F6E2D787270207472616E73616374696F6E206465746563746564"
|
|
|
|
|
"2C2073656E64696E672064656661756C7420313030302064726F707320746F"
|
|
|
|
|
"207266436172626F6E00436172626F6E3A20585250207472616E7361637469"
|
|
|
|
|
"6F6E2064657465637465642C20636F6D707574696E6720312520746F207365"
|
|
|
|
|
"6E6420746F207266436172626F6E006163636F756E745F6669656C645F6C65"
|
|
|
|
|
"6E0064726F70735F746F5F73656E6400436172626F6E3A2073746172746564"
|
|
|
|
|
"0072504D68375069396374363939695A5554576179744A556F48634A376367"
|
|
|
|
|
"797A694B00436172626F6E3A2063616C6C6261636B2063616C6C65642E0022"
|
|
|
|
|
"436172626F6E3A204E6F6E2D787270207472616E73616374696F6E20646574"
|
|
|
|
|
"65637465642C2073656E64696E672064656661756C7420313030302064726F"
|
|
|
|
|
"707320746F207266436172626F6E220022436172626F6E3A20585250207472"
|
|
|
|
|
"616E73616374696F6E2064657465637465642C20636F6D707574696E672031"
|
|
|
|
|
"2520746F2073656E6420746F207266436172626F6E220022436172626F6E3A"
|
|
|
|
|
"2073746172746564220022436172626F6E3A2063616C6C6261636B2063616C"
|
|
|
|
|
"6C65642E2200436172626F6E3A2073664163636F756E74206669656C64206D"
|
|
|
|
|
"697373696E67212121";
|
|
|
|
|
Json::Value jhv = hso(createCodeHex);
|
|
|
|
|
jhv[jss::HookOn] =
|
|
|
|
|
"fffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffbfff"
|
|
|
|
|
"ff";
|
|
|
|
|
Json::Value jv = ripple::test::jtx::hook(account, {{jhv}}, 0);
|
|
|
|
|
return jv;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
env(setHook(account), HSFEE);
|
|
|
|
|
env.close();
|
|
|
|
|
// set emit hook
|
|
|
|
|
setCallbackHook(env, account, true);
|
|
|
|
|
|
|
|
|
|
// ttINVOKE
|
|
|
|
|
env(invoke::invoke(account), fee(XRP(1)), ter(tesSUCCESS));
|
|
|
|
|
env(invoke::invoke(account), fee(XRP(2)), ter(tesSUCCESS));
|
|
|
|
|
env.close();
|
|
|
|
|
|
|
|
|
|
Blob txBlob;
|
|
|
|
|
@@ -4546,6 +4749,188 @@ private:
|
|
|
|
|
BEAST_EXPECT(postDest1 == postDest + postValue1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
testEmittedFlags(FeatureBitset features)
|
|
|
|
|
{
|
|
|
|
|
testcase("emitted flags");
|
|
|
|
|
|
|
|
|
|
using namespace test::jtx;
|
|
|
|
|
using namespace std::literals;
|
|
|
|
|
|
|
|
|
|
// weak
|
|
|
|
|
{
|
|
|
|
|
test::jtx::Env env{
|
|
|
|
|
*this,
|
|
|
|
|
network::makeNetworkConfig(21337, "10", "1000000", "200000"),
|
|
|
|
|
features};
|
|
|
|
|
|
|
|
|
|
auto const account = Account("alice");
|
|
|
|
|
auto const issuer = Account{"gw"};
|
|
|
|
|
auto const USD = issuer["USD"];
|
|
|
|
|
env.fund(XRP(1000), account, issuer);
|
|
|
|
|
env.close();
|
|
|
|
|
|
|
|
|
|
addWeakTSH(env, issuer);
|
|
|
|
|
|
|
|
|
|
// set tsh hook
|
|
|
|
|
setTSHHook(env, issuer, false);
|
|
|
|
|
|
|
|
|
|
// trust set
|
|
|
|
|
env(trust(account, USD(1000)), fee(XRP(1)), ter(tesSUCCESS));
|
|
|
|
|
env.close();
|
|
|
|
|
|
|
|
|
|
// verify tsh hook triggered
|
|
|
|
|
Json::Value params;
|
|
|
|
|
params[jss::transaction] =
|
|
|
|
|
env.tx()->getJson(JsonOptions::none)[jss::hash];
|
|
|
|
|
auto const jrr = env.rpc("json", "tx", to_string(params));
|
|
|
|
|
auto const meta = jrr[jss::result][jss::meta];
|
|
|
|
|
validateTSHFlags(env, meta, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// strong
|
|
|
|
|
{
|
|
|
|
|
test::jtx::Env env{
|
|
|
|
|
*this,
|
|
|
|
|
network::makeNetworkConfig(21337, "10", "1000000", "200000"),
|
|
|
|
|
features};
|
|
|
|
|
|
|
|
|
|
auto const account = Account("alice");
|
|
|
|
|
auto const issuer = Account{"gw"};
|
|
|
|
|
auto const USD = issuer["USD"];
|
|
|
|
|
env.fund(XRP(1000), account, issuer);
|
|
|
|
|
env.close();
|
|
|
|
|
|
|
|
|
|
// set tsh hook
|
|
|
|
|
setTSHHook(env, account, true);
|
|
|
|
|
|
|
|
|
|
// trust set
|
|
|
|
|
env(trust(account, USD(1000)), fee(XRP(1)), ter(tesSUCCESS));
|
|
|
|
|
env.close();
|
|
|
|
|
|
|
|
|
|
// verify tsh hook triggered
|
|
|
|
|
Json::Value params;
|
|
|
|
|
params[jss::transaction] =
|
|
|
|
|
env.tx()->getJson(JsonOptions::none)[jss::hash];
|
|
|
|
|
auto const jrr = env.rpc("json", "tx", to_string(params));
|
|
|
|
|
auto const meta = jrr[jss::result][jss::meta];
|
|
|
|
|
validateTSHFlags(env, meta, 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// callback
|
|
|
|
|
{
|
|
|
|
|
test::jtx::Env env{
|
|
|
|
|
*this,
|
|
|
|
|
network::makeNetworkConfig(21337, "10", "1000000", "200000"),
|
|
|
|
|
features};
|
|
|
|
|
|
|
|
|
|
auto const account = Account("alice");
|
|
|
|
|
env.fund(XRP(1000), account);
|
|
|
|
|
env.close();
|
|
|
|
|
|
|
|
|
|
// set tsh hook
|
|
|
|
|
setCallbackHook(env, account, true);
|
|
|
|
|
|
|
|
|
|
// invoke
|
|
|
|
|
env(invoke::invoke(account), fee(XRP(2)), ter(tesSUCCESS));
|
|
|
|
|
env.close();
|
|
|
|
|
|
|
|
|
|
// get the emitted txn id
|
|
|
|
|
Json::Value params;
|
|
|
|
|
params[jss::transaction] =
|
|
|
|
|
env.tx()->getJson(JsonOptions::none)[jss::hash];
|
|
|
|
|
auto const jrr = env.rpc("json", "tx", to_string(params));
|
|
|
|
|
auto const meta = jrr[jss::result][jss::meta];
|
|
|
|
|
auto const emissions = meta[sfHookEmissions.jsonName];
|
|
|
|
|
auto const emission = emissions[0u][sfHookEmission.jsonName];
|
|
|
|
|
auto const txId = emission[sfEmittedTxnID.jsonName];
|
|
|
|
|
env.close();
|
|
|
|
|
|
|
|
|
|
// verify tsh hook triggered
|
|
|
|
|
Json::Value params1;
|
|
|
|
|
params1[jss::transaction] = txId;
|
|
|
|
|
auto const jrr1 = env.rpc("json", "tx", to_string(params1));
|
|
|
|
|
auto const meta1 = jrr1[jss::result][jss::meta];
|
|
|
|
|
validateTSHFlags(env, meta1, 2);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// weak callback
|
|
|
|
|
{
|
|
|
|
|
test::jtx::Env env{
|
|
|
|
|
*this,
|
|
|
|
|
network::makeNetworkConfig(21337, "10", "1000000", "200000"),
|
|
|
|
|
features};
|
|
|
|
|
|
|
|
|
|
auto const account = Account("alice");
|
|
|
|
|
auto const issuer = Account{"gw"};
|
|
|
|
|
auto const USD = issuer["USD"];
|
|
|
|
|
env.fund(XRP(1000), account, issuer);
|
|
|
|
|
env.close();
|
|
|
|
|
|
|
|
|
|
addWeakTSH(env, issuer);
|
|
|
|
|
|
|
|
|
|
// set tsh hook
|
|
|
|
|
setCallbackHook(env, issuer, false);
|
|
|
|
|
|
|
|
|
|
// trust set
|
|
|
|
|
env(trust(account, USD(1000)), fee(XRP(1)), ter(tesSUCCESS));
|
|
|
|
|
env.close();
|
|
|
|
|
|
|
|
|
|
// get the emitted txn id
|
|
|
|
|
Json::Value params;
|
|
|
|
|
params[jss::transaction] =
|
|
|
|
|
env.tx()->getJson(JsonOptions::none)[jss::hash];
|
|
|
|
|
auto const jrr = env.rpc("json", "tx", to_string(params));
|
|
|
|
|
auto const meta = jrr[jss::result][jss::meta];
|
|
|
|
|
auto const emissions = meta[sfHookEmissions.jsonName];
|
|
|
|
|
auto const emission = emissions[0u][sfHookEmission.jsonName];
|
|
|
|
|
auto const txId = emission[sfEmittedTxnID.jsonName];
|
|
|
|
|
env.close();
|
|
|
|
|
|
|
|
|
|
// verify tsh hook triggered
|
|
|
|
|
Json::Value params1;
|
|
|
|
|
params1[jss::transaction] = txId;
|
|
|
|
|
auto const jrr1 = env.rpc("json", "tx", to_string(params1));
|
|
|
|
|
auto const meta1 = jrr1[jss::result][jss::meta];
|
|
|
|
|
validateTSHFlags(env, meta1, 2);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// again as weak
|
|
|
|
|
{
|
|
|
|
|
test::jtx::Env env{
|
|
|
|
|
*this,
|
|
|
|
|
network::makeNetworkConfig(21337, "10", "1000000", "200000"),
|
|
|
|
|
features};
|
|
|
|
|
|
|
|
|
|
auto const account = Account("alice");
|
|
|
|
|
env.fund(XRP(1000), account);
|
|
|
|
|
env.close();
|
|
|
|
|
|
|
|
|
|
// set tsh hook
|
|
|
|
|
setTSHHook(env, account, true);
|
|
|
|
|
|
|
|
|
|
// invoke
|
|
|
|
|
auto tx = invoke::invoke(account);
|
|
|
|
|
tx[jss::HookParameters] = Json::Value{Json::arrayValue};
|
|
|
|
|
tx[jss::HookParameters][0U] = Json::Value{};
|
|
|
|
|
tx[jss::HookParameters][0U][jss::HookParameter] = Json::Value{};
|
|
|
|
|
tx[jss::HookParameters][0U][jss::HookParameter]
|
|
|
|
|
[jss::HookParameterName] = "414157";
|
|
|
|
|
tx[jss::HookParameters][0U][jss::HookParameter]
|
|
|
|
|
[jss::HookParameterValue] = "01";
|
|
|
|
|
env(tx, fee(XRP(2)), ter(tesSUCCESS));
|
|
|
|
|
env.close();
|
|
|
|
|
|
|
|
|
|
// verify tsh hook triggered
|
|
|
|
|
Json::Value params;
|
|
|
|
|
params[jss::transaction] =
|
|
|
|
|
env.tx()->getJson(JsonOptions::none)[jss::hash];
|
|
|
|
|
auto const jrr = env.rpc("json", "tx", to_string(params));
|
|
|
|
|
auto const meta = jrr[jss::result][jss::meta];
|
|
|
|
|
validateTSHFlags(env, meta, 5);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
testTSH(FeatureBitset features)
|
|
|
|
|
{
|
|
|
|
|
@@ -4586,6 +4971,7 @@ private:
|
|
|
|
|
testEmittedTxn(FeatureBitset features)
|
|
|
|
|
{
|
|
|
|
|
testEmittedTxnReliability(features);
|
|
|
|
|
testEmittedFlags(features);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
@@ -4594,7 +4980,8 @@ public:
|
|
|
|
|
{
|
|
|
|
|
using namespace test::jtx;
|
|
|
|
|
auto const sa = supported_amendments();
|
|
|
|
|
testTSH(sa - fixXahauV1);
|
|
|
|
|
testTSH(sa - fixXahauV1 - fixXahauV2);
|
|
|
|
|
testTSH(sa - fixXahauV2);
|
|
|
|
|
testTSH(sa);
|
|
|
|
|
testEmittedTxn(sa - fixXahauV2);
|
|
|
|
|
testEmittedTxn(sa);
|
|
|
|
|
|