diff --git a/Core/Clock/clock_manager.h b/Core/Clock/clock_manager.h index ab68e28..fc1630a 100644 --- a/Core/Clock/clock_manager.h +++ b/Core/Clock/clock_manager.h @@ -23,4 +23,4 @@ void ClockManager_SetDuty(uint8_t value); // Сброс времени на 00:00:00 void ClockManager_ResetTime(void); -#endif \ No newline at end of file +#endif diff --git a/Core/Clock/melody.c b/Core/Clock/melody.c index 58e6508..914b025 100644 --- a/Core/Clock/melody.c +++ b/Core/Clock/melody.c @@ -104,4 +104,4 @@ void Melody_Update(MelodyHandle* mh) { uint8_t Melody_IsPlaying(MelodyHandle* mh) { return mh->is_playing; -} \ No newline at end of file +} diff --git a/Core/Clock/melody.h b/Core/Clock/melody.h index c567b1a..67f36a2 100644 --- a/Core/Clock/melody.h +++ b/Core/Clock/melody.h @@ -24,4 +24,4 @@ void Melody_Stop(MelodyHandle* mh); void Melody_Update(MelodyHandle* mh); uint8_t Melody_IsPlaying(MelodyHandle* mh); -#endif \ No newline at end of file +#endif diff --git a/Core/Clock/notes.h b/Core/Clock/notes.h index 6b1ce48..2af3b4d 100644 --- a/Core/Clock/notes.h +++ b/Core/Clock/notes.h @@ -158,4 +158,4 @@ typedef struct { #define NOTE_REST 0 -#endif \ No newline at end of file +#endif diff --git a/Core/Clock/segment.c b/Core/Clock/segment.c index 53d7ce6..fab55fa 100644 --- a/Core/Clock/segment.c +++ b/Core/Clock/segment.c @@ -13,13 +13,13 @@ volatile uint8_t GLOBAL_BRIGHTNESS = 100; // Глобальная ярко #define SWAP_BIT5_BIT6(x) (((x) & 0x9F) | (((x) & 0x20) << 1) | (((x) & 0x40) >> 1)) // Макросы для быстрой работы с пинами (вместо HAL_GPIO_WritePin) -#define SET_SEGMENT_A(val) SEGMENT_A_GPIO_Port->BSRR = (SEGMENT_A_Pin << 16) | ((val) ? 0 : SEGMENT_A_Pin) -#define SET_SEGMENT_B(val) SEGMENT_B_GPIO_Port->BSRR = (SEGMENT_B_Pin << 16) | ((val) ? 0 : SEGMENT_B_Pin) -#define SET_SEGMENT_C(val) SEGMENT_C_GPIO_Port->BSRR = (SEGMENT_C_Pin << 16) | ((val) ? 0 : SEGMENT_C_Pin) -#define SET_SEGMENT_D(val) SEGMENT_D_GPIO_Port->BSRR = (SEGMENT_D_Pin << 16) | ((val) ? 0 : SEGMENT_D_Pin) -#define SET_SEGMENT_E(val) SEGMENT_E_GPIO_Port->BSRR = (SEGMENT_E_Pin << 16) | ((val) ? 0 : SEGMENT_E_Pin) -#define SET_SEGMENT_F(val) SEGMENT_F_GPIO_Port->BSRR = (SEGMENT_F_Pin << 16) | ((val) ? 0 : SEGMENT_F_Pin) -#define SET_SEGMENT_G(val) SEGMENT_G_GPIO_Port->BSRR = (SEGMENT_G_Pin << 16) | ((val) ? 0 : SEGMENT_G_Pin) +#define SET_SEGMENT_A(val) SEGMENT_A_GPIO_Port->BSRR = ((uint32_t)SEGMENT_A_Pin << 16) | ((val) ? 0 : SEGMENT_A_Pin) +#define SET_SEGMENT_B(val) SEGMENT_B_GPIO_Port->BSRR = ((uint32_t)SEGMENT_B_Pin << 16) | ((val) ? 0 : SEGMENT_B_Pin) +#define SET_SEGMENT_C(val) SEGMENT_C_GPIO_Port->BSRR = ((uint32_t)SEGMENT_C_Pin << 16) | ((val) ? 0 : SEGMENT_C_Pin) +#define SET_SEGMENT_D(val) SEGMENT_D_GPIO_Port->BSRR = ((uint32_t)SEGMENT_D_Pin << 16) | ((val) ? 0 : SEGMENT_D_Pin) +#define SET_SEGMENT_E(val) SEGMENT_E_GPIO_Port->BSRR = ((uint32_t)SEGMENT_E_Pin << 16) | ((val) ? 0 : SEGMENT_E_Pin) +#define SET_SEGMENT_F(val) SEGMENT_F_GPIO_Port->BSRR = ((uint32_t)SEGMENT_F_Pin << 16) | ((val) ? 0 : SEGMENT_F_Pin) +#define SET_SEGMENT_G(val) SEGMENT_G_GPIO_Port->BSRR = ((uint32_t)SEGMENT_G_Pin << 16) | ((val) ? 0 : SEGMENT_G_Pin) // ==================== Таблица символов ==================== // Для общего анода: 0 - сегмент горит, 1 - сегмент не горит diff --git a/Core/Clock/segment.h b/Core/Clock/segment.h index 2a11272..98c25b3 100644 --- a/Core/Clock/segment.h +++ b/Core/Clock/segment.h @@ -31,4 +31,4 @@ void Segment_SetBrightness(uint8_t percent); // Вызывается каждые PROCESS_INTERVAL_US микросекунд или из таймера void Segment_Process(void); -#endif \ No newline at end of file +#endif diff --git a/Core/Clock/songs.h b/Core/Clock/songs.h index e6550c6..b827212 100644 --- a/Core/Clock/songs.h +++ b/Core/Clock/songs.h @@ -123,4 +123,4 @@ static const Note_t Polyphia_PlayingGod_Notes[] = { {SI2, NOTE_SIXTEENTH}, {MI3, NOTE_SIXTEENTH}, }; -static Melody_t Polyphia_PlayingGod = {song_length(Polyphia_PlayingGod_Notes), Polyphia_PlayingGod_Notes}; \ No newline at end of file +static Melody_t Polyphia_PlayingGod = {song_length(Polyphia_PlayingGod_Notes), Polyphia_PlayingGod_Notes}; diff --git a/Core/Clock/sounds.h b/Core/Clock/sounds.h index 0168993..49e70e0 100644 --- a/Core/Clock/sounds.h +++ b/Core/Clock/sounds.h @@ -51,4 +51,4 @@ static const Note_t SFX_Alarm_Notes[] = { {NOTE_REST, NOTE_EIGHTH}, {LA4, NOTE_EIGHTH} }; -static Melody_t SFX_Alarm = {song_length(SFX_Alarm_Notes), SFX_Alarm_Notes}; \ No newline at end of file +static Melody_t SFX_Alarm = {song_length(SFX_Alarm_Notes), SFX_Alarm_Notes}; diff --git a/Core/Menu/clock.c b/Core/Menu/clock.c new file mode 100644 index 0000000..a50a7aa --- /dev/null +++ b/Core/Menu/clock.c @@ -0,0 +1,208 @@ +#include "menu_items.h" +#include "segment.h" +#include "clock_manager.h" +#include +#include +#include + +typedef struct { + uint32_t startTime; + uint32_t elapsedTime; // + bool running; + uint8_t state; // 0 = , 1 = , 2 = +} StopwatchData; + +typedef struct { + uint32_t targetTime; // + uint32_t startTime; + uint32_t elapsedTime; // + uint8_t editStep; // 0-5: , 6: + uint8_t state; // 0 = , 1 = , 2 = , 3 = + bool running; + bool blinkState; + uint32_t lastBlink; +} TimerData; + +static StopwatchData g_stopwatch; +static TimerData g_timer; + +// :: +static void FormatTime(uint32_t ms, char* buf) { + uint32_t total_sec = ms / 1000; + uint32_t minutes = total_sec / 60; + uint32_t seconds = total_sec % 60; + uint32_t centiseconds = (ms % 1000) / 10; + + if (minutes > 0) { + sprintf(buf, "%2d%02d%02d", minutes, seconds, centiseconds); + } else { + sprintf(buf, " %2d%02d", seconds, centiseconds); + } +} + +/////// CLOCK //////// +static void Display_Clock(void) { + time_t now = ClockManager_GetTime(1); + char buf[7]; + sprintf(buf, "%02d%02d%02d", now.hour, now.min, now.sec); + Segment_SetString(buf); +} + +static void OnEnter_Clock(void) { + g_currentActivity = &g_clockNode; + g_rootMenu.parent = &g_clockNode; + Menu_Refresh(); +} + +static void Clock_OnButton(Button_Type btn, bool longPress) { + if (longPress && btn == BUTTON_SELECT) { + Menu_OpenMenu(&g_rootMenu); + return; + } + + if (btn == BUTTON_BACK) { + Menu_GoBack(); + } +} + +/////// //////// +static void Display_Stopwatch(void) { + char buf[7]; + uint32_t current_ms = 0; + + switch (g_stopwatch.state) { + case 0: // + sprintf(buf, " 000"); + break; + case 1: // + current_ms = (HAL_GetTick() - g_stopwatch.startTime) + g_stopwatch.elapsedTime; + FormatTime(current_ms, buf); + break; + case 2: // + FormatTime(g_stopwatch.elapsedTime, buf); + break; + default: + sprintf(buf, "ERROR"); + break; + } + Segment_SetString(buf); +} + +static void OnUpdate_Stopwatch(void) { + // update, + // .. Display + static uint32_t lastUpdate = 0; + if (g_stopwatch.state == 1) { + uint32_t tick = HAL_GetTick(); + if (tick - lastUpdate >= 10) { // 10 + lastUpdate = tick; + Menu_Refresh(); + } + } +} + +static void OnEnter_Stopwatch(void) { + g_currentActivity = &g_stopwatchNode; + g_rootMenu.parent = &g_stopwatchNode; + g_stopwatch.state = 0; + g_stopwatch.running = false; + g_stopwatch.elapsedTime = 0; + Menu_Refresh(); +} + +static void Stopwatch_OnButton(Button_Type btn, bool longPress) { + if (longPress && btn == BUTTON_SELECT) { + Menu_OpenMenu(&g_rootMenu); + return; + } + + uint32_t tick = HAL_GetTick(); + + if (g_stopwatch.state == 0 && btn == BUTTON_SELECT) { + // + g_stopwatch.state = 1; + g_stopwatch.running = true; + g_stopwatch.startTime = tick; + g_stopwatch.elapsedTime = 0; + Menu_Refresh(); + } + else if (g_stopwatch.state == 1 && btn == BUTTON_SELECT) { + // + g_stopwatch.state = 2; + g_stopwatch.running = false; + g_stopwatch.elapsedTime += tick - g_stopwatch.startTime; + Menu_Refresh(); + } + else if (g_stopwatch.state == 2 && btn == BUTTON_SELECT) { + // + g_stopwatch.state = 1; + g_stopwatch.running = true; + g_stopwatch.startTime = tick; + Menu_Refresh(); + } + else if ((g_stopwatch.state == 1 || g_stopwatch.state == 2) && btn == BUTTON_BACK) { + // + g_stopwatch.state = 0; + g_stopwatch.running = false; + g_stopwatch.elapsedTime = 0; + Menu_Refresh(); + } +} + +/////// //////// + +static void Display_Timer(void) { + Segment_SetString("FUTURE"); +} + +static void OnUpdate_Timer(void) { +} + +static void OnEnter_Timer(void) { +} + +static void Timer_OnButton(Button_Type btn, bool longPress) { +} + +// NODES +MenuNode g_clockNode = { + .name = "CLOC", + .parent = NULL, + .children = NULL, + .childCount = 0, + .selectedChild = 0, + .needsRedraw = 1, + .display = Display_Clock, + .onEnter = OnEnter_Clock, + .onUpdate = NULL, + .onButton = Clock_OnButton, + .data = NULL +}; + +MenuNode g_stopwatchNode = { + .name = "SECOND", + .parent = NULL, + .children = NULL, + .childCount = 0, + .selectedChild = 0, + .needsRedraw = 1, + .display = Display_Stopwatch, + .onEnter = OnEnter_Stopwatch, + .onUpdate = OnUpdate_Stopwatch, + .onButton = Stopwatch_OnButton, + .data = &g_stopwatch +}; + +MenuNode g_timerNode = { + .name = "TIMER", + .parent = NULL, + .children = NULL, + .childCount = 0, + .selectedChild = 0, + .needsRedraw = 1, + .display = Display_Timer, + .onEnter = OnEnter_Timer, + .onUpdate = OnUpdate_Timer, + .onButton = Timer_OnButton, + .data = &g_timer +}; diff --git a/Core/Menu/clock.h b/Core/Menu/clock.h new file mode 100644 index 0000000..2bdaf44 --- /dev/null +++ b/Core/Menu/clock.h @@ -0,0 +1,9 @@ +#ifndef GAMES_H +#define GAMES_H + +#include "menu.h" +extern MenuNode g_clockNode; +extern MenuNode g_timerNode; +extern MenuNode g_stopwatchNode; + +#endif diff --git a/Core/Menu/games.c b/Core/Menu/games.c new file mode 100644 index 0000000..32d0636 --- /dev/null +++ b/Core/Menu/games.c @@ -0,0 +1,275 @@ +#include "menu_items.h" +#include "segment.h" +#include "clock_manager.h" +#include "menu_items.h" +#include +#include +#include + + +typedef struct { + uint32_t startTime; + uint32_t pressTime; + bool celebrating; + bool result; + int32_t diff_ms; + uint8_t state; +} Game1SecData; + +typedef struct { + uint32_t waitStart; + uint32_t ledOnTime; + uint32_t reactionTime; + uint8_t state; +} GameReactionData; + +typedef struct { + uint32_t endTime; + uint16_t clicks; + bool active; + bool finished; +} GameClickerData; + +static Game1SecData g_game1sec; +static GameReactionData g_gameReaction; +static GameClickerData g_gameClicker; + + +/////// ZERO MILLIS //////// +static void Display_ZeroMillis(void) { + char buf[7]; + switch (g_game1sec.state) { + case 0: + g_game1sec.celebrating = 0; + sprintf(buf, "START"); break; + case 1: + g_game1sec.diff_ms = (HAL_GetTick() - g_game1sec.startTime); + case 2: + sprintf(buf, " %4d", g_game1sec.diff_ms/10); + break; + default: sprintf(buf, "ERROR"); break; + } + if(g_game1sec.state == 2) + { + if((g_game1sec.diff_ms/10)%100 == 0) + { + if(!g_game1sec.celebrating) + { + g_game1sec.celebrating = 1; + Melody_Play(&melody, &Polyphia_PlayingGod, 134); + } + } + } + Segment_SetString(buf); +} + +static void OnEnter_ZeroMillis(void) { + g_game1sec.state = 0; + Menu_Refresh(); +} + +static void ZeroMillis_OnButton(Button_Type btn, bool longPress) { + if (longPress && btn == BUTTON_SELECT) { + Menu_OpenMenu(&g_rootMenu); + return; + } + if (btn == BUTTON_BACK) { + Menu_GoBack(); + } + + uint32_t tick = HAL_GetTick(); + if (g_game1sec.state == 0 && btn == BUTTON_SELECT) { + g_game1sec.state = 1; + g_game1sec.startTime = tick; + Menu_Refresh(); + } + else if ((btn == BUTTON_SELECT) && (g_game1sec.state == 1)) { + g_game1sec.state = 2; + g_game1sec.pressTime = HAL_GetTick(); + g_game1sec.diff_ms = (g_game1sec.pressTime - g_game1sec.startTime); + if (g_game1sec.diff_ms < 0) g_game1sec.diff_ms = -g_game1sec.diff_ms; + Menu_Refresh(); + } + else if ((g_game1sec.state == 2) && (btn == BUTTON_SELECT)) + { + g_game1sec.state = 0; + } +} + + + +/////// REACTION //////// +static void OnUpdate_Reaction(void) { + uint32_t tick = HAL_GetTick(); + if (g_gameReaction.state == 1) { + if (tick - g_gameReaction.waitStart >= g_gameReaction.ledOnTime) { + g_gameReaction.state = 2; + g_gameReaction.waitStart = tick; + Menu_Refresh(); + } + } + else if (g_gameReaction.state == 2) { + if (tick - g_gameReaction.waitStart >= 2000) { + g_gameReaction.state = 3; + g_gameReaction.reactionTime = 999; + Menu_Refresh(); + } + } +} + +static void Display_Reaction(void) { + char buf[7]; + switch (g_gameReaction.state) { + case 0: sprintf(buf, "START"); break; + case 1: sprintf(buf, " "); break; + case 2: sprintf(buf, "888888"); break; + case 3: sprintf(buf, "%6d", g_gameReaction.reactionTime); break; + case 4: sprintf(buf, "FAIL"); break; + default: sprintf(buf, "ERROR"); break; + } + Segment_SetString(buf); +} + + +static void OnEnter_Reaction(void) { + g_gameReaction.state = 0; + Menu_Refresh(); +} + +static void Reaction_OnButton(Button_Type btn, bool longPress) { + if (longPress && btn == BUTTON_SELECT) { + Menu_OpenMenu(&g_rootMenu); + return; + } + + if (btn == BUTTON_BACK) { + Menu_GoBack(); + } + + uint32_t tick = HAL_GetTick(); + if (g_gameReaction.state == 0 && btn == BUTTON_SELECT) { + g_gameReaction.state = 1; + g_gameReaction.waitStart = tick; + g_gameReaction.ledOnTime = 500 + (rand() % 2000); + Menu_Refresh(); + } + else if (g_gameReaction.state == 1 && btn == BUTTON_SELECT) { + g_gameReaction.reactionTime = 0; + g_gameReaction.state = 4; + Menu_Refresh(); + } + else if (g_gameReaction.state == 2 && btn == BUTTON_SELECT) { + g_gameReaction.reactionTime = tick - g_gameReaction.waitStart; + g_gameReaction.state = 3; + Menu_Refresh(); + } + else if ((g_gameReaction.state >= 3) && (btn == BUTTON_SELECT)) + { + g_gameReaction.state = 0; + } +} + + + +/////// CLICLER //////// +static void Display_Clicker(void) { + char buf[7]; + if (!g_gameClicker.active && !g_gameClicker.finished) { + sprintf(buf, "START"); + } else if (g_gameClicker.active) { + uint32_t remaining = (g_gameClicker.endTime - HAL_GetTick()) / 1000; + sprintf(buf, "%2d %3d", remaining, g_gameClicker.clicks); + } else { + sprintf(buf, " %3d", g_gameClicker.clicks); + } + Segment_SetString(buf); +} + +static void OnEnter_Clicker(void) { + g_gameClicker.active = false; + g_gameClicker.finished = false; + g_gameClicker.clicks = 0; + Menu_Refresh(); +} + +static void OnUpdate_Clicker(void) { + if (g_gameClicker.active && HAL_GetTick() >= g_gameClicker.endTime) { + g_gameClicker.active = false; + g_gameClicker.finished = true; + Menu_Refresh(); + } +} + +static void Clicker_OnButton(Button_Type btn, bool longPress) { + if (longPress && btn == BUTTON_SELECT) { + Menu_OpenMenu(&g_rootMenu); + return; + } + + if (btn == BUTTON_BACK) { + Menu_GoBack(); + } + + if (!g_gameClicker.active && !g_gameClicker.finished && btn == BUTTON_SELECT) { + g_gameClicker.active = true; + g_gameClicker.endTime = HAL_GetTick() + 10000; + g_gameClicker.clicks = 0; + Menu_Refresh(); + } + else if (g_gameClicker.active && btn == BUTTON_UP) { + g_gameClicker.clicks++; + Menu_Refresh(); + } + else if (g_gameClicker.finished && (btn == BUTTON_SELECT)) + { + g_gameClicker.finished = 0; + g_gameClicker.active = 0; + } +} + +// NODES +MenuNode g_ZeroMillisNode = { + .name = "00 SEC", + .parent = &g_gamesNode, + .children = NULL, + .childCount = 0, + .selectedChild = 0, + .needsRedraw = 1, + .display = Display_ZeroMillis, + .onEnter = OnEnter_ZeroMillis, + .onUpdate = NULL, + .onButton = ZeroMillis_OnButton, + .data = &g_game1sec +}; + +MenuNode g_ReactionTimeNode = { + .name = "CSTEST", + .parent = &g_gamesNode, + .children = NULL, + .childCount = 0, + .selectedChild = 0, + .display = Display_Reaction, + .onEnter = OnEnter_Reaction, + .onUpdate = OnUpdate_Reaction, + .onButton = Reaction_OnButton, + .data = &g_gameReaction +}; + +MenuNode g_ClickerTimeNode = { + .name = "CLICER", + .parent = &g_gamesNode, + .children = NULL, + .childCount = 0, + .selectedChild = 0, + .display = Display_Clicker, + .onEnter = OnEnter_Clicker, + .onUpdate = OnUpdate_Clicker, + .onButton = Clicker_OnButton, + .data = &g_gameClicker +}; + +MenuNode* g_gamesChildren[3] = { + &g_ZeroMillisNode, + &g_ReactionTimeNode, + &g_ClickerTimeNode +}; diff --git a/Core/Menu/games.h b/Core/Menu/games.h new file mode 100644 index 0000000..0951e0c --- /dev/null +++ b/Core/Menu/games.h @@ -0,0 +1,11 @@ +#ifndef GAMES_H +#define GAMES_H + +#include "menu.h" +extern MenuNode g_ZeroMillisNode; +extern MenuNode g_ReactionTimeNode; +extern MenuNode g_ClickerTimeNode; +extern MenuNode* g_gamesChildren[3]; + + +#endif diff --git a/Core/Clock/menu.c b/Core/Menu/menu.c similarity index 91% rename from Core/Clock/menu.c rename to Core/Menu/menu.c index 65dd4db..77444b5 100644 --- a/Core/Clock/menu.c +++ b/Core/Menu/menu.c @@ -62,18 +62,20 @@ void Menu_HandleButton(Button_Type btn, bool longPress) { switch (btn) { case BUTTON_UP: SOUND_CLICK; - if (g_ctx.currentNode->selectedChild > 0) { - g_ctx.currentNode->selectedChild--; - g_ctx.needsRedraw = true; + g_ctx.currentNode->selectedChild--; + if (g_ctx.currentNode->selectedChild > g_ctx.currentNode->childCount - 1) { + g_ctx.currentNode->selectedChild = g_ctx.currentNode->childCount - 1; } + g_ctx.needsRedraw = true; break; case BUTTON_DOWN: SOUND_CLICK; - if (g_ctx.currentNode->selectedChild < g_ctx.currentNode->childCount - 1) { - g_ctx.currentNode->selectedChild++; - g_ctx.needsRedraw = true; + g_ctx.currentNode->selectedChild++; + if (g_ctx.currentNode->selectedChild > g_ctx.currentNode->childCount - 1) { + g_ctx.currentNode->selectedChild = 0; } + g_ctx.needsRedraw = true; break; case BUTTON_SELECT: { @@ -192,4 +194,4 @@ void Menu_Sound_Toggle(void) { uint8_t Menu_Sound_IsEnabled(void) { return g_sound_enabled; -} \ No newline at end of file +} diff --git a/Core/Clock/menu.h b/Core/Menu/menu.h similarity index 99% rename from Core/Clock/menu.h rename to Core/Menu/menu.h index b6d0aff..df7d6df 100644 --- a/Core/Clock/menu.h +++ b/Core/Menu/menu.h @@ -67,4 +67,4 @@ void Menu_Sound_Off(void); void Menu_Sound_Toggle(void); uint8_t Menu_Sound_IsEnabled(void); -#endif \ No newline at end of file +#endif diff --git a/Core/Clock/menu_items.c b/Core/Menu/menu_items.c similarity index 53% rename from Core/Clock/menu_items.c rename to Core/Menu/menu_items.c index a595286..06ec7e2 100644 --- a/Core/Clock/menu_items.c +++ b/Core/Menu/menu_items.c @@ -1,19 +1,13 @@ #include "menu_items.h" #include "segment.h" #include "clock_manager.h" +#include "games.h" +#include "clock.h" #include #include #include -static MenuNode g_rootMenu; -// Сначала объявляем узлы активностей -MenuNode g_clockNode; -MenuNode g_timerNode; -MenuNode g_stopwatchNode; -MenuNode g_ZeroMillisNode; -MenuNode g_ReactionTimeNode; -MenuNode g_ClickerTimeNode; - -// Потом объявляем узлы меню +MenuNode g_rootMenu; +// объявляем узлы меню MenuNode g_gamesNode; MenuNode g_settingsNode; MenuNode g_timeEditNode; @@ -33,106 +27,14 @@ typedef struct { uint32_t lastBlink; } TimeEditData; -typedef struct { - uint32_t startTime; - uint32_t pressTime; - bool celebrating; - bool result; - int32_t diff_ms; - uint8_t state; -} Game1SecData; - -typedef struct { - uint32_t waitStart; - uint32_t ledOnTime; - uint32_t reactionTime; - uint8_t state; -} GameReactionData; - -typedef struct { - uint32_t endTime; - uint16_t clicks; - bool active; - bool finished; -} GameClickerData; - static TimeEditData g_timeData; static uint8_t g_originalDuty; static uint8_t g_editDuty; -static Game1SecData g_game1sec; -static GameReactionData g_gameReaction; -static GameClickerData g_gameClicker; // Текущая активность в корне -static MenuNode* g_currentActivity = NULL; +MenuNode* g_currentActivity = NULL; // ==================== Функции отображения активностей ==================== -static void Display_Clock(void) { - time_t now = ClockManager_GetTime(1); - char buf[7]; - sprintf(buf, "%02d%02d%02d", now.hour, now.min, now.sec); - Segment_SetString(buf); -} - -static void Display_Timer(void) { - Segment_SetString("TIMER "); -} - -static void Display_Stopwatch(void) { - Segment_SetString("SECOND "); -} - -static void Display_ZeroMillis(void) { - char buf[7]; - switch (g_game1sec.state) { - case 0: - g_game1sec.celebrating = 0; - sprintf(buf, "START"); break; - case 1: - g_game1sec.diff_ms = (HAL_GetTick() - g_game1sec.startTime); - case 2: - sprintf(buf, " %4d", g_game1sec.diff_ms/10); - break; - default: sprintf(buf, "ERROR"); break; - } - if(g_game1sec.state == 2) - { - if((g_game1sec.diff_ms/10)%100 == 0) - { - if(!g_game1sec.celebrating) - { - g_game1sec.celebrating = 1; - Melody_Play(&melody, &Polyphia_PlayingGod, 134); - } - } - } - Segment_SetString(buf); -} - -static void Display_Reaction(void) { - char buf[7]; - switch (g_gameReaction.state) { - case 0: sprintf(buf, "START"); break; - case 1: sprintf(buf, " "); break; - case 2: sprintf(buf, "888888"); break; - case 3: sprintf(buf, "%6d", g_gameReaction.reactionTime); break; - default: sprintf(buf, "ERROR"); break; - } - Segment_SetString(buf); -} - -static void Display_Clicker(void) { - char buf[7]; - if (!g_gameClicker.active && !g_gameClicker.finished) { - sprintf(buf, "START"); - } else if (g_gameClicker.active) { - uint32_t remaining = (g_gameClicker.endTime - HAL_GetTick()) / 1000; - sprintf(buf, "%2d %3d", remaining, g_gameClicker.clicks); - } else { - sprintf(buf, " %3d", g_gameClicker.clicks); - } - Segment_SetString(buf); -} static void Display_MenuItem(void) { MenuNode* current = Menu_GetCurrentNode(); @@ -172,37 +74,6 @@ static void Display_Reset(void) { } // ==================== Вход в активности ==================== -static void OnEnter_Clock(void) { - g_currentActivity = &g_clockNode; - g_rootMenu.parent = &g_clockNode; -} - -static void OnEnter_Timer(void) { - g_currentActivity = &g_timerNode; - g_rootMenu.parent = &g_timerNode; -} - -static void OnEnter_Stopwatch(void) { - g_currentActivity = &g_stopwatchNode; - g_rootMenu.parent = &g_stopwatchNode; -} - -static void OnEnter_ZeroMillis(void) { - g_game1sec.state = 0; - Menu_Refresh(); -} - -static void OnEnter_Reaction(void) { - g_gameReaction.state = 0; - Menu_Refresh(); -} - -static void OnEnter_Clicker(void) { - g_gameClicker.active = false; - g_gameClicker.finished = false; - g_gameClicker.clicks = 0; - Menu_Refresh(); -} static void OnEnter_TimeEdit(void) { g_timeData.editTime = ClockManager_GetTime(0); @@ -229,134 +100,7 @@ static void OnUpdate_TimeEdit(void) { } } -static void OnUpdate_Reaction(void) { - uint32_t tick = HAL_GetTick(); - if (g_gameReaction.state == 1) { - if (tick - g_gameReaction.waitStart >= g_gameReaction.ledOnTime) { - g_gameReaction.state = 2; - g_gameReaction.waitStart = tick; - Menu_Refresh(); - } - } - else if (g_gameReaction.state == 2) { - if (tick - g_gameReaction.waitStart >= 2000) { - g_gameReaction.state = 3; - g_gameReaction.reactionTime = 999; - Menu_Refresh(); - } - } -} - -static void OnUpdate_Clicker(void) { - if (g_gameClicker.active && HAL_GetTick() >= g_gameClicker.endTime) { - g_gameClicker.active = false; - g_gameClicker.finished = true; - Menu_Refresh(); - } -} - // ==================== Обработчики кнопок активностей ==================== -static void Clock_OnButton(Button_Type btn, bool longPress) { - if (longPress && btn == BUTTON_SELECT) { - Menu_OpenMenu(&g_rootMenu); - } -} - -static void Timer_OnButton(Button_Type btn, bool longPress) { - if (longPress && btn == BUTTON_SELECT) { - Menu_OpenMenu(&g_rootMenu); - } -} - -static void Stopwatch_OnButton(Button_Type btn, bool longPress) { - if (longPress && btn == BUTTON_SELECT) { - Menu_OpenMenu(&g_rootMenu); - } -} - -static void ZeroMillis_OnButton(Button_Type btn, bool longPress) { - if (longPress && btn == BUTTON_SELECT) { - Menu_OpenMenu(&g_rootMenu); - return; - } - if (btn == BUTTON_BACK) { - Menu_GoBack(); - } - - uint32_t tick = HAL_GetTick(); - if (g_game1sec.state == 0 && btn == BUTTON_SELECT) { - g_game1sec.state = 1; - g_game1sec.startTime = tick; - Menu_Refresh(); - } - else if ((btn == BUTTON_SELECT) && (g_game1sec.state == 1)) { - g_game1sec.state = 2; - g_game1sec.pressTime = HAL_GetTick(); - g_game1sec.diff_ms = (g_game1sec.pressTime - g_game1sec.startTime); - if (g_game1sec.diff_ms < 0) g_game1sec.diff_ms = -g_game1sec.diff_ms; - Menu_Refresh(); - } - else if ((g_game1sec.state == 2) && (btn == BUTTON_SELECT)) - { - g_game1sec.state = 0; - } -} - -static void Reaction_OnButton(Button_Type btn, bool longPress) { - if (longPress && btn == BUTTON_SELECT) { - Menu_OpenMenu(&g_rootMenu); - return; - } - - if (btn == BUTTON_BACK) { - Menu_GoBack(); - } - - uint32_t tick = HAL_GetTick(); - if (g_gameReaction.state == 0 && btn == BUTTON_SELECT) { - g_gameReaction.state = 1; - g_gameReaction.waitStart = tick; - g_gameReaction.ledOnTime = 1000 + (rand() % 4000); - Menu_Refresh(); - } - else if (g_gameReaction.state == 2 && btn == BUTTON_SELECT) { - g_gameReaction.reactionTime = tick - g_gameReaction.waitStart; - g_gameReaction.state = 3; - Menu_Refresh(); - } - else if ((g_gameReaction.state == 3) && (btn == BUTTON_SELECT)) - { - g_gameReaction.state = 0; - } -} - -static void Clicker_OnButton(Button_Type btn, bool longPress) { - if (longPress && btn == BUTTON_SELECT) { - Menu_OpenMenu(&g_rootMenu); - return; - } - - if (btn == BUTTON_BACK) { - Menu_GoBack(); - } - - if (!g_gameClicker.active && !g_gameClicker.finished && btn == BUTTON_SELECT) { - g_gameClicker.active = true; - g_gameClicker.endTime = HAL_GetTick() + 10000; - g_gameClicker.clicks = 0; - Menu_Refresh(); - } - else if (g_gameClicker.active && btn == BUTTON_UP) { - g_gameClicker.clicks++; - Menu_Refresh(); - } - else if (g_gameClicker.finished && (btn == BUTTON_SELECT)) - { - g_gameClicker.finished = 0; - g_gameClicker.active = 0; - } -} - static void TimeEdit_OnButton(Button_Type btn, bool longPress) { (void)longPress; @@ -491,86 +235,6 @@ static void Reset_OnButton(Button_Type btn, bool longPress) { } } -// ==================== Узлы активностей (корень) ==================== -MenuNode g_clockNode = { - .name = "CLOC", - .parent = NULL, - .children = NULL, - .childCount = 0, - .selectedChild = 0, - .display = Display_Clock, - .onEnter = OnEnter_Clock, - .onUpdate = NULL, - .onButton = Clock_OnButton, - .data = NULL -}; - -MenuNode g_timerNode = { - .name = "TIMER", - .parent = NULL, - .children = NULL, - .childCount = 0, - .selectedChild = 0, - .display = Display_Timer, - .onEnter = OnEnter_Timer, - .onUpdate = NULL, - .onButton = Timer_OnButton, - .data = NULL -}; - -MenuNode g_stopwatchNode = { - .name = "SECOND", - .parent = NULL, - .children = NULL, - .childCount = 0, - .selectedChild = 0, - .display = Display_Stopwatch, - .onEnter = OnEnter_Stopwatch, - .onUpdate = NULL, - .onButton = Stopwatch_OnButton, - .data = NULL -}; - -MenuNode g_ZeroMillisNode = { - .name = "00 SEC", - .parent = &g_gamesNode, - .children = NULL, - .childCount = 0, - .selectedChild = 0, - .needsRedraw = 1, - .display = Display_ZeroMillis, - .onEnter = OnEnter_ZeroMillis, - .onUpdate = NULL, - .onButton = ZeroMillis_OnButton, - .data = &g_game1sec -}; - -MenuNode g_ReactionTimeNode = { - .name = "CSTEST", - .parent = &g_gamesNode, - .children = NULL, - .childCount = 0, - .selectedChild = 0, - .display = Display_Reaction, - .onEnter = OnEnter_Reaction, - .onUpdate = OnUpdate_Reaction, - .onButton = Reaction_OnButton, - .data = &g_gameReaction -}; - -MenuNode g_ClickerTimeNode = { - .name = "CLICER", - .parent = &g_gamesNode, - .children = NULL, - .childCount = 0, - .selectedChild = 0, - .display = Display_Clicker, - .onEnter = OnEnter_Clicker, - .onUpdate = OnUpdate_Clicker, - .onButton = Clicker_OnButton, - .data = &g_gameClicker -}; - // ==================== Узлы меню ==================== MenuNode g_gamesNode; MenuNode g_settingsNode; @@ -582,12 +246,6 @@ MenuNode g_PowerOnSongNode; MenuNode g_SongNode; MenuNode g_resetNode; -static MenuNode* g_gamesChildren[] = { - &g_ZeroMillisNode, - &g_ReactionTimeNode, - &g_ClickerTimeNode -}; - static MenuNode* g_settingsChildren[] = { &g_timeEditNode, &g_dutyEditNode, @@ -606,7 +264,7 @@ static MenuNode* g_mainMenuChildren[] = { &g_settingsNode }; -static MenuNode g_rootMenu = { +MenuNode g_rootMenu = { .name = "MAIN", .parent = NULL, .children = g_mainMenuChildren, @@ -624,7 +282,7 @@ void MenuItems_Init(void) { .name = "PLAY", .parent = &g_rootMenu, .children = g_gamesChildren, - .childCount = 3, + .childCount = sizeof(g_gamesChildren)/sizeof(g_gamesChildren[0]), .selectedChild = 0, .display = Display_MenuItem, .onEnter = NULL, @@ -637,7 +295,7 @@ void MenuItems_Init(void) { .name = "SETUP", .parent = &g_rootMenu, .children = g_settingsChildren, - .childCount = 7, + .childCount = sizeof(g_settingsChildren)/sizeof(g_settingsChildren[0]), .selectedChild = 0, .display = Display_MenuItem, .onEnter = NULL, @@ -692,4 +350,4 @@ MenuNode* Menu_GetRootMenu(void) { MenuNode* Menu_GetCurrentActivity(void) { return g_currentActivity; -} \ No newline at end of file +} diff --git a/Core/Clock/menu_items.h b/Core/Menu/menu_items.h similarity index 87% rename from Core/Clock/menu_items.h rename to Core/Menu/menu_items.h index 21752c0..d224f9c 100644 --- a/Core/Clock/menu_items.h +++ b/Core/Menu/menu_items.h @@ -3,7 +3,9 @@ #include "menu.h" +extern MenuNode* g_currentActivity; // Глобальные узлы меню (для доступа из main.c) +extern MenuNode g_rootMenu; extern MenuNode g_clockNode; extern MenuNode g_timerNode; extern MenuNode g_stopwatchNode; @@ -16,4 +18,4 @@ extern MenuNode g_resetNode; // Инициализация всех пунктов меню void MenuItems_Init(void); -#endif \ No newline at end of file +#endif diff --git a/MDK-ARM/lamp.uvguix.I b/MDK-ARM/lamp.uvguix.I index e78a2c3..7e16185 100644 --- a/MDK-ARM/lamp.uvguix.I +++ b/MDK-ARM/lamp.uvguix.I @@ -6,7 +6,7 @@
### uVision Project, (C) Keil Software
- F:\OtherStuff\Lamps\Core\Clock + F:\OtherStuff\Lamps\Core\Menu @@ -40,7 +40,7 @@ 38003 Registers - 138 100 + 138 136 346 @@ -50,7 +50,7 @@ 204 Performance Analyzer - 18 153 153 100 + 291 153 153 100 @@ -71,7 +71,7 @@ 1936 Watch 1 - 200 173 133 + 200 170 133 1937 @@ -95,7 +95,7 @@ 466 Source Browser 500 - 300 + 166 @@ -126,17 +126,17 @@ -1 - 91 - 235 - 1443 - 835 + 80 + 428 + 1636 + 824 0 - 2421 - 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000001A000000020000000100000028463A5C4F7468657253747566665C4C616D70735C436F72655C436C6F636B5C7365676D656E742E6300000000097365676D656E742E6300000000C5D4F200FFFFFFFF31463A5C4F7468657253747566665C4C616D70735C4D444B2D41524D5C737461727475705F73746D33326631303378622E730000000015737461727475705F73746D33326631303378622E7300000000FFDC7800FFFFFFFF23463A5C4F7468657253747566665C4C616D70735C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000BECEA100FFFFFFFF4B463A5C4F7468657253747566665C4C616D70735C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C5F74696D5F65782E63000000001673746D3332663178785F68616C5F74696D5F65782E6300000000F0A0A100FFFFFFFF23463A5C4F7468657253747566665C4C616D70735C436F72655C5372635C6770696F2E6300000000066770696F2E6300000000BCA8E100FFFFFFFF2B463A5C4F7468657253747566665C4C616D70735C436F72655C5372635C73746D3332663178785F69742E63000000000E73746D3332663178785F69742E63000000009CC1B600FFFFFFFF44463A5C4F7468657253747566665C4C616D70735C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C2E63000000000F73746D3332663178785F68616C2E6300000000F7B88600FFFFFFFF30463A5C4F7468657253747566665C4C616D70735C436F72655C5372635C73746D3332663178785F68616C5F6D73702E63000000001373746D3332663178785F68616C5F6D73702E6300000000D9ADC200FFFFFFFF2F463A5C4F7468657253747566665C4C616D70735C436F72655C5372635C73797374656D5F73746D3332663178782E63000000001273797374656D5F73746D3332663178782E6300000000A5C2D700FFFFFFFF48463A5C4F7468657253747566665C4C616D70735C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C5F7263632E63000000001373746D3332663178785F68616C5F7263632E6300000000B3A6BE00FFFFFFFF22463A5C4F7468657253747566665C4C616D70735C436F72655C5372635C74696D2E63000000000574696D2E6300000000EAD6A300FFFFFFFF4B463A5C4F7468657253747566665C4C616D70735C447269766572735C434D5349535C4465766963655C53545C53544D3332463178785C496E636C7564655C73746D33326631303378622E68000000000D73746D33326631303378622E6800000000F6FA7D00FFFFFFFF49463A5C4F7468657253747566665C4C616D70735C447269766572735C434D5349535C4465766963655C53545C53544D3332463178785C496E636C7564655C73746D3332663178782E68000000000B73746D3332663178782E6800000000B5E99D00FFFFFFFF4C463A5C4F7468657253747566665C4C616D70735C447269766572735C53544D3332463178785F48414C5F4472697665725C496E635C73746D3332663178785F68616C5F6770696F5F65782E68000000001773746D3332663178785F68616C5F6770696F5F65782E68000000005FC3CF00FFFFFFFF60463A5C4F7468657253747566665C4C616D70735C447269766572735C434D5349535C4465766963655C53545C53544D3332463178785C536F757263655C54656D706C617465735C61726D5C737461727475705F73746D33326631303178362E730000000015737461727475705F73746D33326631303178362E7300000000C1838300FFFFFFFF28463A5C4F7468657253747566665C4C616D70735C436F72655C436C6F636B5C7365676D656E742E6800000000097365676D656E742E6800000000CACAD500FFFFFFFF25463A5C4F7468657253747566665C4C616D70735C436F72655C436C6F636B5C6D656E752E6300000000066D656E752E6300000000C5D4F200FFFFFFFF2E463A5C4F7468657253747566665C4C616D70735C436F72655C436C6F636B5C636C6F636B5F6D616E616765722E63000000000F636C6F636B5F6D616E616765722E6300000000FFDC7800FFFFFFFF22463A5C4F7468657253747566665C4C616D70735C436F72655C5372635C7274632E6300000000057274632E6300000000BECEA100FFFFFFFF48463A5C4F7468657253747566665C4C616D70735C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C5F7274632E63000000001373746D3332663178785F68616C5F7274632E6300000000F0A0A100FFFFFFFF48463A5C4F7468657253747566665C4C616D70735C447269766572735C53544D3332463178785F48414C5F4472697665725C496E635C73746D3332663178785F68616C5F7274632E68000000001373746D3332663178785F68616C5F7274632E6800000000BCA8E100FFFFFFFF48463A5C4F7468657253747566665C4C616D70735C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C5F74696D2E63000000001373746D3332663178785F68616C5F74696D2E63000000009CC1B600FFFFFFFF49463A5C4F7468657253747566665C4C616D70735C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C5F6770696F2E63000000001473746D3332663178785F68616C5F6770696F2E6300000000F7B88600FFFFFFFF27463A5C4F7468657253747566665C4C616D70735C436F72655C436C6F636B5C6D656C6F64792E6800000000086D656C6F64792E6800000000D9ADC200FFFFFFFF27463A5C4F7468657253747566665C4C616D70735C436F72655C436C6F636B5C6D656C6F64792E6300000000086D656C6F64792E6300000000A5C2D700FFFFFFFF23463A5C4F7468657253747566665C4C616D70735C436F72655C496E635C6D61696E2E6800000000066D61696E2E6800000000B3A6BE00FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD50001000000000000000200000023010000660000009006000007030000 + 3649 + 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000002A000000230000000100000028463A5C4F7468657253747566665C4C616D70735C436F72655C436C6F636B5C7365676D656E742E6300000000097365676D656E742E6300000000C5D4F200FFFFFFFF31463A5C4F7468657253747566665C4C616D70735C4D444B2D41524D5C737461727475705F73746D33326631303378622E730000000015737461727475705F73746D33326631303378622E7300000000FFDC7800FFFFFFFF23463A5C4F7468657253747566665C4C616D70735C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000BECEA100FFFFFFFF4B463A5C4F7468657253747566665C4C616D70735C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C5F74696D5F65782E63000000001673746D3332663178785F68616C5F74696D5F65782E6300000000F0A0A100FFFFFFFF23463A5C4F7468657253747566665C4C616D70735C436F72655C5372635C6770696F2E6300000000066770696F2E6300000000BCA8E100FFFFFFFF2B463A5C4F7468657253747566665C4C616D70735C436F72655C5372635C73746D3332663178785F69742E63000000000E73746D3332663178785F69742E63000000009CC1B600FFFFFFFF44463A5C4F7468657253747566665C4C616D70735C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C2E63000000000F73746D3332663178785F68616C2E6300000000F7B88600FFFFFFFF30463A5C4F7468657253747566665C4C616D70735C436F72655C5372635C73746D3332663178785F68616C5F6D73702E63000000001373746D3332663178785F68616C5F6D73702E6300000000D9ADC200FFFFFFFF2F463A5C4F7468657253747566665C4C616D70735C436F72655C5372635C73797374656D5F73746D3332663178782E63000000001273797374656D5F73746D3332663178782E6300000000A5C2D700FFFFFFFF48463A5C4F7468657253747566665C4C616D70735C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C5F7263632E63000000001373746D3332663178785F68616C5F7263632E6300000000B3A6BE00FFFFFFFF22463A5C4F7468657253747566665C4C616D70735C436F72655C5372635C74696D2E63000000000574696D2E6300000000EAD6A300FFFFFFFF4B463A5C4F7468657253747566665C4C616D70735C447269766572735C434D5349535C4465766963655C53545C53544D3332463178785C496E636C7564655C73746D33326631303378622E68000000000D73746D33326631303378622E6800000000F6FA7D00FFFFFFFF49463A5C4F7468657253747566665C4C616D70735C447269766572735C434D5349535C4465766963655C53545C53544D3332463178785C496E636C7564655C73746D3332663178782E68000000000B73746D3332663178782E6800000000B5E99D00FFFFFFFF4C463A5C4F7468657253747566665C4C616D70735C447269766572735C53544D3332463178785F48414C5F4472697665725C496E635C73746D3332663178785F68616C5F6770696F5F65782E68000000001773746D3332663178785F68616C5F6770696F5F65782E68000000005FC3CF00FFFFFFFF60463A5C4F7468657253747566665C4C616D70735C447269766572735C434D5349535C4465766963655C53545C53544D3332463178785C536F757263655C54656D706C617465735C61726D5C737461727475705F73746D33326631303178362E730000000015737461727475705F73746D33326631303178362E7300000000C1838300FFFFFFFF28463A5C4F7468657253747566665C4C616D70735C436F72655C436C6F636B5C7365676D656E742E6800000000097365676D656E742E6800000000CACAD500FFFFFFFF2E463A5C4F7468657253747566665C4C616D70735C436F72655C436C6F636B5C636C6F636B5F6D616E616765722E63000000000F636C6F636B5F6D616E616765722E6300000000FFDC7800FFFFFFFF22463A5C4F7468657253747566665C4C616D70735C436F72655C5372635C7274632E6300000000057274632E6300000000BECEA100FFFFFFFF48463A5C4F7468657253747566665C4C616D70735C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C5F7274632E63000000001373746D3332663178785F68616C5F7274632E6300000000F0A0A100FFFFFFFF48463A5C4F7468657253747566665C4C616D70735C447269766572735C53544D3332463178785F48414C5F4472697665725C496E635C73746D3332663178785F68616C5F7274632E68000000001373746D3332663178785F68616C5F7274632E6800000000BCA8E100FFFFFFFF48463A5C4F7468657253747566665C4C616D70735C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C5F74696D2E63000000001373746D3332663178785F68616C5F74696D2E63000000009CC1B600FFFFFFFF49463A5C4F7468657253747566665C4C616D70735C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C5F6770696F2E63000000001473746D3332663178785F68616C5F6770696F2E6300000000F7B88600FFFFFFFF27463A5C4F7468657253747566665C4C616D70735C436F72655C436C6F636B5C6D656C6F64792E6800000000086D656C6F64792E6800000000D9ADC200FFFFFFFF27463A5C4F7468657253747566665C4C616D70735C436F72655C436C6F636B5C6D656C6F64792E6300000000086D656C6F64792E6300000000A5C2D700FFFFFFFF23463A5C4F7468657253747566665C4C616D70735C436F72655C496E635C6D61696E2E6800000000066D61696E2E6800000000B3A6BE00FFFFFFFF26463A5C4F7468657253747566665C4C616D70735C436F72655C436C6F636B5C736F6E67732E680000000007736F6E67732E6800000000EAD6A300FFFFFFFF22463A5C4F7468657253747566665C4C616D70735C436F72655C496E635C7274632E6800000000057274632E6800000000F6FA7D00FFFFFFFF4B463A5C4F7468657253747566665C4C616D70735C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C5F7274635F65782E63000000001673746D3332663178785F68616C5F7274635F65782E6300000000B5E99D00FFFFFFFF4B463A5C4F7468657253747566665C4C616D70735C447269766572735C53544D3332463178785F48414C5F4472697665725C496E635C73746D3332663178785F68616C5F7274635F65782E68000000001673746D3332663178785F68616C5F7274635F65782E68000000005FC3CF00FFFFFFFF48463A5C4F7468657253747566665C4C616D70735C447269766572735C53544D3332463178785F48414C5F4472697665725C496E635C73746D3332663178785F68616C5F6465662E68000000001373746D3332663178785F68616C5F6465662E6800000000C1838300FFFFFFFF26463A5C4F7468657253747566665C4C616D70735C436F72655C436C6F636B5C6E6F7465732E6800000000076E6F7465732E6800000000CACAD500FFFFFFFF27463A5C4F7468657253747566665C4C616D70735C436F72655C436C6F636B5C736F756E64732E680000000008736F756E64732E6800000000C5D4F200FFFFFFFF2E463A5C4F7468657253747566665C4C616D70735C436F72655C436C6F636B5C636C6F636B5F6D616E616765722E68000000000F636C6F636B5F6D616E616765722E6800000000BCA8E100FFFFFFFF25463A5C4F7468657253747566665C4C616D70735C436F72655C4D656E755C67616D65732E63000000000767616D65732E6300000000FFDC7800FFFFFFFF2A463A5C4F7468657253747566665C4C616D70735C436F72655C4D656E755C6D656E755F6974656D732E63000000000C6D656E755F6974656D732E6300000000BECEA100FFFFFFFF25463A5C4F7468657253747566665C4C616D70735C436F72655C4D656E755C636C6F636B2E630000000007636C6F636B2E6300000000F0A0A100FFFFFFFF2A463A5C4F7468657253747566665C4C616D70735C436F72655C4D656E755C6D656E755F6974656D732E68000000000C6D656E755F6974656D732E6800000000BCA8E100FFFFFFFF25463A5C4F7468657253747566665C4C616D70735C436F72655C4D656E755C636C6F636B2E680000000007636C6F636B2E68000000009CC1B600FFFFFFFF24463A5C4F7468657253747566665C4C616D70735C436F72655C4D656E755C6D656E752E6300000000066D656E752E6300000000F7B88600FFFFFFFF25463A5C4F7468657253747566665C4C616D70735C436F72655C4D656E755C67616D65732E68000000000767616D65732E6800000000D9ADC200FFFFFFFF24463A5C4F7468657253747566665C4C616D70735C436F72655C4D656E755C6D656E752E6800000000066D656E752E6800000000A5C2D700FFFFFFFF49463A5C4F7468657253747566665C4C616D70735C447269766572735C53544D3332463178785F48414C5F4472697665725C496E635C73746D3332663178785F68616C5F6770696F2E68000000001473746D3332663178785F68616C5F6770696F2E6800000000B3A6BE00FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000230100006600000090060000CC020000 @@ -175,7 +175,7 @@ 0 16 - 03000000660000001C010000D7020000 + 03000000660000001C0100009C020000 16 @@ -195,7 +195,7 @@ 0 16 - 03000000660000001C010000D7020000 + 03000000660000001C0100009C020000 16 @@ -475,7 +475,7 @@ 0 16 - 03000000660000001C010000D7020000 + 03000000660000001C0100009C020000 16 @@ -495,7 +495,7 @@ 0 16 - 03000000660000001C010000D7020000 + 03000000660000001C0100009C020000 16 @@ -515,7 +515,7 @@ 0 16 - 030000000B0300008D060000AF030000 + 03000000D00200008D060000AF030000 16 @@ -555,7 +555,7 @@ 0 16 - 030000000B0300008D060000AF030000 + 03000000D00200008D060000AF030000 16 @@ -1175,7 +1175,7 @@ 0 16 - 03000000660000001C010000D7020000 + 03000000660000001C0100009C020000 16 @@ -1195,7 +1195,7 @@ 0 16 - 030000000B0300008D060000AF030000 + 03000000D00200008D060000AF030000 16 @@ -1215,7 +1215,7 @@ 0 16 - 030000000B0300008D060000AF030000 + 03000000D00200008D060000AF030000 16 @@ -1275,7 +1275,7 @@ 0 16 - 030000000B0300008D060000AF030000 + 03000000D00200008D060000AF030000 16 @@ -1295,7 +1295,7 @@ 0 16 - 030000000B0300008D060000AF030000 + 03000000D00200008D060000AF030000 16 @@ -1735,11 +1735,11 @@ 0 16 - 0000000000000000D10300001C000000 + 0100000000000000D20300001C000000 16 - 0A0000000A0000006E0000006E000000 + 0A0000000A000000D803000042000000 @@ -1824,14 +1824,14 @@ 3312 - 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFD6000000DA000000DC040000DE000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000D600000066000000DC040000F1000000D60000004F000000DC040000DA0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF060400004F0000000A04000018020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000000000000A04000066000000DC0400002F0200000A0400004F000000DC0400001802000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF1F0100004F00000023010000F00200000100000002000010040000000100000030FFFFFFB5050000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000000000000660000001F01000007030000000000004F0000001F010000F00200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000004020000DC0400000802000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000001F020000DC040000BE0200000000000008020000DC040000A702000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFF6E0200000802000072020000A702000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000F002000090060000F4020000010000000100001004000000010000001BFDFFFF89000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000000B03000090060000DF03000000000000F402000090060000C80300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFD6000000DA000000DC040000DE000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000D600000066000000DC040000F1000000D60000004F000000DC040000DA0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF060400004F0000000A04000018020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000000000000A04000066000000DC0400002F0200000A0400004F000000DC0400001802000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF1F0100004F00000023010000B50200000100000002000010040000000100000030FFFFFFB5050000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000000000000660000001F010000CC020000000000004F0000001F010000B50200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000004020000DC0400000802000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000001F020000DC040000BE0200000000000008020000DC040000A702000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFF6E0200000802000072020000A702000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000B502000090060000B902000001000000010000100400000001000000CCFCFFFF3A000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF010000779400000180008000000100000000000000D002000090060000DF03000000000000B902000090060000C80300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 59392 File - 2965 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000E74696D65725F636C6F636B5F687A960000000000000014000E4E4F54455F5349585445454E54480E74696D65725F636C6F636B5F687A155243435F4C53455F54494D454F55545F56414C5545134C53455F535441525455505F54494D454F5554115254435F4155544F5F315F5345434F4E44255F5F48414C5F54494D5F4D4F455F44495341424C455F554E434F4E444954494F4E414C4C590850574D5F53746F700C524546524553485F52415445155550505F43555252454E545F52414E47455F353041155550505F43555252454E545F52414E47455F3930410553572D44500B73746D33326631303378620B4750494F5F50494E5F3135125669727475616C537065656453656E736F720952657655704374726C1153706565646E506F734664626B5F53544F1368616C6C5F73706565645F706F735F6664626B1853544F5F434F524449435F53706565646E506F734664626B06636F726469630A535044504F545F52756E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + 2845 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000A675F726F6F744D656E75960000000000000013000A675F726F6F744D656E7506675F636C6F6300086F6E5570646174650C675F7A65726F6D696C6C69730D73656C65637465644368696C64057374617465084F6E427574746F6E115265616374696F6E5F4F6E427574746F6E10446973706C61795F4D656E754974656D07656E6454696D6514675F67616D65436C69636B65722E6163746976650777616974696E67076F6E456E7465720F4F6E456E7465725F436C69636B6572104F6E456E7465725F54696D654564697411675F63757272656E7441637469766974790A63757272656E744163740963757272656E74416300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 1423 @@ -1847,7 +1847,7 @@ Build 968 - 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA0000000000000000000000000000000000000000000000000100000001000000960000000300205000000000046C616D7096000000000000000100046C616D70000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0000000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA0000000000000000000000000000000000000000000000000100000001000000960000000300205000000000046C616D7096000000000000000100046C616D70000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 583 @@ -1896,11 +1896,11 @@ 0 16 - D60000004F00000088020000BA000000 + 200100004F000000E3030000BA000000 16 - D60000006600000088020000D1000000 + 2001000066000000E3030000D1000000 @@ -1916,7 +1916,7 @@ 0 16 - 0300000066000000CF0000005B020000 + 030000006600000019010000B7020000 16 @@ -1936,7 +1936,7 @@ 0 16 - 0300000066000000CF0000005B020000 + 030000006600000019010000B7020000 16 @@ -1956,7 +1956,7 @@ 0 16 - AF040000660000008D0600005B020000 + CB040000660000008D060000B7020000 16 @@ -1976,7 +1976,7 @@ 0 16 - AF040000660000008D0600005B020000 + CB040000660000008D060000B7020000 16 @@ -1996,7 +1996,7 @@ 0 16 - AF040000660000008D0600005B020000 + CB040000660000008D060000B7020000 16 @@ -2016,7 +2016,7 @@ 0 16 - AF040000660000008D0600005B020000 + CB040000660000008D060000B7020000 16 @@ -2036,11 +2036,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -2056,7 +2056,7 @@ 0 16 - D90000006600000085020000A1000000 + 2301000066000000E0030000A1000000 16 @@ -2076,7 +2076,7 @@ 0 16 - AF040000660000008D0600005B020000 + CB040000660000008D060000B7020000 16 @@ -2096,7 +2096,7 @@ 0 16 - AF040000660000008D0600005B020000 + CB040000660000008D060000B7020000 16 @@ -2116,7 +2116,7 @@ 0 16 - AF040000660000008D0600005B020000 + CB040000660000008D060000B7020000 16 @@ -2136,7 +2136,7 @@ 0 16 - AF040000660000008D0600005B020000 + CB040000660000008D060000B7020000 16 @@ -2156,7 +2156,7 @@ 0 16 - AF040000660000008D0600005B020000 + CB040000660000008D060000B7020000 16 @@ -2176,7 +2176,7 @@ 0 16 - AF040000660000008D0600005B020000 + CB040000660000008D060000B7020000 16 @@ -2196,7 +2196,7 @@ 0 16 - AF040000660000008D0600005B020000 + CB040000660000008D060000B7020000 16 @@ -2216,7 +2216,7 @@ 0 16 - 0300000066000000CF0000005B020000 + 030000006600000019010000B7020000 16 @@ -2236,7 +2236,7 @@ 0 16 - 0300000066000000CF0000005B020000 + 030000006600000019010000B7020000 16 @@ -2276,7 +2276,7 @@ 0 16 - 00000000780200009006000039030000 + 00000000D40200009006000039030000 16 @@ -2316,7 +2316,7 @@ 0 16 - D60000006300000088020000BA000000 + 2001000063000000E3030000BA000000 16 @@ -2336,7 +2336,7 @@ 0 16 - D90000006600000085020000A1000000 + 2301000066000000E0030000A1000000 16 @@ -2376,11 +2376,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -2396,7 +2396,7 @@ 0 16 - AF040000660000008D0600005B020000 + CB040000660000008D060000B7020000 16 @@ -2416,7 +2416,7 @@ 0 16 - D90000006600000085020000A1000000 + 2301000066000000E0030000A1000000 16 @@ -2436,7 +2436,7 @@ 0 16 - D90000006600000085020000A1000000 + 2301000066000000E0030000A1000000 16 @@ -2456,7 +2456,7 @@ 0 16 - D90000006600000085020000A1000000 + 2301000066000000E0030000A1000000 16 @@ -2476,7 +2476,7 @@ 0 16 - D90000006600000085020000A1000000 + 2301000066000000E0030000A1000000 16 @@ -2496,11 +2496,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -2516,11 +2516,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -2536,11 +2536,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -2556,11 +2556,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -2576,11 +2576,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -2596,11 +2596,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -2616,11 +2616,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -2636,11 +2636,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -2656,11 +2656,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -2676,11 +2676,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -2696,11 +2696,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -2716,11 +2716,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -2736,11 +2736,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -2756,11 +2756,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -2776,11 +2776,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -2796,11 +2796,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -2816,11 +2816,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -2836,11 +2836,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -2856,11 +2856,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -2876,7 +2876,7 @@ 0 16 - AF040000660000008D0600005B020000 + CB040000660000008D060000B7020000 16 @@ -2896,11 +2896,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -2916,7 +2916,7 @@ 0 16 - 0300000066000000CF0000005B020000 + 030000006600000019010000B7020000 16 @@ -2976,7 +2976,7 @@ 0 16 - AF040000660000008D0600005B020000 + CB040000660000008D060000B7020000 16 @@ -2996,7 +2996,7 @@ 0 16 - AF040000660000008D0600005B020000 + CB040000660000008D060000B7020000 16 @@ -3056,7 +3056,7 @@ 0 16 - D90000006600000085020000A1000000 + 2301000066000000E0030000A1000000 16 @@ -3076,11 +3076,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -3096,11 +3096,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -3116,11 +3116,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -3136,11 +3136,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -3156,11 +3156,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -3176,11 +3176,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -3196,11 +3196,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -3216,11 +3216,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -3236,11 +3236,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -3256,11 +3256,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -3276,11 +3276,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -3296,11 +3296,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -3316,11 +3316,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -3336,11 +3336,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -3356,11 +3356,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -3376,11 +3376,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -3396,11 +3396,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -3416,11 +3416,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -3436,11 +3436,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -3456,11 +3456,11 @@ 0 16 - 8F02000066000000A50400005B020000 + EA03000066000000C1040000B7020000 16 - F204000067010000A50500008C030000 + 5405000079010000FD0500009E030000 @@ -3556,7 +3556,7 @@ 0 16 - AF040000660000008D0600005B020000 + CB040000660000008D060000B7020000 16 @@ -3565,14 +3565,14 @@ 3446 - 000000000B000000000000000020000001000000FFFFFFFFFFFFFFFFD6000000BA00000088020000BE00000001000000010000100400000001000000000000000000000000000000000000000000000001000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000001000000D60000006600000088020000D1000000D60000004F00000088020000BA0000000000000040280056080000000B446973617373656D626C7901000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000001000000FFFFFFFFFFFFFFFF880200004F0000008C0200007402000001000000020000100400000001000000CCFCFFFF760200000000000000000000000000000100000000000000000000000000000001000000FFFFFFFF2A000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000010000008C02000066000000A80400008B0200008C0200004F000000A80400007402000000000000404100562A0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF054750494F43010000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF0454494D31010000003F8C000001000000FFFFFFFFFFFFFFFF054750494F4201000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFF1400000000000000FFFFFFFF100000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB090000408C000001800040000001000000AC04000066000000900600008B020000AC0400004F00000090060000740200000000000040410056100000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031010000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFF054750494F4101000000408C000001000000FFFFFFFFFFFFFFFF050000000000000002000000000000000100000002000000FFFFFFFFA80400004F000000AC0400007402000001000000020000100400000000000000B6FEFFFF850100000000000000000000000000000000000002000000FFFFFFFFE2050000FFFFFFFF8F07000001000000FFFFFFFFE205000001000000FFFFFFFF8F070000000000000010000001000000FFFFFFFFFFFFFFFFD20000004F000000D600000074020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000D20000008B020000000000004F000000D2000000740200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000001000000FFFFFFFFFFFFFFFF000000007402000090060000780200000100000001000010040000000100000042FEFFFFDE00000000000000000000000000000001000000C60000000000000001000000000000000000000001000000FFFFFFFF48030000850200004C030000C803000000000000020000000400000000000000000000000000000000000000000000000000000001000000C600000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000039030000900600003D030000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000005403000090060000DF030000000000003D03000090060000C80300000000000040820056060000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0642726F777365000000007794000001000000FFFFFFFFFFFFFFFF01000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + 000000000B000000000000000020000001000000FFFFFFFFFFFFFFFF20010000BA000000E3030000BE00000001000000010000100400000001000000000000000000000000000000000000000000000001000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E6500200000010000002001000066000000E3030000D1000000200100004F000000E3030000BA0000000000000040280056080000000B446973617373656D626C7901000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000001000000FFFFFFFFFFFFFFFFE30300004F000000E7030000D00200000100000002000010040000000100000096FCFFFFF60100000000000000000000000000000100000000000000000000000000000001000000FFFFFFFF2A000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000001000000E703000066000000C4040000E7020000E70300004F000000C4040000D002000000000000404100562A0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF054750494F43010000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF0454494D31010000003F8C000001000000FFFFFFFFFFFFFFFF054750494F4201000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFF1400000000000000FFFFFFFF100000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB090000408C000001800040000001000000C80400006600000090060000E7020000C80400004F00000090060000D00200000000000040410056100000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031010000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFF054750494F4101000000408C000001000000FFFFFFFFFFFFFFFF050000000000000003000000000000000100000003000000FFFFFFFFC40400004F000000C8040000D002000001000000020000100400000000000000BBFEFFFF5D0100000000000000000000000000000000000002000000FFFFFFFFE2050000FFFFFFFF8F07000001000000FFFFFFFFE205000001000000FFFFFFFF8F070000000000000010000001000000FFFFFFFFFFFFFFFF1C0100004F00000020010000D00200000100000002000010040000000100000030FFFFFF59020000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000000000000660000001C010000E7020000000000004F0000001C010000D00200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000001000000FFFFFFFFFFFFFFFF00000000D002000090060000D4020000010000000100001004000000010000004FFEFFFF5C00000000000000000000000000000001000000C60000000000000001000000000000000000000001000000FFFFFFFF48030000850200004C030000C803000000000000020000000400000000000000000000000000000000000000000000000000000001000000C600000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000039030000900600003D030000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000005403000090060000DF030000000000003D03000090060000C80300000000000040820056060000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0642726F777365000000007794000001000000FFFFFFFFFFFFFFFF01000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 59392 File - 2973 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000E74696D65725F636C6F636B5F687A960000000000000014000E74696D65725F636C6F636B5F687A155243435F4C53455F54494D454F55545F56414C5545134C53455F535441525455505F54494D454F5554115254435F4155544F5F315F5345434F4E44255F5F48414C5F54494D5F4D4F455F44495341424C455F554E434F4E444954494F4E414C4C590850574D5F53746F700C524546524553485F52415445155550505F43555252454E545F52414E47455F353041155550505F43555252454E545F52414E47455F3930410553572D44500B73746D33326631303378620B4750494F5F50494E5F3135125669727475616C537065656453656E736F720952657655704374726C1153706565646E506F734664626B5F53544F1368616C6C5F73706565645F706F735F6664626B1853544F5F434F524449435F53706565646E506F734664626B06636F726469630A535044504F545F52756E16506F74656E74696F6D657465725F48616E646C655F740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000100150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000400160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + 2845 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000A675F726F6F744D656E75960000000000000013000A675F726F6F744D656E7506675F636C6F6300086F6E5570646174650C675F7A65726F6D696C6C69730D73656C65637465644368696C64057374617465084F6E427574746F6E115265616374696F6E5F4F6E427574746F6E10446973706C61795F4D656E754974656D07656E6454696D6514675F67616D65436C69636B65722E6163746976650777616974696E67076F6E456E7465720F4F6E456E7465725F436C69636B6572104F6E456E7465725F54696D654564697411675F63757272656E7441637469766974790A63757272656E744163740963757272656E74416300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000100150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 1423 @@ -3588,7 +3588,7 @@ Build 955 - 00200000000000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000000002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050FFFFFFFF00960000000000000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000000240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 + 00200000000000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0000000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000000002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050FFFFFFFF00960000000000000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000000240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 583 @@ -3604,7 +3604,7 @@ Debug 2362 - 00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000004002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020001002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000100310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F0100000200010032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + 00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020001002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000100310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F0100000200010032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 898 @@ -3628,12 +3628,12 @@ 0 100 - 2 + 35 ..\Core\Clock\segment.c - 0 - 179 - 190 + 12 + 111 + 105 1 0 @@ -3641,7 +3641,7 @@ startup_stm32f103xb.s 0 - 127 + 125 134 1 @@ -3649,9 +3649,9 @@ ../Core/Src/main.c - 21 - 88 - 117 + 0 + 94 + 103 1 0 @@ -3695,7 +3695,7 @@ ../Core/Src/stm32f1xx_hal_msp.c 0 - 41 + 44 78 1 @@ -3729,7 +3729,7 @@ 0 - ..\Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f103xb.h + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h 65 2119 2146 @@ -3738,7 +3738,7 @@ 0 - ..\Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f1xx.h + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h 25 96 127 @@ -3747,7 +3747,7 @@ 0 - ..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio_ex.h + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h 76 480 484 @@ -3766,54 +3766,45 @@ ..\Core\Clock\segment.h - 11 + 0 1 - 12 - 1 - - 0 - - - ..\Core\Clock\menu.c - 1 - 289 - 356 + 28 1 0 ..\Core\Clock\clock_manager.c - 21 + 51 23 - 54 + 16 1 0 ../Core/Src/rtc.c - 42 - 29 - 45 + 17 + 26 + 27 1 0 ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc.c - 0 - 353 - 354 + 1 + 1749 + 1764 1 0 - ..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rtc.h - 29 - 260 - 291 + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rtc.h + 0 + 211 + 244 1 0 @@ -3839,8 +3830,8 @@ ..\Core\Clock\melody.h 0 - 22 - 35 + 1 + 27 1 0 @@ -3848,17 +3839,170 @@ ..\Core\Clock\melody.c 0 - 63 - 88 + 64 + 108 1 0 - ..\Core\Inc\main.h - 33 - 24 - 100 + ../Core/Inc/main.h + 0 + 68 + 79 + 1 + + 0 + + + ..\Core\Clock\songs.h + 0 + 1 + 127 + 1 + 6,83 + 0 + + + ../Core/Inc/rtc.h + 24 + 6 + 35 + 1 + + 0 + + + ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc_ex.c + 57 + 482 + 512 + 1 + + 0 + + + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rtc_ex.h + 8 + 98 + 123 + 1 + + 0 + + + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h + 8 + 40 + 68 + 1 + + 0 + + + ..\Core\Clock\notes.h + 0 + 118 + 162 + 1 + + 0 + + + ..\Core\Clock\sounds.h + 0 + 11 + 55 + 1 + + 0 + + + ..\Core\Clock\clock_manager.h + 0 + 1 + 27 + 1 + + 0 + + + ..\Core\Menu\games.c + 0 + 232 + 276 + 1 + + 0 + + + ..\Core\Menu\menu_items.c + 0 + 179 + 1 + 1 + 103,199,228 + 0 + + + ..\Core\Menu\clock.c + 13 + 19 + 38 + 1 + + 0 + + + ..\Core\Menu\menu_items.h + 0 + 1 + 22 + 1 + + 0 + + + ..\Core\Menu\clock.h + 0 + 1 + 10 + 1 + + 0 + + + ..\Core\Menu\menu.c + 0 + 14 + 25 + 1 + + 0 + + + ..\Core\Menu\games.h + 0 + 1 + 12 + 1 + + 0 + + + ..\Core\Menu\menu.h + 0 + 27 + 71 + 1 + + 0 + + + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h + 0 + 86 + 97 1 0 diff --git a/MDK-ARM/lamp.uvoptx b/MDK-ARM/lamp.uvoptx index bad51b0..d80d54b 100644 --- a/MDK-ARM/lamp.uvoptx +++ b/MDK-ARM/lamp.uvoptx @@ -173,7 +173,7 @@ 4 1 - g_ctx + g_ctx,0x0A 5 @@ -608,54 +608,6 @@ 0 0 0 - ..\Core\Clock\menu_items.c - menu_items.c - 0 - 0 - - - 5 - 28 - 5 - 0 - 0 - 0 - ..\Core\Clock\menu_items.h - menu_items.h - 0 - 0 - - - 5 - 29 - 1 - 0 - 0 - 0 - ..\Core\Clock\menu.c - menu.c - 0 - 0 - - - 5 - 30 - 5 - 0 - 0 - 0 - ..\Core\Clock\menu.h - menu.h - 0 - 0 - - - 5 - 31 - 1 - 0 - 0 - 0 ..\Core\Clock\segment.c segment.c 0 @@ -663,7 +615,7 @@ 5 - 32 + 28 5 0 0 @@ -675,7 +627,7 @@ 5 - 33 + 29 1 0 0 @@ -687,7 +639,7 @@ 5 - 34 + 30 5 0 0 @@ -699,7 +651,7 @@ 5 - 35 + 31 5 0 0 @@ -711,7 +663,7 @@ 5 - 36 + 32 5 0 0 @@ -723,7 +675,7 @@ 5 - 37 + 33 5 0 0 @@ -735,6 +687,110 @@ + + Menu + 1 + 0 + 0 + 0 + + 6 + 34 + 1 + 0 + 0 + 0 + ..\Core\Menu\clock.c + clock.c + 0 + 0 + + + 6 + 35 + 5 + 0 + 0 + 0 + ..\Core\Menu\clock.h + clock.h + 0 + 0 + + + 6 + 36 + 1 + 0 + 0 + 0 + ..\Core\Menu\games.c + games.c + 0 + 0 + + + 6 + 37 + 5 + 0 + 0 + 0 + ..\Core\Menu\games.h + games.h + 0 + 0 + + + 6 + 38 + 1 + 0 + 0 + 0 + ..\Core\Menu\menu_items.c + menu_items.c + 0 + 0 + + + 6 + 39 + 5 + 0 + 0 + 0 + ..\Core\Menu\menu_items.h + menu_items.h + 0 + 0 + + + 6 + 40 + 1 + 0 + 0 + 0 + ..\Core\Menu\menu.c + menu.c + 0 + 0 + + + 6 + 41 + 5 + 0 + 0 + 0 + ..\Core\Menu\menu.h + menu.h + 0 + 0 + + + ::CMSIS 0 diff --git a/MDK-ARM/lamp.uvprojx b/MDK-ARM/lamp.uvprojx index 424817f..81676a5 100644 --- a/MDK-ARM/lamp.uvprojx +++ b/MDK-ARM/lamp.uvprojx @@ -10,9 +10,8 @@ lamp 0x4 ARM-ADS - 6190000::V6.19::ARMCLANG - 6190000::V6.19::ARMCLANG - 1 + 5060960::V5.06 update 7 (build 960)::.\ARMCC + 0 STM32F103C8 @@ -82,7 +81,7 @@ 0 - 1 + 0 0 @@ -324,7 +323,7 @@ 0 0 0 - 3 + 2 0 0 1 @@ -341,7 +340,7 @@ USE_HAL_DRIVER,STM32F103xB - ../Core/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy;../Drivers/CMSIS/Device/ST/STM32F1xx/Include;../Drivers/CMSIS/Include;../Core/Clock + ../Core/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy;../Drivers/CMSIS/Device/ST/STM32F1xx/Include;../Drivers/CMSIS/Include;../Core/Clock;..\Core\Menu @@ -777,26 +776,6 @@ 5 ..\Core\Clock\clock_manager.h - - menu_items.c - 1 - ..\Core\Clock\menu_items.c - - - menu_items.h - 5 - ..\Core\Clock\menu_items.h - - - menu.c - 1 - ..\Core\Clock\menu.c - - - menu.h - 5 - ..\Core\Clock\menu.h - segment.c 1 @@ -834,6 +813,51 @@ + + Menu + + + clock.c + 1 + ..\Core\Menu\clock.c + + + clock.h + 5 + ..\Core\Menu\clock.h + + + games.c + 1 + ..\Core\Menu\games.c + + + games.h + 5 + ..\Core\Menu\games.h + + + menu_items.c + 1 + ..\Core\Menu\menu_items.c + + + menu_items.h + 5 + ..\Core\Menu\menu_items.h + + + menu.c + 1 + ..\Core\Menu\menu.c + + + menu.h + 5 + ..\Core\Menu\menu.h + + + ::CMSIS @@ -854,4 +878,13 @@ + + + + lamp + 1 + + + + diff --git a/MDK-ARM/startup_stm32f103xb.lst b/MDK-ARM/startup_stm32f103xb.lst index 4e48367..85b2a91 100644 --- a/MDK-ARM/startup_stm32f103xb.lst +++ b/MDK-ARM/startup_stm32f103xb.lst @@ -214,114 +214,114 @@ ARM Macro Assembler Page 4 ] 130 00000000 IMPORT __main 131 00000000 IMPORT SystemInit - 132 00000000 4809 LDR R0, =SystemInit - 133 00000002 4780 BLX R0 - 134 00000004 4809 LDR R0, =__main - 135 00000006 4700 BX R0 - 136 00000008 ENDP - 137 00000008 - 138 00000008 ; Dummy Exception Handlers (infinite loops which can be - modified) + 132 00000000 + 133 00000000 + 134 00000000 4809 LDR R0, =SystemInit + 135 00000002 4780 BLX R0 + 136 00000004 4809 LDR R0, =__main + 137 00000006 4700 BX R0 + 138 00000008 ENDP 139 00000008 - 140 00000008 NMI_Handler + 140 00000008 ; Dummy Exception Handlers (infinite loops which can be + modified) + 141 00000008 + 142 00000008 NMI_Handler PROC - 141 00000008 EXPORT NMI_Handler [WEA + 143 00000008 EXPORT NMI_Handler [WEA K] - 142 00000008 E7FE B . - 143 0000000A ENDP - 145 0000000A HardFault_Handler + 144 00000008 E7FE B . + 145 0000000A ENDP + 147 0000000A HardFault_Handler PROC - 146 0000000A EXPORT HardFault_Handler [WEA + 148 0000000A EXPORT HardFault_Handler [WEA K] - 147 0000000A E7FE B . - 148 0000000C ENDP - 150 0000000C MemManage_Handler + 149 0000000A E7FE B . + 150 0000000C ENDP + 152 0000000C MemManage_Handler PROC - 151 0000000C EXPORT MemManage_Handler [WEA + 153 0000000C EXPORT MemManage_Handler [WEA K] - 152 0000000C E7FE B . - 153 0000000E ENDP - 155 0000000E BusFault_Handler + 154 0000000C E7FE B . + 155 0000000E ENDP + 157 0000000E BusFault_Handler PROC - 156 0000000E EXPORT BusFault_Handler [WEA + 158 0000000E EXPORT BusFault_Handler [WEA K] - 157 0000000E E7FE B . - 158 00000010 ENDP - 160 00000010 UsageFault_Handler + 159 0000000E E7FE B . + 160 00000010 ENDP + 162 00000010 UsageFault_Handler PROC - 161 00000010 EXPORT UsageFault_Handler [WEA + 163 00000010 EXPORT UsageFault_Handler [WEA K] - 162 00000010 E7FE B . - 163 00000012 ENDP - 164 00000012 SVC_Handler + 164 00000010 E7FE B . + 165 00000012 ENDP + 166 00000012 SVC_Handler PROC - 165 00000012 EXPORT SVC_Handler [WEA -K] - 166 00000012 E7FE B . + 167 00000012 EXPORT SVC_Handler [WEA ARM Macro Assembler Page 5 - 167 00000014 ENDP - 169 00000014 DebugMon_Handler - PROC - 170 00000014 EXPORT DebugMon_Handler [WEA K] - 171 00000014 E7FE B . - 172 00000016 ENDP - 173 00000016 PendSV_Handler + 168 00000012 E7FE B . + 169 00000014 ENDP + 171 00000014 DebugMon_Handler PROC - 174 00000016 EXPORT PendSV_Handler [WEA + 172 00000014 EXPORT DebugMon_Handler [WEA K] - 175 00000016 E7FE B . - 176 00000018 ENDP - 177 00000018 SysTick_Handler + 173 00000014 E7FE B . + 174 00000016 ENDP + 175 00000016 PendSV_Handler PROC - 178 00000018 EXPORT SysTick_Handler [WEA + 176 00000016 EXPORT PendSV_Handler [WEA K] - 179 00000018 E7FE B . - 180 0000001A ENDP - 181 0000001A - 182 0000001A Default_Handler + 177 00000016 E7FE B . + 178 00000018 ENDP + 179 00000018 SysTick_Handler PROC + 180 00000018 EXPORT SysTick_Handler [WEA +K] + 181 00000018 E7FE B . + 182 0000001A ENDP 183 0000001A - 184 0000001A EXPORT WWDG_IRQHandler [WEA + 184 0000001A Default_Handler + PROC + 185 0000001A + 186 0000001A EXPORT WWDG_IRQHandler [WEA K] - 185 0000001A EXPORT PVD_IRQHandler [WEA + 187 0000001A EXPORT PVD_IRQHandler [WEA K] - 186 0000001A EXPORT TAMPER_IRQHandler [WEA + 188 0000001A EXPORT TAMPER_IRQHandler [WEA K] - 187 0000001A EXPORT RTC_IRQHandler [WEA + 189 0000001A EXPORT RTC_IRQHandler [WEA K] - 188 0000001A EXPORT FLASH_IRQHandler [WEA + 190 0000001A EXPORT FLASH_IRQHandler [WEA K] - 189 0000001A EXPORT RCC_IRQHandler [WEA + 191 0000001A EXPORT RCC_IRQHandler [WEA K] - 190 0000001A EXPORT EXTI0_IRQHandler [WEA + 192 0000001A EXPORT EXTI0_IRQHandler [WEA K] - 191 0000001A EXPORT EXTI1_IRQHandler [WEA + 193 0000001A EXPORT EXTI1_IRQHandler [WEA K] - 192 0000001A EXPORT EXTI2_IRQHandler [WEA + 194 0000001A EXPORT EXTI2_IRQHandler [WEA K] - 193 0000001A EXPORT EXTI3_IRQHandler [WEA + 195 0000001A EXPORT EXTI3_IRQHandler [WEA K] - 194 0000001A EXPORT EXTI4_IRQHandler [WEA + 196 0000001A EXPORT EXTI4_IRQHandler [WEA K] - 195 0000001A EXPORT DMA1_Channel1_IRQHandler [WEA + 197 0000001A EXPORT DMA1_Channel1_IRQHandler [WEA K] - 196 0000001A EXPORT DMA1_Channel2_IRQHandler [WEA + 198 0000001A EXPORT DMA1_Channel2_IRQHandler [WEA K] - 197 0000001A EXPORT DMA1_Channel3_IRQHandler [WEA + 199 0000001A EXPORT DMA1_Channel3_IRQHandler [WEA K] - 198 0000001A EXPORT DMA1_Channel4_IRQHandler [WEA + 200 0000001A EXPORT DMA1_Channel4_IRQHandler [WEA K] - 199 0000001A EXPORT DMA1_Channel5_IRQHandler [WEA + 201 0000001A EXPORT DMA1_Channel5_IRQHandler [WEA K] - 200 0000001A EXPORT DMA1_Channel6_IRQHandler [WEA -K] - 201 0000001A EXPORT DMA1_Channel7_IRQHandler [WEA + 202 0000001A EXPORT DMA1_Channel6_IRQHandler [WEA K] @@ -329,142 +329,144 @@ K] ARM Macro Assembler Page 6 - 202 0000001A EXPORT ADC1_2_IRQHandler [WEA + 203 0000001A EXPORT DMA1_Channel7_IRQHandler [WEA K] - 203 0000001A EXPORT USB_HP_CAN1_TX_IRQHandler [WEA + 204 0000001A EXPORT ADC1_2_IRQHandler [WEA K] - 204 0000001A EXPORT USB_LP_CAN1_RX0_IRQHandler [WEA + 205 0000001A EXPORT USB_HP_CAN1_TX_IRQHandler [WEA K] - 205 0000001A EXPORT CAN1_RX1_IRQHandler [WEA + 206 0000001A EXPORT USB_LP_CAN1_RX0_IRQHandler [WEA K] - 206 0000001A EXPORT CAN1_SCE_IRQHandler [WEA + 207 0000001A EXPORT CAN1_RX1_IRQHandler [WEA K] - 207 0000001A EXPORT EXTI9_5_IRQHandler [WEA + 208 0000001A EXPORT CAN1_SCE_IRQHandler [WEA K] - 208 0000001A EXPORT TIM1_BRK_IRQHandler [WEA + 209 0000001A EXPORT EXTI9_5_IRQHandler [WEA K] - 209 0000001A EXPORT TIM1_UP_IRQHandler [WEA + 210 0000001A EXPORT TIM1_BRK_IRQHandler [WEA K] - 210 0000001A EXPORT TIM1_TRG_COM_IRQHandler [WEA + 211 0000001A EXPORT TIM1_UP_IRQHandler [WEA K] - 211 0000001A EXPORT TIM1_CC_IRQHandler [WEA + 212 0000001A EXPORT TIM1_TRG_COM_IRQHandler [WEA K] - 212 0000001A EXPORT TIM2_IRQHandler [WEA + 213 0000001A EXPORT TIM1_CC_IRQHandler [WEA K] - 213 0000001A EXPORT TIM3_IRQHandler [WEA + 214 0000001A EXPORT TIM2_IRQHandler [WEA K] - 214 0000001A EXPORT TIM4_IRQHandler [WEA + 215 0000001A EXPORT TIM3_IRQHandler [WEA K] - 215 0000001A EXPORT I2C1_EV_IRQHandler [WEA + 216 0000001A EXPORT TIM4_IRQHandler [WEA K] - 216 0000001A EXPORT I2C1_ER_IRQHandler [WEA + 217 0000001A EXPORT I2C1_EV_IRQHandler [WEA K] - 217 0000001A EXPORT I2C2_EV_IRQHandler [WEA + 218 0000001A EXPORT I2C1_ER_IRQHandler [WEA K] - 218 0000001A EXPORT I2C2_ER_IRQHandler [WEA + 219 0000001A EXPORT I2C2_EV_IRQHandler [WEA K] - 219 0000001A EXPORT SPI1_IRQHandler [WEA + 220 0000001A EXPORT I2C2_ER_IRQHandler [WEA K] - 220 0000001A EXPORT SPI2_IRQHandler [WEA + 221 0000001A EXPORT SPI1_IRQHandler [WEA K] - 221 0000001A EXPORT USART1_IRQHandler [WEA + 222 0000001A EXPORT SPI2_IRQHandler [WEA K] - 222 0000001A EXPORT USART2_IRQHandler [WEA + 223 0000001A EXPORT USART1_IRQHandler [WEA K] - 223 0000001A EXPORT USART3_IRQHandler [WEA + 224 0000001A EXPORT USART2_IRQHandler [WEA K] - 224 0000001A EXPORT EXTI15_10_IRQHandler [WEA + 225 0000001A EXPORT USART3_IRQHandler [WEA K] - 225 0000001A EXPORT RTC_Alarm_IRQHandler [WE + 226 0000001A EXPORT EXTI15_10_IRQHandler [WEA +K] + 227 0000001A EXPORT RTC_Alarm_IRQHandler [WE AK] - 226 0000001A EXPORT USBWakeUp_IRQHandler [WEA + 228 0000001A EXPORT USBWakeUp_IRQHandler [WEA K] - 227 0000001A - 228 0000001A WWDG_IRQHandler - 229 0000001A PVD_IRQHandler - 230 0000001A TAMPER_IRQHandler - 231 0000001A RTC_IRQHandler - 232 0000001A FLASH_IRQHandler - 233 0000001A RCC_IRQHandler - 234 0000001A EXTI0_IRQHandler - 235 0000001A EXTI1_IRQHandler + 229 0000001A + 230 0000001A WWDG_IRQHandler + 231 0000001A PVD_IRQHandler + 232 0000001A TAMPER_IRQHandler + 233 0000001A RTC_IRQHandler + 234 0000001A FLASH_IRQHandler + 235 0000001A RCC_IRQHandler ARM Macro Assembler Page 7 - 236 0000001A EXTI2_IRQHandler - 237 0000001A EXTI3_IRQHandler - 238 0000001A EXTI4_IRQHandler - 239 0000001A DMA1_Channel1_IRQHandler - 240 0000001A DMA1_Channel2_IRQHandler - 241 0000001A DMA1_Channel3_IRQHandler - 242 0000001A DMA1_Channel4_IRQHandler - 243 0000001A DMA1_Channel5_IRQHandler - 244 0000001A DMA1_Channel6_IRQHandler - 245 0000001A DMA1_Channel7_IRQHandler - 246 0000001A ADC1_2_IRQHandler - 247 0000001A USB_HP_CAN1_TX_IRQHandler - 248 0000001A USB_LP_CAN1_RX0_IRQHandler - 249 0000001A CAN1_RX1_IRQHandler - 250 0000001A CAN1_SCE_IRQHandler - 251 0000001A EXTI9_5_IRQHandler - 252 0000001A TIM1_BRK_IRQHandler - 253 0000001A TIM1_UP_IRQHandler - 254 0000001A TIM1_TRG_COM_IRQHandler - 255 0000001A TIM1_CC_IRQHandler - 256 0000001A TIM2_IRQHandler - 257 0000001A TIM3_IRQHandler - 258 0000001A TIM4_IRQHandler - 259 0000001A I2C1_EV_IRQHandler - 260 0000001A I2C1_ER_IRQHandler - 261 0000001A I2C2_EV_IRQHandler - 262 0000001A I2C2_ER_IRQHandler - 263 0000001A SPI1_IRQHandler - 264 0000001A SPI2_IRQHandler - 265 0000001A USART1_IRQHandler - 266 0000001A USART2_IRQHandler - 267 0000001A USART3_IRQHandler - 268 0000001A EXTI15_10_IRQHandler - 269 0000001A RTC_Alarm_IRQHandler - 270 0000001A USBWakeUp_IRQHandler - 271 0000001A - 272 0000001A E7FE B . - 273 0000001C - 274 0000001C ENDP + 236 0000001A EXTI0_IRQHandler + 237 0000001A EXTI1_IRQHandler + 238 0000001A EXTI2_IRQHandler + 239 0000001A EXTI3_IRQHandler + 240 0000001A EXTI4_IRQHandler + 241 0000001A DMA1_Channel1_IRQHandler + 242 0000001A DMA1_Channel2_IRQHandler + 243 0000001A DMA1_Channel3_IRQHandler + 244 0000001A DMA1_Channel4_IRQHandler + 245 0000001A DMA1_Channel5_IRQHandler + 246 0000001A DMA1_Channel6_IRQHandler + 247 0000001A DMA1_Channel7_IRQHandler + 248 0000001A ADC1_2_IRQHandler + 249 0000001A USB_HP_CAN1_TX_IRQHandler + 250 0000001A USB_LP_CAN1_RX0_IRQHandler + 251 0000001A CAN1_RX1_IRQHandler + 252 0000001A CAN1_SCE_IRQHandler + 253 0000001A EXTI9_5_IRQHandler + 254 0000001A TIM1_BRK_IRQHandler + 255 0000001A TIM1_UP_IRQHandler + 256 0000001A TIM1_TRG_COM_IRQHandler + 257 0000001A TIM1_CC_IRQHandler + 258 0000001A TIM2_IRQHandler + 259 0000001A TIM3_IRQHandler + 260 0000001A TIM4_IRQHandler + 261 0000001A I2C1_EV_IRQHandler + 262 0000001A I2C1_ER_IRQHandler + 263 0000001A I2C2_EV_IRQHandler + 264 0000001A I2C2_ER_IRQHandler + 265 0000001A SPI1_IRQHandler + 266 0000001A SPI2_IRQHandler + 267 0000001A USART1_IRQHandler + 268 0000001A USART2_IRQHandler + 269 0000001A USART3_IRQHandler + 270 0000001A EXTI15_10_IRQHandler + 271 0000001A RTC_Alarm_IRQHandler + 272 0000001A USBWakeUp_IRQHandler + 273 0000001A + 274 0000001A E7FE B . 275 0000001C - 276 0000001C ALIGN + 276 0000001C ENDP 277 0000001C - 278 0000001C ;******************************************************* - ************************ - 279 0000001C ; User Stack and Heap initialization + 278 0000001C ALIGN + 279 0000001C 280 0000001C ;******************************************************* ************************ - 281 0000001C IF :DEF:__MICROLIB - 288 0000001C - 289 0000001C IMPORT __use_two_region_memory - 290 0000001C EXPORT __user_initial_stackheap - 291 0000001C - 292 0000001C __user_initial_stackheap + 281 0000001C ; User Stack and Heap initialization + 282 0000001C ;******************************************************* + ************************ + 283 0000001C IF :DEF:__MICROLIB + 290 0000001C + 291 0000001C IMPORT __use_two_region_memory + 292 0000001C EXPORT __user_initial_stackheap 293 0000001C - 294 0000001C 4804 LDR R0, = Heap_Mem - 295 0000001E 4905 LDR R1, =(Stack_Mem + Stack_Size) - 296 00000020 4A05 LDR R2, = (Heap_Mem + Heap_Size) - 297 00000022 4B06 LDR R3, = Stack_Mem - 298 00000024 4770 BX LR + 294 0000001C __user_initial_stackheap + 295 0000001C + 296 0000001C 4804 LDR R0, = Heap_Mem + 297 0000001E 4905 LDR R1, =(Stack_Mem + Stack_Size) + 298 00000020 4A05 LDR R2, = (Heap_Mem + Heap_Size) ARM Macro Assembler Page 8 - 299 00000026 - 300 00000026 00 00 ALIGN - 301 00000028 - 302 00000028 ENDIF + 299 00000022 4B06 LDR R3, = Stack_Mem + 300 00000024 4770 BX LR + 301 00000026 + 302 00000026 00 00 ALIGN 303 00000028 - 304 00000028 END + 304 00000028 ENDIF + 305 00000028 + 306 00000028 END 00000000 00000000 00000000 @@ -473,10 +475,11 @@ ARM Macro Assembler Page 8 00000000 Command Line: --debug --xref --diag_suppress=9931 --cpu=Cortex-M3 --apcs=interw ork --depend=lamp\startup_stm32f103xb.d -olamp\startup_stm32f103xb.o -I.\RTE\_l -amp -IE:\Arm\Packs\ARM\CMSIS\5.9.0\CMSIS\Core\Include -IE:\Arm\Packs\Keil\STM32 -F1xx_DFP\2.4.0\Device\Include --predefine="__UVISION_VERSION SETA 538" --predef -ine="_RTE_ SETA 1" --predefine="STM32F10X_MD SETA 1" --predefine="_RTE_ SETA 1" - --list=startup_stm32f103xb.lst startup_stm32f103xb.s +amp -IC:\Users\I\AppData\Local\Arm\Packs\ARM\CMSIS\5.9.0\CMSIS\Core\Include -IC +:\Users\I\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.0\Device\Include --pre +define="__UVISION_VERSION SETA 538" --predefine="_RTE_ SETA 1" --predefine="STM +32F10X_MD SETA 1" --predefine="_RTE_ SETA 1" --list=startup_stm32f103xb.lst sta +rtup_stm32f103xb.s @@ -497,8 +500,8 @@ Symbol: Stack_Mem Definitions At line 35 in file startup_stm32f103xb.s Uses - At line 295 in file startup_stm32f103xb.s At line 297 in file startup_stm32f103xb.s + At line 299 in file startup_stm32f103xb.s __initial_sp 00000400 @@ -529,8 +532,8 @@ Symbol: Heap_Mem Definitions At line 47 in file startup_stm32f103xb.s Uses - At line 294 in file startup_stm32f103xb.s At line 296 in file startup_stm32f103xb.s + At line 298 in file startup_stm32f103xb.s __heap_base 00000000 @@ -600,52 +603,52 @@ ADC1_2_IRQHandler 0000001A Symbol: ADC1_2_IRQHandler Definitions - At line 246 in file startup_stm32f103xb.s + At line 248 in file startup_stm32f103xb.s Uses At line 96 in file startup_stm32f103xb.s - At line 202 in file startup_stm32f103xb.s + At line 204 in file startup_stm32f103xb.s BusFault_Handler 0000000E Symbol: BusFault_Handler Definitions - At line 155 in file startup_stm32f103xb.s + At line 157 in file startup_stm32f103xb.s Uses At line 65 in file startup_stm32f103xb.s - At line 156 in file startup_stm32f103xb.s + At line 158 in file startup_stm32f103xb.s CAN1_RX1_IRQHandler 0000001A Symbol: CAN1_RX1_IRQHandler Definitions - At line 249 in file startup_stm32f103xb.s + At line 251 in file startup_stm32f103xb.s Uses At line 99 in file startup_stm32f103xb.s - At line 205 in file startup_stm32f103xb.s + At line 207 in file startup_stm32f103xb.s CAN1_SCE_IRQHandler 0000001A Symbol: CAN1_SCE_IRQHandler Definitions - At line 250 in file startup_stm32f103xb.s + At line 252 in file startup_stm32f103xb.s Uses At line 100 in file startup_stm32f103xb.s - At line 206 in file startup_stm32f103xb.s + At line 208 in file startup_stm32f103xb.s DMA1_Channel1_IRQHandler 0000001A Symbol: DMA1_Channel1_IRQHandler Definitions - At line 239 in file startup_stm32f103xb.s + At line 241 in file startup_stm32f103xb.s Uses At line 89 in file startup_stm32f103xb.s - At line 195 in file startup_stm32f103xb.s + At line 197 in file startup_stm32f103xb.s DMA1_Channel2_IRQHandler 0000001A Symbol: DMA1_Channel2_IRQHandler Definitions - At line 240 in file startup_stm32f103xb.s + At line 242 in file startup_stm32f103xb.s Uses @@ -654,61 +657,61 @@ ARM Macro Assembler Page 2 Alphabetic symbol ordering Relocatable symbols At line 90 in file startup_stm32f103xb.s - At line 196 in file startup_stm32f103xb.s + At line 198 in file startup_stm32f103xb.s DMA1_Channel3_IRQHandler 0000001A Symbol: DMA1_Channel3_IRQHandler Definitions - At line 241 in file startup_stm32f103xb.s + At line 243 in file startup_stm32f103xb.s Uses At line 91 in file startup_stm32f103xb.s - At line 197 in file startup_stm32f103xb.s + At line 199 in file startup_stm32f103xb.s DMA1_Channel4_IRQHandler 0000001A Symbol: DMA1_Channel4_IRQHandler Definitions - At line 242 in file startup_stm32f103xb.s + At line 244 in file startup_stm32f103xb.s Uses At line 92 in file startup_stm32f103xb.s - At line 198 in file startup_stm32f103xb.s + At line 200 in file startup_stm32f103xb.s DMA1_Channel5_IRQHandler 0000001A Symbol: DMA1_Channel5_IRQHandler Definitions - At line 243 in file startup_stm32f103xb.s + At line 245 in file startup_stm32f103xb.s Uses At line 93 in file startup_stm32f103xb.s - At line 199 in file startup_stm32f103xb.s + At line 201 in file startup_stm32f103xb.s DMA1_Channel6_IRQHandler 0000001A Symbol: DMA1_Channel6_IRQHandler Definitions - At line 244 in file startup_stm32f103xb.s + At line 246 in file startup_stm32f103xb.s Uses At line 94 in file startup_stm32f103xb.s - At line 200 in file startup_stm32f103xb.s + At line 202 in file startup_stm32f103xb.s DMA1_Channel7_IRQHandler 0000001A Symbol: DMA1_Channel7_IRQHandler Definitions - At line 245 in file startup_stm32f103xb.s + At line 247 in file startup_stm32f103xb.s Uses At line 95 in file startup_stm32f103xb.s - At line 201 in file startup_stm32f103xb.s + At line 203 in file startup_stm32f103xb.s DebugMon_Handler 00000014 Symbol: DebugMon_Handler Definitions - At line 169 in file startup_stm32f103xb.s + At line 171 in file startup_stm32f103xb.s Uses At line 72 in file startup_stm32f103xb.s - At line 170 in file startup_stm32f103xb.s + At line 172 in file startup_stm32f103xb.s Default_Handler 0000001A @@ -720,7 +723,7 @@ Relocatable symbols Symbol: Default_Handler Definitions - At line 182 in file startup_stm32f103xb.s + At line 184 in file startup_stm32f103xb.s Uses None Comment: Default_Handler unused @@ -728,55 +731,55 @@ EXTI0_IRQHandler 0000001A Symbol: EXTI0_IRQHandler Definitions - At line 234 in file startup_stm32f103xb.s + At line 236 in file startup_stm32f103xb.s Uses At line 84 in file startup_stm32f103xb.s - At line 190 in file startup_stm32f103xb.s + At line 192 in file startup_stm32f103xb.s EXTI15_10_IRQHandler 0000001A Symbol: EXTI15_10_IRQHandler Definitions - At line 268 in file startup_stm32f103xb.s + At line 270 in file startup_stm32f103xb.s Uses At line 118 in file startup_stm32f103xb.s - At line 224 in file startup_stm32f103xb.s + At line 226 in file startup_stm32f103xb.s EXTI1_IRQHandler 0000001A Symbol: EXTI1_IRQHandler Definitions - At line 235 in file startup_stm32f103xb.s + At line 237 in file startup_stm32f103xb.s Uses At line 85 in file startup_stm32f103xb.s - At line 191 in file startup_stm32f103xb.s + At line 193 in file startup_stm32f103xb.s EXTI2_IRQHandler 0000001A Symbol: EXTI2_IRQHandler Definitions - At line 236 in file startup_stm32f103xb.s + At line 238 in file startup_stm32f103xb.s Uses At line 86 in file startup_stm32f103xb.s - At line 192 in file startup_stm32f103xb.s + At line 194 in file startup_stm32f103xb.s EXTI3_IRQHandler 0000001A Symbol: EXTI3_IRQHandler Definitions - At line 237 in file startup_stm32f103xb.s + At line 239 in file startup_stm32f103xb.s Uses At line 87 in file startup_stm32f103xb.s - At line 193 in file startup_stm32f103xb.s + At line 195 in file startup_stm32f103xb.s EXTI4_IRQHandler 0000001A Symbol: EXTI4_IRQHandler Definitions - At line 238 in file startup_stm32f103xb.s + At line 240 in file startup_stm32f103xb.s Uses At line 88 in file startup_stm32f103xb.s - At line 194 in file startup_stm32f103xb.s + At line 196 in file startup_stm32f103xb.s @@ -788,55 +791,55 @@ EXTI9_5_IRQHandler 0000001A Symbol: EXTI9_5_IRQHandler Definitions - At line 251 in file startup_stm32f103xb.s + At line 253 in file startup_stm32f103xb.s Uses At line 101 in file startup_stm32f103xb.s - At line 207 in file startup_stm32f103xb.s + At line 209 in file startup_stm32f103xb.s FLASH_IRQHandler 0000001A Symbol: FLASH_IRQHandler Definitions - At line 232 in file startup_stm32f103xb.s + At line 234 in file startup_stm32f103xb.s Uses At line 82 in file startup_stm32f103xb.s - At line 188 in file startup_stm32f103xb.s + At line 190 in file startup_stm32f103xb.s HardFault_Handler 0000000A Symbol: HardFault_Handler Definitions - At line 145 in file startup_stm32f103xb.s + At line 147 in file startup_stm32f103xb.s Uses At line 63 in file startup_stm32f103xb.s - At line 146 in file startup_stm32f103xb.s + At line 148 in file startup_stm32f103xb.s I2C1_ER_IRQHandler 0000001A Symbol: I2C1_ER_IRQHandler Definitions - At line 260 in file startup_stm32f103xb.s + At line 262 in file startup_stm32f103xb.s Uses At line 110 in file startup_stm32f103xb.s - At line 216 in file startup_stm32f103xb.s + At line 218 in file startup_stm32f103xb.s I2C1_EV_IRQHandler 0000001A Symbol: I2C1_EV_IRQHandler Definitions - At line 259 in file startup_stm32f103xb.s + At line 261 in file startup_stm32f103xb.s Uses At line 109 in file startup_stm32f103xb.s - At line 215 in file startup_stm32f103xb.s + At line 217 in file startup_stm32f103xb.s I2C2_ER_IRQHandler 0000001A Symbol: I2C2_ER_IRQHandler Definitions - At line 262 in file startup_stm32f103xb.s + At line 264 in file startup_stm32f103xb.s Uses At line 112 in file startup_stm32f103xb.s - At line 218 in file startup_stm32f103xb.s + At line 220 in file startup_stm32f103xb.s I2C2_EV_IRQHandler 0000001A @@ -848,64 +851,64 @@ Symbol: I2C2_EV_IRQHandler ARM Macro Assembler Page 5 Alphabetic symbol ordering Relocatable symbols - At line 261 in file startup_stm32f103xb.s + At line 263 in file startup_stm32f103xb.s Uses At line 111 in file startup_stm32f103xb.s - At line 217 in file startup_stm32f103xb.s + At line 219 in file startup_stm32f103xb.s MemManage_Handler 0000000C Symbol: MemManage_Handler Definitions - At line 150 in file startup_stm32f103xb.s + At line 152 in file startup_stm32f103xb.s Uses At line 64 in file startup_stm32f103xb.s - At line 151 in file startup_stm32f103xb.s + At line 153 in file startup_stm32f103xb.s NMI_Handler 00000008 Symbol: NMI_Handler Definitions - At line 140 in file startup_stm32f103xb.s + At line 142 in file startup_stm32f103xb.s Uses At line 62 in file startup_stm32f103xb.s - At line 141 in file startup_stm32f103xb.s + At line 143 in file startup_stm32f103xb.s PVD_IRQHandler 0000001A Symbol: PVD_IRQHandler Definitions - At line 229 in file startup_stm32f103xb.s + At line 231 in file startup_stm32f103xb.s Uses At line 79 in file startup_stm32f103xb.s - At line 185 in file startup_stm32f103xb.s + At line 187 in file startup_stm32f103xb.s PendSV_Handler 00000016 Symbol: PendSV_Handler Definitions - At line 173 in file startup_stm32f103xb.s + At line 175 in file startup_stm32f103xb.s Uses At line 74 in file startup_stm32f103xb.s - At line 174 in file startup_stm32f103xb.s + At line 176 in file startup_stm32f103xb.s RCC_IRQHandler 0000001A Symbol: RCC_IRQHandler Definitions - At line 233 in file startup_stm32f103xb.s + At line 235 in file startup_stm32f103xb.s Uses At line 83 in file startup_stm32f103xb.s - At line 189 in file startup_stm32f103xb.s + At line 191 in file startup_stm32f103xb.s RTC_Alarm_IRQHandler 0000001A Symbol: RTC_Alarm_IRQHandler Definitions - At line 269 in file startup_stm32f103xb.s + At line 271 in file startup_stm32f103xb.s Uses At line 119 in file startup_stm32f103xb.s - At line 225 in file startup_stm32f103xb.s + At line 227 in file startup_stm32f103xb.s @@ -917,10 +920,10 @@ RTC_IRQHandler 0000001A Symbol: RTC_IRQHandler Definitions - At line 231 in file startup_stm32f103xb.s + At line 233 in file startup_stm32f103xb.s Uses At line 81 in file startup_stm32f103xb.s - At line 187 in file startup_stm32f103xb.s + At line 189 in file startup_stm32f103xb.s Reset_Handler 00000000 @@ -935,43 +938,43 @@ SPI1_IRQHandler 0000001A Symbol: SPI1_IRQHandler Definitions - At line 263 in file startup_stm32f103xb.s + At line 265 in file startup_stm32f103xb.s Uses At line 113 in file startup_stm32f103xb.s - At line 219 in file startup_stm32f103xb.s + At line 221 in file startup_stm32f103xb.s SPI2_IRQHandler 0000001A Symbol: SPI2_IRQHandler Definitions - At line 264 in file startup_stm32f103xb.s + At line 266 in file startup_stm32f103xb.s Uses At line 114 in file startup_stm32f103xb.s - At line 220 in file startup_stm32f103xb.s + At line 222 in file startup_stm32f103xb.s SVC_Handler 00000012 Symbol: SVC_Handler Definitions - At line 164 in file startup_stm32f103xb.s + At line 166 in file startup_stm32f103xb.s Uses At line 71 in file startup_stm32f103xb.s - At line 165 in file startup_stm32f103xb.s + At line 167 in file startup_stm32f103xb.s SysTick_Handler 00000018 Symbol: SysTick_Handler Definitions - At line 177 in file startup_stm32f103xb.s + At line 179 in file startup_stm32f103xb.s Uses At line 75 in file startup_stm32f103xb.s - At line 178 in file startup_stm32f103xb.s + At line 180 in file startup_stm32f103xb.s TAMPER_IRQHandler 0000001A Symbol: TAMPER_IRQHandler Definitions - At line 230 in file startup_stm32f103xb.s + At line 232 in file startup_stm32f103xb.s @@ -980,61 +983,61 @@ Relocatable symbols Uses At line 80 in file startup_stm32f103xb.s - At line 186 in file startup_stm32f103xb.s + At line 188 in file startup_stm32f103xb.s TIM1_BRK_IRQHandler 0000001A Symbol: TIM1_BRK_IRQHandler Definitions - At line 252 in file startup_stm32f103xb.s + At line 254 in file startup_stm32f103xb.s Uses At line 102 in file startup_stm32f103xb.s - At line 208 in file startup_stm32f103xb.s + At line 210 in file startup_stm32f103xb.s TIM1_CC_IRQHandler 0000001A Symbol: TIM1_CC_IRQHandler Definitions - At line 255 in file startup_stm32f103xb.s + At line 257 in file startup_stm32f103xb.s Uses At line 105 in file startup_stm32f103xb.s - At line 211 in file startup_stm32f103xb.s + At line 213 in file startup_stm32f103xb.s TIM1_TRG_COM_IRQHandler 0000001A Symbol: TIM1_TRG_COM_IRQHandler Definitions - At line 254 in file startup_stm32f103xb.s + At line 256 in file startup_stm32f103xb.s Uses At line 104 in file startup_stm32f103xb.s - At line 210 in file startup_stm32f103xb.s + At line 212 in file startup_stm32f103xb.s TIM1_UP_IRQHandler 0000001A Symbol: TIM1_UP_IRQHandler Definitions - At line 253 in file startup_stm32f103xb.s + At line 255 in file startup_stm32f103xb.s Uses At line 103 in file startup_stm32f103xb.s - At line 209 in file startup_stm32f103xb.s + At line 211 in file startup_stm32f103xb.s TIM2_IRQHandler 0000001A Symbol: TIM2_IRQHandler Definitions - At line 256 in file startup_stm32f103xb.s + At line 258 in file startup_stm32f103xb.s Uses At line 106 in file startup_stm32f103xb.s - At line 212 in file startup_stm32f103xb.s + At line 214 in file startup_stm32f103xb.s TIM3_IRQHandler 0000001A Symbol: TIM3_IRQHandler Definitions - At line 257 in file startup_stm32f103xb.s + At line 259 in file startup_stm32f103xb.s Uses At line 107 in file startup_stm32f103xb.s - At line 213 in file startup_stm32f103xb.s + At line 215 in file startup_stm32f103xb.s TIM4_IRQHandler 0000001A @@ -1046,61 +1049,61 @@ Relocatable symbols Symbol: TIM4_IRQHandler Definitions - At line 258 in file startup_stm32f103xb.s + At line 260 in file startup_stm32f103xb.s Uses At line 108 in file startup_stm32f103xb.s - At line 214 in file startup_stm32f103xb.s + At line 216 in file startup_stm32f103xb.s USART1_IRQHandler 0000001A Symbol: USART1_IRQHandler Definitions - At line 265 in file startup_stm32f103xb.s + At line 267 in file startup_stm32f103xb.s Uses At line 115 in file startup_stm32f103xb.s - At line 221 in file startup_stm32f103xb.s + At line 223 in file startup_stm32f103xb.s USART2_IRQHandler 0000001A Symbol: USART2_IRQHandler Definitions - At line 266 in file startup_stm32f103xb.s + At line 268 in file startup_stm32f103xb.s Uses At line 116 in file startup_stm32f103xb.s - At line 222 in file startup_stm32f103xb.s + At line 224 in file startup_stm32f103xb.s USART3_IRQHandler 0000001A Symbol: USART3_IRQHandler Definitions - At line 267 in file startup_stm32f103xb.s + At line 269 in file startup_stm32f103xb.s Uses At line 117 in file startup_stm32f103xb.s - At line 223 in file startup_stm32f103xb.s + At line 225 in file startup_stm32f103xb.s USBWakeUp_IRQHandler 0000001A Symbol: USBWakeUp_IRQHandler Definitions - At line 270 in file startup_stm32f103xb.s + At line 272 in file startup_stm32f103xb.s Uses At line 120 in file startup_stm32f103xb.s - At line 226 in file startup_stm32f103xb.s + At line 228 in file startup_stm32f103xb.s USB_HP_CAN1_TX_IRQHandler 0000001A Symbol: USB_HP_CAN1_TX_IRQHandler Definitions - At line 247 in file startup_stm32f103xb.s + At line 249 in file startup_stm32f103xb.s Uses At line 97 in file startup_stm32f103xb.s - At line 203 in file startup_stm32f103xb.s + At line 205 in file startup_stm32f103xb.s USB_LP_CAN1_RX0_IRQHandler 0000001A Symbol: USB_LP_CAN1_RX0_IRQHandler Definitions - At line 248 in file startup_stm32f103xb.s + At line 250 in file startup_stm32f103xb.s Uses @@ -1109,33 +1112,33 @@ ARM Macro Assembler Page 9 Alphabetic symbol ordering Relocatable symbols At line 98 in file startup_stm32f103xb.s - At line 204 in file startup_stm32f103xb.s + At line 206 in file startup_stm32f103xb.s UsageFault_Handler 00000010 Symbol: UsageFault_Handler Definitions - At line 160 in file startup_stm32f103xb.s + At line 162 in file startup_stm32f103xb.s Uses At line 66 in file startup_stm32f103xb.s - At line 161 in file startup_stm32f103xb.s + At line 163 in file startup_stm32f103xb.s WWDG_IRQHandler 0000001A Symbol: WWDG_IRQHandler Definitions - At line 228 in file startup_stm32f103xb.s + At line 230 in file startup_stm32f103xb.s Uses At line 78 in file startup_stm32f103xb.s - At line 184 in file startup_stm32f103xb.s + At line 186 in file startup_stm32f103xb.s __user_initial_stackheap 0000001C Symbol: __user_initial_stackheap Definitions - At line 292 in file startup_stm32f103xb.s + At line 294 in file startup_stm32f103xb.s Uses - At line 290 in file startup_stm32f103xb.s + At line 292 in file startup_stm32f103xb.s Comment: __user_initial_stackheap used once 56 symbols @@ -1151,7 +1154,7 @@ Symbol: Heap_Size At line 43 in file startup_stm32f103xb.s Uses At line 47 in file startup_stm32f103xb.s - At line 296 in file startup_stm32f103xb.s + At line 298 in file startup_stm32f103xb.s Stack_Size 00000400 @@ -1160,7 +1163,7 @@ Symbol: Stack_Size At line 32 in file startup_stm32f103xb.s Uses At line 35 in file startup_stm32f103xb.s - At line 295 in file startup_stm32f103xb.s + At line 297 in file startup_stm32f103xb.s __Vectors_Size 000000EC @@ -1183,7 +1186,7 @@ Symbol: SystemInit Definitions At line 131 in file startup_stm32f103xb.s Uses - At line 132 in file startup_stm32f103xb.s + At line 134 in file startup_stm32f103xb.s Comment: SystemInit used once __main 00000000 @@ -1191,13 +1194,13 @@ Symbol: __main Definitions At line 130 in file startup_stm32f103xb.s Uses - At line 134 in file startup_stm32f103xb.s + At line 136 in file startup_stm32f103xb.s Comment: __main used once __use_two_region_memory 00000000 Symbol: __use_two_region_memory Definitions - At line 289 in file startup_stm32f103xb.s + At line 291 in file startup_stm32f103xb.s Uses None Comment: __use_two_region_memory unused