diff --git a/applications/cli/cli.c b/applications/cli/cli.c index 361d899b..be3b6d52 100644 --- a/applications/cli/cli.c +++ b/applications/cli/cli.c @@ -70,8 +70,41 @@ void cli_print_version(const Version* version) { } } +void cli_print_usage(const char* cmd, const char* usage, const char* arg) { + furi_assert(cmd); + furi_assert(arg); + furi_assert(usage); + + printf("%s: illegal option -- %s\r\nusage: %s %s", cmd, arg, cmd, usage); +} + void cli_motd() { - printf("Flipper cli.\r\n"); + printf(" __ \r\n \ + _.-~ ) \r\n \ + _..--~~~~,' ,-/ _\r\n \ + .-'. . . .' ,-',' ,' ) \r\n \ + ,'. . . _ ,--~,-'__..-' ,' \r\n \ + ,'. . . (@)' ---~~~~ ,'\r\n \ + /. . . . '~~ ,-'\r\n \ + /. . . . . ,-'\r\n \ + ; . . . . - . ,'\r\n \ + : . . . . _ /\r\n \ + . . . . . `-.:\r\n \ + . . . ./ - . )\r\n \ + . . . | _____..---.._/ _____\r\n \ +~-----~~~~----~~~~ ~~~-----~~~~~-----~\r\n \ + ______ _ _ _____ _ _____\r\n \ +| ____| (_) / ____| | |_ _|\r\n \ +| |__ | |_ _ __ _ __ ___ _ __ | | | | | |\r\n \ +| __| | | | '_ \\| '_ \\ / _ \\ '__| | | | | | |\r\n \ +| | | | | |_) | |_) | __/ | | |____| |____ _| |_\r\n \ +|_| |_|_| .__/| .__/ \\___|_| \\_____|______|_____|\r\n \ + | | | |\r\n \ + |_| |_|\r\n\r\n" + + ); + + printf("You are now connected to Flipper Command Line Interface.\r\n\r\n"); printf("Bootloader\r\n"); cli_print_version(api_hal_version_get_boot_version()); diff --git a/applications/cli/cli.h b/applications/cli/cli.h index cf792075..adca4ea2 100644 --- a/applications/cli/cli.h +++ b/applications/cli/cli.h @@ -27,6 +27,14 @@ typedef void (*CliCallback)(Cli* cli, string_t args, void* context); */ void cli_add_command(Cli* cli, const char* name, CliCallback callback, void* context); +/* Print unified cmd usage tip + * @param cmd - cmd name + * @param usage - usage tip + * @param arg - arg passed by user + */ + +void cli_print_usage(const char* cmd, const char* usage, const char* arg); + /* Delete cli command * @param cli - pointer to cli instance * @param name - command name diff --git a/applications/cli/cli_commands.c b/applications/cli/cli_commands.c index 6df4967b..2e4d6b90 100644 --- a/applications/cli/cli_commands.c +++ b/applications/cli/cli_commands.c @@ -115,7 +115,7 @@ void cli_command_vibro(Cli* cli, string_t args, void* context) { notification_message_block(notification, &sequence_set_vibro_on); furi_record_close("notification"); } else { - printf("Wrong input"); + cli_print_usage("vibro", "<1|0>", string_get_cstr(args)); } } @@ -126,7 +126,7 @@ void cli_command_led(Cli* cli, string_t args, void* context) { string_init(light_name); size_t ws = string_search_char(args, ' '); if(ws == STRING_FAILURE) { - printf("Wrong input"); + cli_print_usage("led", " <0-255>", string_get_cstr(args)); string_clear(light_name); return; } else { @@ -144,7 +144,7 @@ void cli_command_led(Cli* cli, string_t args, void* context) { } else if(!string_cmp(light_name, "bl")) { notification_led_message.type = NotificationMessageTypeLedDisplay; } else { - printf("Wrong argument"); + cli_print_usage("led", " <0-255>", string_get_cstr(args)); string_clear(light_name); return; } @@ -153,7 +153,7 @@ void cli_command_led(Cli* cli, string_t args, void* context) { char* end_ptr; uint32_t value = strtoul(string_get_cstr(args), &end_ptr, 0); if(!(value < 256 && *end_ptr == '\0')) { - printf("Wrong argument"); + cli_print_usage("led", " <0-255>", string_get_cstr(args)); return; } @@ -191,7 +191,7 @@ void cli_command_gpio_set(Cli* cli, string_t args, void* context) { string_init(pin_name); size_t ws = string_search_char(args, ' '); if(ws == STRING_FAILURE) { - printf("Wrong input. Correct usage: gpio_set <0|1>"); + cli_print_usage("gpio_set", " <0|1>", string_get_cstr(args)); string_clear(pin_name); return; } else { diff --git a/applications/cli/cli_commands.h b/applications/cli/cli_commands.h index 184eeb37..b82dae29 100644 --- a/applications/cli/cli_commands.h +++ b/applications/cli/cli_commands.h @@ -2,4 +2,4 @@ #include "cli_i.h" -void cli_commands_init(Cli* cli); +void cli_commands_init(Cli* cli); \ No newline at end of file diff --git a/applications/power/power_cli.c b/applications/power/power_cli.c index 2a535ab1..f9ab1189 100644 --- a/applications/power/power_cli.c +++ b/applications/power/power_cli.c @@ -29,16 +29,18 @@ void power_cli_factory_reset(Cli* cli, string_t args, void* context) { } } -void power_cli_test(Cli* cli, string_t args, void* context) { +void power_cli_info(Cli* cli, string_t args, void* context) { api_hal_power_dump_state(); } -void power_cli_otg_on(Cli* cli, string_t args, void* context) { - api_hal_power_enable_otg(); -} - -void power_cli_otg_off(Cli* cli, string_t args, void* context) { - api_hal_power_disable_otg(); +void power_cli_otg(Cli* cli, string_t args, void* context) { + if(!string_cmp(args, "0")) { + api_hal_power_disable_otg(); + } else if(!string_cmp(args, "1")) { + api_hal_power_enable_otg(); + } else { + cli_print_usage("power_otg", "<1|0>", string_get_cstr(args)); + } } void power_cli_init(Cli* cli, Power* power) { @@ -46,7 +48,6 @@ void power_cli_init(Cli* cli, Power* power) { cli_add_command(cli, "reset", power_cli_reset, power); cli_add_command(cli, "factory_reset", power_cli_factory_reset, power); cli_add_command(cli, "dfu", power_cli_dfu, power); - cli_add_command(cli, "power_test", power_cli_test, power); - cli_add_command(cli, "power_otg_on", power_cli_otg_on, power); - cli_add_command(cli, "power_otg_off", power_cli_otg_off, power); + cli_add_command(cli, "power_info", power_cli_info, power); + cli_add_command(cli, "power_otg", power_cli_otg, power); } diff --git a/applications/sd-filesystem/sd-filesystem.c b/applications/sd-filesystem/sd-filesystem.c index 316c6e8d..4bf9f1dd 100644 --- a/applications/sd-filesystem/sd-filesystem.c +++ b/applications/sd-filesystem/sd-filesystem.c @@ -522,14 +522,6 @@ void app_sd_eject_callback(void* context) { /******************* Cli callbacks *******************/ -static void cli_sd_status(Cli* cli, string_t args, void* _ctx) { - SdApp* sd_app = (SdApp*)_ctx; - - printf("SD status: "); - printf(fs_error_get_internal_desc(sd_app->info.status)); - printf("\r\n"); -} - static void cli_sd_format(Cli* cli, string_t args, void* _ctx) { SdApp* sd_app = (SdApp*)_ctx; @@ -552,18 +544,18 @@ static void cli_sd_info(Cli* cli, string_t args, void* _ctx) { SDInfo sd_info; get_sd_info(sd_app, &sd_info); + printf("SD Status: %s\r\n", fs_error_get_internal_desc(sd_app->info.status)); if(sd_info.error == SD_OK) { const char* fs_type = get_fs_type_text(sd_info.fs_type); printf("Label: %s\r\n", sd_info.label); - printf("%s\r\n", fs_type); + printf("Filesystem: %s\r\n", fs_type); printf("Cluster: %d sectors\r\n", sd_info.cluster_size); printf("Sector: %d bytes\r\n", sd_info.sector_size); printf("%lu KB total\r\n", sd_info.kb_total); printf("%lu KB free\r\n", sd_info.kb_free); } else { - printf("SD status error: %s\r\n", fs_error_get_internal_desc(_fs_status(&sd_app->info))); - printf("SD info error: %s\r\n", fs_error_get_internal_desc(sd_info.error)); + printf("SD Info error: %s\r\n", fs_error_get_internal_desc(sd_info.error)); } } @@ -635,7 +627,6 @@ int32_t sd_filesystem(void* p) { gui_add_view_port(gui, sd_app->icon.view_port, GuiLayerStatusBarLeft); - cli_add_command(cli, "sd_status", cli_sd_status, sd_app); cli_add_command(cli, "sd_format", cli_sd_format, sd_app); cli_add_command(cli, "sd_info", cli_sd_info, sd_app); diff --git a/applications/tests/irda_decoder/test_data/irda_decoder_nec_test_data.h b/applications/tests/irda_decoder/test_data/irda_decoder_nec_test_data.h index 69c7626b..7269e3f1 100644 --- a/applications/tests/irda_decoder/test_data/irda_decoder_nec_test_data.h +++ b/applications/tests/irda_decoder/test_data/irda_decoder_nec_test_data.h @@ -11,9 +11,9 @@ const uint32_t test_nec_input1[] = { 1415838, 9080, 4436, 611, 494, 600, 505, 578, 500, 608, 501, 602, 502, 580, 498, 606, 508, 605, 500, 583, 1633, 608, 1608, 611, 1631, 578, 1638, 602, 1614, 606, 1637, 583, 1633, 607, 1609, 611, 494, 600, 505, 570, 500, 604, 501, 602, 502, 581, 497, 606, 499, 605, 499, 583, 1633, 617, 1608, 611, 1631, 579, 1638, 602}; const IrdaMessage test_nec_expected1[] = { - {IrdaProtocolNEC, 0xFF00, 0, false}, - {IrdaProtocolNEC, 0xFF00, 0, true}, - {IrdaProtocolNEC, 0xFF00, 0, false}, + {IrdaProtocolNEC, 0, 0, false}, + {IrdaProtocolNEC, 0, 0, true}, + {IrdaProtocolNEC, 0, 0, false}, }; const uint32_t test_nec_input2[] = { @@ -124,57 +124,57 @@ const uint32_t test_nec_input2[] = { }; const IrdaMessage test_nec_expected2[] = { - {IrdaProtocolNEC, 0xFF00, 0x02, false}, - {IrdaProtocolNEC, 0xFF00, 0x02, true}, - {IrdaProtocolNEC, 0xFF00, 0x02, false}, - {IrdaProtocolNEC, 0xFF00, 0x02, true}, - {IrdaProtocolNEC, 0xFF00, 0x02, true}, - {IrdaProtocolNEC, 0xFF00, 0x02, true}, - {IrdaProtocolNEC, 0xFF00, 0x02, true}, - {IrdaProtocolNEC, 0xFF00, 0x02, true}, - {IrdaProtocolNEC, 0xFF00, 0x02, true}, - {IrdaProtocolNEC, 0xFF00, 0x02, true}, - {IrdaProtocolNEC, 0xFF00, 0x02, true}, - {IrdaProtocolNEC, 0xFF00, 0x02, true}, - {IrdaProtocolNEC, 0xFF00, 0x02, true}, - {IrdaProtocolNEC, 0xFF00, 0x02, true}, - {IrdaProtocolNEC, 0xFF00, 0x02, true}, - {IrdaProtocolNEC, 0xFF00, 0x02, true}, - {IrdaProtocolNEC, 0xFF00, 0x02, true}, - {IrdaProtocolNEC, 0xFF00, 0x02, true}, - {IrdaProtocolNEC, 0xFF00, 0x02, true}, - {IrdaProtocolNEC, 0xFF00, 0x06, false}, - {IrdaProtocolNEC, 0xFF00, 0x06, true}, - {IrdaProtocolNEC, 0xFF00, 0x04, false}, - {IrdaProtocolNEC, 0xFF00, 0x04, true}, - {IrdaProtocolNEC, 0xFF00, 0x08, false}, - {IrdaProtocolNEC, 0xFF00, 0x08, true}, - {IrdaProtocolNEC, 0xFF00, 0x08, false}, - {IrdaProtocolNEC, 0xFF00, 0x08, true}, - {IrdaProtocolNEC, 0xFF00, 0x08, false}, - {IrdaProtocolNEC, 0xFF00, 0x08, false}, - {IrdaProtocolNEC, 0xFF00, 0x08, false}, - {IrdaProtocolNEC, 0xFF00, 0x08, false}, - {IrdaProtocolNEC, 0xFF00, 0x08, false}, - {IrdaProtocolNEC, 0xFF00, 0x08, false}, - {IrdaProtocolNEC, 0xFF00, 0x08, false}, - {IrdaProtocolNEC, 0xFF00, 0x08, false}, - {IrdaProtocolNEC, 0xFF00, 0x08, false}, - {IrdaProtocolNEC, 0xFF00, 0x08, false}, - {IrdaProtocolNEC, 0xFF00, 0x08, false}, - {IrdaProtocolNEC, 0xFF00, 0x09, false}, - {IrdaProtocolNEC, 0xFF00, 0x09, false}, - {IrdaProtocolNEC, 0xFF00, 0x09, false}, - {IrdaProtocolNEC, 0xFF00, 0x08, false}, - {IrdaProtocolNEC, 0xFF00, 0x0A, false}, - {IrdaProtocolNEC, 0xFF00, 0x08, false}, - {IrdaProtocolNEC, 0xFF00, 0x08, true}, - {IrdaProtocolNEC, 0xFF00, 0x08, false}, - {IrdaProtocolNEC, 0xFF00, 0x08, true}, - {IrdaProtocolNEC, 0xFF00, 0x08, false}, - {IrdaProtocolNEC, 0xFF00, 0x0A, false}, - {IrdaProtocolNEC, 0xFF00, 0x08, false}, - {IrdaProtocolNEC, 0xFF00, 0x0A, false}, - {IrdaProtocolNEC, 0xFF00, 0x0A, true}, + {IrdaProtocolNEC, 0, 0x02, false}, + {IrdaProtocolNEC, 0, 0x02, true}, + {IrdaProtocolNEC, 0, 0x02, false}, + {IrdaProtocolNEC, 0, 0x02, true}, + {IrdaProtocolNEC, 0, 0x02, true}, + {IrdaProtocolNEC, 0, 0x02, true}, + {IrdaProtocolNEC, 0, 0x02, true}, + {IrdaProtocolNEC, 0, 0x02, true}, + {IrdaProtocolNEC, 0, 0x02, true}, + {IrdaProtocolNEC, 0, 0x02, true}, + {IrdaProtocolNEC, 0, 0x02, true}, + {IrdaProtocolNEC, 0, 0x02, true}, + {IrdaProtocolNEC, 0, 0x02, true}, + {IrdaProtocolNEC, 0, 0x02, true}, + {IrdaProtocolNEC, 0, 0x02, true}, + {IrdaProtocolNEC, 0, 0x02, true}, + {IrdaProtocolNEC, 0, 0x02, true}, + {IrdaProtocolNEC, 0, 0x02, true}, + {IrdaProtocolNEC, 0, 0x02, true}, + {IrdaProtocolNEC, 0, 0x06, false}, + {IrdaProtocolNEC, 0, 0x06, true}, + {IrdaProtocolNEC, 0, 0x04, false}, + {IrdaProtocolNEC, 0, 0x04, true}, + {IrdaProtocolNEC, 0, 0x08, false}, + {IrdaProtocolNEC, 0, 0x08, true}, + {IrdaProtocolNEC, 0, 0x08, false}, + {IrdaProtocolNEC, 0, 0x08, true}, + {IrdaProtocolNEC, 0, 0x08, false}, + {IrdaProtocolNEC, 0, 0x08, false}, + {IrdaProtocolNEC, 0, 0x08, false}, + {IrdaProtocolNEC, 0, 0x08, false}, + {IrdaProtocolNEC, 0, 0x08, false}, + {IrdaProtocolNEC, 0, 0x08, false}, + {IrdaProtocolNEC, 0, 0x08, false}, + {IrdaProtocolNEC, 0, 0x08, false}, + {IrdaProtocolNEC, 0, 0x08, false}, + {IrdaProtocolNEC, 0, 0x08, false}, + {IrdaProtocolNEC, 0, 0x08, false}, + {IrdaProtocolNEC, 0, 0x09, false}, + {IrdaProtocolNEC, 0, 0x09, false}, + {IrdaProtocolNEC, 0, 0x09, false}, + {IrdaProtocolNEC, 0, 0x08, false}, + {IrdaProtocolNEC, 0, 0x0A, false}, + {IrdaProtocolNEC, 0, 0x08, false}, + {IrdaProtocolNEC, 0, 0x08, true}, + {IrdaProtocolNEC, 0, 0x08, false}, + {IrdaProtocolNEC, 0, 0x08, true}, + {IrdaProtocolNEC, 0, 0x08, false}, + {IrdaProtocolNEC, 0, 0x0A, false}, + {IrdaProtocolNEC, 0, 0x08, false}, + {IrdaProtocolNEC, 0, 0x0A, false}, + {IrdaProtocolNEC, 0, 0x0A, true}, }; diff --git a/applications/tests/irda_decoder/test_data/irda_decoder_samsung_test_data.h b/applications/tests/irda_decoder/test_data/irda_decoder_samsung_test_data.h index e607684e..34d18300 100644 --- a/applications/tests/irda_decoder/test_data/irda_decoder_samsung_test_data.h +++ b/applications/tests/irda_decoder/test_data/irda_decoder_samsung_test_data.h @@ -1,184 +1,222 @@ const uint32_t test_samsung32_input1[] = { -3129767, 4513, 4483, 565, 530, 586, 1670, 563, 1664, 588, 1666, 566, 530, 586, 535, 560, 535, 591, 531, 565, 531, 585, 1669, 563, 1666, 587, 1640, 593, 531, 566, 530, 587, 536, 559, 562, 564, 531, 585, 537, 558, 1670, 562, 1665, 587, 534, 561, 534, 592, 530, 566, 529, 587, 1668, 564, 1664, 589, 533, 563, 533, 594, 1661, 560, 1667, 565, 1661, 591, 1664, 558, -46325, 4517, 4480, 558, 1668, 595, + 3129767, 4513, 4483, 565, 530, 586, 1670, 563, 1664, 588, 1666, 566, 530, 586, + 535, 560, 535, 591, 531, 565, 531, 585, 1669, 563, 1666, 587, 1640, 593, + 531, 566, 530, 587, 536, 559, 562, 564, 531, 585, 537, 558, 1670, 562, + 1665, 587, 534, 561, 534, 592, 530, 566, 529, 587, 1668, 564, 1664, 589, + 533, 563, 533, 594, 1661, 560, 1667, 565, 1661, 591, 1664, 558, 46325, 4517, + 4480, 558, 1668, 595, -679127, 4511, 4485, 562, 532, 584, 1671, 561, 1666, 587, 1668, 564, 532, 585, 537, 559, 537, 589, 533, 562, 533, 593, 1661, 561, 1667, 586, 1642, 590, 532, 563, 531, 585, 537, 559, 564, 563, 1666, 567, 528, 588, 535, 613, 483, 593, 530, 586, 536, 559, 536, 590, 1637, 584, 537, 558, 1669, 594, 1661, 561, 1667, 586, 1642, 591, 1664, 559, 1670, 583, 534, 567, -46429, 4515, 4480, 558, 1671, 593, + 679127, 4511, 4485, 562, 532, 584, 1671, 561, 1666, 587, 1668, 564, 532, 585, + 537, 559, 537, 589, 533, 562, 533, 593, 1661, 561, 1667, 586, 1642, 590, + 532, 563, 531, 585, 537, 559, 564, 563, 1666, 567, 528, 588, 535, 613, + 483, 593, 530, 586, 536, 559, 536, 590, 1637, 584, 537, 558, 1669, 594, + 1661, 561, 1667, 586, 1642, 591, 1664, 559, 1670, 583, 534, 567, 46429, 4515, + 4480, 558, 1671, 593, -618571, 4508, 4488, 560, 561, 566, 1663, 559, 1667, 583, 1670, 562, 534, 582, 540, 565, 531, 587, 536, 560, 536, 590, 1664, 558, 1670, 583, 1644, 588, 535, 561, 534, 592, 530, 566, 557, 610, 1616, 616, 479, 585, 537, 558, 537, 589, 534, 584, 539, 567, 529, 587, 534, 561, 534, 592, 1663, 559, 1668, 564, 1664, 588, 1666, 566, 1661, 581, 1646, 585, 1669, 563, -46106, 4511, 4485, 563, 1664, 589, + 618571, 4508, 4488, 560, 561, 566, 1663, 559, 1667, 583, 1670, 562, 534, 582, + 540, 565, 531, 587, 536, 560, 536, 590, 1664, 558, 1670, 583, 1644, 588, + 535, 561, 534, 592, 530, 566, 557, 610, 1616, 616, 479, 585, 537, 558, + 537, 589, 534, 584, 539, 567, 529, 587, 534, 561, 534, 592, 1663, 559, + 1668, 564, 1664, 588, 1666, 566, 1661, 581, 1646, 585, 1669, 563, 46106, 4511, + 4485, 563, 1664, 589, -514897, 4514, 4482, 556, 564, 614, 1616, 565, 1664, 589, 1666, 557, 538, 588, 534, 562, 534, 592, 529, 566, 529, 587, 1667, 565, 1663, 590, 1638, 584, 538, 568, 527, 590, 534, 562, 562, 566, 530, 587, 1642, 590, 532, 563, 530, 586, 537, 589, 533, 563, 533, 583, 539, 566, 1661, 561, 561, 566, 1663, 559, 1668, 584, 1671, 563, 1666, 556, 1671, 591, 1663, 559, -46210, 4508, 4488, 560, 1668, 585, + 514897, 4514, 4482, 556, 564, 614, 1616, 565, 1664, 589, 1666, 557, 538, 588, + 534, 562, 534, 592, 529, 566, 529, 587, 1667, 565, 1663, 590, 1638, 584, + 538, 568, 527, 590, 534, 562, 562, 566, 530, 587, 1642, 590, 532, 563, + 530, 586, 537, 589, 533, 563, 533, 583, 539, 566, 1661, 561, 561, 566, + 1663, 559, 1668, 584, 1671, 563, 1666, 556, 1671, 591, 1663, 559, 46210, 4508, + 4488, 560, 1668, 585, -683922, 4509, 4487, 561, 560, 565, 1662, 559, 1669, 585, 1670, 562, 534, 583, 540, 566, 529, 586, 535, 560, 535, 591, 1663, 559, 1669, 584, 1644, 588, 534, 561, 533, 593, 529, 556, 567, 561, 1668, 564, 1664, 590, 534, 563, 532, 584, 538, 557, 537, 589, 534, 562, 534, 593, 530, 566, 555, 561, 1667, 564, 1662, 589, 1665, 557, 1671, 581, 1647, 586, 1669, 564, -46686, 4514, 4481, 556, 1672, 592, + 683922, 4509, 4487, 561, 560, 565, 1662, 559, 1669, 585, 1670, 562, 534, 583, + 540, 566, 529, 586, 535, 560, 535, 591, 1663, 559, 1669, 584, 1644, 588, + 534, 561, 533, 593, 529, 556, 567, 561, 1668, 564, 1664, 590, 534, 563, + 532, 584, 538, 557, 537, 589, 534, 562, 534, 593, 530, 566, 555, 561, + 1667, 564, 1662, 589, 1665, 557, 1671, 581, 1647, 586, 1669, 564, 46686, 4514, + 4481, 556, 1672, 592, -1088255, 4514, 4481, 557, 564, 562, 1667, 565, 1663, 591, 1665, 558, 538, 590, 533, 564, 532, 583, 539, 567, 528, 588, 1666, 566, 1663, 580, 1648, 585, 537, 559, 537, 589, 533, 562, 560, 618, 478, 589, 535, 562, 1667, 565, 1662, 588, 531, 565, 531, 585, 537, 558, 536, 590, 1666, 566, 1661, 592, 530, 566, 530, 586, 1669, 564, 1664, 558, 1669, 594, 1662, 560, -46291, 4510, 4485, 563, 1663, 589, -97349, 4510, 4487, 561, 1666, 586, -97560, 4513, 4482, 566, 1662, 591, -97123, 4510, 4485, 563, 1664, 588, -97605, 4508, 4487, 561, 1666, 586, -97371, 4518, 4478, 560, 1668, 595, -97514, 4518, 4478, 560, 1667, 586, -97014, 4515, 4480, 568, 1660, 593, -96719, 4516, 4481, 567, 1660, 593, -97528, 4515, 4480, 568, 1659, 593, -97453, 4510, 4485, 563, 1665, 587, -97351, 4518, 4477, 561, 1668, 585, -97216, 4511, 4484, 564, 1664, 589, -97708, 4518, 4477, 561, 1667, 586, -96718, 4516, 4479, 559, 1669, 594, -97070, 4515, 4480, 568, 1660, 593, -97500, 4511, 4484, 564, 1662, 590, -97425, 4515, 4481, 567, 1660, 593, -97025, 4515, 4482, 566, 1660, 592, -96796, 4509, 4487, 561, 1666, 587, -97399, 4512, 4484, 565, 1662, 591, -97486, 4516, 4480, 567, 1658, 594, -97425, 4515, 4481, 567, 1659, 593, -97511, 4510, 4485, 563, 1664, 650, -96969, 4511, 4485, 562, 1665, 588, -97243, 4512, 4484, 564, 1663, 590, -97031, 4519, 4478, 560, 1666, 586, -97548, 4514, 4482, 566, 1661, 591, -97302, 4515, 4480, 568, 1659, 593, -97726, 4510, 4486, 562, 1665, 588, -97396, 4514, 4482, 566, 1661, 592, -97301, 4515, 4480, 568, 1661, 593, -97453, 4518, 4477, 560, 1667, 585, -97430, 4518, 4477, 561, 1665, 587, -97521, 4511, 4484, 564, 1664, 589, -97182, 4512, 4484, 564, 1663, 590, -97760, 4516, 4479, 559, 1668, 595, -97268, 4516, 4479, 559, 1668, 595, -97243, 4512, 4485, 563, 1663, 589, -97695, 4510, 4486, 562, 1664, 588, -374205, 4513, 4483, 565, 530, 586, 1669, 564, 1665, 589, 1667, 567, 529, 587, 535, 560, 535, 591, 531, 565, 530, 585, 1669, 563, 1664, 588, 1639, 593, 529, 566, 529, 587, 536, 560, 563, 565, 532, 585, 537, 560, 1669, 563, 1664, 587, 534, 561, 534, 592, 529, 566, 529, 586, 1668, 564, 1663, 589, 532, 563, 534, 593, 1661, 562, 1666, 566, 1662, 591, 1664, 558, + 1088255, 4514, 4481, 557, 564, 562, 1667, 565, 1663, 591, 1665, 558, 538, 590, + 533, 564, 532, 583, 539, 567, 528, 588, 1666, 566, 1663, 580, 1648, 585, + 537, 559, 537, 589, 533, 562, 560, 618, 478, 589, 535, 562, 1667, 565, + 1662, 588, 531, 565, 531, 585, 537, 558, 536, 590, 1666, 566, 1661, 592, + 530, 566, 530, 586, 1669, 564, 1664, 558, 1669, 594, 1662, 560, 46291, 4510, + 4485, 563, 1663, 589, 97349, 4510, 4487, 561, 1666, 586, 97560, 4513, 4482, 566, + 1662, 591, 97123, 4510, 4485, 563, 1664, 588, 97605, 4508, 4487, 561, 1666, 586, + 97371, 4518, 4478, 560, 1668, 595, 97514, 4518, 4478, 560, 1667, 586, 97014, 4515, + 4480, 568, 1660, 593, 96719, 4516, 4481, 567, 1660, 593, 97528, 4515, 4480, 568, + 1659, 593, 97453, 4510, 4485, 563, 1665, 587, 97351, 4518, 4477, 561, 1668, 585, + 97216, 4511, 4484, 564, 1664, 589, 97708, 4518, 4477, 561, 1667, 586, 96718, 4516, + 4479, 559, 1669, 594, 97070, 4515, 4480, 568, 1660, 593, 97500, 4511, 4484, 564, + 1662, 590, 97425, 4515, 4481, 567, 1660, 593, 97025, 4515, 4482, 566, 1660, 592, + 96796, 4509, 4487, 561, 1666, 587, 97399, 4512, 4484, 565, 1662, 591, 97486, 4516, + 4480, 567, 1658, 594, 97425, 4515, 4481, 567, 1659, 593, 97511, 4510, 4485, 563, + 1664, 650, 96969, 4511, 4485, 562, 1665, 588, 97243, 4512, 4484, 564, 1663, 590, + 97031, 4519, 4478, 560, 1666, 586, 97548, 4514, 4482, 566, 1661, 591, 97302, 4515, + 4480, 568, 1659, 593, 97726, 4510, 4486, 562, 1665, 588, 97396, 4514, 4482, 566, + 1661, 592, 97301, 4515, 4480, 568, 1661, 593, 97453, 4518, 4477, 560, 1667, 585, + 97430, 4518, 4477, 561, 1665, 587, 97521, 4511, 4484, 564, 1664, 589, 97182, 4512, + 4484, 564, 1663, 590, 97760, 4516, 4479, 559, 1668, 595, 97268, 4516, 4479, 559, + 1668, 595, 97243, 4512, 4485, 563, 1663, 589, 97695, 4510, 4486, 562, 1664, 588, + 374205, 4513, 4483, 565, 530, 586, 1669, 564, 1665, 589, 1667, 567, 529, 587, + 535, 560, 535, 591, 531, 565, 530, 585, 1669, 563, 1664, 588, 1639, 593, + 529, 566, 529, 587, 536, 560, 563, 565, 532, 585, 537, 560, 1669, 563, + 1664, 587, 534, 561, 534, 592, 529, 566, 529, 586, 1668, 564, 1663, 589, + 532, 563, 534, 593, 1661, 562, 1666, 566, 1662, 591, 1664, 558, -149343, 4512, 4483, 565, 530, 586, 1669, 563, 1664, 588, 1667, 565, 530, 586, 536, 560, 536, 590, 532, 563, 531, 586, 1670, 563, 1666, 567, 1660, 592, 530, 565, 529, 586, 537, 558, 563, 563, 532, 584, 538, 568, 1661, 561, 1665, 587, 535, 560, 535, 592, 532, 565, 531, 587, 1669, 563, 1665, 587, 534, 561, 534, 592, 1663, 559, 1668, 564, 1662, 590, 1666, 566, + 149343, 4512, 4483, 565, 530, 586, 1669, 563, 1664, 588, 1667, 565, 530, 586, + 536, 560, 536, 590, 532, 563, 531, 586, 1670, 563, 1666, 567, 1660, 592, + 530, 565, 529, 586, 537, 558, 563, 563, 532, 584, 538, 568, 1661, 561, + 1665, 587, 535, 560, 535, 592, 532, 565, 531, 587, 1669, 563, 1665, 587, + 534, 561, 534, 592, 1663, 559, 1668, 564, 1662, 590, 1666, 566, -116399, 4514, 4482, 566, 531, 587, 1669, 564, 1664, 589, 1666, 566, 529, 587, 535, 561, 535, 592, 531, 565, 529, 587, 1668, 564, 1664, 558, 1670, 595, 529, 566, 528, 589, 535, 560, 562, 565, 531, 585, 536, 559, 1668, 564, 1664, 589, 534, 561, 533, 593, 530, 565, 528, 588, 1668, 564, 1665, 590, 533, 564, 532, 594, 1661, 561, 1666, 566, 1661, 592, 1663, 558, + 116399, 4514, 4482, 566, 531, 587, 1669, 564, 1664, 589, 1666, 566, 529, 587, + 535, 561, 535, 592, 531, 565, 529, 587, 1668, 564, 1664, 558, 1670, 595, + 529, 566, 528, 589, 535, 560, 562, 565, 531, 585, 536, 559, 1668, 564, + 1664, 589, 534, 561, 533, 593, 530, 565, 528, 588, 1668, 564, 1665, 590, + 533, 564, 532, 594, 1661, 561, 1666, 566, 1661, 592, 1663, 558, -121946, 4517, 4478, 559, 537, 590, 1664, 568, 1660, 593, 1661, 560, 536, 590, 531, 564, 531, 585, 537, 559, 536, 590, 1665, 568, 1661, 561, 1666, 587, 537, 559, 529, 591, 531, 564, 558, 558, 537, 588, 533, 562, 1665, 567, 1659, 593, 530, 565, 529, 587, 536, 561, 535, 592, 1664, 559, 1671, 593, 530, 566, 528, 587, 1667, 565, 1662, 558, 1668, 595, 1660, 561, -46509, 4516, 4479, 558, 1668, 594, + 121946, 4517, 4478, 559, 537, 590, 1664, 568, 1660, 593, 1661, 560, 536, 590, + 531, 564, 531, 585, 537, 559, 536, 590, 1665, 568, 1661, 561, 1666, 587, + 537, 559, 529, 591, 531, 564, 558, 558, 537, 588, 533, 562, 1665, 567, + 1659, 593, 530, 565, 529, 587, 536, 561, 535, 592, 1664, 559, 1671, 593, + 530, 566, 528, 587, 1667, 565, 1662, 558, 1668, 595, 1660, 561, 46509, 4516, + 4479, 558, 1668, 594, -88785, 4512, 4484, 564, 530, 585, 1669, 563, 1664, 588, 1666, 566, 530, 587, 536, 560, 535, 592, 532, 565, 531, 585, 1669, 563, 1665, 557, 1669, 594, 530, 566, 530, 586, 535, 560, 562, 564, 530, 585, 537, 558, 1669, 563, 1664, 589, 535, 561, 534, 593, 529, 566, 529, 586, 1668, 564, 1664, 589, 533, 562, 532, 594, 1661, 561, 1666, 565, 1662, 591, 1665, 558, + 88785, 4512, 4484, 564, 530, 585, 1669, 563, 1664, 588, 1666, 566, 530, 587, + 536, 560, 535, 592, 532, 565, 531, 585, 1669, 563, 1665, 557, 1669, 594, + 530, 566, 530, 586, 535, 560, 562, 564, 530, 585, 537, 558, 1669, 563, + 1664, 589, 535, 561, 534, 593, 529, 566, 529, 586, 1668, 564, 1664, 589, + 533, 562, 532, 594, 1661, 561, 1666, 565, 1662, 591, 1665, 558, -289651, 4512, 4483, 564, 531, 586, 1669, 563, 1665, 588, 1667, 565, 529, 587, 536, 560, 536, 590, 531, 563, 531, 584, 1670, 562, 1666, 556, 1671, 592, 529, 566, 531, 586, 536, 561, 562, 564, 532, 585, 537, 558, 1669, 563, 1665, 588, 535, 561, 536, 590, 530, 565, 531, 585, 1669, 563, 1664, 587, 534, 561, 533, 593, 1662, 561, 1669, 564, 1663, 590, 1665, 567, -46302, 4509, 4487, 561, 1667, 585, + 289651, 4512, 4483, 564, 531, 586, 1669, 563, 1665, 588, 1667, 565, 529, 587, + 536, 560, 536, 590, 531, 563, 531, 584, 1670, 562, 1666, 556, 1671, 592, + 529, 566, 531, 586, 536, 561, 562, 564, 532, 585, 537, 558, 1669, 563, + 1665, 588, 535, 561, 536, 590, 530, 565, 531, 585, 1669, 563, 1664, 587, + 534, 561, 533, 593, 1662, 561, 1669, 564, 1663, 590, 1665, 567, 46302, 4509, + 4487, 561, 1667, 585, -97097, 4513, 4483, 565, 529, 587, 1668, 564, 1663, 589, 1666, 567, 529, 587, 536, 560, 535, 591, 530, 565, 529, 587, 1669, 563, 1664, 558, 1669, 594, 529, 566, 527, 587, 535, 561, 561, 563, 530, 586, 537, 560, 1669, 563, 1663, 589, 534, 561, 532, 594, 529, 566, 528, 587, 1668, 564, 1663, 589, 532, 563, 532, 594, 1660, 561, 1667, 566, 1661, 592, 1663, 558, -46311, 4510, 4485, 562, 1665, 589, + 97097, 4513, 4483, 565, 529, 587, 1668, 564, 1663, 589, 1666, 567, 529, 587, + 536, 560, 535, 591, 530, 565, 529, 587, 1669, 563, 1664, 558, 1669, 594, + 529, 566, 527, 587, 535, 561, 561, 563, 530, 586, 537, 560, 1669, 563, + 1663, 589, 534, 561, 532, 594, 529, 566, 528, 587, 1668, 564, 1663, 589, + 532, 563, 532, 594, 1660, 561, 1667, 566, 1661, 592, 1663, 558, 46311, 4510, + 4485, 562, 1665, 589, -99001, 4514, 4481, 566, 528, 587, 1667, 565, 1662, 589, 1664, 568, 528, 588, 535, 561, 535, 593, 529, 567, 528, 589, 1668, 564, 1663, 559, 1668, 595, 528, 567, 527, 589, 534, 562, 561, 565, 530, 586, 536, 560, 1668, 564, 1663, 590, 533, 563, 532, 595, 524, 567, 527, 588, 1667, 565, 1662, 590, 532, 563, 531, 595, 1659, 562, 1666, 566, 1661, 593, 1664, 559, + 99001, 4514, 4481, 566, 528, 587, 1667, 565, 1662, 589, 1664, 568, 528, 588, + 535, 561, 535, 593, 529, 567, 528, 589, 1668, 564, 1663, 559, 1668, 595, + 528, 567, 527, 589, 534, 562, 561, 565, 530, 586, 536, 560, 1668, 564, + 1663, 590, 533, 563, 532, 595, 524, 567, 527, 588, 1667, 565, 1662, 590, + 532, 563, 531, 595, 1659, 562, 1666, 566, 1661, 593, 1664, 559, -300259, 4514, 4482, 556, 565, 561, 1668, 564, 1663, 589, 1664, 556, 539, 588, 535, 561, 535, 643, 478, 568, 530, 587, 1668, 564, 1664, 589, 1636, 594, 529, 567, 528, 588, 534, 561, 561, 565, 1662, 560, 536, 590, 532, 564, 531, 586, 537, 589, 532, 564, 533, 584, 538, 568, 528, 588, 1667, 565, 1662, 560, 1669, 584, 1670, 562, 1666, 587, 1641, 591, 1664, 559, -46271, 4561, 4435, 562, 1666, 586, + 300259, 4514, 4482, 556, 565, 561, 1668, 564, 1663, 589, 1664, 556, 539, 588, + 535, 561, 535, 643, 478, 568, 530, 587, 1668, 564, 1664, 589, 1636, 594, + 529, 567, 528, 588, 534, 561, 561, 565, 1662, 560, 536, 590, 532, 564, + 531, 586, 537, 589, 532, 564, 533, 584, 538, 568, 528, 588, 1667, 565, + 1662, 560, 1669, 584, 1670, 562, 1666, 587, 1641, 591, 1664, 559, 46271, 4561, + 4435, 562, 1666, 586, -81421, 4514, 4482, 556, 565, 561, 1667, 565, 1662, 589, 1664, 558, 538, 588, 534, 562, 534, 593, 530, 567, 530, 587, 1669, 564, 1663, 589, 1637, 594, 529, 567, 528, 588, 534, 561, 560, 566, 1663, 559, 535, 591, 531, 565, 530, 587, 538, 589, 533, 563, 533, 583, 539, 567, 529, 587, 1667, 565, 1662, 560, 1669, 584, 1669, 563, 1666, 587, 1640, 592, 1663, 560, -46296, 4516, 4480, 558, 1669, 594, + 81421, 4514, 4482, 556, 565, 561, 1667, 565, 1662, 589, 1664, 558, 538, 588, + 534, 562, 534, 593, 530, 567, 530, 587, 1669, 564, 1663, 589, 1637, 594, + 529, 567, 528, 588, 534, 561, 560, 566, 1663, 559, 535, 591, 531, 565, + 530, 587, 538, 589, 533, 563, 533, 583, 539, 567, 529, 587, 1667, 565, + 1662, 560, 1669, 584, 1669, 563, 1666, 587, 1640, 592, 1663, 560, 46296, 4516, + 4480, 558, 1669, 594, -80690, 4508, 4489, 560, 561, 565, 1663, 558, 1670, 593, 1660, 561, 534, 592, 530, 565, 530, 586, 537, 560, 536, 591, 1664, 558, 1670, 583, 1644, 587, 535, 560, 534, 592, 530, 566, 556, 559, 1669, 563, 532, 584, 538, 558, 537, 588, 534, 582, 540, 567, 530, 588, 535, 562, 535, 591, 1663, 559, 1669, 564, 1665, 588, 1666, 566, 1662, 560, 1668, 585, 1669, 563, + 80690, 4508, 4489, 560, 561, 565, 1663, 558, 1670, 593, 1660, 561, 534, 592, + 530, 565, 530, 586, 537, 560, 536, 591, 1664, 558, 1670, 583, 1644, 587, + 535, 560, 534, 592, 530, 566, 556, 559, 1669, 563, 532, 584, 538, 558, + 537, 588, 534, 582, 540, 567, 530, 588, 535, 562, 535, 591, 1663, 559, + 1669, 564, 1665, 588, 1666, 566, 1662, 560, 1668, 585, 1669, 563, -136483, 4511, 4485, 563, 531, 585, 1671, 561, 1666, 587, 1668, 564, 531, 585, 536, 559, 537, 589, 532, 563, 532, 584, 1670, 562, 1666, 587, 1642, 591, 531, 566, 531, 585, 536, 559, 563, 563, 1665, 567, 528, 588, 535, 561, 534, 593, 529, 567, 556, 560, 535, 591, 530, 565, 531, 585, 1670, 563, 1665, 568, 1660, 593, 1662, 560, 1668, 564, 1663, 590, 1666, 566, + 136483, 4511, 4485, 563, 531, 585, 1671, 561, 1666, 587, 1668, 564, 531, 585, + 536, 559, 537, 589, 532, 563, 532, 584, 1670, 562, 1666, 587, 1642, 591, + 531, 566, 531, 585, 536, 559, 563, 563, 1665, 567, 528, 588, 535, 561, + 534, 593, 529, 567, 556, 560, 535, 591, 530, 565, 531, 585, 1670, 563, + 1665, 568, 1660, 593, 1662, 560, 1668, 564, 1663, 590, 1666, 566, -129038, 4511, 4484, 564, 533, 583, 1670, 562, 1666, 587, 1668, 565, 532, 586, 537, 559, 536, 591, 532, 564, 532, 594, 1660, 562, 1666, 566, 1660, 593, 531, 565, 530, 586, 537, 558, 563, 563, 1664, 568, 528, 589, 535, 562, 533, 595, 530, 567, 556, 560, 535, 591, 531, 565, 531, 584, 1669, 563, 1664, 567, 1661, 592, 1662, 559, 1668, 564, 1663, 590, 1666, 566, -46187, 4511, 4486, 562, 1665, 589, + 129038, 4511, 4484, 564, 533, 583, 1670, 562, 1666, 587, 1668, 565, 532, 586, + 537, 559, 536, 591, 532, 564, 532, 594, 1660, 562, 1666, 566, 1660, 593, + 531, 565, 530, 586, 537, 558, 563, 563, 1664, 568, 528, 589, 535, 562, + 533, 595, 530, 567, 556, 560, 535, 591, 531, 565, 531, 584, 1669, 563, + 1664, 567, 1661, 592, 1662, 559, 1668, 564, 1663, 590, 1666, 566, 46187, 4511, + 4486, 562, 1665, 589, -110663, 4517, 4478, 558, 536, 590, 1665, 568, 1660, 593, 1661, 560, 536, 590, 531, 564, 531, 584, 537, 558, 536, 590, 1665, 567, 1661, 561, 1666, 587, 536, 560, 535, 591, 532, 564, 559, 557, 1670, 562, 532, 594, 529, 567, 528, 649, 473, 561, 561, 565, 531, 585, 536, 559, 536, 589, 1665, 567, 1660, 562, 1666, 587, 1668, 564, 1663, 558, 1669, 594, 1661, 561, + 110663, 4517, 4478, 558, 536, 590, 1665, 568, 1660, 593, 1661, 560, 536, 590, + 531, 564, 531, 584, 537, 558, 536, 590, 1665, 567, 1661, 561, 1666, 587, + 536, 560, 535, 591, 532, 564, 559, 557, 1670, 562, 532, 594, 529, 567, + 528, 649, 473, 561, 561, 565, 531, 585, 536, 559, 536, 589, 1665, 567, + 1660, 562, 1666, 587, 1668, 564, 1663, 558, 1669, 594, 1661, 561, -143736, 4517, 4479, 559, 536, 591, 1664, 558, 1670, 593, 1661, 559, 536, 590, 531, 564, 531, 585, 536, 559, 537, 589, 1665, 567, 1661, 561, 1666, 587, 536, 560, 536, 590, 530, 564, 557, 558, 1669, 562, 533, 593, 528, 568, 530, 586, 534, 561, 560, 566, 530, 586, 536, 560, 536, 591, 1664, 558, 1671, 562, 1666, 587, 1667, 565, 1663, 559, 1668, 594, 1660, 562, -46234, 4514, 4482, 566, 1661, 591, + 143736, 4517, 4479, 559, 536, 591, 1664, 558, 1670, 593, 1661, 559, 536, 590, + 531, 564, 531, 585, 536, 559, 537, 589, 1665, 567, 1661, 561, 1666, 587, + 536, 560, 536, 590, 530, 564, 557, 558, 1669, 562, 533, 593, 528, 568, + 530, 586, 534, 561, 560, 566, 530, 586, 536, 560, 536, 591, 1664, 558, + 1671, 562, 1666, 587, 1667, 565, 1663, 559, 1668, 594, 1660, 562, 46234, 4514, + 4482, 566, 1661, 591, -120661, 4564, 4432, 565, 530, 586, 1669, 563, 1665, 587, 1666, 566, 531, 585, 536, 559, 536, 591, 532, 564, 532, 586, 1670, 563, 1666, 557, 1666, 592, 530, 565, 530, 586, 536, 560, 562, 563, 1664, 558, 538, 588, 533, 562, 533, 593, 528, 558, 565, 561, 534, 582, 541, 566, 530, 586, 1670, 563, 1664, 567, 1660, 593, 1662, 560, 1668, 564, 1663, 590, 1665, 567, -46472, 4513, 4484, 564, 1664, 588, + 120661, 4564, 4432, 565, 530, 586, 1669, 563, 1665, 587, 1666, 566, 531, 585, + 536, 559, 536, 591, 532, 564, 532, 586, 1670, 563, 1666, 557, 1666, 592, + 530, 565, 530, 586, 536, 560, 562, 563, 1664, 558, 538, 588, 533, 562, + 533, 593, 528, 558, 565, 561, 534, 582, 541, 566, 530, 586, 1670, 563, + 1664, 567, 1660, 593, 1662, 560, 1668, 564, 1663, 590, 1665, 567, 46472, 4513, + 4484, 564, 1664, 588, -125301, 4511, 4484, 564, 532, 584, 1670, 562, 1666, 587, 1668, 565, 531, 586, 537, 560, 537, 591, 532, 565, 533, 584, 1671, 562, 1666, 566, 1661, 591, 530, 565, 532, 584, 536, 559, 562, 564, 1665, 567, 529, 587, 534, 563, 535, 593, 529, 568, 556, 561, 535, 592, 531, 565, 531, 585, 1669, 563, 1665, 567, 1660, 593, 1663, 559, 1668, 564, 1664, 589, 1666, 567, + 125301, 4511, 4484, 564, 532, 584, 1670, 562, 1666, 587, 1668, 565, 531, 586, + 537, 560, 537, 591, 532, 565, 533, 584, 1671, 562, 1666, 566, 1661, 591, + 530, 565, 532, 584, 536, 559, 562, 564, 1665, 567, 529, 587, 534, 563, + 535, 593, 529, 568, 556, 561, 535, 592, 531, 565, 531, 585, 1669, 563, + 1665, 567, 1660, 593, 1663, 559, 1668, 564, 1664, 589, 1666, 567, -200253, 4517, 4479, 558, 562, 615, 1613, 558, 1670, 592, 1661, 560, 536, 591, 531, 616, 480, 585, 537, 559, 537, 641, 1613, 568, 1661, 582, 1646, 586, 536, 559, 535, 591, 532, 564, 558, 558, 1670, 562, 533, 592, 530, 566, 529, 588, 536, 581, 542, 617, 479, 587, 537, 560, 536, 590, 1665, 557, 1670, 562, 1666, 587, 1668, 564, 1664, 558, 1669, 593, 1662, 561, -46230, 4570, 4426, 561, 1667, 586, + 200253, 4517, 4479, 558, 562, 615, 1613, 558, 1670, 592, 1661, 560, 536, 591, + 531, 616, 480, 585, 537, 559, 537, 641, 1613, 568, 1661, 582, 1646, 586, + 536, 559, 535, 591, 532, 564, 558, 558, 1670, 562, 533, 592, 530, 566, + 529, 588, 536, 581, 542, 617, 479, 587, 537, 560, 536, 590, 1665, 557, + 1670, 562, 1666, 587, 1668, 564, 1664, 558, 1669, 593, 1662, 561, 46230, 4570, + 4426, 561, 1667, 586, -115418, 4514, 4483, 565, 557, 561, 1669, 563, 1664, 589, 1666, 566, 529, 587, 534, 561, 534, 592, 530, 566, 530, 586, 1668, 564, 1664, 589, 1639, 594, 529, 567, 528, 587, 534, 561, 561, 565, 1663, 559, 535, 590, 532, 563, 532, 584, }; + 115418, 4514, 4483, 565, 557, 561, 1669, 563, 1664, 589, 1666, 566, 529, 587, + 534, 561, 534, 592, 530, 566, 530, 586, 1668, 564, 1664, 589, 1639, 594, + 529, 567, 528, 587, 534, 561, 561, 565, 1663, 559, 535, 590, 532, 563, + 532, 584, +}; const IrdaMessage test_samsung32_expected1[] = { - {IrdaProtocolSamsung32, 0x0E, 0x0C, false}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x81, false}, - {IrdaProtocolSamsung32, 0x0E, 0x81, true}, - {IrdaProtocolSamsung32, 0x0E, 0x01, false}, - {IrdaProtocolSamsung32, 0x0E, 0x01, true}, - {IrdaProtocolSamsung32, 0x0E, 0x02, false}, - {IrdaProtocolSamsung32, 0x0E, 0x02, true}, - {IrdaProtocolSamsung32, 0x0E, 0x03, false}, - {IrdaProtocolSamsung32, 0x0E, 0x03, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, false}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, false}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, false}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, false}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, false}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, false}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, false}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, false}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, - {IrdaProtocolSamsung32, 0x0E, 0x0C, false}, - {IrdaProtocolSamsung32, 0x0E, 0x01, false}, - {IrdaProtocolSamsung32, 0x0E, 0x01, true}, - {IrdaProtocolSamsung32, 0x0E, 0x01, false}, - {IrdaProtocolSamsung32, 0x0E, 0x01, true}, - {IrdaProtocolSamsung32, 0x0E, 0x01, false}, - {IrdaProtocolSamsung32, 0x0E, 0x01, false}, - {IrdaProtocolSamsung32, 0x0E, 0x01, false}, - {IrdaProtocolSamsung32, 0x0E, 0x01, true}, - {IrdaProtocolSamsung32, 0x0E, 0x01, false}, - {IrdaProtocolSamsung32, 0x0E, 0x01, false}, - {IrdaProtocolSamsung32, 0x0E, 0x01, true}, - {IrdaProtocolSamsung32, 0x0E, 0x01, false}, - {IrdaProtocolSamsung32, 0x0E, 0x01, true}, - {IrdaProtocolSamsung32, 0x0E, 0x01, false}, - {IrdaProtocolSamsung32, 0x0E, 0x01, false}, - {IrdaProtocolSamsung32, 0x0E, 0x01, true}, + {IrdaProtocolSamsung32, 0x0E, 0x0C, false}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, + {IrdaProtocolSamsung32, 0x0E, 0x81, false}, {IrdaProtocolSamsung32, 0x0E, 0x81, true}, + {IrdaProtocolSamsung32, 0x0E, 0x01, false}, {IrdaProtocolSamsung32, 0x0E, 0x01, true}, + {IrdaProtocolSamsung32, 0x0E, 0x02, false}, {IrdaProtocolSamsung32, 0x0E, 0x02, true}, + {IrdaProtocolSamsung32, 0x0E, 0x03, false}, {IrdaProtocolSamsung32, 0x0E, 0x03, true}, + {IrdaProtocolSamsung32, 0x0E, 0x0C, false}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, + {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, + {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, + {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, + {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, + {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, + {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, + {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, + {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, + {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, + {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, + {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, + {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, + {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, + {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, + {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, + {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, + {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, + {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, + {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, + {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, false}, + {IrdaProtocolSamsung32, 0x0E, 0x0C, false}, {IrdaProtocolSamsung32, 0x0E, 0x0C, false}, + {IrdaProtocolSamsung32, 0x0E, 0x0C, false}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, + {IrdaProtocolSamsung32, 0x0E, 0x0C, false}, {IrdaProtocolSamsung32, 0x0E, 0x0C, false}, + {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, false}, + {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, false}, + {IrdaProtocolSamsung32, 0x0E, 0x01, false}, {IrdaProtocolSamsung32, 0x0E, 0x01, true}, + {IrdaProtocolSamsung32, 0x0E, 0x01, false}, {IrdaProtocolSamsung32, 0x0E, 0x01, true}, + {IrdaProtocolSamsung32, 0x0E, 0x01, false}, {IrdaProtocolSamsung32, 0x0E, 0x01, false}, + {IrdaProtocolSamsung32, 0x0E, 0x01, false}, {IrdaProtocolSamsung32, 0x0E, 0x01, true}, + {IrdaProtocolSamsung32, 0x0E, 0x01, false}, {IrdaProtocolSamsung32, 0x0E, 0x01, false}, + {IrdaProtocolSamsung32, 0x0E, 0x01, true}, {IrdaProtocolSamsung32, 0x0E, 0x01, false}, + {IrdaProtocolSamsung32, 0x0E, 0x01, true}, {IrdaProtocolSamsung32, 0x0E, 0x01, false}, + {IrdaProtocolSamsung32, 0x0E, 0x01, false}, {IrdaProtocolSamsung32, 0x0E, 0x01, true}, };