mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 11:36:00 +00:00
RenderScript VTS cleanup and fixes
This CL fixes the remaining VTS test cases for the RenderScript vts-hidl-hal test and cleans up and improves the working test cases. The goal is to have at least one passing test case per HIDL HAL entry. Bug: 35915961 Test: mm and run on angler Change-Id: I4b6e25831ce7d2abb3148c39eb48bde10ed04646
This commit is contained in:
@@ -43,9 +43,7 @@ TEST_F(RenderscriptHidlTest, Simple1DCopyTest) {
|
||||
context->allocation1DWrite(allocation, 0, 0, (Size)dataIn.size(), _data);
|
||||
context->allocation1DRead(allocation, 0, 0, (uint32_t)dataOut.size(), (Ptr)dataOut.data(),
|
||||
(Size)dataOut.size()*sizeof(float));
|
||||
bool same = std::all_of(dataOut.begin(), dataOut.end(),
|
||||
[](float x){ static int val = 0; return x == (float)val++; });
|
||||
EXPECT_EQ(true, same);
|
||||
EXPECT_EQ(dataIn, dataOut);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -76,9 +74,7 @@ TEST_F(RenderscriptHidlTest, Simple2DCopyTest) {
|
||||
_data, 0);
|
||||
context->allocation2DRead(allocation, 0, 0, 0, AllocationCubemapFace::POSITIVE_X, 128, 128,
|
||||
(Ptr)dataOut.data(), (Size)dataOut.size()*sizeof(float), 0);
|
||||
bool same = std::all_of(dataOut.begin(), dataOut.end(),
|
||||
[](float x){ static int val = 0; return x == (float)val++; });
|
||||
EXPECT_EQ(true, same);
|
||||
EXPECT_EQ(dataIn, dataOut);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -108,9 +104,7 @@ TEST_F(RenderscriptHidlTest, Simple3DCopyTest) {
|
||||
context->allocation3DWrite(allocation, 0, 0, 0, 0, 32, 32, 32, _data, 0);
|
||||
context->allocation3DRead(allocation, 0, 0, 0, 0, 32, 32, 32, (Ptr)dataOut.data(),
|
||||
(Size)dataOut.size()*sizeof(float), 0);
|
||||
bool same = std::all_of(dataOut.begin(), dataOut.end(),
|
||||
[](float x){ static int val = 0; return x == (float)val++; });
|
||||
EXPECT_EQ(true, same);
|
||||
EXPECT_EQ(dataIn, dataOut);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -139,18 +133,14 @@ TEST_F(RenderscriptHidlTest, SimpleBitmapTest) {
|
||||
AllocationMipmapControl::NONE,
|
||||
_data,
|
||||
(int)AllocationUsageType::SCRIPT);
|
||||
EXPECT_NE(allocation, Allocation(0));
|
||||
EXPECT_NE(Allocation(0), allocation);
|
||||
|
||||
context->allocationCopyToBitmap(allocation, (Ptr)dataOut1.data(),
|
||||
(Size)dataOut1.size()*sizeof(float));
|
||||
bool same1 = std::all_of(dataOut1.begin(), dataOut1.end(),
|
||||
[](float x){ static int val = 0; return x == (float)val++; });
|
||||
EXPECT_EQ(true, same1);
|
||||
EXPECT_EQ(dataIn, dataOut1);
|
||||
|
||||
context->allocationRead(allocation, (Ptr)dataOut2.data(), (Size)dataOut2.size()*sizeof(float));
|
||||
bool same2 = std::all_of(dataOut2.begin(), dataOut2.end(),
|
||||
[](float x){ static int val = 0; return x == (float)val++; });
|
||||
EXPECT_EQ(true, same2);
|
||||
EXPECT_EQ(dataIn, dataOut2);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -368,24 +358,20 @@ TEST_F(RenderscriptHidlTest, SimpleCubemapTest) {
|
||||
/*
|
||||
* This test creates a complex element type (uint8_t, uint32_t) out of known
|
||||
* elements. It then verifies the element structure was created correctly.
|
||||
* Finally, the test creates a 128-wide, 1-dimension allocation of this type
|
||||
* and transfers memory to and from this structure.
|
||||
* Finally, the test creates a 1-wide, 1-dimension allocation of this type
|
||||
* and transfers memory to and from a single cell of this Allocation.
|
||||
*
|
||||
* Calls: elementCreate, elementComplexCreate, elementGetSubElements,
|
||||
* typeCreate, allocationCreateTyped, allocationElementWrite,
|
||||
* allocationElementRead
|
||||
*
|
||||
* This test currently has a bug, and should be fixed by 3/17.
|
||||
* TODO(butlermichael)
|
||||
*/
|
||||
/*
|
||||
TEST_F(RenderscriptHidlTest, ComplexElementTest) {
|
||||
Element element1 = context->elementCreate(DataType::UNSIGNED_8, DataKind::USER, false, 1);
|
||||
Element element2 = context->elementCreate(DataType::UNSIGNED_32, DataKind::USER, false, 1);
|
||||
|
||||
hidl_vec<Element> eins = {element1, element2};
|
||||
hidl_vec<hidl_string> names = {hidl_string("first"), hidl_string("second")};
|
||||
hidl_vec<Size> arraySizesPtr = {sizeof(uint8_t), sizeof(uint32_t)};
|
||||
hidl_vec<Size> arraySizesPtr = {1, 1};
|
||||
Element element3 = context->elementComplexCreate(eins, names, arraySizesPtr);
|
||||
EXPECT_NE(Element(0), element3);
|
||||
|
||||
@@ -400,28 +386,25 @@ TEST_F(RenderscriptHidlTest, ComplexElementTest) {
|
||||
namesOut.push_back(_names[1]);
|
||||
arraySizesOut = _arraySizes;
|
||||
});
|
||||
EXPECT_NE(Element(0), ids[0]);
|
||||
EXPECT_NE(Element(0), ids[1]);
|
||||
EXPECT_EQ(element1, ids[0]);
|
||||
EXPECT_EQ(element2, ids[1]);
|
||||
EXPECT_EQ("first", namesOut[0]);
|
||||
EXPECT_EQ("second", namesOut[1]);
|
||||
EXPECT_EQ(sizeof(uint8_t), arraySizesOut[0]);
|
||||
EXPECT_EQ(sizeof(uint32_t), arraySizesOut[1]);
|
||||
EXPECT_EQ(Size(1), arraySizesOut[0]);
|
||||
EXPECT_EQ(Size(1), arraySizesOut[1]);
|
||||
|
||||
// 128 x (uint8_t, uint32_t)
|
||||
Type type = context->typeCreate(element3, 128, 0, 0, false, false, YuvFormat::YUV_NONE);
|
||||
// 128 x (uint8_t, uint32_t)
|
||||
// 1 x (uint8_t, uint32_t)
|
||||
Type type = context->typeCreate(element3, 1, 0, 0, false, false, YuvFormat::YUV_NONE);
|
||||
// 1 x (uint8_t, uint32_t)
|
||||
Allocation allocation = context->allocationCreateTyped(type, AllocationMipmapControl::NONE,
|
||||
(int)AllocationUsageType::SCRIPT,
|
||||
(Ptr)nullptr);
|
||||
std::vector<uint32_t> dataIn(128), dataOut(128);
|
||||
std::vector<uint32_t> dataIn(1), dataOut(1);
|
||||
std::generate(dataIn.begin(), dataIn.end(), [](){ static uint32_t val = 0; return val++; });
|
||||
hidl_vec<uint8_t> _data;
|
||||
_data.setToExternal((uint8_t*)dataIn.data(), dataIn.size()*sizeof(uint32_t));
|
||||
context->allocationElementWrite(allocation, 0, 0, 0, 0, _data, 1);
|
||||
context->allocationElementRead(allocation, 0, 0, 0, 0, (Ptr)dataOut.data(),
|
||||
(Size)dataOut.size()*sizeof(uint32_t), 1);
|
||||
bool same = std::all_of(dataOut.begin(), dataOut.end(),
|
||||
[](uint32_t x){ static uint32_t val = 0; return x == val++; });
|
||||
EXPECT_EQ(true, same);
|
||||
EXPECT_EQ(dataIn, dataOut);
|
||||
}
|
||||
*/
|
||||
|
||||
@@ -32,6 +32,7 @@ using ::android::hardware::renderscript::V1_0::AllocationAdapter;
|
||||
using ::android::hardware::renderscript::V1_0::AllocationCubemapFace;
|
||||
using ::android::hardware::renderscript::V1_0::AllocationMipmapControl;
|
||||
using ::android::hardware::renderscript::V1_0::AllocationUsageType;
|
||||
using ::android::hardware::renderscript::V1_0::Closure;
|
||||
using ::android::hardware::renderscript::V1_0::IContext;
|
||||
using ::android::hardware::renderscript::V1_0::IDevice;
|
||||
using ::android::hardware::renderscript::V1_0::ContextType;
|
||||
@@ -62,7 +63,26 @@ using ::android::hardware::hidl_vec;
|
||||
using ::android::hardware::hidl_string;
|
||||
using ::android::sp;
|
||||
|
||||
// bitcode variables
|
||||
// bitcode slots
|
||||
extern const int mExportVarIdx_var_int;
|
||||
extern const int mExportVarIdx_var_long;
|
||||
extern const int mExportVarIdx_var_float;
|
||||
extern const int mExportVarIdx_var_double;
|
||||
extern const int mExportVarIdx_var_allocation;
|
||||
extern const int mExportVarIdx_var_uint32_t;
|
||||
extern const int mExportVarIdx_var_point2;
|
||||
extern const int mExportVarIdx_var_int_ptr;
|
||||
// bitcode invoke slots
|
||||
//extern const int mExportForEachIdx_root;
|
||||
extern const int mExportForEachIdx_increment;
|
||||
// bitcode reduce slots
|
||||
extern const int mExportReduceIdx_summation;
|
||||
// bitcode invoke slots
|
||||
extern const int mExportFuncIdx_function;
|
||||
extern const int mExportFuncIdx_functionV;
|
||||
extern const int mExportFuncIdx_setBuffer;
|
||||
extern const int mExportFuncIdx_setAllocation;
|
||||
// bitcode
|
||||
typedef signed char int8_t;
|
||||
extern const int8_t bitCode[];
|
||||
extern const int bitCodeLength;
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
|
||||
#include "VtsHalRenderscriptV1_0TargetTest.h"
|
||||
#include <system/window.h>
|
||||
|
||||
/*
|
||||
* ContextCreateAndDestroy:
|
||||
@@ -81,7 +82,7 @@ TEST_F(RenderscriptHidlTest, MetadataTest) {
|
||||
elementMetadata = _metadata; });
|
||||
EXPECT_EQ(DataType::FLOAT_32, (DataType)elementMetadata[0]);
|
||||
EXPECT_EQ(DataKind::USER, (DataKind)elementMetadata[1]);
|
||||
EXPECT_EQ(false, ((uint32_t)elementMetadata[2] == 1) ? true : false);
|
||||
EXPECT_EQ(false, elementMetadata[2]);
|
||||
EXPECT_EQ(1u, (uint32_t)elementMetadata[3]);
|
||||
EXPECT_EQ(0u, (uint32_t)elementMetadata[4]);
|
||||
|
||||
@@ -134,21 +135,17 @@ TEST_F(RenderscriptHidlTest, ResizeTest) {
|
||||
* Calls: elementCreate, typeCreate, allocationCreateTyped, allocation2DWrite,
|
||||
* allocationGetNativeWindow, allocationSetNativeWindow, allocationIoSend,
|
||||
* allocationIoReceive, allocation2DRead
|
||||
*
|
||||
* This test currently has a bug, and should be fixed by 3/17.
|
||||
* TODO(butlermichael)
|
||||
*/
|
||||
/*
|
||||
TEST_F(RenderscriptHidlTest, NativeWindowIoTest) {
|
||||
// uint8x4
|
||||
Element element = context->elementCreate(DataType::UNSIGNED_8, DataKind::USER, false, 4);
|
||||
// 512 x 512 x uint8x4
|
||||
Type type = context->typeCreate(element, 512, 512, 0, false, false, YuvFormat::YUV_NONE);
|
||||
std::vector<uint32_t> dataIn(512*512), dataOut(512*512);
|
||||
std::generate(dataIn.begin(), dataIn.end(), [](){ static int val = 0; return (uint32_t)val++; });
|
||||
std::generate(dataIn.begin(), dataIn.end(), [](){ static uint32_t val = 0; return val++; });
|
||||
hidl_vec<uint8_t> _data;
|
||||
_data.setToExternal((uint8_t*)dataIn.data(), dataIn.size()*sizeof(uint32_t));
|
||||
// 512 x 512 x float1
|
||||
// 512 x 512 x uint8x4
|
||||
Allocation allocationRecv = context->allocationCreateTyped(type, AllocationMipmapControl::NONE,
|
||||
(int)(AllocationUsageType::SCRIPT
|
||||
| AllocationUsageType::IO_INPUT),
|
||||
@@ -157,21 +154,20 @@ TEST_F(RenderscriptHidlTest, NativeWindowIoTest) {
|
||||
(int)(AllocationUsageType::SCRIPT
|
||||
| AllocationUsageType::IO_OUTPUT),
|
||||
(Ptr)nullptr);
|
||||
context->allocation2DWrite(allocationSend, 0, 0, 0, AllocationCubemapFace::POSITIVE_X, 512, 512,
|
||||
_data, 0);
|
||||
NativeWindow nativeWindow = context->allocationGetNativeWindow(allocationRecv);
|
||||
EXPECT_NE(NativeWindow(0), nativeWindow);
|
||||
|
||||
((ANativeWindow *)nativeWindow)->incStrong(nullptr);
|
||||
|
||||
context->allocationSetNativeWindow(allocationSend, nativeWindow);
|
||||
context->allocation2DWrite(allocationSend, 0, 0, 0, AllocationCubemapFace::POSITIVE_X, 512, 512,
|
||||
_data, 0);
|
||||
context->allocationIoSend(allocationSend);
|
||||
context->allocationIoReceive(allocationRecv);
|
||||
context->allocation2DRead(allocationRecv, 0, 0, 0, AllocationCubemapFace::POSITIVE_X, 512, 512,
|
||||
(Ptr)dataOut.data(), (Size)dataOut.size()*sizeof(uint32_t), 0);
|
||||
bool same = std::all_of(dataOut.begin(), dataOut.end(),
|
||||
[](uint32_t x){ static int val = 0; return x == (uint32_t)val++; });
|
||||
EXPECT_EQ(true, same);
|
||||
EXPECT_EQ(dataIn, dataOut);
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
* Three allocations are created, two with IO_INPUT and one with IO_OUTPUT. The
|
||||
@@ -180,21 +176,17 @@ TEST_F(RenderscriptHidlTest, NativeWindowIoTest) {
|
||||
* Calls: elementCreate, typeCreate, allocationCreateTyped,
|
||||
* allocationCreateFromBitmap, allocationSetupBufferQueue,
|
||||
* allocationShareBufferQueue
|
||||
*
|
||||
* This test currently has a bug, and should be fixed by 3/17.
|
||||
* TODO(butlermichael)
|
||||
*/
|
||||
/*
|
||||
TEST_F(RenderscriptHidlTest, BufferQueueTest) {
|
||||
// float1
|
||||
Element element = context->elementCreate(DataType::FLOAT_32, DataKind::USER, false, 1);
|
||||
// 512 x 512 x float1
|
||||
// uint8x4
|
||||
Element element = context->elementCreate(DataType::UNSIGNED_8, DataKind::USER, false, 4);
|
||||
// 512 x 512 x uint8x4
|
||||
Type type = context->typeCreate(element, 512, 512, 0, false, false, YuvFormat::YUV_NONE);
|
||||
std::vector<float> dataIn(512*512), dataOut1(512*512), dataOut2(512*512);
|
||||
std::generate(dataIn.begin(), dataIn.end(), [](){ static int val = 0; return (float)val++; });
|
||||
std::vector<uint32_t> dataIn(512*512), dataOut1(512*512), dataOut2(512*512);
|
||||
std::generate(dataIn.begin(), dataIn.end(), [](){ static uint32_t val = 0; return val++; });
|
||||
hidl_vec<uint8_t> _data;
|
||||
_data.setToExternal((uint8_t*)dataIn.data(), dataIn.size()*sizeof(float));
|
||||
// 512 x 512 x float1
|
||||
_data.setToExternal((uint8_t*)dataIn.data(), dataIn.size()*sizeof(uint32_t));
|
||||
// 512 x 512 x uint8x4
|
||||
Allocation allocationRecv1 = context->allocationCreateTyped(type, AllocationMipmapControl::NONE,
|
||||
(int)(AllocationUsageType::SCRIPT
|
||||
| AllocationUsageType::IO_INPUT),
|
||||
@@ -203,16 +195,37 @@ TEST_F(RenderscriptHidlTest, BufferQueueTest) {
|
||||
(int)(AllocationUsageType::SCRIPT
|
||||
| AllocationUsageType::IO_INPUT),
|
||||
(Ptr)nullptr);
|
||||
Allocation allocationSend = context->allocationCreateFromBitmap(type,
|
||||
AllocationMipmapControl::NONE,
|
||||
_data,
|
||||
(int)(AllocationUsageType::SCRIPT
|
||||
| AllocationUsageType::IO_OUTPUT));
|
||||
Allocation allocationSend = context->allocationCreateTyped(type, AllocationMipmapControl::NONE,
|
||||
(int)(AllocationUsageType::SCRIPT
|
||||
| AllocationUsageType::IO_INPUT),
|
||||
(Ptr)nullptr);
|
||||
context->allocationSetupBufferQueue(allocationRecv1, 2);
|
||||
context->allocationShareBufferQueue(allocationRecv1, allocationRecv2);
|
||||
// TODO: test the buffer queue
|
||||
context->allocationShareBufferQueue(allocationRecv2, allocationRecv1);
|
||||
|
||||
NativeWindow nativeWindow1 = context->allocationGetNativeWindow(allocationRecv1);
|
||||
EXPECT_NE(NativeWindow(0), nativeWindow1);
|
||||
NativeWindow nativeWindow2 = context->allocationGetNativeWindow(allocationRecv2);
|
||||
EXPECT_EQ(nativeWindow2, nativeWindow1);
|
||||
|
||||
((ANativeWindow *)nativeWindow1)->incStrong(nullptr);
|
||||
|
||||
context->allocationSetNativeWindow(allocationSend, nativeWindow1);
|
||||
context->allocation2DWrite(allocationSend, 0, 0, 0, AllocationCubemapFace::POSITIVE_X, 512, 512,
|
||||
_data, 0);
|
||||
context->allocationIoSend(allocationSend);
|
||||
context->allocationIoReceive(allocationRecv1);
|
||||
context->allocation2DRead(allocationRecv1, 0, 0, 0, AllocationCubemapFace::POSITIVE_X, 512, 512,
|
||||
(Ptr)dataOut1.data(), (Size)dataOut1.size()*sizeof(uint32_t), 0);
|
||||
EXPECT_EQ(dataIn, dataOut1);
|
||||
|
||||
context->allocation2DWrite(allocationSend, 0, 0, 0, AllocationCubemapFace::POSITIVE_X, 512, 512,
|
||||
_data, 0);
|
||||
context->allocationIoSend(allocationSend);
|
||||
context->allocationIoReceive(allocationRecv2);
|
||||
context->allocation2DRead(allocationRecv2, 0, 0, 0, AllocationCubemapFace::POSITIVE_X, 512, 512,
|
||||
(Ptr)dataOut2.data(), (Size)dataOut2.size()*sizeof(uint32_t), 0);
|
||||
EXPECT_EQ(dataIn, dataOut2);
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
* This test sets up the message queue, sends a message, peeks at the message,
|
||||
@@ -220,33 +233,29 @@ TEST_F(RenderscriptHidlTest, BufferQueueTest) {
|
||||
*
|
||||
* Calls: contextInitToClient, contextSendMessage, contextPeekMessage,
|
||||
* contextGetMessage, contextDeinitToClient, contextLog
|
||||
*
|
||||
* This test currently has a bug, and should be fixed by 3/17.
|
||||
* TODO(butlermichael)
|
||||
*/
|
||||
/*
|
||||
TEST_F(RenderscriptHidlTest, ContextMessageTest) {
|
||||
context->contextInitToClient();
|
||||
|
||||
std::string messageOut = "correct";
|
||||
const char * message = "correct";
|
||||
std::vector<char> messageSend(message, message + sizeof(message));
|
||||
hidl_vec<uint8_t> _data;
|
||||
_data.setToExternal((uint8_t*)const_cast<char*>(messageOut.c_str()), messageOut.length());
|
||||
_data.setToExternal((uint8_t*)messageSend.data(), messageSend.size());
|
||||
context->contextSendMessage(0, _data);
|
||||
MessageToClientType messageType;
|
||||
size_t size;
|
||||
uint32_t subID;
|
||||
context->contextPeekMessage([&](MessageToClientType _type, Size _size, uint32_t _subID){
|
||||
messageType = _type; size = (uint32_t)_size; subID = _subID; });
|
||||
std::vector<char> messageIn(size, '\0');
|
||||
context->contextGetMessage(messageIn.data(), messageIn.size(),
|
||||
std::vector<char> messageRecv(size, '\0');
|
||||
context->contextGetMessage(messageRecv.data(), messageRecv.size(),
|
||||
[&](MessageToClientType _type, Size _size){
|
||||
messageType = _type; size = (uint32_t)_size; });
|
||||
EXPECT_EQ(messageOut, messageIn.data());
|
||||
EXPECT_EQ(messageSend, messageRecv);
|
||||
|
||||
context->contextDeinitToClient();
|
||||
context->contextLog();
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
* Call through a bunch of APIs and make sure they don’t crash. Assign the name
|
||||
|
||||
@@ -46,27 +46,30 @@ TEST_F(RenderscriptHidlTest, ScriptVarTest) {
|
||||
EXPECT_NE(Script(0), script);
|
||||
|
||||
// arg tests
|
||||
context->scriptSetVarI(script, 0, 100);
|
||||
context->scriptSetVarI(script, mExportVarIdx_var_int, 100);
|
||||
int resultI = 0;
|
||||
context->scriptGetVarV(script, 0, sizeof(int), [&](const hidl_vec<uint8_t>& _data){
|
||||
resultI = *((int*)_data.data()); });
|
||||
context->scriptGetVarV(script, mExportVarIdx_var_int, sizeof(int),
|
||||
[&](const hidl_vec<uint8_t>& _data){ resultI = *((int*)_data.data()); });
|
||||
EXPECT_EQ(100, resultI);
|
||||
|
||||
context->scriptSetVarJ(script, 1, 101l);
|
||||
context->scriptSetVarJ(script, mExportVarIdx_var_long, 101l);
|
||||
int resultJ = 0;
|
||||
context->scriptGetVarV(script, 1, sizeof(long), [&](const hidl_vec<uint8_t>& _data){
|
||||
context->scriptGetVarV(script, mExportVarIdx_var_long, sizeof(long),
|
||||
[&](const hidl_vec<uint8_t>& _data){
|
||||
resultJ = *((long*)_data.data()); });
|
||||
EXPECT_EQ(101, resultJ);
|
||||
EXPECT_EQ(101l, resultJ);
|
||||
|
||||
context->scriptSetVarF(script, 2, 102.0f);
|
||||
context->scriptSetVarF(script, mExportVarIdx_var_float, 102.0f);
|
||||
int resultF = 0.0f;
|
||||
context->scriptGetVarV(script, 2, sizeof(float), [&](const hidl_vec<uint8_t>& _data){
|
||||
context->scriptGetVarV(script, mExportVarIdx_var_float, sizeof(float),
|
||||
[&](const hidl_vec<uint8_t>& _data){
|
||||
resultF = *((float*)_data.data()); });
|
||||
EXPECT_EQ(102.0f, resultF);
|
||||
|
||||
context->scriptSetVarD(script, 3, 103.0);
|
||||
context->scriptSetVarD(script, mExportVarIdx_var_double, 103.0);
|
||||
int resultD = 0.0;
|
||||
context->scriptGetVarV(script, 3, sizeof(double), [&](const hidl_vec<uint8_t>& _data){
|
||||
context->scriptGetVarV(script, mExportVarIdx_var_double, sizeof(double),
|
||||
[&](const hidl_vec<uint8_t>& _data){
|
||||
resultD = *((double*)_data.data()); });
|
||||
EXPECT_EQ(103.0, resultD);
|
||||
|
||||
@@ -79,23 +82,21 @@ TEST_F(RenderscriptHidlTest, ScriptVarTest) {
|
||||
(int)AllocationUsageType::SCRIPT,
|
||||
(Ptr)nullptr);
|
||||
Allocation allocationOut = Allocation(0);
|
||||
context->scriptSetVarObj(script, 4, (ObjectBase)allocationIn);
|
||||
context->scriptGetVarV(script, 4, sizeof(ObjectBase), [&](const hidl_vec<uint8_t>& _data){
|
||||
context->scriptSetVarObj(script, mExportVarIdx_var_allocation, (ObjectBase)allocationIn);
|
||||
context->scriptGetVarV(script, mExportVarIdx_var_allocation, sizeof(ObjectBase),
|
||||
[&](const hidl_vec<uint8_t>& _data){
|
||||
allocationOut = (Allocation) *((ObjectBase*)_data.data()); });
|
||||
EXPECT_EQ(allocationOut, allocationIn);
|
||||
|
||||
std::vector<int> arrayIn = {500, 501, 502, 503};
|
||||
std::vector<int> arrayOut(4);
|
||||
hidl_vec<uint8_t> arrayData;
|
||||
arrayData.setToExternal((uint8_t*)arrayIn.data(), arrayIn.size()*sizeof(int));
|
||||
context->scriptSetVarV(script, 5, arrayData);
|
||||
context->scriptGetVarV(script, 5, 4*sizeof(int), [&](const hidl_vec<uint8_t>& _data){
|
||||
arrayOut = std::vector<int>((int*)_data.data(),
|
||||
(int*)_data.data() + 4); });
|
||||
EXPECT_EQ(500, arrayOut[0]);
|
||||
EXPECT_EQ(501, arrayOut[1]);
|
||||
EXPECT_EQ(502, arrayOut[2]);
|
||||
EXPECT_EQ(503, arrayOut[3]);
|
||||
uint32_t valueV = 104u;
|
||||
hidl_vec<uint8_t> _dataV;
|
||||
_dataV.setToExternal((uint8_t*)&valueV, sizeof(uint32_t));
|
||||
context->scriptSetVarV(script, mExportVarIdx_var_uint32_t, _dataV);
|
||||
uint32_t resultV = 0u;
|
||||
context->scriptGetVarV(script, mExportVarIdx_var_uint32_t, sizeof(uint32_t),
|
||||
[&](const hidl_vec<uint8_t>& _data){
|
||||
resultV = *((uint32_t*)_data.data()); });
|
||||
EXPECT_EQ(104u, resultV);
|
||||
|
||||
std::vector<int> dataVE = {1000, 1001};
|
||||
std::vector<uint32_t> dimsVE = {1};
|
||||
@@ -104,12 +105,13 @@ TEST_F(RenderscriptHidlTest, ScriptVarTest) {
|
||||
hidl_vec<uint32_t> _dimsVE;
|
||||
_dataVE.setToExternal((uint8_t*)dataVE.data(), dataVE.size()*sizeof(int));
|
||||
_dimsVE.setToExternal((uint32_t*)dimsVE.data(), dimsVE.size());
|
||||
// intx2
|
||||
// intx2 to represent point2 which is {int, int}
|
||||
Element elementVE = context->elementCreate(DataType::SIGNED_32, DataKind::USER, false, 2);
|
||||
context->scriptSetVarVE(script, 6, _dataVE, elementVE, _dimsVE);
|
||||
context->scriptGetVarV(script, 6, 2*sizeof(int), [&](const hidl_vec<uint8_t>& _data){
|
||||
outVE = std::vector<int>((int*)_data.data(),
|
||||
(int*)_data.data() + 2); });
|
||||
context->scriptSetVarVE(script, mExportVarIdx_var_point2, _dataVE, elementVE, _dimsVE);
|
||||
context->scriptGetVarV(script, mExportVarIdx_var_point2, 2*sizeof(int),
|
||||
[&](const hidl_vec<uint8_t>& _data){
|
||||
outVE = std::vector<int>(
|
||||
(int*)_data.data(), (int*)_data.data() + 2); });
|
||||
EXPECT_EQ(1000, outVE[0]);
|
||||
EXPECT_EQ(1001, outVE[1]);
|
||||
}
|
||||
@@ -127,19 +129,47 @@ TEST_F(RenderscriptHidlTest, ScriptInvokeTest) {
|
||||
EXPECT_NE(Script(0), script);
|
||||
|
||||
// invoke test
|
||||
int function_res = 0;
|
||||
context->scriptInvoke(script, 0);
|
||||
context->scriptGetVarV(script, 0, sizeof(int), [&](const hidl_vec<uint8_t>& _data){
|
||||
function_res = *((int*)_data.data()); });
|
||||
EXPECT_NE(100, function_res);
|
||||
int resultI = 0;
|
||||
long resultJ = 0l;
|
||||
float resultF = 0.0f;
|
||||
double resultD = 0.0;
|
||||
uint32_t resultV = 0u;
|
||||
std::vector<int> resultVE(2);
|
||||
context->scriptInvoke(script, mExportFuncIdx_function);
|
||||
context->scriptGetVarV(script, mExportVarIdx_var_int, sizeof(int),
|
||||
[&](const hidl_vec<uint8_t>& _data){ resultI = *((int*)_data.data()); });
|
||||
context->scriptGetVarV(script, mExportVarIdx_var_long, sizeof(long),
|
||||
[&](const hidl_vec<uint8_t>& _data){
|
||||
resultJ = *((long*)_data.data()); });
|
||||
context->scriptGetVarV(script, mExportVarIdx_var_float, sizeof(float),
|
||||
[&](const hidl_vec<uint8_t>& _data){
|
||||
resultF = *((float*)_data.data()); });
|
||||
context->scriptGetVarV(script, mExportVarIdx_var_double, sizeof(double),
|
||||
[&](const hidl_vec<uint8_t>& _data){
|
||||
resultD = *((double*)_data.data()); });
|
||||
context->scriptGetVarV(script, mExportVarIdx_var_uint32_t, sizeof(uint32_t),
|
||||
[&](const hidl_vec<uint8_t>& _data){
|
||||
resultV = *((uint32_t*)_data.data()); });
|
||||
context->scriptGetVarV(script, mExportVarIdx_var_point2, 2*sizeof(int),
|
||||
[&](const hidl_vec<uint8_t>& _data){
|
||||
resultVE = std::vector<int>(
|
||||
(int*)_data.data(), (int*)_data.data() + 2); });
|
||||
EXPECT_EQ(1, resultI);
|
||||
EXPECT_EQ(2l, resultJ);
|
||||
EXPECT_EQ(3.0f, resultF);
|
||||
EXPECT_EQ(4.0, resultD);
|
||||
EXPECT_EQ(5u, resultV);
|
||||
EXPECT_EQ(6, resultVE[0]);
|
||||
EXPECT_EQ(7, resultVE[1]);
|
||||
|
||||
// invokeV test
|
||||
int functionV_arg = 5;
|
||||
int functionV_res = 0;
|
||||
hidl_vec<uint8_t> functionV_data;
|
||||
functionV_data.setToExternal((uint8_t*)&functionV_arg, sizeof(int));
|
||||
context->scriptInvokeV(script, 1, functionV_data);
|
||||
context->scriptGetVarV(script, 0, sizeof(int), [&](const hidl_vec<uint8_t>& _data){
|
||||
context->scriptInvokeV(script, mExportFuncIdx_functionV, functionV_data);
|
||||
context->scriptGetVarV(script, mExportVarIdx_var_int, sizeof(int),
|
||||
[&](const hidl_vec<uint8_t>& _data){
|
||||
functionV_res = *((int*)_data.data()); });
|
||||
EXPECT_EQ(5, functionV_res);
|
||||
}
|
||||
@@ -161,8 +191,9 @@ TEST_F(RenderscriptHidlTest, ScriptForEachTest) {
|
||||
Element element = context->elementCreate(DataType::UNSIGNED_8, DataKind::USER, false, 1);
|
||||
// 64 x uint8_t
|
||||
Type type = context->typeCreate(element, 64, 0, 0, false, false, YuvFormat::YUV_NONE);
|
||||
std::vector<uint8_t> dataIn(64), dataOut(64);
|
||||
std::vector<uint8_t> dataIn(64), dataOut(64), expected(64);
|
||||
std::generate(dataIn.begin(), dataIn.end(), [](){ static uint8_t val = 0; return val++; });
|
||||
std::generate(expected.begin(), expected.end(), [](){ static uint8_t val = 1; return val++; });
|
||||
hidl_vec<uint8_t> _data;
|
||||
_data.setToExternal((uint8_t*)dataIn.data(), dataIn.size());
|
||||
// 64 x float1
|
||||
@@ -176,11 +207,9 @@ TEST_F(RenderscriptHidlTest, ScriptForEachTest) {
|
||||
hidl_vec<Allocation> vains;
|
||||
vains.setToExternal(&allocation, 1);
|
||||
hidl_vec<uint8_t> params;
|
||||
context->scriptForEach(script, 1, vains, vout, params, nullptr);
|
||||
context->scriptForEach(script, mExportForEachIdx_increment, vains, vout, params, nullptr);
|
||||
context->allocationRead(vout, (Ptr)dataOut.data(), (Size)dataOut.size()*sizeof(uint8_t));
|
||||
bool same = std::all_of(dataOut.begin(), dataOut.end(),
|
||||
[](uint8_t x){ static uint8_t val = 1; return x == val++; });
|
||||
EXPECT_EQ(true, same);
|
||||
EXPECT_EQ(expected, dataOut);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -215,7 +244,7 @@ TEST_F(RenderscriptHidlTest, ScriptReduceTest) {
|
||||
context->allocation1DWrite(allocation, 0, 0, (Size)dataIn.size(), _data);
|
||||
hidl_vec<Allocation> vains;
|
||||
vains.setToExternal(&allocation, 1);
|
||||
context->scriptReduce(script, 0, vains, vaout, nullptr);
|
||||
context->scriptReduce(script, mExportReduceIdx_summation, vains, vaout, nullptr);
|
||||
context->contextFinish();
|
||||
context->allocationRead(vaout, (Ptr)dataOut.data(), (Size)dataOut.size()*sizeof(int));
|
||||
// sum of 0, 1, 2, ..., 62, 63
|
||||
@@ -228,38 +257,34 @@ TEST_F(RenderscriptHidlTest, ScriptReduceTest) {
|
||||
* RenderScript script, represented in the bitcode.
|
||||
*
|
||||
* Calls: scriptCCreate, elementCreate, typeCreate, allocationCreateTyped,
|
||||
* allocationGetPointer, scriptBindAllocation
|
||||
*
|
||||
* This test currently has a bug, and should be fixed by 3/17.
|
||||
* TODO(butlermichael)
|
||||
* scriptSetVarV, scriptBindAllocation, allocationRead
|
||||
*/
|
||||
/*
|
||||
TEST_F(RenderscriptHidlTest, ScriptBindTest) {
|
||||
hidl_vec<uint8_t> bitcode;
|
||||
bitcode.setToExternal((uint8_t*)bitCode, bitCodeLength);
|
||||
Script script = context->scriptCCreate("struct_test", "/data/local/tmp/", bitcode);
|
||||
EXPECT_NE(Script(0), script);
|
||||
|
||||
// uint8_t
|
||||
// in32
|
||||
Element element = context->elementCreate(DataType::SIGNED_32, DataKind::USER, false, 1);
|
||||
// 64 x uint8_t
|
||||
// 64 x int32
|
||||
Type type = context->typeCreate(element, 64, 0, 0, false, false, YuvFormat::YUV_NONE);
|
||||
// 64 x float1
|
||||
// 64 x int32
|
||||
Allocation allocation = context->allocationCreateTyped(type, AllocationMipmapControl::NONE,
|
||||
(int)AllocationUsageType::SCRIPT,
|
||||
(Ptr)nullptr);
|
||||
Ptr dataPtr1, dataPtr2;
|
||||
Size stride;
|
||||
context->allocationGetPointer(allocation, 0, AllocationCubemapFace::POSITIVE_X, 0,
|
||||
[&](Ptr _dataPtr, Size _stride){ dataPtr1 = _dataPtr;
|
||||
stride = _stride; });
|
||||
context->scriptBindAllocation(script, allocation, 7);
|
||||
context->allocationGetPointer(allocation, 0, AllocationCubemapFace::POSITIVE_X, 0,
|
||||
[&](Ptr _dataPtr, Size _stride){ dataPtr2 = _dataPtr;
|
||||
stride = _stride; });
|
||||
EXPECT_NE(dataPtr1, dataPtr2);
|
||||
std::vector<int> dataIn(64), dataOut(64), expected(64, 5);
|
||||
hidl_vec<uint8_t> _data;
|
||||
_data.setToExternal((uint8_t*)dataIn.data(), dataIn.size()*sizeof(int));
|
||||
context->allocation1DWrite(allocation, 0, 0, (Size)dataIn.size(), _data);
|
||||
context->scriptBindAllocation(script, allocation, mExportVarIdx_var_int_ptr);
|
||||
int dim = 64;
|
||||
hidl_vec<uint8_t> _dim;
|
||||
_dim.setToExternal((uint8_t*)&dim, sizeof(int));
|
||||
context->scriptInvokeV(script, mExportFuncIdx_setBuffer, _dim);
|
||||
context->allocationRead(allocation, (Ptr)dataOut.data(), (Size)dataOut.size()*sizeof(int));
|
||||
EXPECT_EQ(expected, dataOut);
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
* This test groups together two RenderScript intrinsic kernels to run one after
|
||||
@@ -269,38 +294,25 @@ TEST_F(RenderscriptHidlTest, ScriptBindTest) {
|
||||
* ScriptGroup.
|
||||
*
|
||||
* Calls: elementCreate, typeCreate, allocationCreateTyped, allocation2DWrite,
|
||||
* scriptIntrinsicCreate, scriptKernelIDCreate, scriptGroupCreate,
|
||||
* scriptGroupSetInput, scriptGroupSetOutput, scriptGroupExecute,
|
||||
* allocation2DRead
|
||||
*
|
||||
* This test currently has a bug, and should be fixed by 3/17.
|
||||
* TODO(butlermichael)
|
||||
* scriptIntrinsicCreate, scriptKernelIDCreate, scriptFieldIDCreate,
|
||||
* scriptGroupCreate, scriptGroupSetOutput, scriptGroupExecute, allocation2DRead
|
||||
*/
|
||||
/*
|
||||
TEST_F(RenderscriptHidlTest, ScriptGroupTest) {
|
||||
//std::vector<uint8_t> dataIn(256*256*1, 128), dataOut(256*256*3, 0);
|
||||
std::vector<uint8_t> dataIn(256*256*1, 128), dataOut(256*256*4, 0);
|
||||
std::vector<uint8_t> dataIn(256*256*1, 128), dataOut(256*256*4, 0), zeros(256*256*4, 0);
|
||||
hidl_vec<uint8_t> _dataIn, _dataOut;
|
||||
_dataIn.setToExternal(dataIn.data(), dataIn.size());
|
||||
_dataOut.setToExternal(dataOut.data(), dataIn.size());
|
||||
_dataOut.setToExternal(dataOut.data(), dataOut.size());
|
||||
|
||||
// 256 x 256 YUV pixels
|
||||
Element element1 = context->elementCreate(DataType::UNSIGNED_8, DataKind::PIXEL_YUV, true, 1);
|
||||
//Type type1 = context->typeCreate(element1, 256, 256, 0, false, false, YuvFormat::YUV_420_888);
|
||||
Type type1 = context->typeCreate(element1, 256, 256, 0, false, false, YuvFormat::YUV_NV21);
|
||||
Type type1 = context->typeCreate(element1, 256, 256, 0, false, false, YuvFormat::YUV_420_888);
|
||||
Allocation allocation1 = context->allocationCreateTyped(type1, AllocationMipmapControl::NONE,
|
||||
(int)AllocationUsageType::SCRIPT,
|
||||
(Ptr)nullptr);
|
||||
context->allocation2DWrite(allocation1, 0, 0, 0, AllocationCubemapFace::POSITIVE_X, 256, 256,
|
||||
_dataIn, 0);
|
||||
Script yuv2rgb = context->scriptIntrinsicCreate(ScriptIntrinsicID::ID_YUV_TO_RGB, element1);
|
||||
EXPECT_NE(Script(0), yuv2rgb);
|
||||
|
||||
ScriptKernelID yuv2rgbKID = context->scriptKernelIDCreate(yuv2rgb, 0, 2);
|
||||
EXPECT_NE(ScriptKernelID(0), yuv2rgbKID);
|
||||
|
||||
// 256 x 256 RGB pixels
|
||||
//Element element2 = context->elementCreate(DataType::UNSIGNED_8, DataKind::PIXEL_RGB, true, 3);
|
||||
// 256 x 256 RGBA pixels
|
||||
Element element2 = context->elementCreate(DataType::UNSIGNED_8, DataKind::PIXEL_RGBA, true, 4);
|
||||
Type type2 = context->typeCreate(element2, 256, 256, 0, false, false, YuvFormat::YUV_NONE);
|
||||
Allocation allocation2 = context->allocationCreateTyped(type2, AllocationMipmapControl::NONE,
|
||||
@@ -308,83 +320,170 @@ TEST_F(RenderscriptHidlTest, ScriptGroupTest) {
|
||||
(Ptr)nullptr);
|
||||
context->allocation2DWrite(allocation2, 0, 0, 0, AllocationCubemapFace::POSITIVE_X, 256, 256,
|
||||
_dataOut, 0);
|
||||
|
||||
// create scripts
|
||||
Script yuv2rgb = context->scriptIntrinsicCreate(ScriptIntrinsicID::ID_YUV_TO_RGB, element1);
|
||||
EXPECT_NE(Script(0), yuv2rgb);
|
||||
|
||||
ScriptKernelID yuv2rgbKID = context->scriptKernelIDCreate(yuv2rgb, 0, 2);
|
||||
EXPECT_NE(ScriptKernelID(0), yuv2rgbKID);
|
||||
|
||||
Script blur = context->scriptIntrinsicCreate(ScriptIntrinsicID::ID_BLUR, element2);
|
||||
EXPECT_NE(Script(0), blur);
|
||||
|
||||
ScriptKernelID blurKID = context->scriptKernelIDCreate(blur, 0, 2);
|
||||
EXPECT_NE(ScriptKernelID(0), blurKID);
|
||||
ScriptFieldID blurFID = context->scriptFieldIDCreate(blur, 1);
|
||||
EXPECT_NE(ScriptFieldID(0), blurFID);
|
||||
|
||||
// ScriptGroup
|
||||
hidl_vec<ScriptKernelID> kernels = {yuv2rgbKID, blurKID};
|
||||
hidl_vec<ScriptKernelID> srcK = {yuv2rgbKID};
|
||||
hidl_vec<ScriptKernelID> dstK = {blurKID};
|
||||
hidl_vec<ScriptFieldID> dstF = {};
|
||||
hidl_vec<ScriptKernelID> dstK = {ScriptKernelID(0)};
|
||||
hidl_vec<ScriptFieldID> dstF = {blurFID};
|
||||
hidl_vec<Type> types = {type2};
|
||||
ScriptGroup scriptGroup = context->scriptGroupCreate(kernels, srcK, dstK, dstF, types);
|
||||
EXPECT_NE(ScriptGroup(0), scriptGroup);
|
||||
|
||||
context->scriptGroupSetInput(scriptGroup, yuv2rgbKID, allocation1);
|
||||
context->scriptSetVarObj(yuv2rgb, 0, (ObjectBase)allocation1);
|
||||
context->scriptGroupSetOutput(scriptGroup, blurKID, allocation2);
|
||||
context->scriptGroupExecute(scriptGroup);
|
||||
context->contextFinish();
|
||||
|
||||
// verify contents were changed
|
||||
context->allocation2DRead(allocation2, 0, 0, 0, AllocationCubemapFace::POSITIVE_X, 256, 256,
|
||||
(Ptr)dataOut.data(), (Size)dataOut.size(), 0);
|
||||
bool same = std::all_of(dataOut.begin(), dataOut.end(), [](uint8_t x){ return x != 0; });
|
||||
EXPECT_EQ(true, same);
|
||||
EXPECT_NE(zeros, dataOut);
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
* Similar to the ScriptGroup test, this test verifies the execution flow of
|
||||
* RenderScript kernels and invokables.
|
||||
*
|
||||
* Calls: scriptFieldIDCreate, closureCreate, scriptInvokeIDCreate,
|
||||
* invokeClosureCreate, closureSetArg, closureSetGlobal, scriptGroup2Create,
|
||||
* scriptGroupExecute
|
||||
*
|
||||
* This test currently still a work in progress, and should be finished by 3/17.
|
||||
* TODO(butlermichael)
|
||||
* invokeClosureCreate, closureSetGlobal, scriptGroup2Create, scriptGroupExecute
|
||||
*/
|
||||
/*
|
||||
TEST_F(RenderscriptHidlTest, ScriptGroup2Test) {
|
||||
hidl_vec<uint8_t> bitcode;
|
||||
bitcode.setToExternal((uint8_t*)bitCode, bitCodeLength);
|
||||
Script script = context->scriptCCreate("struct_test", "/data/local/tmp/", bitcode);
|
||||
EXPECT_NE(Script(0), script);
|
||||
|
||||
ScriptFieldID fieldID = context->scriptFieldIDCreate(script, slot);
|
||||
std::vector<uint8_t> dataIn(128, 128), dataOut(128, 0), expected(128, 7+1);
|
||||
hidl_vec<uint8_t> _dataIn, _dataOut;
|
||||
_dataIn.setToExternal(dataIn.data(), dataIn.size());
|
||||
|
||||
// 256 x 256 YUV pixels
|
||||
Element element = context->elementCreate(DataType::UNSIGNED_8, DataKind::USER, false, 1);
|
||||
Type type = context->typeCreate(element, 128, 0, 0, false, false, YuvFormat::YUV_NONE);
|
||||
Allocation allocation = context->allocationCreateTyped(type, AllocationMipmapControl::NONE,
|
||||
(int)AllocationUsageType::SCRIPT,
|
||||
(Ptr)nullptr);
|
||||
context->allocation1DWrite(allocation, 0, 0, (Size)_dataIn.size(), _dataIn);
|
||||
|
||||
ScriptFieldID fieldID = context->scriptFieldIDCreate(script, mExportVarIdx_var_allocation);
|
||||
EXPECT_NE(ScriptFieldID(0), fieldID);
|
||||
ASSERT_NE(ScriptFieldID(0), fieldID);
|
||||
|
||||
ScriptKernelID kernelID = context->scriptKernelIDCreate(script, slot, sig);
|
||||
EXPECT_NE(ScriptKernelID(0), kernelID);
|
||||
|
||||
Allocation returnValue = 0;
|
||||
hidl_vec<ScriptFieldID> fieldIDS = {};
|
||||
hidl_vec<int64_t> values = {};
|
||||
hidl_vec<int32_t> sizes = {};
|
||||
hidl_veC<Closure> depClosures = {};
|
||||
hidl_vec<ScriptFieldID> depFieldIDS = {};
|
||||
Closure closure1 = context->closureCreate(kernelID, returnValue, fieldIDS, values, sizes,
|
||||
depClosures, depFieldIDS);
|
||||
EXPECT_NE(Closure(0), closure1);
|
||||
|
||||
ScriptInvokeID invokeID = context->scriptInvokeIDCreate(script, slot);
|
||||
// invoke
|
||||
ScriptInvokeID invokeID = context->scriptInvokeIDCreate(script, mExportFuncIdx_setAllocation);
|
||||
EXPECT_NE(ScriptInvokeID(0), invokeID);
|
||||
ASSERT_NE(ScriptInvokeID(0), invokeID);
|
||||
|
||||
hidl_vec<uint8_t> params = {};
|
||||
hidl_vec<ScriptFieldID> fieldsIDS2 = {};
|
||||
hidl_vec<int64_t> values2 = {};
|
||||
hidl_vec<int32_t> sizes2 = {};
|
||||
Closure closure2 = context->invokeClosureCreate(invokeID, params, fieldIDS2, values2, sizes2);
|
||||
int dim = 128;
|
||||
hidl_vec<uint8_t> params;
|
||||
params.setToExternal((uint8_t*)&dim, sizeof(dim));
|
||||
hidl_vec<ScriptFieldID> fieldIDS1 = {fieldID};
|
||||
hidl_vec<int64_t> values1 = {int64_t(0)};
|
||||
hidl_vec<int32_t> sizes1 = {int32_t(0)};
|
||||
Closure closure1 = context->invokeClosureCreate(invokeID, params, fieldIDS1, values1, sizes1);
|
||||
EXPECT_NE(Closure(0), closure1);
|
||||
ASSERT_NE(Closure(0), closure1);
|
||||
|
||||
// kernel
|
||||
ScriptKernelID kernelID = context->scriptKernelIDCreate(script, mExportForEachIdx_increment, 3);
|
||||
EXPECT_NE(ScriptKernelID(0), kernelID);
|
||||
ASSERT_NE(ScriptKernelID(0), kernelID);
|
||||
|
||||
hidl_vec<ScriptFieldID> fieldIDS2 = {ScriptFieldID(0)};
|
||||
hidl_vec<int64_t> values2 = {(int64_t)(intptr_t)allocation};
|
||||
hidl_vec<int32_t> sizes2 = {-1 /* allocation */};
|
||||
hidl_vec<Closure> depClosures2 = {closure1};
|
||||
hidl_vec<ScriptFieldID> depFieldIDS2 = {fieldID};
|
||||
Closure closure2 = context->closureCreate(kernelID, allocation /* returnValue */, fieldIDS2,
|
||||
values2, sizes2, depClosures2, depFieldIDS2);
|
||||
EXPECT_NE(Closure(0), closure2);
|
||||
ASSERT_NE(Closure(0), closure2);
|
||||
|
||||
context->closureSetArg(closure, index, value, size);
|
||||
context->closureSetGlobal(closure, fieldID, value, size);
|
||||
// set argument
|
||||
context->closureSetGlobal(closure1, fieldID, (int64_t)(intptr_t)allocation,
|
||||
-1 /* allocation */);
|
||||
|
||||
// execute
|
||||
hidl_string name = "script_group_2_test";
|
||||
hidl_string cacheDir = "data/local/tmp/";
|
||||
hidl_vec<Closures> closures;
|
||||
hidl_string cacheDir = "/data/local/tmp";
|
||||
hidl_vec<Closure> closures = {closure1, closure2};
|
||||
ScriptGroup2 scriptGroup2 = context->scriptGroup2Create(name, cacheDir, closures);
|
||||
EXPECT_NE(ScriptGroup2(0), scriptGroup2);
|
||||
ASSERT_NE(ScriptGroup2(0), scriptGroup2);
|
||||
|
||||
context->scriptGroupExecute(scriptGroup2);
|
||||
// verify script group launched...
|
||||
context->allocationRead(allocation, (Ptr)dataOut.data(), (Size)dataOut.size()*sizeof(uint8_t));
|
||||
EXPECT_EQ(expected, dataOut);
|
||||
}
|
||||
|
||||
/*
|
||||
* Similar to the ScriptGroup test, this test verifies a single kernel can be
|
||||
* called by ScriptGroup with an unbound allocation specified before launch
|
||||
*
|
||||
* Calls: scriptFieldIDCreate, closureCreate, scriptInvokeIDCreate,
|
||||
* invokeClosureCreate, closureSetArg, scriptGroup2Create, scriptGroupExecute
|
||||
*/
|
||||
TEST_F(RenderscriptHidlTest, ScriptGroup2KernelTest) {
|
||||
hidl_vec<uint8_t> bitcode;
|
||||
bitcode.setToExternal((uint8_t*)bitCode, bitCodeLength);
|
||||
Script script = context->scriptCCreate("struct_test", "/data/local/tmp/", bitcode);
|
||||
EXPECT_NE(Script(0), script);
|
||||
|
||||
std::vector<uint8_t> dataIn(128, 128), dataOut(128, 0), expected(128, 128 + 1);
|
||||
hidl_vec<uint8_t> _dataIn, _dataOut;
|
||||
_dataIn.setToExternal(dataIn.data(), dataIn.size());
|
||||
|
||||
// 256 x 256 YUV pixels
|
||||
Element element = context->elementCreate(DataType::UNSIGNED_8, DataKind::USER, false, 1);
|
||||
Type type = context->typeCreate(element, 128, 0, 0, false, false, YuvFormat::YUV_NONE);
|
||||
Allocation allocation = context->allocationCreateTyped(type, AllocationMipmapControl::NONE,
|
||||
(int)AllocationUsageType::SCRIPT,
|
||||
(Ptr)nullptr);
|
||||
context->allocation1DWrite(allocation, 0, 0, (Size)_dataIn.size(), _dataIn);
|
||||
|
||||
// kernel
|
||||
ScriptKernelID kernelID = context->scriptKernelIDCreate(script, mExportForEachIdx_increment, 3);
|
||||
EXPECT_NE(ScriptKernelID(0), kernelID);
|
||||
ASSERT_NE(ScriptKernelID(0), kernelID);
|
||||
|
||||
hidl_vec<ScriptFieldID> fieldIDS = {ScriptFieldID(0)};
|
||||
hidl_vec<int64_t> values = {int64_t(0)};
|
||||
hidl_vec<int32_t> sizes = {int32_t(0)};
|
||||
hidl_vec<Closure> depClosures = {Closure(0)};
|
||||
hidl_vec<ScriptFieldID> depFieldIDS = {ScriptFieldID(0)};
|
||||
Closure closure = context->closureCreate(kernelID, allocation /* returnValue */, fieldIDS,
|
||||
values, sizes, depClosures, depFieldIDS);
|
||||
EXPECT_NE(Closure(0), closure);
|
||||
ASSERT_NE(Closure(0), closure);
|
||||
|
||||
// set argument
|
||||
context->closureSetArg(closure, 0 /* first argument */, (Ptr)allocation, -1);
|
||||
|
||||
// execute
|
||||
hidl_string name = "script_group_2_test";
|
||||
hidl_string cacheDir = "/data/local/tmp";
|
||||
hidl_vec<Closure> closures = {closure};
|
||||
ScriptGroup2 scriptGroup2 = context->scriptGroup2Create(name, cacheDir, closures);
|
||||
EXPECT_NE(ScriptGroup2(0), scriptGroup2);
|
||||
ASSERT_NE(ScriptGroup2(0), scriptGroup2);
|
||||
|
||||
context->scriptGroupExecute(scriptGroup2);
|
||||
context->allocationRead(allocation, (Ptr)dataOut.data(), (Size)dataOut.size()*sizeof(uint8_t));
|
||||
EXPECT_EQ(expected, dataOut);
|
||||
}
|
||||
*/
|
||||
|
||||
@@ -15,169 +15,215 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
#include "shared.rsh"
|
||||
|
||||
// types
|
||||
typedef struct Point2 {
|
||||
int x;
|
||||
int y;
|
||||
} Point_2;
|
||||
|
||||
// variables
|
||||
int var_int;
|
||||
long var_long;
|
||||
float var_float;
|
||||
double var_double;
|
||||
rs_allocation var_allocation;
|
||||
int var_array[4];
|
||||
Point_2 var_point2;
|
||||
Point_2 *var_point2_ptr;
|
||||
|
||||
// invoke
|
||||
void function() {
|
||||
var_int = 1;
|
||||
var_long = 2;
|
||||
var_float = 3.0f;
|
||||
var_double = 4.0;
|
||||
|
||||
var_array[0] = 5;
|
||||
var_array[1] = 6;
|
||||
var_array[2] = 7;
|
||||
var_array[3] = 8;
|
||||
|
||||
var_point2.x = 9;
|
||||
var_point2.y = 10;
|
||||
}
|
||||
|
||||
// invokeV
|
||||
void functionV(int arg) {
|
||||
var_int = arg;
|
||||
}
|
||||
|
||||
// forEach
|
||||
uchar RS_KERNEL increment(uchar in) {
|
||||
return in+1;
|
||||
}
|
||||
|
||||
// reduction
|
||||
#pragma rs reduce(summation) accumulator(sumAccumulator) combiner(sumCombiner)
|
||||
|
||||
static void sumAccumulator(int* accum, int val) {
|
||||
*accum += val;
|
||||
}
|
||||
|
||||
static void sumCombiner(int* accum, const int *val) {
|
||||
*accum += *val;
|
||||
}
|
||||
*/
|
||||
* // This .rs code was used to generate the 32-bit and 64-bit versions of the
|
||||
* // bitcode shown below. It is left in here for reference, as many of the
|
||||
* // variables are used in the the script tests.
|
||||
*
|
||||
* #include "shared.rsh"
|
||||
*
|
||||
* // types
|
||||
* typedef struct Point2 {
|
||||
* int x;
|
||||
* int y;
|
||||
* } Point_2;
|
||||
*
|
||||
* // variables
|
||||
* int var_int;
|
||||
* long var_long;
|
||||
* float var_float;
|
||||
* double var_double;
|
||||
* rs_allocation var_allocation;
|
||||
* uint32_t var_uint32_t;
|
||||
* Point_2 var_point2;
|
||||
* int *var_int_ptr;
|
||||
*
|
||||
* // invoke
|
||||
* void function() {
|
||||
* var_int = 1;
|
||||
* var_long = 2;
|
||||
* var_float = 3.0f;
|
||||
* var_double = 4.0;
|
||||
* var_uint32_t = 5;
|
||||
* var_point2.x = 6;
|
||||
* var_point2.y = 7;
|
||||
* }
|
||||
*
|
||||
* // invokeV
|
||||
* void functionV(int arg) {
|
||||
* var_int = arg;
|
||||
* }
|
||||
*
|
||||
* // set bound buffer
|
||||
* void setBuffer(int dim) {
|
||||
* int i;
|
||||
* for (i = 0; i < dim; ++i) {
|
||||
* var_int_ptr[i] = 5;
|
||||
* }
|
||||
* }
|
||||
*
|
||||
* // set allocation
|
||||
* void setAllocation(int dim) {
|
||||
* int x;
|
||||
* for (x = 0; x < dim; ++x) {
|
||||
* rsSetElementAt_uchar(var_allocation, 7, x);
|
||||
* }
|
||||
* }
|
||||
*
|
||||
* // forEach
|
||||
* uchar RS_KERNEL increment(uchar in) {
|
||||
* return in+1;
|
||||
* }
|
||||
*
|
||||
* // reduction
|
||||
* #pragma rs reduce(summation) accumulator(sumAccumulator) combiner(sumCombiner)
|
||||
*
|
||||
* static void sumAccumulator(int* accum, int val) {
|
||||
* *accum += val;
|
||||
* }
|
||||
*
|
||||
* static void sumCombiner(int* accum, const int *val) {
|
||||
* *accum += *val;
|
||||
* }
|
||||
*/
|
||||
|
||||
#include "VtsHalRenderscriptV1_0TargetTest.h"
|
||||
|
||||
// bitcode slots
|
||||
const int mExportVarIdx_var_int = 0;
|
||||
const int mExportVarIdx_var_long = 1;
|
||||
const int mExportVarIdx_var_float = 2;
|
||||
const int mExportVarIdx_var_double = 3;
|
||||
const int mExportVarIdx_var_allocation = 4;
|
||||
const int mExportVarIdx_var_uint32_t = 5;
|
||||
const int mExportVarIdx_var_point2 = 6;
|
||||
const int mExportVarIdx_var_int_ptr = 7;
|
||||
// bitcode invoke slots
|
||||
//const int mExportForEachIdx_root = 0;
|
||||
const int mExportForEachIdx_increment = 1;
|
||||
// bitcode reduce slots
|
||||
const int mExportReduceIdx_summation = 0;
|
||||
// bitcode invoke slots
|
||||
const int mExportFuncIdx_function = 0;
|
||||
const int mExportFuncIdx_functionV = 1;
|
||||
const int mExportFuncIdx_setBuffer = 2;
|
||||
const int mExportFuncIdx_setAllocation = 3;
|
||||
|
||||
// bitcode
|
||||
#ifndef __LP64__
|
||||
|
||||
const int8_t bitCode[] = {
|
||||
-34, -64, 23, 11, 0, 0, 0, 0, 44, 0, 0, 0, -84, 10, 0, 0,
|
||||
-34, -64, 23, 11, 0, 0, 0, 0, 44, 0, 0, 0, -8, 12, 0, 0,
|
||||
0, 0, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0, 1, 64, 4, 0,
|
||||
96, 9, 0, 0, 2, 64, 4, 0, 3, 0, 0, 0, 66, 67, -64, -34,
|
||||
33, 12, 0, 0, -88, 2, 0, 0, 1, 16, 0, 0, 18, 0, 0, 0,
|
||||
33, 12, 0, 0, 59, 3, 0, 0, 1, 16, 0, 0, 18, 0, 0, 0,
|
||||
7, -127, 35, -111, 65, -56, 4, 73, 6, 16, 50, 57, -110, 1, -124, 12,
|
||||
37, 5, 8, 25, 30, 4, -117, 98, -128, 24, 69, 2, 66, -110, 11, 66,
|
||||
-60, 16, 50, 20, 56, 8, 24, 73, 10, 50, 68, 36, 72, 10, -112, 33,
|
||||
35, -60, 82, -128, 12, 25, 33, 114, 36, 7, -56, -120, 17, 98, -88, -96,
|
||||
-88, 64, -58, -16, 1, 0, 0, 0, 73, 24, 0, 0, 25, 0, 0, 0,
|
||||
11, -124, -1, -1, -1, -1, 31, -64, 96, -127, 1, 4, 65, -16, -1, -1,
|
||||
-1, -1, 3, 24, 45, 32, 2, 16, 4, 65, 16, 36, -2, -1, -1, -1,
|
||||
127, 0, -125, 5, 70, 0, -126, 32, 8, -126, -124, 0, -126, 32, 8, -126,
|
||||
-60, -1, -1, -1, -1, 15, 96, -80, 64, -8, -1, -1, -1, -1, 1, 12,
|
||||
22, 8, -1, -1, -1, -1, 63, 0, 11, -120, 0, 4, 65, 16, 4, -119,
|
||||
-1, -1, -1, -1, 31, -64, 80, 88, 64, 4, -64, -1, -1, -1, -1, 15,
|
||||
96, 0, 0, 0, -119, 32, 0, 0, 33, 0, 0, 0, 50, 34, -120, 9,
|
||||
32, 100, -123, 4, 19, 35, -92, -124, 4, 19, 35, -29, -124, -95, -112, 20,
|
||||
18, 76, -116, -116, 11, -124, -60, 76, 16, -112, -63, 28, 1, 24, 16, 48,
|
||||
71, 0, 10, 36, -52, 0, 16, 49, 4, 64, 70, 18, 0, -124, 92, 35,
|
||||
77, 17, 37, 76, 126, -22, 32, -51, 100, 35, 1, 0, 72, -71, 75, -102,
|
||||
34, 74, -104, -4, 72, -6, -127, 101, 113, 4, 96, 66, -100, -58, -65, 115,
|
||||
20, 4, -60, -48, 50, 71, -128, -48, 67, -48, 8, 64, 9, 36, -102, -118,
|
||||
32, 1, 84, 21, -31, 121, -24, 42, -125, 20, 0, -108, -107, 65, 10, 2,
|
||||
-38, -118, 32, 53, -44, -103, 0, -96, -81, 8, 18, 72, -31, 64, 0, 0,
|
||||
-88, 64, -58, -16, 1, 0, 0, 0, 73, 24, 0, 0, 34, 0, 0, 0,
|
||||
11, -124, -1, -1, -1, -1, 31, -64, 96, -127, -16, -1, -1, -1, -1, 3,
|
||||
24, 44, 32, -124, -32, -1, -1, -1, -1, 7, 96, -127, 1, 4, 65, -16,
|
||||
-1, -1, -1, -1, 3, 24, 45, 32, 2, 16, 4, 65, 16, 36, -2, -1,
|
||||
-1, -1, 127, 0, -125, 5, 70, 0, -126, 32, 8, -126, -124, 0, -126, 32,
|
||||
8, -126, -60, -1, -1, -1, -1, 15, 96, -80, 64, -8, -1, -1, -1, -1,
|
||||
1, 88, 64, 4, 32, 8, -126, 32, 72, -4, -1, -1, -1, -1, 0, -122,
|
||||
-62, 2, 34, 0, 65, 16, 4, 65, -30, -1, -1, -1, -1, 7, 48, 20,
|
||||
22, 16, 66, -16, -1, -1, -1, -1, 3, 24, 44, 32, 2, -32, -1, -1,
|
||||
-1, -1, 7, 48, 0, 0, 0, 0, -119, 32, 0, 0, 36, 0, 0, 0,
|
||||
50, 34, -120, 9, 32, 100, -123, 4, 19, 35, -92, -124, 4, 19, 35, -29,
|
||||
-124, -95, -112, 20, 18, 76, -116, -116, 11, -124, -60, 76, 16, -100, -63, 28,
|
||||
1, 24, 16, 48, 71, 0, 10, 36, -52, 0, 16, 49, 4, 64, -58, 53,
|
||||
-46, 20, 81, -62, -28, -89, 14, -46, 76, 54, 18, 0, -128, 16, 10, -18,
|
||||
-110, -90, -120, 18, 38, 63, -110, 126, 96, 89, 28, 1, -104, 16, -89, -15,
|
||||
-17, 28, 5, 1, 45, 115, 4, 8, 53, -28, -116, 0, -108, 0, -94, -88,
|
||||
8, 16, 64, 83, 6, 0, -123, -128, -86, 6, 32, -85, 8, 77, 67, 88,
|
||||
25, -96, 0, 32, -83, 12, 80, 16, 16, 87, 4, -120, 33, -49, 4, 0,
|
||||
-127, 69, -128, 66, 18, 7, 2, -26, 8, -126, 41, 0, 0, 0, 0, 0,
|
||||
19, -80, 112, -112, -121, 118, -80, -121, 59, 104, 3, 119, 120, 7, 119, 40,
|
||||
-121, 54, 96, -121, 116, 112, -121, 122, -64, -121, 54, 56, 7, 119, -88, -121,
|
||||
114, 8, 7, 113, 72, -121, 13, 100, 80, 14, 109, 0, 15, 122, 48, 7,
|
||||
114, -96, 7, 115, 32, 7, 109, -112, 14, 118, 64, 7, 122, 96, 7, 116,
|
||||
-48, 6, -10, 16, 7, 114, -128, 7, 122, 96, 7, 116, -96, 7, 113, 32,
|
||||
7, 120, -48, 6, -18, 48, 7, 114, -48, 6, -77, 96, 7, 116, -96, -13,
|
||||
64, -118, 4, 50, 66, 100, 4, -40, -95, 4, -64, -124, 12, 0, 0, 4,
|
||||
-64, 14, 101, 0, 44, -124, 0, 0, 32, 0, 118, 40, 5, 112, 33, 3,
|
||||
0, 0, 1, -80, 67, 57, 0, 12, 33, 0, 0, 8, -128, 29, 74, 2,
|
||||
100, -56, 0, 0, 64, 0, -20, 80, 22, 64, 67, 6, 0, 0, 2, -128,
|
||||
13, -121, -37, -95, 56, -64, -122, 12, 0, 0, 4, -64, 14, 37, 2, 58,
|
||||
96, 0, 0, 32, 0, 118, 40, 17, -32, 1, 3, 0, 0, 1, 48, 68,
|
||||
-95, 0, 0, 8, 0, 0, 0, -126, 33, -118, 5, 0, 64, 0, 0, 0,
|
||||
16, 12, 81, 48, 0, 0, 4, 0, 0, -128, 96, -120, -94, 1, -64, 48,
|
||||
0, 0, 0, 0, 67, 20, 14, 0, 6, 2, 0, 0, 0, 24, -94, 80,
|
||||
0, 0, 20, 0, 0, 0, -63, 16, -59, 3, 2, -64, 0, 0, 0, 8,
|
||||
-122, 40, 98, 0, 0, -64, 1, 0, 0, 16, 100, -127, 0, 0, 0, 0,
|
||||
13, 0, 0, 0, 50, 30, -104, 20, 25, 17, 76, -112, -116, 9, 38, 71,
|
||||
-58, 4, 67, 2, 70, 0, 74, -96, 16, 72, 24, 1, 32, 98, 4, -128,
|
||||
-116, 17, 0, 66, 70, 0, 72, 25, 1, -96, 101, 4, -128, -104, 17, 0,
|
||||
-126, 108, -75, 6, 91, -50, 1, 0, 121, 24, 0, 0, -30, 0, 0, 0,
|
||||
26, 3, 76, -112, 70, 2, 19, 52, 68, 0, 38, 42, 119, 99, 104, 97,
|
||||
114, 95, 115, 105, 122, 101, 67, 4, -128, 26, 98, 0, -45, 24, 4, 0,
|
||||
-59, -90, 45, -51, -19, -85, -52, -83, -82, -19, 107, 46, 77, -81, 108, -120,
|
||||
1, 76, 99, 64, 0, 20, -7, 32, -56, -115, 76, -18, 45, -115, 12, 100,
|
||||
-116, 45, -52, -19, 12, -60, -82, 76, 110, 46, -19, -51, 13, 100, -58, 5,
|
||||
-57, 69, -26, -90, -122, 6, 7, 6, 4, 4, 69, 44, 108, -82, -116, 12,
|
||||
-28, -51, 13, -124, -119, -55, -86, 9, 100, -58, 5, -57, 69, -26, -90, -122,
|
||||
6, 7, 38, 101, -120, 48, 6, 6, 15, -69, 50, -71, -71, -76, 55, 55,
|
||||
6, 49, 67, -120, 49, 64, -58, 32, 97, -92, 22, 102, 23, -10, 5, 23,
|
||||
54, -74, 22, 118, 86, -10, -27, 22, -42, 86, -58, 105, -20, -83, -51, 37,
|
||||
-52, -115, 76, -18, 45, -115, -52, 69, 110, -50, -123, -82, 108, -114, 110, 8,
|
||||
49, 6, -53, 24, 48, 60, -20, -62, -28, -66, -46, -36, -24, 24, -44, 12,
|
||||
33, -58, -64, 25, -125, -121, -120, 93, -104, -36, 23, -37, -101, -37, 25, 3,
|
||||
-101, 33, -60, 24, 68, 99, 32, 49, -79, 11, -109, -5, 50, 99, 123, 11,
|
||||
-93, 27, 66, -116, 1, 53, 6, 9, 21, -69, 48, -71, 47, -78, -73, 58,
|
||||
49, -74, 50, 6, 50, 67, -120, 49, -80, -58, -32, -94, 99, 23, 38, -9,
|
||||
21, -58, -58, -10, 54, 22, 70, -105, -10, -26, 70, 65, 6, 102, 8, 49,
|
||||
6, -39, 24, 104, 76, -20, -62, -28, -66, -62, -28, -28, -62, -14, -8, -16,
|
||||
12, -67, -71, -51, -47, -123, -71, -47, 5, -55, -55, -123, -27, -7, 12, 33,
|
||||
-58, -128, 27, -125, -114, -118, 93, -104, -36, 23, -36, 91, -102, 27, -99, 12,
|
||||
13, -88, -73, 52, 55, 58, -103, 33, -60, 24, 124, 99, 0, 6, 116, -20,
|
||||
-62, -28, -66, -32, -34, -46, -36, -24, 100, -66, -32, -24, -28, 120, -88, 64,
|
||||
-67, -91, -71, -47, -55, 12, 33, -58, 64, 12, -58, 96, 12, 24, -48, 12,
|
||||
17, -58, -96, 12, -120, -104, -43, -71, -115, -47, -91, -67, -71, 13, 17, -58,
|
||||
-32, 12, 24, -71, -96, -107, -79, -63, -107, -55, 125, -103, -43, -71, -115, -47,
|
||||
-91, -67, -71, 89, 13, 17, -58, 32, 13, 72, -56, -67, -67, -47, 13, 17,
|
||||
-58, 96, 13, -104, -92, -71, -115, -55, -107, -75, -107, -71, -47, 13, 17, -58,
|
||||
-96, 13, 24, -64, 12, 17, -58, -32, 13, 40, -52, -44, 12, 17, -58, 32,
|
||||
14, -104, -52, -43, -75, -75, -123, -47, -91, -67, -71, -47, -103, -85, 107, 11,
|
||||
26, 27, -85, 107, -85, 99, 11, -93, 123, -109, 27, 66, -116, 1, 29, -116,
|
||||
65, -62, 101, -82, -82, 109, -24, -83, 77, 44, -51, -83, 76, 110, -120, 50,
|
||||
6, 115, 48, 6, 101, 48, 6, 117, 32, 1, 99, 96, 7, 67, -124, 49,
|
||||
0, 3, 6, 120, 28, -46, -36, -24, -122, 16, 99, -112, 7, 99, -96, 7,
|
||||
12, -14, -122, 16, 99, -64, 7, 99, -96, 7, 124, -34, -38, -36, -46, -32,
|
||||
-34, -24, -54, -36, -24, 64, -58, -48, -62, -28, 24, 77, -91, -75, -63, -79,
|
||||
-107, -127, 12, -67, 12, -83, -84, -128, 80, 9, 5, 5, 13, 17, -58, -32,
|
||||
15, -122, 8, 66, 53, -60, 24, 3, 63, 24, 3, 80, 16, -86, 33, -58,
|
||||
24, -24, -63, 24, -120, -126, 80, 13, 49, -58, 96, 20, -58, 96, 20, -124,
|
||||
-118, 4, -37, -101, -37, -39, 16, 99, 12, 74, 97, 12, 68, 65, -88, -122,
|
||||
24, 99, 96, 10, 99, 96, 10, 66, -59, -62, -116, -19, 45, -116, 110, -120,
|
||||
49, 6, -88, 48, 6, -94, 32, 84, 67, -116, 49, 72, -123, 49, 72, 5,
|
||||
-95, -94, 65, -10, 86, 39, -58, 86, 54, -60, 24, -125, 85, 24, 3, 81,
|
||||
16, -86, 33, -58, 24, -80, -62, 24, -80, -126, 80, 53, 98, 99, -77, 107,
|
||||
115, 105, 123, 35, -85, 99, 43, 115, 49, 99, 11, 59, -101, -101, 34, 12,
|
||||
69, 21, 54, 54, -69, 54, -105, 52, -78, 50, 55, -70, 41, -63, -47, 99,
|
||||
4, 78, 46, -20, -84, 45, 108, -118, -96, 52, 117, 70, -28, -26, -66, -54,
|
||||
-16, -32, -34, -28, -24, -66, -20, -62, -28, -90, 32, -48, 84, 97, -101, 23,
|
||||
6, 100, 80, 104, 68, 110, -18, -21, 77, 76, -83, 108, -116, -18, 107, -114,
|
||||
-19, -115, 110, 110, 74, 96, 6, 125, 70, -28, -26, -66, -54, -16, -32, -34,
|
||||
-28, -24, -66, -52, -22, -36, -58, -90, 8, 104, -96, 6, -67, 70, -28, -26,
|
||||
-66, -54, -16, -32, -34, -28, -24, -66, -52, -34, -28, -54, -62, -58, -48, -66,
|
||||
-36, -62, -38, -54, -90, 8, 108, -32, 6, -107, 70, -28, -26, -66, -54, -16,
|
||||
-32, -34, -28, -24, -66, -52, -34, -28, -54, -62, -58, -48, -90, 8, 112, 32,
|
||||
7, -115, 70, -28, -26, -66, -54, -16, -32, -34, -28, -24, -66, -28, -54, -56,
|
||||
-22, -58, -54, -90, 4, 119, -48, 103, 68, 110, -18, -85, 12, 15, -18, 77,
|
||||
-114, -18, -117, 46, 15, -82, 108, 74, -128, 7, 61, 74, -96, -34, -46, -36,
|
||||
-24, 100, -90, 8, 123, -48, 7, 0, 121, 24, 0, 0, 92, 0, 0, 0,
|
||||
64, -120, 4, 50, 66, 100, 4, -40, -95, 4, 0, -122, 12, 0, 0, 4,
|
||||
-64, 14, 101, 0, 54, -124, 0, 0, 32, 0, 118, 40, 5, -48, 33, 3,
|
||||
0, 0, 1, -80, 67, 57, 0, 15, 33, 0, 0, 8, -128, 29, 74, 0,
|
||||
96, -56, 0, 0, 64, 0, -20, 80, 18, -32, 67, 6, 0, 0, 2, 96,
|
||||
-121, -94, 0, 28, 50, 0, 0, 16, 0, 100, 96, -128, -37, -95, 60, 64,
|
||||
24, 0, 3, 0, 0, 1, -80, 67, 121, 0, 49, 0, 6, 0, 0, 2,
|
||||
96, -120, 34, 1, 0, 16, 0, 0, 0, 4, 67, 20, 10, 0, -128, 0,
|
||||
0, 0, 32, 24, -94, 80, 0, 0, 4, 0, 0, 0, -63, 16, -123, 2,
|
||||
0, 64, 0, 0, 0, 8, -122, 40, 23, 16, 0, 3, 0, 0, 64, 48,
|
||||
68, -55, 0, 0, 32, 0, 0, 0, -126, 33, -54, 6, 0, 67, 1, 0,
|
||||
0, 0, 12, 81, 58, 0, 24, 12, 0, 0, 0, 96, -120, 34, 1, 0,
|
||||
32, 0, 0, 0, 4, 67, -108, 15, 8, -128, 3, 0, 0, 32, 24, -94,
|
||||
-116, 1, 0, 0, 8, 0, 0, 64, 48, 68, 25, 3, 0, 0, 16, 0,
|
||||
0, -128, 96, -120, 50, 6, 0, 0, 36, 0, 0, 0, 65, 22, 8, 0,
|
||||
12, 0, 0, 0, 50, 30, -104, 24, 25, 17, 76, -112, -116, 9, 38, 71,
|
||||
-58, 4, 67, 2, 70, 0, 74, -96, 16, 72, 24, 1, -96, 96, 4, -128,
|
||||
-120, 17, 0, 50, 70, 0, 8, 25, 1, -96, 101, 4, -128, 28, -37, 13,
|
||||
-62, -74, -117, 0, 121, 24, 0, 0, -13, 0, 0, 0, 26, 3, 76, -112,
|
||||
70, 2, 19, 52, 68, 0, 48, 42, 119, 99, 104, 97, 114, 95, 115, 105,
|
||||
122, 101, 67, 4, 32, 27, 98, 0, 24, 25, 4, 64, -58, -90, 45, -51,
|
||||
-19, -85, -52, -83, -82, -19, 107, 46, 77, -81, 108, -120, 1, 96, 100, 64,
|
||||
0, 25, -7, 32, -56, -115, 76, -18, 45, -115, 12, 100, -116, 45, -52, -19,
|
||||
12, -60, -82, 76, 110, 46, -19, -51, 13, 100, -58, 5, -57, 69, -26, -90,
|
||||
-122, 6, 7, 6, 4, 4, 69, 44, 108, -82, -116, 12, -28, -51, 13, -124,
|
||||
-119, -55, -86, 9, 100, -58, 5, -57, 69, -26, -90, -122, 6, 7, 38, 101,
|
||||
-120, 64, 6, 6, 15, -69, 50, -71, -71, -76, 55, 55, 6, 49, 67, 8,
|
||||
50, 64, -56, 32, 97, -92, 22, 102, 23, -10, 5, 23, 54, -74, 22, 118,
|
||||
86, -10, -27, 22, -42, 86, -58, 105, -20, -83, -51, 37, -52, -115, 76, -18,
|
||||
45, -115, -52, 69, 110, -50, -123, -82, 108, -114, 110, 8, 65, 6, 11, 25,
|
||||
48, 60, -20, -62, -28, -66, -46, -36, -24, 24, -44, 12, 33, -56, -64, 33,
|
||||
-125, -121, -120, 93, -104, -36, 23, -37, -101, -37, 25, 3, -101, 33, 4, 25,
|
||||
68, 100, 32, 49, -79, 11, -109, -5, 50, 99, 123, 11, -93, 27, 66, -112,
|
||||
1, 69, 6, 9, 21, -69, 48, -71, 47, -78, -73, 58, 49, -74, 50, 6,
|
||||
50, 67, 8, 50, -80, -56, -32, -94, 99, 23, 38, -9, 21, -58, -58, -10,
|
||||
54, 22, 70, -105, -10, -26, 70, 65, 6, 102, 8, 65, 6, 25, 25, 104,
|
||||
100, -20, -62, -28, -66, -22, -46, -36, -24, 102, 100, -66, -24, 24, -28, 12,
|
||||
33, -56, -128, 35, -125, -114, -118, 93, -104, -36, 23, -36, 91, -102, 27, -99,
|
||||
12, 13, -88, -73, 52, 55, 58, -103, 33, 4, 25, 124, 100, 0, 6, 92,
|
||||
-20, -62, -28, -66, -46, -36, -24, -66, -32, -24, -28, 72, -88, -92, -71, -47,
|
||||
13, 33, -56, 64, 12, -56, 96, 12, 24, -48, 12, 17, -56, -96, 12, -120,
|
||||
-104, -43, -71, -115, -47, -91, -67, -71, 13, 17, -56, -32, 12, 24, -71, -96,
|
||||
-107, -79, -63, -107, -55, 125, -103, -43, -71, -115, -47, -91, -67, -71, 89, 13,
|
||||
17, -56, 32, 13, 24, -71, -96, -107, -79, -63, -107, -55, 125, -51, -107, -47,
|
||||
9, -43, -103, -103, -107, -55, 13, 17, -56, 96, 13, 88, -71, -96, -107, -79,
|
||||
-63, -107, -55, 125, -51, -107, -47, 5, -79, -79, -67, -115, -123, -47, -91, -67,
|
||||
-71, 13, 17, -56, -96, 13, 72, -56, -67, -67, -47, 13, 17, -56, -32, 13,
|
||||
-104, -92, -71, -115, -55, -107, -75, -107, -71, -47, 13, 17, -56, 32, 14, 24,
|
||||
-64, 12, 17, -56, 96, 14, 40, -52, -44, 12, 17, -56, -96, 14, -104, -52,
|
||||
-43, -75, -75, -123, -47, -91, -67, -71, -47, -103, -85, 107, 11, 26, 27, -85,
|
||||
107, -85, 99, 11, -93, 123, -109, 27, 66, -112, 1, 30, -112, 65, -62, 101,
|
||||
-82, -82, 109, -24, -83, 77, 44, -51, -83, 76, 110, -120, 66, 6, 119, 64,
|
||||
6, 101, 64, 6, 121, 0, 1, 100, -96, 7, 67, 4, 50, 0, 3, 6,
|
||||
120, 28, -46, -36, -24, -122, 16, 100, -48, 7, 100, -32, 7, 12, -14, -122,
|
||||
16, 100, 0, 10, 100, -32, 7, 124, -34, -38, -36, -46, -32, -34, -24, -54,
|
||||
-36, -24, 64, -58, -48, -62, -28, 24, 77, -91, -75, -63, -79, -107, -127, 12,
|
||||
-67, 12, -83, -84, -128, 80, 9, 5, 5, 13, 17, -56, 96, 20, -122, 8,
|
||||
-126, 54, -60, 32, 3, 81, 32, 3, 82, 16, -76, 33, 6, 25, -8, 1,
|
||||
25, -104, -126, -96, 13, 49, -56, -32, 20, -56, -32, 20, 4, -115, 4, -37,
|
||||
-101, -37, -39, 16, -125, 12, 82, -127, 12, 76, 65, -48, -122, 24, 100, -96,
|
||||
10, 100, -96, 10, -126, -58, -62, -116, -19, 45, -116, 110, -120, 65, 6, -84,
|
||||
64, 6, -90, 32, 104, 67, 12, 50, 104, 5, 50, 104, 5, 65, -93, 65,
|
||||
-10, 86, 39, -58, 86, 54, -60, 32, -125, 87, 32, 3, 83, 16, -76, 33,
|
||||
6, 25, -64, 2, 25, -64, -126, -96, 113, 9, 115, -53, 3, -127, 123, 75,
|
||||
115, -93, 43, -109, 27, 98, -112, -127, 44, -112, -127, 41, 8, -38, 16, -125,
|
||||
12, 102, -127, 12, 102, 65, -48, 26, -79, -79, -39, -75, -71, -76, -67, -111,
|
||||
-43, -79, -107, -71, -104, -79, -123, -99, -51, 77, 17, -122, -94, 10, 27, -101,
|
||||
93, -101, 75, 26, 89, -103, 27, -35, -108, -32, -24, 49, 2, 39, 23, 118,
|
||||
-42, 22, 54, 69, 80, -102, 58, 35, 114, 115, 95, 101, 120, 112, 111, 114,
|
||||
116, 95, 118, 97, 114, 83, 16, 104, -86, -80, -51, 11, 3, 50, 40, 52,
|
||||
34, 55, -9, -11, 38, -90, 86, 54, 70, -9, 53, -57, -10, 70, 55, 55,
|
||||
37, 48, -125, 62, 35, 114, 115, 95, 101, 120, 112, 111, 114, 116, 95, 102,
|
||||
117, 110, 99, 83, 8, 52, 80, 3, 54, 112, -125, 94, 35, 114, 115, 95,
|
||||
101, 120, 112, 111, 114, 116, 95, 102, 111, 114, 101, 97, 99, 104, 95, 110,
|
||||
97, 109, 101, 83, 4, 56, -112, -125, 74, 35, 114, 115, 95, 101, 120, 112,
|
||||
111, 114, 116, 95, 102, 111, 114, 101, 97, 99, 104, 83, 4, 58, -80, -125,
|
||||
70, 35, 114, 115, 95, 101, 120, 112, 111, 114, 116, 95, 114, 101, 100, 117,
|
||||
99, 101, 83, -126, 61, -24, 51, 34, 55, -9, 85, -122, 7, -9, 38, 71,
|
||||
-9, 69, -105, 7, 87, 54, 37, -32, -125, 30, 37, 80, 111, 105, 110, 116,
|
||||
50, 83, -124, 63, 8, 5, 0, 0, 121, 24, 0, 0, 92, 0, 0, 0,
|
||||
51, 8, -128, 28, -60, -31, 28, 102, 20, 1, 61, -120, 67, 56, -124, -61,
|
||||
-116, 66, -128, 7, 121, 120, 7, 115, -104, 113, 12, -26, 0, 15, -19, 16,
|
||||
14, -12, -128, 14, 51, 12, 66, 30, -62, -63, 29, -50, -95, 28, 102, 48,
|
||||
@@ -201,236 +247,309 @@ const int8_t bitCode[] = {
|
||||
-127, 30, -36, -32, 28, -28, -31, 29, -22, 1, 30, 102, 24, 81, 56, -80,
|
||||
67, 58, -100, -125, 59, -52, 80, 36, 118, 96, 7, 123, 104, 7, 55, 96,
|
||||
-121, 119, 120, 7, 120, -104, 81, 76, -12, -112, 15, -16, 80, 14, 0, 0,
|
||||
113, 32, 0, 0, 56, 0, 0, 0, 6, 17, 6, -1, 92, -33, -111, -60,
|
||||
45, 4, 16, -95, 65, 66, 8, 83, 90, -33, -111, -12, 3, -53, -30, 8,
|
||||
-64, -124, 56, -115, 13, 40, 21, 16, -3, -125, 67, 5, 11, 97, 5, 74,
|
||||
5, 68, -1, -29, 32, -51, 100, 27, 67, -126, 52, 66, 68, 48, 68, 51,
|
||||
-103, 2, 82, 80, -115, 48, 33, 78, 99, 4, 73, 5, 68, 63, 16, 69,
|
||||
0, 102, 17, -111, 127, 16, -53, 67, 68, 127, 65, 53, -62, -124, 56, -51,
|
||||
107, 14, -117, 68, 49, -100, -61, 4, 72, 67, 68, 102, -32, 84, 64, -12,
|
||||
3, -53, -30, 8, -64, -124, 56, -115, 33, 112, 126, 36, -7, 17, 49, 80,
|
||||
2, -15, 23, -115, 47, 81, -116, 38, 8, 20, 67, 45, -64, -28, 68, 6,
|
||||
112, 84, 64, -12, 35, -51, 100, 13, -114, 68, 49, -102, 32, 80, 12, -75,
|
||||
0, -109, 19, 89, 0, 82, 1, -47, -65, 56, -115, 97, 7, 78, 5, 68,
|
||||
-1, -29, 32, -51, 100, -1, -49, 20, -39, 3, -30, 71, -110, 63, 76, 78,
|
||||
100, 11, 73, 65, 53, -62, -124, 56, -51, 107, 2, 73, 5, 68, 127, -79,
|
||||
56, -64, 100, 9, -103, 31, 73, 126, 68, 12, -108, 64, -4, 69, -29, 75,
|
||||
20, -61, 57, 76, -128, 52, 68, 4, 97, 32, 0, 0, 54, 0, 0, 0,
|
||||
19, 4, 65, 44, 16, 0, 0, 0, 20, 0, 0, 0, 4, -108, 66, 49,
|
||||
-108, 67, 17, 20, 68, 25, -108, 68, 81, -112, 80, 4, 20, 12, 101, 36,
|
||||
4, 32, 1, -45, 80, 70, 66, 0, 18, 16, 6, 67, 25, 9, 1, 72,
|
||||
-64, 24, 12, 101, 44, 5, 32, 1, -46, 80, -58, 82, 0, 18, 48, 13,
|
||||
101, 36, 4, 32, 1, 18, 17, 99, 4, 32, 8, -126, 36, 24, -112, 49,
|
||||
70, 0, -126, 32, 8, -126, 32, 8, -126, 36, 72, 0, -125, 17, -64, 52,
|
||||
0, -125, 17, -127, 25, 16, -64, 96, -124, -48, 6, 3, 48, 24, 49, -72,
|
||||
1, 1, 12, 70, -80, -127, 55, 0, -125, 17, 103, -16, 13, -64, 96, 4,
|
||||
26, -128, -63, 0, 12, 70, -92, -127, 24, 12, -64, 96, -124, 26, -112, -63,
|
||||
0, 12, 70, -84, 65, 25, 12, 0, 6, -60, 0, 0, 13, 0, 0, 0,
|
||||
91, 6, 32, 32, -123, 45, 67, 16, -100, -62, -106, 65, 8, 84, 97, -53,
|
||||
48, 4, -83, -80, 101, 32, 2, 82, -40, 50, 20, 1, 41, 108, 25, -116,
|
||||
-128, 20, -74, 12, 71, 64, 10, 91, 6, 36, 32, -123, 45, 67, 18, -112,
|
||||
2, 0, 0, 0, 0, 0, 0, 0, 97, 32, 0, 0, 11, 0, 0, 0,
|
||||
19, 4, -63, 96, 4, -32, 13, 0, -122, 3, 1, 0, 2, 0, 0, 0,
|
||||
-26, 49, 0, -111, 1, 0, 0, 0, 1, 49, 0, 0, 2, 0, 0, 0,
|
||||
91, 6, 32, 32, 5, 0, 0, 0, 0, 0, 0, 0, 97, 32, 0, 0,
|
||||
11, 0, 0, 0, 19, 4, -63, 121, 64, -40, 55, -63, -32, -64, -32, -127,
|
||||
12, -125, 112, 32, 5, 0, 0, 0, -10, 65, 8, 78, 83, -103, -121, -128,
|
||||
52, 22, 82, 8, 78, 83, -43, 6, 50, 0, -61, 0, 0, 0, 0, 0,
|
||||
97, 32, 0, 0, 16, 0, 0, 0, 19, 4, 1, 121, -61, -64, -32, 3,
|
||||
-63, 96, -124, 23, 6, 3, -128, -31, 64, 0, 0, 0, 4, 0, 0, 0,
|
||||
-10, 49, 84, -64, 98, 30, 5, 32, 8, 20, 99, 33, 3, 48, 12, 0,
|
||||
1, 49, 0, 0, 3, 0, 0, 0, 91, 6, 32, 32, -123, 45, -125, 16,
|
||||
-112, 2, 0, 0, 0, 0, 0, 0, 97, 32, 0, 0, 17, 0, 0, 0,
|
||||
19, 4, 1, 125, -125, -68, 97, 97, 0, 6, 32, 24, -116, -16, -60, 96,
|
||||
0, 48, 28, 8, 4, 0, 0, 0, -10, 49, 84, -64, 98, 30, 5, 32,
|
||||
8, 20, 99, 34, 3, 48, 12, 0, 1, 49, 0, 0, 4, 0, 0, 0,
|
||||
91, 6, 32, 32, -123, 45, 67, 16, -112, -62, -106, 97, 8, 72, 1, 0,
|
||||
0, 0, 0, 0, 97, 32, 0, 0, 3, 0, 0, 0, 19, 4, -63, -120,
|
||||
1, -127, 4, -112, -127, 0, 0, 0, 97, 32, 0, 0, 9, 0, 0, 0,
|
||||
19, 4, -63, 120, -125, 39, 73, -12, -115, 17, 3, 2, 8, 22, 48, -64,
|
||||
112, 32, 0, 0, 2, 0, 0, 0, 7, 80, 16, -51, 20, 97, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
113, 32, 0, 0, 78, 0, 0, 0, 70, -64, 84, 64, -12, 83, 72, 51,
|
||||
-35, -10, 63, -39, -128, 82, 1, -47, 63, 56, 84, -80, 16, -90, -128, 20,
|
||||
84, 35, 76, -120, -45, -104, -63, 82, 1, -47, -113, 52, -45, -1, 76, -111,
|
||||
53, 52, 18, 49, 105, -53, -30, 8, -64, -124, 56, -115, 5, 32, 21, 16,
|
||||
-3, -117, -45, 24, -74, -112, 20, 84, 35, 76, -120, -45, -68, -26, -112, 6,
|
||||
-1, 108, -45, -111, -60, 18, -109, -73, 16, 12, -47, 76, -38, -12, 83, -62,
|
||||
1, 68, -11, 29, 73, 63, -80, 44, -114, 0, 76, -120, -45, 28, -119, 77,
|
||||
-124, -63, 63, -41, 119, 36, 113, 11, 1, 68, 104, -112, 16, -62, -108, -42,
|
||||
119, 36, -3, -64, -78, 56, 2, 48, 33, 78, 99, 22, -107, 127, 16, -53,
|
||||
67, 68, -65, 68, 76, -38, -78, 56, 2, 48, 33, 78, 99, 2, 73, 5,
|
||||
68, 127, -79, 56, -64, 100, 5, 74, 5, 68, -1, -29, 32, -51, 100, -37,
|
||||
67, -126, 52, 66, 68, 48, 68, 51, 25, 67, 34, 17, -45, 70, 21, 5,
|
||||
17, 89, -60, 34, 81, 12, -25, 48, 1, -46, 16, -111, 37, 100, 126, 36,
|
||||
-7, 17, 49, 80, 2, -15, 23, -115, 47, 81, 12, -25, 48, 1, -46, 16,
|
||||
-111, 81, 68, -2, 65, 44, 15, 17, -3, 5, -43, 8, 19, -30, 52, -81,
|
||||
29, 56, 21, 16, -3, -64, -78, 56, 2, 48, 33, 78, 99, 8, -100, 31,
|
||||
73, 126, 68, 12, -108, 64, -4, 69, -29, 75, 20, -93, 9, 2, -59, 80,
|
||||
11, 48, 57, -111, 1, 28, 21, 16, -3, 72, 51, 89, 69, -28, 31, -60,
|
||||
-14, 16, -47, 47, 17, -45, 70, 21, 5, 17, 25, -124, 35, 81, -116, 38,
|
||||
8, 20, 67, 45, -64, -28, 68, 38, -127, -8, -111, -28, 15, -109, 19, 1,
|
||||
97, 32, 0, 0, 37, 0, 0, 0, 19, 4, 65, 44, 16, 0, 0, 0,
|
||||
12, 0, 0, 0, 4, -108, 66, 49, -108, 3, 9, 69, 64, -63, 80, 70,
|
||||
82, 0, 23, -128, 13, 101, 36, 5, 112, 1, 23, 17, 99, 4, 32, 8,
|
||||
-126, 36, 24, -112, 49, 70, 0, -126, 32, 8, -126, 32, 8, -126, 36, 72,
|
||||
0, 0, 0, 0, -125, 17, 0, 54, 0, -125, 17, 65, 25, 16, -64, 96,
|
||||
-124, -128, 6, 3, 48, 24, 49, -92, 1, 1, 12, 70, 16, 98, 48, 0,
|
||||
-125, 17, 103, 48, 6, 3, 48, 24, 97, 6, 100, 48, 0, 24, 16, 3,
|
||||
9, 0, 0, 0, 91, 6, 32, 64, -123, 45, 67, 16, -84, -62, -106, 65,
|
||||
8, 92, 97, -53, 48, 4, -79, -80, 101, 32, 2, 84, -40, 50, 20, 1,
|
||||
42, 108, 25, -116, 0, 21, 0, 0, 0, 0, 0, 0, 97, 32, 0, 0,
|
||||
11, 0, 0, 0, 19, 4, -63, 96, 4, 32, 6, 3, -128, -31, 64, 0,
|
||||
2, 0, 0, 0, 38, 50, 0, -111, 1, 0, 0, 0, 1, 49, 0, 0,
|
||||
2, 0, 0, 0, 91, 6, 32, 64, 5, 0, 0, 0, 0, 0, 0, 0,
|
||||
97, 32, 0, 0, 38, 0, 0, 0, 19, 4, 68, 44, 16, 0, 0, 0,
|
||||
1, 0, 0, 0, 4, -108, 2, 0, -61, 13, 98, 112, -103, -63, 44, 67,
|
||||
48, -112, 1, 25, 99, -106, 64, 24, -88, 0, -82, 0, 13, -124, -15, -124,
|
||||
50, 48, -125, -63, -120, 51, 24, -125, 1, 48, 51, -64, 96, 48, -36, -128,
|
||||
6, 98, 0, 6, -77, 12, -125, -112, 6, 24, 14, 4, 14, 0, 0, 0,
|
||||
23, 96, -8, 75, -28, 63, -57, 13, 44, -2, 47, 68, -56, -12, 19, -125,
|
||||
65, -40, 9, 2, 68, 17, -128, 33, -61, 101, 36, -124, -64, 60, -72, -119,
|
||||
12, 3, -62, 24, -54, -128, 52, -126, -103, 16, -120, 79, -25, -106, -126, 16,
|
||||
23, 50, 9, 78, 51, 0, 0, 0, 1, 49, 0, 0, 3, 0, 0, 0,
|
||||
91, 6, 33, -96, -123, 45, -125, 17, -96, 2, 0, 0, 0, 0, 0, 0,
|
||||
97, 32, 0, 0, 36, 0, 0, 0, 19, 4, 67, 44, 16, 0, 0, 0,
|
||||
3, 0, 0, 0, -44, -108, 3, 5, -74, -52, 1, 85, 51, 0, 0, 0,
|
||||
-61, 13, 98, 112, -103, -63, 44, 67, 32, -104, -63, 64, 5, -96, 6, -63,
|
||||
5, 16, 25, -116, -39, -122, 50, 64, 3, 96, -60, -64, 80, 2, 39, 13,
|
||||
-58, -32, 12, -20, 12, 48, 24, 12, 55, -88, -127, 24, -128, -63, 44, -125,
|
||||
16, -84, 1, -122, 3, 1, 0, 0, 14, 0, 0, 0, -122, 114, -8, 84,
|
||||
-13, 0, -126, 114, 1, -122, -65, 68, -2, 115, -100, -64, -30, -1, 66, -124,
|
||||
76, 63, 49, 24, -124, -103, 16, 2, -13, -32, 38, 50, 12, 8, 99, 42,
|
||||
3, -46, 8, 118, 66, 92, 62, -99, -37, 10, 66, 92, -56, 36, 56, -51,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 97, 32, 0, 0, 12, 0, 0, 0,
|
||||
19, 4, -63, -119, 1, 16, 54, 6, 24, 12, -114, 12, 26, -56, 50, 8,
|
||||
7, 2, 0, 0, 5, 0, 0, 0, 54, 66, 8, 78, 83, -103, -120, -128,
|
||||
52, 86, 82, 8, 78, 83, -43, 70, 50, 0, -61, 0, 0, 0, 0, 0,
|
||||
97, 32, 0, 0, 16, 0, 0, 0, 19, 4, 1, -119, -63, 48, 50, 24,
|
||||
3, 16, 12, 70, -120, 65, 25, 12, 0, -122, 3, 1, 4, 0, 0, 0,
|
||||
54, 50, 84, -64, 98, 34, 5, 32, 8, 20, 99, 37, 3, 48, 12, 0,
|
||||
1, 49, 0, 0, 3, 0, 0, 0, 91, 6, 32, 64, -123, 45, -125, 16,
|
||||
-96, 2, 0, 0, 0, 0, 0, 0, 97, 32, 0, 0, 18, 0, 0, 0,
|
||||
19, 4, 1, -115, -63, 32, 49, 24, 86, 6, 100, 0, -126, -63, 8, 49,
|
||||
48, -125, 1, -64, 112, 32, 0, 0, 4, 0, 0, 0, 54, 50, 84, -64,
|
||||
98, 34, 5, 32, 8, 20, 99, 38, 3, 48, 12, 0, 1, 49, 0, 0,
|
||||
4, 0, 0, 0, 91, 6, 32, 64, -123, 45, 67, 16, -96, -62, -106, 97,
|
||||
8, 80, 1, 0, 0, 0, 0, 0, 97, 32, 0, 0, 3, 0, 0, 0,
|
||||
19, 4, -63, -120, 1, -79, 4, -45, -127, 0, 0, 0, 97, 32, 0, 0,
|
||||
9, 0, 0, 0, 19, 4, -63, 120, -125, 24, 92, 23, -115, -63, 24, 49,
|
||||
32, -128, 96, 33, 3, 12, 7, 2, 2, 0, 0, 0, 7, 80, 16, -51,
|
||||
20, 97, 0, 0, 0, 0, 0, 0, 97, 32, 0, 0, 9, 0, 0, 0,
|
||||
19, 4, -63, 120, -125, 24, 92, 23, -115, -63, 24, 49, 32, -128, -128, 33,
|
||||
3, 12, 7, 2, 2, 0, 0, 0, 7, 80, 16, -51, 20, 97, 0, 0,
|
||||
0, 0, 0, 0, 97, 32, 0, 0, 9, 0, 0, 0, 19, 4, -63, 120,
|
||||
-125, 24, 92, 23, -115, -63, 24, 49, 32, -128, -96, 33, 3, 12, 7, 2,
|
||||
2, 0, 0, 0, 7, 80, 16, -51, 20, 97, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0,
|
||||
};
|
||||
|
||||
const int bitCodeLength = 2776;
|
||||
const int bitCodeLength = 3364;
|
||||
|
||||
#else
|
||||
|
||||
const int8_t bitCode[] = {
|
||||
-34, -64, 23, 11, 0, 0, 0, 0, 44, 0, 0, 0, -116, 10, 0, 0,
|
||||
-34, -64, 23, 11, 0, 0, 0, 0, 44, 0, 0, 0, 108, 13, 0, 0,
|
||||
0, 0, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0, 1, 64, 4, 0,
|
||||
96, 9, 0, 0, 2, 64, 4, 0, 3, 0, 0, 0, 66, 67, -64, -34,
|
||||
33, 12, 0, 0, -96, 2, 0, 0, 1, 16, 0, 0, 18, 0, 0, 0,
|
||||
33, 12, 0, 0, 88, 3, 0, 0, 1, 16, 0, 0, 18, 0, 0, 0,
|
||||
7, -127, 35, -111, 65, -56, 4, 73, 6, 16, 50, 57, -110, 1, -124, 12,
|
||||
37, 5, 8, 25, 30, 4, -117, 98, -128, 24, 69, 2, 66, -110, 11, 66,
|
||||
-60, 16, 50, 20, 56, 8, 24, 73, 10, 50, 68, 36, 72, 10, -112, 33,
|
||||
35, -60, 82, -128, 12, 25, 33, 114, 36, 7, -56, -120, 17, 98, -88, -96,
|
||||
-88, 64, -58, -16, 1, 0, 0, 0, 73, 24, 0, 0, 24, 0, 0, 0,
|
||||
-88, 64, -58, -16, 1, 0, 0, 0, 73, 24, 0, 0, 33, 0, 0, 0,
|
||||
11, -124, -1, -1, -1, -1, 31, -64, 96, -127, -16, -1, -1, -1, -1, 3,
|
||||
24, 45, 32, 2, 16, 4, 65, 16, 36, -2, -1, -1, -1, 127, 0, -125,
|
||||
5, 70, 0, -126, 32, 8, -126, -124, 0, -126, 32, 8, -126, -60, -1, -1,
|
||||
-1, -1, 15, 96, -80, 64, -8, -1, -1, -1, -1, 1, 12, 22, 8, -1,
|
||||
-1, -1, -1, 63, 0, 11, -120, 0, 4, 65, 16, 4, -119, -1, -1, -1,
|
||||
-1, 31, -64, 80, 88, 64, 4, -64, -1, -1, -1, -1, 15, 96, 0, 0,
|
||||
-119, 32, 0, 0, 34, 0, 0, 0, 50, 34, -120, 9, 32, 100, -123, 4,
|
||||
19, 35, -92, -124, 4, 19, 35, -29, -124, -95, -112, 20, 18, 76, -116, -116,
|
||||
11, -124, -60, 76, 16, -112, -63, 28, 1, 24, 16, 48, 71, 0, 10, 36,
|
||||
-52, 0, 16, 49, 4, 64, 70, 18, 0, -124, 28, 36, 77, 17, 37, 76,
|
||||
126, -22, 32, -51, 100, -5, 61, -114, 4, 0, 32, -27, 46, 105, -118, 40,
|
||||
97, -14, 35, -23, 7, -106, -59, 17, -128, 9, 113, 26, -65, -49, 17, 49,
|
||||
12, -61, 64, 12, 45, 115, 4, 8, 61, 4, -115, 0, -108, 64, -94, -87,
|
||||
8, 18, 64, 85, 17, -98, -121, -82, 50, 72, 1, 64, 89, 25, -92, 32,
|
||||
-96, -83, 8, 82, 67, -99, 9, 0, -6, -118, 32, -127, 20, 14, 4, 0,
|
||||
19, -76, 112, 8, 7, 121, 24, 7, 116, -80, 3, 58, 104, 3, 119, 120,
|
||||
7, 119, 40, -121, 54, 96, -121, 116, 112, -121, 122, -64, -121, 54, 56, 7,
|
||||
119, -88, -121, 114, 8, 7, 113, 72, -121, 13, 115, 80, 14, 109, -48, 14,
|
||||
122, 80, 14, 109, -112, 14, 120, -96, 7, 120, -96, 7, 115, 32, 7, 109,
|
||||
-112, 14, 113, 96, 7, 122, 16, 7, 118, -96, 7, 115, 32, 7, 109, -112,
|
||||
14, 118, 64, 7, 122, 96, 7, 116, -48, 6, -23, 16, 7, 114, -128, 7,
|
||||
122, 16, 7, 114, -128, 7, 109, -32, 14, 115, 32, 7, 122, 96, 7, 116,
|
||||
-48, 6, -77, 16, 7, 114, -128, 7, 58, 15, -92, 72, 32, 35, 68, 70,
|
||||
-128, 29, 74, 0, 76, -56, 0, 0, 64, 0, -20, 80, 6, -128, 66, 8,
|
||||
0, 0, 2, 96, -121, 82, 0, 21, 50, 0, 0, 16, 0, 59, -108, 3,
|
||||
-80, 16, 2, 0, -128, 0, -40, -95, 36, -64, -123, 12, 0, 0, 4, -64,
|
||||
14, 101, 1, 48, 100, 0, 0, 32, 0, -40, 104, -56, 29, -118, 3, 100,
|
||||
8, 1, 0, 64, 0, -20, 80, 34, 96, 3, 8, 0, 0, 2, 96, -121,
|
||||
18, 1, 28, 64, 0, 0, 16, 0, 67, 20, 10, 0, -128, 0, 0, 0,
|
||||
32, 24, -94, 88, 0, 0, 4, 0, 0, 0, -63, 16, 5, 3, 0, 64,
|
||||
0, 0, 0, 8, -122, 40, 26, 0, 12, 3, 0, 0, 0, 48, 68, -31,
|
||||
0, 96, 32, 0, 0, 0, -128, 33, 10, 5, 0, 64, 1, 0, 0, 16,
|
||||
12, 81, 60, 32, 0, 12, 0, 0, -128, 96, -120, 34, 6, 0, 0, 28,
|
||||
0, 0, 0, 65, 22, 8, 0, 0, 13, 0, 0, 0, 50, 30, -104, 20,
|
||||
25, 17, 76, -112, -116, 9, 38, 71, -58, 4, 67, 2, 70, 0, 72, 24,
|
||||
1, 32, 98, 4, -128, -116, 17, 0, 66, 70, 0, 72, 25, 1, -96, 101,
|
||||
4, -128, -104, 17, 0, -126, 108, -75, 6, 91, -50, 1, 0, 0, 0, 0,
|
||||
121, 24, 0, 0, -48, 0, 0, 0, 26, 3, 76, -112, 70, 2, 19, 68,
|
||||
24, 44, 16, -2, -1, -1, -1, 127, 0, 22, 24, 1, 8, -126, 32, 8,
|
||||
18, 2, 8, -126, 32, 8, 18, -1, -1, -1, -1, 63, -128, -63, 2, -31,
|
||||
-1, -1, -1, -1, 7, 48, 90, 64, 4, 32, 8, -126, 32, 72, -4, -1,
|
||||
-1, -1, -1, 0, 6, 11, -116, 0, 4, 65, 16, 4, 9, 1, 4, 65,
|
||||
16, 4, -119, -1, -1, -1, -1, 31, -64, 96, 1, 17, -128, 32, 8, -126,
|
||||
32, -15, -1, -1, -1, -1, 3, 24, 10, 11, -120, 0, 4, 65, 16, 4,
|
||||
-119, -1, -1, -1, -1, 31, -64, 80, 88, 64, 4, -64, -1, -1, -1, -1,
|
||||
15, 96, 0, 0, -119, 32, 0, 0, 38, 0, 0, 0, 50, 34, -120, 9,
|
||||
32, 100, -123, 4, 19, 35, -92, -124, 4, 19, 35, -29, -124, -95, -112, 20,
|
||||
18, 76, -116, -116, 11, -124, -60, 76, 16, -96, -63, 28, 1, 24, 16, 48,
|
||||
71, 0, 10, 36, -52, 0, 16, 49, 4, 64, -58, 65, -46, 20, 81, -62,
|
||||
-28, -89, 14, -46, 76, -74, -33, -29, 72, 0, 0, 66, 40, -72, 75, -102,
|
||||
34, 74, -104, -4, 72, -6, -127, 101, 113, 4, 96, 66, -100, -58, -17, 115,
|
||||
68, 12, -61, 48, -48, 50, 71, -128, 80, 67, -50, 8, 64, 9, 32, -118,
|
||||
-118, 0, 1, 52, 21, 2, 98, 26, -128, -86, 57, -126, -96, 24, -112, -29,
|
||||
8, -64, 69, 88, 17, -102, -122, -76, 50, 64, 1, 64, 92, 25, -96, 32,
|
||||
32, -81, 8, 16, 67, -96, 9, 0, 18, -117, 0, -115, 68, 14, 4, 76,
|
||||
1, 0, 0, 0, 19, -76, 112, 8, 7, 121, 24, 7, 116, -80, 3, 58,
|
||||
104, 3, 119, 120, 7, 119, 40, -121, 54, 96, -121, 116, 112, -121, 122, -64,
|
||||
-121, 54, 56, 7, 119, -88, -121, 114, 8, 7, 113, 72, -121, 13, 115, 80,
|
||||
14, 109, -48, 14, 122, 80, 14, 109, -112, 14, 120, -96, 7, 120, -96, 7,
|
||||
115, 32, 7, 109, -112, 14, 113, 96, 7, 122, 16, 7, 118, -96, 7, 115,
|
||||
32, 7, 109, -112, 14, 118, 64, 7, 122, 96, 7, 116, -48, 6, -23, 16,
|
||||
7, 114, -128, 7, 122, 16, 7, 114, -128, 7, 109, -32, 14, 115, 32, 7,
|
||||
122, 96, 7, 116, -48, 6, -77, 16, 7, 114, -128, 7, 58, 15, -124, 72,
|
||||
32, 35, 68, 70, -128, 29, 74, 0, 100, -56, 0, 0, 64, 0, -20, 80,
|
||||
6, 96, 67, 8, 0, 0, 2, 96, -121, 82, 0, 31, 50, 0, 0, 16,
|
||||
0, 59, -108, 3, 0, 3, -124, 0, 0, 32, 0, 118, 40, 1, -112, 33,
|
||||
3, 0, 0, 1, -80, 67, 73, -128, 48, 64, 6, 0, 0, 2, 96, -121,
|
||||
-94, 0, 30, 66, 0, 0, 16, 0, 100, 98, -128, -36, -95, 60, -64, 24,
|
||||
0, 4, 0, 0, 1, -80, 67, 121, 0, 50, 0, 8, 0, 0, 2, 96,
|
||||
-120, 34, 1, 0, 16, 0, 0, 0, 4, 67, 20, 10, 0, -128, 0, 0,
|
||||
0, 32, 24, -94, 80, 0, 0, 4, 0, 0, 0, -63, 16, -123, 2, 0,
|
||||
64, 0, 0, 0, 8, -122, 40, 22, 16, 0, 3, 0, 0, 64, 48, 68,
|
||||
-55, -128, 0, 32, 0, 0, 0, -128, 33, -54, 6, 0, 64, 1, 0, 0,
|
||||
16, 12, 81, 58, 0, 24, 12, 0, 0, 0, 96, -120, -14, 1, -64, 112,
|
||||
0, 0, 0, 0, 67, 20, 9, 0, 0, 1, 0, 0, 32, 24, -94, -124,
|
||||
1, 16, 0, 3, 0, 0, 64, 48, 68, 41, 3, 0, 0, 16, 0, 0,
|
||||
-128, 96, -120, 82, 6, 0, 0, 32, 0, 0, 0, -63, 16, -91, 12, 0,
|
||||
0, 72, 0, 0, 0, -126, 44, 16, 13, 0, 0, 0, 50, 30, -104, 24,
|
||||
25, 17, 76, -112, -116, 9, 38, 71, -58, 4, 67, 2, 70, 0, 72, 40,
|
||||
-104, 17, -128, -126, 40, 16, 10, 70, 0, -120, 24, 1, 32, 99, 4, -128,
|
||||
-112, 17, 0, 90, 70, 0, -56, -79, -19, 34, 108, 63, 9, 0, 0, 0,
|
||||
121, 24, 0, 0, -22, 0, 0, 0, 26, 3, 76, -112, 70, 2, 19, 68,
|
||||
62, 8, 114, 35, -109, 123, 75, 35, 3, 25, 99, 11, 115, 59, 3, -79,
|
||||
43, -109, -101, 75, 123, 115, 3, -103, 113, -63, 113, -111, -71, -87, -95, -63,
|
||||
-127, 1, 1, 65, 17, 11, -101, 43, 35, 3, 121, 115, 3, 97, 98, -78,
|
||||
106, 2, -103, 113, -63, 113, -111, -71, -87, -95, -63, -127, 73, 25, 34, -116,
|
||||
1, -64, -61, -82, 76, 110, 46, -19, -51, -115, 65, -52, 16, 98, 12, -124,
|
||||
49, 24, 24, -87, -123, -39, -123, 125, -63, -123, -115, -83, -123, -99, -107, 125,
|
||||
106, 2, -103, 113, -63, 113, -111, -71, -87, -95, -63, -127, 73, 25, 34, -104,
|
||||
1, -64, -61, -82, 76, 110, 46, -19, -51, -115, 65, -52, 16, -62, 12, 4,
|
||||
51, 24, 24, -87, -123, -39, -123, 125, -63, -123, -115, -83, -123, -99, -107, 125,
|
||||
-71, -123, -75, -107, 113, 26, 123, 107, 115, 9, 115, 35, -109, 123, 75, 35,
|
||||
115, -111, -101, 115, -95, 43, -101, -93, 27, 66, -116, 65, 49, 6, 6, 15,
|
||||
-69, 48, -71, -81, 52, 55, 58, 6, 53, 67, -120, 49, 64, -58, 32, 33,
|
||||
98, 23, 38, -9, -59, -10, -26, 118, -58, -64, 102, 8, 49, 6, -53, 24,
|
||||
48, 76, -20, -62, -28, -66, -52, -40, -34, -62, -24, -122, 16, 99, -32, -116,
|
||||
115, -111, -101, 115, -95, 43, -101, -93, 27, 66, -104, 65, 97, 6, 6, 15,
|
||||
-69, 48, -71, -81, 52, 55, 58, 6, 53, 67, 8, 51, 64, -52, 32, 33,
|
||||
98, 23, 38, -9, -59, -10, -26, 118, -58, -64, 102, 8, 97, 6, -117, 25,
|
||||
48, 76, -20, -62, -28, -66, -52, -40, -34, -62, -24, -122, 16, 102, -32, -104,
|
||||
-63, 64, -59, 46, 76, -18, -117, -20, -83, 78, -116, -83, -116, -127, -52, 16,
|
||||
98, 12, -96, 49, -120, -24, -40, -123, -55, 125, -123, -79, -79, -67, -115, -123,
|
||||
-47, -91, -67, -71, 81, -112, -127, 25, 66, -116, -63, 52, 6, 20, 19, -69,
|
||||
48, -71, -81, 48, 57, -71, -80, 60, 62, 60, 67, 111, 110, 115, 116, 97,
|
||||
110, 116, 65, 114, 114, 97, 121, 62, 67, -120, 49, -80, -58, -32, -94, 98,
|
||||
23, 38, -9, 5, -9, -106, -26, 70, 39, 67, 3, -22, 45, -51, -115, 78,
|
||||
102, 8, 49, 6, -39, 24, 104, 116, -20, -62, -28, -66, -32, -34, -46, -36,
|
||||
-24, 100, -66, -32, -24, -28, 120, -88, 64, -67, -91, -71, -47, -55, 12, 33,
|
||||
-58, -128, 27, -125, -114, 1, -51, 16, 97, 12, 62, 34, 102, 117, 110, 99,
|
||||
116, 105, 111, 110, 67, -124, 49, 8, 3, 70, 46, 104, 101, 108, 112, 101,
|
||||
114, 95, 102, 117, 110, 99, 116, 105, 111, 110, 86, 67, -124, 49, 24, 3,
|
||||
18, 114, 111, 111, 116, 67, -124, 49, 40, 3, 38, 105, 110, 99, 114, 101,
|
||||
109, 101, 110, 116, 67, -124, 49, 56, 3, 6, 48, 67, -124, 49, 72, 3,
|
||||
10, 51, 53, 67, -124, 49, 88, 3, 38, 115, 117, 109, 109, 97, 116, 105,
|
||||
111, 110, 116, -26, -22, -38, -126, -58, -58, -22, -38, -22, -40, -62, -24, -34,
|
||||
-28, -122, 16, 99, -32, 6, 99, 48, 112, -103, -85, 107, 27, 122, 107, 19,
|
||||
75, 115, 43, -109, 27, -94, -116, 65, 27, -116, -63, 55, 6, 111, 32, 1,
|
||||
99, 0, 7, 67, -124, 49, -48, 24, -32, 113, 72, 115, -93, 27, 66, -116,
|
||||
-63, 28, -116, 1, 29, 48, -56, 27, 66, -116, -127, 29, -116, 1, 29, -16,
|
||||
121, 107, 115, 75, -125, 123, -93, 43, 115, -93, 3, 25, 67, 11, -109, 99,
|
||||
52, -107, -42, 6, -57, 86, 6, 50, -12, 50, -76, -78, 2, 66, 37, 20,
|
||||
20, 52, 68, 24, -125, 60, 24, 34, 8, -45, 16, 99, 12, -16, 96, 12,
|
||||
-12, 64, -104, -122, 24, 99, 64, 7, 99, -64, 7, -62, 52, -60, 24, -125,
|
||||
62, 24, -125, 62, 16, 38, 18, 108, 111, 110, 103, 67, -116, 49, -8, -125,
|
||||
49, -32, 3, 97, 26, 98, -116, 1, 40, -116, 1, 40, 8, 19, 11, 51,
|
||||
-74, -73, 48, -70, 33, -58, 24, -120, -62, 24, -16, -127, 48, 13, 49, -58,
|
||||
96, 20, -58, 96, 20, -124, -119, 6, -39, 91, -99, 24, 91, -39, 16, 99,
|
||||
12, 74, 97, 12, -8, 64, -104, -122, 24, 99, 96, 10, 99, 96, 10, -62,
|
||||
84, -123, -115, -51, -82, -51, 37, -115, -84, -52, -115, 110, 74, 16, -12, 24,
|
||||
-127, -109, 11, 59, 107, 11, -101, 34, 16, 71, -99, 17, -71, -71, -81, 50,
|
||||
60, -72, 55, 57, -70, 47, -69, 48, -71, 41, -120, -46, 60, 82, -123, 109,
|
||||
94, -95, 17, -71, -71, -81, 55, 49, -75, -78, 49, -70, -81, 57, -74, 55,
|
||||
-70, -71, 41, 1, 24, -12, 25, -111, -101, -5, 42, -61, -125, 123, -109, -93,
|
||||
-5, 50, -85, 115, 27, -101, 34, -120, 1, 25, -12, 26, -111, -101, -5, 42,
|
||||
-61, -125, 123, -109, -93, -5, 50, 123, -109, 43, 11, 27, 67, -5, 114, 11,
|
||||
107, 43, -101, 34, -104, 1, 26, 84, 26, -111, -101, -5, 42, -61, -125, 123,
|
||||
-109, -93, -5, 50, 123, -109, 43, 11, 27, 67, -101, 34, -88, 1, 27, 52,
|
||||
26, -111, -101, -5, 42, -61, -125, 123, -109, -93, -5, -110, 43, 35, -85, 27,
|
||||
43, -101, 18, -60, 65, -97, 17, -71, -71, -81, 50, 60, -72, 55, 57, -70,
|
||||
47, -70, 60, -72, -78, 41, -127, 28, -12, 40, -127, 122, 75, 115, -93, -109,
|
||||
-103, 34, -44, -63, 29, 0, 0, 0, 121, 24, 0, 0, 92, 0, 0, 0,
|
||||
51, 8, -128, 28, -60, -31, 28, 102, 20, 1, 61, -120, 67, 56, -124, -61,
|
||||
-116, 66, -128, 7, 121, 120, 7, 115, -104, 113, 12, -26, 0, 15, -19, 16,
|
||||
14, -12, -128, 14, 51, 12, 66, 30, -62, -63, 29, -50, -95, 28, 102, 48,
|
||||
5, 61, -120, 67, 56, -124, -125, 27, -52, 3, 61, -56, 67, 61, -116, 3,
|
||||
61, -52, 120, -116, 116, 112, 7, 123, 8, 7, 121, 72, -121, 112, 112, 7,
|
||||
122, 112, 3, 118, 120, -121, 112, 32, -121, 25, -52, 17, 14, -20, -112, 14,
|
||||
-31, 48, 15, 110, 48, 15, -29, -16, 14, -16, 80, 14, 51, 16, -60, 29,
|
||||
-34, 33, 28, -40, 33, 29, -62, 97, 30, 102, 48, -119, 59, -68, -125, 59,
|
||||
-48, 67, 57, -76, 3, 60, -68, -125, 60, -124, 3, 59, -52, -16, 20, 118,
|
||||
96, 7, 123, 104, 7, 55, 104, -121, 114, 104, 7, 55, -128, -121, 112, -112,
|
||||
-121, 112, 96, 7, 118, 40, 7, 118, -8, 5, 118, 120, -121, 119, -128, -121,
|
||||
95, 8, -121, 113, 24, -121, 114, -104, -121, 121, -104, -127, 44, -18, -16, 14,
|
||||
-18, -32, 14, -11, -64, 14, -20, 48, 3, 98, -56, -95, 28, -28, -95, 28,
|
||||
-52, -95, 28, -28, -95, 28, -36, 97, 28, -54, 33, 28, -60, -127, 29, -54,
|
||||
97, 6, -42, -112, 67, 57, -56, 67, 57, -104, 67, 57, -56, 67, 57, -72,
|
||||
-61, 56, -108, 67, 56, -120, 3, 59, -108, -61, 47, -68, -125, 60, -4, -126,
|
||||
59, -44, 3, 59, -80, -61, 12, -57, 105, -121, 112, 88, -121, 114, 112, -125,
|
||||
116, 104, 7, 120, 96, -121, 116, 24, -121, 116, -96, -121, 25, -50, 83, 15,
|
||||
-18, 0, 15, -14, 80, 14, -28, -112, 14, -29, 64, 15, -31, 32, 14, -20,
|
||||
80, 14, 51, 32, 40, 29, -36, -63, 30, -62, 65, 30, -46, 33, 28, -36,
|
||||
-127, 30, -36, -32, 28, -28, -31, 29, -22, 1, 30, 102, 24, 81, 56, -80,
|
||||
67, 58, -100, -125, 59, -52, 80, 36, 118, 96, 7, 123, 104, 7, 55, 96,
|
||||
-121, 119, 120, 7, 120, -104, 81, 76, -12, -112, 15, -16, 80, 14, 0, 0,
|
||||
113, 32, 0, 0, 56, 0, 0, 0, 6, 17, 6, -1, 92, -33, -111, -60,
|
||||
45, 4, 16, -95, 65, 66, 8, 83, 90, -33, -111, -12, 3, -53, -30, 8,
|
||||
-64, -124, 56, -115, 13, 40, 21, 16, -3, -125, 67, 5, 11, 97, 5, 74,
|
||||
5, 68, -1, -29, 32, -51, 100, 27, 67, -126, 52, 66, 68, 48, 68, 51,
|
||||
-103, 2, 82, 80, -115, 48, 33, 78, 99, 4, 73, 5, 68, 63, 16, 69,
|
||||
0, 102, 17, -111, 127, 16, -53, 67, 68, 127, 65, 53, -62, -124, 56, -51,
|
||||
107, 14, -117, 68, 49, -100, -61, 4, 72, 67, 68, 102, -32, 84, 64, -12,
|
||||
3, -53, -30, 8, -64, -124, 56, -115, 33, 112, 126, 36, -7, 17, 49, 80,
|
||||
2, -15, 23, -115, 47, 81, -116, 38, 8, 20, 67, 45, -64, -28, 68, 6,
|
||||
112, 84, 64, -12, 35, -51, 100, 13, -114, 68, 49, -102, 32, 80, 12, -75,
|
||||
0, -109, 19, 89, 0, 82, 1, -47, -65, 56, -115, 97, 7, 78, 5, 68,
|
||||
-1, -29, 32, -51, 100, -1, -49, 20, -39, 3, -30, 71, -110, 63, 76, 78,
|
||||
100, 11, 73, 65, 53, -62, -124, 56, -51, 107, 2, 73, 5, 68, 127, -79,
|
||||
56, -64, 100, 9, -103, 31, 73, 126, 68, 12, -108, 64, -4, 69, -29, 75,
|
||||
20, -61, 57, 76, -128, 52, 68, 4, 97, 32, 0, 0, 55, 0, 0, 0,
|
||||
19, 4, 65, 44, 16, 0, 0, 0, 21, 0, 0, 0, 4, -108, 64, 41,
|
||||
20, 67, 57, 20, 68, 73, 20, 5, 9, 101, 80, 2, 69, 64, -63, 80,
|
||||
70, 66, 8, -109, 48, 6, 67, 25, 75, 33, 76, -128, 52, -108, -79, 20,
|
||||
-62, 4, 112, 67, 25, 9, 33, 76, 66, 25, 12, 101, 36, -124, 48, 9,
|
||||
100, 48, -108, -111, 16, -62, 36, 76, 68, -116, 17, -128, 32, 8, -110, 96,
|
||||
64, -58, 24, 1, 8, -126, 32, 8, -126, 32, 8, -110, 32, 1, 0, 0,
|
||||
-125, 17, 0, 55, 0, -125, 17, 65, 25, 16, -64, 96, -124, -64, 6, 3,
|
||||
48, 24, 49, -76, 1, 1, 12, 70, -84, 65, 55, 0, -125, 17, 106, -32,
|
||||
13, -64, 96, 68, 26, 124, 3, 48, 24, 97, 6, 96, 48, 0, -125, 17,
|
||||
103, 16, 6, 3, 48, 24, -127, 6, 98, 48, 0, 24, 16, 3, 0, 0,
|
||||
13, 0, 0, 0, 91, 6, 32, -16, -125, 45, 67, 16, -124, -62, -106, 65,
|
||||
8, 72, 97, -53, 48, 4, -89, -80, 101, 32, 2, 63, -40, 50, 20, -127,
|
||||
31, 108, 25, -116, -64, 15, -74, 12, 71, -32, 7, 91, 6, 36, -16, -125,
|
||||
45, 67, 18, -8, 1, 0, 0, 0, 0, 0, 0, 0, 97, 32, 0, 0,
|
||||
11, 0, 0, 0, 19, 4, -63, 96, 4, -64, 13, 0, -122, 3, 1, 0,
|
||||
2, 0, 0, 0, -58, 49, 0, -111, 1, 0, 0, 0, 1, 49, 0, 0,
|
||||
2, 0, 0, 0, 91, 6, 32, -16, 3, 0, 0, 0, 0, 0, 0, 0,
|
||||
-62, 12, 32, 51, -120, -24, -40, -123, -55, 125, -123, -79, -79, -67, -115, -123,
|
||||
-47, -91, -67, -71, 81, -112, -127, 25, 66, -104, -63, 100, 6, 20, 25, -69,
|
||||
48, -71, -81, -70, 52, 55, -70, 25, -103, 47, 58, 6, 57, 67, 8, 51,
|
||||
-80, -52, -32, -94, 98, 23, 38, -9, 5, -9, -106, -26, 70, 39, 67, 3,
|
||||
-22, 45, -51, -115, 78, 102, 8, 97, 6, -103, 25, 104, 92, -20, -62, -28,
|
||||
-66, -46, -36, -24, -66, -32, -24, -28, 72, -88, -92, -71, -47, 13, 33, -52,
|
||||
-128, 51, -125, -114, 1, -51, 16, -63, 12, 62, 34, 102, 117, 110, 99, 116,
|
||||
105, 111, 110, 67, 4, 51, 8, 3, 70, 46, 104, 101, 108, 112, 101, 114,
|
||||
95, 102, 117, 110, 99, 116, 105, 111, 110, 86, 67, 4, 51, 24, 3, 70,
|
||||
46, 104, 101, 108, 112, 101, 114, 95, 115, 101, 116, 66, 117, 102, 102, 101,
|
||||
114, 67, 4, 51, 40, 3, 86, 46, 104, 101, 108, 112, 101, 114, 95, 115,
|
||||
101, 116, 65, 108, 108, 111, 99, 97, 116, 105, 111, 110, 67, 4, 51, 56,
|
||||
3, 18, 114, 111, 111, 116, 67, 4, 51, 72, 3, 38, 105, 110, 99, 114,
|
||||
101, 109, 101, 110, 116, 67, 4, 51, 88, 3, 6, 48, 67, 4, 51, 104,
|
||||
3, 10, 51, 53, 67, 4, 51, 120, 3, 38, 115, 117, 109, 109, 97, 116,
|
||||
105, 111, 110, 116, -26, -22, -38, -126, -58, -58, -22, -38, -22, -40, -62, -24,
|
||||
-34, -28, -122, 16, 102, 32, 7, 102, 48, 112, -103, -85, 107, 27, 122, 107,
|
||||
19, 75, 115, 43, -109, 27, -94, -104, 65, 28, -104, -63, 103, 6, 115, 0,
|
||||
1, 102, 64, 7, 67, 4, 51, -48, 24, -32, 113, 72, 115, -93, 27, 66,
|
||||
-104, -63, 29, -104, 1, 30, 48, -56, 27, 66, -104, -127, 30, -104, 1, 30,
|
||||
-16, 121, 107, 115, 75, -125, 123, -93, 43, 115, -93, 3, 25, 67, 11, -109,
|
||||
99, 52, -107, -42, 6, -57, 86, 6, 50, -12, 50, -76, -78, 2, 66, 37,
|
||||
20, 20, 52, 68, 48, -125, 62, 24, 34, 8, -38, 16, -61, 12, -8, -64,
|
||||
12, -4, 64, -48, -122, 24, 102, -128, 7, 102, 0, 10, -126, 54, -60, 48,
|
||||
-125, 80, 48, -125, 80, 16, 52, 18, 108, 111, 110, 103, 67, 12, 51, 24,
|
||||
5, 51, 0, 5, 65, 27, 98, -104, 1, 41, -104, 1, 41, 8, 26, 11,
|
||||
51, -74, -73, 48, -70, 33, -122, 25, -104, -126, 25, -128, -126, -96, 13, 49,
|
||||
-52, -32, 20, -52, -32, 20, 4, -115, 6, -39, 91, -99, 24, 91, -39, 16,
|
||||
-61, 12, 82, -63, 12, 64, 65, -48, -122, 24, 102, -96, 10, 102, -96, 10,
|
||||
-126, -58, 37, -52, 45, 15, 4, -18, 45, -51, -115, -82, 76, 110, -120, 97,
|
||||
6, -84, 96, 6, -96, 32, 104, 67, 12, 51, 104, 5, 51, 104, 5, 65,
|
||||
27, 34, 8, -37, 16, 65, -32, -122, 8, 66, 54, 4, 19, 52, 97, 51,
|
||||
3, 87, 16, 54, 97, 51, 3, 87, 16, 56, 97, 51, 3, 87, 16, 50,
|
||||
97, 51, 3, 87, -88, -62, -58, 102, -41, -26, -110, 70, 86, -26, 70, 55,
|
||||
37, 8, 122, -116, -64, -55, -123, -99, -75, -123, 77, 17, -120, -93, -50, -120,
|
||||
-36, -36, 87, 25, 30, -36, -101, 28, -35, -105, 93, -104, -36, 20, 68, 105,
|
||||
30, -87, -62, 54, -81, -48, -120, -36, -36, -41, -101, -104, 90, -39, 24, -35,
|
||||
-41, 28, -37, 27, -35, -36, -108, 0, 12, -6, -116, -56, -51, 125, -107, -31,
|
||||
-63, -67, -55, -47, 125, -103, -43, -71, -115, 77, 33, -60, -128, 12, -52, 0,
|
||||
13, 122, -115, -56, -51, 125, -107, -31, -63, -67, -55, -47, 125, -103, -67, -55,
|
||||
-107, -123, -115, -95, 125, -71, -123, -75, -107, 77, 17, -44, -128, 13, 42, -115,
|
||||
-56, -51, 125, -107, -31, -63, -67, -55, -47, 125, -103, -67, -55, -107, -123, -115,
|
||||
-95, 77, 17, -36, 0, 14, 26, -115, -56, -51, 125, -107, -31, -63, -67, -55,
|
||||
-47, 125, -55, -107, -111, -43, -115, -107, 77, 9, -22, -96, -49, -120, -36, -36,
|
||||
87, 25, 30, -36, -101, 28, -35, 23, 93, 30, 92, -39, -108, -64, 14, 122,
|
||||
-108, 64, -67, -91, -71, -47, -55, 76, 17, -14, 96, 15, 0, 0, 0, 0,
|
||||
121, 24, 0, 0, 92, 0, 0, 0, 51, 8, -128, 28, -60, -31, 28, 102,
|
||||
20, 1, 61, -120, 67, 56, -124, -61, -116, 66, -128, 7, 121, 120, 7, 115,
|
||||
-104, 113, 12, -26, 0, 15, -19, 16, 14, -12, -128, 14, 51, 12, 66, 30,
|
||||
-62, -63, 29, -50, -95, 28, 102, 48, 5, 61, -120, 67, 56, -124, -125, 27,
|
||||
-52, 3, 61, -56, 67, 61, -116, 3, 61, -52, 120, -116, 116, 112, 7, 123,
|
||||
8, 7, 121, 72, -121, 112, 112, 7, 122, 112, 3, 118, 120, -121, 112, 32,
|
||||
-121, 25, -52, 17, 14, -20, -112, 14, -31, 48, 15, 110, 48, 15, -29, -16,
|
||||
14, -16, 80, 14, 51, 16, -60, 29, -34, 33, 28, -40, 33, 29, -62, 97,
|
||||
30, 102, 48, -119, 59, -68, -125, 59, -48, 67, 57, -76, 3, 60, -68, -125,
|
||||
60, -124, 3, 59, -52, -16, 20, 118, 96, 7, 123, 104, 7, 55, 104, -121,
|
||||
114, 104, 7, 55, -128, -121, 112, -112, -121, 112, 96, 7, 118, 40, 7, 118,
|
||||
-8, 5, 118, 120, -121, 119, -128, -121, 95, 8, -121, 113, 24, -121, 114, -104,
|
||||
-121, 121, -104, -127, 44, -18, -16, 14, -18, -32, 14, -11, -64, 14, -20, 48,
|
||||
3, 98, -56, -95, 28, -28, -95, 28, -52, -95, 28, -28, -95, 28, -36, 97,
|
||||
28, -54, 33, 28, -60, -127, 29, -54, 97, 6, -42, -112, 67, 57, -56, 67,
|
||||
57, -104, 67, 57, -56, 67, 57, -72, -61, 56, -108, 67, 56, -120, 3, 59,
|
||||
-108, -61, 47, -68, -125, 60, -4, -126, 59, -44, 3, 59, -80, -61, 12, -57,
|
||||
105, -121, 112, 88, -121, 114, 112, -125, 116, 104, 7, 120, 96, -121, 116, 24,
|
||||
-121, 116, -96, -121, 25, -50, 83, 15, -18, 0, 15, -14, 80, 14, -28, -112,
|
||||
14, -29, 64, 15, -31, 32, 14, -20, 80, 14, 51, 32, 40, 29, -36, -63,
|
||||
30, -62, 65, 30, -46, 33, 28, -36, -127, 30, -36, -32, 28, -28, -31, 29,
|
||||
-22, 1, 30, 102, 24, 81, 56, -80, 67, 58, -100, -125, 59, -52, 80, 36,
|
||||
118, 96, 7, 123, 104, 7, 55, 96, -121, 119, 120, 7, 120, -104, 81, 76,
|
||||
-12, -112, 15, -16, 80, 14, 0, 0, 113, 32, 0, 0, 84, 0, 0, 0,
|
||||
70, -64, 84, 64, -12, 83, 72, 51, -35, -10, 63, -39, -128, 82, 1, -47,
|
||||
63, 56, 84, -80, 16, -90, -128, 20, 84, 35, 76, -120, -45, -104, -63, 82,
|
||||
1, -47, -113, 52, -45, -1, 76, -111, 53, 52, 18, 49, 105, -53, -30, 8,
|
||||
-64, -124, 56, -115, 61, 100, -53, 82, 49, 62, 67, 48, -62, -125, -7, 15,
|
||||
-115, -16, -2, 67, 35, -68, -113, -24, -72, 5, 32, 21, 16, -3, -117, -45,
|
||||
24, -74, -112, 20, 84, 35, 76, -120, -45, -68, -26, -112, 6, -1, 108, -45,
|
||||
-111, -60, 18, -109, -73, 16, 12, -47, 76, -38, -12, 83, -62, 1, 68, -11,
|
||||
29, 73, 63, -80, 44, -114, 0, 76, -120, -45, 28, -119, 81, -124, -63, 63,
|
||||
-41, 119, 36, 113, 11, 1, 68, 104, -112, 16, -62, -108, -42, 119, 36, -3,
|
||||
-64, -78, 56, 2, 48, 33, 78, 99, 2, 73, 5, 68, 127, -79, 56, -64,
|
||||
100, 9, -103, 31, 73, 126, 68, 12, -108, 64, -4, 69, -29, 75, 20, -61,
|
||||
57, 76, -128, 52, 68, 100, 23, -107, 127, 16, -53, 67, 68, -65, 68, 76,
|
||||
-38, -78, 56, 2, 48, 33, 78, 99, 5, 74, 5, 68, -1, -29, 32, -51,
|
||||
100, 27, 68, -126, 52, 66, 68, 48, 68, 51, 25, 67, 34, 17, -45, 70,
|
||||
21, 5, 17, -103, -60, 34, 81, 12, -25, 48, 1, -46, 16, -111, 85, 68,
|
||||
-2, 65, 44, 15, 17, -3, 5, -43, 8, 19, -30, 52, -81, 29, 56, 21,
|
||||
16, -3, -64, -78, 56, 2, 48, 33, 78, 99, 8, -100, 31, 73, 126, 68,
|
||||
12, -108, 64, -4, 69, -29, 75, 20, -93, 9, 2, -59, 80, 11, 48, 57,
|
||||
-111, 1, 28, 21, 16, -3, 72, 51, -103, 69, -28, 31, -60, -14, 16, -47,
|
||||
47, 17, -45, 70, 21, 5, 17, 89, -124, 35, 81, -116, 38, 8, 20, 67,
|
||||
45, -64, -28, 68, 54, -127, -8, -111, -28, 15, -109, 19, 1, 0, 0, 0,
|
||||
97, 32, 0, 0, 38, 0, 0, 0, 19, 4, 65, 44, 16, 0, 0, 0,
|
||||
12, 0, 0, 0, 4, -108, 64, 41, 20, 67, 57, -112, 80, 4, 20, 12,
|
||||
101, 36, -123, -96, 1, 100, 48, -108, -111, 20, -126, 6, 96, 68, -116, 17,
|
||||
-128, 32, 8, -110, 96, 64, -58, 24, 1, 8, -126, 32, 8, -126, 32, 8,
|
||||
-110, 32, 1, 0, -125, 17, 0, 25, 12, -64, 96, 68, -128, 6, 4, 48,
|
||||
24, 33, -84, -63, 0, 12, 70, 12, 108, 64, 0, -125, 17, 68, 25, 12,
|
||||
-64, 96, -124, 26, -104, -63, 0, 12, 70, -92, -63, 25, 12, 0, 6, -60,
|
||||
0, 0, 0, 0, 9, 0, 0, 0, 91, 6, 32, 16, -123, 45, 67, 16,
|
||||
-108, -62, -106, 65, 8, 80, 97, -53, 48, 4, -85, -80, 101, 32, 2, 81,
|
||||
-40, 50, 20, -127, 40, 108, 25, -116, 64, 20, 0, 0, 0, 0, 0, 0,
|
||||
97, 32, 0, 0, 11, 0, 0, 0, 19, 4, -63, 96, 4, 64, 6, 3,
|
||||
-128, -31, 64, 0, 2, 0, 0, 0, 70, 50, 0, -111, 1, 0, 0, 0,
|
||||
1, 49, 0, 0, 2, 0, 0, 0, 91, 6, 32, 16, 5, 0, 0, 0,
|
||||
0, 0, 0, 0, 97, 32, 0, 0, 46, 0, 0, 0, 19, 4, 68, 44,
|
||||
16, 0, 0, 0, 2, 0, 0, 0, 4, -108, 2, 9, 37, 0, 0, 0,
|
||||
-61, 13, 100, -128, -103, -63, 44, 67, 48, -100, 1, 25, 100, -106, 64, 24,
|
||||
-88, 16, -76, 96, 13, -124, -15, 4, 52, 72, -125, -63, 8, 53, 40, -125,
|
||||
1, -80, 52, 48, 3, 24, -36, 26, 0, 48, -36, -64, 6, 100, 0, 6,
|
||||
-77, 12, -125, -48, 6, 24, 14, 4, 20, 0, 0, 0, -90, -126, 0, 81,
|
||||
4, 96, -56, 112, 89, -118, -126, 52, 67, 5, 68, -110, -113, 84, -58, -78,
|
||||
44, -59, 20, -7, 22, 50, 16, 72, 101, 43, 15, -46, 12, 21, 16, 73,
|
||||
62, 82, -7, 13, 113, 77, 23, 96, -8, 75, -28, 63, -57, 13, 44, -2,
|
||||
47, 68, -56, -12, 19, -125, 65, -40, 9, 33, 48, 15, 110, 36, -61, -128,
|
||||
48, -42, -126, 16, 23, 50, 9, 78, 51, 0, 0, 0, 1, 49, 0, 0,
|
||||
3, 0, 0, 0, 91, 6, 33, 112, -123, 45, -125, 17, -120, 2, 0, 0,
|
||||
0, 0, 0, 0, 97, 32, 0, 0, 45, 0, 0, 0, 19, 4, 68, 44,
|
||||
16, 0, 0, 0, 5, 0, 0, 0, 4, -108, 64, 65, -112, 80, 64, -44,
|
||||
-108, 3, 93, 35, 0, -28, -40, 50, 7, 0, 0, 0, 51, 17, 12, 80,
|
||||
6, -60, 112, 3, 25, 96, 102, 48, -53, 16, 12, 108, 112, 107, -32, -20,
|
||||
44, -127, 48, 80, 1, 96, -63, 27, 8, 35, 6, 8, 0, 60, 109, -96,
|
||||
6, 103, 96, 6, 105, 48, 98, 96, 40, -128, -77, 6, 104, -32, 6, -26,
|
||||
6, 101, 0, -125, -31, -122, 55, 32, 3, 48, -104, 101, 24, 4, 56, -64,
|
||||
112, 32, 0, 0, 13, 0, 0, 0, -74, 50, 76, -52, 115, 1, -122, -65,
|
||||
68, -2, 115, -36, -64, -30, -1, 66, -124, 76, 63, 49, 24, -124, -79, 16,
|
||||
2, -13, -32, 70, 50, 12, 8, 99, 47, 3, -46, 8, -26, 66, 92, 62,
|
||||
-99, 27, 12, 66, 92, -56, 36, 56, -51, 0, 0, 0, 1, 49, 0, 0,
|
||||
2, 0, 0, 0, 91, 6, -93, -112, 5, 0, 0, 0, 0, 0, 0, 0,
|
||||
97, 32, 0, 0, 15, 0, 0, 0, 19, 4, 65, 44, 16, 0, 0, 0,
|
||||
1, 0, 0, 0, 4, -108, 0, 0, -57, 1, 97, 94, 7, -125, -5, 30,
|
||||
72, 48, 8, 7, 2, 0, 0, 0, 5, 0, 0, 0, -26, 65, 8, 78,
|
||||
83, 25, -121, -128, 52, 6, 82, 8, 78, 83, -43, -10, 49, 0, -61, 0,
|
||||
0, 0, 0, 0, 97, 32, 0, 0, 15, 0, 0, 0, 19, 4, 1, 113,
|
||||
-61, -68, 14, 4, -125, 17, -36, 55, 0, 24, 14, 4, 4, 0, 0, 0,
|
||||
-42, 49, 84, -64, 98, 28, 5, 32, 8, 20, 99, 31, 3, 48, 12, 0,
|
||||
1, 49, 0, 0, 3, 0, 0, 0, 91, 6, 32, -16, -125, 45, -125, 16,
|
||||
-8, 1, 0, 0, 0, 0, 0, 0, 97, 32, 0, 0, 17, 0, 0, 0,
|
||||
19, 4, 1, 117, -125, -72, 97, -97, 7, -126, -63, 8, 14, 12, 6, 0,
|
||||
-61, -127, 0, 0, 4, 0, 0, 0, -42, 49, 84, -64, 98, 28, 5, 32,
|
||||
8, 20, 99, 32, 3, 48, 12, 0, 1, 49, 0, 0, 4, 0, 0, 0,
|
||||
91, 6, 32, -16, -125, 45, 67, 16, -8, -63, -106, 97, 8, -4, 0, 0,
|
||||
0, 0, 0, 0, 97, 32, 0, 0, 3, 0, 0, 0, 19, 4, -63, -120,
|
||||
1, -127, 4, -112, -127, 0, 0, 0, 97, 32, 0, 0, 9, 0, 0, 0,
|
||||
19, 4, -63, 120, 3, 55, 73, -44, -115, 17, 3, 2, 8, 22, 15, -61,
|
||||
-127, 0, 0, 0, 2, 0, 0, 0, 7, 80, 16, -51, 20, 97, 0, 0,
|
||||
1, 0, 0, 0, 4, -108, 0, 0, 71, 6, 64, -104, 25, -108, 1, 12,
|
||||
-18, 12, 26, 72, 52, 8, 7, 2, 5, 0, 0, 0, 102, 66, 8, 78,
|
||||
83, 25, -119, -128, 52, -122, 82, 8, 78, 83, -43, 118, 50, 0, -61, 0,
|
||||
0, 0, 0, 0, 97, 32, 0, 0, 16, 0, 0, 0, 19, 4, 1, -111,
|
||||
-63, 48, 51, 40, 3, 16, 12, 70, -112, -63, 25, 12, 0, -122, 3, 1,
|
||||
4, 0, 0, 0, 86, 50, 84, -64, 98, 36, 5, 32, 8, 20, 99, 39,
|
||||
3, 48, 12, 0, 1, 49, 0, 0, 3, 0, 0, 0, 91, 6, 32, 16,
|
||||
-123, 45, -125, 16, -120, 2, 0, 0, 0, 0, 0, 0, 97, 32, 0, 0,
|
||||
18, 0, 0, 0, 19, 4, 1, -107, -63, 32, 50, 24, 118, 6, 102, 0,
|
||||
-126, -63, 8, 50, 64, -125, 1, -64, 112, 32, 0, 0, 4, 0, 0, 0,
|
||||
86, 50, 84, -64, 98, 36, 5, 32, 8, 20, 99, 40, 3, 48, 12, 0,
|
||||
1, 49, 0, 0, 4, 0, 0, 0, 91, 6, 32, 16, -123, 45, 67, 16,
|
||||
-120, -62, -106, 97, 8, 68, 1, 0, 0, 0, 0, 0, 97, 32, 0, 0,
|
||||
3, 0, 0, 0, 19, 4, -63, -120, 1, -95, 4, -44, -127, 0, 0, 0,
|
||||
97, 32, 0, 0, 9, 0, 0, 0, 19, 4, -63, 120, 3, 25, 104, 24,
|
||||
-107, -63, 24, 49, 32, -128, 96, 49, 3, 12, 7, 2, 2, 0, 0, 0,
|
||||
7, 80, 16, -51, 20, 97, 0, 0, 0, 0, 0, 0, 97, 32, 0, 0,
|
||||
9, 0, 0, 0, 19, 4, -63, 120, 3, 25, 104, 24, -107, -63, 24, 49,
|
||||
32, -128, -128, 49, 3, 12, 7, 2, 2, 0, 0, 0, 7, 80, 16, -51,
|
||||
20, 97, 0, 0, 0, 0, 0, 0, 97, 32, 0, 0, 9, 0, 0, 0,
|
||||
19, 4, -63, 120, 3, 25, 104, 24, -107, -63, 24, 49, 32, -128, -96, 49,
|
||||
3, 12, 7, 2, 2, 0, 0, 0, 7, 80, 16, -51, 20, 97, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
};
|
||||
|
||||
const int bitCodeLength = 2744;
|
||||
const int bitCodeLength = 3480;
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user