From cda6d951c00b5a1ae7edd71b67ae03dd1e47fc5f Mon Sep 17 00:00:00 2001 From: Marko Viitanen Date: Thu, 4 Jul 2019 15:59:10 +0300 Subject: [PATCH] Change DCT arrays back to 8-bit -> some frames are now correct --- src/strategies/generic/dct-generic.c | 514 +++++++++++++-------------- 1 file changed, 256 insertions(+), 258 deletions(-) diff --git a/src/strategies/generic/dct-generic.c b/src/strategies/generic/dct-generic.c index dd23b168..5309f358 100644 --- a/src/strategies/generic/dct-generic.c +++ b/src/strategies/generic/dct-generic.c @@ -33,153 +33,153 @@ const int16_t kvz_g_dst_4[4][4] = const int16_t kvz_g_dct_2[2][2] = { - {256, 256, }, - {256, -256, }, + {64, 64, }, + {64, -64, }, }; const int16_t kvz_g_dct_4[4][4] = { - {256, 256, 256, 256, }, - {334, 139, -139, -334, }, - {256, -256, -256, 256, }, - {139, -334, 334, -139, }, + { 64, 64, 64, 64 }, + { 83, 36, -36, -83 }, + { 64, -64, -64, 64 }, + { 36, -83, 83, -36 } }; const int16_t kvz_g_dct_8[8][8] = { - {256, 256, 256, 256, 256, 256, 256, 256, }, - {355, 301, 201, 71, -71, -201, -301, -355, }, - {334, 139, -139, -334, -334, -139, 139, 334, }, - {301, -71, -355, -201, 201, 355, 71, -301, }, - {256, -256, -256, 256, 256, -256, -256, 256, }, - {201, -355, 71, 301, -301, -71, 355, -201, }, - {139, -334, 334, -139, -139, 334, -334, 139, }, - { 71, -201, 301, -355, 355, -301, 201, -71, }, + { 64, 64, 64, 64, 64, 64, 64, 64 }, + { 89, 75, 50, 18, -18, -50, -75, -89 }, + { 83, 36, -36, -83, -83, -36, 36, 83 }, + { 75, -18, -89, -50, 50, 89, 18, -75 }, + { 64, -64, -64, 64, 64, -64, -64, 64 }, + { 50, -89, 18, 75, -75, -18, 89, -50 }, + { 36, -83, 83, -36, -36, 83, -83, 36 }, + { 18, -50, 75, -89, 89, -75, 50, -18 } }; const int16_t kvz_g_dct_16[16][16] = { - {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, }, - {360, 346, 319, 280, 230, 171, 105, 35, -35, -105, -171, -230, -280, -319, -346, -360, }, - {355, 301, 201, 71, -71, -201, -301, -355, -355, -301, -201, -71, 71, 201, 301, 355, }, - {346, 230, 35, -171, -319, -360, -280, -105, 105, 280, 360, 319, 171, -35, -230, -346, }, - {334, 139, -139, -334, -334, -139, 139, 334, 334, 139, -139, -334, -334, -139, 139, 334, }, - {319, 35, -280, -346, -105, 230, 360, 171, -171, -360, -230, 105, 346, 280, -35, -319, }, - {301, -71, -355, -201, 201, 355, 71, -301, -301, 71, 355, 201, -201, -355, -71, 301, }, - {280, -171, -346, 35, 360, 105, -319, -230, 230, 319, -105, -360, -35, 346, 171, -280, }, - {256, -256, -256, 256, 256, -256, -256, 256, 256, -256, -256, 256, 256, -256, -256, 256, }, - {230, -319, -105, 360, -35, -346, 171, 280, -280, -171, 346, 35, -360, 105, 319, -230, }, - {201, -355, 71, 301, -301, -71, 355, -201, -201, 355, -71, -301, 301, 71, -355, 201, }, - {171, -360, 230, 105, -346, 280, 35, -319, 319, -35, -280, 346, -105, -230, 360, -171, }, - {139, -334, 334, -139, -139, 334, -334, 139, 139, -334, 334, -139, -139, 334, -334, 139, }, - {105, -280, 360, -319, 171, 35, -230, 346, -346, 230, -35, -171, 319, -360, 280, -105, }, - { 71, -201, 301, -355, 355, -301, 201, -71, -71, 201, -301, 355, -355, 301, -201, 71, }, - { 35, -105, 171, -230, 280, -319, 346, -360, 360, -346, 319, -280, 230, -171, 105, -35, }, + { 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64 }, + { 90, 87, 80, 70, 57, 43, 25, 9, -9, -25, -43, -57, -70, -80, -87, -90 }, + { 89, 75, 50, 18, -18, -50, -75, -89, -89, -75, -50, -18, 18, 50, 75, 89 }, + { 87, 57, 9, -43, -80, -90, -70, -25, 25, 70, 90, 80, 43, -9, -57, -87 }, + { 83, 36, -36, -83, -83, -36, 36, 83, 83, 36, -36, -83, -83, -36, 36, 83 }, + { 80, 9, -70, -87, -25, 57, 90, 43, -43, -90, -57, 25, 87, 70, -9, -80 }, + { 75, -18, -89, -50, 50, 89, 18, -75, -75, 18, 89, 50, -50, -89, -18, 75 }, + { 70, -43, -87, 9, 90, 25, -80, -57, 57, 80, -25, -90, -9, 87, 43, -70 }, + { 64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64, 64 }, + { 57, -80, -25, 90, -9, -87, 43, 70, -70, -43, 87, 9, -90, 25, 80, -57 }, + { 50, -89, 18, 75, -75, -18, 89, -50, -50, 89, -18, -75, 75, 18, -89, 50 }, + { 43, -90, 57, 25, -87, 70, 9, -80, 80, -9, -70, 87, -25, -57, 90, -43 }, + { 36, -83, 83, -36, -36, 83, -83, 36, 36, -83, 83, -36, -36, 83, -83, 36 }, + { 25, -70, 90, -80, 43, 9, -57, 87, -87, 57, -9, -43, 80, -90, 70, -25 }, + { 18, -50, 75, -89, 89, -75, 50, -18, -18, 50, -75, 89, -89, 75, -50, 18 }, + { 9, -25, 43, -57, 70, -80, 87, -90, 90, -87, 80, -70, 57, -43, 25, -9 } }; const int16_t kvz_g_dct_32[32][32] = { - {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, }, - {362, 358, 351, 341, 327, 311, 291, 268, 243, 216, 186, 155, 122, 88, 53, 18, -18, -53, -88, -122, -155, -186, -216, -243, -268, -291, -311, -327, -341, -351, -358, -362, }, - {360, 346, 319, 280, 230, 171, 105, 35, -35, -105, -171, -230, -280, -319, -346, -360, -360, -346, -319, -280, -230, -171, -105, -35, 35, 105, 171, 230, 280, 319, 346, 360, }, - {358, 327, 268, 186, 88, -18, -122, -216, -291, -341, -362, -351, -311, -243, -155, -53, 53, 155, 243, 311, 351, 362, 341, 291, 216, 122, 18, -88, -186, -268, -327, -358, }, - {355, 301, 201, 71, -71, -201, -301, -355, -355, -301, -201, -71, 71, 201, 301, 355, 355, 301, 201, 71, -71, -201, -301, -355, -355, -301, -201, -71, 71, 201, 301, 355, }, - {351, 268, 122, -53, -216, -327, -362, -311, -186, -18, 155, 291, 358, 341, 243, 88, -88, -243, -341, -358, -291, -155, 18, 186, 311, 362, 327, 216, 53, -122, -268, -351, }, - {346, 230, 35, -171, -319, -360, -280, -105, 105, 280, 360, 319, 171, -35, -230, -346, -346, -230, -35, 171, 319, 360, 280, 105, -105, -280, -360, -319, -171, 35, 230, 346, }, - {341, 186, -53, -268, -362, -291, -88, 155, 327, 351, 216, -18, -243, -358, -311, -122, 122, 311, 358, 243, 18, -216, -351, -327, -155, 88, 291, 362, 268, 53, -186, -341, }, - {334, 139, -139, -334, -334, -139, 139, 334, 334, 139, -139, -334, -334, -139, 139, 334, 334, 139, -139, -334, -334, -139, 139, 334, 334, 139, -139, -334, -334, -139, 139, 334, }, - {327, 88, -216, -362, -243, 53, 311, 341, 122, -186, -358, -268, 18, 291, 351, 155, -155, -351, -291, -18, 268, 358, 186, -122, -341, -311, -53, 243, 362, 216, -88, -327, }, - {319, 35, -280, -346, -105, 230, 360, 171, -171, -360, -230, 105, 346, 280, -35, -319, -319, -35, 280, 346, 105, -230, -360, -171, 171, 360, 230, -105, -346, -280, 35, 319, }, - {311, -18, -327, -291, 53, 341, 268, -88, -351, -243, 122, 358, 216, -155, -362, -186, 186, 362, 155, -216, -358, -122, 243, 351, 88, -268, -341, -53, 291, 327, 18, -311, }, - {301, -71, -355, -201, 201, 355, 71, -301, -301, 71, 355, 201, -201, -355, -71, 301, 301, -71, -355, -201, 201, 355, 71, -301, -301, 71, 355, 201, -201, -355, -71, 301, }, - {291, -122, -362, -88, 311, 268, -155, -358, -53, 327, 243, -186, -351, -18, 341, 216, -216, -341, 18, 351, 186, -243, -327, 53, 358, 155, -268, -311, 88, 362, 122, -291, }, - {280, -171, -346, 35, 360, 105, -319, -230, 230, 319, -105, -360, -35, 346, 171, -280, -280, 171, 346, -35, -360, -105, 319, 230, -230, -319, 105, 360, 35, -346, -171, 280, }, - {268, -216, -311, 155, 341, -88, -358, 18, 362, 53, -351, -122, 327, 186, -291, -243, 243, 291, -186, -327, 122, 351, -53, -362, -18, 358, 88, -341, -155, 311, 216, -268, }, - {256, -256, -256, 256, 256, -256, -256, 256, 256, -256, -256, 256, 256, -256, -256, 256, 256, -256, -256, 256, 256, -256, -256, 256, 256, -256, -256, 256, 256, -256, -256, 256, }, - {243, -291, -186, 327, 122, -351, -53, 362, -18, -358, 88, 341, -155, -311, 216, 268, -268, -216, 311, 155, -341, -88, 358, 18, -362, 53, 351, -122, -327, 186, 291, -243, }, - {230, -319, -105, 360, -35, -346, 171, 280, -280, -171, 346, 35, -360, 105, 319, -230, -230, 319, 105, -360, 35, 346, -171, -280, 280, 171, -346, -35, 360, -105, -319, 230, }, - {216, -341, -18, 351, -186, -243, 327, 53, -358, 155, 268, -311, -88, 362, -122, -291, 291, 122, -362, 88, 311, -268, -155, 358, -53, -327, 243, 186, -351, 18, 341, -216, }, - {201, -355, 71, 301, -301, -71, 355, -201, -201, 355, -71, -301, 301, 71, -355, 201, 201, -355, 71, 301, -301, -71, 355, -201, -201, 355, -71, -301, 301, 71, -355, 201, }, - {186, -362, 155, 216, -358, 122, 243, -351, 88, 268, -341, 53, 291, -327, 18, 311, -311, -18, 327, -291, -53, 341, -268, -88, 351, -243, -122, 358, -216, -155, 362, -186, }, - {171, -360, 230, 105, -346, 280, 35, -319, 319, -35, -280, 346, -105, -230, 360, -171, -171, 360, -230, -105, 346, -280, -35, 319, -319, 35, 280, -346, 105, 230, -360, 171, }, - {155, -351, 291, -18, -268, 358, -186, -122, 341, -311, 53, 243, -362, 216, 88, -327, 327, -88, -216, 362, -243, -53, 311, -341, 122, 186, -358, 268, 18, -291, 351, -155, }, - {139, -334, 334, -139, -139, 334, -334, 139, 139, -334, 334, -139, -139, 334, -334, 139, 139, -334, 334, -139, -139, 334, -334, 139, 139, -334, 334, -139, -139, 334, -334, 139, }, - {122, -311, 358, -243, 18, 216, -351, 327, -155, -88, 291, -362, 268, -53, -186, 341, -341, 186, 53, -268, 362, -291, 88, 155, -327, 351, -216, -18, 243, -358, 311, -122, }, - {105, -280, 360, -319, 171, 35, -230, 346, -346, 230, -35, -171, 319, -360, 280, -105, -105, 280, -360, 319, -171, -35, 230, -346, 346, -230, 35, 171, -319, 360, -280, 105, }, - { 88, -243, 341, -358, 291, -155, -18, 186, -311, 362, -327, 216, -53, -122, 268, -351, 351, -268, 122, 53, -216, 327, -362, 311, -186, 18, 155, -291, 358, -341, 243, -88, }, - { 71, -201, 301, -355, 355, -301, 201, -71, -71, 201, -301, 355, -355, 301, -201, 71, 71, -201, 301, -355, 355, -301, 201, -71, -71, 201, -301, 355, -355, 301, -201, 71, }, - { 53, -155, 243, -311, 351, -362, 341, -291, 216, -122, 18, 88, -186, 268, -327, 358, -358, 327, -268, 186, -88, -18, 122, -216, 291, -341, 362, -351, 311, -243, 155, -53, }, - { 35, -105, 171, -230, 280, -319, 346, -360, 360, -346, 319, -280, 230, -171, 105, -35, -35, 105, -171, 230, -280, 319, -346, 360, -360, 346, -319, 280, -230, 171, -105, 35, }, - { 18, -53, 88, -122, 155, -186, 216, -243, 268, -291, 311, -327, 341, -351, 358, -362, 362, -358, 351, -341, 327, -311, 291, -268, 243, -216, 186, -155, 122, -88, 53, -18, }, + { 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64 }, + { 90, 90, 88, 85, 82, 78, 73, 67, 61, 54, 46, 38, 31, 22, 13, 4, -4, -13, -22, -31, -38, -46, -54, -61, -67, -73, -78, -82, -85, -88, -90, -90 }, + { 90, 87, 80, 70, 57, 43, 25, 9, -9, -25, -43, -57, -70, -80, -87, -90, -90, -87, -80, -70, -57, -43, -25, -9, 9, 25, 43, 57, 70, 80, 87, 90 }, + { 90, 82, 67, 46, 22, -4, -31, -54, -73, -85, -90, -88, -78, -61, -38, -13, 13, 38, 61, 78, 88, 90, 85, 73, 54, 31, 4, -22, -46, -67, -82, -90 }, + { 89, 75, 50, 18, -18, -50, -75, -89, -89, -75, -50, -18, 18, 50, 75, 89, 89, 75, 50, 18, -18, -50, -75, -89, -89, -75, -50, -18, 18, 50, 75, 89 }, + { 88, 67, 31, -13, -54, -82, -90, -78, -46, -4, 38, 73, 90, 85, 61, 22, -22, -61, -85, -90, -73, -38, 4, 46, 78, 90, 82, 54, 13, -31, -67, -88 }, + { 87, 57, 9, -43, -80, -90, -70, -25, 25, 70, 90, 80, 43, -9, -57, -87, -87, -57, -9, 43, 80, 90, 70, 25, -25, -70, -90, -80, -43, 9, 57, 87 }, + { 85, 46, -13, -67, -90, -73, -22, 38, 82, 88, 54, -4, -61, -90, -78, -31, 31, 78, 90, 61, 4, -54, -88, -82, -38, 22, 73, 90, 67, 13, -46, -85 }, + { 83, 36, -36, -83, -83, -36, 36, 83, 83, 36, -36, -83, -83, -36, 36, 83, 83, 36, -36, -83, -83, -36, 36, 83, 83, 36, -36, -83, -83, -36, 36, 83 }, + { 82, 22, -54, -90, -61, 13, 78, 85, 31, -46, -90, -67, 4, 73, 88, 38, -38, -88, -73, -4, 67, 90, 46, -31, -85, -78, -13, 61, 90, 54, -22, -82 }, + { 80, 9, -70, -87, -25, 57, 90, 43, -43, -90, -57, 25, 87, 70, -9, -80, -80, -9, 70, 87, 25, -57, -90, -43, 43, 90, 57, -25, -87, -70, 9, 80 }, + { 78, -4, -82, -73, 13, 85, 67, -22, -88, -61, 31, 90, 54, -38, -90, -46, 46, 90, 38, -54, -90, -31, 61, 88, 22, -67, -85, -13, 73, 82, 4, -78 }, + { 75, -18, -89, -50, 50, 89, 18, -75, -75, 18, 89, 50, -50, -89, -18, 75, 75, -18, -89, -50, 50, 89, 18, -75, -75, 18, 89, 50, -50, -89, -18, 75 }, + { 73, -31, -90, -22, 78, 67, -38, -90, -13, 82, 61, -46, -88, -4, 85, 54, -54, -85, 4, 88, 46, -61, -82, 13, 90, 38, -67, -78, 22, 90, 31, -73 }, + { 70, -43, -87, 9, 90, 25, -80, -57, 57, 80, -25, -90, -9, 87, 43, -70, -70, 43, 87, -9, -90, -25, 80, 57, -57, -80, 25, 90, 9, -87, -43, 70 }, + { 67, -54, -78, 38, 85, -22, -90, 4, 90, 13, -88, -31, 82, 46, -73, -61, 61, 73, -46, -82, 31, 88, -13, -90, -4, 90, 22, -85, -38, 78, 54, -67 }, + { 64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64, 64 }, + { 61, -73, -46, 82, 31, -88, -13, 90, -4, -90, 22, 85, -38, -78, 54, 67, -67, -54, 78, 38, -85, -22, 90, 4, -90, 13, 88, -31, -82, 46, 73, -61 }, + { 57, -80, -25, 90, -9, -87, 43, 70, -70, -43, 87, 9, -90, 25, 80, -57, -57, 80, 25, -90, 9, 87, -43, -70, 70, 43, -87, -9, 90, -25, -80, 57 }, + { 54, -85, -4, 88, -46, -61, 82, 13, -90, 38, 67, -78, -22, 90, -31, -73, 73, 31, -90, 22, 78, -67, -38, 90, -13, -82, 61, 46, -88, 4, 85, -54 }, + { 50, -89, 18, 75, -75, -18, 89, -50, -50, 89, -18, -75, 75, 18, -89, 50, 50, -89, 18, 75, -75, -18, 89, -50, -50, 89, -18, -75, 75, 18, -89, 50 }, + { 46, -90, 38, 54, -90, 31, 61, -88, 22, 67, -85, 13, 73, -82, 4, 78, -78, -4, 82, -73, -13, 85, -67, -22, 88, -61, -31, 90, -54, -38, 90, -46 }, + { 43, -90, 57, 25, -87, 70, 9, -80, 80, -9, -70, 87, -25, -57, 90, -43, -43, 90, -57, -25, 87, -70, -9, 80, -80, 9, 70, -87, 25, 57, -90, 43 }, + { 38, -88, 73, -4, -67, 90, -46, -31, 85, -78, 13, 61, -90, 54, 22, -82, 82, -22, -54, 90, -61, -13, 78, -85, 31, 46, -90, 67, 4, -73, 88, -38 }, + { 36, -83, 83, -36, -36, 83, -83, 36, 36, -83, 83, -36, -36, 83, -83, 36, 36, -83, 83, -36, -36, 83, -83, 36, 36, -83, 83, -36, -36, 83, -83, 36 }, + { 31, -78, 90, -61, 4, 54, -88, 82, -38, -22, 73, -90, 67, -13, -46, 85, -85, 46, 13, -67, 90, -73, 22, 38, -82, 88, -54, -4, 61, -90, 78, -31 }, + { 25, -70, 90, -80, 43, 9, -57, 87, -87, 57, -9, -43, 80, -90, 70, -25, -25, 70, -90, 80, -43, -9, 57, -87, 87, -57, 9, 43, -80, 90, -70, 25 }, + { 22, -61, 85, -90, 73, -38, -4, 46, -78, 90, -82, 54, -13, -31, 67, -88, 88, -67, 31, 13, -54, 82, -90, 78, -46, 4, 38, -73, 90, -85, 61, -22 }, + { 18, -50, 75, -89, 89, -75, 50, -18, -18, 50, -75, 89, -89, 75, -50, 18, 18, -50, 75, -89, 89, -75, 50, -18, -18, 50, -75, 89, -89, 75, -50, 18 }, + { 13, -38, 61, -78, 88, -90, 85, -73, 54, -31, 4, 22, -46, 67, -82, 90, -90, 82, -67, 46, -22, -4, 31, -54, 73, -85, 90, -88, 78, -61, 38, -13 }, + { 9, -25, 43, -57, 70, -80, 87, -90, 90, -87, 80, -70, 57, -43, 25, -9, -9, 25, -43, 57, -70, 80, -87, 90, -90, 87, -80, 70, -57, 43, -25, 9 }, + { 4, -13, 22, -31, 38, -46, 54, -61, 67, -73, 78, -82, 85, -88, 90, -90, 90, -90, 88, -85, 82, -78, 73, -67, 61, -54, 46, -38, 31, -22, 13, -4 } }; const int16_t kvz_g_dct_64[64][64] = { - {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, }, - {362, 361, 359, 357, 353, 349, 344, 338, 331, 323, 315, 306, 296, 285, 274, 262, 250, 236, 223, 208, 194, 178, 163, 147, 130, 114, 97, 79, 62, 44, 27, 9, -9, -27, -44, -62, -79, -97, -114, -130, -147, -163, -178, -194, -208, -223, -236, -250, -262, -274, -285, -296, -306, -315, -323, -331, -338, -344, -349, -353, -357, -359, -361, -362, }, - {362, 358, 351, 341, 327, 311, 291, 268, 243, 216, 186, 155, 122, 88, 53, 18, -18, -53, -88, -122, -155, -186, -216, -243, -268, -291, -311, -327, -341, -351, -358, -362, -362, -358, -351, -341, -327, -311, -291, -268, -243, -216, -186, -155, -122, -88, -53, -18, 18, 53, 88, 122, 155, 186, 216, 243, 268, 291, 311, 327, 341, 351, 358, 362, }, - {361, 353, 338, 315, 285, 250, 208, 163, 114, 62, 9, -44, -97, -147, -194, -236, -274, -306, -331, -349, -359, -362, -357, -344, -323, -296, -262, -223, -178, -130, -79, -27, 27, 79, 130, 178, 223, 262, 296, 323, 344, 357, 362, 359, 349, 331, 306, 274, 236, 194, 147, 97, 44, -9, -62, -114, -163, -208, -250, -285, -315, -338, -353, -361, }, - {360, 346, 319, 280, 230, 171, 105, 35, -35, -105, -171, -230, -280, -319, -346, -360, -360, -346, -319, -280, -230, -171, -105, -35, 35, 105, 171, 230, 280, 319, 346, 360, 360, 346, 319, 280, 230, 171, 105, 35, -35, -105, -171, -230, -280, -319, -346, -360, -360, -346, -319, -280, -230, -171, -105, -35, 35, 105, 171, 230, 280, 319, 346, 360, }, - {359, 338, 296, 236, 163, 79, -9, -97, -178, -250, -306, -344, -361, -357, -331, -285, -223, -147, -62, 27, 114, 194, 262, 315, 349, 362, 353, 323, 274, 208, 130, 44, -44, -130, -208, -274, -323, -353, -362, -349, -315, -262, -194, -114, -27, 62, 147, 223, 285, 331, 357, 361, 344, 306, 250, 178, 97, 9, -79, -163, -236, -296, -338, -359, }, - {358, 327, 268, 186, 88, -18, -122, -216, -291, -341, -362, -351, -311, -243, -155, -53, 53, 155, 243, 311, 351, 362, 341, 291, 216, 122, 18, -88, -186, -268, -327, -358, -358, -327, -268, -186, -88, 18, 122, 216, 291, 341, 362, 351, 311, 243, 155, 53, -53, -155, -243, -311, -351, -362, -341, -291, -216, -122, -18, 88, 186, 268, 327, 358, }, - {357, 315, 236, 130, 9, -114, -223, -306, -353, -359, -323, -250, -147, -27, 97, 208, 296, 349, 361, 331, 262, 163, 44, -79, -194, -285, -344, -362, -338, -274, -178, -62, 62, 178, 274, 338, 362, 344, 285, 194, 79, -44, -163, -262, -331, -361, -349, -296, -208, -97, 27, 147, 250, 323, 359, 353, 306, 223, 114, -9, -130, -236, -315, -357, }, - {355, 301, 201, 71, -71, -201, -301, -355, -355, -301, -201, -71, 71, 201, 301, 355, 355, 301, 201, 71, -71, -201, -301, -355, -355, -301, -201, -71, 71, 201, 301, 355, 355, 301, 201, 71, -71, -201, -301, -355, -355, -301, -201, -71, 71, 201, 301, 355, 355, 301, 201, 71, -71, -201, -301, -355, -355, -301, -201, -71, 71, 201, 301, 355, }, - {353, 285, 163, 9, -147, -274, -349, -357, -296, -178, -27, 130, 262, 344, 359, 306, 194, 44, -114, -250, -338, -361, -315, -208, -62, 97, 236, 331, 362, 323, 223, 79, -79, -223, -323, -362, -331, -236, -97, 62, 208, 315, 361, 338, 250, 114, -44, -194, -306, -359, -344, -262, -130, 27, 178, 296, 357, 349, 274, 147, -9, -163, -285, -353, }, - {351, 268, 122, -53, -216, -327, -362, -311, -186, -18, 155, 291, 358, 341, 243, 88, -88, -243, -341, -358, -291, -155, 18, 186, 311, 362, 327, 216, 53, -122, -268, -351, -351, -268, -122, 53, 216, 327, 362, 311, 186, 18, -155, -291, -358, -341, -243, -88, 88, 243, 341, 358, 291, 155, -18, -186, -311, -362, -327, -216, -53, 122, 268, 351, }, - {349, 250, 79, -114, -274, -357, -338, -223, -44, 147, 296, 361, 323, 194, 9, -178, -315, -362, -306, -163, 27, 208, 331, 359, 285, 130, -62, -236, -344, -353, -262, -97, 97, 262, 353, 344, 236, 62, -130, -285, -359, -331, -208, -27, 163, 306, 362, 315, 178, -9, -194, -323, -361, -296, -147, 44, 223, 338, 357, 274, 114, -79, -250, -349, }, - {346, 230, 35, -171, -319, -360, -280, -105, 105, 280, 360, 319, 171, -35, -230, -346, -346, -230, -35, 171, 319, 360, 280, 105, -105, -280, -360, -319, -171, 35, 230, 346, 346, 230, 35, -171, -319, -360, -280, -105, 105, 280, 360, 319, 171, -35, -230, -346, -346, -230, -35, 171, 319, 360, 280, 105, -105, -280, -360, -319, -171, 35, 230, 346, }, - {344, 208, -9, -223, -349, -338, -194, 27, 236, 353, 331, 178, -44, -250, -357, -323, -163, 62, 262, 359, 315, 147, -79, -274, -361, -306, -130, 97, 285, 362, 296, 114, -114, -296, -362, -285, -97, 130, 306, 361, 274, 79, -147, -315, -359, -262, -62, 163, 323, 357, 250, 44, -178, -331, -353, -236, -27, 194, 338, 349, 223, 9, -208, -344, }, - {341, 186, -53, -268, -362, -291, -88, 155, 327, 351, 216, -18, -243, -358, -311, -122, 122, 311, 358, 243, 18, -216, -351, -327, -155, 88, 291, 362, 268, 53, -186, -341, -341, -186, 53, 268, 362, 291, 88, -155, -327, -351, -216, 18, 243, 358, 311, 122, -122, -311, -358, -243, -18, 216, 351, 327, 155, -88, -291, -362, -268, -53, 186, 341, }, - {338, 163, -97, -306, -357, -223, 27, 262, 362, 274, 44, -208, -353, -315, -114, 147, 331, 344, 178, -79, -296, -359, -236, 9, 250, 361, 285, 62, -194, -349, -323, -130, 130, 323, 349, 194, -62, -285, -361, -250, -9, 236, 359, 296, 79, -178, -344, -331, -147, 114, 315, 353, 208, -44, -274, -362, -262, -27, 223, 357, 306, 97, -163, -338, }, - {334, 139, -139, -334, -334, -139, 139, 334, 334, 139, -139, -334, -334, -139, 139, 334, 334, 139, -139, -334, -334, -139, 139, 334, 334, 139, -139, -334, -334, -139, 139, 334, 334, 139, -139, -334, -334, -139, 139, 334, 334, 139, -139, -334, -334, -139, 139, 334, 334, 139, -139, -334, -334, -139, 139, 334, 334, 139, -139, -334, -334, -139, 139, 334, }, - {331, 114, -178, -353, -296, -44, 236, 362, 250, -27, -285, -357, -194, 97, 323, 338, 130, -163, -349, -306, -62, 223, 361, 262, -9, -274, -359, -208, 79, 315, 344, 147, -147, -344, -315, -79, 208, 359, 274, 9, -262, -361, -223, 62, 306, 349, 163, -130, -338, -323, -97, 194, 357, 285, 27, -250, -362, -236, 44, 296, 353, 178, -114, -331, }, - {327, 88, -216, -362, -243, 53, 311, 341, 122, -186, -358, -268, 18, 291, 351, 155, -155, -351, -291, -18, 268, 358, 186, -122, -341, -311, -53, 243, 362, 216, -88, -327, -327, -88, 216, 362, 243, -53, -311, -341, -122, 186, 358, 268, -18, -291, -351, -155, 155, 351, 291, 18, -268, -358, -186, 122, 341, 311, 53, -243, -362, -216, 88, 327, }, - {323, 62, -250, -359, -178, 147, 353, 274, -27, -306, -338, -97, 223, 362, 208, -114, -344, -296, -9, 285, 349, 130, -194, -361, -236, 79, 331, 315, 44, -262, -357, -163, 163, 357, 262, -44, -315, -331, -79, 236, 361, 194, -130, -349, -285, 9, 296, 344, 114, -208, -362, -223, 97, 338, 306, 27, -274, -353, -147, 178, 359, 250, -62, -323, }, - {319, 35, -280, -346, -105, 230, 360, 171, -171, -360, -230, 105, 346, 280, -35, -319, -319, -35, 280, 346, 105, -230, -360, -171, 171, 360, 230, -105, -346, -280, 35, 319, 319, 35, -280, -346, -105, 230, 360, 171, -171, -360, -230, 105, 346, 280, -35, -319, -319, -35, 280, 346, 105, -230, -360, -171, 171, 360, 230, -105, -346, -280, 35, 319, }, - {315, 9, -306, -323, -27, 296, 331, 44, -285, -338, -62, 274, 344, 79, -262, -349, -97, 250, 353, 114, -236, -357, -130, 223, 359, 147, -208, -361, -163, 194, 362, 178, -178, -362, -194, 163, 361, 208, -147, -359, -223, 130, 357, 236, -114, -353, -250, 97, 349, 262, -79, -344, -274, 62, 338, 285, -44, -331, -296, 27, 323, 306, -9, -315, }, - {311, -18, -327, -291, 53, 341, 268, -88, -351, -243, 122, 358, 216, -155, -362, -186, 186, 362, 155, -216, -358, -122, 243, 351, 88, -268, -341, -53, 291, 327, 18, -311, -311, 18, 327, 291, -53, -341, -268, 88, 351, 243, -122, -358, -216, 155, 362, 186, -186, -362, -155, 216, 358, 122, -243, -351, -88, 268, 341, 53, -291, -327, -18, 311, }, - {306, -44, -344, -250, 130, 361, 178, -208, -357, -97, 274, 331, 9, -323, -285, 79, 353, 223, -163, -362, -147, 236, 349, 62, -296, -315, 27, 338, 262, -114, -359, -194, 194, 359, 114, -262, -338, -27, 315, 296, -62, -349, -236, 147, 362, 163, -223, -353, -79, 285, 323, -9, -331, -274, 97, 357, 208, -178, -361, -130, 250, 344, 44, -306, }, - {301, -71, -355, -201, 201, 355, 71, -301, -301, 71, 355, 201, -201, -355, -71, 301, 301, -71, -355, -201, 201, 355, 71, -301, -301, 71, 355, 201, -201, -355, -71, 301, 301, -71, -355, -201, 201, 355, 71, -301, -301, 71, 355, 201, -201, -355, -71, 301, 301, -71, -355, -201, 201, 355, 71, -301, -301, 71, 355, 201, -201, -355, -71, 301, }, - {296, -97, -361, -147, 262, 323, -44, -353, -194, 223, 344, 9, -338, -236, 178, 357, 62, -315, -274, 130, 362, 114, -285, -306, 79, 359, 163, -250, -331, 27, 349, 208, -208, -349, -27, 331, 250, -163, -359, -79, 306, 285, -114, -362, -130, 274, 315, -62, -357, -178, 236, 338, -9, -344, -223, 194, 353, 44, -323, -262, 147, 361, 97, -296, }, - {291, -122, -362, -88, 311, 268, -155, -358, -53, 327, 243, -186, -351, -18, 341, 216, -216, -341, 18, 351, 186, -243, -327, 53, 358, 155, -268, -311, 88, 362, 122, -291, -291, 122, 362, 88, -311, -268, 155, 358, 53, -327, -243, 186, 351, 18, -341, -216, 216, 341, -18, -351, -186, 243, 327, -53, -358, -155, 268, 311, -88, -362, -122, 291, }, - {285, -147, -357, -27, 344, 194, -250, -315, 97, 362, 79, -323, -236, 208, 338, -44, -359, -130, 296, 274, -163, -353, -9, 349, 178, -262, -306, 114, 361, 62, -331, -223, 223, 331, -62, -361, -114, 306, 262, -178, -349, 9, 353, 163, -274, -296, 130, 359, 44, -338, -208, 236, 323, -79, -362, -97, 315, 250, -194, -344, 27, 357, 147, -285, }, - {280, -171, -346, 35, 360, 105, -319, -230, 230, 319, -105, -360, -35, 346, 171, -280, -280, 171, 346, -35, -360, -105, 319, 230, -230, -319, 105, 360, 35, -346, -171, 280, 280, -171, -346, 35, 360, 105, -319, -230, 230, 319, -105, -360, -35, 346, 171, -280, -280, 171, 346, -35, -360, -105, 319, 230, -230, -319, 105, 360, 35, -346, -171, 280, }, - {274, -194, -331, 97, 359, 9, -357, -114, 323, 208, -262, -285, 178, 338, -79, -361, -27, 353, 130, -315, -223, 250, 296, -163, -344, 62, 362, 44, -349, -147, 306, 236, -236, -306, 147, 349, -44, -362, -62, 344, 163, -296, -250, 223, 315, -130, -353, 27, 361, 79, -338, -178, 285, 262, -208, -323, 114, 357, -9, -359, -97, 331, 194, -274, }, - {268, -216, -311, 155, 341, -88, -358, 18, 362, 53, -351, -122, 327, 186, -291, -243, 243, 291, -186, -327, 122, 351, -53, -362, -18, 358, 88, -341, -155, 311, 216, -268, -268, 216, 311, -155, -341, 88, 358, -18, -362, -53, 351, 122, -327, -186, 291, 243, -243, -291, 186, 327, -122, -351, 53, 362, 18, -358, -88, 341, 155, -311, -216, 268, }, - {262, -236, -285, 208, 306, -178, -323, 147, 338, -114, -349, 79, 357, -44, -361, 9, 362, 27, -359, -62, 353, 97, -344, -130, 331, 163, -315, -194, 296, 223, -274, -250, 250, 274, -223, -296, 194, 315, -163, -331, 130, 344, -97, -353, 62, 359, -27, -362, -9, 361, 44, -357, -79, 349, 114, -338, -147, 323, 178, -306, -208, 285, 236, -262, }, - {256, -256, -256, 256, 256, -256, -256, 256, 256, -256, -256, 256, 256, -256, -256, 256, 256, -256, -256, 256, 256, -256, -256, 256, 256, -256, -256, 256, 256, -256, -256, 256, 256, -256, -256, 256, 256, -256, -256, 256, 256, -256, -256, 256, 256, -256, -256, 256, 256, -256, -256, 256, 256, -256, -256, 256, 256, -256, -256, 256, 256, -256, -256, 256, }, - {250, -274, -223, 296, 194, -315, -163, 331, 130, -344, -97, 353, 62, -359, -27, 362, -9, -361, 44, 357, -79, -349, 114, 338, -147, -323, 178, 306, -208, -285, 236, 262, -262, -236, 285, 208, -306, -178, 323, 147, -338, -114, 349, 79, -357, -44, 361, 9, -362, 27, 359, -62, -353, 97, 344, -130, -331, 163, 315, -194, -296, 223, 274, -250, }, - {243, -291, -186, 327, 122, -351, -53, 362, -18, -358, 88, 341, -155, -311, 216, 268, -268, -216, 311, 155, -341, -88, 358, 18, -362, 53, 351, -122, -327, 186, 291, -243, -243, 291, 186, -327, -122, 351, 53, -362, 18, 358, -88, -341, 155, 311, -216, -268, 268, 216, -311, -155, 341, 88, -358, -18, 362, -53, -351, 122, 327, -186, -291, 243, }, - {236, -306, -147, 349, 44, -362, 62, 344, -163, -296, 250, 223, -315, -130, 353, 27, -361, 79, 338, -178, -285, 262, 208, -323, -114, 357, 9, -359, 97, 331, -194, -274, 274, 194, -331, -97, 359, -9, -357, 114, 323, -208, -262, 285, 178, -338, -79, 361, -27, -353, 130, 315, -223, -250, 296, 163, -344, -62, 362, -44, -349, 147, 306, -236, }, - {230, -319, -105, 360, -35, -346, 171, 280, -280, -171, 346, 35, -360, 105, 319, -230, -230, 319, 105, -360, 35, 346, -171, -280, 280, 171, -346, -35, 360, -105, -319, 230, 230, -319, -105, 360, -35, -346, 171, 280, -280, -171, 346, 35, -360, 105, 319, -230, -230, 319, 105, -360, 35, 346, -171, -280, 280, 171, -346, -35, 360, -105, -319, 230, }, - {223, -331, -62, 361, -114, -306, 262, 178, -349, -9, 353, -163, -274, 296, 130, -359, 44, 338, -208, -236, 323, 79, -362, 97, 315, -250, -194, 344, 27, -357, 147, 285, -285, -147, 357, -27, -344, 194, 250, -315, -97, 362, -79, -323, 236, 208, -338, -44, 359, -130, -296, 274, 163, -353, 9, 349, -178, -262, 306, 114, -361, 62, 331, -223, }, - {216, -341, -18, 351, -186, -243, 327, 53, -358, 155, 268, -311, -88, 362, -122, -291, 291, 122, -362, 88, 311, -268, -155, 358, -53, -327, 243, 186, -351, 18, 341, -216, -216, 341, 18, -351, 186, 243, -327, -53, 358, -155, -268, 311, 88, -362, 122, 291, -291, -122, 362, -88, -311, 268, 155, -358, 53, 327, -243, -186, 351, -18, -341, 216, }, - {208, -349, 27, 331, -250, -163, 359, -79, -306, 285, 114, -362, 130, 274, -315, -62, 357, -178, -236, 338, 9, -344, 223, 194, -353, 44, 323, -262, -147, 361, -97, -296, 296, 97, -361, 147, 262, -323, -44, 353, -194, -223, 344, -9, -338, 236, 178, -357, 62, 315, -274, -130, 362, -114, -285, 306, 79, -359, 163, 250, -331, -27, 349, -208, }, - {201, -355, 71, 301, -301, -71, 355, -201, -201, 355, -71, -301, 301, 71, -355, 201, 201, -355, 71, 301, -301, -71, 355, -201, -201, 355, -71, -301, 301, 71, -355, 201, 201, -355, 71, 301, -301, -71, 355, -201, -201, 355, -71, -301, 301, 71, -355, 201, 201, -355, 71, 301, -301, -71, 355, -201, -201, 355, -71, -301, 301, 71, -355, 201, }, - {194, -359, 114, 262, -338, 27, 315, -296, -62, 349, -236, -147, 362, -163, -223, 353, -79, -285, 323, 9, -331, 274, 97, -357, 208, 178, -361, 130, 250, -344, 44, 306, -306, -44, 344, -250, -130, 361, -178, -208, 357, -97, -274, 331, -9, -323, 285, 79, -353, 223, 163, -362, 147, 236, -349, 62, 296, -315, -27, 338, -262, -114, 359, -194, }, - {186, -362, 155, 216, -358, 122, 243, -351, 88, 268, -341, 53, 291, -327, 18, 311, -311, -18, 327, -291, -53, 341, -268, -88, 351, -243, -122, 358, -216, -155, 362, -186, -186, 362, -155, -216, 358, -122, -243, 351, -88, -268, 341, -53, -291, 327, -18, -311, 311, 18, -327, 291, 53, -341, 268, 88, -351, 243, 122, -358, 216, 155, -362, 186, }, - {178, -362, 194, 163, -361, 208, 147, -359, 223, 130, -357, 236, 114, -353, 250, 97, -349, 262, 79, -344, 274, 62, -338, 285, 44, -331, 296, 27, -323, 306, 9, -315, 315, -9, -306, 323, -27, -296, 331, -44, -285, 338, -62, -274, 344, -79, -262, 349, -97, -250, 353, -114, -236, 357, -130, -223, 359, -147, -208, 361, -163, -194, 362, -178, }, - {171, -360, 230, 105, -346, 280, 35, -319, 319, -35, -280, 346, -105, -230, 360, -171, -171, 360, -230, -105, 346, -280, -35, 319, -319, 35, 280, -346, 105, 230, -360, 171, 171, -360, 230, 105, -346, 280, 35, -319, 319, -35, -280, 346, -105, -230, 360, -171, -171, 360, -230, -105, 346, -280, -35, 319, -319, 35, 280, -346, 105, 230, -360, 171, }, - {163, -357, 262, 44, -315, 331, -79, -236, 361, -194, -130, 349, -285, -9, 296, -344, 114, 208, -362, 223, 97, -338, 306, -27, -274, 353, -147, -178, 359, -250, -62, 323, -323, 62, 250, -359, 178, 147, -353, 274, 27, -306, 338, -97, -223, 362, -208, -114, 344, -296, 9, 285, -349, 130, 194, -361, 236, 79, -331, 315, -44, -262, 357, -163, }, - {155, -351, 291, -18, -268, 358, -186, -122, 341, -311, 53, 243, -362, 216, 88, -327, 327, -88, -216, 362, -243, -53, 311, -341, 122, 186, -358, 268, 18, -291, 351, -155, -155, 351, -291, 18, 268, -358, 186, 122, -341, 311, -53, -243, 362, -216, -88, 327, -327, 88, 216, -362, 243, 53, -311, 341, -122, -186, 358, -268, -18, 291, -351, 155, }, - {147, -344, 315, -79, -208, 359, -274, 9, 262, -361, 223, 62, -306, 349, -163, -130, 338, -323, 97, 194, -357, 285, -27, -250, 362, -236, -44, 296, -353, 178, 114, -331, 331, -114, -178, 353, -296, 44, 236, -362, 250, 27, -285, 357, -194, -97, 323, -338, 130, 163, -349, 306, -62, -223, 361, -262, -9, 274, -359, 208, 79, -315, 344, -147, }, - {139, -334, 334, -139, -139, 334, -334, 139, 139, -334, 334, -139, -139, 334, -334, 139, 139, -334, 334, -139, -139, 334, -334, 139, 139, -334, 334, -139, -139, 334, -334, 139, 139, -334, 334, -139, -139, 334, -334, 139, 139, -334, 334, -139, -139, 334, -334, 139, 139, -334, 334, -139, -139, 334, -334, 139, 139, -334, 334, -139, -139, 334, -334, 139, }, - {130, -323, 349, -194, -62, 285, -361, 250, -9, -236, 359, -296, 79, 178, -344, 331, -147, -114, 315, -353, 208, 44, -274, 362, -262, 27, 223, -357, 306, -97, -163, 338, -338, 163, 97, -306, 357, -223, -27, 262, -362, 274, -44, -208, 353, -315, 114, 147, -331, 344, -178, -79, 296, -359, 236, 9, -250, 361, -285, 62, 194, -349, 323, -130, }, - {122, -311, 358, -243, 18, 216, -351, 327, -155, -88, 291, -362, 268, -53, -186, 341, -341, 186, 53, -268, 362, -291, 88, 155, -327, 351, -216, -18, 243, -358, 311, -122, -122, 311, -358, 243, -18, -216, 351, -327, 155, 88, -291, 362, -268, 53, 186, -341, 341, -186, -53, 268, -362, 291, -88, -155, 327, -351, 216, 18, -243, 358, -311, 122, }, - {114, -296, 362, -285, 97, 130, -306, 361, -274, 79, 147, -315, 359, -262, 62, 163, -323, 357, -250, 44, 178, -331, 353, -236, 27, 194, -338, 349, -223, 9, 208, -344, 344, -208, -9, 223, -349, 338, -194, -27, 236, -353, 331, -178, -44, 250, -357, 323, -163, -62, 262, -359, 315, -147, -79, 274, -361, 306, -130, -97, 285, -362, 296, -114, }, - {105, -280, 360, -319, 171, 35, -230, 346, -346, 230, -35, -171, 319, -360, 280, -105, -105, 280, -360, 319, -171, -35, 230, -346, 346, -230, 35, 171, -319, 360, -280, 105, 105, -280, 360, -319, 171, 35, -230, 346, -346, 230, -35, -171, 319, -360, 280, -105, -105, 280, -360, 319, -171, -35, 230, -346, 346, -230, 35, 171, -319, 360, -280, 105, }, - { 97, -262, 353, -344, 236, -62, -130, 285, -359, 331, -208, 27, 163, -306, 362, -315, 178, 9, -194, 323, -361, 296, -147, -44, 223, -338, 357, -274, 114, 79, -250, 349, -349, 250, -79, -114, 274, -357, 338, -223, 44, 147, -296, 361, -323, 194, -9, -178, 315, -362, 306, -163, -27, 208, -331, 359, -285, 130, 62, -236, 344, -353, 262, -97, }, - { 88, -243, 341, -358, 291, -155, -18, 186, -311, 362, -327, 216, -53, -122, 268, -351, 351, -268, 122, 53, -216, 327, -362, 311, -186, 18, 155, -291, 358, -341, 243, -88, -88, 243, -341, 358, -291, 155, 18, -186, 311, -362, 327, -216, 53, 122, -268, 351, -351, 268, -122, -53, 216, -327, 362, -311, 186, -18, -155, 291, -358, 341, -243, 88, }, - { 79, -223, 323, -362, 331, -236, 97, 62, -208, 315, -361, 338, -250, 114, 44, -194, 306, -359, 344, -262, 130, 27, -178, 296, -357, 349, -274, 147, 9, -163, 285, -353, 353, -285, 163, -9, -147, 274, -349, 357, -296, 178, -27, -130, 262, -344, 359, -306, 194, -44, -114, 250, -338, 361, -315, 208, -62, -97, 236, -331, 362, -323, 223, -79, }, - { 71, -201, 301, -355, 355, -301, 201, -71, -71, 201, -301, 355, -355, 301, -201, 71, 71, -201, 301, -355, 355, -301, 201, -71, -71, 201, -301, 355, -355, 301, -201, 71, 71, -201, 301, -355, 355, -301, 201, -71, -71, 201, -301, 355, -355, 301, -201, 71, 71, -201, 301, -355, 355, -301, 201, -71, -71, 201, -301, 355, -355, 301, -201, 71, }, - { 62, -178, 274, -338, 362, -344, 285, -194, 79, 44, -163, 262, -331, 361, -349, 296, -208, 97, 27, -147, 250, -323, 359, -353, 306, -223, 114, 9, -130, 236, -315, 357, -357, 315, -236, 130, -9, -114, 223, -306, 353, -359, 323, -250, 147, -27, -97, 208, -296, 349, -361, 331, -262, 163, -44, -79, 194, -285, 344, -362, 338, -274, 178, -62, }, - { 53, -155, 243, -311, 351, -362, 341, -291, 216, -122, 18, 88, -186, 268, -327, 358, -358, 327, -268, 186, -88, -18, 122, -216, 291, -341, 362, -351, 311, -243, 155, -53, -53, 155, -243, 311, -351, 362, -341, 291, -216, 122, -18, -88, 186, -268, 327, -358, 358, -327, 268, -186, 88, 18, -122, 216, -291, 341, -362, 351, -311, 243, -155, 53, }, - { 44, -130, 208, -274, 323, -353, 362, -349, 315, -262, 194, -114, 27, 62, -147, 223, -285, 331, -357, 361, -344, 306, -250, 178, -97, 9, 79, -163, 236, -296, 338, -359, 359, -338, 296, -236, 163, -79, -9, 97, -178, 250, -306, 344, -361, 357, -331, 285, -223, 147, -62, -27, 114, -194, 262, -315, 349, -362, 353, -323, 274, -208, 130, -44, }, - { 35, -105, 171, -230, 280, -319, 346, -360, 360, -346, 319, -280, 230, -171, 105, -35, -35, 105, -171, 230, -280, 319, -346, 360, -360, 346, -319, 280, -230, 171, -105, 35, 35, -105, 171, -230, 280, -319, 346, -360, 360, -346, 319, -280, 230, -171, 105, -35, -35, 105, -171, 230, -280, 319, -346, 360, -360, 346, -319, 280, -230, 171, -105, 35, }, - { 27, -79, 130, -178, 223, -262, 296, -323, 344, -357, 362, -359, 349, -331, 306, -274, 236, -194, 147, -97, 44, 9, -62, 114, -163, 208, -250, 285, -315, 338, -353, 361, -361, 353, -338, 315, -285, 250, -208, 163, -114, 62, -9, -44, 97, -147, 194, -236, 274, -306, 331, -349, 359, -362, 357, -344, 323, -296, 262, -223, 178, -130, 79, -27, }, - { 18, -53, 88, -122, 155, -186, 216, -243, 268, -291, 311, -327, 341, -351, 358, -362, 362, -358, 351, -341, 327, -311, 291, -268, 243, -216, 186, -155, 122, -88, 53, -18, -18, 53, -88, 122, -155, 186, -216, 243, -268, 291, -311, 327, -341, 351, -358, 362, -362, 358, -351, 341, -327, 311, -291, 268, -243, 216, -186, 155, -122, 88, -53, 18, }, - { 9, -27, 44, -62, 79, -97, 114, -130, 147, -163, 178, -194, 208, -223, 236, -250, 262, -274, 285, -296, 306, -315, 323, -331, 338, -344, 349, -353, 357, -359, 361, -362, 362, -361, 359, -357, 353, -349, 344, -338, 331, -323, 315, -306, 296, -285, 274, -262, 250, -236, 223, -208, 194, -178, 163, -147, 130, -114, 97, -79, 62, -44, 27, -9, }, + { 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, }, + { 91, 90, 90, 90, 88, 87, 86, 84, 83, 81, 79, 77, 73, 71, 69, 65, 62, 59, 56, 52, 48, 44, 41, 37, 33, 28, 24, 20, 15, 11, 7, 2, -2, -7, -11, -15, -20, -24, -28, -33, -37, -41, -44, -48, -52, -56, -59, -62, -65, -69, -71, -73, -77, -79, -81, -83, -84, -86, -87, -88, -90, -90, -90, -91, }, + { 90, 90, 88, 85, 82, 78, 73, 67, 61, 54, 46, 38, 31, 22, 13, 4, -4, -13, -22, -31, -38, -46, -54, -61, -67, -73, -78, -82, -85, -88, -90, -90, -90, -90, -88, -85, -82, -78, -73, -67, -61, -54, -46, -38, -31, -22, -13, -4, 4, 13, 22, 31, 38, 46, 54, 61, 67, 73, 78, 82, 85, 88, 90, 90, }, + { 90, 88, 84, 79, 71, 62, 52, 41, 28, 15, 2, -11, -24, -37, -48, -59, -69, -77, -83, -87, -90, -91, -90, -86, -81, -73, -65, -56, -44, -33, -20, -7, 7, 20, 33, 44, 56, 65, 73, 81, 86, 90, 91, 90, 87, 83, 77, 69, 59, 48, 37, 24, 11, -2, -15, -28, -41, -52, -62, -71, -79, -84, -88, -90, }, + { 90, 87, 80, 70, 57, 43, 25, 9, -9, -25, -43, -57, -70, -80, -87, -90, -90, -87, -80, -70, -57, -43, -25, -9, 9, 25, 43, 57, 70, 80, 87, 90, 90, 87, 80, 70, 57, 43, 25, 9, -9, -25, -43, -57, -70, -80, -87, -90, -90, -87, -80, -70, -57, -43, -25, -9, 9, 25, 43, 57, 70, 80, 87, 90, }, + { 90, 84, 73, 59, 41, 20, -2, -24, -44, -62, -77, -86, -90, -90, -83, -71, -56, -37, -15, 7, 28, 48, 65, 79, 87, 91, 88, 81, 69, 52, 33, 11, -11, -33, -52, -69, -81, -88, -91, -87, -79, -65, -48, -28, -7, 15, 37, 56, 71, 83, 90, 90, 86, 77, 62, 44, 24, 2, -20, -41, -59, -73, -84, -90, }, + { 90, 82, 67, 46, 22, -4, -31, -54, -73, -85, -90, -88, -78, -61, -38, -13, 13, 38, 61, 78, 88, 90, 85, 73, 54, 31, 4, -22, -46, -67, -82, -90, -90, -82, -67, -46, -22, 4, 31, 54, 73, 85, 90, 88, 78, 61, 38, 13, -13, -38, -61, -78, -88, -90, -85, -73, -54, -31, -4, 22, 46, 67, 82, 90, }, + { 90, 79, 59, 33, 2, -28, -56, -77, -88, -90, -81, -62, -37, -7, 24, 52, 73, 87, 90, 83, 65, 41, 11, -20, -48, -71, -86, -91, -84, -69, -44, -15, 15, 44, 69, 84, 91, 86, 71, 48, 20, -11, -41, -65, -83, -90, -87, -73, -52, -24, 7, 37, 62, 81, 90, 88, 77, 56, 28, -2, -33, -59, -79, -90, }, + { 89, 75, 50, 18, -18, -50, -75, -89, -89, -75, -50, -18, 18, 50, 75, 89, 89, 75, 50, 18, -18, -50, -75, -89, -89, -75, -50, -18, 18, 50, 75, 89, 89, 75, 50, 18, -18, -50, -75, -89, -89, -75, -50, -18, 18, 50, 75, 89, 89, 75, 50, 18, -18, -50, -75, -89, -89, -75, -50, -18, 18, 50, 75, 89, }, + { 88, 71, 41, 2, -37, -69, -87, -90, -73, -44, -7, 33, 65, 86, 90, 77, 48, 11, -28, -62, -84, -90, -79, -52, -15, 24, 59, 83, 91, 81, 56, 20, -20, -56, -81, -91, -83, -59, -24, 15, 52, 79, 90, 84, 62, 28, -11, -48, -77, -90, -86, -65, -33, 7, 44, 73, 90, 87, 69, 37, -2, -41, -71, -88, }, + { 88, 67, 31, -13, -54, -82, -90, -78, -46, -4, 38, 73, 90, 85, 61, 22, -22, -61, -85, -90, -73, -38, 4, 46, 78, 90, 82, 54, 13, -31, -67, -88, -88, -67, -31, 13, 54, 82, 90, 78, 46, 4, -38, -73, -90, -85, -61, -22, 22, 61, 85, 90, 73, 38, -4, -46, -78, -90, -82, -54, -13, 31, 67, 88, }, + { 87, 62, 20, -28, -69, -90, -84, -56, -11, 37, 73, 90, 81, 48, 2, -44, -79, -91, -77, -41, 7, 52, 83, 90, 71, 33, -15, -59, -86, -88, -65, -24, 24, 65, 88, 86, 59, 15, -33, -71, -90, -83, -52, -7, 41, 77, 91, 79, 44, -2, -48, -81, -90, -73, -37, 11, 56, 84, 90, 69, 28, -20, -62, -87, }, + { 87, 57, 9, -43, -80, -90, -70, -25, 25, 70, 90, 80, 43, -9, -57, -87, -87, -57, -9, 43, 80, 90, 70, 25, -25, -70, -90, -80, -43, 9, 57, 87, 87, 57, 9, -43, -80, -90, -70, -25, 25, 70, 90, 80, 43, -9, -57, -87, -87, -57, -9, 43, 80, 90, 70, 25, -25, -70, -90, -80, -43, 9, 57, 87, }, + { 86, 52, -2, -56, -87, -84, -48, 7, 59, 88, 83, 44, -11, -62, -90, -81, -41, 15, 65, 90, 79, 37, -20, -69, -90, -77, -33, 24, 71, 91, 73, 28, -28, -73, -91, -71, -24, 33, 77, 90, 69, 20, -37, -79, -90, -65, -15, 41, 81, 90, 62, 11, -44, -83, -88, -59, -7, 48, 84, 87, 56, 2, -52, -86, }, + { 85, 46, -13, -67, -90, -73, -22, 38, 82, 88, 54, -4, -61, -90, -78, -31, 31, 78, 90, 61, 4, -54, -88, -82, -38, 22, 73, 90, 67, 13, -46, -85, -85, -46, 13, 67, 90, 73, 22, -38, -82, -88, -54, 4, 61, 90, 78, 31, -31, -78, -90, -61, -4, 54, 88, 82, 38, -22, -73, -90, -67, -13, 46, 85, }, + { 84, 41, -24, -77, -90, -56, 7, 65, 91, 69, 11, -52, -88, -79, -28, 37, 83, 86, 44, -20, -73, -90, -59, 2, 62, 90, 71, 15, -48, -87, -81, -33, 33, 81, 87, 48, -15, -71, -90, -62, -2, 59, 90, 73, 20, -44, -86, -83, -37, 28, 79, 88, 52, -11, -69, -91, -65, -7, 56, 90, 77, 24, -41, -84, }, + { 83, 36, -36, -83, -83, -36, 36, 83, 83, 36, -36, -83, -83, -36, 36, 83, 83, 36, -36, -83, -83, -36, 36, 83, 83, 36, -36, -83, -83, -36, 36, 83, 83, 36, -36, -83, -83, -36, 36, 83, 83, 36, -36, -83, -83, -36, 36, 83, 83, 36, -36, -83, -83, -36, 36, 83, 83, 36, -36, -83, -83, -36, 36, 83, }, + { 83, 28, -44, -88, -73, -11, 59, 91, 62, -7, -71, -90, -48, 24, 81, 84, 33, -41, -87, -77, -15, 56, 90, 65, -2, -69, -90, -52, 20, 79, 86, 37, -37, -86, -79, -20, 52, 90, 69, 2, -65, -90, -56, 15, 77, 87, 41, -33, -84, -81, -24, 48, 90, 71, 7, -62, -91, -59, 11, 73, 88, 44, -28, -83, }, + { 82, 22, -54, -90, -61, 13, 78, 85, 31, -46, -90, -67, 4, 73, 88, 38, -38, -88, -73, -4, 67, 90, 46, -31, -85, -78, -13, 61, 90, 54, -22, -82, -82, -22, 54, 90, 61, -13, -78, -85, -31, 46, 90, 67, -4, -73, -88, -38, 38, 88, 73, 4, -67, -90, -46, 31, 85, 78, 13, -61, -90, -54, 22, 82, }, + { 81, 15, -62, -90, -44, 37, 88, 69, -7, -77, -84, -24, 56, 91, 52, -28, -86, -73, -2, 71, 87, 33, -48, -90, -59, 20, 83, 79, 11, -65, -90, -41, 41, 90, 65, -11, -79, -83, -20, 59, 90, 48, -33, -87, -71, 2, 73, 86, 28, -52, -91, -56, 24, 84, 77, 7, -69, -88, -37, 44, 90, 62, -15, -81, }, + { 80, 9, -70, -87, -25, 57, 90, 43, -43, -90, -57, 25, 87, 70, -9, -80, -80, -9, 70, 87, 25, -57, -90, -43, 43, 90, 57, -25, -87, -70, 9, 80, 80, 9, -70, -87, -25, 57, 90, 43, -43, -90, -57, 25, 87, 70, -9, -80, -80, -9, 70, 87, 25, -57, -90, -43, 43, 90, 57, -25, -87, -70, 9, 80, }, + { 79, 2, -77, -81, -7, 73, 83, 11, -71, -84, -15, 69, 86, 20, -65, -87, -24, 62, 88, 28, -59, -90, -33, 56, 90, 37, -52, -90, -41, 48, 91, 44, -44, -91, -48, 41, 90, 52, -37, -90, -56, 33, 90, 59, -28, -88, -62, 24, 87, 65, -20, -86, -69, 15, 84, 71, -11, -83, -73, 7, 81, 77, -2, -79, }, + { 78, -4, -82, -73, 13, 85, 67, -22, -88, -61, 31, 90, 54, -38, -90, -46, 46, 90, 38, -54, -90, -31, 61, 88, 22, -67, -85, -13, 73, 82, 4, -78, -78, 4, 82, 73, -13, -85, -67, 22, 88, 61, -31, -90, -54, 38, 90, 46, -46, -90, -38, 54, 90, 31, -61, -88, -22, 67, 85, 13, -73, -82, -4, 78, }, + { 77, -11, -86, -62, 33, 90, 44, -52, -90, -24, 69, 83, 2, -81, -71, 20, 88, 56, -41, -91, -37, 59, 87, 15, -73, -79, 7, 84, 65, -28, -90, -48, 48, 90, 28, -65, -84, -7, 79, 73, -15, -87, -59, 37, 91, 41, -56, -88, -20, 71, 81, -2, -83, -69, 24, 90, 52, -44, -90, -33, 62, 86, 11, -77, }, + { 75, -18, -89, -50, 50, 89, 18, -75, -75, 18, 89, 50, -50, -89, -18, 75, 75, -18, -89, -50, 50, 89, 18, -75, -75, 18, 89, 50, -50, -89, -18, 75, 75, -18, -89, -50, 50, 89, 18, -75, -75, 18, 89, 50, -50, -89, -18, 75, 75, -18, -89, -50, 50, 89, 18, -75, -75, 18, 89, 50, -50, -89, -18, 75, }, + { 73, -24, -90, -37, 65, 81, -11, -88, -48, 56, 86, 2, -84, -59, 44, 90, 15, -79, -69, 33, 91, 28, -71, -77, 20, 90, 41, -62, -83, 7, 87, 52, -52, -87, -7, 83, 62, -41, -90, -20, 77, 71, -28, -91, -33, 69, 79, -15, -90, -44, 59, 84, -2, -86, -56, 48, 88, 11, -81, -65, 37, 90, 24, -73, }, + { 73, -31, -90, -22, 78, 67, -38, -90, -13, 82, 61, -46, -88, -4, 85, 54, -54, -85, 4, 88, 46, -61, -82, 13, 90, 38, -67, -78, 22, 90, 31, -73, -73, 31, 90, 22, -78, -67, 38, 90, 13, -82, -61, 46, 88, 4, -85, -54, 54, 85, -4, -88, -46, 61, 82, -13, -90, -38, 67, 78, -22, -90, -31, 73, }, + { 71, -37, -90, -7, 86, 48, -62, -79, 24, 91, 20, -81, -59, 52, 84, -11, -90, -33, 73, 69, -41, -88, -2, 87, 44, -65, -77, 28, 90, 15, -83, -56, 56, 83, -15, -90, -28, 77, 65, -44, -87, 2, 88, 41, -69, -73, 33, 90, 11, -84, -52, 59, 81, -20, -91, -24, 79, 62, -48, -86, 7, 90, 37, -71, }, + { 70, -43, -87, 9, 90, 25, -80, -57, 57, 80, -25, -90, -9, 87, 43, -70, -70, 43, 87, -9, -90, -25, 80, 57, -57, -80, 25, 90, 9, -87, -43, 70, 70, -43, -87, 9, 90, 25, -80, -57, 57, 80, -25, -90, -9, 87, 43, -70, -70, 43, 87, -9, -90, -25, 80, 57, -57, -80, 25, 90, 9, -87, -43, 70, }, + { 69, -48, -83, 24, 90, 2, -90, -28, 81, 52, -65, -71, 44, 84, -20, -90, -7, 88, 33, -79, -56, 62, 73, -41, -86, 15, 91, 11, -87, -37, 77, 59, -59, -77, 37, 87, -11, -91, -15, 86, 41, -73, -62, 56, 79, -33, -88, 7, 90, 20, -84, -44, 71, 65, -52, -81, 28, 90, -2, -90, -24, 83, 48, -69, }, + { 67, -54, -78, 38, 85, -22, -90, 4, 90, 13, -88, -31, 82, 46, -73, -61, 61, 73, -46, -82, 31, 88, -13, -90, -4, 90, 22, -85, -38, 78, 54, -67, -67, 54, 78, -38, -85, 22, 90, -4, -90, -13, 88, 31, -82, -46, 73, 61, -61, -73, 46, 82, -31, -88, 13, 90, 4, -90, -22, 85, 38, -78, -54, 67, }, + { 65, -59, -71, 52, 77, -44, -81, 37, 84, -28, -87, 20, 90, -11, -90, 2, 91, 7, -90, -15, 88, 24, -86, -33, 83, 41, -79, -48, 73, 56, -69, -62, 62, 69, -56, -73, 48, 79, -41, -83, 33, 86, -24, -88, 15, 90, -7, -91, -2, 90, 11, -90, -20, 87, 28, -84, -37, 81, 44, -77, -52, 71, 59, -65, }, + { 64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64, 64, }, + { 62, -69, -56, 73, 48, -79, -41, 83, 33, -86, -24, 88, 15, -90, -7, 91, -2, -90, 11, 90, -20, -87, 28, 84, -37, -81, 44, 77, -52, -71, 59, 65, -65, -59, 71, 52, -77, -44, 81, 37, -84, -28, 87, 20, -90, -11, 90, 2, -91, 7, 90, -15, -88, 24, 86, -33, -83, 41, 79, -48, -73, 56, 69, -62, }, + { 61, -73, -46, 82, 31, -88, -13, 90, -4, -90, 22, 85, -38, -78, 54, 67, -67, -54, 78, 38, -85, -22, 90, 4, -90, 13, 88, -31, -82, 46, 73, -61, -61, 73, 46, -82, -31, 88, 13, -90, 4, 90, -22, -85, 38, 78, -54, -67, 67, 54, -78, -38, 85, 22, -90, -4, 90, -13, -88, 31, 82, -46, -73, 61, }, + { 59, -77, -37, 87, 11, -91, 15, 86, -41, -73, 62, 56, -79, -33, 88, 7, -90, 20, 84, -44, -71, 65, 52, -81, -28, 90, 2, -90, 24, 83, -48, -69, 69, 48, -83, -24, 90, -2, -90, 28, 81, -52, -65, 71, 44, -84, -20, 90, -7, -88, 33, 79, -56, -62, 73, 41, -86, -15, 91, -11, -87, 37, 77, -59, }, + { 57, -80, -25, 90, -9, -87, 43, 70, -70, -43, 87, 9, -90, 25, 80, -57, -57, 80, 25, -90, 9, 87, -43, -70, 70, 43, -87, -9, 90, -25, -80, 57, 57, -80, -25, 90, -9, -87, 43, 70, -70, -43, 87, 9, -90, 25, 80, -57, -57, 80, 25, -90, 9, 87, -43, -70, 70, 43, -87, -9, 90, -25, -80, 57, }, + { 56, -83, -15, 90, -28, -77, 65, 44, -87, -2, 88, -41, -69, 73, 33, -90, 11, 84, -52, -59, 81, 20, -91, 24, 79, -62, -48, 86, 7, -90, 37, 71, -71, -37, 90, -7, -86, 48, 62, -79, -24, 91, -20, -81, 59, 52, -84, -11, 90, -33, -73, 69, 41, -88, 2, 87, -44, -65, 77, 28, -90, 15, 83, -56, }, + { 54, -85, -4, 88, -46, -61, 82, 13, -90, 38, 67, -78, -22, 90, -31, -73, 73, 31, -90, 22, 78, -67, -38, 90, -13, -82, 61, 46, -88, 4, 85, -54, -54, 85, 4, -88, 46, 61, -82, -13, 90, -38, -67, 78, 22, -90, 31, 73, -73, -31, 90, -22, -78, 67, 38, -90, 13, 82, -61, -46, 88, -4, -85, 54, }, + { 52, -87, 7, 83, -62, -41, 90, -20, -77, 71, 28, -91, 33, 69, -79, -15, 90, -44, -59, 84, 2, -86, 56, 48, -88, 11, 81, -65, -37, 90, -24, -73, 73, 24, -90, 37, 65, -81, -11, 88, -48, -56, 86, -2, -84, 59, 44, -90, 15, 79, -69, -33, 91, -28, -71, 77, 20, -90, 41, 62, -83, -7, 87, -52, }, + { 50, -89, 18, 75, -75, -18, 89, -50, -50, 89, -18, -75, 75, 18, -89, 50, 50, -89, 18, 75, -75, -18, 89, -50, -50, 89, -18, -75, 75, 18, -89, 50, 50, -89, 18, 75, -75, -18, 89, -50, -50, 89, -18, -75, 75, 18, -89, 50, 50, -89, 18, 75, -75, -18, 89, -50, -50, 89, -18, -75, 75, 18, -89, 50, }, + { 48, -90, 28, 65, -84, 7, 79, -73, -15, 87, -59, -37, 91, -41, -56, 88, -20, -71, 81, 2, -83, 69, 24, -90, 52, 44, -90, 33, 62, -86, 11, 77, -77, -11, 86, -62, -33, 90, -44, -52, 90, -24, -69, 83, -2, -81, 71, 20, -88, 56, 41, -91, 37, 59, -87, 15, 73, -79, -7, 84, -65, -28, 90, -48, }, + { 46, -90, 38, 54, -90, 31, 61, -88, 22, 67, -85, 13, 73, -82, 4, 78, -78, -4, 82, -73, -13, 85, -67, -22, 88, -61, -31, 90, -54, -38, 90, -46, -46, 90, -38, -54, 90, -31, -61, 88, -22, -67, 85, -13, -73, 82, -4, -78, 78, 4, -82, 73, 13, -85, 67, 22, -88, 61, 31, -90, 54, 38, -90, 46, }, + { 44, -91, 48, 41, -90, 52, 37, -90, 56, 33, -90, 59, 28, -88, 62, 24, -87, 65, 20, -86, 69, 15, -84, 71, 11, -83, 73, 7, -81, 77, 2, -79, 79, -2, -77, 81, -7, -73, 83, -11, -71, 84, -15, -69, 86, -20, -65, 87, -24, -62, 88, -28, -59, 90, -33, -56, 90, -37, -52, 90, -41, -48, 91, -44, }, + { 43, -90, 57, 25, -87, 70, 9, -80, 80, -9, -70, 87, -25, -57, 90, -43, -43, 90, -57, -25, 87, -70, -9, 80, -80, 9, 70, -87, 25, 57, -90, 43, 43, -90, 57, 25, -87, 70, 9, -80, 80, -9, -70, 87, -25, -57, 90, -43, -43, 90, -57, -25, 87, -70, -9, 80, -80, 9, 70, -87, 25, 57, -90, 43, }, + { 41, -90, 65, 11, -79, 83, -20, -59, 90, -48, -33, 87, -71, -2, 73, -86, 28, 52, -91, 56, 24, -84, 77, -7, -69, 88, -37, -44, 90, -62, -15, 81, -81, 15, 62, -90, 44, 37, -88, 69, 7, -77, 84, -24, -56, 91, -52, -28, 86, -73, 2, 71, -87, 33, 48, -90, 59, 20, -83, 79, -11, -65, 90, -41, }, + { 38, -88, 73, -4, -67, 90, -46, -31, 85, -78, 13, 61, -90, 54, 22, -82, 82, -22, -54, 90, -61, -13, 78, -85, 31, 46, -90, 67, 4, -73, 88, -38, -38, 88, -73, 4, 67, -90, 46, 31, -85, 78, -13, -61, 90, -54, -22, 82, -82, 22, 54, -90, 61, 13, -78, 85, -31, -46, 90, -67, -4, 73, -88, 38, }, + { 37, -86, 79, -20, -52, 90, -69, 2, 65, -90, 56, 15, -77, 87, -41, -33, 84, -81, 24, 48, -90, 71, -7, -62, 91, -59, -11, 73, -88, 44, 28, -83, 83, -28, -44, 88, -73, 11, 59, -91, 62, 7, -71, 90, -48, -24, 81, -84, 33, 41, -87, 77, -15, -56, 90, -65, -2, 69, -90, 52, 20, -79, 86, -37, }, + { 36, -83, 83, -36, -36, 83, -83, 36, 36, -83, 83, -36, -36, 83, -83, 36, 36, -83, 83, -36, -36, 83, -83, 36, 36, -83, 83, -36, -36, 83, -83, 36, 36, -83, 83, -36, -36, 83, -83, 36, 36, -83, 83, -36, -36, 83, -83, 36, 36, -83, 83, -36, -36, 83, -83, 36, 36, -83, 83, -36, -36, 83, -83, 36, }, + { 33, -81, 87, -48, -15, 71, -90, 62, -2, -59, 90, -73, 20, 44, -86, 83, -37, -28, 79, -88, 52, 11, -69, 91, -65, 7, 56, -90, 77, -24, -41, 84, -84, 41, 24, -77, 90, -56, -7, 65, -91, 69, -11, -52, 88, -79, 28, 37, -83, 86, -44, -20, 73, -90, 59, 2, -62, 90, -71, 15, 48, -87, 81, -33, }, + { 31, -78, 90, -61, 4, 54, -88, 82, -38, -22, 73, -90, 67, -13, -46, 85, -85, 46, 13, -67, 90, -73, 22, 38, -82, 88, -54, -4, 61, -90, 78, -31, -31, 78, -90, 61, -4, -54, 88, -82, 38, 22, -73, 90, -67, 13, 46, -85, 85, -46, -13, 67, -90, 73, -22, -38, 82, -88, 54, 4, -61, 90, -78, 31, }, + { 28, -73, 91, -71, 24, 33, -77, 90, -69, 20, 37, -79, 90, -65, 15, 41, -81, 90, -62, 11, 44, -83, 88, -59, 7, 48, -84, 87, -56, 2, 52, -86, 86, -52, -2, 56, -87, 84, -48, -7, 59, -88, 83, -44, -11, 62, -90, 81, -41, -15, 65, -90, 79, -37, -20, 69, -90, 77, -33, -24, 71, -91, 73, -28, }, + { 25, -70, 90, -80, 43, 9, -57, 87, -87, 57, -9, -43, 80, -90, 70, -25, -25, 70, -90, 80, -43, -9, 57, -87, 87, -57, 9, 43, -80, 90, -70, 25, 25, -70, 90, -80, 43, 9, -57, 87, -87, 57, -9, -43, 80, -90, 70, -25, -25, 70, -90, 80, -43, -9, 57, -87, 87, -57, 9, 43, -80, 90, -70, 25, }, + { 24, -65, 88, -86, 59, -15, -33, 71, -90, 83, -52, 7, 41, -77, 91, -79, 44, 2, -48, 81, -90, 73, -37, -11, 56, -84, 90, -69, 28, 20, -62, 87, -87, 62, -20, -28, 69, -90, 84, -56, 11, 37, -73, 90, -81, 48, -2, -44, 79, -91, 77, -41, -7, 52, -83, 90, -71, 33, 15, -59, 86, -88, 65, -24, }, + { 22, -61, 85, -90, 73, -38, -4, 46, -78, 90, -82, 54, -13, -31, 67, -88, 88, -67, 31, 13, -54, 82, -90, 78, -46, 4, 38, -73, 90, -85, 61, -22, -22, 61, -85, 90, -73, 38, 4, -46, 78, -90, 82, -54, 13, 31, -67, 88, -88, 67, -31, -13, 54, -82, 90, -78, 46, -4, -38, 73, -90, 85, -61, 22, }, + { 20, -56, 81, -91, 83, -59, 24, 15, -52, 79, -90, 84, -62, 28, 11, -48, 77, -90, 86, -65, 33, 7, -44, 73, -90, 87, -69, 37, 2, -41, 71, -88, 88, -71, 41, -2, -37, 69, -87, 90, -73, 44, -7, -33, 65, -86, 90, -77, 48, -11, -28, 62, -84, 90, -79, 52, -15, -24, 59, -83, 91, -81, 56, -20, }, + { 18, -50, 75, -89, 89, -75, 50, -18, -18, 50, -75, 89, -89, 75, -50, 18, 18, -50, 75, -89, 89, -75, 50, -18, -18, 50, -75, 89, -89, 75, -50, 18, 18, -50, 75, -89, 89, -75, 50, -18, -18, 50, -75, 89, -89, 75, -50, 18, 18, -50, 75, -89, 89, -75, 50, -18, -18, 50, -75, 89, -89, 75, -50, 18, }, + { 15, -44, 69, -84, 91, -86, 71, -48, 20, 11, -41, 65, -83, 90, -87, 73, -52, 24, 7, -37, 62, -81, 90, -88, 77, -56, 28, 2, -33, 59, -79, 90, -90, 79, -59, 33, -2, -28, 56, -77, 88, -90, 81, -62, 37, -7, -24, 52, -73, 87, -90, 83, -65, 41, -11, -20, 48, -71, 86, -91, 84, -69, 44, -15, }, + { 13, -38, 61, -78, 88, -90, 85, -73, 54, -31, 4, 22, -46, 67, -82, 90, -90, 82, -67, 46, -22, -4, 31, -54, 73, -85, 90, -88, 78, -61, 38, -13, -13, 38, -61, 78, -88, 90, -85, 73, -54, 31, -4, -22, 46, -67, 82, -90, 90, -82, 67, -46, 22, 4, -31, 54, -73, 85, -90, 88, -78, 61, -38, 13, }, + { 11, -33, 52, -69, 81, -88, 91, -87, 79, -65, 48, -28, 7, 15, -37, 56, -71, 83, -90, 90, -86, 77, -62, 44, -24, 2, 20, -41, 59, -73, 84, -90, 90, -84, 73, -59, 41, -20, -2, 24, -44, 62, -77, 86, -90, 90, -83, 71, -56, 37, -15, -7, 28, -48, 65, -79, 87, -91, 88, -81, 69, -52, 33, -11, }, + { 9, -25, 43, -57, 70, -80, 87, -90, 90, -87, 80, -70, 57, -43, 25, -9, -9, 25, -43, 57, -70, 80, -87, 90, -90, 87, -80, 70, -57, 43, -25, 9, 9, -25, 43, -57, 70, -80, 87, -90, 90, -87, 80, -70, 57, -43, 25, -9, -9, 25, -43, 57, -70, 80, -87, 90, -90, 87, -80, 70, -57, 43, -25, 9, }, + { 7, -20, 33, -44, 56, -65, 73, -81, 86, -90, 91, -90, 87, -83, 77, -69, 59, -48, 37, -24, 11, 2, -15, 28, -41, 52, -62, 71, -79, 84, -88, 90, -90, 88, -84, 79, -71, 62, -52, 41, -28, 15, -2, -11, 24, -37, 48, -59, 69, -77, 83, -87, 90, -91, 90, -86, 81, -73, 65, -56, 44, -33, 20, -7, }, + { 4, -13, 22, -31, 38, -46, 54, -61, 67, -73, 78, -82, 85, -88, 90, -90, 90, -90, 88, -85, 82, -78, 73, -67, 61, -54, 46, -38, 31, -22, 13, -4, -4, 13, -22, 31, -38, 46, -54, 61, -67, 73, -78, 82, -85, 88, -90, 90, -90, 90, -88, 85, -82, 78, -73, 67, -61, 54, -46, 38, -31, 22, -13, 4, }, + { 2, -7, 11, -15, 20, -24, 28, -33, 37, -41, 44, -48, 52, -56, 59, -62, 65, -69, 71, -73, 77, -79, 81, -83, 84, -86, 87, -88, 90, -90, 90, -91, 91, -90, 90, -90, 88, -87, 86, -84, 83, -81, 79, -77, 73, -71, 69, -65, 62, -59, 56, -52, 48, -44, 41, -37, 33, -28, 24, -20, 15, -11, 7, -2, }, }; const int16_t kvz_g_dst_4_t[4][4] = @@ -192,155 +192,153 @@ const int16_t kvz_g_dst_4_t[4][4] = const int16_t kvz_g_dct_2_t[2][2] = { - {256, 256, }, - {256, -256, }, + {64, 64, }, + {64, -64, }, }; const int16_t kvz_g_dct_4_t[4][4] = { - {256, 334, 256, 139, }, - {256, 139, -256, -334, }, - {256, -139, -256, 334, }, - {256, -334, 256, -139, }, + { 64, 83, 64, 36, }, + { 64, 36, -64, -83, }, + { 64, -36, -64, 83, }, + { 64, -83, 64, -36 } }; const int16_t kvz_g_dct_8_t[8][8] = { - {256, 355, 334, 301, 256, 201, 139, 71, }, - {256, 301, 139, -71, -256, -355, -334, -201, }, - {256, 201, -139, -355, -256, 71, 334, 301, }, - {256, 71, -334, -201, 256, 301, -139, -355, }, - {256, -71, -334, 201, 256, -301, -139, 355, }, - {256, -201, -139, 355, -256, -71, 334, -301, }, - {256, -301, 139, 71, -256, 355, -334, 201, }, - {256, -355, 334, -301, 256, -201, 139, -71, }, + { 64, 89, 83, 75, 64, 50, 36, 18, }, + { 64, 75, 36, -18, -64, -89, -83, -50, }, + { 64, 50, -36, -89, -64, 18, 83, 75, }, + { 64, 18, -83, -50, 64, 75, -36, -89, }, + { 64, -18, -83, 50, 64, -75, -36, 89, }, + { 64, -50, -36, 89, -64, -18, 83, -75, }, + { 64, -75, 36, 18, -64, 89, -83, 50, }, + { 64, -89, 83, -75, 64, -50, 36, -18 } }; const int16_t kvz_g_dct_16_t[16][16] = - { - {256, 360, 355, 346, 334, 319, 301, 280, 256, 230, 201, 171, 139, 105, 71, 35, }, - {256, 346, 301, 230, 139, 35, -71, -171, -256, -319, -355, -360, -334, -280, -201, -105, }, - {256, 319, 201, 35, -139, -280, -355, -346, -256, -105, 71, 230, 334, 360, 301, 171, }, - {256, 280, 71, -171, -334, -346, -201, 35, 256, 360, 301, 105, -139, -319, -355, -230, }, - {256, 230, -71, -319, -334, -105, 201, 360, 256, -35, -301, -346, -139, 171, 355, 280, }, - {256, 171, -201, -360, -139, 230, 355, 105, -256, -346, -71, 280, 334, 35, -301, -319, }, - {256, 105, -301, -280, 139, 360, 71, -319, -256, 171, 355, 35, -334, -230, 201, 346, }, - {256, 35, -355, -105, 334, 171, -301, -230, 256, 280, -201, -319, 139, 346, -71, -360, }, - {256, -35, -355, 105, 334, -171, -301, 230, 256, -280, -201, 319, 139, -346, -71, 360, }, - {256, -105, -301, 280, 139, -360, 71, 319, -256, -171, 355, -35, -334, 230, 201, -346, }, - {256, -171, -201, 360, -139, -230, 355, -105, -256, 346, -71, -280, 334, -35, -301, 319, }, - {256, -230, -71, 319, -334, 105, 201, -360, 256, 35, -301, 346, -139, -171, 355, -280, }, - {256, -280, 71, 171, -334, 346, -201, -35, 256, -360, 301, -105, -139, 319, -355, 230, }, - {256, -319, 201, -35, -139, 280, -355, 346, -256, 105, 71, -230, 334, -360, 301, -171, }, - {256, -346, 301, -230, 139, -35, -71, 171, -256, 319, -355, 360, -334, 280, -201, 105, }, - {256, -360, 355, -346, 334, -319, 301, -280, 256, -230, 201, -171, 139, -105, 71, -35, }, + { 64, 90, 89, 87, 83, 80, 75, 70, 64, 57, 50, 43, 36, 25, 18, 9, }, + { 64, 87, 75, 57, 36, 9, -18, -43, -64, -80, -89, -90, -83, -70, -50, -25, }, + { 64, 80, 50, 9, -36, -70, -89, -87, -64, -25, 18, 57, 83, 90, 75, 43, }, + { 64, 70, 18, -43, -83, -87, -50, 9, 64, 90, 75, 25, -36, -80, -89, -57, }, + { 64, 57, -18, -80, -83, -25, 50, 90, 64, -9, -75, -87, -36, 43, 89, 70, }, + { 64, 43, -50, -90, -36, 57, 89, 25, -64, -87, -18, 70, 83, 9, -75, -80, }, + { 64, 25, -75, -70, 36, 90, 18, -80, -64, 43, 89, 9, -83, -57, 50, 87, }, + { 64, 9, -89, -25, 83, 43, -75, -57, 64, 70, -50, -80, 36, 87, -18, -90, }, + { 64, -9, -89, 25, 83, -43, -75, 57, 64, -70, -50, 80, 36, -87, -18, 90, }, + { 64, -25, -75, 70, 36, -90, 18, 80, -64, -43, 89, -9, -83, 57, 50, -87, }, + { 64, -43, -50, 90, -36, -57, 89, -25, -64, 87, -18, -70, 83, -9, -75, 80, }, + { 64, -57, -18, 80, -83, 25, 50, -90, 64, 9, -75, 87, -36, -43, 89, -70, }, + { 64, -70, 18, 43, -83, 87, -50, -9, 64, -90, 75, -25, -36, 80, -89, 57, }, + { 64, -80, 50, -9, -36, 70, -89, 87, -64, 25, 18, -57, 83, -90, 75, -43, }, + { 64, -87, 75, -57, 36, -9, -18, 43, -64, 80, -89, 90, -83, 70, -50, 25, }, + { 64, -90, 89, -87, 83, -80, 75, -70, 64, -57, 50, -43, 36, -25, 18, -9 } }; const int16_t kvz_g_dct_32_t[32][32] = { - {256, 362, 360, 358, 355, 351, 346, 341, 334, 327, 319, 311, 301, 291, 280, 268, 256, 243, 230, 216, 201, 186, 171, 155, 139, 122, 105, 88, 71, 53, 35, 18, }, - {256, 358, 346, 327, 301, 268, 230, 186, 139, 88, 35, -18, -71, -122, -171, -216, -256, -291, -319, -341, -355, -362, -360, -351, -334, -311, -280, -243, -201, -155, -105, -53, }, - {256, 351, 319, 268, 201, 122, 35, -53, -139, -216, -280, -327, -355, -362, -346, -311, -256, -186, -105, -18, 71, 155, 230, 291, 334, 358, 360, 341, 301, 243, 171, 88, }, - {256, 341, 280, 186, 71, -53, -171, -268, -334, -362, -346, -291, -201, -88, 35, 155, 256, 327, 360, 351, 301, 216, 105, -18, -139, -243, -319, -358, -355, -311, -230, -122, }, - {256, 327, 230, 88, -71, -216, -319, -362, -334, -243, -105, 53, 201, 311, 360, 341, 256, 122, -35, -186, -301, -358, -346, -268, -139, 18, 171, 291, 355, 351, 280, 155, }, - {256, 311, 171, -18, -201, -327, -360, -291, -139, 53, 230, 341, 355, 268, 105, -88, -256, -351, -346, -243, -71, 122, 280, 358, 334, 216, 35, -155, -301, -362, -319, -186, }, - {256, 291, 105, -122, -301, -362, -280, -88, 139, 311, 360, 268, 71, -155, -319, -358, -256, -53, 171, 327, 355, 243, 35, -186, -334, -351, -230, -18, 201, 341, 346, 216, }, - {256, 268, 35, -216, -355, -311, -105, 155, 334, 341, 171, -88, -301, -358, -230, 18, 256, 362, 280, 53, -201, -351, -319, -122, 139, 327, 346, 186, -71, -291, -360, -243, }, - {256, 243, -35, -291, -355, -186, 105, 327, 334, 122, -171, -351, -301, -53, 230, 362, 256, -18, -280, -358, -201, 88, 319, 341, 139, -155, -346, -311, -71, 216, 360, 268, }, - {256, 216, -105, -341, -301, -18, 280, 351, 139, -186, -360, -243, 71, 327, 319, 53, -256, -358, -171, 155, 355, 268, -35, -311, -334, -88, 230, 362, 201, -122, -346, -291, }, - {256, 186, -171, -362, -201, 155, 360, 216, -139, -358, -230, 122, 355, 243, -105, -351, -256, 88, 346, 268, -71, -341, -280, 53, 334, 291, -35, -327, -301, 18, 319, 311, }, - {256, 155, -230, -351, -71, 291, 319, -18, -334, -268, 105, 358, 201, -186, -360, -122, 256, 341, 35, -311, -301, 53, 346, 243, -139, -362, -171, 216, 355, 88, -280, -327, }, - {256, 122, -280, -311, 71, 358, 171, -243, -334, 18, 346, 216, -201, -351, -35, 327, 256, -155, -360, -88, 301, 291, -105, -362, -139, 268, 319, -53, -355, -186, 230, 341, }, - {256, 88, -319, -243, 201, 341, -35, -358, -139, 291, 280, -155, -355, -18, 346, 186, -256, -311, 105, 362, 71, -327, -230, 216, 334, -53, -360, -122, 301, 268, -171, -351, }, - {256, 53, -346, -155, 301, 243, -230, -311, 139, 351, -35, -362, -71, 341, 171, -291, -256, 216, 319, -122, -355, 18, 360, 88, -334, -186, 280, 268, -201, -327, 105, 358, }, - {256, 18, -360, -53, 355, 88, -346, -122, 334, 155, -319, -186, 301, 216, -280, -243, 256, 268, -230, -291, 201, 311, -171, -327, 139, 341, -105, -351, 71, 358, -35, -362, }, - {256, -18, -360, 53, 355, -88, -346, 122, 334, -155, -319, 186, 301, -216, -280, 243, 256, -268, -230, 291, 201, -311, -171, 327, 139, -341, -105, 351, 71, -358, -35, 362, }, - {256, -53, -346, 155, 301, -243, -230, 311, 139, -351, -35, 362, -71, -341, 171, 291, -256, -216, 319, 122, -355, -18, 360, -88, -334, 186, 280, -268, -201, 327, 105, -358, }, - {256, -88, -319, 243, 201, -341, -35, 358, -139, -291, 280, 155, -355, 18, 346, -186, -256, 311, 105, -362, 71, 327, -230, -216, 334, 53, -360, 122, 301, -268, -171, 351, }, - {256, -122, -280, 311, 71, -358, 171, 243, -334, -18, 346, -216, -201, 351, -35, -327, 256, 155, -360, 88, 301, -291, -105, 362, -139, -268, 319, 53, -355, 186, 230, -341, }, - {256, -155, -230, 351, -71, -291, 319, 18, -334, 268, 105, -358, 201, 186, -360, 122, 256, -341, 35, 311, -301, -53, 346, -243, -139, 362, -171, -216, 355, -88, -280, 327, }, - {256, -186, -171, 362, -201, -155, 360, -216, -139, 358, -230, -122, 355, -243, -105, 351, -256, -88, 346, -268, -71, 341, -280, -53, 334, -291, -35, 327, -301, -18, 319, -311, }, - {256, -216, -105, 341, -301, 18, 280, -351, 139, 186, -360, 243, 71, -327, 319, -53, -256, 358, -171, -155, 355, -268, -35, 311, -334, 88, 230, -362, 201, 122, -346, 291, }, - {256, -243, -35, 291, -355, 186, 105, -327, 334, -122, -171, 351, -301, 53, 230, -362, 256, 18, -280, 358, -201, -88, 319, -341, 139, 155, -346, 311, -71, -216, 360, -268, }, - {256, -268, 35, 216, -355, 311, -105, -155, 334, -341, 171, 88, -301, 358, -230, -18, 256, -362, 280, -53, -201, 351, -319, 122, 139, -327, 346, -186, -71, 291, -360, 243, }, - {256, -291, 105, 122, -301, 362, -280, 88, 139, -311, 360, -268, 71, 155, -319, 358, -256, 53, 171, -327, 355, -243, 35, 186, -334, 351, -230, 18, 201, -341, 346, -216, }, - {256, -311, 171, 18, -201, 327, -360, 291, -139, -53, 230, -341, 355, -268, 105, 88, -256, 351, -346, 243, -71, -122, 280, -358, 334, -216, 35, 155, -301, 362, -319, 186, }, - {256, -327, 230, -88, -71, 216, -319, 362, -334, 243, -105, -53, 201, -311, 360, -341, 256, -122, -35, 186, -301, 358, -346, 268, -139, -18, 171, -291, 355, -351, 280, -155, }, - {256, -341, 280, -186, 71, 53, -171, 268, -334, 362, -346, 291, -201, 88, 35, -155, 256, -327, 360, -351, 301, -216, 105, 18, -139, 243, -319, 358, -355, 311, -230, 122, }, - {256, -351, 319, -268, 201, -122, 35, 53, -139, 216, -280, 327, -355, 362, -346, 311, -256, 186, -105, 18, 71, -155, 230, -291, 334, -358, 360, -341, 301, -243, 171, -88, }, - {256, -358, 346, -327, 301, -268, 230, -186, 139, -88, 35, 18, -71, 122, -171, 216, -256, 291, -319, 341, -355, 362, -360, 351, -334, 311, -280, 243, -201, 155, -105, 53, }, - {256, -362, 360, -358, 355, -351, 346, -341, 334, -327, 319, -311, 301, -291, 280, -268, 256, -243, 230, -216, 201, -186, 171, -155, 139, -122, 105, -88, 71, -53, 35, -18, }, + { 64, 90, 90, 90, 89, 88, 87, 85, 83, 82, 80, 78, 75, 73, 70, 67, 64, 61, 57, 54, 50, 46, 43, 38, 36, 31, 25, 22, 18, 13, 9, 4, }, + { 64, 90, 87, 82, 75, 67, 57, 46, 36, 22, 9, -4, -18, -31, -43, -54, -64, -73, -80, -85, -89, -90, -90, -88, -83, -78, -70, -61, -50, -38, -25, -13, }, + { 64, 88, 80, 67, 50, 31, 9, -13, -36, -54, -70, -82, -89, -90, -87, -78, -64, -46, -25, -4, 18, 38, 57, 73, 83, 90, 90, 85, 75, 61, 43, 22, }, + { 64, 85, 70, 46, 18, -13, -43, -67, -83, -90, -87, -73, -50, -22, 9, 38, 64, 82, 90, 88, 75, 54, 25, -4, -36, -61, -80, -90, -89, -78, -57, -31, }, + { 64, 82, 57, 22, -18, -54, -80, -90, -83, -61, -25, 13, 50, 78, 90, 85, 64, 31, -9, -46, -75, -90, -87, -67, -36, 4, 43, 73, 89, 88, 70, 38, }, + { 64, 78, 43, -4, -50, -82, -90, -73, -36, 13, 57, 85, 89, 67, 25, -22, -64, -88, -87, -61, -18, 31, 70, 90, 83, 54, 9, -38, -75, -90, -80, -46, }, + { 64, 73, 25, -31, -75, -90, -70, -22, 36, 78, 90, 67, 18, -38, -80, -90, -64, -13, 43, 82, 89, 61, 9, -46, -83, -88, -57, -4, 50, 85, 87, 54, }, + { 64, 67, 9, -54, -89, -78, -25, 38, 83, 85, 43, -22, -75, -90, -57, 4, 64, 90, 70, 13, -50, -88, -80, -31, 36, 82, 87, 46, -18, -73, -90, -61, }, + { 64, 61, -9, -73, -89, -46, 25, 82, 83, 31, -43, -88, -75, -13, 57, 90, 64, -4, -70, -90, -50, 22, 80, 85, 36, -38, -87, -78, -18, 54, 90, 67, }, + { 64, 54, -25, -85, -75, -4, 70, 88, 36, -46, -90, -61, 18, 82, 80, 13, -64, -90, -43, 38, 89, 67, -9, -78, -83, -22, 57, 90, 50, -31, -87, -73, }, + { 64, 46, -43, -90, -50, 38, 90, 54, -36, -90, -57, 31, 89, 61, -25, -88, -64, 22, 87, 67, -18, -85, -70, 13, 83, 73, -9, -82, -75, 4, 80, 78, }, + { 64, 38, -57, -88, -18, 73, 80, -4, -83, -67, 25, 90, 50, -46, -90, -31, 64, 85, 9, -78, -75, 13, 87, 61, -36, -90, -43, 54, 89, 22, -70, -82, }, + { 64, 31, -70, -78, 18, 90, 43, -61, -83, 4, 87, 54, -50, -88, -9, 82, 64, -38, -90, -22, 75, 73, -25, -90, -36, 67, 80, -13, -89, -46, 57, 85, }, + { 64, 22, -80, -61, 50, 85, -9, -90, -36, 73, 70, -38, -89, -4, 87, 46, -64, -78, 25, 90, 18, -82, -57, 54, 83, -13, -90, -31, 75, 67, -43, -88, }, + { 64, 13, -87, -38, 75, 61, -57, -78, 36, 88, -9, -90, -18, 85, 43, -73, -64, 54, 80, -31, -89, 4, 90, 22, -83, -46, 70, 67, -50, -82, 25, 90, }, + { 64, 4, -90, -13, 89, 22, -87, -31, 83, 38, -80, -46, 75, 54, -70, -61, 64, 67, -57, -73, 50, 78, -43, -82, 36, 85, -25, -88, 18, 90, -9, -90, }, + { 64, -4, -90, 13, 89, -22, -87, 31, 83, -38, -80, 46, 75, -54, -70, 61, 64, -67, -57, 73, 50, -78, -43, 82, 36, -85, -25, 88, 18, -90, -9, 90, }, + { 64, -13, -87, 38, 75, -61, -57, 78, 36, -88, -9, 90, -18, -85, 43, 73, -64, -54, 80, 31, -89, -4, 90, -22, -83, 46, 70, -67, -50, 82, 25, -90, }, + { 64, -22, -80, 61, 50, -85, -9, 90, -36, -73, 70, 38, -89, 4, 87, -46, -64, 78, 25, -90, 18, 82, -57, -54, 83, 13, -90, 31, 75, -67, -43, 88, }, + { 64, -31, -70, 78, 18, -90, 43, 61, -83, -4, 87, -54, -50, 88, -9, -82, 64, 38, -90, 22, 75, -73, -25, 90, -36, -67, 80, 13, -89, 46, 57, -85, }, + { 64, -38, -57, 88, -18, -73, 80, 4, -83, 67, 25, -90, 50, 46, -90, 31, 64, -85, 9, 78, -75, -13, 87, -61, -36, 90, -43, -54, 89, -22, -70, 82, }, + { 64, -46, -43, 90, -50, -38, 90, -54, -36, 90, -57, -31, 89, -61, -25, 88, -64, -22, 87, -67, -18, 85, -70, -13, 83, -73, -9, 82, -75, -4, 80, -78, }, + { 64, -54, -25, 85, -75, 4, 70, -88, 36, 46, -90, 61, 18, -82, 80, -13, -64, 90, -43, -38, 89, -67, -9, 78, -83, 22, 57, -90, 50, 31, -87, 73, }, + { 64, -61, -9, 73, -89, 46, 25, -82, 83, -31, -43, 88, -75, 13, 57, -90, 64, 4, -70, 90, -50, -22, 80, -85, 36, 38, -87, 78, -18, -54, 90, -67, }, + { 64, -67, 9, 54, -89, 78, -25, -38, 83, -85, 43, 22, -75, 90, -57, -4, 64, -90, 70, -13, -50, 88, -80, 31, 36, -82, 87, -46, -18, 73, -90, 61, }, + { 64, -73, 25, 31, -75, 90, -70, 22, 36, -78, 90, -67, 18, 38, -80, 90, -64, 13, 43, -82, 89, -61, 9, 46, -83, 88, -57, 4, 50, -85, 87, -54, }, + { 64, -78, 43, 4, -50, 82, -90, 73, -36, -13, 57, -85, 89, -67, 25, 22, -64, 88, -87, 61, -18, -31, 70, -90, 83, -54, 9, 38, -75, 90, -80, 46, }, + { 64, -82, 57, -22, -18, 54, -80, 90, -83, 61, -25, -13, 50, -78, 90, -85, 64, -31, -9, 46, -75, 90, -87, 67, -36, -4, 43, -73, 89, -88, 70, -38, }, + { 64, -85, 70, -46, 18, 13, -43, 67, -83, 90, -87, 73, -50, 22, 9, -38, 64, -82, 90, -88, 75, -54, 25, 4, -36, 61, -80, 90, -89, 78, -57, 31, }, + { 64, -88, 80, -67, 50, -31, 9, 13, -36, 54, -70, 82, -89, 90, -87, 78, -64, 46, -25, 4, 18, -38, 57, -73, 83, -90, 90, -85, 75, -61, 43, -22, }, + { 64, -90, 87, -82, 75, -67, 57, -46, 36, -22, 9, 4, -18, 31, -43, 54, -64, 73, -80, 85, -89, 90, -90, 88, -83, 78, -70, 61, -50, 38, -25, 13, }, + { 64, -90, 90, -90, 89, -88, 87, -85, 83, -82, 80, -78, 75, -73, 70, -67, 64, -61, 57, -54, 50, -46, 43, -38, 36, -31, 25, -22, 18, -13, 9, -4 } }; const int16_t kvz_g_dct_64_t[64][64] = { - {256, 362, 362, 361, 360, 359, 358, 357, 355, 353, 351, 349, 346, 344, 341, 338, 334, 331, 327, 323, 319, 315, 311, 306, 301, 296, 291, 285, 280, 274, 268, 262, 256, 250, 243, 236, 230, 223, 216, 208, 201, 194, 186, 178, 171, 163, 155, 147, 139, 130, 122, 114, 105, 97, 88, 79, 71, 62, 53, 44, 35, 27, 18, 9, }, - {256, 361, 358, 353, 346, 338, 327, 315, 301, 285, 268, 250, 230, 208, 186, 163, 139, 114, 88, 62, 35, 9, -18, -44, -71, -97, -122, -147, -171, -194, -216, -236, -256, -274, -291, -306, -319, -331, -341, -349, -355, -359, -362, -362, -360, -357, -351, -344, -334, -323, -311, -296, -280, -262, -243, -223, -201, -178, -155, -130, -105, -79, -53, -27, }, - {256, 359, 351, 338, 319, 296, 268, 236, 201, 163, 122, 79, 35, -9, -53, -97, -139, -178, -216, -250, -280, -306, -327, -344, -355, -361, -362, -357, -346, -331, -311, -285, -256, -223, -186, -147, -105, -62, -18, 27, 71, 114, 155, 194, 230, 262, 291, 315, 334, 349, 358, 362, 360, 353, 341, 323, 301, 274, 243, 208, 171, 130, 88, 44, }, - {256, 357, 341, 315, 280, 236, 186, 130, 71, 9, -53, -114, -171, -223, -268, -306, -334, -353, -362, -359, -346, -323, -291, -250, -201, -147, -88, -27, 35, 97, 155, 208, 256, 296, 327, 349, 360, 361, 351, 331, 301, 262, 216, 163, 105, 44, -18, -79, -139, -194, -243, -285, -319, -344, -358, -362, -355, -338, -311, -274, -230, -178, -122, -62, }, - {256, 353, 327, 285, 230, 163, 88, 9, -71, -147, -216, -274, -319, -349, -362, -357, -334, -296, -243, -178, -105, -27, 53, 130, 201, 262, 311, 344, 360, 359, 341, 306, 256, 194, 122, 44, -35, -114, -186, -250, -301, -338, -358, -361, -346, -315, -268, -208, -139, -62, 18, 97, 171, 236, 291, 331, 355, 362, 351, 323, 280, 223, 155, 79, }, - {256, 349, 311, 250, 171, 79, -18, -114, -201, -274, -327, -357, -360, -338, -291, -223, -139, -44, 53, 147, 230, 296, 341, 361, 355, 323, 268, 194, 105, 9, -88, -178, -256, -315, -351, -362, -346, -306, -243, -163, -71, 27, 122, 208, 280, 331, 358, 359, 334, 285, 216, 130, 35, -62, -155, -236, -301, -344, -362, -353, -319, -262, -186, -97, }, - {256, 344, 291, 208, 105, -9, -122, -223, -301, -349, -362, -338, -280, -194, -88, 27, 139, 236, 311, 353, 360, 331, 268, 178, 71, -44, -155, -250, -319, -357, -358, -323, -256, -163, -53, 62, 171, 262, 327, 359, 355, 315, 243, 147, 35, -79, -186, -274, -334, -361, -351, -306, -230, -130, -18, 97, 201, 285, 341, 362, 346, 296, 216, 114, }, - {256, 338, 268, 163, 35, -97, -216, -306, -355, -357, -311, -223, -105, 27, 155, 262, 334, 362, 341, 274, 171, 44, -88, -208, -301, -353, -358, -315, -230, -114, 18, 147, 256, 331, 362, 344, 280, 178, 53, -79, -201, -296, -351, -359, -319, -236, -122, 9, 139, 250, 327, 361, 346, 285, 186, 62, -71, -194, -291, -349, -360, -323, -243, -130, }, - {256, 331, 243, 114, -35, -178, -291, -353, -355, -296, -186, -44, 105, 236, 327, 362, 334, 250, 122, -27, -171, -285, -351, -357, -301, -194, -53, 97, 230, 323, 362, 338, 256, 130, -18, -163, -280, -349, -358, -306, -201, -62, 88, 223, 319, 361, 341, 262, 139, -9, -155, -274, -346, -359, -311, -208, -71, 79, 216, 315, 360, 344, 268, 147, }, - {256, 323, 216, 62, -105, -250, -341, -359, -301, -178, -18, 147, 280, 353, 351, 274, 139, -27, -186, -306, -360, -338, -243, -97, 71, 223, 327, 362, 319, 208, 53, -114, -256, -344, -358, -296, -171, -9, 155, 285, 355, 349, 268, 130, -35, -194, -311, -361, -334, -236, -88, 79, 230, 331, 362, 315, 201, 44, -122, -262, -346, -357, -291, -163, }, - {256, 315, 186, 9, -171, -306, -362, -323, -201, -27, 155, 296, 360, 331, 216, 44, -139, -285, -358, -338, -230, -62, 122, 274, 355, 344, 243, 79, -105, -262, -351, -349, -256, -97, 88, 250, 346, 353, 268, 114, -71, -236, -341, -357, -280, -130, 53, 223, 334, 359, 291, 147, -35, -208, -327, -361, -301, -163, 18, 194, 319, 362, 311, 178, }, - {256, 306, 155, -44, -230, -344, -351, -250, -71, 130, 291, 361, 319, 178, -18, -208, -334, -357, -268, -97, 105, 274, 358, 331, 201, 9, -186, -323, -360, -285, -122, 79, 256, 353, 341, 223, 35, -163, -311, -362, -301, -147, 53, 236, 346, 349, 243, 62, -139, -296, -362, -315, -171, 27, 216, 338, 355, 262, 88, -114, -280, -359, -327, -194, }, - {256, 296, 122, -97, -280, -361, -311, -147, 71, 262, 358, 323, 171, -44, -243, -353, -334, -194, 18, 223, 346, 344, 216, 9, -201, -338, -351, -236, -35, 178, 327, 357, 256, 62, -155, -315, -360, -274, -88, 130, 301, 362, 291, 114, -105, -285, -362, -306, -139, 79, 268, 359, 319, 163, -53, -250, -355, -331, -186, 27, 230, 349, 341, 208, }, - {256, 285, 88, -147, -319, -357, -243, -27, 201, 344, 341, 194, -35, -250, -358, -315, -139, 97, 291, 362, 280, 79, -155, -323, -355, -236, -18, 208, 346, 338, 186, -44, -256, -359, -311, -130, 105, 296, 362, 274, 71, -163, -327, -353, -230, -9, 216, 349, 334, 178, -53, -262, -360, -306, -122, 114, 301, 361, 268, 62, -171, -331, -351, -223, }, - {256, 274, 53, -194, -346, -331, -155, 97, 301, 359, 243, 9, -230, -357, -311, -114, 139, 323, 351, 208, -35, -262, -362, -285, -71, 178, 341, 338, 171, -79, -291, -361, -256, -27, 216, 353, 319, 130, -122, -315, -355, -223, 18, 250, 360, 296, 88, -163, -334, -344, -186, 62, 280, 362, 268, 44, -201, -349, -327, -147, 105, 306, 358, 236, }, - {256, 262, 18, -236, -360, -285, -53, 208, 355, 306, 88, -178, -346, -323, -122, 147, 334, 338, 155, -114, -319, -349, -186, 79, 301, 357, 216, -44, -280, -361, -243, 9, 256, 362, 268, 27, -230, -359, -291, -62, 201, 353, 311, 97, -171, -344, -327, -130, 139, 331, 341, 163, -105, -315, -351, -194, 71, 296, 358, 223, -35, -274, -362, -250, }, - {256, 250, -18, -274, -360, -223, 53, 296, 355, 194, -88, -315, -346, -163, 122, 331, 334, 130, -155, -344, -319, -97, 186, 353, 301, 62, -216, -359, -280, -27, 243, 362, 256, -9, -268, -361, -230, 44, 291, 357, 201, -79, -311, -349, -171, 114, 327, 338, 139, -147, -341, -323, -105, 178, 351, 306, 71, -208, -358, -285, -35, 236, 362, 262, }, - {256, 236, -53, -306, -346, -147, 155, 349, 301, 44, -243, -362, -230, 62, 311, 344, 139, -163, -351, -296, -35, 250, 362, 223, -71, -315, -341, -130, 171, 353, 291, 27, -256, -361, -216, 79, 319, 338, 122, -178, -355, -285, -18, 262, 360, 208, -88, -323, -334, -114, 186, 357, 280, 9, -268, -359, -201, 97, 327, 331, 105, -194, -358, -274, }, - {256, 223, -88, -331, -319, -62, 243, 361, 201, -114, -341, -306, -35, 262, 358, 178, -139, -349, -291, -9, 280, 353, 155, -163, -355, -274, 18, 296, 346, 130, -186, -359, -256, 44, 311, 338, 105, -208, -362, -236, 71, 323, 327, 79, -230, -362, -216, 97, 334, 315, 53, -250, -360, -194, 122, 344, 301, 27, -268, -357, -171, 147, 351, 285, }, - {256, 208, -122, -349, -280, 27, 311, 331, 71, -250, -358, -163, 171, 359, 243, -79, -334, -306, -18, 285, 346, 114, -216, -362, -201, 130, 351, 274, -35, -315, -327, -62, 256, 357, 155, -178, -360, -236, 88, 338, 301, 9, -291, -344, -105, 223, 362, 194, -139, -353, -268, 44, 319, 323, 53, -262, -355, -147, 186, 361, 230, -97, -341, -296, }, - {256, 194, -155, -359, -230, 114, 351, 262, -71, -338, -291, 27, 319, 315, 18, -296, -334, -62, 268, 349, 105, -236, -358, -147, 201, 362, 186, -163, -360, -223, 122, 353, 256, -79, -341, -285, 35, 323, 311, 9, -301, -331, -53, 274, 346, 97, -243, -357, -139, 208, 362, 178, -171, -361, -216, 130, 355, 250, -88, -344, -280, 44, 327, 306, }, - {256, 178, -186, -362, -171, 194, 362, 163, -201, -361, -155, 208, 360, 147, -216, -359, -139, 223, 358, 130, -230, -357, -122, 236, 355, 114, -243, -353, -105, 250, 351, 97, -256, -349, -88, 262, 346, 79, -268, -344, -71, 274, 341, 62, -280, -338, -53, 285, 334, 44, -291, -331, -35, 296, 327, 27, -301, -323, -18, 306, 319, 9, -311, -315, }, - {256, 163, -216, -357, -105, 262, 341, 44, -301, -315, 18, 331, 280, -79, -351, -236, 139, 361, 186, -194, -360, -130, 243, 349, 71, -285, -327, -9, 319, 296, -53, -344, -256, 114, 358, 208, -171, -362, -155, 223, 355, 97, -268, -338, -35, 306, 311, -27, -334, -274, 88, 353, 230, -147, -362, -178, 201, 359, 122, -250, -346, -62, 291, 323, }, - {256, 147, -243, -344, -35, 315, 291, -79, -355, -208, 186, 359, 105, -274, -327, 9, 334, 262, -122, -361, -171, 223, 351, 62, -301, -306, 53, 349, 230, -163, -362, -130, 256, 338, 18, -323, -280, 97, 358, 194, -201, -357, -88, 285, 319, -27, -341, -250, 139, 362, 155, -236, -346, -44, 311, 296, -71, -353, -216, 178, 360, 114, -268, -331, }, - {256, 130, -268, -323, 35, 349, 216, -194, -355, -62, 311, 285, -105, -361, -155, 250, 334, -9, -341, -236, 171, 359, 88, -296, -301, 79, 358, 178, -230, -344, -18, 331, 256, -147, -362, -114, 280, 315, -53, -353, -201, 208, 351, 44, -319, -274, 122, 362, 139, -262, -327, 27, 346, 223, -186, -357, -71, 306, 291, -97, -360, -163, 243, 338, }, - {256, 114, -291, -296, 105, 362, 122, -285, -301, 97, 362, 130, -280, -306, 88, 361, 139, -274, -311, 79, 360, 147, -268, -315, 71, 359, 155, -262, -319, 62, 358, 163, -256, -323, 53, 357, 171, -250, -327, 44, 355, 178, -243, -331, 35, 353, 186, -236, -334, 27, 351, 194, -230, -338, 18, 349, 201, -223, -341, 9, 346, 208, -216, -344, }, - {256, 97, -311, -262, 171, 353, 18, -344, -201, 236, 327, -62, -360, -130, 291, 285, -139, -359, -53, 331, 230, -208, -341, 27, 355, 163, -268, -306, 105, 362, 88, -315, -256, 178, 351, 9, -346, -194, 243, 323, -71, -361, -122, 296, 280, -147, -358, -44, 334, 223, -216, -338, 35, 357, 155, -274, -301, 114, 362, 79, -319, -250, 186, 349, }, - {256, 79, -327, -223, 230, 323, -88, -362, -71, 331, 216, -236, -319, 97, 362, 62, -334, -208, 243, 315, -105, -361, -53, 338, 201, -250, -311, 114, 360, 44, -341, -194, 256, 306, -122, -359, -35, 344, 186, -262, -301, 130, 358, 27, -346, -178, 268, 296, -139, -357, -18, 349, 171, -274, -291, 147, 355, 9, -351, -163, 280, 285, -155, -353, }, - {256, 62, -341, -178, 280, 274, -186, -338, 71, 362, 53, -344, -171, 285, 268, -194, -334, 79, 362, 44, -346, -163, 291, 262, -201, -331, 88, 361, 35, -349, -155, 296, 256, -208, -327, 97, 360, 27, -351, -147, 301, 250, -216, -323, 105, 359, 18, -353, -139, 306, 243, -223, -319, 114, 358, 9, -355, -130, 311, 236, -230, -315, 122, 357, }, - {256, 44, -351, -130, 319, 208, -268, -274, 201, 323, -122, -353, 35, 362, 53, -349, -139, 315, 216, -262, -280, 194, 327, -114, -355, 27, 362, 62, -346, -147, 311, 223, -256, -285, 186, 331, -105, -357, 18, 361, 71, -344, -155, 306, 230, -250, -291, 178, 334, -97, -358, 9, 360, 79, -341, -163, 301, 236, -243, -296, 171, 338, -88, -359, }, - {256, 27, -358, -79, 346, 130, -327, -178, 301, 223, -268, -262, 230, 296, -186, -323, 139, 344, -88, -357, 35, 362, 18, -359, -71, 349, 122, -331, -171, 306, 216, -274, -256, 236, 291, -194, -319, 147, 341, -97, -355, 44, 362, 9, -360, -62, 351, 114, -334, -163, 311, 208, -280, -250, 243, 285, -201, -315, 155, 338, -105, -353, 53, 361, }, - {256, 9, -362, -27, 360, 44, -358, -62, 355, 79, -351, -97, 346, 114, -341, -130, 334, 147, -327, -163, 319, 178, -311, -194, 301, 208, -291, -223, 280, 236, -268, -250, 256, 262, -243, -274, 230, 285, -216, -296, 201, 306, -186, -315, 171, 323, -155, -331, 139, 338, -122, -344, 105, 349, -88, -353, 71, 357, -53, -359, 35, 361, -18, -362, }, - {256, -9, -362, 27, 360, -44, -358, 62, 355, -79, -351, 97, 346, -114, -341, 130, 334, -147, -327, 163, 319, -178, -311, 194, 301, -208, -291, 223, 280, -236, -268, 250, 256, -262, -243, 274, 230, -285, -216, 296, 201, -306, -186, 315, 171, -323, -155, 331, 139, -338, -122, 344, 105, -349, -88, 353, 71, -357, -53, 359, 35, -361, -18, 362, }, - {256, -27, -358, 79, 346, -130, -327, 178, 301, -223, -268, 262, 230, -296, -186, 323, 139, -344, -88, 357, 35, -362, 18, 359, -71, -349, 122, 331, -171, -306, 216, 274, -256, -236, 291, 194, -319, -147, 341, 97, -355, -44, 362, -9, -360, 62, 351, -114, -334, 163, 311, -208, -280, 250, 243, -285, -201, 315, 155, -338, -105, 353, 53, -361, }, - {256, -44, -351, 130, 319, -208, -268, 274, 201, -323, -122, 353, 35, -362, 53, 349, -139, -315, 216, 262, -280, -194, 327, 114, -355, -27, 362, -62, -346, 147, 311, -223, -256, 285, 186, -331, -105, 357, 18, -361, 71, 344, -155, -306, 230, 250, -291, -178, 334, 97, -358, -9, 360, -79, -341, 163, 301, -236, -243, 296, 171, -338, -88, 359, }, - {256, -62, -341, 178, 280, -274, -186, 338, 71, -362, 53, 344, -171, -285, 268, 194, -334, -79, 362, -44, -346, 163, 291, -262, -201, 331, 88, -361, 35, 349, -155, -296, 256, 208, -327, -97, 360, -27, -351, 147, 301, -250, -216, 323, 105, -359, 18, 353, -139, -306, 243, 223, -319, -114, 358, -9, -355, 130, 311, -236, -230, 315, 122, -357, }, - {256, -79, -327, 223, 230, -323, -88, 362, -71, -331, 216, 236, -319, -97, 362, -62, -334, 208, 243, -315, -105, 361, -53, -338, 201, 250, -311, -114, 360, -44, -341, 194, 256, -306, -122, 359, -35, -344, 186, 262, -301, -130, 358, -27, -346, 178, 268, -296, -139, 357, -18, -349, 171, 274, -291, -147, 355, -9, -351, 163, 280, -285, -155, 353, }, - {256, -97, -311, 262, 171, -353, 18, 344, -201, -236, 327, 62, -360, 130, 291, -285, -139, 359, -53, -331, 230, 208, -341, -27, 355, -163, -268, 306, 105, -362, 88, 315, -256, -178, 351, -9, -346, 194, 243, -323, -71, 361, -122, -296, 280, 147, -358, 44, 334, -223, -216, 338, 35, -357, 155, 274, -301, -114, 362, -79, -319, 250, 186, -349, }, - {256, -114, -291, 296, 105, -362, 122, 285, -301, -97, 362, -130, -280, 306, 88, -361, 139, 274, -311, -79, 360, -147, -268, 315, 71, -359, 155, 262, -319, -62, 358, -163, -256, 323, 53, -357, 171, 250, -327, -44, 355, -178, -243, 331, 35, -353, 186, 236, -334, -27, 351, -194, -230, 338, 18, -349, 201, 223, -341, -9, 346, -208, -216, 344, }, - {256, -130, -268, 323, 35, -349, 216, 194, -355, 62, 311, -285, -105, 361, -155, -250, 334, 9, -341, 236, 171, -359, 88, 296, -301, -79, 358, -178, -230, 344, -18, -331, 256, 147, -362, 114, 280, -315, -53, 353, -201, -208, 351, -44, -319, 274, 122, -362, 139, 262, -327, -27, 346, -223, -186, 357, -71, -306, 291, 97, -360, 163, 243, -338, }, - {256, -147, -243, 344, -35, -315, 291, 79, -355, 208, 186, -359, 105, 274, -327, -9, 334, -262, -122, 361, -171, -223, 351, -62, -301, 306, 53, -349, 230, 163, -362, 130, 256, -338, 18, 323, -280, -97, 358, -194, -201, 357, -88, -285, 319, 27, -341, 250, 139, -362, 155, 236, -346, 44, 311, -296, -71, 353, -216, -178, 360, -114, -268, 331, }, - {256, -163, -216, 357, -105, -262, 341, -44, -301, 315, 18, -331, 280, 79, -351, 236, 139, -361, 186, 194, -360, 130, 243, -349, 71, 285, -327, 9, 319, -296, -53, 344, -256, -114, 358, -208, -171, 362, -155, -223, 355, -97, -268, 338, -35, -306, 311, 27, -334, 274, 88, -353, 230, 147, -362, 178, 201, -359, 122, 250, -346, 62, 291, -323, }, - {256, -178, -186, 362, -171, -194, 362, -163, -201, 361, -155, -208, 360, -147, -216, 359, -139, -223, 358, -130, -230, 357, -122, -236, 355, -114, -243, 353, -105, -250, 351, -97, -256, 349, -88, -262, 346, -79, -268, 344, -71, -274, 341, -62, -280, 338, -53, -285, 334, -44, -291, 331, -35, -296, 327, -27, -301, 323, -18, -306, 319, -9, -311, 315, }, - {256, -194, -155, 359, -230, -114, 351, -262, -71, 338, -291, -27, 319, -315, 18, 296, -334, 62, 268, -349, 105, 236, -358, 147, 201, -362, 186, 163, -360, 223, 122, -353, 256, 79, -341, 285, 35, -323, 311, -9, -301, 331, -53, -274, 346, -97, -243, 357, -139, -208, 362, -178, -171, 361, -216, -130, 355, -250, -88, 344, -280, -44, 327, -306, }, - {256, -208, -122, 349, -280, -27, 311, -331, 71, 250, -358, 163, 171, -359, 243, 79, -334, 306, -18, -285, 346, -114, -216, 362, -201, -130, 351, -274, -35, 315, -327, 62, 256, -357, 155, 178, -360, 236, 88, -338, 301, -9, -291, 344, -105, -223, 362, -194, -139, 353, -268, -44, 319, -323, 53, 262, -355, 147, 186, -361, 230, 97, -341, 296, }, - {256, -223, -88, 331, -319, 62, 243, -361, 201, 114, -341, 306, -35, -262, 358, -178, -139, 349, -291, 9, 280, -353, 155, 163, -355, 274, 18, -296, 346, -130, -186, 359, -256, -44, 311, -338, 105, 208, -362, 236, 71, -323, 327, -79, -230, 362, -216, -97, 334, -315, 53, 250, -360, 194, 122, -344, 301, -27, -268, 357, -171, -147, 351, -285, }, - {256, -236, -53, 306, -346, 147, 155, -349, 301, -44, -243, 362, -230, -62, 311, -344, 139, 163, -351, 296, -35, -250, 362, -223, -71, 315, -341, 130, 171, -353, 291, -27, -256, 361, -216, -79, 319, -338, 122, 178, -355, 285, -18, -262, 360, -208, -88, 323, -334, 114, 186, -357, 280, -9, -268, 359, -201, -97, 327, -331, 105, 194, -358, 274, }, - {256, -250, -18, 274, -360, 223, 53, -296, 355, -194, -88, 315, -346, 163, 122, -331, 334, -130, -155, 344, -319, 97, 186, -353, 301, -62, -216, 359, -280, 27, 243, -362, 256, 9, -268, 361, -230, -44, 291, -357, 201, 79, -311, 349, -171, -114, 327, -338, 139, 147, -341, 323, -105, -178, 351, -306, 71, 208, -358, 285, -35, -236, 362, -262, }, - {256, -262, 18, 236, -360, 285, -53, -208, 355, -306, 88, 178, -346, 323, -122, -147, 334, -338, 155, 114, -319, 349, -186, -79, 301, -357, 216, 44, -280, 361, -243, -9, 256, -362, 268, -27, -230, 359, -291, 62, 201, -353, 311, -97, -171, 344, -327, 130, 139, -331, 341, -163, -105, 315, -351, 194, 71, -296, 358, -223, -35, 274, -362, 250, }, - {256, -274, 53, 194, -346, 331, -155, -97, 301, -359, 243, -9, -230, 357, -311, 114, 139, -323, 351, -208, -35, 262, -362, 285, -71, -178, 341, -338, 171, 79, -291, 361, -256, 27, 216, -353, 319, -130, -122, 315, -355, 223, 18, -250, 360, -296, 88, 163, -334, 344, -186, -62, 280, -362, 268, -44, -201, 349, -327, 147, 105, -306, 358, -236, }, - {256, -285, 88, 147, -319, 357, -243, 27, 201, -344, 341, -194, -35, 250, -358, 315, -139, -97, 291, -362, 280, -79, -155, 323, -355, 236, -18, -208, 346, -338, 186, 44, -256, 359, -311, 130, 105, -296, 362, -274, 71, 163, -327, 353, -230, 9, 216, -349, 334, -178, -53, 262, -360, 306, -122, -114, 301, -361, 268, -62, -171, 331, -351, 223, }, - {256, -296, 122, 97, -280, 361, -311, 147, 71, -262, 358, -323, 171, 44, -243, 353, -334, 194, 18, -223, 346, -344, 216, -9, -201, 338, -351, 236, -35, -178, 327, -357, 256, -62, -155, 315, -360, 274, -88, -130, 301, -362, 291, -114, -105, 285, -362, 306, -139, -79, 268, -359, 319, -163, -53, 250, -355, 331, -186, -27, 230, -349, 341, -208, }, - {256, -306, 155, 44, -230, 344, -351, 250, -71, -130, 291, -361, 319, -178, -18, 208, -334, 357, -268, 97, 105, -274, 358, -331, 201, -9, -186, 323, -360, 285, -122, -79, 256, -353, 341, -223, 35, 163, -311, 362, -301, 147, 53, -236, 346, -349, 243, -62, -139, 296, -362, 315, -171, -27, 216, -338, 355, -262, 88, 114, -280, 359, -327, 194, }, - {256, -315, 186, -9, -171, 306, -362, 323, -201, 27, 155, -296, 360, -331, 216, -44, -139, 285, -358, 338, -230, 62, 122, -274, 355, -344, 243, -79, -105, 262, -351, 349, -256, 97, 88, -250, 346, -353, 268, -114, -71, 236, -341, 357, -280, 130, 53, -223, 334, -359, 291, -147, -35, 208, -327, 361, -301, 163, 18, -194, 319, -362, 311, -178, }, - {256, -323, 216, -62, -105, 250, -341, 359, -301, 178, -18, -147, 280, -353, 351, -274, 139, 27, -186, 306, -360, 338, -243, 97, 71, -223, 327, -362, 319, -208, 53, 114, -256, 344, -358, 296, -171, 9, 155, -285, 355, -349, 268, -130, -35, 194, -311, 361, -334, 236, -88, -79, 230, -331, 362, -315, 201, -44, -122, 262, -346, 357, -291, 163, }, - {256, -331, 243, -114, -35, 178, -291, 353, -355, 296, -186, 44, 105, -236, 327, -362, 334, -250, 122, 27, -171, 285, -351, 357, -301, 194, -53, -97, 230, -323, 362, -338, 256, -130, -18, 163, -280, 349, -358, 306, -201, 62, 88, -223, 319, -361, 341, -262, 139, 9, -155, 274, -346, 359, -311, 208, -71, -79, 216, -315, 360, -344, 268, -147, }, - {256, -338, 268, -163, 35, 97, -216, 306, -355, 357, -311, 223, -105, -27, 155, -262, 334, -362, 341, -274, 171, -44, -88, 208, -301, 353, -358, 315, -230, 114, 18, -147, 256, -331, 362, -344, 280, -178, 53, 79, -201, 296, -351, 359, -319, 236, -122, -9, 139, -250, 327, -361, 346, -285, 186, -62, -71, 194, -291, 349, -360, 323, -243, 130, }, - {256, -344, 291, -208, 105, 9, -122, 223, -301, 349, -362, 338, -280, 194, -88, -27, 139, -236, 311, -353, 360, -331, 268, -178, 71, 44, -155, 250, -319, 357, -358, 323, -256, 163, -53, -62, 171, -262, 327, -359, 355, -315, 243, -147, 35, 79, -186, 274, -334, 361, -351, 306, -230, 130, -18, -97, 201, -285, 341, -362, 346, -296, 216, -114, }, - {256, -349, 311, -250, 171, -79, -18, 114, -201, 274, -327, 357, -360, 338, -291, 223, -139, 44, 53, -147, 230, -296, 341, -361, 355, -323, 268, -194, 105, -9, -88, 178, -256, 315, -351, 362, -346, 306, -243, 163, -71, -27, 122, -208, 280, -331, 358, -359, 334, -285, 216, -130, 35, 62, -155, 236, -301, 344, -362, 353, -319, 262, -186, 97, }, - {256, -353, 327, -285, 230, -163, 88, -9, -71, 147, -216, 274, -319, 349, -362, 357, -334, 296, -243, 178, -105, 27, 53, -130, 201, -262, 311, -344, 360, -359, 341, -306, 256, -194, 122, -44, -35, 114, -186, 250, -301, 338, -358, 361, -346, 315, -268, 208, -139, 62, 18, -97, 171, -236, 291, -331, 355, -362, 351, -323, 280, -223, 155, -79, }, - {256, -357, 341, -315, 280, -236, 186, -130, 71, -9, -53, 114, -171, 223, -268, 306, -334, 353, -362, 359, -346, 323, -291, 250, -201, 147, -88, 27, 35, -97, 155, -208, 256, -296, 327, -349, 360, -361, 351, -331, 301, -262, 216, -163, 105, -44, -18, 79, -139, 194, -243, 285, -319, 344, -358, 362, -355, 338, -311, 274, -230, 178, -122, 62, }, - {256, -359, 351, -338, 319, -296, 268, -236, 201, -163, 122, -79, 35, 9, -53, 97, -139, 178, -216, 250, -280, 306, -327, 344, -355, 361, -362, 357, -346, 331, -311, 285, -256, 223, -186, 147, -105, 62, -18, -27, 71, -114, 155, -194, 230, -262, 291, -315, 334, -349, 358, -362, 360, -353, 341, -323, 301, -274, 243, -208, 171, -130, 88, -44, }, - {256, -361, 358, -353, 346, -338, 327, -315, 301, -285, 268, -250, 230, -208, 186, -163, 139, -114, 88, -62, 35, -9, -18, 44, -71, 97, -122, 147, -171, 194, -216, 236, -256, 274, -291, 306, -319, 331, -341, 349, -355, 359, -362, 362, -360, 357, -351, 344, -334, 323, -311, 296, -280, 262, -243, 223, -201, 178, -155, 130, -105, 79, -53, 27, }, - {256, -362, 362, -361, 360, -359, 358, -357, 355, -353, 351, -349, 346, -344, 341, -338, 334, -331, 327, -323, 319, -315, 311, -306, 301, -296, 291, -285, 280, -274, 268, -262, 256, -250, 243, -236, 230, -223, 216, -208, 201, -194, 186, -178, 171, -163, 155, -147, 139, -130, 122, -114, 105, -97, 88, -79, 71, -62, 53, -44, 35, -27, 18, -9, }, + { 64, 91, 90, 90, 90, 90, 90, 90, 89, 88, 88, 87, 87, 86, 85, 84, 83, 83, 82, 81, 80, 79, 78, 77, 75, 73, 73, 71, 70, 69, 67, 65, 64, 62, 61, 59, 57, 56, 54, 52, 50, 48, 46, 44, 43, 41, 38, 37, 36, 33, 31, 28, 25, 24, 22, 20, 18, 15, 13, 11, 9, 7, 4, 2, }, + { 64, 90, 90, 88, 87, 84, 82, 79, 75, 71, 67, 62, 57, 52, 46, 41, 36, 28, 22, 15, 9, 2, -4, -11, -18, -24, -31, -37, -43, -48, -54, -59, -64, -69, -73, -77, -80, -83, -85, -87, -89, -90, -90, -91, -90, -90, -88, -86, -83, -81, -78, -73, -70, -65, -61, -56, -50, -44, -38, -33, -25, -20, -13, -7, }, + { 64, 90, 88, 84, 80, 73, 67, 59, 50, 41, 31, 20, 9, -2, -13, -24, -36, -44, -54, -62, -70, -77, -82, -86, -89, -90, -90, -90, -87, -83, -78, -71, -64, -56, -46, -37, -25, -15, -4, 7, 18, 28, 38, 48, 57, 65, 73, 79, 83, 87, 90, 91, 90, 88, 85, 81, 75, 69, 61, 52, 43, 33, 22, 11, }, + { 64, 90, 85, 79, 70, 59, 46, 33, 18, 2, -13, -28, -43, -56, -67, -77, -83, -88, -90, -90, -87, -81, -73, -62, -50, -37, -22, -7, 9, 24, 38, 52, 64, 73, 82, 87, 90, 90, 88, 83, 75, 65, 54, 41, 25, 11, -4, -20, -36, -48, -61, -71, -80, -86, -90, -91, -89, -84, -78, -69, -57, -44, -31, -15, }, + { 64, 88, 82, 71, 57, 41, 22, 2, -18, -37, -54, -69, -80, -87, -90, -90, -83, -73, -61, -44, -25, -7, 13, 33, 50, 65, 78, 86, 90, 90, 85, 77, 64, 48, 31, 11, -9, -28, -46, -62, -75, -84, -90, -90, -87, -79, -67, -52, -36, -15, 4, 24, 43, 59, 73, 83, 89, 91, 88, 81, 70, 56, 38, 20, }, + { 64, 87, 78, 62, 43, 20, -4, -28, -50, -69, -82, -90, -90, -84, -73, -56, -36, -11, 13, 37, 57, 73, 85, 90, 89, 81, 67, 48, 25, 2, -22, -44, -64, -79, -88, -91, -87, -77, -61, -41, -18, 7, 31, 52, 70, 83, 90, 90, 83, 71, 54, 33, 9, -15, -38, -59, -75, -86, -90, -88, -80, -65, -46, -24, }, + { 64, 86, 73, 52, 25, -2, -31, -56, -75, -87, -90, -84, -70, -48, -22, 7, 36, 59, 78, 88, 90, 83, 67, 44, 18, -11, -38, -62, -80, -90, -90, -81, -64, -41, -13, 15, 43, 65, 82, 90, 89, 79, 61, 37, 9, -20, -46, -69, -83, -90, -88, -77, -57, -33, -4, 24, 50, 71, 85, 91, 87, 73, 54, 28, }, + { 64, 84, 67, 41, 9, -24, -54, -77, -89, -90, -78, -56, -25, 7, 38, 65, 83, 91, 85, 69, 43, 11, -22, -52, -75, -88, -90, -79, -57, -28, 4, 37, 64, 83, 90, 86, 70, 44, 13, -20, -50, -73, -88, -90, -80, -59, -31, 2, 36, 62, 82, 90, 87, 71, 46, 15, -18, -48, -73, -87, -90, -81, -61, -33, }, + { 64, 83, 61, 28, -9, -44, -73, -88, -89, -73, -46, -11, 25, 59, 82, 91, 83, 62, 31, -7, -43, -71, -88, -90, -75, -48, -13, 24, 57, 81, 90, 84, 64, 33, -4, -41, -70, -87, -90, -77, -50, -15, 22, 56, 80, 90, 85, 65, 36, -2, -38, -69, -87, -90, -78, -52, -18, 20, 54, 79, 90, 86, 67, 37, }, + { 64, 81, 54, 15, -25, -62, -85, -90, -75, -44, -4, 37, 70, 88, 88, 69, 36, -7, -46, -77, -90, -84, -61, -24, 18, 56, 82, 91, 80, 52, 13, -28, -64, -86, -90, -73, -43, -2, 38, 71, 89, 87, 67, 33, -9, -48, -78, -90, -83, -59, -22, 20, 57, 83, 90, 79, 50, 11, -31, -65, -87, -90, -73, -41, }, + { 64, 79, 46, 2, -43, -77, -90, -81, -50, -7, 38, 73, 90, 83, 54, 11, -36, -71, -90, -84, -57, -15, 31, 69, 89, 86, 61, 20, -25, -65, -88, -87, -64, -24, 22, 62, 87, 88, 67, 28, -18, -59, -85, -90, -70, -33, 13, 56, 83, 90, 73, 37, -9, -52, -82, -90, -75, -41, 4, 48, 80, 91, 78, 44, }, + { 64, 77, 38, -11, -57, -86, -88, -62, -18, 33, 73, 90, 80, 44, -4, -52, -83, -90, -67, -24, 25, 69, 90, 83, 50, 2, -46, -81, -90, -71, -31, 20, 64, 88, 85, 56, 9, -41, -78, -91, -75, -37, 13, 59, 87, 87, 61, 15, -36, -73, -90, -79, -43, 7, 54, 84, 89, 65, 22, -28, -70, -90, -82, -48, }, + { 64, 73, 31, -24, -70, -90, -78, -37, 18, 65, 90, 81, 43, -11, -61, -88, -83, -48, 4, 56, 87, 86, 54, 2, -50, -84, -88, -59, -9, 44, 82, 90, 64, 15, -38, -79, -90, -69, -22, 33, 75, 91, 73, 28, -25, -71, -90, -77, -36, 20, 67, 90, 80, 41, -13, -62, -89, -83, -46, 7, 57, 87, 85, 52, }, + { 64, 71, 22, -37, -80, -90, -61, -7, 50, 86, 85, 48, -9, -62, -90, -79, -36, 24, 73, 91, 70, 20, -38, -81, -89, -59, -4, 52, 87, 84, 46, -11, -64, -90, -78, -33, 25, 73, 90, 69, 18, -41, -82, -88, -57, -2, 54, 87, 83, 44, -13, -65, -90, -77, -31, 28, 75, 90, 67, 15, -43, -83, -88, -56, }, + { 64, 69, 13, -48, -87, -83, -38, 24, 75, 90, 61, 2, -57, -90, -78, -28, 36, 81, 88, 52, -9, -65, -90, -71, -18, 44, 85, 84, 43, -20, -73, -90, -64, -7, 54, 88, 80, 33, -31, -79, -89, -56, 4, 62, 90, 73, 22, -41, -83, -86, -46, 15, 70, 91, 67, 11, -50, -87, -82, -37, 25, 77, 90, 59, }, + { 64, 65, 4, -59, -90, -71, -13, 52, 89, 77, 22, -44, -87, -81, -31, 37, 83, 84, 38, -28, -80, -87, -46, 20, 75, 90, 54, -11, -70, -90, -61, 2, 64, 91, 67, 7, -57, -90, -73, -15, 50, 88, 78, 24, -43, -86, -82, -33, 36, 83, 85, 41, -25, -79, -88, -48, 18, 73, 90, 56, -9, -69, -90, -62, }, + { 64, 62, -4, -69, -90, -56, 13, 73, 89, 48, -22, -79, -87, -41, 31, 83, 83, 33, -38, -86, -80, -24, 46, 88, 75, 15, -54, -90, -70, -7, 61, 91, 64, -2, -67, -90, -57, 11, 73, 90, 50, -20, -78, -87, -43, 28, 82, 84, 36, -37, -85, -81, -25, 44, 88, 77, 18, -52, -90, -71, -9, 59, 90, 65, }, + { 64, 59, -13, -77, -87, -37, 38, 87, 75, 11, -61, -91, -57, 15, 78, 86, 36, -41, -88, -73, -9, 62, 90, 56, -18, -79, -85, -33, 43, 88, 73, 7, -64, -90, -54, 20, 80, 84, 31, -44, -89, -71, -4, 65, 90, 52, -22, -81, -83, -28, 46, 90, 70, 2, -67, -90, -50, 24, 82, 83, 25, -48, -90, -69, }, + { 64, 56, -22, -83, -80, -15, 61, 90, 50, -28, -85, -77, -9, 65, 90, 44, -36, -87, -73, -2, 70, 88, 38, -41, -89, -69, 4, 73, 87, 33, -46, -90, -64, 11, 78, 84, 25, -52, -90, -59, 18, 81, 82, 20, -57, -91, -54, 24, 83, 79, 13, -62, -90, -48, 31, 86, 75, 7, -67, -90, -43, 37, 88, 71, }, + { 64, 52, -31, -87, -70, 7, 78, 83, 18, -62, -90, -41, 43, 90, 61, -20, -83, -77, -4, 71, 87, 28, -54, -91, -50, 33, 88, 69, -9, -79, -82, -15, 64, 90, 38, -44, -90, -59, 22, 84, 75, 2, -73, -86, -25, 56, 90, 48, -36, -88, -67, 11, 80, 81, 13, -65, -89, -37, 46, 90, 57, -24, -85, -73, }, + { 64, 48, -38, -90, -57, 28, 88, 65, -18, -84, -73, 7, 80, 79, 4, -73, -83, -15, 67, 87, 25, -59, -90, -37, 50, 91, 46, -41, -90, -56, 31, 88, 64, -20, -85, -71, 9, 81, 78, 2, -75, -83, -13, 69, 87, 24, -61, -90, -36, 52, 90, 44, -43, -90, -54, 33, 89, 62, -22, -86, -70, 11, 82, 77, }, + { 64, 44, -46, -91, -43, 48, 90, 41, -50, -90, -38, 52, 90, 37, -54, -90, -36, 56, 90, 33, -57, -90, -31, 59, 89, 28, -61, -88, -25, 62, 88, 24, -64, -87, -22, 65, 87, 20, -67, -86, -18, 69, 85, 15, -70, -84, -13, 71, 83, 11, -73, -83, -9, 73, 82, 7, -75, -81, -4, 77, 80, 2, -78, -79, }, + { 64, 41, -54, -90, -25, 65, 85, 11, -75, -79, 4, 83, 70, -20, -88, -59, 36, 90, 46, -48, -90, -33, 61, 87, 18, -71, -82, -2, 80, 73, -13, -86, -64, 28, 90, 52, -43, -91, -38, 56, 89, 24, -67, -84, -9, 77, 78, -7, -83, -69, 22, 88, 57, -37, -90, -44, 50, 90, 31, -62, -87, -15, 73, 81, }, + { 64, 37, -61, -86, -9, 79, 73, -20, -89, -52, 46, 90, 25, -69, -82, 2, 83, 65, -31, -90, -43, 56, 88, 15, -75, -77, 13, 87, 57, -41, -90, -33, 64, 84, 4, -81, -70, 24, 90, 48, -50, -90, -22, 71, 80, -7, -85, -62, 36, 91, 38, -59, -87, -11, 78, 73, -18, -88, -54, 44, 90, 28, -67, -83, }, + { 64, 33, -67, -81, 9, 87, 54, -48, -89, -15, 78, 71, -25, -90, -38, 62, 83, -2, -85, -59, 43, 90, 22, -73, -75, 20, 90, 44, -57, -86, -4, 83, 64, -37, -90, -28, 70, 79, -13, -88, -50, 52, 88, 11, -80, -69, 31, 91, 36, -65, -82, 7, 87, 56, -46, -90, -18, 77, 73, -24, -90, -41, 61, 84, }, + { 64, 28, -73, -73, 25, 91, 31, -71, -75, 24, 90, 33, -70, -77, 22, 90, 36, -69, -78, 20, 90, 37, -67, -79, 18, 90, 38, -65, -80, 15, 90, 41, -64, -81, 13, 90, 43, -62, -82, 11, 89, 44, -61, -83, 9, 88, 46, -59, -83, 7, 88, 48, -57, -84, 4, 87, 50, -56, -85, 2, 87, 52, -54, -86, }, + { 64, 24, -78, -65, 43, 88, 4, -86, -50, 59, 82, -15, -90, -33, 73, 71, -36, -90, -13, 83, 57, -52, -85, 7, 89, 41, -67, -77, 25, 91, 22, -79, -64, 44, 88, 2, -87, -48, 61, 81, -18, -90, -31, 73, 70, -37, -90, -11, 83, 56, -54, -84, 9, 90, 38, -69, -75, 28, 90, 20, -80, -62, 46, 87, }, + { 64, 20, -82, -56, 57, 81, -22, -91, -18, 83, 54, -59, -80, 24, 90, 15, -83, -52, 61, 79, -25, -90, -13, 84, 50, -62, -78, 28, 90, 11, -85, -48, 64, 77, -31, -90, -9, 86, 46, -65, -75, 33, 90, 7, -87, -44, 67, 73, -36, -90, -4, 87, 43, -69, -73, 37, 89, 2, -88, -41, 70, 71, -38, -88, }, + { 64, 15, -85, -44, 70, 69, -46, -84, 18, 91, 13, -86, -43, 71, 67, -48, -83, 20, 90, 11, -87, -41, 73, 65, -50, -83, 22, 90, 9, -87, -38, 73, 64, -52, -82, 24, 90, 7, -88, -37, 75, 62, -54, -81, 25, 90, 4, -88, -36, 77, 61, -56, -80, 28, 90, 2, -89, -33, 78, 59, -57, -79, 31, 90, }, + { 64, 11, -88, -33, 80, 52, -67, -69, 50, 81, -31, -88, 9, 91, 13, -87, -36, 79, 54, -65, -70, 48, 82, -28, -89, 7, 90, 15, -87, -37, 78, 56, -64, -71, 46, 83, -25, -90, 4, 90, 18, -86, -38, 77, 57, -62, -73, 44, 83, -24, -90, 2, 90, 20, -85, -41, 75, 59, -61, -73, 43, 84, -22, -90, }, + { 64, 7, -90, -20, 87, 33, -82, -44, 75, 56, -67, -65, 57, 73, -46, -81, 36, 86, -22, -90, 9, 91, 4, -90, -18, 87, 31, -83, -43, 77, 54, -69, -64, 59, 73, -48, -80, 37, 85, -24, -89, 11, 90, 2, -90, -15, 88, 28, -83, -41, 78, 52, -70, -62, 61, 71, -50, -79, 38, 84, -25, -88, 13, 90, }, + { 64, 2, -90, -7, 90, 11, -90, -15, 89, 20, -88, -24, 87, 28, -85, -33, 83, 37, -82, -41, 80, 44, -78, -48, 75, 52, -73, -56, 70, 59, -67, -62, 64, 65, -61, -69, 57, 71, -54, -73, 50, 77, -46, -79, 43, 81, -38, -83, 36, 84, -31, -86, 25, 87, -22, -88, 18, 90, -13, -90, 9, 90, -4, -91, }, + { 64, -2, -90, 7, 90, -11, -90, 15, 89, -20, -88, 24, 87, -28, -85, 33, 83, -37, -82, 41, 80, -44, -78, 48, 75, -52, -73, 56, 70, -59, -67, 62, 64, -65, -61, 69, 57, -71, -54, 73, 50, -77, -46, 79, 43, -81, -38, 83, 36, -84, -31, 86, 25, -87, -22, 88, 18, -90, -13, 90, 9, -90, -4, 91, }, + { 64, -7, -90, 20, 87, -33, -82, 44, 75, -56, -67, 65, 57, -73, -46, 81, 36, -86, -22, 90, 9, -91, 4, 90, -18, -87, 31, 83, -43, -77, 54, 69, -64, -59, 73, 48, -80, -37, 85, 24, -89, -11, 90, -2, -90, 15, 88, -28, -83, 41, 78, -52, -70, 62, 61, -71, -50, 79, 38, -84, -25, 88, 13, -90, }, + { 64, -11, -88, 33, 80, -52, -67, 69, 50, -81, -31, 88, 9, -91, 13, 87, -36, -79, 54, 65, -70, -48, 82, 28, -89, -7, 90, -15, -87, 37, 78, -56, -64, 71, 46, -83, -25, 90, 4, -90, 18, 86, -38, -77, 57, 62, -73, -44, 83, 24, -90, -2, 90, -20, -85, 41, 75, -59, -61, 73, 43, -84, -22, 90, }, + { 64, -15, -85, 44, 70, -69, -46, 84, 18, -91, 13, 86, -43, -71, 67, 48, -83, -20, 90, -11, -87, 41, 73, -65, -50, 83, 22, -90, 9, 87, -38, -73, 64, 52, -82, -24, 90, -7, -88, 37, 75, -62, -54, 81, 25, -90, 4, 88, -36, -77, 61, 56, -80, -28, 90, -2, -89, 33, 78, -59, -57, 79, 31, -90, }, + { 64, -20, -82, 56, 57, -81, -22, 91, -18, -83, 54, 59, -80, -24, 90, -15, -83, 52, 61, -79, -25, 90, -13, -84, 50, 62, -78, -28, 90, -11, -85, 48, 64, -77, -31, 90, -9, -86, 46, 65, -75, -33, 90, -7, -87, 44, 67, -73, -36, 90, -4, -87, 43, 69, -73, -37, 89, -2, -88, 41, 70, -71, -38, 88, }, + { 64, -24, -78, 65, 43, -88, 4, 86, -50, -59, 82, 15, -90, 33, 73, -71, -36, 90, -13, -83, 57, 52, -85, -7, 89, -41, -67, 77, 25, -91, 22, 79, -64, -44, 88, -2, -87, 48, 61, -81, -18, 90, -31, -73, 70, 37, -90, 11, 83, -56, -54, 84, 9, -90, 38, 69, -75, -28, 90, -20, -80, 62, 46, -87, }, + { 64, -28, -73, 73, 25, -91, 31, 71, -75, -24, 90, -33, -70, 77, 22, -90, 36, 69, -78, -20, 90, -37, -67, 79, 18, -90, 38, 65, -80, -15, 90, -41, -64, 81, 13, -90, 43, 62, -82, -11, 89, -44, -61, 83, 9, -88, 46, 59, -83, -7, 88, -48, -57, 84, 4, -87, 50, 56, -85, -2, 87, -52, -54, 86, }, + { 64, -33, -67, 81, 9, -87, 54, 48, -89, 15, 78, -71, -25, 90, -38, -62, 83, 2, -85, 59, 43, -90, 22, 73, -75, -20, 90, -44, -57, 86, -4, -83, 64, 37, -90, 28, 70, -79, -13, 88, -50, -52, 88, -11, -80, 69, 31, -91, 36, 65, -82, -7, 87, -56, -46, 90, -18, -77, 73, 24, -90, 41, 61, -84, }, + { 64, -37, -61, 86, -9, -79, 73, 20, -89, 52, 46, -90, 25, 69, -82, -2, 83, -65, -31, 90, -43, -56, 88, -15, -75, 77, 13, -87, 57, 41, -90, 33, 64, -84, 4, 81, -70, -24, 90, -48, -50, 90, -22, -71, 80, 7, -85, 62, 36, -91, 38, 59, -87, 11, 78, -73, -18, 88, -54, -44, 90, -28, -67, 83, }, + { 64, -41, -54, 90, -25, -65, 85, -11, -75, 79, 4, -83, 70, 20, -88, 59, 36, -90, 46, 48, -90, 33, 61, -87, 18, 71, -82, 2, 80, -73, -13, 86, -64, -28, 90, -52, -43, 91, -38, -56, 89, -24, -67, 84, -9, -77, 78, 7, -83, 69, 22, -88, 57, 37, -90, 44, 50, -90, 31, 62, -87, 15, 73, -81, }, + { 64, -44, -46, 91, -43, -48, 90, -41, -50, 90, -38, -52, 90, -37, -54, 90, -36, -56, 90, -33, -57, 90, -31, -59, 89, -28, -61, 88, -25, -62, 88, -24, -64, 87, -22, -65, 87, -20, -67, 86, -18, -69, 85, -15, -70, 84, -13, -71, 83, -11, -73, 83, -9, -73, 82, -7, -75, 81, -4, -77, 80, -2, -78, 79, }, + { 64, -48, -38, 90, -57, -28, 88, -65, -18, 84, -73, -7, 80, -79, 4, 73, -83, 15, 67, -87, 25, 59, -90, 37, 50, -91, 46, 41, -90, 56, 31, -88, 64, 20, -85, 71, 9, -81, 78, -2, -75, 83, -13, -69, 87, -24, -61, 90, -36, -52, 90, -44, -43, 90, -54, -33, 89, -62, -22, 86, -70, -11, 82, -77, }, + { 64, -52, -31, 87, -70, -7, 78, -83, 18, 62, -90, 41, 43, -90, 61, 20, -83, 77, -4, -71, 87, -28, -54, 91, -50, -33, 88, -69, -9, 79, -82, 15, 64, -90, 38, 44, -90, 59, 22, -84, 75, -2, -73, 86, -25, -56, 90, -48, -36, 88, -67, -11, 80, -81, 13, 65, -89, 37, 46, -90, 57, 24, -85, 73, }, + { 64, -56, -22, 83, -80, 15, 61, -90, 50, 28, -85, 77, -9, -65, 90, -44, -36, 87, -73, 2, 70, -88, 38, 41, -89, 69, 4, -73, 87, -33, -46, 90, -64, -11, 78, -84, 25, 52, -90, 59, 18, -81, 82, -20, -57, 91, -54, -24, 83, -79, 13, 62, -90, 48, 31, -86, 75, -7, -67, 90, -43, -37, 88, -71, }, + { 64, -59, -13, 77, -87, 37, 38, -87, 75, -11, -61, 91, -57, -15, 78, -86, 36, 41, -88, 73, -9, -62, 90, -56, -18, 79, -85, 33, 43, -88, 73, -7, -64, 90, -54, -20, 80, -84, 31, 44, -89, 71, -4, -65, 90, -52, -22, 81, -83, 28, 46, -90, 70, -2, -67, 90, -50, -24, 82, -83, 25, 48, -90, 69, }, + { 64, -62, -4, 69, -90, 56, 13, -73, 89, -48, -22, 79, -87, 41, 31, -83, 83, -33, -38, 86, -80, 24, 46, -88, 75, -15, -54, 90, -70, 7, 61, -91, 64, 2, -67, 90, -57, -11, 73, -90, 50, 20, -78, 87, -43, -28, 82, -84, 36, 37, -85, 81, -25, -44, 88, -77, 18, 52, -90, 71, -9, -59, 90, -65, }, + { 64, -65, 4, 59, -90, 71, -13, -52, 89, -77, 22, 44, -87, 81, -31, -37, 83, -84, 38, 28, -80, 87, -46, -20, 75, -90, 54, 11, -70, 90, -61, -2, 64, -91, 67, -7, -57, 90, -73, 15, 50, -88, 78, -24, -43, 86, -82, 33, 36, -83, 85, -41, -25, 79, -88, 48, 18, -73, 90, -56, -9, 69, -90, 62, }, + { 64, -69, 13, 48, -87, 83, -38, -24, 75, -90, 61, -2, -57, 90, -78, 28, 36, -81, 88, -52, -9, 65, -90, 71, -18, -44, 85, -84, 43, 20, -73, 90, -64, 7, 54, -88, 80, -33, -31, 79, -89, 56, 4, -62, 90, -73, 22, 41, -83, 86, -46, -15, 70, -91, 67, -11, -50, 87, -82, 37, 25, -77, 90, -59, }, + { 64, -71, 22, 37, -80, 90, -61, 7, 50, -86, 85, -48, -9, 62, -90, 79, -36, -24, 73, -91, 70, -20, -38, 81, -89, 59, -4, -52, 87, -84, 46, 11, -64, 90, -78, 33, 25, -73, 90, -69, 18, 41, -82, 88, -57, 2, 54, -87, 83, -44, -13, 65, -90, 77, -31, -28, 75, -90, 67, -15, -43, 83, -88, 56, }, + { 64, -73, 31, 24, -70, 90, -78, 37, 18, -65, 90, -81, 43, 11, -61, 88, -83, 48, 4, -56, 87, -86, 54, -2, -50, 84, -88, 59, -9, -44, 82, -90, 64, -15, -38, 79, -90, 69, -22, -33, 75, -91, 73, -28, -25, 71, -90, 77, -36, -20, 67, -90, 80, -41, -13, 62, -89, 83, -46, -7, 57, -87, 85, -52, }, + { 64, -77, 38, 11, -57, 86, -88, 62, -18, -33, 73, -90, 80, -44, -4, 52, -83, 90, -67, 24, 25, -69, 90, -83, 50, -2, -46, 81, -90, 71, -31, -20, 64, -88, 85, -56, 9, 41, -78, 91, -75, 37, 13, -59, 87, -87, 61, -15, -36, 73, -90, 79, -43, -7, 54, -84, 89, -65, 22, 28, -70, 90, -82, 48, }, + { 64, -79, 46, -2, -43, 77, -90, 81, -50, 7, 38, -73, 90, -83, 54, -11, -36, 71, -90, 84, -57, 15, 31, -69, 89, -86, 61, -20, -25, 65, -88, 87, -64, 24, 22, -62, 87, -88, 67, -28, -18, 59, -85, 90, -70, 33, 13, -56, 83, -90, 73, -37, -9, 52, -82, 90, -75, 41, 4, -48, 80, -91, 78, -44, }, + { 64, -81, 54, -15, -25, 62, -85, 90, -75, 44, -4, -37, 70, -88, 88, -69, 36, 7, -46, 77, -90, 84, -61, 24, 18, -56, 82, -91, 80, -52, 13, 28, -64, 86, -90, 73, -43, 2, 38, -71, 89, -87, 67, -33, -9, 48, -78, 90, -83, 59, -22, -20, 57, -83, 90, -79, 50, -11, -31, 65, -87, 90, -73, 41, }, + { 64, -83, 61, -28, -9, 44, -73, 88, -89, 73, -46, 11, 25, -59, 82, -91, 83, -62, 31, 7, -43, 71, -88, 90, -75, 48, -13, -24, 57, -81, 90, -84, 64, -33, -4, 41, -70, 87, -90, 77, -50, 15, 22, -56, 80, -90, 85, -65, 36, 2, -38, 69, -87, 90, -78, 52, -18, -20, 54, -79, 90, -86, 67, -37, }, + { 64, -84, 67, -41, 9, 24, -54, 77, -89, 90, -78, 56, -25, -7, 38, -65, 83, -91, 85, -69, 43, -11, -22, 52, -75, 88, -90, 79, -57, 28, 4, -37, 64, -83, 90, -86, 70, -44, 13, 20, -50, 73, -88, 90, -80, 59, -31, -2, 36, -62, 82, -90, 87, -71, 46, -15, -18, 48, -73, 87, -90, 81, -61, 33, }, + { 64, -86, 73, -52, 25, 2, -31, 56, -75, 87, -90, 84, -70, 48, -22, -7, 36, -59, 78, -88, 90, -83, 67, -44, 18, 11, -38, 62, -80, 90, -90, 81, -64, 41, -13, -15, 43, -65, 82, -90, 89, -79, 61, -37, 9, 20, -46, 69, -83, 90, -88, 77, -57, 33, -4, -24, 50, -71, 85, -91, 87, -73, 54, -28, }, + { 64, -87, 78, -62, 43, -20, -4, 28, -50, 69, -82, 90, -90, 84, -73, 56, -36, 11, 13, -37, 57, -73, 85, -90, 89, -81, 67, -48, 25, -2, -22, 44, -64, 79, -88, 91, -87, 77, -61, 41, -18, -7, 31, -52, 70, -83, 90, -90, 83, -71, 54, -33, 9, 15, -38, 59, -75, 86, -90, 88, -80, 65, -46, 24, }, + { 64, -88, 82, -71, 57, -41, 22, -2, -18, 37, -54, 69, -80, 87, -90, 90, -83, 73, -61, 44, -25, 7, 13, -33, 50, -65, 78, -86, 90, -90, 85, -77, 64, -48, 31, -11, -9, 28, -46, 62, -75, 84, -90, 90, -87, 79, -67, 52, -36, 15, 4, -24, 43, -59, 73, -83, 89, -91, 88, -81, 70, -56, 38, -20, }, + { 64, -90, 85, -79, 70, -59, 46, -33, 18, -2, -13, 28, -43, 56, -67, 77, -83, 88, -90, 90, -87, 81, -73, 62, -50, 37, -22, 7, 9, -24, 38, -52, 64, -73, 82, -87, 90, -90, 88, -83, 75, -65, 54, -41, 25, -11, -4, 20, -36, 48, -61, 71, -80, 86, -90, 91, -89, 84, -78, 69, -57, 44, -31, 15, }, + { 64, -90, 88, -84, 80, -73, 67, -59, 50, -41, 31, -20, 9, 2, -13, 24, -36, 44, -54, 62, -70, 77, -82, 86, -89, 90, -90, 90, -87, 83, -78, 71, -64, 56, -46, 37, -25, 15, -4, -7, 18, -28, 38, -48, 57, -65, 73, -79, 83, -87, 90, -91, 90, -88, 85, -81, 75, -69, 61, -52, 43, -33, 22, -11, }, + { 64, -90, 90, -88, 87, -84, 82, -79, 75, -71, 67, -62, 57, -52, 46, -41, 36, -28, 22, -15, 9, -2, -4, 11, -18, 24, -31, 37, -43, 48, -54, 59, -64, 69, -73, 77, -80, 83, -85, 87, -89, 90, -90, 91, -90, 90, -88, 86, -83, 81, -78, 73, -70, 65, -61, 56, -50, 44, -38, 33, -25, 20, -13, 7, }, + { 64, -91, 90, -90, 90, -90, 90, -90, 89, -88, 88, -87, 87, -86, 85, -84, 83, -83, 82, -81, 80, -79, 78, -77, 75, -73, 73, -71, 70, -69, 67, -65, 64, -62, 61, -59, 57, -56, 54, -52, 50, -48, 46, -44, 43, -41, 38, -37, 36, -33, 31, -28, 25, -24, 22, -20, 18, -15, 13, -11, 9, -7, 4, -2, } }; - /** * \brief Generic partial butterfly functions * @@ -763,8 +761,8 @@ static void partial_butterfly_inverse_32_generic(const int16_t *src, int16_t *ds static void dct_ ## n ## x ## n ## _generic(int8_t bitdepth, const int16_t *input, int16_t *output) { \ \ int16_t tmp[ n * n ]; \ - int32_t shift_1st = kvz_g_convert_to_bit[ n ] + 1 + (bitdepth - 8) + 2; \ - int32_t shift_2nd = kvz_g_convert_to_bit[ n ] + 8 + 2; \ + int32_t shift_1st = kvz_g_convert_to_bit[ n ] + 1 + (bitdepth - 8); \ + int32_t shift_2nd = kvz_g_convert_to_bit[ n ] + 8; \ \ partial_butterfly_ ## n ## _generic(input, tmp, shift_1st); \ partial_butterfly_ ## n ## _generic(tmp, output, shift_2nd); \ @@ -774,8 +772,8 @@ static void dct_ ## n ## x ## n ## _generic(int8_t bitdepth, const int16_t *inpu static void idct_ ## n ## x ## n ## _generic(int8_t bitdepth, const int16_t *input, int16_t *output) { \ \ int16_t tmp[ n * n ]; \ - int32_t shift_1st = 7 + 2; \ - int32_t shift_2nd = 12 - (bitdepth - 8) + 2; \ + int32_t shift_1st = 7; \ + int32_t shift_2nd = 12 - (bitdepth - 8); \ \ partial_butterfly_inverse_ ## n ## _generic(input, tmp, shift_1st); \ partial_butterfly_inverse_ ## n ## _generic(tmp, output, shift_2nd); \