#ifndef HOOKMISC_INCLUDED #define HOOKMISC_INCLUDED 1 #include namespace ripple { // RH TODO: there's definitely a mucher nicer way to do this, but it involves // modifying the base_uint class and we don't want to do that yet. static const std::array UINT256_BIT = { ripple::uint256( "0000000000000000000000000000000000000000000000000000000000000001"), ripple::uint256( "0000000000000000000000000000000000000000000000000000000000000002"), ripple::uint256( "0000000000000000000000000000000000000000000000000000000000000004"), ripple::uint256( "0000000000000000000000000000000000000000000000000000000000000008"), ripple::uint256( "0000000000000000000000000000000000000000000000000000000000000010"), ripple::uint256( "0000000000000000000000000000000000000000000000000000000000000020"), ripple::uint256( "0000000000000000000000000000000000000000000000000000000000000040"), ripple::uint256( "0000000000000000000000000000000000000000000000000000000000000080"), ripple::uint256( "0000000000000000000000000000000000000000000000000000000000000100"), ripple::uint256( "0000000000000000000000000000000000000000000000000000000000000200"), ripple::uint256( "0000000000000000000000000000000000000000000000000000000000000400"), ripple::uint256( "0000000000000000000000000000000000000000000000000000000000000800"), ripple::uint256( "0000000000000000000000000000000000000000000000000000000000001000"), ripple::uint256( "0000000000000000000000000000000000000000000000000000000000002000"), ripple::uint256( "0000000000000000000000000000000000000000000000000000000000004000"), ripple::uint256( "0000000000000000000000000000000000000000000000000000000000008000"), ripple::uint256( "0000000000000000000000000000000000000000000000000000000000010000"), ripple::uint256( "0000000000000000000000000000000000000000000000000000000000020000"), ripple::uint256( "0000000000000000000000000000000000000000000000000000000000040000"), ripple::uint256( "0000000000000000000000000000000000000000000000000000000000080000"), ripple::uint256( "0000000000000000000000000000000000000000000000000000000000100000"), ripple::uint256( "0000000000000000000000000000000000000000000000000000000000200000"), ripple::uint256( "0000000000000000000000000000000000000000000000000000000000400000"), ripple::uint256( "0000000000000000000000000000000000000000000000000000000000800000"), ripple::uint256( "0000000000000000000000000000000000000000000000000000000001000000"), ripple::uint256( "0000000000000000000000000000000000000000000000000000000002000000"), ripple::uint256( "0000000000000000000000000000000000000000000000000000000004000000"), ripple::uint256( "0000000000000000000000000000000000000000000000000000000008000000"), ripple::uint256( "0000000000000000000000000000000000000000000000000000000010000000"), ripple::uint256( "0000000000000000000000000000000000000000000000000000000020000000"), ripple::uint256( "0000000000000000000000000000000000000000000000000000000040000000"), ripple::uint256( "0000000000000000000000000000000000000000000000000000000080000000"), ripple::uint256( "0000000000000000000000000000000000000000000000000000000100000000"), ripple::uint256( "0000000000000000000000000000000000000000000000000000000200000000"), ripple::uint256( "0000000000000000000000000000000000000000000000000000000400000000"), ripple::uint256( "0000000000000000000000000000000000000000000000000000000800000000"), ripple::uint256( "0000000000000000000000000000000000000000000000000000001000000000"), ripple::uint256( "0000000000000000000000000000000000000000000000000000002000000000"), ripple::uint256( "0000000000000000000000000000000000000000000000000000004000000000"), ripple::uint256( "0000000000000000000000000000000000000000000000000000008000000000"), ripple::uint256( "0000000000000000000000000000000000000000000000000000010000000000"), ripple::uint256( "0000000000000000000000000000000000000000000000000000020000000000"), ripple::uint256( "0000000000000000000000000000000000000000000000000000040000000000"), ripple::uint256( "0000000000000000000000000000000000000000000000000000080000000000"), ripple::uint256( "0000000000000000000000000000000000000000000000000000100000000000"), ripple::uint256( "0000000000000000000000000000000000000000000000000000200000000000"), ripple::uint256( "0000000000000000000000000000000000000000000000000000400000000000"), ripple::uint256( "0000000000000000000000000000000000000000000000000000800000000000"), ripple::uint256( "0000000000000000000000000000000000000000000000000001000000000000"), ripple::uint256( "0000000000000000000000000000000000000000000000000002000000000000"), ripple::uint256( "0000000000000000000000000000000000000000000000000004000000000000"), ripple::uint256( "0000000000000000000000000000000000000000000000000008000000000000"), ripple::uint256( "0000000000000000000000000000000000000000000000000010000000000000"), ripple::uint256( "0000000000000000000000000000000000000000000000000020000000000000"), ripple::uint256( "0000000000000000000000000000000000000000000000000040000000000000"), ripple::uint256( "0000000000000000000000000000000000000000000000000080000000000000"), ripple::uint256( "0000000000000000000000000000000000000000000000000100000000000000"), ripple::uint256( "0000000000000000000000000000000000000000000000000200000000000000"), ripple::uint256( "0000000000000000000000000000000000000000000000000400000000000000"), ripple::uint256( "0000000000000000000000000000000000000000000000000800000000000000"), ripple::uint256( "0000000000000000000000000000000000000000000000001000000000000000"), ripple::uint256( "0000000000000000000000000000000000000000000000002000000000000000"), ripple::uint256( "0000000000000000000000000000000000000000000000004000000000000000"), ripple::uint256( "0000000000000000000000000000000000000000000000008000000000000000"), ripple::uint256( "0000000000000000000000000000000000000000000000010000000000000000"), ripple::uint256( "0000000000000000000000000000000000000000000000020000000000000000"), ripple::uint256( "0000000000000000000000000000000000000000000000040000000000000000"), ripple::uint256( "0000000000000000000000000000000000000000000000080000000000000000"), ripple::uint256( "0000000000000000000000000000000000000000000000100000000000000000"), ripple::uint256( "0000000000000000000000000000000000000000000000200000000000000000"), ripple::uint256( "0000000000000000000000000000000000000000000000400000000000000000"), ripple::uint256( "0000000000000000000000000000000000000000000000800000000000000000"), ripple::uint256( "0000000000000000000000000000000000000000000001000000000000000000"), ripple::uint256( "0000000000000000000000000000000000000000000002000000000000000000"), ripple::uint256( "0000000000000000000000000000000000000000000004000000000000000000"), ripple::uint256( "0000000000000000000000000000000000000000000008000000000000000000"), ripple::uint256( "0000000000000000000000000000000000000000000010000000000000000000"), ripple::uint256( "0000000000000000000000000000000000000000000020000000000000000000"), ripple::uint256( "0000000000000000000000000000000000000000000040000000000000000000"), ripple::uint256( "0000000000000000000000000000000000000000000080000000000000000000"), ripple::uint256( "0000000000000000000000000000000000000000000100000000000000000000"), ripple::uint256( "0000000000000000000000000000000000000000000200000000000000000000"), ripple::uint256( "0000000000000000000000000000000000000000000400000000000000000000"), ripple::uint256( "0000000000000000000000000000000000000000000800000000000000000000"), ripple::uint256( "0000000000000000000000000000000000000000001000000000000000000000"), ripple::uint256( "0000000000000000000000000000000000000000002000000000000000000000"), ripple::uint256( "0000000000000000000000000000000000000000004000000000000000000000"), ripple::uint256( "0000000000000000000000000000000000000000008000000000000000000000"), ripple::uint256( "0000000000000000000000000000000000000000010000000000000000000000"), ripple::uint256( "0000000000000000000000000000000000000000020000000000000000000000"), ripple::uint256( "0000000000000000000000000000000000000000040000000000000000000000"), ripple::uint256( "0000000000000000000000000000000000000000080000000000000000000000"), ripple::uint256( "0000000000000000000000000000000000000000100000000000000000000000"), ripple::uint256( "0000000000000000000000000000000000000000200000000000000000000000"), ripple::uint256( "0000000000000000000000000000000000000000400000000000000000000000"), ripple::uint256( "0000000000000000000000000000000000000000800000000000000000000000"), ripple::uint256( "0000000000000000000000000000000000000001000000000000000000000000"), ripple::uint256( "0000000000000000000000000000000000000002000000000000000000000000"), ripple::uint256( "0000000000000000000000000000000000000004000000000000000000000000"), ripple::uint256( "0000000000000000000000000000000000000008000000000000000000000000"), ripple::uint256( "0000000000000000000000000000000000000010000000000000000000000000"), ripple::uint256( "0000000000000000000000000000000000000020000000000000000000000000"), ripple::uint256( "0000000000000000000000000000000000000040000000000000000000000000"), ripple::uint256( "0000000000000000000000000000000000000080000000000000000000000000"), ripple::uint256( "0000000000000000000000000000000000000100000000000000000000000000"), ripple::uint256( "0000000000000000000000000000000000000200000000000000000000000000"), ripple::uint256( "0000000000000000000000000000000000000400000000000000000000000000"), ripple::uint256( "0000000000000000000000000000000000000800000000000000000000000000"), ripple::uint256( "0000000000000000000000000000000000001000000000000000000000000000"), ripple::uint256( "0000000000000000000000000000000000002000000000000000000000000000"), ripple::uint256( "0000000000000000000000000000000000004000000000000000000000000000"), ripple::uint256( "0000000000000000000000000000000000008000000000000000000000000000"), ripple::uint256( "0000000000000000000000000000000000010000000000000000000000000000"), ripple::uint256( "0000000000000000000000000000000000020000000000000000000000000000"), ripple::uint256( "0000000000000000000000000000000000040000000000000000000000000000"), ripple::uint256( "0000000000000000000000000000000000080000000000000000000000000000"), ripple::uint256( "0000000000000000000000000000000000100000000000000000000000000000"), ripple::uint256( "0000000000000000000000000000000000200000000000000000000000000000"), ripple::uint256( "0000000000000000000000000000000000400000000000000000000000000000"), ripple::uint256( "0000000000000000000000000000000000800000000000000000000000000000"), ripple::uint256( "0000000000000000000000000000000001000000000000000000000000000000"), ripple::uint256( "0000000000000000000000000000000002000000000000000000000000000000"), ripple::uint256( "0000000000000000000000000000000004000000000000000000000000000000"), ripple::uint256( "0000000000000000000000000000000008000000000000000000000000000000"), ripple::uint256( "0000000000000000000000000000000010000000000000000000000000000000"), ripple::uint256( "0000000000000000000000000000000020000000000000000000000000000000"), ripple::uint256( "0000000000000000000000000000000040000000000000000000000000000000"), ripple::uint256( "0000000000000000000000000000000080000000000000000000000000000000"), ripple::uint256( "0000000000000000000000000000000100000000000000000000000000000000"), ripple::uint256( "0000000000000000000000000000000200000000000000000000000000000000"), ripple::uint256( "0000000000000000000000000000000400000000000000000000000000000000"), ripple::uint256( "0000000000000000000000000000000800000000000000000000000000000000"), ripple::uint256( "0000000000000000000000000000001000000000000000000000000000000000"), ripple::uint256( "0000000000000000000000000000002000000000000000000000000000000000"), ripple::uint256( "0000000000000000000000000000004000000000000000000000000000000000"), ripple::uint256( "0000000000000000000000000000008000000000000000000000000000000000"), ripple::uint256( "0000000000000000000000000000010000000000000000000000000000000000"), ripple::uint256( "0000000000000000000000000000020000000000000000000000000000000000"), ripple::uint256( "0000000000000000000000000000040000000000000000000000000000000000"), ripple::uint256( "0000000000000000000000000000080000000000000000000000000000000000"), ripple::uint256( "0000000000000000000000000000100000000000000000000000000000000000"), ripple::uint256( "0000000000000000000000000000200000000000000000000000000000000000"), ripple::uint256( "0000000000000000000000000000400000000000000000000000000000000000"), ripple::uint256( "0000000000000000000000000000800000000000000000000000000000000000"), ripple::uint256( "0000000000000000000000000001000000000000000000000000000000000000"), ripple::uint256( "0000000000000000000000000002000000000000000000000000000000000000"), ripple::uint256( "0000000000000000000000000004000000000000000000000000000000000000"), ripple::uint256( "0000000000000000000000000008000000000000000000000000000000000000"), ripple::uint256( "0000000000000000000000000010000000000000000000000000000000000000"), ripple::uint256( "0000000000000000000000000020000000000000000000000000000000000000"), ripple::uint256( "0000000000000000000000000040000000000000000000000000000000000000"), ripple::uint256( "0000000000000000000000000080000000000000000000000000000000000000"), ripple::uint256( "0000000000000000000000000100000000000000000000000000000000000000"), ripple::uint256( "0000000000000000000000000200000000000000000000000000000000000000"), ripple::uint256( "0000000000000000000000000400000000000000000000000000000000000000"), ripple::uint256( "0000000000000000000000000800000000000000000000000000000000000000"), ripple::uint256( "0000000000000000000000001000000000000000000000000000000000000000"), ripple::uint256( "0000000000000000000000002000000000000000000000000000000000000000"), ripple::uint256( "0000000000000000000000004000000000000000000000000000000000000000"), ripple::uint256( "0000000000000000000000008000000000000000000000000000000000000000"), ripple::uint256( "0000000000000000000000010000000000000000000000000000000000000000"), ripple::uint256( "0000000000000000000000020000000000000000000000000000000000000000"), ripple::uint256( "0000000000000000000000040000000000000000000000000000000000000000"), ripple::uint256( "0000000000000000000000080000000000000000000000000000000000000000"), ripple::uint256( "0000000000000000000000100000000000000000000000000000000000000000"), ripple::uint256( "0000000000000000000000200000000000000000000000000000000000000000"), ripple::uint256( "0000000000000000000000400000000000000000000000000000000000000000"), ripple::uint256( "0000000000000000000000800000000000000000000000000000000000000000"), ripple::uint256( "0000000000000000000001000000000000000000000000000000000000000000"), ripple::uint256( "0000000000000000000002000000000000000000000000000000000000000000"), ripple::uint256( "0000000000000000000004000000000000000000000000000000000000000000"), ripple::uint256( "0000000000000000000008000000000000000000000000000000000000000000"), ripple::uint256( "0000000000000000000010000000000000000000000000000000000000000000"), ripple::uint256( "0000000000000000000020000000000000000000000000000000000000000000"), ripple::uint256( "0000000000000000000040000000000000000000000000000000000000000000"), ripple::uint256( "0000000000000000000080000000000000000000000000000000000000000000"), ripple::uint256( "0000000000000000000100000000000000000000000000000000000000000000"), ripple::uint256( "0000000000000000000200000000000000000000000000000000000000000000"), ripple::uint256( "0000000000000000000400000000000000000000000000000000000000000000"), ripple::uint256( "0000000000000000000800000000000000000000000000000000000000000000"), ripple::uint256( "0000000000000000001000000000000000000000000000000000000000000000"), ripple::uint256( "0000000000000000002000000000000000000000000000000000000000000000"), ripple::uint256( "0000000000000000004000000000000000000000000000000000000000000000"), ripple::uint256( "0000000000000000008000000000000000000000000000000000000000000000"), ripple::uint256( "0000000000000000010000000000000000000000000000000000000000000000"), ripple::uint256( "0000000000000000020000000000000000000000000000000000000000000000"), ripple::uint256( "0000000000000000040000000000000000000000000000000000000000000000"), ripple::uint256( "0000000000000000080000000000000000000000000000000000000000000000"), ripple::uint256( "0000000000000000100000000000000000000000000000000000000000000000"), ripple::uint256( "0000000000000000200000000000000000000000000000000000000000000000"), ripple::uint256( "0000000000000000400000000000000000000000000000000000000000000000"), ripple::uint256( "0000000000000000800000000000000000000000000000000000000000000000"), ripple::uint256( "0000000000000001000000000000000000000000000000000000000000000000"), ripple::uint256( "0000000000000002000000000000000000000000000000000000000000000000"), ripple::uint256( "0000000000000004000000000000000000000000000000000000000000000000"), ripple::uint256( "0000000000000008000000000000000000000000000000000000000000000000"), ripple::uint256( "0000000000000010000000000000000000000000000000000000000000000000"), ripple::uint256( "0000000000000020000000000000000000000000000000000000000000000000"), ripple::uint256( "0000000000000040000000000000000000000000000000000000000000000000"), ripple::uint256( "0000000000000080000000000000000000000000000000000000000000000000"), ripple::uint256( "0000000000000100000000000000000000000000000000000000000000000000"), ripple::uint256( "0000000000000200000000000000000000000000000000000000000000000000"), ripple::uint256( "0000000000000400000000000000000000000000000000000000000000000000"), ripple::uint256( "0000000000000800000000000000000000000000000000000000000000000000"), ripple::uint256( "0000000000001000000000000000000000000000000000000000000000000000"), ripple::uint256( "0000000000002000000000000000000000000000000000000000000000000000"), ripple::uint256( "0000000000004000000000000000000000000000000000000000000000000000"), ripple::uint256( "0000000000008000000000000000000000000000000000000000000000000000"), ripple::uint256( "0000000000010000000000000000000000000000000000000000000000000000"), ripple::uint256( "0000000000020000000000000000000000000000000000000000000000000000"), ripple::uint256( "0000000000040000000000000000000000000000000000000000000000000000"), ripple::uint256( "0000000000080000000000000000000000000000000000000000000000000000"), ripple::uint256( "0000000000100000000000000000000000000000000000000000000000000000"), ripple::uint256( "0000000000200000000000000000000000000000000000000000000000000000"), ripple::uint256( "0000000000400000000000000000000000000000000000000000000000000000"), ripple::uint256( "0000000000800000000000000000000000000000000000000000000000000000"), ripple::uint256( "0000000001000000000000000000000000000000000000000000000000000000"), ripple::uint256( "0000000002000000000000000000000000000000000000000000000000000000"), ripple::uint256( "0000000004000000000000000000000000000000000000000000000000000000"), ripple::uint256( "0000000008000000000000000000000000000000000000000000000000000000"), ripple::uint256( "0000000010000000000000000000000000000000000000000000000000000000"), ripple::uint256( "0000000020000000000000000000000000000000000000000000000000000000"), ripple::uint256( "0000000040000000000000000000000000000000000000000000000000000000"), ripple::uint256( "0000000080000000000000000000000000000000000000000000000000000000"), ripple::uint256( "0000000100000000000000000000000000000000000000000000000000000000"), ripple::uint256( "0000000200000000000000000000000000000000000000000000000000000000"), ripple::uint256( "0000000400000000000000000000000000000000000000000000000000000000"), ripple::uint256( "0000000800000000000000000000000000000000000000000000000000000000"), ripple::uint256( "0000001000000000000000000000000000000000000000000000000000000000"), ripple::uint256( "0000002000000000000000000000000000000000000000000000000000000000"), ripple::uint256( "0000004000000000000000000000000000000000000000000000000000000000"), ripple::uint256( "0000008000000000000000000000000000000000000000000000000000000000"), ripple::uint256( "0000010000000000000000000000000000000000000000000000000000000000"), ripple::uint256( "0000020000000000000000000000000000000000000000000000000000000000"), ripple::uint256( "0000040000000000000000000000000000000000000000000000000000000000"), ripple::uint256( "0000080000000000000000000000000000000000000000000000000000000000"), ripple::uint256( "0000100000000000000000000000000000000000000000000000000000000000"), ripple::uint256( "0000200000000000000000000000000000000000000000000000000000000000"), ripple::uint256( "0000400000000000000000000000000000000000000000000000000000000000"), ripple::uint256( "0000800000000000000000000000000000000000000000000000000000000000"), ripple::uint256( "0001000000000000000000000000000000000000000000000000000000000000"), ripple::uint256( "0002000000000000000000000000000000000000000000000000000000000000"), ripple::uint256( "0004000000000000000000000000000000000000000000000000000000000000"), ripple::uint256( "0008000000000000000000000000000000000000000000000000000000000000"), ripple::uint256( "0010000000000000000000000000000000000000000000000000000000000000"), ripple::uint256( "0020000000000000000000000000000000000000000000000000000000000000"), ripple::uint256( "0040000000000000000000000000000000000000000000000000000000000000"), ripple::uint256( "0080000000000000000000000000000000000000000000000000000000000000"), ripple::uint256( "0100000000000000000000000000000000000000000000000000000000000000"), ripple::uint256( "0200000000000000000000000000000000000000000000000000000000000000"), ripple::uint256( "0400000000000000000000000000000000000000000000000000000000000000"), ripple::uint256( "0800000000000000000000000000000000000000000000000000000000000000"), ripple::uint256( "1000000000000000000000000000000000000000000000000000000000000000"), ripple::uint256( "2000000000000000000000000000000000000000000000000000000000000000"), ripple::uint256( "4000000000000000000000000000000000000000000000000000000000000000"), ripple::uint256( "8000000000000000000000000000000000000000000000000000000000000000")}; } // namespace ripple #endif