#define configUSE_PREEMPTION 1\r
#define configTICK_RATE_HZ ( ( unsigned short ) 1000 )\r
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 4 )\r
-#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 100 )\r
+#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 80 )\r
#define configMAX_TASK_NAME_LEN ( 10 )\r
#define configUSE_TRACE_FACILITY 0\r
#define configUSE_16_BIT_TICKS 1\r
#define configIDLE_SHOULD_YIELD 1\r
-#define configTOTAL_HEAP_SIZE ( (size_t ) ( 3500 ) )\r
+#define configTOTAL_HEAP_SIZE ( (size_t ) ( 3420 ) )\r
#define configCHECK_FOR_STACK_OVERFLOW 2\r
#define configUSE_MUTEXES 1\r
\r
*/\r
#define configCLOCK_SOURCE 1\r
\r
-/*\r
- * RL78/G13 Memory Model\r
- * 1 = use far memory mode\r
- * 0 = use near memory mode\r
- *\r
- * This setting must match the setting in the IAR project options.\r
- */\r
-#define configMEMORY_MODE 0\r
-\r
#if configCLOCK_SOURCE == 0\r
#define configCPU_CLOCK_HZ ( ( unsigned long ) 20000000 ) /* using the external clock source */\r
#else\r
</option>\r
<option>\r
<name>GenRTLibraryPath</name>\r
- <state>$TOOLKIT_DIR$\LIB\dlrl78nn1n.r87</state>\r
+ <state>$TOOLKIT_DIR$\LIB\dlrl78nf1n.r87</state>\r
</option>\r
<option>\r
<name>GenHwSupport</name>\r
</option>\r
<option>\r
<name>GenStackSize</name>\r
- <state>128</state>\r
+ <state>130</state>\r
</option>\r
<option>\r
<name>GenNearHeapSize</name>\r
</option>\r
<option>\r
<name>GenFarHeapSize</name>\r
- <state>4096</state>\r
+ <state>0</state>\r
</option>\r
<option>\r
<name>GeneralEnableMisra</name>\r
<option>\r
<name>AsmDefines</name>\r
<state>__NEAR_MODEL__</state>\r
- <state>__NEAR_DATA_MODEL__</state>\r
+ <state>__FAR_DATA_MODEL__</state>\r
</option>\r
<option>\r
<name>AsmPreprocOutput</name>\r
<group>\r
<name>StandardDemos</name>\r
<file>\r
- <name>$PROJ_DIR$\..\Common\Minimal\dynamic.c</name>\r
+ <name>$PROJ_DIR$\..\Common\Minimal\blocktim.c</name>\r
</file>\r
<file>\r
- <name>$PROJ_DIR$\..\Common\Minimal\PollQ.c</name>\r
+ <name>$PROJ_DIR$\..\Common\Minimal\dynamic.c</name>\r
</file>\r
<file>\r
- <name>$PROJ_DIR$\..\Common\Minimal\semtest.c</name>\r
+ <name>$PROJ_DIR$\..\Common\Minimal\PollQ.c</name>\r
</file>\r
</group>\r
<file>\r
MOVW HL, #0x7788\r
MOV CS, #0x01\r
\r
-#if configMEMORY_MODE == 1 \r
+#if __DATA_MODEL__ == __DATA_MODEL_FAR__\r
\r
; ES is not saved or restored when using the near memory model so only\r
; test it when using the far model.\r
BZ +5\r
BR vRegTestError\r
\r
-#if configMEMORY_MODE == 1 \r
+#if __DATA_MODEL__ == __DATA_MODEL_FAR__\r
+\r
; ES is not saved or restored when using the near memory model so only\r
; test it when using the far model.\r
MOV A, ES\r
MOVW HL, #0xff12\r
MOV CS, #0x03\r
\r
-#if configMEMORY_MODE == 1 \r
+#if __DATA_MODEL__ == __DATA_MODEL_FAR__\r
\r
MOV ES, #0x04 \r
\r
BZ +5\r
BR vRegTestError\r
\r
-#if configMEMORY_MODE == 1 \r
+#if __DATA_MODEL__ == __DATA_MODEL_FAR__\r
\r
MOV A, ES\r
CMP A, #0x04\r
/* Standard demo includes. */\r
#include "dynamic.h"\r
#include "PollQ.h"\r
-#include "semtest.h"\r
+#include "blocktim.h"\r
\r
/* The period at which the check timer will expire, in ms, provided no errors\r
have been reported by any of the standard demo tasks. ms are converted to the\r
equivalent in ticks using the portTICK_RATE_MS constant. */\r
#define mainCHECK_TIMER_PERIOD_MS ( 3000UL / portTICK_RATE_MS )\r
\r
+/* These are used to set the period of the demo timer. The demo timer period\r
+is always relative to the check timer period, so the check timer can determine\r
+if the demo timer has expired the expected number of times between its own\r
+executions. */\r
+#define mainDEMO_TIMER_INCREMENTS_PER_CHECK_TIMER_TIMEROUT ( 100UL )\r
+#define mainDEMO_TIMER_PERIOD_MS ( mainCHECK_TIMER_PERIOD_MS / mainDEMO_TIMER_INCREMENTS_PER_CHECK_TIMER_TIMEROUT )\r
+\r
/* The period at which the check timer will expire, in ms, if an error has been\r
reported in one of the standard demo tasks. ms are converted to the equivalent\r
in ticks using the portTICK_RATE_MS constant. */\r
*/\r
static void prvCheckTimerCallback( xTimerHandle xTimer );\r
\r
+/*\r
+ * The 'demo' timer callback function, as described at the top of this file.\r
+ */\r
+static void prvDemoTimerCallback( xTimerHandle xTimer );\r
+\r
/*\r
* This function is called from the C startup routine to setup the processor -\r
* in particular the clock source.\r
function. */\r
static xTimerHandle xCheckTimer = NULL;\r
\r
+/* This time is just for demo purposes. */\r
+static xTimerHandle xDemoTimer = NULL;\r
+\r
+/* This variable is incremented each time the demo timer expires. */\r
+static volatile unsigned long ulDemoTimerCounter = 0UL;\r
+\r
/* RL78/G13 Option Byte Definition. Watchdog disabled, LVI enabled, OCD interface\r
enabled. */\r
__root __far const unsigned char OptionByte[] @ 0x00C0 =\r
is provided on the FreeRTOS.org WEB site. */\r
vStartDynamicPriorityTasks();\r
vStartPolledQueueTasks( tskIDLE_PRIORITY );\r
- vStartSemaphoreTasks( tskIDLE_PRIORITY + 1U );\r
+ vCreateBlockTimeTasks();\r
\r
/* Create the RegTest tasks as described at the top of this file. */\r
xTaskCreate( vRegTest1, "Reg1", configMINIMAL_STACK_SIZE, NULL, 0, NULL );\r
prvCheckTimerCallback /* The callback function that inspects the status of all the other tasks. */\r
);\r
\r
+ /* Create the software timer that just increments a variable for demo\r
+ purposes. */\r
+ xDemoTimer = xTimerCreate( ( const signed char * ) "DemoTimer",/* A text name, purely to help debugging. */\r
+ ( mainDEMO_TIMER_PERIOD_MS ), /* The timer period, in this case it is always calculated relative to the check timer period (see the definition of mainDEMO_TIMER_PERIOD_MS). */\r
+ pdTRUE, /* This is an auto-reload timer, so xAutoReload is set to pdTRUE. */\r
+ ( void * ) 0, /* The ID is not used, so can be set to anything. */\r
+ prvDemoTimerCallback /* The callback function that inspects the status of all the other tasks. */\r
+ );\r
\r
- /* Send a command to start the check timer. It will not actually start\r
- until the scheduler is running (when vTaskStartScheduler() is called). */\r
+ /* Start both the check timer and the demo timer. The timers won't actually\r
+ start until the scheduler is started. */\r
xTimerStart( xCheckTimer, mainDONT_BLOCK );\r
+ xTimerStart( xDemoTimer, mainDONT_BLOCK );\r
\r
/* Finally start the scheduler running. */\r
vTaskStartScheduler();\r
}\r
/*-----------------------------------------------------------*/\r
\r
+static void prvDemoTimerCallback( xTimerHandle xTimer )\r
+{\r
+ /* The demo timer has expired. All it does is increment a variable. The\r
+ period of the demo timer is relative to that of the check timer, so the\r
+ check timer knows how many times this variable should have been incremented\r
+ between each execution of the check timer's own callback. */\r
+ ulDemoTimerCounter++;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
static void prvCheckTimerCallback( xTimerHandle xTimer )\r
{\r
static portBASE_TYPE xChangedTimerPeriodAlready = pdFALSE, xErrorStatus = pdPASS;\r
+static unsigned long ulLastDemoTimerCounter = 0UL;\r
\r
if( xAreDynamicPriorityTasksStillRunning() != pdTRUE )\r
{\r
xErrorStatus = pdFAIL;\r
}\r
\r
- if( xAreSemaphoreTasksStillRunning() != pdTRUE )\r
+ if( xAreBlockTimeTestTasksStillRunning() != pdTRUE )\r
{\r
xErrorStatus = pdFAIL;\r
}\r
{\r
xErrorStatus = pdFAIL;\r
}\r
+ \r
+ /* Ensure that the demo timer has expired at\r
+ mainDEMO_TIMER_INCREMENTS_PER_CHECK_TIMER_TIMEROUT times in between\r
+ each call of this function. */\r
+ if( ( ulDemoTimerCounter - ulLastDemoTimerCounter ) < ( mainDEMO_TIMER_INCREMENTS_PER_CHECK_TIMER_TIMEROUT - 1 ) )\r
+ {\r
+ xErrorStatus = pdFAIL;\r
+ }\r
+ \r
+ ulLastDemoTimerCounter = ulDemoTimerCounter;\r
\r
if( ( xErrorStatus == pdFAIL ) && ( xChangedTimerPeriodAlready == pdFALSE ) )\r
{\r
\r
\r
<MixedMode>1</MixedMode><CodeCovShow>1</CodeCovShow><InstrProfShow>1</InstrProfShow></Disassembly>\r
- </Static>\r
+ <STACK2><PreferedWindows><Position>1</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows></STACK2><Register><PreferedWindows><Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows></Register></Static>\r
<Windows>\r
\r
\r
\r
- <Wnd0>\r
+ <Wnd2>\r
<Tabs>\r
<Tab>\r
<Identity>TabID-30626-17561</Identity>\r
</Tab>\r
</Tabs>\r
\r
- <SelectedTab>0</SelectedTab></Wnd0><Wnd1>\r
+ <SelectedTab>0</SelectedTab></Wnd2><Wnd3>\r
<Tabs>\r
<Tab>\r
<Identity>TabID-8606-17564</Identity>\r
<Factory>Workspace</Factory>\r
<Session>\r
\r
- <NodeDict><ExpandedNode>RTOSDemo</ExpandedNode><ExpandedNode>RTOSDemo/Demo Source</ExpandedNode><ExpandedNode>RTOSDemo/Demo Source/StandardDemos</ExpandedNode></NodeDict></Session>\r
+ <NodeDict><ExpandedNode>RTOSDemo</ExpandedNode><ExpandedNode>RTOSDemo/Demo Source</ExpandedNode><ExpandedNode>RTOSDemo/Demo Source/StandardDemos</ExpandedNode><ExpandedNode>RTOSDemo/Kernel Source</ExpandedNode></NodeDict></Session>\r
</Tab>\r
</Tabs>\r
\r
- <SelectedTab>0</SelectedTab></Wnd1></Windows>\r
+ <SelectedTab>0</SelectedTab></Wnd3></Windows>\r
<Editor>\r
\r
\r
\r
\r
- <Pane><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\main.c</Filename><XPos>0</XPos><YPos>157</YPos><SelStart>10672</SelStart><SelEnd>10672</SelEnd></Tab><ActiveTab>0</ActiveTab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\Common\Minimal\semtest.c</Filename><XPos>0</XPos><YPos>248</YPos><SelStart>11198</SelStart><SelEnd>11228</SelEnd></Tab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>\r
+ <Pane><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\main.c</Filename><XPos>0</XPos><YPos>134</YPos><SelStart>6308</SelStart><SelEnd>6308</SelEnd></Tab><ActiveTab>0</ActiveTab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\Source\portable\MemMang\heap_1.c</Filename><XPos>0</XPos><YPos>105</YPos><SelStart>4982</SelStart><SelEnd>4982</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\Source\tasks.c</Filename><XPos>0</XPos><YPos>1089</YPos><SelStart>38372</SelStart><SelEnd>38372</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\Source\timers.c</Filename><XPos>0</XPos><YPos>186</YPos><SelStart>9465</SelStart><SelEnd>9465</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\FreeRTOSConfig.h</Filename><XPos>0</XPos><YPos>69</YPos><SelStart>4454</SelStart><SelEnd>4454</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\RegTest.s87</Filename><XPos>0</XPos><YPos>109</YPos><SelStart>5308</SelStart><SelEnd>5308</SelEnd></Tab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>\r
<Positions>\r
\r
\r
\r
\r
\r
- <Top><Row0><Sizes><Toolbar-013362c8><key>iaridepm.enu1</key></Toolbar-013362c8></Sizes></Row0><Row1><Sizes><Toolbar-04c02860><key>debuggergui.enu1</key></Toolbar-04c02860><Toolbar-08707c28><key>rl78ocd.enu1</key></Toolbar-08707c28></Sizes></Row1><Row2><Sizes/></Row2><Row3><Sizes/></Row3><Row4><Sizes/></Row4><Row5><Sizes/></Row5><Row6><Sizes/></Row6></Top><Left><Row0><Sizes><Wnd1><Rect><Top>-2</Top><Left>-2</Left><Bottom>662</Bottom><Right>344</Right><x>-2</x><y>-2</y><xscreen>346</xscreen><yscreen>254</yscreen><sizeHorzCX>205952</sizeHorzCX><sizeHorzCY>258656</sizeHorzCY><sizeVertCX>205952</sizeVertCX><sizeVertCY>676171</sizeVertCY></Rect></Wnd1></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd0><Rect><Top>-2</Top><Left>-2</Left><Bottom>252</Bottom><Right>1682</Right><x>-2</x><y>-2</y><xscreen>1684</xscreen><yscreen>254</yscreen><sizeHorzCX>1002381</sizeHorzCX><sizeHorzCY>258656</sizeHorzCY><sizeVertCX>205952</sizeVertCX><sizeVertCY>258656</sizeVertCY></Rect></Wnd0></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>\r
+ <Top><Row0><Sizes><Toolbar-013362c8><key>iaridepm.enu1</key></Toolbar-013362c8></Sizes></Row0><Row1><Sizes><Toolbar-0b06e580><key>debuggergui.enu1</key></Toolbar-0b06e580><Toolbar-0ad5a4f8><key>rl78ocd.enu1</key></Toolbar-0ad5a4f8></Sizes></Row1><Row2><Sizes/></Row2><Row3><Sizes/></Row3><Row4><Sizes/></Row4><Row5><Sizes/></Row5><Row6><Sizes/></Row6><Row7><Sizes/></Row7><Row8><Sizes/></Row8><Row9><Sizes/></Row9><Row10><Sizes/></Row10><Row11><Sizes/></Row11><Row12><Sizes/></Row12><Row13><Sizes/></Row13><Row14><Sizes/></Row14><Row15><Sizes/></Row15><Row16><Sizes/></Row16><Row17><Sizes/></Row17><Row18><Sizes/></Row18><Row19><Sizes/></Row19><Row20><Sizes/></Row20><Row21><Sizes/></Row21><Row22><Sizes/></Row22><Row23><Sizes/></Row23><Row24><Sizes/></Row24><Row25><Sizes/></Row25><Row26><Sizes/></Row26><Row27><Sizes/></Row27><Row28><Sizes/></Row28><Row29><Sizes/></Row29><Row30><Sizes/></Row30><Row31><Sizes/></Row31><Row32><Sizes/></Row32><Row33><Sizes/></Row33><Row34><Sizes/></Row34><Row35><Sizes/></Row35><Row36><Sizes/></Row36></Top><Left><Row0><Sizes><Wnd3><Rect><Top>-2</Top><Left>-2</Left><Bottom>662</Bottom><Right>344</Right><x>-2</x><y>-2</y><xscreen>346</xscreen><yscreen>254</yscreen><sizeHorzCX>205952</sizeHorzCX><sizeHorzCY>258656</sizeHorzCY><sizeVertCX>205952</sizeVertCX><sizeVertCY>676171</sizeVertCY></Rect></Wnd3></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd2><Rect><Top>-2</Top><Left>-2</Left><Bottom>252</Bottom><Right>1682</Right><x>-2</x><y>-2</y><xscreen>1684</xscreen><yscreen>254</yscreen><sizeHorzCX>1002381</sizeHorzCX><sizeHorzCY>258656</sizeHorzCY><sizeVertCX>205952</sizeVertCX><sizeVertCY>258656</sizeVertCY></Rect></Wnd2></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>\r
</Desktop>\r
</Project>\r
\r
UnspecRange=1\r
ActionState=1\r
[DebugChecksum]\r
-Checksum=-185012109\r
+Checksum=-1910636464\r
[DisAssemblyWindow]\r
NumStates=_ 1\r
State 1=_ 1\r
Graph=0\r
Symbiont=0\r
[Breakpoints]\r
-Count=0\r
+Bp0=_ "STD_CODE" "{$PROJ_DIR$\..\..\Source\portable\MemMang\heap_1.c}.121.4@1" 1 0 0 0 "" 0 ""\r
+Count=1\r
[Aliases]\r
A0=_ "C:\Data\RL78_STICK\FreeRTOSV6.1.1\Source\portable\IAR\RL78\portasm.s87" "E:\Data\RL78_STICK\FreeRTOSV6.1.1\Source\portable\IAR\RL78\portasm.s87"\r
Count=1\r
<Factory>Workspace</Factory>\r
<Session>\r
\r
- <NodeDict><ExpandedNode>RTOSDemo</ExpandedNode><ExpandedNode>RTOSDemo/Demo Source</ExpandedNode><ExpandedNode>RTOSDemo/Demo Source/StandardDemos</ExpandedNode><ExpandedNode>RTOSDemo/Kernel Source</ExpandedNode></NodeDict></Session>\r
+ <NodeDict><ExpandedNode>RTOSDemo</ExpandedNode></NodeDict></Session>\r
</Tab>\r
</Tabs>\r
\r
\r
\r
\r
- <Pane><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\main.c</Filename><XPos>0</XPos><YPos>157</YPos><SelStart>10672</SelStart><SelEnd>10672</SelEnd></Tab><ActiveTab>0</ActiveTab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\Common\Minimal\semtest.c</Filename><XPos>0</XPos><YPos>248</YPos><SelStart>11198</SelStart><SelEnd>11228</SelEnd></Tab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>\r
+ <Pane><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\main.c</Filename><XPos>0</XPos><YPos>134</YPos><SelStart>6308</SelStart><SelEnd>6308</SelEnd></Tab><ActiveTab>0</ActiveTab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>\r
<Positions>\r
\r
\r
\r
\r
\r
- <Top><Row0><Sizes><Toolbar-013362c8><key>iaridepm.enu1</key></Toolbar-013362c8></Sizes></Row0><Row1><Sizes/></Row1><Row2><Sizes/></Row2><Row3><Sizes/></Row3><Row4><Sizes/></Row4><Row5><Sizes/></Row5><Row6><Sizes/></Row6><Row7><Sizes/></Row7><Row8><Sizes/></Row8><Row9><Sizes/></Row9><Row10><Sizes/></Row10></Top><Left><Row0><Sizes><Wnd0><Rect><Top>-2</Top><Left>-2</Left><Bottom>629</Bottom><Right>318</Right><x>-2</x><y>-2</y><xscreen>263</xscreen><yscreen>200</yscreen><sizeHorzCX>156548</sizeHorzCX><sizeHorzCY>203666</sizeHorzCY><sizeVertCX>190476</sizeVertCX><sizeVertCY>642566</sizeVertCY></Rect></Wnd0></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd1><Rect><Top>-2</Top><Left>-2</Left><Bottom>309</Bottom><Right>1682</Right><x>-2</x><y>-2</y><xscreen>1684</xscreen><yscreen>311</yscreen><sizeHorzCX>1002381</sizeHorzCX><sizeHorzCY>316701</sizeHorzCY><sizeVertCX>205357</sizeVertCX><sizeVertCY>258656</sizeVertCY></Rect></Wnd1></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>\r
+ <Top><Row0><Sizes><Toolbar-013362c8><key>iaridepm.enu1</key></Toolbar-013362c8></Sizes></Row0><Row1><Sizes/></Row1><Row2><Sizes/></Row2><Row3><Sizes/></Row3><Row4><Sizes/></Row4><Row5><Sizes/></Row5><Row6><Sizes/></Row6><Row7><Sizes/></Row7><Row8><Sizes/></Row8><Row9><Sizes/></Row9><Row10><Sizes/></Row10><Row11><Sizes/></Row11><Row12><Sizes/></Row12><Row13><Sizes/></Row13><Row14><Sizes/></Row14><Row15><Sizes/></Row15><Row16><Sizes/></Row16><Row17><Sizes/></Row17><Row18><Sizes/></Row18><Row19><Sizes/></Row19><Row20><Sizes/></Row20><Row21><Sizes/></Row21><Row22><Sizes/></Row22><Row23><Sizes/></Row23><Row24><Sizes/></Row24><Row25><Sizes/></Row25><Row26><Sizes/></Row26><Row27><Sizes/></Row27><Row28><Sizes/></Row28><Row29><Sizes/></Row29><Row30><Sizes/></Row30><Row31><Sizes/></Row31><Row32><Sizes/></Row32><Row33><Sizes/></Row33><Row34><Sizes/></Row34><Row35><Sizes/></Row35><Row36><Sizes/></Row36><Row37><Sizes/></Row37><Row38><Sizes/></Row38></Top><Left><Row0><Sizes><Wnd0><Rect><Top>-2</Top><Left>-2</Left><Bottom>629</Bottom><Right>318</Right><x>-2</x><y>-2</y><xscreen>263</xscreen><yscreen>200</yscreen><sizeHorzCX>156548</sizeHorzCX><sizeHorzCY>203666</sizeHorzCY><sizeVertCX>190476</sizeVertCX><sizeVertCY>642566</sizeVertCY></Rect></Wnd0></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd1><Rect><Top>-2</Top><Left>-2</Left><Bottom>309</Bottom><Right>1682</Right><x>-2</x><y>-2</y><xscreen>1684</xscreen><yscreen>311</yscreen><sizeHorzCX>1002381</sizeHorzCX><sizeHorzCY>316701</sizeHorzCY><sizeVertCX>205357</sizeVertCX><sizeVertCY>258656</sizeVertCY></Rect></Wnd1></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>\r
</Desktop>\r
</Workspace>\r
\r