123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274 |
- <?xml version="1.0" encoding="ISO-8859-1"?>
- <stg format="2.0">
- <OriginalWsp type="string">test2.wsx</OriginalWsp><BackupWspFlag type="flag">0</BackupWspFlag><UseWspCnt type="int">0</UseWspCnt><WspCloseCnt type="int">0</WspCloseCnt><ProdInfo type="bin" size="52">vQTv/gAAAQAYAAIAwCwXAAQABAAAAAAAPwAAAAAAAAAEAAAAAgAAAAAAAAAAAAAAAAAAAA==</ProdInfo><ProdInfoString type="string">4.4</ProdInfoString><CreationDate type="string">11.01.2016 08:31:27:000</CreationDate><MainFrame type="key"><VisibilityGroupsMgr type="key"><Core0 type="key"/><Core1 type="key"/><Core2 type="key"/></VisibilityGroupsMgr><NETPlacementRoot type="key"/><StdTargetManagerWin type="key"><OPEN_VIEW type="key"><FrameCreated type="string">11.01.2016 08:31:30:863</FrameCreated><ViewSrv type="key"><TargetBrowserView type="key"/></ViewSrv><NETFrameMode type="int">77824</NETFrameMode><NETFrameSaveIndex type="int">1</NETFrameSaveIndex><FrameUserTitle type="string"></FrameUserTitle><CommonVisibilityGroup type="flag">1</CommonVisibilityGroup><VisibilityGroup_1 type="string">WorkspaceManager</VisibilityGroup_1><VisibilityGroupsCnt type="int">1</VisibilityGroupsCnt></OPEN_VIEW></StdTargetManagerWin><StdUDEMessageWin type="key"><OPEN_VIEW type="key"><FrameCreated type="string">11.01.2016 08:31:30:882</FrameCreated><ViewSrv type="key"/><NETFrameMode type="int">90113</NETFrameMode><NETFrameSaveIndex type="int">2</NETFrameSaveIndex><FrameUserTitle type="string"></FrameUserTitle><CommonVisibilityGroup type="flag">1</CommonVisibilityGroup><VisibilityGroup_1 type="string">WorkspaceManager</VisibilityGroup_1><VisibilityGroupsCnt type="int">1</VisibilityGroupsCnt></OPEN_VIEW></StdUDEMessageWin><StdUDECmdWin type="key"/><UDEProgressWin type="key"><OPEN_VIEW type="key"><FrameCreated type="string">11.01.2016 08:31:30:853</FrameCreated><ViewSrv type="key"/><NETFrameMode type="int">90112</NETFrameMode><NETFrameSaveIndex type="int">0</NETFrameSaveIndex><FrameUserTitle type="string"></FrameUserTitle><CommonVisibilityGroup type="flag">1</CommonVisibilityGroup><VisibilityGroup_1 type="string">WorkspaceManager</VisibilityGroup_1><VisibilityGroupsCnt type="int">1</VisibilityGroupsCnt></OPEN_VIEW></UDEProgressWin><StdUDEPDFViewWin type="key"/><StdUDEHelpViewWin type="key"/><StdUDEWspHTMLView type="key"/><UDETraceWin2 type="key"/><UDEUECViewServer type="key"/><UDEPersistStreamView type="key"/><UDEUECUseCaseParameterView type="key"/></MainFrame><INI_SECTION type="key"><Macro type="key"><MacroLib type="string">C:\Program Files (x86)\pls\UDE 4.4\StdLibrary.mso</MacroLib></Macro></INI_SECTION><AddOns type="key"><UDE.Script type="key"><MacroGuiEntries type="key"><Macro_11_01_16_08_31_30_0 type="key"><ScriptDescription type="string">The script contains a collection of macros to save memory content into different file formats
- and fill target memory ranges</ScriptDescription><ScriptPath type="string">V:\UDE\AddOns\Macro\MacroLibrary\StdMacros1.dsm</ScriptPath><ScriptSource type="string">'
- ' $Header: /Ude/AddOns/Macro/MacroLibrary/StdMacros.dsm 3 30.04.04 9:34 Weisses $
- '_______________________________________________________
- '
- ' universal debug engine
- '
- ' Standard command line macros - part 1
- '
- ' pls Development Tools 1999-2004
- '
- ' 28.04.04 SW correction for UDE 1.10
- ' 03.06.03 SW initial version
- '_______________________________________________________
- '_______________________________________________________
- '
- ' UnAss command line function
- '
- ' generates disassembly file
- '
- ' command line UnAss output-file range1 [range2] [range3] .....
- ' range description:
- ' C:<startaddress>,<length> or - code
- ' DB:<startaddress>,<length> or - data byte
- ' DW:<startaddress>,<length> or - data word
- ' DD:<startaddress>,<length> or - data dword
- '_______________________________________________________
- Sub UnAss(File,ParameterObj)
- set debugger = workspace.Coredebugger(0)
- set DisASMObj = debugger.DisASMObj
- If Not IsObject(ParameterObj) Then
- MsgBox "Number of parameters wrong"
- Exit Sub
- End If
- If IsNumeric(File) Then
- MsgBox "File parameter wrong - " & File
- Exit Sub
- End If
- DisASMObj.OutputPath = CStr(File)
- bRetVal = DisASMObj.CreateStream(True,"UDE Disassembler output of current Program",False)
- If bRetVal = True Then
- ParmeterCnt = ParameterObj.ParameterCount
- If ParmeterCnt = 0 Then
- MsgBox "Number of parameters wrong " & ParmeterCnt
- Exit Sub
- End If
- If ( ParmeterCnt Mod 3 ) <> 0 Then
- MsgBox "Number of parameters wrong " & ParmeterCnt
- Exit Sub
- End If
- RangeCnt = ParmeterCnt/3
- ParamIndex = 0
- For Range = 0 To RangeCnt -1
- KindOfRange = CStr(ParameterObj.Parameter(ParamIndex))
- KindOfRange = UCase(KindOfRange)
- Address = CLng(ParameterObj.Parameter(ParamIndex +1))
- Length = CLng(ParameterObj.Parameter(ParamIndex +2))
- ParamIndex = ParamIndex +3
- If IsNumeric(KindOfRange) Then
- If KindOfRange = 12 Then
- DisASMObj.AddRange Address,Length,1
- ElseIf KindOfRange = 219 Then
- DisASMObj.AddRange Address,Length,2
- ElseIf KindOfRange = 221 Then
- DisASMObj.AddRange Address,Length,4
- Else
- MsgBox "Invalid range type " & KindOfRange & "of range " & Range +1
- Exit Sub
- End If
- Else
- If KindOfRange = "C" Then
- DisASMObj.AddRange Address,Length,1
- ElseIf KindOfRange = "DB" Then
- DisASMObj.AddRange Address,Length,2
- ElseIf KindOfRange = "DW" Then
- DisASMObj.AddRange Address,Length,3
- ElseIf KindOfRange = "DD" Then
- DisASMObj.AddRange Address,Length,4
- Else
- MsgBox "Invalid range type " & KindOfRange & "of range " & Range +1
- Exit Sub
- End If
- End If
- Next
- DisASMObj.HexFileModeFlag = False
- DisASMObj.ListModeFlag = False
- DisASMObj.WriteAllRanges(False)
- End If
- End Sub
- '_______________________________________________________
- '
- ' SaveHEX command line function
- '
- ' generates intel-HEX file
- '
- ' command line SaveHex output-file range1 [range2] [range3] .....
- ' range description:
- ' <startaddress>,<length>
- '_______________________________________________________
- Sub SaveHEX(File,ParameterObj)
- set debugger = workspace.Coredebugger(0)
- set DisASMObj = debugger.DisASMObj
- If Not IsObject(ParameterObj) Then
- MsgBox "Number of parameters wrong"
- Exit Sub
- End If
- If IsNumeric(File) Then
- MsgBox "File parameter wrong - " & File
- Exit Sub
- End If
- DisASMObj.OutputPath = CStr(File)
- bRetVal = DisASMObj.CreateStream(True,"UDE generated intel-Hex file of current Program",False)
- If bRetVal = True Then
- ParmeterCnt = ParameterObj.ParameterCount
- If ParmeterCnt = 0 Then
- MsgBox "Number of parameters wrong " & ParmeterCnt
- Exit Sub
- End If
- If ( ParmeterCnt Mod 2 ) <> 0 Then
- MsgBox "Number of parameters wrong " & ParmeterCnt
- Exit Sub
- End If
- RangeCnt = ParmeterCnt/2
- ParamIndex = 0
- For Range = 0 To RangeCnt -1
- Address = CLng(ParameterObj.Parameter(ParamIndex))
- Length = CLng(ParameterObj.Parameter(ParamIndex +1))
- ParamIndex = ParamIndex +2
- DisASMObj.AddRange Address,Length,0
- Next
- DisASMObj.HexFileModeFlag = True
- DisASMObj.WriteAllRanges(False)
- End If
- End Sub
- '_______________________________________________________
- '
- ' FillByte command line function
- '
- ' fills memory range with byte pattern
- '
- ' command line FillByte range1,pattern1 [range2,pattern2] [range3,pattern3] .....
- ' range description:
- ' <startaddress>,<length>
- '_______________________________________________________
- Sub FillByte(ParameterObj)
- set debugger = workspace.Coredebugger(0)
- set DisASMObj = debugger.DisASMObj
- If Not IsObject(ParameterObj) Then
- MsgBox "Number of parameters wrong"
- Exit Sub
- End If
- ParmeterCnt = ParameterObj.ParameterCount
- If ParmeterCnt = 0 Then
- MsgBox "Number of parameters wrong " & ParmeterCnt
- Exit Sub
- End If
- If ( ParmeterCnt Mod 3 ) <> 0 Then
- MsgBox "Number of parameters wrong " & ParmeterCnt
- Exit Sub
- End If
- RangeCnt = ParmeterCnt/3
- ParamIndex = 0
- set udearrayobj = debugger.ByteArrayObj(1)
- For Range = 0 To RangeCnt -1
- Address = CLng(ParameterObj.Parameter(ParamIndex))
- Length = CLng(ParameterObj.Parameter(ParamIndex +1))
- Pattern = CLng(ParameterObj.Parameter(ParamIndex +2))
- ParamIndex = ParamIndex +3
- udearrayobj.Resize(Length)
- udearrayobj.Fill(Pattern)
- debugger.Write Address,udearrayobj
- Next
- End Sub
- '_______________________________________________________
- '
- ' FillWord command line function
- '
- ' fills memory range with word pattern
- '
- ' command line FillWord range1,pattern1 [range2,pattern2] [range3,pattern3] .....
- ' range description:
- ' <startaddress>,<length>
- '_______________________________________________________
- Sub FillWord(ParameterObj)
- set debugger = workspace.Coredebugger(0)
- set DisASMObj = debugger.DisASMObj
- If Not IsObject(ParameterObj) Then
- MsgBox "Number of parameters wrong"
- Exit Sub
- End If
- ParmeterCnt = ParameterObj.ParameterCount
- If ParmeterCnt = 0 Then
- MsgBox "Number of parameters wrong " & ParmeterCnt
- Exit Sub
- End If
- If ( ParmeterCnt Mod 3 ) <> 0 Then
- MsgBox "Number of parameters wrong " & ParmeterCnt
- Exit Sub
- End If
- RangeCnt = ParmeterCnt/3
- ParamIndex = 0
- set udearrayobj = debugger.WordArrayObj(1)
- For Range = 0 To RangeCnt -1
- Address = CLng(ParameterObj.Parameter(ParamIndex))
- Length = CLng(ParameterObj.Parameter(ParamIndex +1)/2)
- Pattern = CLng(ParameterObj.Parameter(ParamIndex +2))
- ParamIndex = ParamIndex +3
- udearrayobj.Resize(Length)
- udearrayobj.Fill(Pattern)
- debugger.Write Address,udearrayobj
- Next
- End Sub
- '_______________________________________________________
- '
- ' FillDWord command line function
- '
- ' fills memory range with dword pattern
- '
- ' command line FillDWord range1,pattern1 [range2,pattern2] [range3,pattern3] .....
- ' range description:
- ' <startaddress>,<length>
- '_______________________________________________________
- Sub FillDWord(ParameterObj)
- set debugger = workspace.Coredebugger(0)
- set DisASMObj = debugger.DisASMObj
- If Not IsObject(ParameterObj) Then
- MsgBox "Number of parameters wrong"
- Exit Sub
- End If
- ParmeterCnt = ParameterObj.ParameterCount
- If ParmeterCnt = 0 Then
- MsgBox "Number of parameters wrong " & ParmeterCnt
- Exit Sub
- End If
- If ( ParmeterCnt Mod 3 ) <> 0 Then
- MsgBox "Number of parameters wrong " & ParmeterCnt
- Exit Sub
- End If
- RangeCnt = ParmeterCnt/3
- ParamIndex = 0
- set udearrayobj = debugger.DWordArrayObj(1)
- For Range = 0 To RangeCnt -1
- Address = CLng(ParameterObj.Parameter(ParamIndex))
- Length = CLng(ParameterObj.Parameter(ParamIndex +1)/4)
- Pattern = CLng(ParameterObj.Parameter(ParamIndex +2))
- ParamIndex = ParamIndex +3
- udearrayobj.Resize(Length)
- udearrayobj.Fill(Pattern)
- debugger.Write Address,udearrayobj
- Next
- End Sub
- </ScriptSource><ScriptArchitecture type="int">63</ScriptArchitecture><ScriptEngine type="string">VBScript</ScriptEngine><MacroFileTime type="string">24.11.2006 14:43:20:000</MacroFileTime><ScriptFromStg type="flag">1</ScriptFromStg><LocalComputerName type="string">WS_CORE_DUO</LocalComputerName><ExternalScriptPath type="string"></ExternalScriptPath><NextNodeName type="string">Macro_11_01_16_08_31_30_0</NextNodeName><UnAss type="key"><GUIEntry type="key"><MenuID type="int">10</MenuID><MenuString type="string">Execute UnAss ..</MenuString><ToolTipString type="string">Macro UnAss</ToolTipString><MessageString type="string">Execute macro UnAss</MessageString><DebugFlag type="flag">0</DebugFlag></GUIEntry><FuncParameterCnt type="int">2</FuncParameterCnt><GUIEntryDescription type="string"></GUIEntryDescription></UnAss><SaveHEX type="key"><GUIEntry type="key"><MenuID type="int">10</MenuID><MenuString type="string">Execute SaveHEX ..</MenuString><ToolTipString type="string">Macro SaveHEX</ToolTipString><MessageString type="string">Execute macro SaveHEX</MessageString><DebugFlag type="flag">0</DebugFlag></GUIEntry><FuncParameterCnt type="int">2</FuncParameterCnt><GUIEntryDescription type="string"></GUIEntryDescription></SaveHEX><FillByte type="key"><GUIEntry type="key"><MenuID type="int">10</MenuID><MenuString type="string">Execute FillByte ..</MenuString><ToolTipString type="string">Macro FillByte</ToolTipString><MessageString type="string">Execute macro FillByte</MessageString><DebugFlag type="flag">0</DebugFlag></GUIEntry><FuncParameterCnt type="int">1</FuncParameterCnt><GUIEntryDescription type="string"></GUIEntryDescription></FillByte><FillWord type="key"><GUIEntry type="key"><MenuID type="int">10</MenuID><MenuString type="string">Execute FillWord ..</MenuString><ToolTipString type="string">Macro FillWord</ToolTipString><MessageString type="string">Execute macro FillWord</MessageString><DebugFlag type="flag">0</DebugFlag></GUIEntry><FuncParameterCnt type="int">1</FuncParameterCnt><GUIEntryDescription type="string"></GUIEntryDescription></FillWord><FillDWord type="key"><GUIEntry type="key"><MenuID type="int">10</MenuID><MenuString type="string">Execute FillDWord ..</MenuString><ToolTipString type="string">Macro FillDWord</ToolTipString><MessageString type="string">Execute macro FillDWord</MessageString><DebugFlag type="flag">0</DebugFlag></GUIEntry><FuncParameterCnt type="int">1</FuncParameterCnt><GUIEntryDescription type="string"></GUIEntryDescription></FillDWord><NoOfFunctions type="int">5</NoOfFunctions><MacroFunction0 type="key"/><MacroFunction1 type="key"/><MacroFunction2 type="key"/><MacroFunction3 type="key"/><MacroFunction4 type="key"/></Macro_11_01_16_08_31_30_0></MacroGuiEntries></UDE.Script></AddOns><MultiCoreRunControl type="key"/><TraceFramework type="key"/><Controller0 type="key"/><McdsTrace type="key"/><Core0 type="key"><ViewSrv type="key"><TriCoreCpuWin type="key"/><StdUDESymbolExplWin type="key"><OPEN_VIEW type="key"><FrameCreated type="string">11.01.2016 08:31:30:903</FrameCreated><ViewSrv type="key"/><NETFrameMode type="int">77825</NETFrameMode><NETFrameSaveIndex type="int">3</NETFrameSaveIndex><FrameUserTitle type="string"></FrameUserTitle><CommonVisibilityGroup type="flag">0</CommonVisibilityGroup><VisibilityGroup_1 type="string">Target0.Controller0.Core0</VisibilityGroup_1><VisibilityGroupsCnt type="int">1</VisibilityGroupsCnt></OPEN_VIEW></StdUDESymbolExplWin><StdUDEProgWin type="key"/><StdUDESFRView type="key"/><StdUDELocalsWin type="key"/><StdUDEWatchWin type="key"/><StdUDESimIOWin type="key"/><StdUDEHtmlDocWin type="key"/><StdUDEGraphWin type="key"/><StdUDETimeSampleGraphWin type="key"/><UDEProfilingWin type="key"/><StdUDEMemWin type="key"/><StdUDEIPTraceGraphWin type="key"/><StdUDEDataTraceGraphWin type="key"/><UDETraceCoverageWin type="key"/><UDETraceProfilingWin type="key"/><UDEStackWin type="key"/></ViewSrv><UDE.StdDbgSrv type="key"><INI_SECTION type="key"><System type="key"><DEFAULT_HW_BREAKPOINT type="string">ON</DEFAULT_HW_BREAKPOINT></System></INI_SECTION><UDE.TriCoreArchSrv type="key"><UDE.Tc2CoreTargIntf type="key"/></UDE.TriCoreArchSrv><UDE.UDESymbol type="key"/><STG_ADDON_PROF type="key"><UDE_Graphwin_Trace_AddOn type="key" name="UDE Graphwin Trace AddOn"><LOAD_STATE type="flag">1</LOAD_STATE></UDE_Graphwin_Trace_AddOn><UDELicense_Server type="key" name="UDELicense Server"><LOAD_STATE type="flag">1</LOAD_STATE></UDELicense_Server><UDEMemtool type="key"><LOAD_STATE type="flag">1</LOAD_STATE><FlashMod_PFLASH0 type="key"/><FlashMod_PFLASH1 type="key"/><FlashMod_DF_EEPROM type="key"/><Frontend type="key"><AutoStartProgAfterDownload type="flag">0</AutoStartProgAfterDownload><AutoCloseExecCmdDialog type="flag">0</AutoCloseExecCmdDialog><AllowOverwrite type="flag">0</AllowOverwrite></Frontend></UDEMemtool></STG_ADDON_PROF><CommQueueHndlStg type="key"/><TargetStateHndlStg type="key"/></UDE.StdDbgSrv><MRUSourceFileList type="key"><NoOfMRUSrcFileEntries type="int">0</NoOfMRUSrcFileEntries></MRUSourceFileList></Core0><Core1 type="key"><ViewSrv type="key"><TriCoreCpuWin type="key"/><StdUDESymbolExplWin type="key"><OPEN_VIEW type="key"><FrameCreated type="string">11.01.2016 08:31:30:993</FrameCreated><ViewSrv type="key"/><NETFrameMode type="int">77826</NETFrameMode><NETFrameSaveIndex type="int">4</NETFrameSaveIndex><FrameUserTitle type="string"></FrameUserTitle><CommonVisibilityGroup type="flag">0</CommonVisibilityGroup><VisibilityGroup_1 type="string">Target0.Controller0.Core1</VisibilityGroup_1><VisibilityGroupsCnt type="int">1</VisibilityGroupsCnt></OPEN_VIEW></StdUDESymbolExplWin><StdUDEProgWin type="key"/><StdUDESFRView type="key"/><StdUDELocalsWin type="key"/><StdUDEWatchWin type="key"/><StdUDESimIOWin type="key"/><StdUDEHtmlDocWin type="key"/><StdUDEGraphWin type="key"/><StdUDETimeSampleGraphWin type="key"/><UDEProfilingWin type="key"/><StdUDEMemWin type="key"/><StdUDEIPTraceGraphWin type="key"/><StdUDEDataTraceGraphWin type="key"/><UDETraceCoverageWin type="key"/><UDETraceProfilingWin type="key"/><UDEStackWin type="key"/></ViewSrv><UDE.StdDbgSrv type="key"><INI_SECTION type="key"><System type="key"><DEFAULT_HW_BREAKPOINT type="string">ON</DEFAULT_HW_BREAKPOINT></System></INI_SECTION><UDE.TriCoreArchSrv type="key"><UDE.Tc2CoreTargIntf type="key"/></UDE.TriCoreArchSrv><UDE.UDESymbol type="key"/><STG_ADDON_PROF type="key"><UDE_Graphwin_Trace_AddOn type="key" name="UDE Graphwin Trace AddOn"><LOAD_STATE type="flag">1</LOAD_STATE></UDE_Graphwin_Trace_AddOn><UDELicense_Server type="key" name="UDELicense Server"><LOAD_STATE type="flag">1</LOAD_STATE></UDELicense_Server></STG_ADDON_PROF><CommQueueHndlStg type="key"/><TargetStateHndlStg type="key"/></UDE.StdDbgSrv><MRUSourceFileList type="key"><NoOfMRUSrcFileEntries type="int">0</NoOfMRUSrcFileEntries></MRUSourceFileList></Core1><Core2 type="key"><ViewSrv type="key"><TriCoreCpuWin type="key"/><StdUDESymbolExplWin type="key"><OPEN_VIEW type="key"><FrameCreated type="string">11.01.2016 08:31:31:072</FrameCreated><ViewSrv type="key"/><NETFrameMode type="int">77827</NETFrameMode><NETFrameSaveIndex type="int">5</NETFrameSaveIndex><FrameUserTitle type="string"></FrameUserTitle><CommonVisibilityGroup type="flag">0</CommonVisibilityGroup><VisibilityGroup_1 type="string">Target0.Controller0.Core2</VisibilityGroup_1><VisibilityGroupsCnt type="int">1</VisibilityGroupsCnt></OPEN_VIEW></StdUDESymbolExplWin><StdUDEProgWin type="key"/><StdUDESFRView type="key"/><StdUDELocalsWin type="key"/><StdUDEWatchWin type="key"/><StdUDESimIOWin type="key"/><StdUDEHtmlDocWin type="key"/><StdUDEGraphWin type="key"/><StdUDETimeSampleGraphWin type="key"/><UDEProfilingWin type="key"/><StdUDEMemWin type="key"/><StdUDEIPTraceGraphWin type="key"/><StdUDEDataTraceGraphWin type="key"/><UDETraceCoverageWin type="key"/><UDETraceProfilingWin type="key"/><UDEStackWin type="key"/></ViewSrv><UDE.StdDbgSrv type="key"><INI_SECTION type="key"><System type="key"><DEFAULT_HW_BREAKPOINT type="string">ON</DEFAULT_HW_BREAKPOINT></System></INI_SECTION><UDE.TriCoreArchSrv type="key"><UDE.Tc2CoreTargIntf type="key"/></UDE.TriCoreArchSrv><UDE.UDESymbol type="key"/><STG_ADDON_PROF type="key"><UDE_Graphwin_Trace_AddOn type="key" name="UDE Graphwin Trace AddOn"><LOAD_STATE type="flag">1</LOAD_STATE></UDE_Graphwin_Trace_AddOn><UDELicense_Server type="key" name="UDELicense Server"><LOAD_STATE type="flag">1</LOAD_STATE></UDELicense_Server></STG_ADDON_PROF><CommQueueHndlStg type="key"/><TargetStateHndlStg type="key"/></UDE.StdDbgSrv><MRUSourceFileList type="key"><NoOfMRUSrcFileEntries type="int">0</NoOfMRUSrcFileEntries></MRUSourceFileList></Core2></stg>
|